- {!banner &&
}
{banner &&
diff --git a/app/javascript/mastodon/features/ui/components/notifications_counter_icon.js b/app/javascript/mastodon/features/ui/components/notifications_counter_icon.js
index b3e9950e9..7d59d616d 100644
--- a/app/javascript/mastodon/features/ui/components/notifications_counter_icon.js
+++ b/app/javascript/mastodon/features/ui/components/notifications_counter_icon.js
@@ -1,7 +1,6 @@
import { connect } from 'react-redux';
-import { ReactComponent as NotificationsIcon } from '@material-symbols/svg-600/outlined/notifications-fill.svg';
-
+import NotificationsIcon from '@/material-icons/400-24px/notifications-fill.svg?react';
import { IconWithBadge } from 'mastodon/components/icon_with_badge';
diff --git a/app/javascript/mastodon/features/ui/components/report_modal.jsx b/app/javascript/mastodon/features/ui/components/report_modal.jsx
index 3fd8ff127..658436460 100644
--- a/app/javascript/mastodon/features/ui/components/report_modal.jsx
+++ b/app/javascript/mastodon/features/ui/components/report_modal.jsx
@@ -7,8 +7,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
import ImmutablePureComponent from 'react-immutable-pure-component';
import { connect } from 'react-redux';
-import { ReactComponent as CloseIcon } from '@material-symbols/svg-600/outlined/close.svg';
-
+import CloseIcon from '@/material-icons/400-24px/close.svg?react';
import { submitReport } from 'mastodon/actions/reports';
import { fetchServer } from 'mastodon/actions/server';
import { expandAccountTimeline } from 'mastodon/actions/timelines';
diff --git a/app/javascript/mastodon/features/ui/components/zoomable_image.jsx b/app/javascript/mastodon/features/ui/components/zoomable_image.jsx
index 5e71da9d9..272a3cff0 100644
--- a/app/javascript/mastodon/features/ui/components/zoomable_image.jsx
+++ b/app/javascript/mastodon/features/ui/components/zoomable_image.jsx
@@ -3,9 +3,8 @@ import { PureComponent } from 'react';
import { defineMessages, injectIntl } from 'react-intl';
-import { ReactComponent as FullscreenExitIcon } from '@material-symbols/svg-600/outlined/fullscreen_exit.svg';
-import { ReactComponent as RectangleIcon } from '@material-symbols/svg-600/outlined/rectangle.svg';
-
+import FullscreenExitIcon from '@/material-icons/400-24px/fullscreen_exit.svg?react';
+import RectangleIcon from '@/material-icons/400-24px/rectangle.svg?react';
import { IconButton } from 'mastodon/components/icon_button';
const messages = defineMessages({
diff --git a/app/javascript/mastodon/features/ui/containers/status_list_container.js b/app/javascript/mastodon/features/ui/containers/status_list_container.js
index 36a8f58f8..5ffa4353f 100644
--- a/app/javascript/mastodon/features/ui/containers/status_list_container.js
+++ b/app/javascript/mastodon/features/ui/containers/status_list_container.js
@@ -1,6 +1,6 @@
+import { createSelector } from '@reduxjs/toolkit';
import { Map as ImmutableMap, List as ImmutableList } from 'immutable';
import { connect } from 'react-redux';
-import { createSelector } from 'reselect';
import { debounce } from 'lodash';
@@ -14,7 +14,7 @@ const makeGetStatusIds = (pending = false) => createSelector([
(state) => state.get('statuses'),
], (columnSettings, statusIds, statuses) => {
return statusIds.filter(id => {
- if (id === null) return true;
+ if (id === null || id === 'inline-follow-suggestions') return true;
const statusForId = statuses.get(id);
let showStatus = true;
diff --git a/app/javascript/mastodon/features/ui/index.jsx b/app/javascript/mastodon/features/ui/index.jsx
index d1d13fb57..745af89b2 100644
--- a/app/javascript/mastodon/features/ui/index.jsx
+++ b/app/javascript/mastodon/features/ui/index.jsx
@@ -441,7 +441,7 @@ class UI extends PureComponent {
handleHotkeyNew = e => {
e.preventDefault();
- const element = this.node.querySelector('.compose-form__autosuggest-wrapper textarea');
+ const element = this.node.querySelector('.autosuggest-textarea__textarea');
if (element) {
element.focus();
diff --git a/app/javascript/mastodon/features/video/index.jsx b/app/javascript/mastodon/features/video/index.jsx
index cacc94f96..3141cee72 100644
--- a/app/javascript/mastodon/features/video/index.jsx
+++ b/app/javascript/mastodon/features/video/index.jsx
@@ -7,16 +7,16 @@ import classNames from 'classnames';
import { is } from 'immutable';
-import { ReactComponent as FullscreenIcon } from '@material-symbols/svg-600/outlined/fullscreen.svg';
-import { ReactComponent as FullscreenExitIcon } from '@material-symbols/svg-600/outlined/fullscreen_exit.svg';
-import { ReactComponent as PauseIcon } from '@material-symbols/svg-600/outlined/pause.svg';
-import { ReactComponent as PlayArrowIcon } from '@material-symbols/svg-600/outlined/play_arrow-fill.svg';
-import { ReactComponent as RectangleIcon } from '@material-symbols/svg-600/outlined/rectangle.svg';
-import { ReactComponent as VisibilityOffIcon } from '@material-symbols/svg-600/outlined/visibility_off.svg';
-import { ReactComponent as VolumeOffIcon } from '@material-symbols/svg-600/outlined/volume_off-fill.svg';
-import { ReactComponent as VolumeUpIcon } from '@material-symbols/svg-600/outlined/volume_up-fill.svg';
import { throttle } from 'lodash';
+import FullscreenIcon from '@/material-icons/400-24px/fullscreen.svg?react';
+import FullscreenExitIcon from '@/material-icons/400-24px/fullscreen_exit.svg?react';
+import PauseIcon from '@/material-icons/400-24px/pause.svg?react';
+import PlayArrowIcon from '@/material-icons/400-24px/play_arrow-fill.svg?react';
+import RectangleIcon from '@/material-icons/400-24px/rectangle.svg?react';
+import VisibilityOffIcon from '@/material-icons/400-24px/visibility_off.svg?react';
+import VolumeOffIcon from '@/material-icons/400-24px/volume_off-fill.svg?react';
+import VolumeUpIcon from '@/material-icons/400-24px/volume_up-fill.svg?react';
import { Blurhash } from 'mastodon/components/blurhash';
import { Icon } from 'mastodon/components/icon';
import { playerSettings } from 'mastodon/settings';
diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json
index 6c37cdf5c..d2ac2f8f2 100644
--- a/app/javascript/mastodon/locales/af.json
+++ b/app/javascript/mastodon/locales/af.json
@@ -3,6 +3,7 @@
"about.contact": "Kontak:",
"about.disclaimer": "Mastodon is gratis oopbronsagteware en ân handelsmerk van Mastodon gGmbH.",
"about.domain_blocks.no_reason_available": "Rede nie beskikbaar nie",
+ "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.",
"about.domain_blocks.silenced.title": "Beperk",
"about.domain_blocks.suspended.title": "Opgeskort",
"about.not_available": "Hierdie inligting is nie op hierdie bediener beskikbaar gestel nie.",
@@ -65,7 +66,6 @@
"alert.unexpected.message": "Iets het skeefgeloop.",
"alert.unexpected.title": "Oeps!",
"announcement.announcement": "Aankondiging",
- "autosuggest_hashtag.per_week": "{count} per week",
"boost_modal.combo": "Druk {combo} om dit volgende keer oor te slaan",
"bundle_column_error.error.title": "Ag nee!",
"bundle_column_error.network.title": "Netwerkfout",
@@ -110,19 +110,12 @@
"compose_form.lock_disclaimer": "Jou rekening is nie {locked} nie. Enigiemand kan jou volg en sien wat jy vir jou volgers plaas.",
"compose_form.lock_disclaimer.lock": "gesluit",
"compose_form.placeholder": "Wat wil jy deel?",
- "compose_form.poll.add_option": "Voeg ân keuse by",
"compose_form.poll.duration": "Duur van peiling",
- "compose_form.poll.option_placeholder": "Keuse {number}",
- "compose_form.poll.remove_option": "Verwyder hierdie keuse",
"compose_form.poll.switch_to_multiple": "Verander peiling om meer as een keuse toe te laat",
"compose_form.poll.switch_to_single": "Verander die peiling om slegs een keuse toe te laat",
- "compose_form.publish": "Publiseer",
"compose_form.publish_form": "Publiseer",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Stoor veranderinge",
"compose_form.spoiler.marked": "Verwyder inhoudswaarskuwing",
"compose_form.spoiler.unmarked": "Voeg inhoudswaarskuwing by",
- "compose_form.spoiler_placeholder": "Skryf jou waarskuwing hier",
"confirmation_modal.cancel": "Kanselleer",
"confirmations.block.block_and_report": "Blokkeer en rapporteer",
"confirmations.block.confirm": "Blokkeer",
@@ -233,7 +226,6 @@
"navigation_bar.community_timeline": "Plaaslike tydlyn",
"navigation_bar.compose": "Skep nuwe plasing",
"navigation_bar.domain_blocks": "Geblokkeerde domeine",
- "navigation_bar.edit_profile": "Redigeer profiel",
"navigation_bar.lists": "Lyste",
"navigation_bar.logout": "Teken uit",
"navigation_bar.personal": "Persoonlik",
@@ -266,14 +258,7 @@
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
"onboarding.steps.share_profile.title": "Share your profile",
"privacy.change": "Verander privaatheid van plasing",
- "privacy.direct.long": "Slegs sigbaar vir genoemde gebruikers",
- "privacy.direct.short": "Slegs genoemde persone",
- "privacy.private.long": "Slegs sigbaar vir volgelinge",
- "privacy.private.short": "Slegs volgelinge",
- "privacy.public.long": "Sigbaar vir almal",
"privacy.public.short": "Publiek",
- "privacy.unlisted.long": "Sigbaar vir almal, maar onttrek uit verkennings-kenmerke",
- "privacy.unlisted.short": "Ongelys",
"privacy_policy.last_updated": "Laaste bywerking op {date}",
"privacy_policy.title": "Privaatheidsbeleid",
"regeneration_indicator.sublabel": "Jou tuis-voer word voorberei!",
diff --git a/app/javascript/mastodon/locales/an.json b/app/javascript/mastodon/locales/an.json
index 23899b100..e9d609a1c 100644
--- a/app/javascript/mastodon/locales/an.json
+++ b/app/javascript/mastodon/locales/an.json
@@ -75,7 +75,6 @@
"announcement.announcement": "Anuncio",
"attachments_list.unprocessed": "(sin procesar)",
"audio.hide": "Amagar audio",
- "autosuggest_hashtag.per_week": "{count} per semana",
"boost_modal.combo": "Puetz fer clic en {combo} pa blincar este aviso la proxima vegada",
"bundle_column_error.copy_stacktrace": "Copiar informe d'error",
"bundle_column_error.error.body": "La pachina solicitada no podiÃŗ estar renderizada. PodrÃa deber-se a una error en o nuestro codigo u a un problema de compatibilidat con o navegador.",
@@ -126,22 +125,12 @@
"compose_form.lock_disclaimer": "La tuya cuenta no ye {locked}. Totz pueden seguir-te pa veyer las tuyas publicacions nomÃĄs pa seguidores.",
"compose_form.lock_disclaimer.lock": "blocau",
"compose_form.placeholder": "En quÊ yes pensando?",
- "compose_form.poll.add_option": "Anyadir una opciÃŗn",
"compose_form.poll.duration": "DuraciÃŗn d'a enqÃŧesta",
- "compose_form.poll.option_placeholder": "ElecciÃŗn {number}",
- "compose_form.poll.remove_option": "Eliminar esta opciÃŗn",
"compose_form.poll.switch_to_multiple": "Modificar enqÃŧesta pa permitir multiples opcions",
"compose_form.poll.switch_to_single": "Modificar enqÃŧesta pa permitir una sola opciÃŗn",
- "compose_form.publish": "Publicar",
"compose_form.publish_form": "Publicar",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Alzar cambios",
- "compose_form.sensitive.hide": "{count, plural, one {Marcar material como sensible} other {Marcar material como sensible}}",
- "compose_form.sensitive.marked": "{count, plural, one {Material marcau como sensible} other {Material marcau como sensible}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {Material no marcau como sensible} other {Material no marcau como sensible}}",
"compose_form.spoiler.marked": "Texto amagau dimpuÊs de l'alvertencia",
"compose_form.spoiler.unmarked": "Texto no amagau",
- "compose_form.spoiler_placeholder": "Alvertencia de conteniu",
"confirmation_modal.cancel": "Cancelar",
"confirmations.block.block_and_report": "Blocar y Denunciar",
"confirmations.block.confirm": "Blocar",
@@ -345,7 +334,6 @@
"navigation_bar.compose": "Escribir nueva publicaciÃŗn",
"navigation_bar.discover": "Descubrir",
"navigation_bar.domain_blocks": "Dominios amagaus",
- "navigation_bar.edit_profile": "Editar perfil",
"navigation_bar.explore": "Explorar",
"navigation_bar.filters": "Parolas silenciadas",
"navigation_bar.follow_requests": "Solicitutz pa seguir-te",
@@ -429,14 +417,7 @@
"poll_button.add_poll": "Anyadir una enqÃŧesta",
"poll_button.remove_poll": "Eliminar enqÃŧesta",
"privacy.change": "Achustar privacidat",
- "privacy.direct.long": "NomÃĄs amostrar a los usuarios mencionaus",
- "privacy.direct.short": "NomÃĄs contas mencionadas",
- "privacy.private.long": "NomÃĄs amostrar a seguidores",
- "privacy.private.short": "Solo seguidores",
- "privacy.public.long": "Visible pa totz",
"privacy.public.short": "Publico",
- "privacy.unlisted.long": "Visible pa totz, pero excluyiu d'as funcions d'escubrimiento",
- "privacy.unlisted.short": "No listau",
"privacy_policy.last_updated": "Ultima vegada actualizau {date}",
"privacy_policy.title": "Politica de Privacidat",
"refresh": "Actualizar",
@@ -590,10 +571,8 @@
"upload_error.poll": "Puyada de fichers no permitida con enqÃŧestas.",
"upload_form.audio_description": "Describir pa personas con problemas auditivos",
"upload_form.description": "Describir pa los usuarios con dificultat visual",
- "upload_form.description_missing": "Garra descripciÃŗn anyadida",
"upload_form.edit": "Editar",
"upload_form.thumbnail": "Cambiar miniatura",
- "upload_form.undo": "Borrar",
"upload_form.video_description": "Describir pa personas con problemas auditivos u visuals",
"upload_modal.analyzing_picture": "Analisando imachenâĻ",
"upload_modal.apply": "Aplicar",
diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json
index c0d07cc64..5f2d151fa 100644
--- a/app/javascript/mastodon/locales/ar.json
+++ b/app/javascript/mastodon/locales/ar.json
@@ -86,7 +86,6 @@
"announcement.announcement": "ØĨØšŲØ§Ų",
"attachments_list.unprocessed": "(ØēŲØą Ų
ؚاŲŲØŦ)",
"audio.hide": "ØĨØŽŲØ§ØĄ اŲŲ
ŲØˇØš Ø§ŲØĩŲØĒŲ",
- "autosuggest_hashtag.per_week": "{count} ŲŲ Ø§ŲØŖØŗØ¨ŲØš",
"boost_modal.combo": "ŲŲŲ
ŲŲŲ Ø§ŲØļب税 ØšŲŲ {combo} ŲØĒØŽØˇŲ ŲØ°Ø§ ŲŲ Ø§ŲŲ
ØąØŠ اŲŲ
ŲŲØ¨ŲØŠ",
"bundle_column_error.copy_stacktrace": "Ø§ŲØŗØŽ ØĒŲØąŲØą Ø§ŲØŽØˇØŖ",
"bundle_column_error.error.body": "ŲØ§ ŲŲ
ŲŲ ØĒŲØ¯ŲŲ
Ø§ŲØĩŲØØŠ اŲŲ
ØˇŲŲØ¨ØŠ. ŲØ¯ ŲŲŲŲ Ø¨ØŗØ¨Ø¨ ØŽØˇØŖ ŲŲ Ø§ŲØĒØšŲŲŲ
اØĒ Ø§ŲØ¨ØąŲ
ØŦŲØŠØ ØŖŲ Ų
Ø´ŲŲØŠ ØĒŲØ§ŲŲ Ø§ŲŲ
ØĒØĩŲØ.",
@@ -143,22 +142,12 @@
"compose_form.lock_disclaimer": "ØØŗØ§Ø¨ŲŲ ØēŲØą {locked}. ŲŲŲ
ŲŲ ŲØŖŲ Ø´ØŽØĩ Ų
ŲØĒØ§Ø¨ØšØĒŲ ŲØąØ¤ŲØŠ (Ų
ŲØ´ŲØąØ§ØĒ اŲŲ
ØĒابؚŲŲ ŲŲØˇ).",
"compose_form.lock_disclaimer.lock": "Ų
ŲŲŲŲŲ",
"compose_form.placeholder": "ŲŲŲŲ
Ų ØĒŲŲŲŲŲØąØ",
- "compose_form.poll.add_option": "ØĨØļØ§ŲØŠ ØŽŲØ§Øą",
"compose_form.poll.duration": "Ų
ŲØ¯ŲŲØŠ Ø§ŲØŗØĒØˇŲØ§Øš Ø§ŲØąØŖŲ",
- "compose_form.poll.option_placeholder": "Ø§ŲØŽŲØ§Øą {number}",
- "compose_form.poll.remove_option": "ØĨØ˛Ø§ŲØŠ ŲØ°Ø§ Ø§ŲØŽŲØ§Øą",
"compose_form.poll.switch_to_multiple": "ØĒØēŲŲŲØą Ø§ŲØ§ØŗØĒØˇŲØ§Øš ŲŲØŗŲ
Ø§Ø Ø¨Ø§ŲØŽŲØ§ØąØ§ØĒ Ų
ŲØĒØšØ¯ŲŲØ¯ØŠ",
"compose_form.poll.switch_to_single": "ØĒØēŲŲŲØą Ø§ŲØ§ØŗØĒØˇŲØ§Øš ŲŲØŗŲ
Ø§Ø Ø¨Ø§ŲØŽŲØ§Øą ŲØ§ØØ¯ ŲŲØˇ",
- "compose_form.publish": "ŲØ´Øą",
"compose_form.publish_form": "Ų
ŲØ´ŲØą ØŦØ¯ŲØ¯",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "اØŲظ Ø§ŲØĒØšØ¯ŲŲØ§ØĒ",
- "compose_form.sensitive.hide": "{count, plural, one {Ø§ŲØĨØ´Ø§ØąØŠ ØĨŲŲ Ø§ŲŲŲØŗØˇ ŲŲ
ŲØØĒŲŲ ØØŗŲØ§Øŗ} two{Ø§ŲØĨØ´Ø§ØąØŠ ØĨŲŲ Ø§ŲŲØŗØˇØ§Ų ŲŲ
ŲØØĒŲŲØ§Ų ØØŗŲØ§ØŗØ§Ų} other {Ø§ŲØĨØ´Ø§ØąØŠ ØĨŲŲ Ø§ŲŲØŗØ§ØĻØˇ ŲŲ
ŲØØĒŲŲØ§ØĒ ØØŗŲØ§ØŗØŠ}}",
- "compose_form.sensitive.marked": "{count, plural, one {ØĒŲ
ŲŲ Ø§ŲØĨØ´Ø§ØąØŠ ØĨŲŲ Ø§ŲŲØŗØˇ ŲŲ
ŲØØĒŲŲ ØØŗŲØ§Øŗ} two{ØĒŲ
ŲŲ Ø§ŲØĨØ´Ø§ØąØŠ ØĨŲŲ Ø§ŲŲØŗØˇØ§Ų ŲŲ
ŲØØĒŲŲØ§Ų ØØŗŲØ§ØŗØ§Ų} other {ØĒŲ
ŲŲ Ø§ŲØĨØ´Ø§ØąØŠ ØĨŲŲ Ø§ŲŲØŗØ§ØĻØˇ ŲŲ
ŲØØĒŲŲØ§ØĒ ØØŗŲØ§ØŗØŠ}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {ŲŲ
ØĒŲØĒŲŲ
Ų Ø§ŲØĨØ´Ø§ØąØŠ ØĨŲŲ Ø§ŲŲØŗØˇ ŲŲ
ŲØØĒŲŲ ØØŗŲØ§Øŗ} two{ŲŲ
ØĒŲØĒŲŲ
Ų Ø§ŲØĨØ´Ø§ØąØŠ ØĨŲŲ Ø§ŲŲØŗØˇØ§Ų ŲŲ
ŲØØĒŲŲØ§Ų ØØŗŲØ§ØŗØ§Ų} other {ŲŲ
ØĒŲØĒŲŲ
Ų Ø§ŲØĨØ´Ø§ØąØŠ ØĨŲŲ Ø§ŲŲØŗØ§ØĻØˇ ŲŲ
ŲØØĒŲŲØ§ØĒ ØØŗŲØ§ØŗØŠ}}",
"compose_form.spoiler.marked": "ØĨØ˛Ø§ŲØŠ ØĒØØ°ŲØą اŲŲ
ØØĒŲŲ",
"compose_form.spoiler.unmarked": "ØĨØļØ§ŲØŠ ØĒØØ°ŲØą ŲŲŲ
ØØĒŲŲ",
- "compose_form.spoiler_placeholder": "اŲŲØĒŲØ¨ ØĒØØ°ŲØąŲŲ ŲŲŲØ§",
"confirmation_modal.cancel": "ØĨŲØēØ§ØĄ",
"confirmations.block.block_and_report": "ØØ¸ØąŲ ŲØ§ŲØĨØ¨ŲØ§Øē ØšŲŲ",
"confirmations.block.confirm": "ØØ¸Øą",
@@ -402,7 +391,6 @@
"navigation_bar.direct": "Ø§ŲØĨØ´Ø§ØąØ§ØĒ Ø§ŲØŽØ§ØĩØŠ",
"navigation_bar.discover": "Ø§ŲØĒØ´Ų",
"navigation_bar.domain_blocks": "اŲŲØˇØ§ŲاØĒ اŲŲ
ØØ¸ŲØąØŠ",
- "navigation_bar.edit_profile": "ؚدŲŲ Ø§ŲŲ
ŲŲ Ø§ŲØĒØšØąŲŲŲ",
"navigation_bar.explore": "Ø§ØŗØĒŲØ´Ų",
"navigation_bar.favourites": "اŲŲ
ŲØļŲØŠ",
"navigation_bar.filters": "اŲŲŲŲ
اØĒ اŲŲ
ŲØĒŲŲ
ØŠ",
@@ -509,14 +497,7 @@
"poll_button.add_poll": "ØĨØļØ§ŲØŠ Ø§ØŗØĒØˇŲØ§Øš ŲبਪŲ",
"poll_button.remove_poll": "ØĨØ˛Ø§ŲØŠ Ø§ØŗØĒØˇŲØ§Øš Ø§ŲØąØŖŲ",
"privacy.change": "اØļØ¨Øˇ ØŽØĩŲØĩŲØŠ Ø§ŲŲ
ŲØ´ŲØą",
- "privacy.direct.long": "Ų
ØąØĻŲ ŲŲŲ
ØŗØĒ؎دŲ
ŲŲ Ø§ŲŲ
ذŲŲØąŲŲ ŲŲØˇ",
- "privacy.direct.short": "Ø§ŲØŖØ´ØŽØ§Øĩ اŲŲ
Ø´Ø§Øą ØĨŲŲŲŲ
ŲŲØˇ",
- "privacy.private.long": "ØŖŲØ´Øą ŲŲ
ØĒابؚŲŲ ŲŲØˇ",
- "privacy.private.short": "ŲŲŲ
ØĒØ§Ø¨ŲØšŲŲ ŲŲØˇ",
- "privacy.public.long": "Ų
ØąØĻŲ ŲŲŲŲ",
"privacy.public.short": "ŲŲØšØ§Ų
ØŠ",
- "privacy.unlisted.long": "Ų
ØąØĻŲ ŲŲØŦŲ
ŲØšØ ŲŲŲŲ Ų
ŲŲ Ø¯ŲŲ Ų
ŲØ˛Ø§ØĒ Ø§ŲØ§ŲØĒشاŲ",
- "privacy.unlisted.short": "ØēŲØą Ų
Ø¯ØąØŦ",
"privacy_policy.last_updated": "ØĸØŽØą ØĒØØ¯ŲØĢ {date}",
"privacy_policy.title": "ØŗŲØ§ØŗØŠ Ø§ŲØŽØĩŲØĩŲØŠ",
"refresh": "ØŖŲØšŲØ´",
@@ -696,10 +677,8 @@
"upload_error.poll": "ŲØ§ ŲŲ
ŲŲ ØĨØ¯ØąØ§ØŦ Ų
ŲŲØ§ØĒ ŲŲ Ø§ØŗØĒØˇŲØ§ØšØ§ØĒ Ø§ŲØąØŖŲ.",
"upload_form.audio_description": "ŲØĩŲ ŲŲØŖØ´ØŽØ§Øĩ Ø°Ų ŲŲØĩØą Ø§ŲØŗŲ
Øš",
"upload_form.description": "ŲØĩŲ ŲŲŲ
ؚاŲŲŲ Ø¨ØĩØąŲØ§",
- "upload_form.description_missing": "ŲŲ
ŲŲØļŲ ŲØĩŲ",
"upload_form.edit": "ØĒؚدŲŲ",
"upload_form.thumbnail": "ØēŲŲØą Ø§ŲØĩŲØąØŠ اŲŲ
ØĩØēØąØŠ",
- "upload_form.undo": "ØØ°Ų",
"upload_form.video_description": "ŲØĩŲ ŲŲŲ
ؚاŲŲŲ Ø¨ØĩØąŲØ§ ØŖŲ ŲŲØ°Ų ŲŲØĩØą Ø§ŲØŗŲ
Øš",
"upload_modal.analyzing_picture": "ØŦØ§ØąŲ ŲØØĩ Ø§ŲØĩŲØąØŠâĻ",
"upload_modal.apply": "ØˇØ¨ŲŲ",
diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json
index c4238edcd..479c9c924 100644
--- a/app/javascript/mastodon/locales/ast.json
+++ b/app/javascript/mastodon/locales/ast.json
@@ -13,14 +13,12 @@
"about.rules": "Normes del sirvidor",
"account.account_note_header": "Nota",
"account.add_or_remove_from_list": "Amestar o quitar de les llistes",
- "account.badges.bot": "AutomatizÃĄu",
"account.badges.group": "Grupu",
"account.block": "Bloquiar a @{name}",
"account.block_domain": "Bloquiar el dominiu {domain}",
"account.block_short": "Bloquiar",
"account.blocked": "Perfil bloquiÃĄu",
"account.browse_more_on_origin_server": "Restolar mÃĄs nel perfil orixinal",
- "account.cancel_follow_request": "Atayar siguimientu",
"account.copy": "Copiar I'enllaz al perfil",
"account.direct": "Mentar a @{name} per privao",
"account.disable_notifications": "Dexar d'avisame cuando @{name} espublice artÃculos",
@@ -28,13 +26,11 @@
"account.edit_profile": "Editar el perfil",
"account.enable_notifications": "Avisame cuando @{name} espublice artÃculos",
"account.endorse": "Destacar nel perfil",
- "account.featured_tags.last_status_at": "Ãltimu estÃĄu en {date}",
- "account.featured_tags.last_status_never": "Sin estaos",
+ "account.featured_tags.last_status_never": "Nun hai nengÃēn artÃculu",
"account.featured_tags.title": "Etiquetes destacaes de: {name}",
"account.follow": "Siguir",
"account.followers": "Siguidores",
"account.followers.empty": "Naide sigue a esti perfil.",
- "account.followers_counter": "{count, plural, one {{counter} SiguÃu} other {{counter} SiguÃos}}",
"account.following": "Siguiendo",
"account.following_counter": "{count, plural,one {Sigue a {counter}} other {Sigue a {counter}}}",
"account.follows.empty": "Esti perfil nun sigue a naide.",
@@ -42,7 +38,6 @@
"account.hide_reblogs": "Anubrir los artÃculos compartÃos de @{name}",
"account.in_memoriam": "N'alcordanza.",
"account.joined_short": "Data de xuniÃŗn",
- "account.languages": "Camudar llingÃŧes suscrites",
"account.link_verified_on": "La propiedÃĄ d'esti enllaz foi comprobada'l {date}",
"account.media": "Multimedia",
"account.mention": "Mentar a @{name}",
@@ -71,7 +66,6 @@
"alert.unexpected.title": "ÂĄMeca!",
"announcement.announcement": "Anunciu",
"attachments_list.unprocessed": "(ensin procesar)",
- "autosuggest_hashtag.per_week": "{count} per selmana",
"bundle_column_error.error.body": "La pÃĄxina solicitada nun se pudo renderizar. Ye posible que seya pola mor d'un fallu nel cÃŗdigu o por un problema de compatibilidÃĄ del restolador.",
"bundle_column_error.error.title": "ÂĄOh, non!",
"bundle_column_error.network.body": "Hebo un error al tentar de cargar esta pÃĄxina. Esto pudo ser pola mor d'un problema temporal cola conexÃŗn a internet o con esti sirvidor.",
@@ -108,19 +102,15 @@
"community.column_settings.remote_only": "NamÃĄs lo remoto",
"compose.language.change": "Camudar la llingua",
"compose.language.search": "Buscar llingÃŧesâĻ",
+ "compose.published.body": "EspublizÃŗse l'artÃculu.",
"compose_form.direct_message_warning_learn_more": "Saber mÃĄs",
"compose_form.encryption_warning": "Los artÃculos de Mastodon nun tÃĄn cifraos de puntu a puntu. Nun compartas nengÃēn tipu d'informaciÃŗn sensible per Mastodon.",
"compose_form.lock_disclaimer": "La to cuenta nun ye {locked}. Cualesquier perfil pue siguite pa ver los artÃculos que son namÃĄs pa siguidores.",
"compose_form.lock_disclaimer.lock": "privada",
"compose_form.placeholder": "ÂŋEn quÊ pienses?",
- "compose_form.poll.add_option": "Amestar una opciÃŗn",
"compose_form.poll.option_placeholder": "OpciÃŗn {number}",
- "compose_form.poll.remove_option": "Quitar esta opciÃŗn",
- "compose_form.publish": "Espublizar",
+ "compose_form.poll.type": "Estilu",
"compose_form.publish_form": "ArtÃculu nuevu",
- "compose_form.publish_loud": "ÂĄ{publish}!",
- "compose_form.save_changes": "Guardar los cambeos",
- "compose_form.spoiler.unmarked": "Text is not hidden",
"confirmation_modal.cancel": "Encaboxar",
"confirmations.block.block_and_report": "Bloquiar ya informar",
"confirmations.block.confirm": "Bloquiar",
@@ -150,6 +140,7 @@
"dismissable_banner.community_timeline": "Esta seiciÃŗn contiÊn los artÃculos pÃēblicos mÃĄs actuales de los perfiles agospiaos nel dominiu {domain}.",
"dismissable_banner.dismiss": "Escartar",
"dismissable_banner.explore_tags": "Esta seiciÃŗn contiÊn les etiquetes del fediversu que tÃĄn ganando popularidÃĄ gÃŧei. Les etiquetes mÃĄs usaes polos perfiles apaecen no cimero.",
+ "dismissable_banner.public_timeline": "Esta seiciÃŗn contiÊn los artÃculos mÃĄs nuevos de les persones na web social que les persones de {domain} siguen.",
"embed.instructions": "Empotra esti artÃculu nel to sitiu web pente la copia del cÃŗdigu d'abaxo.",
"embed.preview": "Va apaecer asina:",
"emoji_button.activity": "ActividÃĄ",
@@ -159,6 +150,7 @@
"emoji_button.not_found": "Nun s'atoparon fustaxes que concasen",
"emoji_button.objects": "Oxetos",
"emoji_button.people": "Persones",
+ "emoji_button.recent": "D'usu frecuente",
"emoji_button.search": "BuscarâĻ",
"emoji_button.search_results": "Resultaos de la busca",
"emoji_button.symbols": "SÃmbolos",
@@ -221,7 +213,6 @@
"hashtag.column_header.tag_mode.any": "o {additional}",
"hashtag.column_header.tag_mode.none": "ensin {additional}",
"hashtag.column_settings.select.no_options_message": "Nun s'atopÃŗ nenguna suxerencia",
- "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"hashtag.counter_by_accounts": "{count, plural, one {{counter} participante} other {{counter} participantes}}",
"hashtag.follow": "Siguir a la etiqueta",
"hashtag.unfollow": "Dexar de siguir a la etiqueta",
@@ -263,7 +254,6 @@
"keyboard_shortcuts.reply": "Responder a un artÃculu",
"keyboard_shortcuts.requests": "Abrir la llista de solicitÃēes de siguimientu",
"keyboard_shortcuts.search": "Enfocar la barra de busca",
- "keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "Abrir la columna ÂĢEntamarÂģ",
"keyboard_shortcuts.toggle_sensitivity": "Amosar/anubrir el contenÃu multimedia",
"keyboard_shortcuts.toot": "Comenzar un artÃculu nuevu",
@@ -291,7 +281,6 @@
"navigation_bar.community_timeline": "Llinia de tiempu llocal",
"navigation_bar.direct": "Menciones privaes",
"navigation_bar.domain_blocks": "Dominios bloquiaos",
- "navigation_bar.edit_profile": "Editar el perfil",
"navigation_bar.explore": "EsploraciÃŗn",
"navigation_bar.filters": "Pallabres desactivaes",
"navigation_bar.follow_requests": "SolicitÃēes de siguimientu",
@@ -299,6 +288,7 @@
"navigation_bar.lists": "Llistes",
"navigation_bar.logout": "Zarrar la sesiÃŗn",
"navigation_bar.mutes": "Perfiles colos avisos desactivaos",
+ "navigation_bar.opened_in_classic_interface": "Los artÃculos, les cuentes ya otres pÃĄxines especÃfiques ÃĄbrense por defeutu na interfaz web clÃĄsica.",
"navigation_bar.pins": "ArtÃculos fixaos",
"navigation_bar.preferences": "Preferencies",
"navigation_bar.public_timeline": "Llinia de tiempu federada",
@@ -334,7 +324,7 @@
"notifications.group": "{count} avisos",
"notifications.mark_as_read": "Marcar tolos avisos como lleÃos",
"notifications.permission_required": "Los avisos d'escritoriu nun tÃĄn disponibles porque nun se concediÃŗ'l permisu riquÃu.",
- "onboarding.actions.go_to_explore": "See what's trending",
+ "onboarding.profile.note_hint": "Pues @mentar a otros perfiles o poner #etiquetesâĻ",
"onboarding.start.lead": "XÃĄ yes parte de Mastodon, una plataforma social multimedia descentralizada onde tu ya non un algoritmu, personalices la to esperiencia. Vamos presentate esti llugar social nuevu:",
"onboarding.start.skip": "ÂŋNun precises ayuda pa comenzar?",
"onboarding.steps.follow_people.body": "Mastodon trata namÃĄs de siguir a cuentes interesantes.",
@@ -350,12 +340,7 @@
"poll_button.add_poll": "Amestar una encuesta",
"poll_button.remove_poll": "Quitar la encuesta",
"privacy.change": "Configurar la privacidÃĄ del artÃculu",
- "privacy.direct.long": "ArtÃculu visible namÃĄs pa los perfiles mentaos",
- "privacy.private.long": "ArtÃculu visible namÃĄs pa los perfiles siguidores",
- "privacy.private.short": "NamÃĄs pa siguidores",
- "privacy.public.long": "Tol mundu pue ver l'artÃculu",
"privacy.public.short": "ArtÃculu pÃēblicu",
- "privacy.unlisted.long": "ArtÃculu visible pa tol mundu mas escluyÃu de les funciones de descubrimientu",
"privacy_policy.last_updated": "Data del Ãēltimu anovamientu: {date}",
"privacy_policy.title": "PolÃtica de privacidÃĄ",
"refresh": "Anovar",
@@ -372,6 +357,7 @@
"relative_time.seconds": "{number} s",
"relative_time.today": "gÃŧei",
"reply_indicator.cancel": "Encaboxar",
+ "reply_indicator.poll": "Encuesta",
"report.block": "Bloquiar",
"report.categories.spam": "Spam",
"report.categories.violation": "El contenÃu incumple una o mÃĄs normes del sirvidor",
@@ -415,12 +401,16 @@
"search.quick_action.go_to_hashtag": "Dir a la etiqueta {x}",
"search.quick_action.status_search": "ArtÃculos que concasen con {x}",
"search.search_or_paste": "Busca o apiega una URL",
+ "search_popout.language_code": "cÃŗdigu de llingua ISO",
"search_popout.quick_actions": "Aiciones rÃĄpides",
"search_popout.recent": "Busques de reciÊn",
+ "search_popout.specific_date": "data especÃfica",
+ "search_popout.user": "perfil",
"search_results.accounts": "Perfiles",
"search_results.all": "Too",
"search_results.hashtags": "Etiquetes",
"search_results.nothing_found": "Nun se pudo atopar nada con esos tÊrminos de busca",
+ "search_results.see_all": "Ver too",
"search_results.statuses": "ArtÃculos",
"search_results.title": "Busca de: {q}",
"server_banner.introduction": "{domain} ye parte de la rede social descentralizada que tien la teunoloxÃa de {mastodon}.",
@@ -463,6 +453,7 @@
"status.replied_to": "En rempuesta a {name}",
"status.reply": "Responder",
"status.replyAll": "Responder al filu",
+ "status.report": "Informar de @{name}",
"status.sensitive_warning": "ContenÃu sensible",
"status.show_filter_reason": "Amosar de toes toes",
"status.show_less": "Amosar menos",
@@ -491,9 +482,7 @@
"upload_button.label": "Amestar ficheros multimedia",
"upload_error.poll": "La xuba de ficheros nun ta permitida coles encuestes.",
"upload_form.audio_description": "Describi'l contenÃu pa persones sordes ya/o ciegues",
- "upload_form.description_missing": "Nun s'amestÃŗ la descripciÃŗn",
"upload_form.edit": "Editar",
- "upload_form.undo": "Desaniciar",
"upload_modal.analyzing_picture": "Analizando la semeyaâĻ",
"upload_modal.apply": "Aplicar",
"upload_modal.applying": "AplicandoâĻ",
diff --git a/app/javascript/mastodon/locales/be.json b/app/javascript/mastodon/locales/be.json
index 773af4034..e06951510 100644
--- a/app/javascript/mastodon/locales/be.json
+++ b/app/javascript/mastodon/locales/be.json
@@ -89,7 +89,6 @@
"announcement.announcement": "ĐĐą'Ņва",
"attachments_list.unprocessed": "(ĐŊĐĩаĐŋŅаŅаваĐŊŅ)",
"audio.hide": "ĐĄŅ
аваŅŅ Đ°ŅĐ´ŅŅ",
- "autosuggest_hashtag.per_week": "{count} Са ŅŅдСĐĩĐŊŅ",
"boost_modal.combo": "ĐаŅŅŅĐŊŅŅĐĩ {combo}, Đēай ĐŋŅаĐŋŅŅŅŅŅŅ ĐŊаŅŅŅĐŋĐŊŅĐŧ ŅаСаĐŧ",
"bundle_column_error.copy_stacktrace": "ĐĄĐēаĐŋŅŅаваŅŅ ŅĐŋŅаваСдаŅŅ ĐŋŅа ĐŋаĐŧŅĐģĐēŅ",
"bundle_column_error.error.body": "ĐаĐŋŅŅаĐŊĐ°Ņ ŅŅаŅĐžĐŊĐēа ĐŊĐĩ ĐŧĐžĐļа ĐąŅŅŅ Đ°Đ´ĐģŅŅŅŅаваĐŊаŅ. ĐŅŅа ĐŧĐ°ĐŗĐģĐž ŅŅаŅŅа ĐŋŅаС Ņ
ŅĐąŅ Ņ ĐŊаŅŅĐŧ ĐēОдСĐĩ, айО ĐŋŅаС ĐŋаĐŧŅĐģĐēŅ ŅŅĐŧŅŅŅаĐģŅĐŊаŅŅŅ Đˇ ĐąŅаŅСĐĩŅаĐŧ.",
@@ -146,22 +145,12 @@
"compose_form.lock_disclaimer": "ĐĐ°Ņ ŅĐģŅĐēĐžĐ˛Ņ ĐˇĐ°ĐŋŅŅ ĐŊĐĩ {locked}. ĐŖŅĐĩ ĐŧĐžĐŗŅŅŅ ĐŋадĐŋŅŅаŅŅа ĐŊа ваŅ, Đēай йаŅŅŅŅ Đ´ĐžĐŋŅŅŅ ŅĐžĐģŅĐēŅ Đ´ĐģŅ ĐŋадĐŋŅŅŅŅĐēаŅ.",
"compose_form.lock_disclaimer.lock": "СаĐēŅŅŅŅ",
"compose_form.placeholder": "ШŅĐž СдаŅŅĐģаŅŅ?",
- "compose_form.poll.add_option": "ĐадаŅŅ Đ˛Đ°ŅŅŅĐŊŅ",
"compose_form.poll.duration": "ĐŅаŅŅĐŗĐģаŅŅŅ Đ°ĐŋŅŅаĐŊĐŊŅ",
- "compose_form.poll.option_placeholder": "ĐаŅŅŅĐŊŅ {number}",
- "compose_form.poll.remove_option": "ĐŅдаĐģŅŅŅ ĐŗŅŅŅ Đ˛Đ°ŅŅŅĐŊŅ",
"compose_form.poll.switch_to_multiple": "ĐĐŧŅĐŊŅŅĐĩ аĐŋŅŅаĐŊĐŊĐĩ, Đēай даСвОĐģŅŅŅ ĐŊĐĩĐēаĐģŅĐēŅ Đ˛Đ°ŅŅŅĐŊŅĐ°Ņ Đ°Đ´ĐēаСŅ",
"compose_form.poll.switch_to_single": "ĐĐŧŅĐŊŅŅĐĩ аĐŋŅŅаĐŊĐŊĐĩ, Đēай даСвОĐģŅŅŅ Đ°Đ´ĐˇŅĐŊŅ Đ˛Đ°ŅŅŅĐŊŅ Đ°Đ´ĐēаСŅ",
- "compose_form.publish": "ĐĐŋŅĐąĐģŅĐēаваŅŅ",
"compose_form.publish_form": "ĐĐŋŅĐąĐģŅĐēаваŅŅ",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "ĐаŅ
аваŅŅ ĐˇĐŧĐĩĐŊŅ",
- "compose_form.sensitive.hide": "{count, plural, one {ĐаСĐŊаŅŅŅŅ ĐēаĐŊŅŅĐŊŅ ŅĐē даĐģŅĐēаŅĐŊŅ} other {ĐаСĐŊаŅŅŅŅ ĐēаĐŊŅŅĐŊŅ ŅĐē даĐģŅĐēаŅĐŊŅ}}",
- "compose_form.sensitive.marked": "{count, plural, one {ĐаĐŊŅŅĐŊŅ ĐŋаСĐŊаŅаĐŊŅ ŅĐē даĐģŅĐēаŅĐŊŅ} other {ĐаĐŊŅŅĐŊŅ ĐŋаСĐŊаŅаĐŊŅ ŅĐē даĐģŅĐēаŅĐŊŅ}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {ĐаĐŊŅŅĐŊŅ ĐŊĐĩ ĐŋаСĐŊаŅаĐŊŅ ŅĐē даĐģŅĐēаŅĐŊŅ} other {ĐаĐŊŅŅĐŊŅ ĐŊĐĩ ĐŋаСĐŊаŅаĐŊŅ ŅĐē даĐģŅĐēаŅĐŊŅ}}",
"compose_form.spoiler.marked": "ĐŅдаĐģŅŅŅ ĐŋаĐŋŅŅŅĐ´ĐļаĐŊĐŊĐĩ ай СĐŧĐĩŅŅŅвĐĩ",
"compose_form.spoiler.unmarked": "ĐадаŅŅ ĐŋаĐŋŅŅŅĐ´ĐļаĐŊĐŊĐĩ ай СĐŧĐĩŅŅŅвĐĩ",
- "compose_form.spoiler_placeholder": "ĐаĐŋŅŅŅŅĐĩ ŅĐ˛Đ°Ņ ĐŋаĐŋŅŅŅĐ´ĐļаĐŊĐŊĐĩ ŅŅŅ",
"confirmation_modal.cancel": "ĐĄĐēаŅаваŅŅ",
"confirmations.block.block_and_report": "ĐайĐģаĐēŅŅаваŅŅ Ņ ĐŋаŅĐēаŅдСŅŅŅа",
"confirmations.block.confirm": "ĐайĐģаĐēŅŅаваŅŅ",
@@ -408,7 +397,6 @@
"navigation_bar.direct": "ĐŅайŅŅŅŅŅ ĐˇĐŗĐ°Đ´Đ˛Đ°ĐŊĐŊŅ",
"navigation_bar.discover": "ĐавĐĩдаКŅĐĩŅŅ",
"navigation_bar.domain_blocks": "ĐайĐģаĐēŅŅаваĐŊŅŅ Đ´Đ°ĐŧĐĩĐŊŅ",
- "navigation_bar.edit_profile": "Đ ŅĐ´Đ°ĐŗĐ°Đ˛Đ°ŅŅ ĐŋŅĐžŅŅĐģŅ",
"navigation_bar.explore": "ĐĐŗĐģŅĐ´",
"navigation_bar.favourites": "ĐŖĐŋадайаĐŊаĐĩ",
"navigation_bar.filters": "ĐĐŗĐŊаŅаваĐŊŅŅ ŅĐģОвŅ",
@@ -526,14 +514,7 @@
"poll_button.add_poll": "ĐадаŅŅ Đ°ĐŋŅŅаĐŊĐŊĐĩ",
"poll_button.remove_poll": "ĐŅдаĐģŅŅŅ Đ°ĐŋŅŅаĐŊĐŊĐĩ",
"privacy.change": "ĐĐŧŅĐŊŅŅŅ ĐŋŅŅваŅĐŊаŅŅŅ Đ´ĐžĐŋŅŅŅ",
- "privacy.direct.long": "ĐаĐēаСаŅŅ ŅĐžĐģŅĐēŅ ĐˇĐŗĐ°Đ´Đ°ĐŊŅĐŧ ĐēаŅŅŅŅаĐģŅĐŊŅĐēаĐŧ",
- "privacy.direct.short": "ĐĸĐžĐģŅĐēŅ ĐˇĐŗĐ°Đ´Đ°ĐŊŅŅ ĐģŅдСŅ",
- "privacy.private.long": "ĐаĐēаСаŅŅ ŅĐžĐģŅĐēŅ ĐŋадĐŋŅŅŅŅĐēаĐŧ",
- "privacy.private.short": "ĐĸĐžĐģŅĐēŅ Đ´ĐģŅ ĐŋадĐŋŅŅŅŅĐēаŅ",
- "privacy.public.long": "ĐаŅĐŊŅ Đ´ĐģŅ ŅŅŅŅ
",
"privacy.public.short": "ĐŅĐąĐģŅŅĐŊŅ",
- "privacy.unlisted.long": "ĐаŅĐŊа Đ´ĐģŅ ŅŅŅŅ
, аĐģĐĩ ĐŊĐĩ ĐŋŅаС ĐŧĐ°ĐŗŅŅĐŧаŅŅŅ Đ°ĐŗĐģŅĐ´Ņ",
- "privacy.unlisted.short": "ĐĐĩ Ņ ŅŅŅĐļĐēаŅ
",
"privacy_policy.last_updated": "ĐĐ´ĐŊĐžŅĐģĐĩĐŊа {date}",
"privacy_policy.title": "ĐаĐģŅŅŅĐēа ĐēаĐŊŅŅĐ´ŅĐŊŅŅĐšĐŊаŅŅŅ",
"recommended": "Đ ŅĐēаĐŧĐĩĐŊĐ´ŅĐĩĐŧ",
@@ -715,10 +696,8 @@
"upload_error.poll": "ĐĐĩĐŧĐ°ĐŗŅŅĐŧа ĐŋŅŅĐŧаŅаваŅŅ ŅаКĐģ да аĐŋŅŅаĐŊĐŊŅ.",
"upload_form.audio_description": "ĐĐŋŅŅаĐŊĐŊĐĩ Đ´ĐģŅ ĐģŅдСĐĩĐš С ĐŋаŅŅŅŅĐŊĐŊŅĐŧŅ ŅĐģŅŅ
Ņ",
"upload_form.description": "ĐĐŋŅŅаŅŅ Đ´ĐģŅ ĐģŅдСĐĩĐš Ņа ŅĐģайŅĐŧ СŅĐžĐēаĐŧ",
- "upload_form.description_missing": "ĐĐŋŅŅаĐŊĐŊĐĩ адŅŅŅĐŊŅŅаĐĩ",
"upload_form.edit": "Đ ŅĐ´Đ°ĐŗĐ°Đ˛Đ°ŅŅ",
"upload_form.thumbnail": "ĐĐŧŅĐŊŅŅŅ ĐŧŅĐŊŅŅŅŅŅŅ",
- "upload_form.undo": "ĐŅдаĐģŅŅŅ",
"upload_form.video_description": "ĐĐŋŅŅаĐŊĐŊĐĩ Đ´ĐģŅ ĐģŅдСĐĩĐš С ĐŋаŅŅŅŅĐŊĐŊŅĐŧŅ ĐˇŅĐžĐēŅ Ņ ŅĐģŅŅ
Ņ",
"upload_modal.analyzing_picture": "ĐĐŊаĐģŅС вŅŅвŅâĻ",
"upload_modal.apply": "ĐŖĐļŅŅŅ",
diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json
index 8a6d6040d..213ac090a 100644
--- a/app/javascript/mastodon/locales/bg.json
+++ b/app/javascript/mastodon/locales/bg.json
@@ -32,6 +32,7 @@
"account.featured_tags.last_status_never": "ĐŅĐŧа ĐŋŅĐąĐģиĐēаŅии",
"account.featured_tags.title": "ĐĐģавĐŊи Ņ
аŅŅĐ°ĐŗĐžĐ˛Đĩ ĐŊа {name}",
"account.follow": "ĐĐžŅĐģĐĩдваĐŊĐĩ",
+ "account.follow_back": "ĐĐžŅĐģĐĩдваĐŊĐĩ вСаиĐŧĐŊĐž",
"account.followers": "ĐĐžŅĐģĐĩдОваŅĐĩĐģи",
"account.followers.empty": "ĐŅĐĩ ĐŊиĐēОК ĐŊĐĩ ŅĐģĐĩдва ĐŋĐžŅŅĐĩйиŅĐĩĐģŅ.",
"account.followers_counter": "{count, plural, one {{counter} ĐŋĐžŅĐģĐĩдОваŅĐĩĐģ} other {{counter} ĐŋĐžŅĐģĐĩдОваŅĐĩĐģи}}",
@@ -52,6 +53,7 @@
"account.mute_notifications_short": "ĐĐ°ĐŗĐģŅŅаваĐŊĐĩ ĐŊа иСвĐĩŅŅиŅŅа",
"account.mute_short": "ĐĐ°ĐŗĐģŅŅаваĐŊĐĩ",
"account.muted": "ĐĐ°ĐŗĐģŅŅĐĩĐŊĐž",
+ "account.mutual": "ĐСаиĐŧĐŊи",
"account.no_bio": "ĐŅĐŧа ĐŋŅĐĩĐ´ŅŅавĐĩĐŊ ĐžĐŋиŅ.",
"account.open_original_page": "ĐŅваŅŅĐŊĐĩ ĐŊа ĐŋŅŅвООйŅаСĐŊаŅа ŅŅŅаĐŊиŅа",
"account.posts": "ĐŅĐąĐģиĐēаŅии",
@@ -87,7 +89,6 @@
"announcement.announcement": "ĐĐŋОвĐĩŅŅŅваĐŊĐĩ",
"attachments_list.unprocessed": "(ĐŊĐĩОйŅайОŅĐĩĐŊĐž)",
"audio.hide": "ĐĄĐēŅиваĐŊĐĩ ĐŊа СвŅĐēа",
- "autosuggest_hashtag.per_week": "{count} ĐŊа ŅĐĩĐ´ĐŧиŅа",
"boost_modal.combo": "ĐĐžĐļĐĩŅĐĩ да ĐŊаŅиŅĐŊĐĩŅĐĩ {combo}, Са да ĐŋŅĐžĐŋŅŅĐŊĐĩŅĐĩ ŅОва ŅĐģĐĩдваŅĐ¸Ņ ĐŋŅŅ",
"bundle_column_error.copy_stacktrace": "ĐĐžĐŋиŅаĐŊĐĩ ĐŊа Đ´ĐžĐēĐģада Са ĐŗŅĐĩŅĐēаŅа",
"bundle_column_error.error.body": "ĐаŅвĐĩĐŊаŅа ŅŅŅаĐŊиŅа ĐŊĐĩ ĐŧĐžĐļĐĩ да ŅĐĩ иСОйŅаСи. ĐĸОва ĐŧĐžĐļĐĩ да Đĩ СаŅади ĐŗŅĐĩŅĐēа в ĐēОда ĐŊи иĐģи ĐŋŅОйĐģĐĩĐŧ ŅŅŅ ŅŅвĐŧĐĩŅŅиĐŧĐžŅŅŅа ĐŊа ĐąŅаŅСŅŅа.",
@@ -146,20 +147,20 @@
"compose_form.placeholder": "ĐаĐēвО ĐŧиŅĐģиŅĐĩ?",
"compose_form.poll.add_option": "ĐОйавŅĐŊĐĩ ĐŊа иСйОŅ",
"compose_form.poll.duration": "ĐŅĐĩĐŧĐĩŅŅаĐĩĐŊĐĩ ĐŊа аĐŊĐēĐĩŅаŅа",
+ "compose_form.poll.multiple": "ĐĐŊĐžĐļĐĩŅŅвĐĩĐŊ иСйОŅ",
"compose_form.poll.option_placeholder": "ĐĐˇĐąĐžŅ {number}",
- "compose_form.poll.remove_option": "ĐŅĐĩĐŧаŅ
ваĐŊĐĩ ĐŊа ŅОСи иСйОŅ",
+ "compose_form.poll.remove_option": "ĐŅĐĩĐŧаŅ
ваĐŊĐĩ ĐŊа ŅаСи вŅСĐŧĐžĐļĐŊĐžŅŅ",
+ "compose_form.poll.single": "ĐОдйĐĩŅĐĩŅĐĩ ĐŊĐĩŅĐž",
"compose_form.poll.switch_to_multiple": "ĐŅĐžĐŧŅĐŊа ĐŊа аĐŊĐēĐĩŅаŅа, Са да ŅĐĩ ĐŋОСвОĐģŅŅ ĐŧĐŊĐžĐļĐĩŅŅвО вŅСĐŧĐžĐļĐŊи иСйОŅа",
"compose_form.poll.switch_to_single": "ĐŅĐžĐŧŅĐŊа ĐŊа аĐŊĐēĐĩŅаŅа, Са да ŅĐĩ ĐŋОСвОĐģи ĐĩдиĐŊ вŅСĐŧĐžĐļĐĩĐŊ иСйОŅ",
- "compose_form.publish": "ĐŅĐąĐģиĐēŅваĐŊĐĩ",
+ "compose_form.poll.type": "ĐĄŅиĐģ",
+ "compose_form.publish": "ĐŅĐąĐģиĐēаŅиŅ",
"compose_form.publish_form": "ĐŅĐąĐģиĐēŅваĐŊĐĩ",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "ĐаĐŋаСваĐŊĐĩ ĐŊа ĐŋŅĐžĐŧĐĩĐŊиŅĐĩ",
- "compose_form.sensitive.hide": "{count, plural, one {ĐаŅĐēиŅаĐŊĐĩ ĐŊа ĐŧŅĐģŅиĐŧĐĩдиŅŅа ĐēаŅĐž Đ´ĐĩĐģиĐēаŅĐŊа} other {ĐаŅĐēиŅаĐŊĐĩ ĐŊа ĐŧŅĐģŅиĐŧĐĩдииŅĐĩ ĐēаŅĐž Đ´ĐĩĐģиĐēаŅĐŊи}}",
- "compose_form.sensitive.marked": "{count, plural, one {ĐŧŅĐģŅиĐŧĐĩĐ´Đ¸Ņ Đĩ ОСĐŊаŅĐĩĐŊа ĐēаŅĐž Đ´ĐĩĐģиĐēаŅĐŊа} other {ĐŧŅĐģŅиĐŧĐĩдии Ņа ОСĐŊаŅĐĩĐŊи ĐēаŅĐž Đ´ĐĩĐģиĐēаŅĐŊи}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {ĐŅĐģŅиĐŧĐĩдиŅŅа ĐŊĐĩ Đĩ ĐŧаŅĐēиŅаĐŊа ĐēаŅĐž Đ´ĐĩĐģиĐēаŅĐŊа} other {ĐŅĐģŅиĐŧĐĩдииŅĐĩ ĐŊĐĩ Ņа ĐŧаŅĐēиŅаĐŊи ĐēаŅĐž Đ´ĐĩĐģиĐēаŅĐŊи}}",
+ "compose_form.reply": "ĐŅĐŗĐžĐ˛ĐžŅ",
+ "compose_form.save_changes": "ĐĐąĐŊОвŅваĐŊĐĩ",
"compose_form.spoiler.marked": "ĐŅŅŅŅаĐŊŅваĐŊĐĩ ĐŊа ĐŋŅĐĩĐ´ŅĐŋŅĐĩĐļĐ´ĐĩĐŊиĐĩ Са ŅŅĐ´ŅŅĐļаĐŊиĐĩ",
"compose_form.spoiler.unmarked": "ĐОйавŅĐŊĐĩ ĐŊа ĐŋŅĐĩĐ´ŅĐŋŅĐĩĐļĐ´ĐĩĐŊиĐĩ Са ŅŅĐ´ŅŅĐļаĐŊиĐĩ",
- "compose_form.spoiler_placeholder": "ĐĸŅĐē ĐŊаĐŋиŅĐĩŅĐĩ ĐŋŅĐĩĐ´ŅĐŋŅĐĩĐļĐ´ĐĩĐŊиĐĩŅĐž Ņи",
+ "compose_form.spoiler_placeholder": "ĐŅĐĩĐ´ŅĐŋŅĐĩĐļĐ´ĐĩĐŊиĐĩ Са ŅŅĐ´ŅŅĐļаĐŊиĐĩ (ĐŋĐž иСйОŅ)",
"confirmation_modal.cancel": "ĐŅĐēаС",
"confirmations.block.block_and_report": "ĐĐģĐžĐēиŅаĐŊĐĩ и Đ´ĐžĐēĐģадваĐŊĐĩ",
"confirmations.block.confirm": "ĐĐģĐžĐēиŅаĐŊĐĩ",
@@ -406,7 +407,6 @@
"navigation_bar.direct": "ЧаŅŅĐŊи ŅĐŋĐžĐŧĐĩĐŊаваĐŊиŅ",
"navigation_bar.discover": "ĐŅĐēŅиваĐŊĐĩ",
"navigation_bar.domain_blocks": "ĐĐģĐžĐēиŅаĐŊи Đ´ĐžĐŧĐĩĐšĐŊи",
- "navigation_bar.edit_profile": "Đ ĐĩдаĐēŅиŅаĐŊĐĩ ĐŊа ĐŋŅĐžŅиĐģа",
"navigation_bar.explore": "ĐСŅĐģĐĩдваĐŊĐĩ",
"navigation_bar.favourites": "ĐŅйиĐŧи",
"navigation_bar.filters": "ĐĐ°ĐŗĐģŅŅĐĩĐŊи Đ´ŅĐŧи",
@@ -524,14 +524,14 @@
"poll_button.add_poll": "ĐĐŊĐēĐĩŅиŅаĐŊĐĩ",
"poll_button.remove_poll": "ĐŅĐĩĐŧаŅ
ваĐŊĐĩ ĐŊа аĐŊĐēĐĩŅа",
"privacy.change": "ĐŅĐžĐŧŅĐŊа ĐŊа ĐŋОвĐĩŅиŅĐĩĐģĐŊĐžŅŅŅа ĐŊа ĐŋŅĐąĐģиĐēаŅиŅ",
- "privacy.direct.long": "ĐидиĐŧĐž ŅаĐŧĐž Са ŅĐŋĐžĐŧĐĩĐŊаŅиŅĐĩ ĐŋĐžŅŅĐĩйиŅĐĩĐģи",
- "privacy.direct.short": "ХаĐŧĐž ŅĐŋĐžĐŧĐĩĐŊаŅиŅĐĩ Ņ
ĐžŅа",
- "privacy.private.long": "ĐидиĐŧĐž ŅаĐŧĐž Са ĐŋĐžŅĐģĐĩдОваŅĐĩĐģиŅĐĩ",
- "privacy.private.short": "ХаĐŧĐž ĐŋĐžŅĐģĐĩдОваŅĐĩĐģи",
- "privacy.public.long": "ĐидиĐŧĐž Са вŅиŅĐēи",
+ "privacy.direct.long": "ĐŅĐĩĐēи ŅĐŋĐžĐŧĐĩĐŊĐ°Ņ Đ˛ ĐŋŅĐąĐģиĐēаŅиŅŅа",
+ "privacy.direct.short": "ĐĐŋŅĐĩĐ´ĐĩĐģĐĩĐŊи Ņ
ĐžŅа",
+ "privacy.private.long": "ХаĐŧĐž ĐŋĐžŅĐģĐĩдОваŅĐĩĐģиŅĐĩ ви",
+ "privacy.private.short": "ĐĐžŅĐģĐĩдОваŅĐĩĐģи",
+ "privacy.public.long": "ĐŅĐĩĐēи вŅв и иСвŅĐŊ Mastodon",
"privacy.public.short": "ĐŅĐąĐģиŅĐŊĐž",
- "privacy.unlisted.long": "ĐидиĐŧĐž Са вŅиŅĐēи, ĐŊĐž ĐŊĐĩ ŅŅĐĩС вŅСĐŧĐžĐļĐŊĐžŅŅŅа Са ĐžŅĐēŅиваĐŊĐĩ",
- "privacy.unlisted.short": "ĐĐĩŅĐŋиŅŅŅĐŊĐž",
+ "privacy.unlisted.long": "ĐĐž-ĐŧаĐģĐēĐž аĐģĐŗĐžŅиŅĐŧиŅĐŊи ŅаĐŊŅаŅи",
+ "privacy.unlisted.short": "ĐĸиŅ
а ĐŋŅĐąĐģиĐēа",
"privacy_policy.last_updated": "ĐĐžŅĐģĐĩĐ´ĐŊĐž ĐžŅŅвŅĐĩĐŧĐĩĐŊŅваĐŊĐĩ ĐŊа {date}",
"privacy_policy.title": "ĐĐžĐģиŅиĐēа Са ĐŋОвĐĩŅиŅĐĩĐģĐŊĐžŅŅ",
"recommended": "ĐŅĐĩĐŋĐžŅŅŅаĐŊĐž",
@@ -549,7 +549,9 @@
"relative_time.minutes": "{number}Đŧ.",
"relative_time.seconds": "{number}Ņ.",
"relative_time.today": "Đ´ĐŊĐĩŅ",
+ "reply_indicator.attachments": "{count, plural, one {# ĐŋŅиĐēаваĐŊĐĩ} other {# ĐŋŅиĐēаŅваĐŊиŅ}}",
"reply_indicator.cancel": "ĐŅĐēаС",
+ "reply_indicator.poll": "ĐĐŊĐēĐĩŅа",
"report.block": "ĐĐģĐžĐēиŅаĐŊĐĩ",
"report.block_explanation": "ĐŅĐŧа да иĐŧ виĐļдаŅĐĩ ĐŋŅĐąĐģиĐēаŅииŅĐĩ. ĐĸĐĩ ĐŊŅĐŧа да ĐŧĐžĐŗĐ°Ņ Đ´Đ° виĐļĐ´Đ°Ņ ĐŋŅĐąĐģиĐēаŅииŅĐĩ ви иĐģи да ви ĐŋĐžŅĐģĐĩдваŅ. ĐĸĐĩ ŅĐĩ ĐŧĐžĐŗĐ°Ņ Đ´Đ° ĐēаСваŅ, ŅĐĩ Ņа йиĐģи ĐąĐģĐžĐēиŅаĐŊи.",
"report.categories.legal": "ĐŅавĐŊи вŅĐŋŅĐžŅи",
@@ -713,10 +715,8 @@
"upload_error.poll": "ĐаŅваĐŊĐĩŅĐž ĐŊа ŅаКĐģОвĐĩ ĐŊĐĩ Đĩ ĐŋОСвОĐģĐĩĐŊĐž Ņ Đ°ĐŊĐēĐĩŅи.",
"upload_form.audio_description": "ĐĐŋиŅĐĩŅĐĩ Са Ņ
ĐžŅа, ĐēОиŅĐž Ņа ĐŗĐģŅŅ
и иĐģи ŅŅŅĐ´ĐŊĐž ŅŅваŅ",
"upload_form.description": "ĐĐŋиŅĐĩŅĐĩ Са Ņ
ĐžŅа, ĐēОиŅĐž Ņа ŅĐģĐĩĐŋи иĐģи иĐŧĐ°Ņ ŅĐģайО СŅĐĩĐŊиĐĩ",
- "upload_form.description_missing": "ĐŅĐŧа дОйавĐĩĐŊ ĐžĐŋиŅ",
"upload_form.edit": "Đ ĐĩдаĐēŅиŅаĐŊĐĩ",
"upload_form.thumbnail": "ĐŅĐžĐŧŅĐŊа ĐŊа ĐŧиĐŊиОйŅаСа",
- "upload_form.undo": "ĐСŅŅиваĐŊĐĩ",
"upload_form.video_description": "ĐĐŋиŅĐĩŅĐĩ Са Ņ
ĐžŅа, ĐēОиŅĐž Ņа ĐŗĐģŅŅ
и иĐģи ŅŅŅĐ´ĐŊĐž ŅŅваŅ, ŅĐģĐĩĐŋи иĐģи иĐŧĐ°Ņ ŅĐģайО СŅĐĩĐŊиĐĩ",
"upload_modal.analyzing_picture": "ĐĄĐŊиĐŧĐēОв аĐŊаĐģиСâĻ",
"upload_modal.apply": "ĐŅиĐģĐ°ĐŗĐ°ĐŊĐĩ",
diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json
index fe3d2a627..508caa2f4 100644
--- a/app/javascript/mastodon/locales/bn.json
+++ b/app/javascript/mastodon/locales/bn.json
@@ -85,7 +85,6 @@
"announcement.announcement": "āĻā§āώāĻŖāĻž",
"attachments_list.unprocessed": "(āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻž āĻāϰāĻž āϝāĻžāϝāĻŧāύāĻŋ)",
"audio.hide": "āĻ
āĻĄāĻŋāĻ āϞā§āĻāĻžāύ",
- "autosuggest_hashtag.per_week": "āĻĒā§āϰāϤāĻŋ āϏāĻĒā§āϤāĻžāĻšā§ {count}",
"boost_modal.combo": "āĻĒāϰā§āϰāĻŦāĻžāϰ āĻāĻĒāύāĻŋ {combo} āĻāĻŋāĻĒāϞ⧠āĻāĻāĻŋ āĻāϰ āĻāϏāĻŦā§ āύāĻž",
"bundle_column_error.copy_stacktrace": "āĻāϰāϰ āϰāĻŋāĻĒā§āϰā§āĻ āĻāĻĒāĻŋ āĻāϰā§āύ",
"bundle_column_error.error.body": "āĻ
āύā§āϰā§āϧ āĻāϰāĻž āĻĒā§āώā§āĻ āĻžāĻāĻŋ āϰā§āύā§āĻĄāĻžāϰ āĻāϰāĻž āϝāĻžāϝāĻŧāύāĻŋāĨ¤ āĻāĻāĻŋ āĻāĻŽāĻžāĻĻā§āϰ āĻā§āĻĄā§ āĻāĻāĻāĻŋ āĻŦāĻžāĻ āĻŦāĻž āĻŦā§āϰāĻžāĻāĻāĻžāϰ āϏāĻžāĻŽāĻā§āĻāϏā§āϝā§āϰ āϏāĻŽāϏā§āϝāĻžāϰ āĻāĻžāϰāĻŖā§ āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤",
@@ -142,22 +141,12 @@
"compose_form.lock_disclaimer": "āĻāĻĒāύāĻžāϰ āύāĻŋāĻŦāύā§āϧāύ⧠āϤāĻžāϞāĻž āĻĻā§āĻā§āĻž āύā§āĻ, āϝ⧠āĻā§āĻ āĻāĻĒāύāĻžāĻā§ āĻ
āύā§āϏāϰāĻŖ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŦā§ āĻāĻŦāĻ āĻ
āύā§āĻļāĻžāϰāĻāĻĻā§āϰ āĻāύā§āϝ āϞā§āĻāĻž āĻĻā§āĻāϤ⧠āĻĒāĻžāϰāĻŦā§āĨ¤",
"compose_form.lock_disclaimer.lock": "āϤāĻžāϞāĻž āĻĻā§āĻā§āĻž",
"compose_form.placeholder": "āĻāĻĒāύāĻŋ āĻāĻŋ āĻāĻžāĻŦāĻā§āύ ?",
- "compose_form.poll.add_option": "āĻāϰā§āĻāĻāĻŋ āĻŦāĻŋāĻāϞā§āĻĒ āϝā§āĻ āĻāϰā§āύ",
"compose_form.poll.duration": "āĻā§āĻāĻā§āϰāĻšāύā§āϰ āϏāĻŽā§",
- "compose_form.poll.option_placeholder": "āĻŦāĻŋāĻāϞā§āĻĒ {number}",
- "compose_form.poll.remove_option": "āĻāĻ āĻŦāĻŋāĻāϞā§āĻĒāĻāĻŋ āĻŽā§āĻā§ āĻĢā§āϞā§āύ",
"compose_form.poll.switch_to_multiple": "āĻāĻāĻžāϧāĻŋāĻ āĻĒāĻāύā§āĻĻ āĻ
āύā§āĻŽāϤāĻŋ āĻĻā§āĻā§āĻžāϰ āĻāύā§āϝ āĻĒā§āϞ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰā§āύ",
"compose_form.poll.switch_to_single": "āĻāĻāĻāĻŋ āĻāĻāĻ āĻĒāĻāύā§āĻĻā§āϰ āĻ
āύā§āĻŽāϤāĻŋ āĻĻā§āĻā§āĻžāϰ āĻāύā§āϝ āĻĒā§āϞ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰā§āύ",
- "compose_form.publish": "āĻĒā§āϰāĻāĻžāĻļ āĻāϰā§āύ",
"compose_form.publish_form": "āĻĒā§āϰāĻāĻžāĻļ āĻāϰā§āύ",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻā§āϞ⧠āĻĒā§āϰāĻāĻžāĻļ āĻāϰā§āύ",
- "compose_form.sensitive.hide": "āĻāĻ āĻāĻŦāĻŋ āĻŦāĻž āĻāĻŋāĻĄāĻŋāĻāĻāĻŋ āϏāĻāĻŦā§āĻĻāύāĻļā§āϞ āĻšāĻŋāϏā§āĻŦā§ āĻāĻŋāĻšā§āύāĻŋāϤ āĻāϰāϤā§",
- "compose_form.sensitive.marked": "āĻāĻ āĻāĻŦāĻŋ āĻŦāĻž āĻāĻŋāĻĄāĻŋāĻāĻāĻŋ āϏāĻāĻŦā§āĻĻāύāĻļā§āϞ āĻšāĻŋāϏā§āĻŦā§ āĻāĻŋāĻšā§āύāĻŋāϤ āĻāϰāĻž āĻšā§ā§āĻā§",
- "compose_form.sensitive.unmarked": "āĻāĻ āĻāĻŦāĻŋ āĻŦāĻž āĻāĻŋāĻĄāĻŋāĻāĻāĻŋ āϏāĻāĻŦā§āĻĻāύāĻļā§āϞ āĻšāĻŋāϏā§āĻŦā§ āĻāĻŋāĻšā§āύāĻŋāϤ āĻāϰāĻž āĻšā§āύāĻŋ",
"compose_form.spoiler.marked": "āϏāϤāϰā§āĻāϤāĻžāϰ āĻĒāĻŋāĻāύ⧠āϞā§āĻāĻžāύāĻāĻŋ āϞā§āĻāĻžāύ⧠āĻāĻā§",
"compose_form.spoiler.unmarked": "āϞā§āĻāĻžāĻāĻŋ āϞā§āĻāĻžāύ⧠āύā§āĻ",
- "compose_form.spoiler_placeholder": "āĻāĻĒāύāĻžāϰ āϞā§āĻāĻž āĻĻā§āĻāĻžāϰ āϏāĻžāĻŦāϧāĻžāύāĻŦāĻžāĻŖā§ āϞāĻŋāĻā§āύ",
"confirmation_modal.cancel": "āĻŦāĻžāϤāĻŋāϞ āĻāϰā§āύ",
"confirmations.block.block_and_report": "āĻŦā§āϞāĻ āĻāϰā§āύ āĻāĻŦāĻ āϰāĻŋāĻĒā§āϰā§āĻ āĻāϰā§āύ",
"confirmations.block.confirm": "āĻŦā§āϞāĻ āĻāϰā§āύ",
@@ -324,7 +313,6 @@
"navigation_bar.compose": "āύāϤā§āύ āĻā§āĻ āϞāĻŋāĻā§āύ",
"navigation_bar.discover": "āĻā§āϰ⧠āĻĻā§āĻā§āύ",
"navigation_bar.domain_blocks": "āϞā§āĻāĻžāύ⧠āĻĄā§āĻŽā§āύāĻā§āϞāĻŋ",
- "navigation_bar.edit_profile": "āύāĻŋāĻā§āϰ āĻĒāĻžāϤāĻž āϏāĻŽā§āĻĒāĻžāĻĻāύāĻž āĻāϰāϤā§",
"navigation_bar.explore": "āĻĒāϰāĻŋāĻŦā§āϰāĻžāĻāύ",
"navigation_bar.favourites": "āĻĒāĻāύā§āĻĻāϏāĻŽā§āĻš",
"navigation_bar.filters": "āĻŦāύā§āϧ āĻāϰāĻž āĻļāĻŦā§āĻĻ",
@@ -395,12 +383,7 @@
"poll_button.add_poll": "āĻāĻāĻāĻž āύāĻŋāϰā§āĻŦāĻžāĻāύ āϝā§āĻ āĻāϰāϤā§",
"poll_button.remove_poll": "āύāĻŋāϰā§āĻŦāĻžāĻāύ āĻŦāĻžāĻĻ āĻĻāĻŋāϤā§",
"privacy.change": "āϞā§āĻāĻžāϰ āĻā§āĻĒāύā§ā§āϤāĻž āĻ
āĻŦāϏā§āĻĨāĻž āĻ āĻŋāĻ āĻāϰāϤā§",
- "privacy.direct.long": "āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻāϞā§āϞā§āĻāĻŋāϤ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āĻāĻžāĻā§ āϞāĻŋāĻāϤā§",
- "privacy.direct.short": "Direct",
- "privacy.private.long": "āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻāĻĒāύāĻžāϰ āĻ
āύā§āϏāϰāĻŖāĻāĻžāϰā§āĻĻā§āϰ āϞāĻŋāĻāϤā§",
- "privacy.private.short": "Followers-only",
"privacy.public.short": "āϏāϰā§āĻŦāĻāύā§āύ āĻĒā§āϰāĻāĻžāĻļā§āϝ",
- "privacy.unlisted.short": "āĻĒā§āϰāĻāĻžāĻļā§āϝ āύā§",
"refresh": "āϏāϤā§āĻ āĻāϰāĻž",
"regeneration_indicator.label": "āĻāϏāĻā§âĻ",
"regeneration_indicator.sublabel": "āĻāĻĒāύāĻžāϰ āĻŦāĻžā§āĻŋāϰ-āϏāĻŽā§āϰā§āĻāĻž āĻĒā§āϰāϏā§āϤā§āϤ āĻāϰāĻž āĻšāĻā§āĻā§!",
@@ -506,7 +489,6 @@
"upload_form.description": "āϝāĻžāϰāĻž āĻĻā§āĻāϤ⧠āĻĒāĻžā§āύāĻž āϤāĻžāĻĻā§āϰ āĻāύā§āϝ āĻāĻāĻž āĻŦāϰā§āĻŖāύāĻž āĻāϰāϤā§",
"upload_form.edit": "āϏāĻŽā§āĻĒāĻžāĻĻāύ",
"upload_form.thumbnail": "āĻĨāĻžāĻŽā§āĻŦāύā§āϞ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰā§āύ",
- "upload_form.undo": "āĻŽā§āĻā§ āĻĢā§āϞāϤā§",
"upload_form.video_description": "āĻļā§āϰāĻŦāĻŖāĻļāĻā§āϤāĻŋ āĻšā§āϰāĻžāϏ āĻŦāĻž āĻāĻžāĻā§āώā§āώ āĻĒā§āϰāϤāĻŋāĻŦāύā§āϧ⧠āĻŦā§āϝāĻā§āϤāĻŋāĻĻā§āϰ āĻāύā§āϝ āĻŦāϰā§āĻŖāύāĻž āĻāϰā§āύ",
"upload_modal.analyzing_picture": "āĻāĻŋāϤā§āϰ āĻŦāĻŋāĻļā§āϞā§āώāĻŖ āĻāϰāĻž āĻšāĻā§āĻā§âĻ",
"upload_modal.apply": "āĻĒā§āϰā§ā§āĻ āĻāϰā§āύ",
diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json
index bea8b27b7..5e83ab4e6 100644
--- a/app/javascript/mastodon/locales/br.json
+++ b/app/javascript/mastodon/locales/br.json
@@ -1,5 +1,5 @@
{
- "about.blocks": "ServijerioÚ habaskaet",
+ "about.blocks": "ServijerioÚ evezhiet",
"about.contact": "Darempred :",
"about.disclaimer": "Mastodon zo ur meziant frank, open-source hag ur merk marilhet eus Mastodon gGmbH.",
"about.domain_blocks.no_reason_available": "Abeg dihegerz",
@@ -21,6 +21,8 @@
"account.blocked": "Stanket",
"account.browse_more_on_origin_server": "Furchal pelloc'h war ar profil orin",
"account.cancel_follow_request": "NullaÃą ar reked heuliaÃą",
+ "account.copy": "EilaÃą al liamm war-zu ho profil",
+ "account.direct": "MenegiÃą @{name} ent-prevez",
"account.disable_notifications": "Paouez d'am c'hemenn pa vez embannet traoÚ gant @{name}",
"account.domain_blocked": "Domani stanket",
"account.edit_profile": "KemmaÃą ar profil",
@@ -28,8 +30,9 @@
"account.endorse": "Lakaat war-wel war ar profil",
"account.featured_tags.last_status_at": "Toud diwezhaÃą : {date}",
"account.featured_tags.last_status_never": "Toud ebet",
- "account.featured_tags.title": "PenngerioÚ-klik {name}",
+ "account.featured_tags.title": "HashtagoÚ pennaÃą {name}",
"account.follow": "HeuliaÃą",
+ "account.follow_back": "HeuliaÃą d'ho tro",
"account.followers": "Tud koumanantet",
"account.followers.empty": "Den na heul an implijer¡ez-maÃą c'hoazh.",
"account.followers_counter": "{count, plural, other{{counter} Heulier¡ez}}",
@@ -38,6 +41,7 @@
"account.follows.empty": "An implijer¡ez-maÃą na heul den ebet.",
"account.go_to_profile": "Gwelet ar profil",
"account.hide_reblogs": "Kuzh skignadennoÚ gant @{name}",
+ "account.in_memoriam": "E koun.",
"account.joined_short": "AmaÃą abaoe",
"account.languages": "CheÃąch ar yezhoÚ koumanantet",
"account.link_verified_on": "Gwiriet eo bet perc'hennidigezh al liamm d'an deiziad-maÃą : {date}",
@@ -49,11 +53,13 @@
"account.mute_notifications_short": "Kuzhat ar c'hemennoÚ",
"account.mute_short": "Kuzhat",
"account.muted": "Kuzhet",
+ "account.no_bio": "Deskrivadur ebet da gaout.",
"account.open_original_page": "DigeriÃą ar bajenn orin",
- "account.posts": "ToudoÚ",
- "account.posts_with_replies": "ToudoÚ ha respontoÚ",
+ "account.posts": "EmbannadurioÚ",
+ "account.posts_with_replies": "EmbannadurioÚ ha respontoÚ",
"account.report": "DisklÃĒriaÃą @{name}",
"account.requested": "O c'hortoz an asant. Klikit evit nullaÃą ar goulenn heuliaÃą",
+ "account.requested_follow": "Gant {name} eo bet goulennet ho heuliaÃą",
"account.share": "SkignaÃą profil @{name}",
"account.show_reblogs": "Diskouez skignadennoÚ @{name}",
"account.statuses_counter": "{count, plural, one {{counter} Toud} two {{counter} Doud} other {{counter} a DoudoÚ}}",
@@ -63,6 +69,7 @@
"account.unendorse": "Paouez da lakaat war-wel war ar profil",
"account.unfollow": "DiheuliaÃą",
"account.unmute": "Diguzhat @{name}",
+ "account.unmute_notifications_short": "Diguzhat ar c'hemennoÚ",
"account.unmute_short": "Diguzhat",
"account_note.placeholder": "Klikit evit ouzhpennaÃą un notenn",
"admin.dashboard.daily_retention": "Feur azdalc'h an implijerien¡ezed dre zeiz goude bezaÃą lakaet o anv",
@@ -70,6 +77,9 @@
"admin.dashboard.retention.average": "Keidenn",
"admin.dashboard.retention.cohort": "Miz an enrolladur",
"admin.dashboard.retention.cohort_size": "Implijerien.erezed nevez",
+ "admin.impact_report.instance_accounts": "ProfiloÚ kontoÚ a vefe dilamet",
+ "admin.impact_report.instance_followers": "Heulierien a gollfe hon implijerien",
+ "admin.impact_report.instance_follows": "Heulierien a gollfe o implijerien",
"alert.rate_limited.message": "Klaskit en-dro a-benn {retry_time, time, medium}.",
"alert.rate_limited.title": "Feur bevennet",
"alert.unexpected.message": "Ur fazi dic'hortozet zo degouezhet.",
@@ -77,7 +87,6 @@
"announcement.announcement": "Kemennad",
"attachments_list.unprocessed": "(ket meret)",
"audio.hide": "Kuzhat ar c'hleved",
- "autosuggest_hashtag.per_week": "{count} bep sizhun",
"boost_modal.combo": "Ar wezh kentaÃą e c'halliot gwaskaÃą war {combo} evit tremen hebiou",
"bundle_column_error.copy_stacktrace": "EilaÃą an danevell fazi",
"bundle_column_error.error.body": "N'haller ket skrammaÃą ar bajenn goulennet. Gallout a ra bezaÃą abalamour d'ur beug er c'hod pe d'ur gudenn keverlec'hded gant ar merdeer.",
@@ -100,8 +109,10 @@
"column.blocks": "Implijer¡ezed¡ien berzet",
"column.bookmarks": "SinedoÚ",
"column.community": "Red-amzer lec'hel",
+ "column.direct": "MenegoÚ prevez",
"column.directory": "Mont a-dreuz ar profiloÚ",
"column.domain_blocks": "Domani berzet",
+ "column.favourites": "MuiaÃą-karet",
"column.follow_requests": "RekedoÚ heuliaÃą",
"column.home": "Degemer",
"column.lists": "ListennoÚ",
@@ -122,28 +133,21 @@
"community.column_settings.remote_only": "Nemet a-bell",
"compose.language.change": "CheÃąch yezh",
"compose.language.search": "Klask yezhoÚ...",
+ "compose.published.body": "Embannet.",
+ "compose.published.open": "DigeriÃą",
+ "compose.saved.body": "Enrollet.",
"compose_form.direct_message_warning_learn_more": "Gouzout hiroc'h",
"compose_form.encryption_warning": "ToudoÚ war Mastodon na vezont ket sifret penn-da-benn. Na rannit ket titouroÚ kizidik dre Mastodon.",
"compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.",
"compose_form.lock_disclaimer": "N'eo ket {locked} ho kont. An holl a c'hal ho heuliaÃą evit gwelet ho toudoÚ prevez.",
"compose_form.lock_disclaimer.lock": "prennet",
"compose_form.placeholder": "Petra emaoc'h o soÃąjal e-barzh ?",
- "compose_form.poll.add_option": "OuzhpenniÃą un dibab",
"compose_form.poll.duration": "Pad ar sontadeg",
- "compose_form.poll.option_placeholder": "Dibab {number}",
- "compose_form.poll.remove_option": "Lemel an dibab-maÃą",
"compose_form.poll.switch_to_multiple": "KemmaÃą ar sontadeg evit aotren meur a zibab",
"compose_form.poll.switch_to_single": "KemmaÃą ar sontadeg evit aotren un dibab hepken",
- "compose_form.publish": "Embann",
"compose_form.publish_form": "Embann",
- "compose_form.publish_loud": "{publish} !",
- "compose_form.save_changes": "EnrollaÃą ar cheÃąchamantoÚ",
- "compose_form.sensitive.hide": "MerkaÃą ar media evel kizidik",
- "compose_form.sensitive.marked": "Merket eo ar media evel kizidik",
- "compose_form.sensitive.unmarked": "N'eo ket merket ar media evel kizidik",
"compose_form.spoiler.marked": "Kuzhet eo an destenn a-dreÃąv ur c'hemenn",
"compose_form.spoiler.unmarked": "N'eo ket kuzhet an destenn",
- "compose_form.spoiler_placeholder": "Skrivit ho kemenn diwall amaÃą",
"confirmation_modal.cancel": "NullaÃą",
"confirmations.block.block_and_report": "BerzaÃą ha DisklÃĒriaÃą",
"confirmations.block.confirm": "StankaÃą",
@@ -158,6 +162,7 @@
"confirmations.discard_edit_media.message": "Bez ez eus kemmoÚ n'int ket enrollet e deskrivadur ar media pe ar rakwel, nullaÃą anezho evelato?",
"confirmations.domain_block.confirm": "BerzaÃą an domani a-bezh",
"confirmations.domain_block.message": "Ha sur oc'h e fell deoc'h berzaÃą an {domain} a-bezh? PeurvuiaÃą eo trawalc'h berzaÃą pe mudaÃą un nebeud implijer¡ezed¡ien. Ne welot danvez ebet o tont eus an domani-maÃą. Dilamet e vo ar c'houmanantoÚ war an domani-maÃą.",
+ "confirmations.edit.confirm": "KemmaÃą",
"confirmations.logout.confirm": "DigevreaÃą",
"confirmations.logout.message": "Ha sur oc'h e fell deoc'h digevreaÃą ?",
"confirmations.mute.confirm": "Kuzhat",
@@ -172,7 +177,9 @@
"conversation.mark_as_read": "MerkaÃą evel lennet",
"conversation.open": "Gwelout ar gaozeadenn",
"conversation.with": "Gant {names}",
+ "copy_icon_button.copied": "Eilet er golver",
"copypaste.copied": "Eilet",
+ "copypaste.copy_to_clipboard": "EilaÃą er golver",
"directory.federated": "Eus ar fedibed anavezet",
"directory.local": "Eus {domain} hepken",
"directory.new_arrivals": "Degouezhet a-nevez",
@@ -209,7 +216,8 @@
"empty_column.domain_blocks": "N'eus domani kuzh ebet c'hoazh.",
"empty_column.explore_statuses": "N'eus tuadur ebet evit c'hoazh. Distroit diwezhatoc'h !",
"empty_column.follow_requests": "N'ho peus reked heuliaÃą ebet c'hoazh. Pa vo resevet unan e teuio war wel amaÃą.",
- "empty_column.hashtag": "N'eus netra er ger-klik-maÃą c'hoazh.",
+ "empty_column.followed_tags": "N'emaoc'h oc'h heuliaÃą hashtag ebet evit poent. Pa vioc'h e vo d'o gwelet amaÃą.",
+ "empty_column.hashtag": "N'eus netra en hashtag-maÃą c'hoazh.",
"empty_column.home": "Goullo eo ho red-amzer degemer! Kit da weladenniÃą {public} pe implijit ar c'hlask evit kregiÃą ganti ha kejaÃą gant implijer¡ien¡ezed all.",
"empty_column.list": "Goullo eo al listenn-maÃą evit c'hoazh. Pa vo embannet toudoÚ nevez gant e izili e teuint war wel amaÃą.",
"empty_column.lists": "N'ho peus roll ebet c'hoazh. Pa vo krouet unan ganeoc'h e vo diskouezet amaÃą.",
@@ -223,7 +231,11 @@
"errors.unexpected_crash.copy_stacktrace": "EilaÃą ar roudoÚ diveugaÃą er golver",
"errors.unexpected_crash.report_issue": "DanevellaÃą ur fazi",
"explore.search_results": "Disoc'hoÚ an enklask",
+ "explore.suggested_follows": "Tud",
"explore.title": "Furchal",
+ "explore.trending_links": "Keleier",
+ "explore.trending_statuses": "EmbannadurioÚ",
+ "explore.trending_tags": "HashtagoÚ",
"filter_modal.added.context_mismatch_title": "Kenarroud digenglotus !",
"filter_modal.added.expired_title": "Sil deuet d'e dermen !",
"filter_modal.added.review_and_configure_title": "ArventennoÚ ar sil",
@@ -237,9 +249,13 @@
"filter_modal.select_filter.subtitle": "Implijout ur rummad a zo anezhaÃą pe krouiÃą unan nevez",
"filter_modal.select_filter.title": "SilaÃą an toud-maÃą",
"filter_modal.title.status": "SilaÃą un toud",
+ "firehose.all": "Pep tra",
+ "firehose.local": "Ar servijer-maÃą",
+ "firehose.remote": "ServijerioÚ all",
"follow_request.authorize": "Aotren",
"follow_request.reject": "Nac'haÃą",
"follow_requests.unlocked_explanation": "Daoust ma n'eo ket ho kont prennet, skipailh {domain} a soÃąj e fellfe deoc'h gwiriekaat pedadennoÚ heuliaÃą deus ar c'hontoÚ-se diwar-zorn.",
+ "followed_tags": "HashtagoÚ o heuliaÃą",
"footer.about": "Diwar-benn",
"footer.directory": "Kavlec'h ar profiloÚ",
"footer.get_app": "PellgargaÃą an arload",
@@ -247,29 +263,40 @@
"footer.keyboard_shortcuts": "BerradennoÚ klavier",
"footer.privacy_policy": "ReolennoÚ prevezded",
"footer.source_code": "Gwelet kod mammenn",
+ "footer.status": "Statud",
"generic.saved": "Enrollet",
"getting_started.heading": "Loc'haÃą",
- "hashtag.column_header.tag_mode.all": "ha {additional}",
+ "hashtag.column_header.tag_mode.all": "ha(g) {additional}",
"hashtag.column_header.tag_mode.any": "pe {additional}",
"hashtag.column_header.tag_mode.none": "hep {additional}",
"hashtag.column_settings.select.no_options_message": "N'eus bet kavet ali ebet",
- "hashtag.column_settings.select.placeholder": "OuzhpennaÃą gerioÚ-klikâĻ",
- "hashtag.column_settings.tag_mode.all": "An holl elfennoÚ-maÃą",
+ "hashtag.column_settings.select.placeholder": "OuzhpennaÃą hashtagoÚâĻ",
+ "hashtag.column_settings.tag_mode.all": "An holl anezho",
"hashtag.column_settings.tag_mode.any": "Unan e mesk anezho",
"hashtag.column_settings.tag_mode.none": "Hini ebet anezho",
"hashtag.column_settings.tag_toggle": "Endelc'her gerioÚ-alc'hwez ouzhpenn evit ar bannad-maÃą",
+ "hashtag.counter_by_uses": "{count, plural, one {{counter} embannadur} other {{counter} embannadur}}",
+ "hashtag.counter_by_uses_today": "{count, plural, one {{counter} embannadur} other {{counter} embannadur}} hiziv",
"hashtag.follow": "HeuliaÃą ar ger-klik",
- "hashtag.unfollow": "DiheuliaÃą ar ger-klik",
+ "hashtag.unfollow": "Paouez heuliaÃą an hashtag",
+ "hashtags.and_other": "âĻ{count, plural, one {hag # all} other {ha # all}}",
+ "home.actions.go_to_explore": "Gwelet petra zo diouzh ar c'hiz",
+ "home.actions.go_to_suggestions": "Kavout tud da heuliaÃą",
"home.column_settings.basic": "Diazez",
"home.column_settings.show_reblogs": "Diskouez ar skignadennoÚ",
"home.column_settings.show_replies": "Diskouez ar respontoÚ",
+ "home.explore_prompt.title": "HomaÃą eo ho pajenn degemer e-barzh Mastodon.",
"home.hide_announcements": "Kuzhat ar c'hemennoÚ",
+ "home.pending_critical_update.body": "Hizivait ho servijer Mastodon kerkent ha ma c'hallit mar plij!",
+ "home.pending_critical_update.link": "Gwelet an hizivadennoÚ",
"home.show_announcements": "Diskouez ar c'hemennoÚ",
"interaction_modal.description.follow": "Gant ur gont Mastodon e c'hellit heuliaÃą {name} evit resev an toudoÚ a embann war ho red degemer.",
"interaction_modal.description.reblog": "Gant ur gont Mastodon e c'hellit skignaÃą an toud-maÃą evit rannaÃą anezhaÃą gant ho heulierien¡ezed.",
"interaction_modal.description.reply": "Gant ur gont Mastodon e c'hellit respont d'an toud-maÃą.",
+ "interaction_modal.no_account_yet": "N'eo ket war vMastodon?",
"interaction_modal.on_another_server": "War ur servijer all",
"interaction_modal.on_this_server": "War ar servijer-maÃą",
+ "interaction_modal.title.favourite": "OuzhpennaÃą embannadur {name} d'ar re vuiaÃą-karet",
"interaction_modal.title.follow": "HeuliaÃą {name}",
"interaction_modal.title.reblog": "SkignaÃą toud {name}",
"interaction_modal.title.reply": "Respont da doud {name}",
@@ -285,6 +312,8 @@
"keyboard_shortcuts.direct": "to open direct messages column",
"keyboard_shortcuts.down": "DiskennaÃą er roll",
"keyboard_shortcuts.enter": "DigeriÃą an toud",
+ "keyboard_shortcuts.favourite": "OuzhpennaÃą an embannadur d'ar re vuiaÃą-karet",
+ "keyboard_shortcuts.favourites": "DigeriÃą roll an embannadurioÚ muiaÃą-karet",
"keyboard_shortcuts.federated": "DigeriÃą ar red-amzer kevredet",
"keyboard_shortcuts.heading": "BerradennoÚ klavier",
"keyboard_shortcuts.home": "DigeriÃą ho red-amzer degemer",
@@ -314,6 +343,8 @@
"lightbox.next": "Da-heul",
"lightbox.previous": "A-raok",
"limited_account_hint.action": "Diskouez an aelad memes tra",
+ "limited_account_hint.title": "Kuzhet eo bet ar profil-maÃą gant an evezhierien eus {domain}.",
+ "link_preview.author": "Gant {name}",
"lists.account.add": "OuzhpennaÃą d'al listenn",
"lists.account.remove": "Lemel kuit eus al listenn",
"lists.delete": "Dilemel al listenn",
@@ -328,6 +359,7 @@
"lists.search": "Klask e-touez tud heuliet ganeoc'h",
"lists.subheading": "Ho listennoÚ",
"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}}",
"mute_modal.duration": "Padelezh",
"mute_modal.hide_notifications": "Kuzhat kemenadennoÚ eus an implijer-se ?",
@@ -337,12 +369,14 @@
"navigation_bar.bookmarks": "SinedoÚ",
"navigation_bar.community_timeline": "Red-amzer lec'hel",
"navigation_bar.compose": "SkrivaÃą un toud nevez",
+ "navigation_bar.direct": "MenegoÚ prevez",
"navigation_bar.discover": "DizoleiÃą",
"navigation_bar.domain_blocks": "DomanioÚ kuzhet",
- "navigation_bar.edit_profile": "KemmaÃą ar profil",
"navigation_bar.explore": "Furchal",
+ "navigation_bar.favourites": "MuiaÃą-karet",
"navigation_bar.filters": "GerioÚ kuzhet",
"navigation_bar.follow_requests": "PedadoÚ heuliaÃą",
+ "navigation_bar.followed_tags": "HashtagoÚ o heuliaÃą",
"navigation_bar.follows_and_followers": "HeuliadennoÚ ha heulier¡ezed¡ien",
"navigation_bar.lists": "ListennoÚ",
"navigation_bar.logout": "DigennaskaÃą",
@@ -369,6 +403,7 @@
"notifications.column_settings.admin.report": "DisklÃĒriadurioÚ nevez :",
"notifications.column_settings.admin.sign_up": "EnskrivadurioÚ nevez :",
"notifications.column_settings.alert": "KemennoÚ war ar burev",
+ "notifications.column_settings.favourite": "MuiaÃą-karet:",
"notifications.column_settings.filter_bar.advanced": "SkrammaÃą an-holl rummadoÚ",
"notifications.column_settings.filter_bar.category": "Barrenn siloÚ prim",
"notifications.column_settings.filter_bar.show_bar": "Diskouezh barrenn siloÚ",
@@ -386,6 +421,7 @@
"notifications.column_settings.update": "KemmoÚ :",
"notifications.filter.all": "Pep tra",
"notifications.filter.boosts": "SkignadennoÚ",
+ "notifications.filter.favourites": "MuiaÃą-karet",
"notifications.filter.follows": "HeuliaÃą",
"notifications.filter.mentions": "MenegoÚ",
"notifications.filter.polls": "Disoc'hoÚ ar sontadegoÚ",
@@ -399,22 +435,38 @@
"notifications_permission_banner.enable": "Lezel kemennoÚ war ar burev",
"notifications_permission_banner.how_to_control": "Evit reseviÃą kemennoÚ pa ne vez ket digoret Mastodon, lezelit kemennoÚ war ar burev. Gallout a rit kontrollaÃą peseurt eskemmoÚ a c'henel kemennoÚ war ar burev gant ar {icon} nozelenn a-us kentre ma'z int lezelet.",
"notifications_permission_banner.title": "Na vankit netra morse",
+ "onboarding.action.back": "DistreiÃą",
+ "onboarding.actions.back": "DistreiÃą",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Salud #Mastodon!",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting pointâyou can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
+ "onboarding.profile.display_name": "Anv diskouezet",
+ "onboarding.profile.display_name_hint": "Hoc'h anv klok pe hoc'h anv fentusâĻ",
+ "onboarding.profile.note": "Berr-ha-berr",
+ "onboarding.profile.note_hint": "Gallout a rit @menegiÃą tud all pe #hashtagoÚâĻ",
+ "onboarding.profile.save_and_continue": "EnrollaÃą ha kenderc'hel",
+ "onboarding.profile.upload_avatar": "EnporzhiaÃą ur skeudenn profil",
+ "onboarding.share.lead": "Roit da c'houzout d'an dud e c'hallont ho kavout war vMastondon!",
+ "onboarding.share.message": "Me a zo {username} war #Mastodon! Heuilhit ac'hanon war {url}",
+ "onboarding.share.title": "SkignaÃą ho profil",
"onboarding.start.lead": "Your new Mastodon account is ready to go. Here's how you can make the most of it:",
"onboarding.start.skip": "Want to skip right ahead?",
+ "onboarding.start.title": "Deuet oc'h a-benn!",
"onboarding.steps.follow_people.body": "You curate your own feed. Lets fill it with interesting people.",
"onboarding.steps.follow_people.title": "Follow {count, plural, one {one person} other {# people}}",
"onboarding.steps.publish_status.body": "Say hello to the world.",
+ "onboarding.steps.publish_status.title": "Grit hoc'h embannadur kentaÃą",
"onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
"onboarding.steps.setup_profile.title": "Customize your profile",
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
"onboarding.steps.share_profile.title": "Share your profile",
+ "password_confirmation.mismatching": "DisheÃąvel eo an daou c'her-termen-se",
"picture_in_picture.restore": "Adlakaat",
"poll.closed": "Serret",
"poll.refresh": "Azbevaat",
+ "poll.reveal": "Gwelet an disoc'hoÚ",
"poll.total_people": "{count, plural, one {# den} other {# a zen}}",
"poll.total_votes": "{count, plural, one {# votadenn} other {# votadenn}}",
"poll.vote": "MouezhiaÃą",
@@ -423,16 +475,10 @@
"poll_button.add_poll": "OuzhpennaÃą ur sontadeg",
"poll_button.remove_poll": "Dilemel ar sontadeg",
"privacy.change": "CheÃąch prevezded an toud",
- "privacy.direct.long": "Embann evit an implijer¡ezed¡ien meneget hepken",
- "privacy.direct.short": "Tud meneget hepken",
- "privacy.private.long": "Embann evit ar re a heuilh ac'hanon hepken",
- "privacy.private.short": "Tud koumanantet hepken",
- "privacy.public.long": "Gwelus d'an holl",
"privacy.public.short": "Publik",
- "privacy.unlisted.long": "Gwelus gant an holl, met hep arc'hweladur dizoleiÃą",
- "privacy.unlisted.short": "Anlistennet",
"privacy_policy.last_updated": "Hizivadenn ziwezhaÃą {date}",
"privacy_policy.title": "ReolennoÚ Prevezded",
+ "recommended": "Erbedet",
"refresh": "Freskaat",
"regeneration_indicator.label": "O kargaÃąâĻ",
"regeneration_indicator.sublabel": "War brientiÃą emaÃą ho red degemer!",
@@ -450,6 +496,7 @@
"reply_indicator.cancel": "NullaÃą",
"report.block": "StankaÃą",
"report.block_explanation": "Ne vo ket gwelet toudoÚ ar gont-se ken. Ne welo ket ho toudoÚ ha ne c'hello ket ho heuliaÃą ken. Gouzout a raio eo bet stanket ganeoc'h.",
+ "report.categories.legal": "Lezennel",
"report.categories.other": "All",
"report.categories.spam": "Spam",
"report.categories.violation": "Torret e vez gant an endalc'had unan pe meur a reolenn",
@@ -467,6 +514,7 @@
"report.placeholder": "AskelennoÚ ouzhpenn",
"report.reasons.dislike": "Ne blij ket din",
"report.reasons.dislike_description": "An dra-se na fell ket deoc'h gwelet",
+ "report.reasons.legal": "Enep al lezenn eo",
"report.reasons.other": "Un abeg all eo",
"report.reasons.other_description": "Ar gudenn na glot ket gant ar rummadoÚ all",
"report.reasons.spam": "Spam eo",
@@ -482,16 +530,32 @@
"report.thanks.title": "Ne fell ket deoc'h gwelet an dra-se ?",
"report.thanks.title_actionable": "Trugarez evit bezaÃą disklÃĒriet, emaomp o vont da glask pelloc'h.",
"report.unfollow": "DiheuliaÃą @{name}",
- "report_notification.attached_statuses": "{count, plural, one {# post} other {# posts}} attached",
+ "report_notification.attached_statuses": "{count, plural, one {{count} embannadur} other {{count} embannadur}} stag",
+ "report_notification.categories.legal": "Lezennel",
"report_notification.categories.other": "All",
"report_notification.categories.spam": "Spam",
"report_notification.categories.violation": "Torradur da reolennoÚ ar servijer",
"report_notification.open": "DigeriÃą an disklÃĒriadur",
+ "search.no_recent_searches": "Klask nevez ebet",
"search.placeholder": "Klask",
+ "search.quick_action.account_search": "ProfiloÚ a glot gant {x}",
+ "search.quick_action.go_to_account": "Mont d'ar profil {x}",
+ "search.quick_action.go_to_hashtag": "Mont d'an hashtag {x}",
+ "search.quick_action.open_url": "DigeriÃą an URL e-barzh Mastodon",
+ "search.quick_action.status_search": "EmbannadurioÚ a glot gant {x}",
"search.search_or_paste": "Klask pe pegaÃą un URL",
+ "search_popout.full_text_search_disabled_message": "N'eo ket da gaout war {domain}.",
+ "search_popout.language_code": "Kod yezh ISO",
+ "search_popout.options": "DibarzhioÚ klask",
+ "search_popout.quick_actions": "OberoÚ prim",
+ "search_popout.recent": "KlaskoÚ nevesaÃą",
+ "search_popout.specific_date": "deiziad resis",
+ "search_popout.user": "implijer¡ez",
+ "search_results.accounts": "ProfiloÚ",
"search_results.all": "Pep tra",
- "search_results.hashtags": "GerioÚ-klik",
+ "search_results.hashtags": "HashtagoÚ",
"search_results.nothing_found": "Disoc'h ebet gant ar gerioÚ-se",
+ "search_results.see_all": "Gwelet pep tra",
"search_results.statuses": "ToudoÚ",
"search_results.title": "Klask {q}",
"server_banner.active_users": "implijerien¡ezed oberiant",
@@ -500,8 +564,10 @@
"server_banner.server_stats": "StadegoÚ ar servijer :",
"sign_in_banner.create_account": "KrouiÃą ur gont",
"sign_in_banner.sign_in": "KevreaÃą",
- "status.admin_account": "DigeriÃą etrefas evezherezh evit @{name}",
- "status.admin_status": "DigeriÃą an toud e-barzh an etrefas evezherezh",
+ "sign_in_banner.sso_redirect": "KennaskaÃą pe lakaat hoc'h anv",
+ "status.admin_account": "DigeriÃą etrefas evezhiaÃą evit @{name}",
+ "status.admin_domain": "DigeriÃą an etrefas evezhiaÃą evit {domain}",
+ "status.admin_status": "DigeriÃą an embannadenn e-barzh an etrefas evezhiaÃą",
"status.block": "BerzaÃą @{name}",
"status.bookmark": "OuzhpennaÃą d'ar sinedoÚ",
"status.cancel_reblog_private": "Nac'haÃą ar skignadenn",
@@ -509,15 +575,21 @@
"status.copy": "EilaÃą liamm ar c'hannad",
"status.delete": "Dilemel",
"status.detailed_status": "Gwel kaozeadenn munudek",
+ "status.direct": "MenegiÃą @{name} ent-prevez",
+ "status.direct_indicator": "Meneg prevez",
"status.edit": "KemmaÃą",
"status.edited": "Aozet {date}",
"status.edited_x_times": "Edited {count, plural, one {# time} other {# times}}",
"status.embed": "EnframmaÃą",
+ "status.favourite": "MuiaÃą-karet",
"status.filter": "SilaÃą ar c'hannad-maÃą",
"status.filtered": "Silet",
+ "status.hide": "Kuzhat an embannadur",
"status.history.created": "Krouet gant {name} {date}",
"status.history.edited": "Kemmet gant {name} {date}",
"status.load_more": "KargaÃą muioc'h",
+ "status.media.open": "Klikit evit digeriÃą",
+ "status.media.show": "Klikit evit diskouez",
"status.media_hidden": "Media kuzhet",
"status.mention": "MenegiÃą @{name}",
"status.more": "Muioc'h",
@@ -548,6 +620,7 @@
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}",
"status.translate": "TreiÃą",
"status.translated_from_with": "Troet diwar {lang} gant {provider}",
+ "status.uncached_media_warning": "Rakwel n'eo ket da gaout",
"status.unmute_conversation": "Diguzhat ar gaozeadenn",
"status.unpin": "DispilhennaÃą eus ar profil",
"subscribed_languages.save": "EnrollaÃą ar cheÃąchamantoÚ",
@@ -575,10 +648,8 @@
"upload_error.poll": "PellgargaÃą restroÚ n'eo ket aotreet gant sontadegoÚ.",
"upload_form.audio_description": "DiskrivaÃą evit tud a zo kollet o c'hlev",
"upload_form.description": "DiskrivaÃą evit tud a zo kollet o gweled",
- "upload_form.description_missing": "Deskrivadur diank",
"upload_form.edit": "KemmaÃą",
"upload_form.thumbnail": "KemmaÃą ar velvenn",
- "upload_form.undo": "Dilemel",
"upload_form.video_description": "DiskrivaÃą evit tud a zo kollet o gweled pe o c'hlev",
"upload_modal.analyzing_picture": "O tielfennaÃą ar skeudennâĻ",
"upload_modal.apply": "ArloaÃą",
@@ -592,6 +663,7 @@
"upload_modal.preview_label": "Rakwel ({ratio})",
"upload_progress.label": "O pellgargaÃą...",
"upload_progress.processing": "War oberâĻ",
+ "username.taken": "Tapet eo an anv implijer-maÃą dija. Klaskit skrivaÃą unan all",
"video.close": "SerriÃą ar video",
"video.download": "PellgargaÃą ar restr",
"video.exit_fullscreen": "Kuitaat ar mod skramm leun",
diff --git a/app/javascript/mastodon/locales/bs.json b/app/javascript/mastodon/locales/bs.json
index 9b6b49c3d..c978a8b01 100644
--- a/app/javascript/mastodon/locales/bs.json
+++ b/app/javascript/mastodon/locales/bs.json
@@ -66,8 +66,6 @@
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
"onboarding.steps.share_profile.title": "Share your profile",
"privacy.change": "Adjust status privacy",
- "privacy.direct.short": "Direct",
- "privacy.private.short": "Followers-only",
"report.placeholder": "Type or paste additional comments",
"report.submit": "Submit report",
"report.target": "Report {target}",
diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json
index 86f1fb476..0d089bf8b 100644
--- a/app/javascript/mastodon/locales/ca.json
+++ b/app/javascript/mastodon/locales/ca.json
@@ -32,7 +32,7 @@
"account.featured_tags.last_status_never": "No hi ha tuts",
"account.featured_tags.title": "etiquetes destacades de {name}",
"account.follow": "Segueix",
- "account.follow_back": "Segueix",
+ "account.follow_back": "Segueix tu tambÊ",
"account.followers": "Seguidors",
"account.followers.empty": "A aquest usuari encara no el segueix ningÃē.",
"account.followers_counter": "{count, plural, one {{counter} seguidor} other {{counter} Seguidors}}",
@@ -89,7 +89,6 @@
"announcement.announcement": "Anunci",
"attachments_list.unprocessed": "(sense processar)",
"audio.hide": "Amaga l'Ã udio",
- "autosuggest_hashtag.per_week": "{count} per setmana",
"boost_modal.combo": "Pots prÊmer {combo} per a evitar-ho el prÃ˛xim cop",
"bundle_column_error.copy_stacktrace": "Copia l'informe d'error",
"bundle_column_error.error.body": "No s'ha pogut renderitzar la pà gina sol¡licitada. Podria ser per un error en el nostre codi o per un problema de compatibilitat del navegador.",
@@ -146,22 +145,22 @@
"compose_form.lock_disclaimer": "El teu compte no està {locked}. Tothom pot seguir-te i veure els tuts de nomÊs per a seguidors.",
"compose_form.lock_disclaimer.lock": "blocat",
"compose_form.placeholder": "Què tens al cap?",
- "compose_form.poll.add_option": "Afegeix una opciÃŗ",
+ "compose_form.poll.add_option": "Afegiu una opciÃŗ",
"compose_form.poll.duration": "Durada de l'enquesta",
+ "compose_form.poll.multiple": "Opcions mÃēltiples",
"compose_form.poll.option_placeholder": "OpciÃŗ {number}",
- "compose_form.poll.remove_option": "Elimina aquesta opciÃŗ",
- "compose_form.poll.switch_to_multiple": "Canvia lâenquesta per a permetre diverses opcions",
+ "compose_form.poll.remove_option": "Treu aquesta opciÃŗ",
+ "compose_form.poll.single": "Trieu-ne una",
+ "compose_form.poll.switch_to_multiple": "Canvia lâenquesta per a permetre mÃēltiples opcions",
"compose_form.poll.switch_to_single": "Canvia lâenquesta per a permetre una Ãēnica opciÃŗ",
- "compose_form.publish": "Tut",
+ "compose_form.poll.type": "Estil",
+ "compose_form.publish": "Publica",
"compose_form.publish_form": "Nou tut",
- "compose_form.publish_loud": "Tut!",
- "compose_form.save_changes": "Desa els canvis",
- "compose_form.sensitive.hide": "{count, plural, one {Marca mèdia com a sensible} other {Marca mèdia com a sensible}}",
- "compose_form.sensitive.marked": "{count, plural, one {Contingut marcat com a sensible} other {Contingut marcat com a sensible}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {Contingut no marcat com a sensible} other {Contingut no marcat com a sensible}}",
+ "compose_form.reply": "Responeu",
+ "compose_form.save_changes": "Actualitza",
"compose_form.spoiler.marked": "Elimina l'avÃs de contingut",
"compose_form.spoiler.unmarked": "Afegeix avÃs de contingut",
- "compose_form.spoiler_placeholder": "Escriu l'avÃs aquÃ",
+ "compose_form.spoiler_placeholder": "AvÃs de contingut (opcional)",
"confirmation_modal.cancel": "Cancel¡la",
"confirmations.block.block_and_report": "Bloca i denuncia",
"confirmations.block.confirm": "Bloca",
@@ -408,7 +407,6 @@
"navigation_bar.direct": "Mencions privades",
"navigation_bar.discover": "Descobreix",
"navigation_bar.domain_blocks": "Dominis blocats",
- "navigation_bar.edit_profile": "Edita el perfil",
"navigation_bar.explore": "Explora",
"navigation_bar.favourites": "Favorits",
"navigation_bar.filters": "Paraules silenciades",
@@ -521,19 +519,17 @@
"poll.total_people": "{count, plural, one {# persona} other {# persones}}",
"poll.total_votes": "{count, plural, one {# vot} other {# vots}}",
"poll.vote": "Vota",
- "poll.voted": "Vas votar per aquesta resposta",
+ "poll.voted": "Vau votar aquesta resposta",
"poll.votes": "{votes, plural, one {# vot} other {# vots}}",
"poll_button.add_poll": "Afegeix una enquesta",
"poll_button.remove_poll": "Elimina l'enquesta",
"privacy.change": "Canvia la privacitat del tut",
- "privacy.direct.long": "Visible nomÊs per als usuaris esmentats",
- "privacy.direct.short": "NomÊs gent mencionada",
- "privacy.private.long": "Visible nomÊs per als seguidors",
- "privacy.private.short": "NomÊs seguidors",
- "privacy.public.long": "Visible per a tothom",
+ "privacy.direct.long": "Tothom mencionat en aquesta publicaciÃŗ",
+ "privacy.direct.short": "Persones concretes",
+ "privacy.private.long": "NomÊs els vostres seguidors",
+ "privacy.private.short": "Seguidors",
+ "privacy.public.long": "Tothom dins o fora Mastodon",
"privacy.public.short": "PÃēblic",
- "privacy.unlisted.long": "Visible per a tothom perÃ˛ exclosa de les funcions de descobriment",
- "privacy.unlisted.short": "No llistada",
"privacy_policy.last_updated": "Darrera actualitzaciÃŗ {date}",
"privacy_policy.title": "PolÃtica de Privacitat",
"recommended": "Recomanat",
@@ -607,7 +603,7 @@
"search.quick_action.status_search": "Tuts coincidint amb {x}",
"search.search_or_paste": "Cerca o escriu l'URL",
"search_popout.full_text_search_disabled_message": "No disponible a {domain}.",
- "search_popout.full_text_search_logged_out_message": "NomÊs disponible en iniciar la sessiÃŗ.",
+ "search_popout.full_text_search_logged_out_message": "NomÊs disponible amb la sessiÃŗ iniciada.",
"search_popout.language_code": "Codi de llengua ISO",
"search_popout.options": "Opcions de cerca",
"search_popout.quick_actions": "Accions rà pides",
@@ -715,10 +711,8 @@
"upload_error.poll": "No es permet carregar fitxers a les enquestes.",
"upload_form.audio_description": "Descriu-ho per a persones amb problemes d'audiciÃŗ",
"upload_form.description": "Descriu-ho per a persones amb problemes de visiÃŗ",
- "upload_form.description_missing": "No s'hi ha afegit cap descripciÃŗ",
"upload_form.edit": "Edita",
"upload_form.thumbnail": "Canvia la miniatura",
- "upload_form.undo": "Elimina",
"upload_form.video_description": "Descriu-ho per a persones amb problemes de visiÃŗ o audiciÃŗ",
"upload_modal.analyzing_picture": "S'analitza la imatgeâĻ",
"upload_modal.apply": "Aplica",
diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json
index f1cafd1ac..73910f9b7 100644
--- a/app/javascript/mastodon/locales/ckb.json
+++ b/app/javascript/mastodon/locales/ckb.json
@@ -76,7 +76,6 @@
"announcement.announcement": "باŲÚ¯ÛŲØ§Ø˛",
"attachments_list.unprocessed": "(unprocessed)",
"audio.hide": "Ø´Ø§ØąØ¯ŲÛŲÛÛ Ø¯ÛŲÚ¯",
- "autosuggest_hashtag.per_week": "{count} ŲÛØąŲÛŲØĒÛ",
"boost_modal.combo": "Ø¯ÛØĒŲØ§ŲÛØĒ Ø¯ÛØŗØĒ بŲÛÛ Ø¨Û ØŗÛØą {combo} Ø¨Û Ø¨Ø§Ø˛Ø¯Ø§Ų ŲÛ ØŦØ§ØąÛ Ø¯Ø§ŲØ§ØĒŲŲ",
"bundle_column_error.copy_stacktrace": "ÚØ§ŲžÛØąØĒÛ ŲÛÚĩÛÛ ÚŠÛŲžÛ Ø¨ÚŠÛ",
"bundle_column_error.error.body": "ŲØ§ŲžÛÚÛÛ Ø¯Ø§ŲØ§ÚŠØąØ§Ų ŲÛØĒŲØ§ŲØąØ§ ÚÛŲØ¯ÛØą Ø¨ÚŠØąÛØĒ. دÛÚŠØąÛØĒ Ø¨ÛŲÛÛ ŲÛÚĩÛÛÛÚŠÛ ÚŠÛØ¯ÛÚŠÛŲ
اŲÛŲÛ Ø¨ÛØĒØ ÛØ§Ų ÚŠÛØ´ÛÛ Ú¯ŲŲØŦاŲÛ ŲÛØ¨Ú¯ÛÚ.",
@@ -128,22 +127,12 @@
"compose_form.lock_disclaimer": "ŲÛÚŲ
ÛØąÛÚŠÛÛ ŲÛ ØØ§ÚĩÛØĒÛ {locked}. ŲÛØą ÚŠÛØŗÛÚŠ Ø¯ÛØĒŲØ§ŲÛØĒ Ø´ŲÛŲØĒ Ø¨ÚŠÛŲÛØĒ Ø¨Û ŲžÛØ´Ø§ŲداŲÛ Ø¨Ø§Ø¨ÛØĒÛڊاŲÛ ØĒÛŲŲØ§ Ø¯ŲØ§ÛØŽÛÛ.",
"compose_form.lock_disclaimer.lock": "ŲŲÚĩ Ø¯ØąØ§ŲÛ",
"compose_form.placeholder": "ÚÛ ŲÛ Ų
ÛØ´ÚŠØĒØ¯Ø§ÛÛ?",
- "compose_form.poll.add_option": "Ø˛ÛØ§Ø¯ÚШਝŲÛ ŲÛÚĩØ¨ÚØ§ØąØ¯ÛÛÛÚŠ",
"compose_form.poll.duration": "Ų
اŲÛÛ ÚØ§ŲžØąØŗÛ",
- "compose_form.poll.option_placeholder": "ŲÛÚĩØ¨ÚØ§ØąØ¯Ų {number}",
- "compose_form.poll.remove_option": "ŲØ§Ø¨ØąØ¯ŲÛ ØĻÛŲ
ŲÛÚĩØ¨ÚØ§ØąØ¯ÛÛÛ",
"compose_form.poll.switch_to_multiple": "ÚØ§ŲžØąØŗÛ بگÛÚÛ Ø¨Û ÚÛÚ¯ÛØ¯Ø§Ų Ø¨Û ÚÛŲØ¯ ŲÛÚĩØ¨ÚØ§ØąØ¯ŲÛÚŠ",
"compose_form.poll.switch_to_single": "Ú¯ÛÚÛŲÛ ÚØ§ŲžØąØŗÛ Ø¨Û ÚÛÚ¯ÛØ¯Ø§Ų Ø¨Û ØĒØ§ÚŠÛ ŲÛÚĩØ¨ÚØ§ØąØ¯ŲÛÚŠ",
- "compose_form.publish": "بÚĩاŲÛ Ø¨ÚŠÛŲÛ",
"compose_form.publish_form": "بÚĩاŲÛ Ø¨ÚŠÛŲÛ",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "ŲžØ§Ø´ÚŠÛŲØĒÛ Ú¯ÛÚØ§ŲÚŠØ§ØąÛÛڊاŲ",
- "compose_form.sensitive.hide": "ŲÛØ´Ø§ŲÚŠØąØ¯ŲÛ Ų
ÛØ¯Ûا ŲÛÚŠ ŲÛØŗØĒÛØ§Øą",
- "compose_form.sensitive.marked": "ŲØ§Ø¯ÛÛ ÚŠÛØĒØ§ÛÛ",
- "compose_form.sensitive.unmarked": "Ų
ÛØ¯Ûا ŲÛÚŠ ŲÛØŗØĒÛØ§Øą ŲÛØ´Ø§Ų ŲÛÚŠØąØ§ŲÛ",
"compose_form.spoiler.marked": "دÛŲ ŲÛ ŲžØ´ØĒ ØĻØ§Ú¯Ø§Ø¯Ø§ØąÛØ¯Ø§ Ø´Ø§ØąØ§ŲÛØĒÛŲÛ",
"compose_form.spoiler.unmarked": "دÛŲ Ø´Ø§ØąØ§ŲÛ ŲÛÛÛ",
- "compose_form.spoiler_placeholder": "ØĻØ§Ú¯Ø§Ø¯Ø§ØąÛÛÚŠÛØĒ ŲÛØąÛ بŲŲŲØŗÛ",
"confirmation_modal.cancel": "ŲÛÚĩŲÛØ´Ø§ŲدŲÛŲŲ",
"confirmations.block.block_and_report": "بŲÛÚŠ & Ú¯ŲØ˛Ø§ØąØ´ØĒ",
"confirmations.block.confirm": "بŲÛÚŠ",
@@ -354,7 +343,6 @@
"navigation_bar.direct": "ØĻاŲ
اÚÛÛ ØĒØ§ÛØ¨ÛØĒ",
"navigation_bar.discover": "Ø¯ÛØ˛ÛŲÛŲÛ",
"navigation_bar.domain_blocks": "دÛŲ
ÛÛŲÛ Ø¨ŲÛÚŠ ÚŠØąØ§ŲÛڊاŲ",
- "navigation_bar.edit_profile": "Ø¯ÛØŗØĒÚŠØ§ØąÛ ŲžØąÛŲØ§ÛŲ Ø¨ÚŠÛ",
"navigation_bar.explore": "Ú¯ÛÚØ§Ų",
"navigation_bar.filters": "ŲØ´Û ÚŠŲžÛڊاŲ",
"navigation_bar.follow_requests": "Ø¨ÛØ¯ŲاداÚŲÛ Ø¯Ø§ŲØ§ÚŠØ§ØąÛÛÚŠØ§Ų Ø¨ÚŠÛ",
@@ -439,14 +427,7 @@
"poll_button.add_poll": "ÚØ§ŲžØąØŗÛÛÛÚŠ Ø˛ÛØ§Ø¯ بڊÛ",
"poll_button.remove_poll": "دŲâŲÚ¯Ø¯Ø§Ų Ø¨ØŗÚŲâŲŲââ",
"privacy.change": "ÚÛÚŠØŽØŗØĒŲÛ ØĒØ§ÛØ¨ÛØĒŲ
ÛŲØ¯Û ØĒŲØĒ",
- "privacy.direct.long": "ØĒÛŲÛØ§ Ø¨Û Ø¨ÛÚŠØ§ØąŲÛŲÛØąØ§ŲÛ ŲØ§ŲØ¨ØąØ§Ų",
- "privacy.direct.short": "ØĒÛŲŲØ§ ÚŠÛØŗØ§ŲÛ Ø¨Ø§Øŗ ÚŠØąØ§Ų",
- "privacy.private.long": "بÛŲØąØ§Ų ØĒÛŲŲØ§ Ø¨Û Ø´ŲÛŲÚŠÛŲØĒŲØ§Ų",
- "privacy.private.short": "ØĒÛŲÛØ§ Ø´ŲÛŲÚŠÛŲØĒŲŲØ§Ų",
- "privacy.public.long": "Ø¨Û ŲÛŲ
ŲŲØ§Ų Ø¯ÛØ§ØąÛ",
"privacy.public.short": "گشØĒÛ",
- "privacy.unlisted.long": "Ø¨Û ŲÛŲ
ŲŲØ§Ų Ø¯ÛØ§ØąÛØ Ø¨ÛÚĩاŲ
ŲÛ ØĒØ§ÛØ¨ÛØĒŲ
ÛŲØ¯ÛÛÛڊاŲÛ Ø¯ÛØ˛ÛŲÛŲÛ Ø¯ÛØąÚŲŲÛ",
- "privacy.unlisted.short": "ŲÛ ŲÛØŗØĒ ŲÛÚŠØąØ§Ų",
"privacy_policy.last_updated": "Ø¯ŲØ§ÛÛŲ ŲŲÛÚŠØąØ¯ŲÛŲÛ {date}",
"privacy_policy.title": "ØŗÛØ§ØŗÛØĒÛ ØĒØ§ÛØ¨ÛØĒÛØĒÛ",
"refresh": "ŲŲÛÚŠØąØ¯ŲÛŲÛ",
@@ -610,10 +591,8 @@
"upload_error.poll": "ŲØ§ÛŲ Ų ÚØ§ŲžØąØŗÛ ŲžÛÚŠÛŲÛ ÚÛŲžÛŲÛØ¯ØąØ§ŲŲ.",
"upload_form.audio_description": "ŲžÛÛØ§Ų
ÛÚŠÛØĒ Ø¨Û ŲØ§Ø¨ÛØŗØĒÛڊاŲ",
"upload_form.description": "ŲžÛÛØ§Ų
ÛÚŠÛØĒ Ø¨Û ŲØ§Ø¨ÛŲØ§ÚŠØ§Ų",
- "upload_form.description_missing": "ŲÛÚ ŲÛØŗŲÛÚŠ Ø˛ÛØ§Ø¯ ŲÛÚŠØąØ§ŲÛ",
"upload_form.edit": "Ø¯ÛØŗØĒÚŠØ§ØąÛ",
"upload_form.thumbnail": "Ú¯ÛÚØ§ŲÛ ŲÛŲÛÚÚŠÛ",
- "upload_form.undo": "Ø¨ÛØŗÚÛŲÛ",
"upload_form.video_description": "ŲžÛÛØ§Ų
ÛÚŠÛØĒ Ø¨Û ŲØ§Ø¨ÛØŗØĒ Ų ŲØ§Ø¨ÛŲØ§ÚŠØ§Ų",
"upload_modal.analyzing_picture": "ŲÛŲÛÚŠÛ Ø´Û Ø¯ÛÚŠØąÛØĒÛŲÛâĻ",
"upload_modal.apply": "Ø¨ÛØŗÛŲžÛŲÛ",
diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json
index 9f90c3d21..9d0b0306c 100644
--- a/app/javascript/mastodon/locales/co.json
+++ b/app/javascript/mastodon/locales/co.json
@@ -45,7 +45,6 @@
"alert.unexpected.title": "Uups!",
"announcement.announcement": "Annunziu",
"attachments_list.unprocessed": "(micca trattata)",
- "autosuggest_hashtag.per_week": "{count} per settimana",
"boost_modal.combo": "Pudete appughjà nant'à {combo} per saltà quessa a prussima volta",
"bundle_column_error.retry": "Pruvà torna",
"bundle_modal_error.close": "Chjudà ",
@@ -80,20 +79,12 @@
"compose_form.lock_disclaimer": "U vostru contu Ún hè micca {locked}. Tuttu u mondu pÃ˛ seguitavi è vede i vostri statuti privati.",
"compose_form.lock_disclaimer.lock": "privatu",
"compose_form.placeholder": "à chè pensate?",
- "compose_form.poll.add_option": "Aghjunghje scelta",
"compose_form.poll.duration": "Durata di u scandagliu",
- "compose_form.poll.option_placeholder": "Scelta {number}",
- "compose_form.poll.remove_option": "Toglie sta scelta",
"compose_form.poll.switch_to_multiple": "Cambià u scandagliu per accittà parechje scelte",
"compose_form.poll.switch_to_single": "Cambià u scandagliu per Ún accittà ch'una scelta",
"compose_form.publish_form": "Publish",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.sensitive.hide": "{count, plural, one {Indicà u media cum'è sensibile} other {Indicà i media cum'è sensibili}}",
- "compose_form.sensitive.marked": "{count, plural, one {Media indicatu cum'è sensibile} other {Media indicati cum'è sensibili}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {Media micca indicatu cum'è sensibile} other {Media micca indicati cum'è sensibili}}",
"compose_form.spoiler.marked": "Testu piattatu daret'Ã un'avertimentu",
"compose_form.spoiler.unmarked": "Testu micca piattatu",
- "compose_form.spoiler_placeholder": "Scrive u vostr'avertimentu quÃŦ",
"confirmation_modal.cancel": "Annullà ",
"confirmations.block.block_and_report": "Bluccà è signalà ",
"confirmations.block.confirm": "Bluccà ",
@@ -245,7 +236,6 @@
"navigation_bar.compose": "Scrive un novu statutu",
"navigation_bar.discover": "Scopre",
"navigation_bar.domain_blocks": "Duminii piattati",
- "navigation_bar.edit_profile": "Mudificà u prufile",
"navigation_bar.filters": "Parolle silenzate",
"navigation_bar.follow_requests": "Dumande d'abbunamentu",
"navigation_bar.follows_and_followers": "Abbunati è abbunamenti",
@@ -318,12 +308,7 @@
"poll_button.add_poll": "Aghjunghje",
"poll_button.remove_poll": "Toglie u scandagliu",
"privacy.change": "Mudificà a cunfidenzialità di u statutu",
- "privacy.direct.long": "Mandà solu à quelli chÃŦ so mintuvati",
- "privacy.direct.short": "Direct",
- "privacy.private.long": "Mustrà solu à l'abbunati",
- "privacy.private.short": "Followers-only",
"privacy.public.short": "Pubblicu",
- "privacy.unlisted.short": "Micca listatu",
"refresh": "Attualizà ",
"regeneration_indicator.label": "CaricamentuâĻ",
"regeneration_indicator.sublabel": "Priparazione di a vostra pagina d'accolta!",
@@ -409,7 +394,6 @@
"upload_form.description": "Discrizzione per i malvistosi",
"upload_form.edit": "Mudificà ",
"upload_form.thumbnail": "Cambià vignetta",
- "upload_form.undo": "Sguassà ",
"upload_form.video_description": "Discrizzione per i ciochi o cechi",
"upload_modal.analyzing_picture": "Analisi di u ritrattuâĻ",
"upload_modal.apply": "Affettà ",
diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json
index e18cabcec..7d91670de 100644
--- a/app/javascript/mastodon/locales/cs.json
+++ b/app/javascript/mastodon/locales/cs.json
@@ -87,7 +87,6 @@
"announcement.announcement": "OznÃĄmenÃ",
"attachments_list.unprocessed": "(nezpracovÃĄno)",
"audio.hide": "SkrÃŊt zvuk",
- "autosuggest_hashtag.per_week": "{count} za tÃŊden",
"boost_modal.combo": "PÅÃÅĄtÄ můŞete pro pÅeskoÄenà stisknout {combo}",
"bundle_column_error.copy_stacktrace": "ZkopÃrovat zprÃĄvu o chybÄ",
"bundle_column_error.error.body": "PoÅžadovanou strÃĄnku nelze vykreslit. MůŞe to bÃŊt způsobeno chybou v naÅĄem kÃŗdu nebo problÊmem s kompatibilitou prohlÃÅžeÄe.",
@@ -144,22 +143,12 @@
"compose_form.lock_disclaimer": "VÃĄÅĄ ÃēÄet nenà {locked}. Kdokoliv vÃĄs můŞe sledovat a vidÄt vaÅĄe pÅÃspÄvky uÄenÊ pouze pro sledujÃcÃ.",
"compose_form.lock_disclaimer.lock": "zamÄenÃŊ",
"compose_form.placeholder": "Co se vÃĄm honà hlavou?",
- "compose_form.poll.add_option": "PÅidat volbu",
"compose_form.poll.duration": "Doba trvÃĄnà ankety",
- "compose_form.poll.option_placeholder": "Volba {number}",
- "compose_form.poll.remove_option": "Odebrat tuto volbu",
"compose_form.poll.switch_to_multiple": "Povolit u ankety vÃŊbÄr vÃce voleb",
"compose_form.poll.switch_to_single": "Povolit u ankety vÃŊbÄr pouze jednÊ volby",
- "compose_form.publish": "ZveÅejnit",
"compose_form.publish_form": "ZveÅejnit",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "UloÅžit zmÄny",
- "compose_form.sensitive.hide": "{count, plural, one {OznaÄit mÊdia za citlivÃĄ} few {OznaÄit mÊdia za citlivÃĄ} many {OznaÄit mÊdia za citlivÃĄ} other {OznaÄit mÊdia za citlivÃĄ}}",
- "compose_form.sensitive.marked": "{count, plural, one {MÊdia jsou oznaÄena za citlivÃĄ} few {MÊdia jsou oznaÄena za citlivÃĄ} many {MÊdia jsou oznaÄena za citlivÃĄ} other {MÊdia jsou oznaÄena za citlivÃĄ}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {MÊdia nejsou oznaÄena za citlivÃĄ} few {MÊdia nejsou oznaÄena za citlivÃĄ} many {MÊdia nejsou oznaÄena za citlivÃĄ} other {MÊdia nejsou oznaÄena za citlivÃĄ}}",
"compose_form.spoiler.marked": "Odebrat varovÃĄnà o obsahu",
"compose_form.spoiler.unmarked": "PÅidat varovÃĄnà o obsahu",
- "compose_form.spoiler_placeholder": "Sem napiÅĄte vaÅĄe varovÃĄnÃ",
"confirmation_modal.cancel": "ZruÅĄit",
"confirmations.block.block_and_report": "Blokovat a nahlÃĄsit",
"confirmations.block.confirm": "Blokovat",
@@ -401,7 +390,6 @@
"navigation_bar.direct": "SoukromÊ zmÃnky",
"navigation_bar.discover": "Objevit",
"navigation_bar.domain_blocks": "BlokovanÊ domÊny",
- "navigation_bar.edit_profile": "Upravit profil",
"navigation_bar.explore": "Prozkoumat",
"navigation_bar.favourites": "OblÃbenÊ",
"navigation_bar.filters": "SkrytÃĄ slova",
@@ -508,14 +496,7 @@
"poll_button.add_poll": "PÅidat anketu",
"poll_button.remove_poll": "Odebrat anketu",
"privacy.change": "ZmÄnit soukromà pÅÃspÄvku",
- "privacy.direct.long": "ViditelnÃŊ pouze pro zmÃnÄnÊ uÅživatele",
- "privacy.direct.short": "Pouze zmÃnÄnà lidÊ",
- "privacy.private.long": "ViditelnÃŊ pouze pro sledujÃcÃ",
- "privacy.private.short": "Pouze sledujÃcÃ",
- "privacy.public.long": "ViditelnÃŊ pro vÅĄechny",
"privacy.public.short": "VeÅejnÊ",
- "privacy.unlisted.long": "ViditelnÃŊ pro vÅĄechny, ale vyÅat z funkcà objevovÃĄnÃ",
- "privacy.unlisted.short": "NeveÅejnÃŊ",
"privacy_policy.last_updated": "Naposledy aktualizovÃĄno {date}",
"privacy_policy.title": "ZÃĄsady ochrany osobnÃch Ãēdajů",
"refresh": "Obnovit",
@@ -695,10 +676,8 @@
"upload_error.poll": "NahrÃĄvÃĄnà souborů nenà povoleno s anketami.",
"upload_form.audio_description": "Popis pro sluchovÄ postiÅženÊ",
"upload_form.description": "Popis pro zrakovÄ postiÅženÊ",
- "upload_form.description_missing": "Nebyl pÅidÃĄn popis",
"upload_form.edit": "Upravit",
"upload_form.thumbnail": "ZmÄnit miniaturu",
- "upload_form.undo": "Smazat",
"upload_form.video_description": "Popis pro sluchovÄ Äi zrakovÄ postiÅženÊ",
"upload_modal.analyzing_picture": "Analyzuji obrÃĄzekâĻ",
"upload_modal.apply": "PouÅžÃt",
diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json
index 17133631a..3cd090e18 100644
--- a/app/javascript/mastodon/locales/cy.json
+++ b/app/javascript/mastodon/locales/cy.json
@@ -21,6 +21,7 @@
"account.blocked": "Blociwyd",
"account.browse_more_on_origin_server": "Pori mwy ar y proffil gwreiddiol",
"account.cancel_follow_request": "Tynnu cais i ddilyn",
+ "account.copy": "Copïo dolen i'r proffil",
"account.direct": "Crybwyll yn breifat @{name}",
"account.disable_notifications": "Stopiwch fy hysbysu pan fydd @{name} yn postio",
"account.domain_blocked": "Parth wedi ei flocio",
@@ -31,6 +32,7 @@
"account.featured_tags.last_status_never": "Dim postiadau",
"account.featured_tags.title": "Prif hashnodau {name}",
"account.follow": "Dilyn",
+ "account.follow_back": "Dilyn yn ôl",
"account.followers": "Dilynwyr",
"account.followers.empty": "Does neb yn dilyn y defnyddiwr hwn eto.",
"account.followers_counter": "{count, plural, one {Dilynwr: {counter}} other {Dilynwyr: {counter}}}",
@@ -51,6 +53,7 @@
"account.mute_notifications_short": "Distewi hysbysiadau",
"account.mute_short": "Tewi",
"account.muted": "Wedi anwybyddu",
+ "account.mutual": "Cydgydnabod",
"account.no_bio": "Dim disgrifiad wedi'i gynnig.",
"account.open_original_page": "Agor y dudalen wreiddiol",
"account.posts": "Postiadau",
@@ -86,7 +89,6 @@
"announcement.announcement": "Cyhoeddiad",
"attachments_list.unprocessed": "(heb eu prosesu)",
"audio.hide": "Cuddio sain",
- "autosuggest_hashtag.per_week": "{count} yr wythnos",
"boost_modal.combo": "Mae modd pwyso {combo} er mwyn hepgor hyn tro nesa",
"bundle_column_error.copy_stacktrace": "Copïo'r adroddiad gwall",
"bundle_column_error.error.body": "Nid oedd modd cynhyrchu'r dudalen honno. Gall fod oherwydd gwall yn ein cod neu fater cydnawsedd porwr.",
@@ -143,22 +145,12 @@
"compose_form.lock_disclaimer": "Nid yw eich cyfri wedi'i {locked}. Gall unrhyw un eich dilyn i weld eich postiadau dilynwyr-yn-unig.",
"compose_form.lock_disclaimer.lock": "wedi ei gloi",
"compose_form.placeholder": "Beth sydd ar eich meddwl?",
- "compose_form.poll.add_option": "Ychwanegu dewis",
"compose_form.poll.duration": "Cyfnod pleidlais",
- "compose_form.poll.option_placeholder": "Dewis {number}",
- "compose_form.poll.remove_option": "Tynnu'r dewis",
"compose_form.poll.switch_to_multiple": "Newid pleidlais i adael mwy nag un dewis",
"compose_form.poll.switch_to_single": "Newid pleidlais i gyfyngu i un dewis",
- "compose_form.publish": "Cyhoeddi",
"compose_form.publish_form": "Cyhoeddi",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Cadw newidiadau",
- "compose_form.sensitive.hide": "Marcio cyfryngau fel eu bod yn sensitif",
- "compose_form.sensitive.marked": "Cyfryngau wedi'u marcio'n sensitif",
- "compose_form.sensitive.unmarked": "Nid yw'r cyfryngau wedi'u marcio'n sensitif",
"compose_form.spoiler.marked": "Dileu rhybudd cynnwys",
"compose_form.spoiler.unmarked": "Ychwanegu rhybudd cynnwys",
- "compose_form.spoiler_placeholder": "Ysgrifenwch eich rhybudd yma",
"confirmation_modal.cancel": "Diddymu",
"confirmations.block.block_and_report": "Rhwystro ac Adrodd",
"confirmations.block.confirm": "Blocio",
@@ -168,9 +160,9 @@
"confirmations.delete.confirm": "Dileu",
"confirmations.delete.message": "Ydych chi'n sicr eich bod eisiau dileu y post hwn?",
"confirmations.delete_list.confirm": "Dileu",
- "confirmations.delete_list.message": "Ydych chi'n siÅĩr eich bod eisiau dileu y rhestr hwn am byth?",
+ "confirmations.delete_list.message": "Ydych chi'n siÅĩr eich bod eisiau dileu'r rhestr hwn am byth?",
"confirmations.discard_edit_media.confirm": "Dileu",
- "confirmations.discard_edit_media.message": "Mae gennych newidiadau heb eu cadw i'r disgrifiad cyfryngau neu'r rhagolwg, eu taflu beth bynnag?",
+ "confirmations.discard_edit_media.message": "Mae gennych newidiadau heb eu cadw i'r disgrifiad cyfryngau neu'r rhagolwg - eu dileu beth bynnag?",
"confirmations.domain_block.confirm": "Blocio parth cyfan",
"confirmations.domain_block.message": "Ydych chi wir, wir eisiau blocio'r holl {domain}? Fel arfer, mae blocio neu dewi pobl penodol yn broses mwy effeithiol. Fyddwch chi ddim yn gweld cynnwys o'r parth hwnnw mewn ffrydiau cyhoeddus neu yn eich hysbysiadau. Bydd eich dilynwyr o'r parth hwnnw yn cael eu ddileu.",
"confirmations.edit.confirm": "Golygu",
@@ -405,7 +397,6 @@
"navigation_bar.direct": "Crybwylliadau preifat",
"navigation_bar.discover": "Darganfod",
"navigation_bar.domain_blocks": "Parthau wedi'u blocio",
- "navigation_bar.edit_profile": "Golygu proffil",
"navigation_bar.explore": "Darganfod",
"navigation_bar.favourites": "Ffefrynnau",
"navigation_bar.filters": "Geiriau wedi'u tewi",
@@ -481,12 +472,15 @@
"onboarding.follows.title": "Yn boblogaidd ar Mastodon",
"onboarding.profile.discoverable": "Gwnewch fy mhroffil yn un y gellir ei ddarganfod",
"onboarding.profile.discoverable_hint": "Pan fyddwch yn optio i mewn i ddarganfodadwyedd ar Mastodon, gall eich postiadau ymddangos mewn canlyniadau chwilio a thueddiadau, ac efallai y bydd eich proffil yn cael ei awgrymu i bobl sydd Ãĸ diddordebau tebyg i chi.",
+ "onboarding.profile.display_name": "Enw dangos",
"onboarding.profile.display_name_hint": "Eich enw llawn neu'ch enw hwylâĻ",
+ "onboarding.profile.lead": "Gallwch chi bob amser gwblhau hyn yn ddiweddarach yn y gosodiadau, lle mae hyd yn oed mwy o ddewisiadau cyfaddasu ar gael.",
"onboarding.profile.note": "Bywgraffiad",
"onboarding.profile.note_hint": "Gallwch @grybwyll pobl eraill neu #hashnodauâĻ",
"onboarding.profile.save_and_continue": "Cadw a pharhau",
"onboarding.profile.title": "Gosodiad proffil",
"onboarding.profile.upload_avatar": "Llwytho llun proffil",
+ "onboarding.profile.upload_header": "Llwytho pennyn proffil",
"onboarding.share.lead": "Cofiwch ddweud wrth bobl sut y gallan nhw ddod o hyd i chi ar Mastodon!",
"onboarding.share.message": "Fi yw {username} ar #Mastodon! Dewch i'm dilyn i yn {url}",
"onboarding.share.next_steps": "Camau nesaf posib:",
@@ -520,14 +514,7 @@
"poll_button.add_poll": "Ychwanegu pleidlais",
"poll_button.remove_poll": "Tynnu pleidlais",
"privacy.change": "Addasu preifatrwdd y post",
- "privacy.direct.long": "Dim ond yn weladwy i ddefnyddwyr a grybwyllwyd",
- "privacy.direct.short": "Dim ond pobl sy wedi'u crybwyll",
- "privacy.private.long": "Dim ond pobl sy'n ddilynwyr",
- "privacy.private.short": "Dilynwyr yn unig",
- "privacy.public.long": "Gweladwy i bawb",
"privacy.public.short": "Cyhoeddus",
- "privacy.unlisted.long": "Gweladwy i bawb, ond wedi optio allan o nodweddion darganfod",
- "privacy.unlisted.short": "Heb ei restru",
"privacy_policy.last_updated": "Diweddarwyd ddiwethaf ar {date}",
"privacy_policy.title": "Polisi Preifatrwydd",
"recommended": "Argymhellwyd",
@@ -601,6 +588,7 @@
"search.quick_action.status_search": "Postiadau sy'n cyfateb i {x}",
"search.search_or_paste": "Chwilio neu gludo URL",
"search_popout.full_text_search_disabled_message": "Ddim ar gael ar {domain}.",
+ "search_popout.full_text_search_logged_out_message": "Dim ond ar gael pan wedi mewngofnodi.",
"search_popout.language_code": "Cod iaith ISO",
"search_popout.options": "Dewisiadau chwilio",
"search_popout.quick_actions": "Gweithredoedd cyflym",
@@ -708,10 +696,8 @@
"upload_error.poll": "Nid oes modd llwytho ffeiliau Ãĸ phleidleisiau.",
"upload_form.audio_description": "Disgrifio ar gyfer pobl sydd Ãĸ cholled clyw",
"upload_form.description": "Disgrifio i'r rheini a nam ar ei golwg",
- "upload_form.description_missing": "Dim disgrifiad wedi'i ychwanegu",
"upload_form.edit": "Golygu",
"upload_form.thumbnail": "Newid llun bach",
- "upload_form.undo": "Dileu",
"upload_form.video_description": "Disgrifio ar gyfer pobl sydd Ãĸ cholled clyw neu amhariad golwg",
"upload_modal.analyzing_picture": "Yn dadansoddi llunâĻ",
"upload_modal.apply": "Gosod",
diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json
index 3bc830ad2..5d6cac69d 100644
--- a/app/javascript/mastodon/locales/da.json
+++ b/app/javascript/mastodon/locales/da.json
@@ -89,7 +89,6 @@
"announcement.announcement": "Bekendtgørelse",
"attachments_list.unprocessed": "(ubehandlet)",
"audio.hide": "Skjul lyd",
- "autosuggest_hashtag.per_week": "{count} pr. uge",
"boost_modal.combo": "Du kan trykke {combo} for at springe dette over nÃĻste gang",
"bundle_column_error.copy_stacktrace": "KopiÊr fejlrapport",
"bundle_column_error.error.body": "Den anmodede side kunne ikke gengives. Dette kan skyldes flere typer fejl.",
@@ -146,22 +145,22 @@
"compose_form.lock_disclaimer": "Din konto er ikke {locked}. Enhver kan følge dig og se indlÃĻg kun beregnet for følgere.",
"compose_form.lock_disclaimer.lock": "lÃĨst",
"compose_form.placeholder": "Hvad tÃĻnker du pÃĨ?",
- "compose_form.poll.add_option": "Tilføj valgmulighed",
+ "compose_form.poll.add_option": "Tilføj mulighed",
"compose_form.poll.duration": "Afstemningens varighed",
+ "compose_form.poll.multiple": "Multivalg",
"compose_form.poll.option_placeholder": "Valgmulighed {number}",
"compose_form.poll.remove_option": "Fjern denne valgmulighed",
+ "compose_form.poll.single": "VÃĻlg Ên",
"compose_form.poll.switch_to_multiple": "Ãndr afstemning til flervalgstype",
"compose_form.poll.switch_to_single": "Ãndr afstemning til enkeltvalgstype",
- "compose_form.publish": "PublicÊr",
+ "compose_form.poll.type": "Stil",
+ "compose_form.publish": "Indsend",
"compose_form.publish_form": "PublicÊr",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Gem ÃĻndringer",
- "compose_form.sensitive.hide": "{count, plural, one {MarkÊr medie som følsomt} other {MarkÊr medier som følsomme}}",
- "compose_form.sensitive.marked": "{count, plural, one {Medie er markeret som sensitivt} other {Medier er markerede som sensitive}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {Medie er ikke market som sensitivt} other {Medier er ikke markerede som sensitive}}",
+ "compose_form.reply": "Svar",
+ "compose_form.save_changes": "OpdatÊr",
"compose_form.spoiler.marked": "Fjern indholdsadvarsel",
"compose_form.spoiler.unmarked": "Tilføj indholdsadvarsel",
- "compose_form.spoiler_placeholder": "Skriv din advarsel hÊr",
+ "compose_form.spoiler_placeholder": "Indholdsadvarsel (valgfri)",
"confirmation_modal.cancel": "Afbryd",
"confirmations.block.block_and_report": "BlokÊr og Anmeld",
"confirmations.block.confirm": "BlokÊr",
@@ -408,7 +407,6 @@
"navigation_bar.direct": "Private omtaler",
"navigation_bar.discover": "Opdag",
"navigation_bar.domain_blocks": "Blokerede domÃĻner",
- "navigation_bar.edit_profile": "RedigÊr profil",
"navigation_bar.explore": "Udforsk",
"navigation_bar.favourites": "Favoritter",
"navigation_bar.filters": "Skjulte ord (mutede)",
@@ -526,14 +524,15 @@
"poll_button.add_poll": "Tilføj en afstemning",
"poll_button.remove_poll": "Fjern afstemning",
"privacy.change": "Tilpas indlÃĻgsfortrolighed",
- "privacy.direct.long": "Kun synlig for nÃĻvnte brugere",
- "privacy.direct.short": "Kun omtalte personer",
- "privacy.private.long": "Kun synlig for følgere",
- "privacy.private.short": "Kun følgere",
- "privacy.public.long": "Synlig for alle",
+ "privacy.direct.long": "Alle nÃĻvnt i indlÃĻgget",
+ "privacy.direct.short": "Bestemte personer",
+ "privacy.private.long": "Kun dine følgere",
+ "privacy.private.short": "Følgere",
+ "privacy.public.long": "Alle pÃĨ og udenfor Mastodon",
"privacy.public.short": "Offentlig",
- "privacy.unlisted.long": "Synlig for alle, men med fravalgt visning i opdagelsesfunktioner",
- "privacy.unlisted.short": "Diskret",
+ "privacy.unlisted.additional": "Dette er prÃĻcis som offentlig adfÃĻrd, dog vises indlÃĻgget ikke i live feeds/hashtags, udforsk eller Mastodon-søgning, selv hvis valget gÃĻlder hele kontoen.",
+ "privacy.unlisted.long": "FÃĻrre algoritmiske fanfarer",
+ "privacy.unlisted.short": "Tavsgøre offentligt",
"privacy_policy.last_updated": "Senest opdateret {date}",
"privacy_policy.title": "Privatlivspolitik",
"recommended": "Anbefalet",
@@ -551,7 +550,9 @@
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
"relative_time.today": "i dag",
+ "reply_indicator.attachments": "{count, plural, one {# vedhÃĻftning} other {# vedhÃĻftninger}}",
"reply_indicator.cancel": "Afbryd",
+ "reply_indicator.poll": "Afstemning",
"report.block": "BlokÊr",
"report.block_explanation": "Du vil ikke se vedkommendes indlÃĻg. Vedkommende vil ikke kunne se dine indlÃĻg eller følge dig. Vedkommende vil kunne se, at de er blokeret.",
"report.categories.legal": "Juridisk",
@@ -715,10 +716,8 @@
"upload_error.poll": "Filupload ikke tilladt for afstemninger.",
"upload_form.audio_description": "Beskrivelse til hørehÃĻmmede",
"upload_form.description": "Beskrivelse til svagtseende",
- "upload_form.description_missing": "Ingen beskrivelse tilføjet",
"upload_form.edit": "RedigÊr",
"upload_form.thumbnail": "Skift miniature",
- "upload_form.undo": "Slet",
"upload_form.video_description": "Beskrivelse for hørehÃĻmmede eller synshandicappede personer",
"upload_modal.analyzing_picture": "Analyserer billedeâĻ",
"upload_modal.apply": "Anvend",
diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json
index ddcbc58ce..a6dd098bb 100644
--- a/app/javascript/mastodon/locales/de.json
+++ b/app/javascript/mastodon/locales/de.json
@@ -62,7 +62,7 @@
"account.requested": "Die Genehmigung steht noch aus. Klicke hier, um die Follower-Anfrage zurÃŧckzuziehen",
"account.requested_follow": "{name} mÃļchte dir folgen",
"account.share": "Profil von @{name} teilen",
- "account.show_reblogs": "Geteilte Beiträge von @{name} wieder anzeigen",
+ "account.show_reblogs": "Geteilte Beiträge von @{name} anzeigen",
"account.statuses_counter": "{count, plural, one {{counter} Beitrag} other {{counter} Beiträge}}",
"account.unblock": "Blockierung von @{name} aufheben",
"account.unblock_domain": "Blockierung von {domain} aufheben",
@@ -89,7 +89,6 @@
"announcement.announcement": "AnkÃŧndigung",
"attachments_list.unprocessed": "(ausstehend)",
"audio.hide": "Audio ausblenden",
- "autosuggest_hashtag.per_week": "{count} pro Woche",
"boost_modal.combo": "Mit {combo} wird dieses Fenster beim nächsten Mal nicht mehr angezeigt",
"bundle_column_error.copy_stacktrace": "Fehlerbericht kopieren",
"bundle_column_error.error.body": "Die angeforderte Seite konnte nicht dargestellt werden. Dies kÃļnnte auf einen Fehler in unserem Code oder auf ein Browser-Kompatibilitätsproblem zurÃŧckzufÃŧhren sein.",
@@ -146,22 +145,22 @@
"compose_form.lock_disclaimer": "Dein Profil ist nicht {locked}. Andere kÃļnnen dir folgen und deine Beiträge sehen, die nur fÃŧr Follower bestimmt sind.",
"compose_form.lock_disclaimer.lock": "geschÃŧtzt",
"compose_form.placeholder": "Was gibtâs Neues?",
- "compose_form.poll.add_option": "Auswahl",
+ "compose_form.poll.add_option": "Auswahl hinzufÃŧgen",
"compose_form.poll.duration": "Umfragedauer",
- "compose_form.poll.option_placeholder": "{number}. Auswahl",
- "compose_form.poll.remove_option": "Auswahlfeld entfernen",
+ "compose_form.poll.multiple": "Mehrfachauswahl",
+ "compose_form.poll.option_placeholder": "{number}. AuswahlmÃļglichkeit",
+ "compose_form.poll.remove_option": "Dieses Auswahlfeld entfernen",
+ "compose_form.poll.single": "Einfachauswahl",
"compose_form.poll.switch_to_multiple": "Mehrfachauswahl erlauben",
- "compose_form.poll.switch_to_single": "Nur Einzelauswahl erlauben",
+ "compose_form.poll.switch_to_single": "Nur Einfachauswahl erlauben",
+ "compose_form.poll.type": "Art",
"compose_form.publish": "VerÃļffentlichen",
"compose_form.publish_form": "Neuer Beitrag",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Ãnderungen speichern",
- "compose_form.sensitive.hide": "{count, plural, one {Mit einer Inhaltswarnung versehen} other {Mit einer Inhaltswarnung versehen}}",
- "compose_form.sensitive.marked": "{count, plural, one {Medien-Datei ist mit einer Inhaltswarnung versehen} other {Medien-Dateien sind mit einer Inhaltswarnung versehen}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {Medien-Datei ist nicht mit einer Inhaltswarnung versehen} other {Medien-Dateien sind nicht mit einer Inhaltswarnung versehen}}",
+ "compose_form.reply": "Antworten",
+ "compose_form.save_changes": "Aktualisieren",
"compose_form.spoiler.marked": "Inhaltswarnung entfernen",
"compose_form.spoiler.unmarked": "Inhaltswarnung hinzufÃŧgen",
- "compose_form.spoiler_placeholder": "Inhaltswarnung",
+ "compose_form.spoiler_placeholder": "Inhaltswarnung (optional)",
"confirmation_modal.cancel": "Abbrechen",
"confirmations.block.block_and_report": "Blockieren und melden",
"confirmations.block.confirm": "Blockieren",
@@ -408,7 +407,6 @@
"navigation_bar.direct": "Private Erwähnungen",
"navigation_bar.discover": "Entdecken",
"navigation_bar.domain_blocks": "Blockierte Domains",
- "navigation_bar.edit_profile": "Profil bearbeiten",
"navigation_bar.explore": "Entdecken",
"navigation_bar.favourites": "Favoriten",
"navigation_bar.filters": "Stummgeschaltete WÃļrter",
@@ -489,7 +487,7 @@
"onboarding.profile.lead": "Du kannst das später in den Einstellungen vervollständigen, wo noch mehr AnpassungsmÃļglichkeiten zur VerfÃŧgung stehen.",
"onboarding.profile.note": "Ãber mich",
"onboarding.profile.note_hint": "Du kannst andere @Profile erwähnen oder #Hashtags verwenden âĻ",
- "onboarding.profile.save_and_continue": "Speichern und fortsetzen",
+ "onboarding.profile.save_and_continue": "Speichern und fortfahren",
"onboarding.profile.title": "Profil einrichten",
"onboarding.profile.upload_avatar": "Profilbild hochladen",
"onboarding.profile.upload_header": "Titelbild hochladen",
@@ -526,14 +524,15 @@
"poll_button.add_poll": "Umfrage erstellen",
"poll_button.remove_poll": "Umfrage entfernen",
"privacy.change": "Sichtbarkeit anpassen",
- "privacy.direct.long": "Nur fÃŧr die erwähnten Profile sichtbar",
- "privacy.direct.short": "Nur erwähnte Profile",
- "privacy.private.long": "Nur fÃŧr deine Follower sichtbar",
- "privacy.private.short": "Nur Follower",
- "privacy.public.long": "FÃŧr alle sichtbar",
+ "privacy.direct.long": "Alle in diesem Beitrag erwähnten Profile",
+ "privacy.direct.short": "Bestimmte Profile",
+ "privacy.private.long": "Nur deine Follower",
+ "privacy.private.short": "Follower",
+ "privacy.public.long": "Alle auf und auÃerhalb von Mastodon",
"privacy.public.short": "Ãffentlich",
- "privacy.unlisted.long": "FÃŧr alle sichtbar, aber nicht Ãŧber die Suche zu finden",
- "privacy.unlisted.short": "Nicht gelistet",
+ "privacy.unlisted.additional": "Das Verhalten ist wie bei âÃffentlichâ, jedoch erscheint dieser Beitrag nicht in âLive-Feedsâ, âErkundenâ, Hashtags oder Ãŧber die Mastodon-Suchfunktion â selbst wenn du das in den Einstellungen aktiviert hast.",
+ "privacy.unlisted.long": "Weniger im Algorithmus berÃŧcksichtigt",
+ "privacy.unlisted.short": "Ãffentlich (eingeschränkt)",
"privacy_policy.last_updated": "Stand: {date}",
"privacy_policy.title": "Datenschutzerklärung",
"recommended": "Empfohlen",
@@ -551,7 +550,9 @@
"relative_time.minutes": "{number} Min.",
"relative_time.seconds": "{number} Sek.",
"relative_time.today": "heute",
+ "reply_indicator.attachments": "{count, plural, one {# Anhang} other {# Anhänge}}",
"reply_indicator.cancel": "Abbrechen",
+ "reply_indicator.poll": "Umfrage",
"report.block": "Blockieren",
"report.block_explanation": "Du wirst keine Beiträge mehr von diesem Konto sehen. Das blockierte Konto wird deine Beiträge nicht mehr sehen oder dir folgen kÃļnnen. Die Person kÃļnnte mitbekommen, dass du sie blockiert hast.",
"report.categories.legal": "Rechtlich",
@@ -715,10 +716,8 @@
"upload_error.poll": "Medien-Anhänge sind zusammen mit Umfragen nicht erlaubt.",
"upload_form.audio_description": "Beschreibe fÃŧr Menschen mit HÃļrbehinderung",
"upload_form.description": "Beschreibe fÃŧr Menschen mit Sehbehinderung",
- "upload_form.description_missing": "Keine Beschreibung hinzugefÃŧgt",
"upload_form.edit": "Bearbeiten",
"upload_form.thumbnail": "Vorschaubild ändern",
- "upload_form.undo": "LÃļschen",
"upload_form.video_description": "Beschreibe fÃŧr Menschen mit einer HÃļr- oder Sehbehinderung",
"upload_modal.analyzing_picture": "Bild wird analysiert âĻ",
"upload_modal.apply": "Ãbernehmen",
diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json
index 83a986ba4..068d22890 100644
--- a/app/javascript/mastodon/locales/el.json
+++ b/app/javascript/mastodon/locales/el.json
@@ -17,9 +17,11 @@
"account.badges.group": "ÎÎŧÎŦδι",
"account.block": "ÎĪÎŋÎēÎģÎĩΚĪÎŧĪĪ @{name}",
"account.block_domain": "ÎĪÎŋÎēÎģÎĩΚĪÎŧĪĪ ĪÎŋÎŧÎÎą {domain}",
+ "account.block_short": "ÎĪÎŋÎēÎģÎĩΚĪÎŧĪĪ",
"account.blocked": "ÎĪÎŋÎēÎģÎĩΚĪÎŧÎÎŊÎŋĪ/Ρ",
"account.browse_more_on_origin_server": "ÎÎĩĪ ĪÎĩĪΚĪĪĪĪÎĩĪÎą ĪĪÎŋ ÎąĪĪΚÎēĪ ĪĪÎŋĪίÎģ",
"account.cancel_follow_request": "ÎĪĪĪĪ
ĪĪΡ ιΚĪÎŽÎŧÎąĪÎŋĪ ĪÎąĪÎąÎēÎŋÎģÎŋĪθΡĪΡĪ",
+ "account.copy": "ÎÎŊĪÎšÎŗĪÎąĪÎŽ ĪĪ
ÎŊδÎĪÎŧÎŋĪ
ĪĪÎŋĪίÎģ",
"account.direct": "ÎδΚĪĪΚÎēÎŽ ÎąÎŊÎąĪÎŋĪÎŦ @{name}",
"account.disable_notifications": "ÎŖĪÎąÎŧÎŦĪÎą ÎŊÎą ÎŧÎĩ ÎĩΚδÎŋĪÎŋΚÎĩÎ¯Ī ĪĪÎąÎŊ δΡÎŧÎŋĪΚÎĩĪÎĩΚ Îŋ @{name}",
"account.domain_blocked": "Î ĪÎŋÎŧÎÎąĪ ÎąĪÎŋÎēÎģÎĩίĪĪΡÎēÎĩ",
@@ -30,6 +32,7 @@
"account.featured_tags.last_status_never": "ÎÎąÎŧÎ¯Îą ÎąÎŊÎŦĪĪΡĪΡ",
"account.featured_tags.title": "ĪĪÎŋβÎĩβÎģΡÎŧÎÎŊÎĩĪ ÎĩĪΚÎēÎĪÎĩĪ ĪÎŋĪ
/ĪÎˇĪ {name}",
"account.follow": "ÎÎēÎŋÎģÎŋĪθΡĪÎĩ",
+ "account.follow_back": "ÎÎēÎŋÎģÎŋĪθΡĪÎĩ ÎēιΚ ÎĩĪĪ",
"account.followers": "ÎÎēĪÎģÎŋĪ
θÎŋΚ",
"account.followers.empty": "ÎÎąÎŊÎĩÎ¯Ī Î´ÎĩÎŊ ÎąÎēÎŋÎģÎŋĪ
θÎĩί ÎąĪ
ĪĪÎŊ ĪÎŋÎŊ ĪĪÎŽĪĪΡ ÎąÎēĪÎŧÎą.",
"account.followers_counter": "{count, plural, one {{counter} ÎÎēĪÎģÎŋĪ
θÎŋĪ} other {{counter} ÎÎēĪÎģÎŋĪ
θÎŋΚ}}",
@@ -47,7 +50,11 @@
"account.mention": "ÎÎŊÎŦĪÎĩĪÎĩ @{name}",
"account.moved_to": "Î/Î {name} ÎĪÎĩΚ Ī
ĪÎŋδÎĩίΞÎĩΚ ĪĪΚ Îŋ ÎŊÎÎŋĪ ÎģÎŋÎŗÎąĪΚιĪÎŧĪĪ ĪÎŋĪ
/ĪÎˇĪ ÎĩίÎŊιΚ ĪĪĪÎą:",
"account.mute": "ÎŖĪĪÎąĪÎĩ ĪÎŋÎŊ @{name}",
+ "account.mute_notifications_short": "ÎŖÎ¯ÎŗÎąĪΡ ÎĩΚδÎŋĪÎŋΚΎĪÎĩĪÎŊ",
+ "account.mute_short": "ÎŖÎ¯ÎŗÎąĪΡ",
"account.muted": "ÎĪÎŋĪΚĪĪΡÎŧÎÎŊÎŋĪ/Ρ",
+ "account.mutual": "ÎÎŧÎŋÎšÎ˛ÎąÎ¯ÎŋΚ",
+ "account.no_bio": "ÎÎĩÎŊ Ī
ĪÎŦĪĪÎĩΚ ĪÎĩĪÎšÎŗĪÎąĪÎŽ.",
"account.open_original_page": "ÎÎŊÎŋΚÎēĪĪ",
"account.posts": "ΤÎŋĪ
Ī",
"account.posts_with_replies": "ΤÎŋĪ
Ī ÎēιΚ ÎąĪÎąÎŊĪÎŽĪÎĩΚĪ",
@@ -63,6 +70,7 @@
"account.unendorse": "ÎÎą ÎŧΡÎŊ ĪÎąĪÎĪÎĩĪιΚ ĪĪÎŋ ĪĪÎŋĪίÎģ",
"account.unfollow": "ÎĪĪΡ ÎąÎēÎŋÎģÎŋĪθΡĪΡĪ",
"account.unmute": "ÎΚιÎēÎŋĪÎŽ ĪÎ¯ÎŗÎąĪÎˇĪ @{name}",
+ "account.unmute_notifications_short": "ÎŖÎ¯ÎŗÎąĪΡ ÎĩΚδÎŋĪÎŋΚΎĪÎĩĪÎŊ",
"account.unmute_short": "ÎÎąĪÎŦĪÎŗÎˇĪΡ ĪÎ¯ÎŗÎąĪΡĪ",
"account_note.placeholder": "ÎÎŦÎŊÎĩ ÎēÎģΚÎē ÎŗÎšÎą ÎŊÎą ĪĪÎŋĪθÎĪÎĩÎšĪ ĪΡÎŧÎĩίĪĪΡ",
"admin.dashboard.daily_retention": "Î ÎŋĪÎŋĪĪĪ ĪĪΡĪĪĪÎŊ ĪÎŋĪ
ĪÎąĪÎąÎŧÎÎŊÎŋĪ
ÎŊ ÎŧÎĩĪÎŦ ĪΡÎŊ ÎĩÎŗÎŗĪÎąĪÎŽ, ÎąÎŊÎŦ ΡÎŧÎĪÎą",
@@ -77,7 +85,6 @@
"announcement.announcement": "ÎÎŊÎąÎēÎŋίÎŊĪĪΡ",
"attachments_list.unprocessed": "(ÎŧΡ ÎĩĪÎĩΞÎĩĪÎŗÎąĪÎŧÎÎŊÎŋ)",
"audio.hide": "ÎĪĪÎēĪĪ
ĪΡ ÎąĪĪÎĩίÎŋĪ
ÎŽĪÎŋĪ
",
- "autosuggest_hashtag.per_week": "{count} ÎąÎŊÎŦ ÎĩβδÎŋÎŧÎŦδι",
"boost_modal.combo": "ÎĪÎŋĪÎĩÎ¯Ī ÎŊÎą ĪÎąĪÎŽĪÎĩÎšĪ {combo} ÎŗÎšÎą ÎŊÎą ĪÎŋ ĪĪÎŋĪĪÎĩĪÎŦĪÎĩÎšĪ ĪΡÎŊ ÎĩĪĪÎŧÎĩÎŊΡ ĪÎŋĪÎŦ",
"bundle_column_error.copy_stacktrace": "ÎÎŊĪÎšÎŗĪÎąĪÎŽ ÎąÎŊÎąĪÎŋĪÎŦĪ ĪĪÎŦÎģÎŧÎąĪÎŋĪ",
"bundle_column_error.error.body": "ÎÎĩÎŊ ÎŽĪÎąÎŊ δĪ
ÎŊÎąĪÎŽ Ρ ÎąĪĪδÎŋĪΡ ĪÎˇĪ ĪÎĩÎģÎ¯Î´ÎąĪ ĪÎŋĪ
ÎļÎŽĪΡĪÎĩĪ. ÎĪÎŋĪÎĩί ÎŊÎą ÎŋĪÎĩίÎģÎĩĪιΚ ĪÎĩ ĪĪÎŦÎģÎŧÎą ĪĪÎŋÎŊ ÎēĪδΚÎēÎŦ ÎŧÎąĪ ÎŽ ĪÎĩ ĪĪĪβÎģΡÎŧÎą ĪĪ
ÎŧβιĪĪĪΡĪÎąĪ ĪÎŋĪ
ĪĪÎŋÎŗĪÎŦÎŧÎŧÎąĪÎŋĪ ĪÎĩĪÎšÎŽÎŗÎˇĪΡĪ.",
@@ -103,6 +110,7 @@
"column.direct": "ÎδΚĪĪΚÎēÎĪ ÎąÎŊÎąĪÎŋĪÎĪ",
"column.directory": "Î ÎĩĪÎšÎŽÎŗÎˇĪΡ ĪĪÎą ĪĪÎŋĪίÎģ",
"column.domain_blocks": "ÎĪÎŋÎēÎģÎĩΚĪÎŧÎÎŊÎŋΚ ĪÎŋÎŧÎĩίĪ",
+ "column.favourites": "ÎÎŗÎąĪΡÎŧÎÎŊÎą",
"column.follow_requests": "ÎΚĪÎŽÎŧÎąĪÎą ÎąÎēÎŋÎģÎŋĪθΡĪΡĪ",
"column.home": "ÎĪĪΚÎēÎŽ",
"column.lists": "ÎίĪĪÎĩĪ",
@@ -123,6 +131,9 @@
"community.column_settings.remote_only": "ÎĪÎŋÎŧÎąÎēĪĪ
ĪÎŧÎÎŊÎą ÎŧĪÎŊÎŋ",
"compose.language.change": "ÎÎģÎģÎąÎŗÎŽ ÎŗÎģĪĪĪÎąĪ",
"compose.language.search": "ÎÎŊÎąÎļÎŽĪΡĪΡ ÎŗÎģĪĪĪĪÎŊ...",
+ "compose.published.body": "Î ÎąÎŊÎŦĪĪΡĪΡ δΡÎŧÎŋĪΚÎĩĪĪΡÎēÎĩ.",
+ "compose.published.open": "ÎÎŊÎŋÎšÎŗÎŧÎą",
+ "compose.saved.body": "Î ÎąÎŊÎŦĪĪΡĪΡ ÎąĪÎŋθΡÎēÎĩĪĪΡÎēÎĩ.",
"compose_form.direct_message_warning_learn_more": "ÎÎŦθÎĩ ĪÎĩĪΚĪĪĪĪÎĩĪÎą",
"compose_form.encryption_warning": "ÎΚ δΡÎŧÎŋĪΚÎĩĪĪÎĩÎšĪ ĪĪÎŋ Mastodon δÎĩÎŊ ÎĩίÎŊιΚ ÎēĪĪ
ĪĪÎŋÎŗĪÎąĪΡÎŧÎÎŊÎĩĪ ÎąĪĪ ÎŦÎēĪÎŋ ĪÎĩ ÎŦÎēĪÎŋ. ÎΡ ÎŧÎŋΚĪÎŦÎļÎĩĪιΚ ÎĩĪ
ÎąÎ¯ĪθΡĪÎĩĪ ĪÎģΡĪÎŋĪÎŋĪίÎĩĪ ÎŧÎĪĪ ĪÎŋĪ
Mastodon.",
"compose_form.hashtag_warning": "ÎĪ
ĪÎŽ Ρ δΡÎŧÎŋĪίÎĩĪ
ĪΡ δÎĩÎŊ θι ÎĩÎŧĪÎąÎŊίÎļÎĩĪιΚ ÎēÎŦĪĪ ÎąĪĪ ÎŋĪÎŋΚιδΎĪÎŋĪÎĩ ÎĩĪΚÎēÎĪÎą ÎēιθĪĪ Î´ÎĩÎŊ ÎĩίÎŊιΚ δΡÎŧĪĪΚι. ÎĪÎŊÎŋ ÎŋΚ δΡÎŧĪĪΚÎĩĪ Î´ÎˇÎŧÎŋĪΚÎĩĪĪÎĩÎšĪ ÎŧĪÎŋĪÎŋĪÎŊ ÎŊÎą ÎąÎŊÎąÎļΡĪΡθÎŋĪÎŊ ÎŧÎĩ ÎĩĪΚÎēÎĪÎą.",
@@ -131,20 +142,19 @@
"compose_form.placeholder": "ΤΚ ĪÎēÎĪĪÎĩĪιΚ;",
"compose_form.poll.add_option": "Î ĪÎŋĪθΎÎēΡ ÎĩĪΚÎģÎŋÎŗÎŽĪ",
"compose_form.poll.duration": "ÎΚÎŦĪÎēÎĩΚι δΡÎŧÎŋĪÎēĪĪΡĪΡĪ",
+ "compose_form.poll.multiple": "Î ÎŋÎģÎģÎąĪÎģÎŽ ÎĩĪΚÎģÎŋÎŗÎŽ",
"compose_form.poll.option_placeholder": "ÎĪΚÎģÎŋÎŗÎŽ {number}",
"compose_form.poll.remove_option": "ÎĪÎąÎ¯ĪÎĩĪΡ ÎĩĪΚÎģÎŋÎŗÎŽĪ",
"compose_form.poll.switch_to_multiple": "ÎÎŊΡÎŧÎĪĪĪΡ δΡÎŧÎŋĪÎēĪĪΡĪÎˇĪ ÎŧÎĩ ĪÎŋÎģÎģÎąĪÎģÎĪ ÎĩĪΚÎģÎŋÎŗÎĪ",
"compose_form.poll.switch_to_single": "ÎÎŊΡÎŧÎĪĪĪΡ δΡÎŧÎŋĪÎēĪĪΡĪÎˇĪ ÎŧÎĩ ÎŧÎŋÎŊιδΚÎēÎŽ ÎĩĪΚÎģÎŋÎŗÎŽ",
- "compose_form.publish": "ÎΡÎŧÎŋĪίÎĩĪ
ĪΡ",
+ "compose_form.poll.type": "ÎŖĪĪ
Îģ",
+ "compose_form.publish": "ÎÎŊÎŦĪĪΡĪΡ",
"compose_form.publish_form": "ÎΡÎŧÎŋĪίÎĩĪ
ĪΡ",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "ÎĪÎŋθΎÎēÎĩĪ
ĪΡ ÎąÎģÎģÎąÎŗĪÎŊ",
- "compose_form.sensitive.hide": "{count, plural, one {ÎĪΚĪÎŽÎŧÎąÎŊĪΡ ĪÎŋÎģĪ
ÎŧÎĪÎŋĪ
ĪĪ ÎĩĪ
ÎąÎ¯ĪθΡĪÎŋ} other {ÎĪΚĪÎŽÎŧÎąÎŊĪΡ ĪÎŋÎģĪ
ÎŧÎĪĪÎŊ ĪĪ ÎĩĪ
ÎąÎ¯ĪθΡĪÎą}}",
- "compose_form.sensitive.marked": "{count, plural, one {ΤÎŋ ĪÎŋÎģĪ
ÎŧÎĪÎŋ ÎĪÎĩΚ ĪΡÎŧÎĩΚĪθÎĩί ĪĪ ÎĩĪ
ÎąÎ¯ĪθΡĪÎŋ} other {Τι ĪÎŋÎģĪ
ÎŧÎĪÎą ÎĪÎŋĪ
ÎŊ ĪΡÎŧÎĩΚĪθÎĩί ĪĪ ÎĩĪ
ÎąÎ¯ĪθΡĪÎą}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {ΤÎŋ ĪÎŋÎģĪ
ÎŧÎĪÎŋ δÎĩÎŊ ÎĪÎĩΚ ĪΡÎŧÎĩΚĪθÎĩί ĪĪ ÎĩĪ
ÎąÎ¯ĪθΡĪÎŋ} other {Τι ĪÎŋÎģĪ
ÎŧÎĪÎą δÎĩÎŊ ÎĪÎŋĪ
ÎŊ ĪΡÎŧÎĩΚĪθÎĩί ĪĪ ÎĩĪ
ÎąÎ¯ĪθΡĪÎą}}",
+ "compose_form.reply": "ÎĪÎŦÎŊĪΡĪΡ",
+ "compose_form.save_changes": "ÎÎŊΡÎŧÎĪĪĪΡ",
"compose_form.spoiler.marked": "ÎĪÎąÎ¯ĪÎĩĪΡ ĪĪÎŋÎĩΚδÎŋĪÎŋÎ¯ÎˇĪΡ ĪÎĩĪΚÎĩĪÎŋÎŧÎÎŊÎŋĪ
",
"compose_form.spoiler.unmarked": "Î ĪÎŋĪθΎÎēΡ ĪĪÎŋÎĩΚδÎŋĪÎŋÎ¯ÎˇĪÎˇĪ ĪÎĩĪΚÎĩĪÎŋÎŧÎÎŊÎŋĪ
",
- "compose_form.spoiler_placeholder": "ÎĪÎŦĪÎĩ ĪΡÎŊ ĪĪÎŋÎĩΚδÎŋĪÎŋÎ¯ÎˇĪÎŽ ĪÎŋĪ
ÎĩδĪ",
+ "compose_form.spoiler_placeholder": "Î ĪÎŋÎĩΚδÎŋĪÎŋÎ¯ÎˇĪΡ ĪÎĩĪΚÎĩĪÎŋÎŧÎÎŊÎŋĪ
(ĪĪÎŋιΚĪÎĩĪΚÎēÎŽ)",
"confirmation_modal.cancel": "ÎÎēĪ
ĪÎŋ",
"confirmations.block.block_and_report": "ÎĪÎŋÎēÎģÎĩΚĪÎŧĪĪ & ÎÎŊÎąĪÎŋĪÎŦ",
"confirmations.block.confirm": "ÎĪÎŋÎēÎģÎĩΚĪÎŧĪĪ",
@@ -176,6 +186,7 @@
"conversation.mark_as_read": "ÎŖÎŽÎŧÎąÎŊĪΡ ĪĪ ÎąÎŊÎąÎŗÎŊĪĪÎŧÎÎŊÎŋ",
"conversation.open": "Î ĪÎŋβÎŋÎģÎŽ ĪĪ
ÎŊÎŋÎŧΚÎģÎ¯ÎąĪ",
"conversation.with": "ÎÎĩ {names}",
+ "copy_icon_button.copied": "ÎÎŊĪÎšÎŗĪÎŦĪΡÎēÎĩ ĪĪÎŋ ĪĪĪĪÎĩΚĪÎŋ",
"copypaste.copied": "ÎÎŊĪÎšÎŗĪÎŦĪΡÎēÎĩ",
"copypaste.copy_to_clipboard": "ÎÎŊĪÎšÎŗĪÎąĪÎŽ ĪĪÎŋ ĪĪĪĪÎĩΚĪÎŋ",
"directory.federated": "ÎĪĪ ĪÎŋ ÎŗÎŊĪĪĪĪ fediverse",
@@ -252,6 +263,9 @@
"filter_modal.select_filter.subtitle": "ΧĪΡĪΚÎŧÎŋĪÎŋΚΎĪĪÎĩ ÎŧΚι Ī
ĪÎŦĪĪÎŋĪ
ĪÎą ÎēÎąĪÎˇÎŗÎŋĪÎ¯Îą ÎŽ δΡÎŧΚÎŋĪ
ĪÎŗÎŽĪĪÎĩ ÎŧΚι ÎŊÎÎą",
"filter_modal.select_filter.title": "ÎĻΚÎģĪĪÎŦĪΚĪÎŧÎą ÎąĪ
ĪÎŽĪ ĪÎˇĪ ÎąÎŊÎŦĪĪΡĪΡĪ",
"filter_modal.title.status": "ÎĻΚÎģĪĪÎŦĪΚĪÎŧÎą ÎŧÎšÎąĪ ÎąÎŊÎŦĪĪΡĪΡĪ",
+ "firehose.all": "ÎÎģÎą",
+ "firehose.local": "ÎĪ
ĪĪĪ Îŋ δΚιÎēÎŋÎŧΚĪĪÎŽĪ",
+ "firehose.remote": "ÎÎģÎģÎŋΚ δΚιÎēÎŋÎŧΚĪĪÎĪ",
"follow_request.authorize": "ÎΞÎŋĪ
ĪΚÎŋδĪĪΡĪÎĩ",
"follow_request.reject": "ÎĪÎĪĪΚĪÎĩ",
"follow_requests.unlocked_explanation": "Î ÎąĪĪÎģÎŋ ĪÎŋĪ
Îŋ ÎģÎŋÎŗÎąĪΚιĪÎŧĪĪ ĪÎŋĪ
δÎĩÎŊ ÎĩίÎŊιΚ ÎēÎģÎĩΚδĪÎŧÎÎŊÎŋĪ, ĪÎŋ ĪĪÎŋĪĪĪΚÎēĪ ĪÎŋĪ
{domain} θÎĩĪĪΡĪÎąÎŊ ĪĪĪ Î¯ĪĪĪ ÎŊÎą θÎÎģÎĩÎšĪ ÎŊÎą ÎĩÎģÎÎŗÎžÎĩÎšĪ ĪÎĩΚĪÎŋÎēίÎŊΡĪÎą ÎąĪ
ĪÎŦ ĪÎą ιΚĪÎŽÎŧÎąĪÎą ÎąÎēÎŋÎģÎŋĪθΡĪΡĪ.",
@@ -277,11 +291,15 @@
"hashtag.column_settings.tag_toggle": "Î ĪÎŋĪθΎÎēΡ ÎĩĪΚĪÎģÎÎŋÎŊ ĪÎąÎŧĪÎĩÎģĪÎŊ ÎŗÎšÎą ĪΡÎŊ ÎēÎŋÎģĪÎŊÎą",
"hashtag.follow": "Î ÎąĪÎąÎēÎŋÎģÎŋĪθΡĪΡ ÎĩĪΚÎēÎĪÎąĪ",
"hashtag.unfollow": "ÎΚιÎēÎŋĪÎŽ ĪÎąĪÎąÎēÎŋÎģÎŋĪθΡĪÎˇĪ ÎĩĪΚÎēÎĪÎąĪ",
+ "home.actions.go_to_suggestions": "ÎĪÎĩίĪÎĩ ÎŦĪÎŋÎŧÎą ÎŗÎšÎą ÎŊÎą ÎąÎēÎŋÎģÎŋĪ
θΎĪÎĩĪÎĩ",
"home.column_settings.basic": "ÎÎąĪΚÎēÎĪ ĪĪ
θÎŧίĪÎĩΚĪ",
"home.column_settings.show_reblogs": "ÎÎŧĪÎŦÎŊΚĪΡ ĪĪÎŋĪθΎĪÎĩĪÎŊ",
"home.column_settings.show_replies": "ÎÎŧĪÎŦÎŊΚĪΡ ÎąĪÎąÎŊĪÎŽĪÎĩĪÎŊ",
"home.explore_prompt.body": "Your home feed will have a mix of posts from the hashtags you've chosen to follow, the people you've chosen to follow, and the posts they boost. If that feels too quiet, you may want to:\nÎ ĪĪÎŋĪÎŋδÎŋĪÎ¯Îą ĪÎˇĪ ÎąĪĪΚÎēÎŽĪ ĪÎĩÎģÎ¯Î´ÎąĪ ĪÎąĪ ÎĩίÎŊιΚ ÎÎŊÎą ÎŧÎ¯ÎŗÎŧÎą ÎąĪĪ ÎąÎŊÎąĪĪÎŽĪÎĩÎšĪ ÎŧÎĩ ĪÎšĪ ÎĩĪΚÎēÎĪÎĩĪ ÎēιΚ ĪÎą ÎŦĪÎŋÎŧÎą ĪÎŋĪ
ÎĩĪΚÎģÎΞιĪÎĩ ÎŊÎą ÎąÎēÎŋÎģÎŋĪ
θÎĩίĪÎĩ, ÎēιΚ ĪÎšĪ ÎąÎŊÎąĪĪÎŽĪÎĩÎšĪ ĪÎŋĪ
ĪĪÎŋĪθÎŋĪÎŊ. ÎÎŦÎŊ ÎąĪ
ĪĪ ĪÎąĪ ĪÎąÎ¯ÎŊÎĩĪιΚ ĪÎŋÎģĪ ÎŽĪĪ
ĪÎŋ, ÎŧĪÎŋĪÎĩί ÎŊÎą θÎÎģÎĩĪÎĩ:",
+ "home.explore_prompt.title": "ÎĪ
ĪĪ ÎĩίÎŊιΚ ĪÎŋ ĪĪίĪΚ ĪÎąĪ ĪĪÎŋ Mastodon.",
"home.hide_announcements": "ÎĪĪÎēĪĪ
ĪΡ ÎąÎŊÎąÎēÎŋΚÎŊĪĪÎĩĪÎŊ",
+ "home.pending_critical_update.link": "ÎÎĩίĪÎĩ ÎĩÎŊΡÎŧÎĩĪĪĪÎĩΚĪ",
+ "home.pending_critical_update.title": "ÎĪίĪΚÎŧΡ ÎĩÎŊΡÎŧÎĪĪĪΡ ÎąĪĪÎąÎģÎĩÎ¯ÎąĪ Î´ÎšÎąÎ¸ÎĪΚÎŧΡ!",
"home.show_announcements": "ÎÎŧĪÎŦÎŊΚĪΡ ÎąÎŊÎąÎēÎŋΚÎŊĪĪÎĩĪÎŊ",
"interaction_modal.description.follow": "ÎÎĩ ÎÎŊÎąÎŊ ÎģÎŋÎŗÎąĪΚιĪÎŧĪ Mastodon, ÎŧĪÎŋĪÎĩÎ¯Ī ÎŊÎą ÎąÎēÎŋÎģÎŋĪ
θΎĪÎĩÎšĪ ĪÎŋÎŊ/ĪΡÎŊ {name} ĪĪĪÎĩ ÎŊÎą ÎģÎąÎŧβÎŦÎŊÎĩÎšĪ ĪÎšĪ ÎąÎŊÎąĪĪÎŽĪÎĩÎšĪ ĪÎŋĪ
/ĪÎˇĪ ĪĪΡ δΚÎēÎŽ ĪÎŋĪ
ĪÎŋÎŽ.",
"interaction_modal.description.reblog": "ÎÎĩ ÎÎŊÎą ÎģÎŋÎŗÎąĪΚιĪÎŧĪ Mastodon, ÎŧĪÎŋĪÎĩÎ¯Ī ÎŊÎą ÎĩÎŊΚĪĪĪĪÎĩÎšĪ ÎąĪ
ĪÎŽ ĪΡÎŊ ÎąÎŊÎŦĪĪΡĪΡ ÎŗÎšÎą ÎŊÎą ĪΡ ÎŧÎŋΚĪÎąĪĪÎĩÎ¯Ī ÎŧÎĩ ĪÎŋĪ
Ī Î´ÎšÎēÎŋĪĪ ĪÎŋĪ
ÎąÎēÎŋÎģÎŋĪθÎŋĪ
Ī.",
@@ -306,6 +324,7 @@
"keyboard_shortcuts.direct": "ÎŗÎšÎą ĪÎŋ ÎŦÎŊÎŋÎšÎŗÎŧÎą ĪÎˇĪ ĪĪÎŽÎģÎˇĪ ÎšÎ´ÎšĪĪΚÎēĪÎŊ ÎĩĪΚĪΡÎŧÎŦÎŊĪÎĩĪÎŊ",
"keyboard_shortcuts.down": "ÎēίÎŊΡĪΡ ĪĪÎŋĪ ĪÎą ÎēÎŦĪĪ ĪĪΡ ÎģίĪĪÎą",
"keyboard_shortcuts.enter": "ÎÎŧĪÎŦÎŊΚĪΡ ÎąÎŊÎŦĪĪΡĪΡĪ",
+ "keyboard_shortcuts.favourite": "ÎÎŗÎąĪΡÎŧÎÎŊΡ δΡÎŧÎŋĪίÎĩĪ
ĪΡ",
"keyboard_shortcuts.federated": "ÎÎŊÎŋÎšÎŗÎŧÎą ĪÎŋÎŽĪ ĪĪ
ÎŊÎąÎģÎģÎąÎŗĪÎŊ",
"keyboard_shortcuts.heading": "ÎŖĪ
ÎŊĪÎŋÎŧÎĩĪĪÎĩÎšĪ ĪÎģΡÎēĪĪÎŋÎģÎŋÎŗÎ¯ÎŋĪ
",
"keyboard_shortcuts.home": "ÎÎŊÎŋÎšÎŗÎŧÎą ĪÎŋÎŽĪ ÎąĪĪΚÎēÎŽĪ ĪÎĩÎģÎ¯Î´ÎąĪ",
@@ -350,6 +369,7 @@
"lists.search": "ÎÎŊÎąÎļÎŽĪΡĪÎĩ ÎŧÎĩĪÎąÎžĪ ĪĪÎŊ ÎąÎŊθĪĪĪĪÎŊ ĪÎŋĪ
ÎąÎēÎŋĪ
ÎģÎŋĪ
θÎĩίĪ",
"lists.subheading": "ÎΚ ÎģίĪĪÎĩĪ ĪÎŋĪ
",
"load_pending": "{count, plural, one {# ÎŊÎÎŋ ĪĪÎŋΚĪÎĩίÎŋ} other {# ÎŊÎÎą ĪĪÎŋΚĪÎĩÎ¯Îą}}",
+ "loading_indicator.label": "ÎĻĪĪĪĪĪΡâĻ",
"media_gallery.toggle_visible": "{number, plural, one {ÎĪĪÎēĪĪ
ĪΡ ÎĩΚÎēĪÎŊÎąĪ} other {ÎĪĪÎēĪĪ
ĪΡ ÎĩΚÎēĪÎŊĪÎŊ}}",
"moved_to_account_banner.text": "Î ÎģÎŋÎŗÎąĪΚιĪÎŧĪĪ ĪÎŋĪ
{disabledAccount} ÎĩίÎŊιΚ ĪĪÎŋĪĪĪΚÎŊÎŦ ÎąĪÎĩÎŊÎĩĪÎŗÎŋĪÎŋΚΡÎŧÎÎŊÎŋĪ ÎĩĪÎĩΚδΎ ÎŧÎĩĪÎąĪÎĪθΡÎēÎĩĪ ĪĪÎŋÎŊ {movedToAccount}.",
"mute_modal.duration": "ÎΚÎŦĪÎēÎĩΚι",
@@ -363,7 +383,6 @@
"navigation_bar.direct": "ÎδΚĪĪΚÎēÎĪ ÎĩĪΚĪΡÎŧÎŦÎŊĪÎĩΚĪ",
"navigation_bar.discover": "ÎÎŊÎąÎēÎŦÎģĪ
ĪΡ",
"navigation_bar.domain_blocks": "ÎĪÎŋÎēÎģÎĩΚĪÎŧÎÎŊÎŋΚ ĪÎŋÎŧÎĩίĪ",
- "navigation_bar.edit_profile": "ÎĪÎĩΞÎĩĪÎŗÎąĪÎ¯Îą ĪĪÎŋĪίÎģ",
"navigation_bar.explore": "ÎΞÎĩĪÎĩĪÎŊΡĪΡ",
"navigation_bar.filters": "ÎĪÎŋĪΚĪĪΡÎŧÎÎŊÎĩĪ ÎģÎΞÎĩΚĪ",
"navigation_bar.follow_requests": "ÎΚĪÎŽÎŧÎąĪÎą ÎąÎēÎŋÎģÎŋĪθΡĪΡĪ",
@@ -372,6 +391,7 @@
"navigation_bar.lists": "ÎίĪĪÎĩĪ",
"navigation_bar.logout": "ÎĪÎŋĪĪÎŊδÎĩĪΡ",
"navigation_bar.mutes": "ÎĪÎŋĪΚĪĪΡÎŧÎÎŊÎŋΚ ĪĪÎŽĪĪÎĩĪ",
+ "navigation_bar.opened_in_classic_interface": "ÎΡÎŧÎŋĪΚÎĩĪĪÎĩΚĪ, ÎģÎŋÎŗÎąĪΚιĪÎŧÎŋί ÎēιΚ ÎŦÎģÎģÎĩĪ ĪĪ
ÎŗÎēÎĩÎēĪΚÎŧÎÎŊÎĩĪ ĪÎĩÎģίδÎĩĪ ÎąÎŊÎŋÎ¯ÎŗÎŋÎŊĪιΚ ÎąĪĪ ĪĪÎŋÎĩĪΚÎģÎŋÎŗÎŽ ĪĪΡÎŊ ÎēÎģÎąĪΚÎēÎŽ δΚÎĩĪÎąĪÎŽ ΚĪĪÎŋĪ.",
"navigation_bar.personal": "Î ĪÎŋĪĪĪΚÎēÎŦ",
"navigation_bar.pins": "ÎÎąĪĪΚĪĪĪÎŧÎÎŊÎĩĪ ÎąÎŊÎąĪĪÎŽĪÎĩΚĪ",
"navigation_bar.preferences": "Î ĪÎŋĪΚÎŧÎŽĪÎĩΚĪ",
@@ -395,6 +415,7 @@
"notifications.column_settings.admin.report": "ÎÎÎĩĪ ÎąÎŊÎąĪÎŋĪÎĪ:",
"notifications.column_settings.admin.sign_up": "ÎÎÎĩĪ ÎĩÎŗÎŗĪÎąĪÎĪ:",
"notifications.column_settings.alert": "ÎΚδÎŋĪÎŋΚΎĪÎĩÎšĪ ÎĩĪΚĪÎŦÎŊÎĩÎšÎąĪ ÎĩĪÎŗÎąĪÎ¯ÎąĪ",
+ "notifications.column_settings.favourite": "ÎÎŗÎąĪΡÎŧÎÎŊÎą:",
"notifications.column_settings.filter_bar.advanced": "ÎÎŧĪÎŦÎŊΚĪΡ ĪÎģĪÎŊ ĪĪÎŊ ÎēÎąĪÎˇÎŗÎŋĪΚĪÎŊ",
"notifications.column_settings.filter_bar.category": "ÎĪÎŦĪÎą ÎŗĪÎŽÎŗÎŋĪÎŋĪ
ĪίÎģĪĪÎŋĪ
",
"notifications.column_settings.filter_bar.show_bar": "ÎÎŧĪÎŦÎŊΚĪΡ ÎŧĪÎŦĪÎąĪ ĪίÎģĪĪÎŋĪ
",
@@ -431,6 +452,12 @@
"onboarding.actions.go_to_home": "Î ÎˇÎŗÎąÎ¯ÎŊÎĩĪÎĩ ĪĪΡÎŊ ÎąĪĪΚÎēÎŽ ĪÎąĪ ĪÎŋÎŽ",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting pointâyou can always unfollow them later!",
"onboarding.follows.title": "ÎΡÎŧÎŋĪΚÎģÎŽ ĪĪÎŋ Mastodon",
+ "onboarding.profile.note": "ÎΚÎŋÎŗĪÎąĪΚÎēĪ",
+ "onboarding.profile.note_hint": "ÎĪÎŋĪÎĩίĪÎĩ ÎŊÎą @ÎąÎŊÎąĪÎĪÎĩĪÎĩ ÎŦÎģÎģÎą ÎŦĪÎŋÎŧÎą ÎŽ #hashtagsâĻ",
+ "onboarding.profile.save_and_continue": "ÎĪÎŋθΎÎēÎĩĪ
ĪΡ ÎēιΚ ĪĪ
ÎŊÎĪÎĩΚι",
+ "onboarding.profile.title": "ÎĄĪθÎŧΚĪΡ ĪĪÎŋĪίÎģ",
+ "onboarding.profile.upload_avatar": "ÎÎĩĪÎąĪĪĪĪĪĪΡ ÎĩΚÎēĪÎŊÎąĪ ĪĪÎŋĪίÎģ",
+ "onboarding.profile.upload_header": "ÎÎĩĪÎąĪĪĪĪĪĪΡ ÎēÎĩĪÎąÎģÎ¯Î´ÎąĪ ĪĪÎŋĪίÎģ",
"onboarding.share.lead": "Let people know how they can find you on Mastodon!\nÎÎŊΡÎŧÎĩĪĪĪĪÎĩ ÎŦÎģÎģÎą ÎŦĪÎŋÎŧÎą ĪĪĪ ÎŧĪÎŋĪÎŋĪÎŊ ÎŊÎą ĪÎąĪ Î˛ĪÎŋĪ
ÎŊ ĪĪÎŋ Mastodon!",
"onboarding.share.next_steps": "ΠΚθιÎŊÎŦ ÎĩĪĪÎŧÎĩÎŊÎą βΎÎŧÎąĪÎą:",
"onboarding.start.lead": "Your new Mastodon account is ready to go. Here's how you can make the most of it:",
@@ -439,6 +466,7 @@
"onboarding.steps.follow_people.body": "You curate your own feed. Lets fill it with interesting people.",
"onboarding.steps.follow_people.title": "Follow {count, plural, one {one person} other {# people}}",
"onboarding.steps.publish_status.body": "Say hello to the world.",
+ "onboarding.steps.publish_status.title": "ÎÎŦÎŊĪÎĩ ĪΡÎŊ ĪĪĪĪΡ ĪÎąĪ Î´ÎˇÎŧÎŋĪίÎĩĪ
ĪΡ",
"onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
"onboarding.steps.setup_profile.title": "Customize your profile",
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
@@ -448,6 +476,7 @@
"picture_in_picture.restore": "ÎÎŦÎģÎĩ ĪÎŋ ĪίĪĪ",
"poll.closed": "ÎÎģÎĩΚĪĪÎŽ",
"poll.refresh": "ÎÎŊÎąÎŊÎĪĪΡ",
+ "poll.reveal": "ÎÎĩίĪÎĩ ĪÎą ÎąĪÎŋĪÎĩÎģÎĪÎŧÎąĪÎą",
"poll.total_people": "{count, plural, one {# ÎŦĪÎŋÎŧÎŋ} other {# ÎŦĪÎŋÎŧÎą}}",
"poll.total_votes": "{count, plural, one {# ĪÎŽĪÎŋĪ} other {# ĪÎŽĪÎŋΚ}}",
"poll.vote": "ΨΎĪΚĪÎĩ",
@@ -456,16 +485,14 @@
"poll_button.add_poll": "Î ĪÎŋĪθΎÎēΡ δΡÎŧÎŋĪÎēĪĪΡĪΡĪ",
"poll_button.remove_poll": "ÎĪÎąÎ¯ĪÎĩĪΡ δΡÎŧÎŋĪÎēĪĪΡĪΡĪ",
"privacy.change": "Î ĪÎŋĪÎąĪÎŧÎŋÎŗÎŽ ΚδΚĪĪΚÎēĪĪΡĪÎąĪ ÎąÎŊÎŦĪĪΡĪΡĪ",
- "privacy.direct.long": "ÎΡÎŧÎŋĪίÎĩĪ
ĪΡ ÎŧĪÎŊÎŋ ĪÎĩ ĪĪÎŋĪ
Ī ÎĩĪΚĪΡÎŧÎąÎ¯ÎŊÎŋÎŊĪιΚ",
- "privacy.direct.short": "ÎÎŊÎąĪÎĩĪĪÎŧÎĩÎŊÎą ÎŦĪÎŋÎŧÎą ÎŧĪÎŊÎŋ",
- "privacy.private.long": "ÎĪÎąĪĪ ÎŧĪÎŊÎŋ ÎŗÎšÎą ĪÎŋĪ
Ī ÎąÎēÎŋÎģÎŋĪθÎŋĪ
Ī",
- "privacy.private.short": "ÎĪÎŊÎŋ ÎąÎēĪÎģÎŋĪ
θÎŋΚ",
- "privacy.public.long": "ÎĪÎąĪĪ ĪÎĩ ĪÎģÎŋĪ
Ī",
+ "privacy.direct.long": "ÎÎģÎŋΚ ĪĪÎŋΚ ÎąÎŊÎąĪÎĪθΡÎēÎąÎŊ ĪĪΡ δΡÎŧÎŋĪίÎĩĪ
ĪΡ",
+ "privacy.direct.short": "ÎŖĪ
ÎŗÎēÎĩÎēĪΚÎŧÎÎŊÎą ÎŦĪÎŋÎŧÎą",
+ "privacy.private.long": "ÎĪÎŊÎŋ ÎŋΚ ÎąÎēĪÎģÎŋĪ
θÎŋί ĪÎąĪ",
+ "privacy.private.short": "ÎÎēĪÎģÎŋĪ
θÎŋΚ",
"privacy.public.short": "ÎΡÎŧĪĪΚÎŋ",
- "privacy.unlisted.long": "ÎĪÎąĪĪ ÎŗÎšÎą ĪÎģÎŋĪ
Ī, ÎĩÎēĪĪĪ ÎąĪ
ĪĪÎŊ ĪÎŋĪ
δÎĩÎŊ ĪĪ
ÎŧÎŧÎĩĪÎĪÎŋĪ
ÎŊ ĪÎĩ δĪ
ÎŊÎąĪĪĪΡĪÎĩĪ ÎąÎŊÎąÎēÎŦÎģĪ
ĪΡĪ",
- "privacy.unlisted.short": "ÎΡ ÎēÎąĪÎąĪĪĪΡÎŧÎÎŊÎą",
"privacy_policy.last_updated": "ΤÎĩÎģÎĩĪ
ĪÎąÎ¯Îą ÎĩÎŊΡÎŧÎĪĪĪΡ {date}",
"privacy_policy.title": "Î ÎŋÎģΚĪΚÎēÎŽ ÎĪÎŋĪĪÎŽĪÎŋĪ
",
+ "recommended": "Î ĪÎŋĪÎĩΚÎŊĪÎŧÎĩÎŊÎą",
"refresh": "ÎÎŊÎąÎŊÎĪĪΡ",
"regeneration_indicator.label": "ÎĻÎŋĪĪĪÎŊÎĩΚâĻ",
"regeneration_indicator.sublabel": "Î ÎąĪĪΚÎēÎŽ ĪÎŋĪ
ĪÎŋÎŽ ÎĩĪÎŋΚÎŧÎŦÎļÎĩĪιΚ!",
@@ -481,8 +508,10 @@
"relative_time.seconds": "{number}δ",
"relative_time.today": "ĪÎŽÎŧÎĩĪÎą",
"reply_indicator.cancel": "ÎÎēĪ
ĪÎŋ",
+ "reply_indicator.poll": "ÎΡÎŧÎŋĪÎēĪĪΡĪΡ",
"report.block": "ÎĪÎŋÎēÎģÎĩΚĪÎŧĪĪ",
"report.block_explanation": "ÎÎĩÎŊ θι βÎģÎĪÎĩÎšĪ ĪÎšĪ ÎąÎŊÎąĪĪÎŽĪÎĩÎšĪ ĪÎŋĪ
. ÎÎĩÎŊ θι ÎŧĪÎŋĪÎĩί ÎŊÎą δÎĩΚ ĪÎšĪ ÎąÎŊÎąĪĪÎŽĪÎĩÎšĪ ĪÎŋĪ
ÎŽ ÎŊÎą ĪÎĩ ÎąÎēÎŋÎģÎŋĪ
θΎĪÎĩΚ. ÎÎą ÎŧĪÎŋĪÎĩί ÎŊÎą δÎĩΚ ĪĪΚ ÎĪÎĩΚ ÎąĪÎŋÎēÎģÎĩΚĪĪÎĩί.",
+ "report.categories.legal": "ÎÎŋÎŧΚÎēĪ ĪÎĩĪΚÎĩĪĪÎŧÎĩÎŊÎŋ",
"report.categories.other": "ÎÎģÎģÎĩĪ",
"report.categories.spam": "ÎÎŊÎĩĪΚθĪÎŧΡĪÎą",
"report.categories.violation": "ΤÎŋ ĪÎĩĪΚÎĩĪĪÎŧÎĩÎŊÎŋ ĪÎąĪιβΚÎŦÎļÎĩΚ ÎÎŊÎąÎŊ ÎŽ ĪÎĩĪΚĪĪĪĪÎĩĪÎŋĪ
Ī ÎēÎąÎŊĪÎŊÎĩĪ Î´ÎšÎąÎēÎŋÎŧΚĪĪÎŽ",
@@ -500,6 +529,8 @@
"report.placeholder": "ÎĪΚĪÎģÎÎŋÎŊ ĪĪĪÎģΚι",
"report.reasons.dislike": "ÎÎĩÎŊ ÎŧÎŋĪ
ÎąĪÎĪÎĩΚ",
"report.reasons.dislike_description": "ÎÎĩÎŊ ÎĩίÎŊιΚ ÎēÎŦĪΚ ĪÎŋĪ
θι ΎθÎĩÎģÎĩĪ ÎŊÎą δÎĩΚĪ",
+ "report.reasons.legal": "ÎίÎŊιΚ ĪÎąĪÎŦÎŊÎŋÎŧÎŋ",
+ "report.reasons.legal_description": "ΠΚĪĪÎĩĪÎĩĪÎĩ ĪĪΚ ĪÎąĪιβΚÎŦÎļÎĩΚ ĪÎŋ ÎŊĪÎŧÎŋ ĪÎˇĪ ĪĪĪÎąĪ ĪÎąĪ ÎŽ ĪÎˇĪ ĪĪĪÎąĪ ĪÎŋĪ
δΚιÎēÎŋÎŧΚĪĪÎŽ",
"report.reasons.other": "ÎίÎŊιΚ ÎēÎŦĪΚ ÎŦÎģÎģÎŋ",
"report.reasons.other_description": "ΤÎŋ ÎļÎŽĪΡÎŧÎą δÎĩÎŊ ĪιΚĪΚÎŦÎļÎĩΚ ĪÎĩ ÎŦÎģÎģÎĩĪ ÎēÎąĪÎˇÎŗÎŋĪίÎĩĪ",
"report.reasons.spam": "ÎίÎŊιΚ ĪĪÎąÎŧ",
@@ -533,10 +564,12 @@
"search.search_or_paste": "ÎÎŊÎąÎļÎŽĪΡĪΡ ÎŽ ÎĩΚĪÎąÎŗĪÎŗÎŽ URL",
"search_popout.quick_actions": "ÎĪÎŽÎŗÎŋĪÎĩĪ ÎĩÎŊÎĪÎŗÎĩΚÎĩĪ",
"search_popout.recent": "Î ĪĪĪĪÎąĪÎĩĪ ÎąÎŊÎąÎļΡĪÎŽĪÎĩΚĪ",
+ "search_popout.user": "ĪĪÎŽĪĪΡĪ",
"search_results.accounts": "Î ĪÎŋĪίÎģ",
"search_results.all": "ÎÎģÎą",
"search_results.hashtags": "ÎĪΚÎēÎĪÎĩĪ",
"search_results.nothing_found": "ÎÎĩÎŊ βĪÎθΡÎēÎĩ ĪίĪÎŋĪÎą ÎŧÎĩ ÎąĪ
ĪÎŋĪĪ ĪÎŋĪ
Ī ĪĪÎŋĪ
Ī ÎąÎŊÎąÎļÎŽĪΡĪΡĪ",
+ "search_results.see_all": "ÎÎĩĪ ĪÎą ĪÎģÎą",
"search_results.statuses": "ÎÎŊÎąĪĪÎŽĪÎĩΚĪ",
"search_results.title": "ÎÎŊÎąÎļÎŽĪΡĪΡ ÎŗÎšÎą {q}",
"server_banner.about_active_users": "ÎĪÎŋÎŧÎą ĪÎŋĪ
ĪĪΡĪΚÎŧÎŋĪÎŋΚÎŋĪÎŊ ÎąĪ
ĪĪÎŊ ĪÎŋÎŊ δΚιÎēÎŋÎŧΚĪĪÎŽ ÎēÎąĪÎŦ ĪÎšĪ ĪÎĩÎģÎĩĪ
ĪÎąÎ¯ÎĩĪ 30 ΡÎŧÎĪÎĩĪ (ÎΡÎŊÎšÎąÎ¯Îą ÎÎŊÎĩĪÎŗÎŋί ΧĪÎŽĪĪÎĩĪ)",
@@ -547,6 +580,8 @@
"server_banner.server_stats": "ÎŖĪÎąĪΚĪĪΚÎēÎŦ δΚιÎēÎŋÎŧΚĪĪÎŽ:",
"sign_in_banner.create_account": "ÎΡÎŧΚÎŋĪ
ĪÎŗÎ¯Îą ÎģÎŋÎŗÎąĪΚιĪÎŧÎŋĪ",
"sign_in_banner.sign_in": "ÎŖĪÎŊδÎĩĪΡ",
+ "sign_in_banner.sso_redirect": "ÎŖĪ
ÎŊδÎĩθÎĩίĪÎĩ ÎŽ ÎÎŗÎŗĪÎąĪÎĩίĪÎĩ",
+ "sign_in_banner.text": "ÎŖĪ
ÎŊδÎĩθÎĩίĪÎĩ ÎŗÎšÎą ÎŊÎą ÎąÎēÎŋÎģÎŋĪ
θΎĪÎĩĪÎĩ ĪĪÎŋĪίÎģ ÎŽ ÎĩĪΚÎēÎĪÎĩĪ, ÎąÎŗÎąĪÎŽĪĪÎĩ, ÎŧÎŋΚĪÎąĪĪÎĩίĪÎĩ ÎēιΚ ÎąĪÎąÎŊĪÎŽĪĪÎĩ ĪÎĩ δΡÎŧÎŋĪΚÎĩĪĪÎĩΚĪ. ÎĪÎŋĪÎĩίĪÎĩ ÎĩĪίĪÎˇĪ ÎŊÎą ÎąÎģÎģΡÎģÎĩĪΚδĪÎŦĪÎĩĪÎĩ ÎąĪĪ ĪÎŋÎŊ ÎģÎŋÎŗÎąĪΚιĪÎŧĪ ĪÎąĪ ĪÎĩ δΚιĪÎŋĪÎĩĪΚÎēĪ Î´ÎšÎąÎēÎŋÎŧΚĪĪÎŽ.",
"status.admin_account": "ÎÎŊÎŋÎšÎŗÎŧÎą δΚÎĩĪÎąĪÎŽĪ ĪĪ
ÎŊĪÎŋÎŊΚĪÎŧÎŋĪ ÎŗÎšÎą ĪÎŋÎŊ/ĪΡÎŊ @{name}",
"status.admin_domain": "ÎÎŊÎŋÎšÎŗÎŧÎą ÎģÎĩΚĪÎŋĪ
ĪÎŗÎ¯ÎąĪ Î´ÎšÎąÎŧÎĩĪÎŋÎģÎŦβΡĪÎˇĪ ÎŗÎšÎą {domain}",
"status.admin_status": "ÎÎŊÎŋÎšÎŗÎŧÎą ÎąĪ
ĪÎŽĪ ĪÎˇĪ ÎąÎŊÎŦĪĪΡĪÎˇĪ ĪÎĩ δΚÎĩĪÎąĪÎŽ ĪĪ
ÎŊĪÎŋÎŊΚĪÎŧÎŋĪ",
@@ -563,6 +598,7 @@
"status.edited": "ÎĪÎĩΞÎĩĪÎŗÎŦĪĪΡÎēÎĩ ĪĪÎšĪ {date}",
"status.edited_x_times": "ÎĪÎĩΞÎĩĪÎŗÎŦĪĪΡÎēÎĩ {count, plural, one {{count} ĪÎŋĪÎŦ} other {{count} ĪÎŋĪÎĪ}}",
"status.embed": "ÎÎŊĪĪÎŧÎŦĪĪĪÎĩ",
+ "status.favourite": "ÎÎŗÎąĪΡÎŧÎÎŊÎą",
"status.filter": "ÎĻΚÎģĪĪÎŦĪΚĪÎŧÎą ÎąĪ
ĪÎŽĪ ĪÎˇĪ ÎąÎŊÎŦĪĪΡĪΡĪ",
"status.filtered": "ÎĻΚÎģĪĪÎąĪΚĪÎŧÎÎŊÎą",
"status.hide": "ÎĪĪÎēĪĪ
ĪΡ ÎąÎŊÎŦĪĪΡĪΡĪ",
@@ -627,10 +663,8 @@
"upload_error.poll": "ÎŖĪÎšĪ Î´ÎˇÎŧÎŋĪÎēÎŋĪÎŽĪÎĩÎšĪ Î´ÎĩÎŊ ÎĩĪΚĪĪÎĪÎĩĪιΚ Ρ ÎŧÎĩĪÎąĪĪĪĪĪĪΡ ÎąĪĪÎĩίÎŋĪ
.",
"upload_form.audio_description": "Î ÎĩĪÎšÎŗĪÎąĪÎŽ ÎŗÎšÎą ÎŦĪÎŋÎŧÎą ÎŧÎĩ ĪĪÎŋβÎģÎŽÎŧÎąĪÎą ÎąÎēÎŋÎŽĪ",
"upload_form.description": "Î ÎĩĪÎšÎŗĪÎąĪÎŽ ÎŗÎšÎą ÎŦĪÎŋÎŧÎą ÎŧÎĩ ĪĪÎŋβÎģÎŽÎŧÎąĪÎą ĪĪÎąĪΡĪ",
- "upload_form.description_missing": "ÎÎĩÎŊ ĪĪÎŋĪĪÎθΡÎēÎĩ ĪÎĩĪÎšÎŗĪÎąĪÎŽ",
"upload_form.edit": "ÎĪÎĩΞÎĩĪÎŗÎąĪÎ¯Îą",
"upload_form.thumbnail": "ÎÎģÎģÎąÎŗÎŽ ÎŧΚÎēĪÎŋÎŗĪÎąĪÎ¯ÎąĪ",
- "upload_form.undo": "ÎÎšÎąÎŗĪÎąĪÎŽ",
"upload_form.video_description": "Î ÎĩĪÎšÎŗĪÎąĪÎŽ ÎŗÎšÎą ÎŦĪÎŋÎŧÎą ÎŧÎĩ ĪĪÎŋβÎģÎŽÎŧÎąĪÎą ÎąÎēÎŋÎŽĪ ÎŽ ĪĪÎąĪΡĪ",
"upload_modal.analyzing_picture": "ÎÎŊÎŦÎģĪ
ĪΡ ÎĩΚÎēĪÎŊÎąĪâĻ",
"upload_modal.apply": "ÎĪÎąĪÎŧÎŋÎŗÎŽ",
diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json
index 37e5efa5b..2cf1b4dba 100644
--- a/app/javascript/mastodon/locales/en-GB.json
+++ b/app/javascript/mastodon/locales/en-GB.json
@@ -87,7 +87,6 @@
"announcement.announcement": "Announcement",
"attachments_list.unprocessed": "(unprocessed)",
"audio.hide": "Hide audio",
- "autosuggest_hashtag.per_week": "{count} per week",
"boost_modal.combo": "You can press {combo} to skip this next time",
"bundle_column_error.copy_stacktrace": "Copy error report",
"bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.",
@@ -144,22 +143,12 @@
"compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
"compose_form.lock_disclaimer.lock": "locked",
"compose_form.placeholder": "What's on your mind?",
- "compose_form.poll.add_option": "Add a choice",
"compose_form.poll.duration": "Poll duration",
- "compose_form.poll.option_placeholder": "Choice {number}",
- "compose_form.poll.remove_option": "Remove this choice",
"compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
"compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
- "compose_form.publish": "Publish",
"compose_form.publish_form": "New post",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Save changes",
- "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}",
- "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}",
"compose_form.spoiler.marked": "Remove content warning",
"compose_form.spoiler.unmarked": "Add content warning",
- "compose_form.spoiler_placeholder": "Write your warning here",
"confirmation_modal.cancel": "Cancel",
"confirmations.block.block_and_report": "Block & Report",
"confirmations.block.confirm": "Block",
@@ -406,7 +395,6 @@
"navigation_bar.direct": "Private mentions",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Blocked domains",
- "navigation_bar.edit_profile": "Edit profile",
"navigation_bar.explore": "Explore",
"navigation_bar.favourites": "Favourites",
"navigation_bar.filters": "Muted words",
@@ -524,14 +512,7 @@
"poll_button.add_poll": "Add a poll",
"poll_button.remove_poll": "Remove poll",
"privacy.change": "Change post privacy",
- "privacy.direct.long": "Visible for mentioned users only",
- "privacy.direct.short": "Mentioned people only",
- "privacy.private.long": "Visible for followers only",
- "privacy.private.short": "Followers-only",
- "privacy.public.long": "Visible for all",
"privacy.public.short": "Public",
- "privacy.unlisted.long": "Visible for all, but opted-out of discovery features",
- "privacy.unlisted.short": "Unlisted",
"privacy_policy.last_updated": "Last updated {date}",
"privacy_policy.title": "Privacy Policy",
"recommended": "Recommended",
@@ -713,10 +694,8 @@
"upload_error.poll": "File upload not allowed with polls.",
"upload_form.audio_description": "Describe for people who are deaf or hard of hearing",
"upload_form.description": "Describe for people who are blind or have low vision",
- "upload_form.description_missing": "No description added",
"upload_form.edit": "Edit",
"upload_form.thumbnail": "Change thumbnail",
- "upload_form.undo": "Delete",
"upload_form.video_description": "Describe for people who are deaf, hard of hearing, blind or have low vision",
"upload_modal.analyzing_picture": "Analysing pictureâĻ",
"upload_modal.apply": "Apply",
diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json
index 2694dda3d..9942f30f2 100644
--- a/app/javascript/mastodon/locales/en.json
+++ b/app/javascript/mastodon/locales/en.json
@@ -89,7 +89,6 @@
"announcement.announcement": "Announcement",
"attachments_list.unprocessed": "(unprocessed)",
"audio.hide": "Hide audio",
- "autosuggest_hashtag.per_week": "{count} per week",
"boost_modal.combo": "You can press {combo} to skip this next time",
"bundle_column_error.copy_stacktrace": "Copy error report",
"bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.",
@@ -146,22 +145,20 @@
"compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
"compose_form.lock_disclaimer.lock": "locked",
"compose_form.placeholder": "What's on your mind?",
- "compose_form.poll.add_option": "Add a choice",
"compose_form.poll.duration": "Poll duration",
- "compose_form.poll.option_placeholder": "Choice {number}",
- "compose_form.poll.remove_option": "Remove this choice",
+ "compose_form.poll.multiple": "Multiple choice",
+ "compose_form.poll.option_placeholder": "Option {number}",
+ "compose_form.poll.single": "Pick one",
"compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
"compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
- "compose_form.publish": "Publish",
+ "compose_form.poll.type": "Style",
+ "compose_form.publish": "Post",
"compose_form.publish_form": "New post",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Save changes",
- "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}",
- "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}",
+ "compose_form.reply": "Reply",
+ "compose_form.save_changes": "Update",
"compose_form.spoiler.marked": "Remove content warning",
"compose_form.spoiler.unmarked": "Add content warning",
- "compose_form.spoiler_placeholder": "Write your warning here",
+ "compose_form.spoiler_placeholder": "Content warning (optional)",
"confirmation_modal.cancel": "Cancel",
"confirmations.block.block_and_report": "Block & Report",
"confirmations.block.confirm": "Block",
@@ -282,6 +279,12 @@
"follow_request.authorize": "Authorize",
"follow_request.reject": "Reject",
"follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+ "follow_suggestions.curated_suggestion": "Editors' Choice",
+ "follow_suggestions.dismiss": "Don't show again",
+ "follow_suggestions.personalized_suggestion": "Personalized suggestion",
+ "follow_suggestions.popular_suggestion": "Popular suggestion",
+ "follow_suggestions.view_all": "View all",
+ "follow_suggestions.who_to_follow": "Who to follow",
"followed_tags": "Followed hashtags",
"footer.about": "About",
"footer.directory": "Profiles directory",
@@ -308,13 +311,9 @@
"hashtag.follow": "Follow hashtag",
"hashtag.unfollow": "Unfollow hashtag",
"hashtags.and_other": "âĻand {count, plural, other {# more}}",
- "home.actions.go_to_explore": "See what's trending",
- "home.actions.go_to_suggestions": "Find people to follow",
"home.column_settings.basic": "Basic",
"home.column_settings.show_reblogs": "Show boosts",
"home.column_settings.show_replies": "Show replies",
- "home.explore_prompt.body": "Your home feed will have a mix of posts from the hashtags you've chosen to follow, the people you've chosen to follow, and the posts they boost. If that feels too quiet, you may want to:",
- "home.explore_prompt.title": "This is your home base within Mastodon.",
"home.hide_announcements": "Hide announcements",
"home.pending_critical_update.body": "Please update your Mastodon server as soon as possible!",
"home.pending_critical_update.link": "See updates",
@@ -410,7 +409,6 @@
"navigation_bar.direct": "Private mentions",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Blocked domains",
- "navigation_bar.edit_profile": "Edit profile",
"navigation_bar.explore": "Explore",
"navigation_bar.favourites": "Favorites",
"navigation_bar.filters": "Muted words",
@@ -529,14 +527,15 @@
"poll_button.add_poll": "Add a poll",
"poll_button.remove_poll": "Remove poll",
"privacy.change": "Change post privacy",
- "privacy.direct.long": "Visible for mentioned users only",
- "privacy.direct.short": "Mentioned people only",
- "privacy.private.long": "Visible for followers only",
- "privacy.private.short": "Followers only",
- "privacy.public.long": "Visible for all",
+ "privacy.direct.long": "Everyone mentioned in the post",
+ "privacy.direct.short": "Specific people",
+ "privacy.private.long": "Only your followers",
+ "privacy.private.short": "Followers",
+ "privacy.public.long": "Anyone on and off Mastodon",
"privacy.public.short": "Public",
- "privacy.unlisted.long": "Visible for all, but opted-out of discovery features",
- "privacy.unlisted.short": "Unlisted",
+ "privacy.unlisted.additional": "This behaves exactly like public, except the post will not appear in live feeds or hashtags, explore, or Mastodon search, even if you are opted-in account-wide.",
+ "privacy.unlisted.long": "Fewer algorithmic fanfares",
+ "privacy.unlisted.short": "Quiet public",
"privacy_policy.last_updated": "Last updated {date}",
"privacy_policy.title": "Privacy Policy",
"recommended": "Recommended",
@@ -554,7 +553,9 @@
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
"relative_time.today": "today",
+ "reply_indicator.attachments": "{count, plural, one {# attachment} other {# attachments}}",
"reply_indicator.cancel": "Cancel",
+ "reply_indicator.poll": "Poll",
"report.block": "Block",
"report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.",
"report.categories.legal": "Legal",
@@ -722,10 +723,8 @@
"upload_error.poll": "File upload not allowed with polls.",
"upload_form.audio_description": "Describe for people who are deaf or hard of hearing",
"upload_form.description": "Describe for people who are blind or have low vision",
- "upload_form.description_missing": "No description added",
"upload_form.edit": "Edit",
"upload_form.thumbnail": "Change thumbnail",
- "upload_form.undo": "Delete",
"upload_form.video_description": "Describe for people who are deaf, hard of hearing, blind or have low vision",
"upload_modal.analyzing_picture": "Analyzing pictureâĻ",
"upload_modal.apply": "Apply",
diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json
index 4daa699dc..907a918af 100644
--- a/app/javascript/mastodon/locales/eo.json
+++ b/app/javascript/mastodon/locales/eo.json
@@ -32,6 +32,7 @@
"account.featured_tags.last_status_never": "Neniu afiÅo",
"account.featured_tags.title": "Rekomendataj kradvortoj de {name}",
"account.follow": "Sekvi",
+ "account.follow_back": "Sekvu reen",
"account.followers": "Sekvantoj",
"account.followers.empty": "AnkoraÅ neniu sekvas Äi tiun uzanton.",
"account.followers_counter": "{count, plural, one{{counter} Sekvanto} other {{counter} Sekvantoj}}",
@@ -52,6 +53,7 @@
"account.mute_notifications_short": "Silentigu Sciigojn",
"account.mute_short": "Silentigu",
"account.muted": "Silentigita",
+ "account.mutual": "Reciproka",
"account.no_bio": "Neniu priskribo estas provizita.",
"account.open_original_page": "Malfermi la originalan paÄon",
"account.posts": "AfiÅoj",
@@ -87,7 +89,6 @@
"announcement.announcement": "Anoncoj",
"attachments_list.unprocessed": "(neprilaborita)",
"audio.hide": "KaÅi aÅdion",
- "autosuggest_hashtag.per_week": "po {count} por semajno",
"boost_modal.combo": "Vi povas premi {combo} por preterpasi sekvafoje",
"bundle_column_error.copy_stacktrace": "Kopii la eraran raporton",
"bundle_column_error.error.body": "La petita paÄo ne povas redonitis. Eble estas eraro.",
@@ -144,22 +145,12 @@
"compose_form.lock_disclaimer": "Via konto ne estas {locked}. Iu ajn povas sekvi vin por vidi viajn afiÅojn nur al la sekvantoj.",
"compose_form.lock_disclaimer.lock": "Ålosita",
"compose_form.placeholder": "Kion vi pensas?",
- "compose_form.poll.add_option": "Aldoni elekteblon",
"compose_form.poll.duration": "DaÅro de la balotenketo",
- "compose_form.poll.option_placeholder": "Elekteblo {number}",
- "compose_form.poll.remove_option": "Forigi Äi tiu elekteblon",
"compose_form.poll.switch_to_multiple": "ÅanÄi la balotenketon por permesi multajn elektojn",
"compose_form.poll.switch_to_single": "ÅanÄi la balotenketon por permesi unu solan elekton",
- "compose_form.publish": "AfiÅi",
"compose_form.publish_form": "AfiÅi",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Konservi ÅanÄojn",
- "compose_form.sensitive.hide": "{count, plural, one {Marki la plurmedio kiel tikla} other {Marki la plurmedioj kiel tiklaj}}",
- "compose_form.sensitive.marked": "{count, plural, one {La plurmedio estas markita kiel tikla} other {La plurmedioj estas markitaj kiel tiklaj}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {La plurmedio ne estas markita kiel tikla} other {La plurmedioj ne estas markitaj kiel tiklaj}}",
"compose_form.spoiler.marked": "Forigi la averton de enhavo",
"compose_form.spoiler.unmarked": "Aldoni averton de enhavo",
- "compose_form.spoiler_placeholder": "Skribu vian averton Äi tie",
"confirmation_modal.cancel": "Nuligi",
"confirmations.block.block_and_report": "Bloki kaj raporti",
"confirmations.block.confirm": "Bloki",
@@ -406,7 +397,6 @@
"navigation_bar.direct": "Privataj mencioj",
"navigation_bar.discover": "Esplori",
"navigation_bar.domain_blocks": "Blokitaj domajnoj",
- "navigation_bar.edit_profile": "Redakti profilon",
"navigation_bar.explore": "Esplori",
"navigation_bar.favourites": "Stelumoj",
"navigation_bar.filters": "Silentigitaj vortoj",
@@ -509,6 +499,8 @@
"onboarding.tips.2fa": "
Äu vi scias? Vi povas sekurigi vian konton per efektivigi dufaktora autentigo en via kontoagordoj.",
"onboarding.tips.accounts_from_other_servers": "
Äu vi scias? Äar Mastodon estas sencentra, kelkaj profiloj kiujn vi trovi estas gastigitaj Äe aliaj serviloj kiuj ne estas via.",
"onboarding.tips.migration": "
Äu vi scias? Se vi sentas ke {domain} ne estas bona servilelekto por vi en la estonteco, vi povas translokiÄi al alia servilo de Mastodon sen malgajni viajn sekvantojn.",
+ "onboarding.tips.verification": "
Äu vi sciis? Vi povas kontroli vian konton metante ligilon al via Mastodon-profilo en via propra retejo kaj aldonante la retejon al via profilo. Neniuj kotizoj aÅ dokumentoj necesaj!",
+ "password_confirmation.exceeds_maxlength": "Pasvorto-konfirmo superas la maksimuman pasvortan longon",
"password_confirmation.mismatching": "Pasvorto konfirmo ne kongruas",
"picture_in_picture.restore": "Remetu Äin",
"poll.closed": "Finita",
@@ -522,16 +514,10 @@
"poll_button.add_poll": "Aldoni balotenketon",
"poll_button.remove_poll": "Forigi balotenketon",
"privacy.change": "Agordi mesaÄan privatecon",
- "privacy.direct.long": "Videbla nur al menciitaj uzantoj",
- "privacy.direct.short": "Nur menciitaj personoj",
- "privacy.private.long": "Videbla nur al viaj sekvantoj",
- "privacy.private.short": "Nur abonantoj",
- "privacy.public.long": "Videbla por Äiuj",
"privacy.public.short": "Publika",
- "privacy.unlisted.long": "Videbla por Äiuj, sed ekskluzive el la funkcio de esploro",
- "privacy.unlisted.short": "Nelistigita",
"privacy_policy.last_updated": "Laste Äisdatigita en {date}",
"privacy_policy.title": "Politiko de privateco",
+ "recommended": "Rekomendita",
"refresh": "RefreÅigu",
"regeneration_indicator.label": "ÅargadoâĻ",
"regeneration_indicator.sublabel": "Via abonfluo estas preparata!",
@@ -549,6 +535,7 @@
"reply_indicator.cancel": "Nuligi",
"report.block": "Bloki",
"report.block_explanation": "Vi ne vidos iliajn afiÅojn. Ili ne povos vidi viajn afiÅojn, nek sekvi vin. Ili ne scios, ke vi blokas ilin.",
+ "report.categories.legal": "LaÅleÄa",
"report.categories.other": "Aliaj",
"report.categories.spam": "TrudmesaÄo",
"report.categories.violation": "Enhavo malobservas unu aÅ plurajn servilajn regulojn",
@@ -587,6 +574,7 @@
"report.unfollow": "Malsekvi @{name}",
"report.unfollow_explanation": "Vi sekvas Äi tiun konton. Por ne plu vidi Äiajn afiÅojn en via hejma templinio, Äesu sekvi Äin.",
"report_notification.attached_statuses": "{count, plural, one {{count} afiÅo almetita} other {{count} afiÅoj almetitaj}}",
+ "report_notification.categories.legal": "LaÅleÄa",
"report_notification.categories.other": "Alia",
"report_notification.categories.spam": "TrudmesaÄo",
"report_notification.categories.violation": "Malobservo de la regulo",
@@ -599,13 +587,19 @@
"search.quick_action.open_url": "Malfermi URL en Mastodono",
"search.quick_action.status_search": "AfiÅoj kiuj kongruas kun {x}",
"search.search_or_paste": "SerÄu aÅ algluu URL-on",
+ "search_popout.full_text_search_disabled_message": "Ne havebla sur {domain}.",
+ "search_popout.full_text_search_logged_out_message": "Disponebla nur kiam ensalutinte.",
+ "search_popout.language_code": "ISO-lingva kodo",
+ "search_popout.options": "SerÄaj opcioj",
"search_popout.quick_actions": "Rapidaj agoj",
"search_popout.recent": "Lastaj serÄoj",
+ "search_popout.specific_date": "specifa dato",
"search_popout.user": "uzanto",
"search_results.accounts": "Profiloj",
"search_results.all": "Äiuj",
"search_results.hashtags": "Kradvortoj",
"search_results.nothing_found": "Povis trovi nenion por Äi tiuj serÄaj terminoj",
+ "search_results.see_all": "Vidu Äiujn",
"search_results.statuses": "AfiÅoj",
"search_results.title": "SerÄ-rezultoj por {q}",
"server_banner.about_active_users": "Personoj uzantaj Äi tiun servilon dum la lastaj 30 tagoj (Aktivaj Uzantoj Monate)",
@@ -616,6 +610,8 @@
"server_banner.server_stats": "Statistikoj de la servilo:",
"sign_in_banner.create_account": "Krei konton",
"sign_in_banner.sign_in": "Saluti",
+ "sign_in_banner.sso_redirect": "Ensalutu aÅ RegistriÄi",
+ "sign_in_banner.text": "Ensalutu por sekvi profilojn aÅ haÅetikedojn, Åatatajn, dividi kaj respondi afiÅojn. Vi ankaÅ povas interagi de via konto sur alia servilo.",
"status.admin_account": "Malfermi fasadon de moderigado por @{name}",
"status.admin_domain": "Malfermu moderigan interfacon por {domain}",
"status.admin_status": "Malfermi Äi tiun mesaÄon en la kontrola interfaco",
@@ -632,6 +628,7 @@
"status.edited": "Redaktita {date}",
"status.edited_x_times": "Redactita {count, plural, one {{count} fojon} other {{count} fojojn}}",
"status.embed": "Enkorpigi",
+ "status.favourite": "Åatata",
"status.filter": "Filtri Äi tiun afiÅon",
"status.filtered": "Filtrita",
"status.hide": "KaÅi mesaÄon",
@@ -699,10 +696,8 @@
"upload_error.poll": "AlÅuto de dosiero ne permesita kun balotenketo.",
"upload_form.audio_description": "Priskribi por homoj kiuj malfacile aÅdi",
"upload_form.description": "Priskribi por personoj, kiuj estas blindaj aÅ havas vidmalsufiÄon",
- "upload_form.description_missing": "Neniu priskribo aldonita",
"upload_form.edit": "Redakti",
"upload_form.thumbnail": "ÅanÄi etigita bildo",
- "upload_form.undo": "Forigi",
"upload_form.video_description": "Priskribi por homoj kiuj malfacile aÅdi aÅ vidi",
"upload_modal.analyzing_picture": "Bilda analizadoâĻ",
"upload_modal.apply": "Apliki",
diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json
index eb6c0f3e4..8816f18af 100644
--- a/app/javascript/mastodon/locales/es-AR.json
+++ b/app/javascript/mastodon/locales/es-AR.json
@@ -32,7 +32,7 @@
"account.featured_tags.last_status_never": "Sin mensajes",
"account.featured_tags.title": "Etiquetas destacadas de {name}",
"account.follow": "Seguir",
- "account.follow_back": "Seguir tambiÊn",
+ "account.follow_back": "Seguir",
"account.followers": "Seguidores",
"account.followers.empty": "TodavÃa nadie sigue a este usuario.",
"account.followers_counter": "{count, plural, one {{counter} seguidor} other {{counter} seguidores}}",
@@ -53,7 +53,7 @@
"account.mute_notifications_short": "Silenciar notificaciones",
"account.mute_short": "Silenciar",
"account.muted": "Silenciado",
- "account.mutual": "Mutuo",
+ "account.mutual": "Seguimiento mutuo",
"account.no_bio": "Sin descripciÃŗn provista.",
"account.open_original_page": "Abrir pÃĄgina original",
"account.posts": "Mensajes",
@@ -89,7 +89,6 @@
"announcement.announcement": "Anuncio",
"attachments_list.unprocessed": "[sin procesar]",
"audio.hide": "Ocultar audio",
- "autosuggest_hashtag.per_week": "{count} por semana",
"boost_modal.combo": "PodÊs hacer clic en {combo} para saltar esto la prÃŗxima vez",
"bundle_column_error.copy_stacktrace": "Copiar informe de error",
"bundle_column_error.error.body": "La pÃĄgina solicitada no pudo ser cargada. PodrÃa deberse a un error de programaciÃŗn en nuestro cÃŗdigo o a un problema de compatibilidad con el navegador web.",
@@ -146,22 +145,21 @@
"compose_form.lock_disclaimer": "Tu cuenta no es {locked}. Todos pueden seguirte para ver tus mensajes marcados como \"SÃŗlo para seguidores\".",
"compose_form.lock_disclaimer.lock": "privada",
"compose_form.placeholder": "ÂŋQuÊ onda?",
- "compose_form.poll.add_option": "AgregÃĄ una opciÃŗn",
"compose_form.poll.duration": "DuraciÃŗn de la encuesta",
+ "compose_form.poll.multiple": "SelecciÃŗn mÃēltiple",
"compose_form.poll.option_placeholder": "OpciÃŗn {number}",
"compose_form.poll.remove_option": "Quitar esta opciÃŗn",
+ "compose_form.poll.single": "Elige uno",
"compose_form.poll.switch_to_multiple": "Cambiar encuesta para permitir opciones mÃēltiples",
"compose_form.poll.switch_to_single": "Cambiar encuesta para permitir una sola opciÃŗn",
+ "compose_form.poll.type": "Estilo",
"compose_form.publish": "Publicar",
"compose_form.publish_form": "Nuevo mensaje",
- "compose_form.publish_loud": "ÂĄ{publish}!",
- "compose_form.save_changes": "Guardar cambios",
- "compose_form.sensitive.hide": "Marcar medio como sensible",
- "compose_form.sensitive.marked": "{count, plural, one {El medio estÃĄ marcado como sensible} other {Los medios estÃĄn marcados como sensibles}}",
- "compose_form.sensitive.unmarked": "El medio no estÃĄ marcado como sensible",
+ "compose_form.reply": "Responder",
+ "compose_form.save_changes": "Actualizar",
"compose_form.spoiler.marked": "Quitar advertencia de contenido",
"compose_form.spoiler.unmarked": "Agregar advertencia de contenido",
- "compose_form.spoiler_placeholder": "Escribà tu advertencia acÃĄ",
+ "compose_form.spoiler_placeholder": "Advertencia de contenido (opcional)",
"confirmation_modal.cancel": "Cancelar",
"confirmations.block.block_and_report": "Bloquear y denunciar",
"confirmations.block.confirm": "Bloquear",
@@ -408,7 +406,6 @@
"navigation_bar.direct": "Menciones privadas",
"navigation_bar.discover": "Descubrir",
"navigation_bar.domain_blocks": "Dominios bloqueados",
- "navigation_bar.edit_profile": "Editar perfil",
"navigation_bar.explore": "ExplorÃĄ",
"navigation_bar.favourites": "Favoritos",
"navigation_bar.filters": "Palabras silenciadas",
@@ -526,14 +523,10 @@
"poll_button.add_poll": "Agregar encuesta",
"poll_button.remove_poll": "Quitar encuesta",
"privacy.change": "Configurar privacidad del mensaje",
- "privacy.direct.long": "Visible sÃŗlo para los usuarios mencionados",
- "privacy.direct.short": "SÃŗlo cuentas mencionadas",
- "privacy.private.long": "Visible sÃŗlo para los seguidores",
- "privacy.private.short": "SÃŗlo para seguidores",
- "privacy.public.long": "Visible para todos",
+ "privacy.direct.short": "Personas especÃficas",
+ "privacy.private.long": "Solo tus seguidores",
+ "privacy.private.short": "Seguidores",
"privacy.public.short": "PÃēblico",
- "privacy.unlisted.long": "Visible para todos, pero excluido de las caracterÃsticas de descubrimiento",
- "privacy.unlisted.short": "No listado",
"privacy_policy.last_updated": "Ãltima actualizaciÃŗn: {date}",
"privacy_policy.title": "PolÃtica de privacidad",
"recommended": "OpciÃŗn recomendada",
@@ -715,10 +708,8 @@
"upload_error.poll": "No se permite la subida de archivos en encuestas.",
"upload_form.audio_description": "AgregÃĄ una descripciÃŗn para personas con dificultades auditivas",
"upload_form.description": "AgregÃĄ una descripciÃŗn para personas con dificultades visuales",
- "upload_form.description_missing": "No se agregÃŗ descripciÃŗn",
"upload_form.edit": "Editar",
"upload_form.thumbnail": "Cambiar miniatura",
- "upload_form.undo": "Eliminar",
"upload_form.video_description": "AgregÃĄ una descripciÃŗn para personas con dificultades auditivas o visuales",
"upload_modal.analyzing_picture": "Analizando imagenâĻ",
"upload_modal.apply": "Aplicar",
diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json
index fab5f6ec9..fdc57ac6d 100644
--- a/app/javascript/mastodon/locales/es-MX.json
+++ b/app/javascript/mastodon/locales/es-MX.json
@@ -89,7 +89,6 @@
"announcement.announcement": "Anuncio",
"attachments_list.unprocessed": "(sin procesar)",
"audio.hide": "Ocultar audio",
- "autosuggest_hashtag.per_week": "{count} por semana",
"boost_modal.combo": "Puedes hacer clic en {combo} para saltar este aviso la prÃŗxima vez",
"bundle_column_error.copy_stacktrace": "Copiar informe de error",
"bundle_column_error.error.body": "La pÃĄgina solicitada no pudo ser renderizada. PodrÃa deberse a un error en nuestro cÃŗdigo o a un problema de compatibilidad con el navegador.",
@@ -146,22 +145,22 @@
"compose_form.lock_disclaimer": "Tu cuenta no estÃĄ bloqueada. Todos pueden seguirte para ver tus toots solo para seguidores.",
"compose_form.lock_disclaimer.lock": "bloqueado",
"compose_form.placeholder": "ÂŋEn quÊ estÃĄs pensando?",
- "compose_form.poll.add_option": "AÃąadir una opciÃŗn",
+ "compose_form.poll.add_option": "Agregar opciÃŗn",
"compose_form.poll.duration": "DuraciÃŗn de la encuesta",
- "compose_form.poll.option_placeholder": "ElecciÃŗn {number}",
+ "compose_form.poll.multiple": "SelecciÃŗn mÃēltiple",
+ "compose_form.poll.option_placeholder": "OpciÃŗn {number}",
"compose_form.poll.remove_option": "Eliminar esta opciÃŗn",
+ "compose_form.poll.single": "Seleccione uno",
"compose_form.poll.switch_to_multiple": "Modificar encuesta para permitir mÃēltiples opciones",
"compose_form.poll.switch_to_single": "Modificar encuesta para permitir una Ãēnica opciÃŗn",
- "compose_form.publish": "Publicar",
+ "compose_form.poll.type": "Estilo",
+ "compose_form.publish": "PublicaciÃŗn",
"compose_form.publish_form": "Publicar",
- "compose_form.publish_loud": "ÂĄ{publish}!",
- "compose_form.save_changes": "Guardar cambios",
- "compose_form.sensitive.hide": "Marcar multimedia como sensible",
- "compose_form.sensitive.marked": "Material marcado como sensible",
- "compose_form.sensitive.unmarked": "Material no marcado como sensible",
+ "compose_form.reply": "Respuesta",
+ "compose_form.save_changes": "ActualizaciÃŗn",
"compose_form.spoiler.marked": "Texto oculto tras la advertencia",
"compose_form.spoiler.unmarked": "Texto no oculto",
- "compose_form.spoiler_placeholder": "Advertencia de contenido",
+ "compose_form.spoiler_placeholder": "Advertencia de contenido (opcional)",
"confirmation_modal.cancel": "Cancelar",
"confirmations.block.block_and_report": "Bloquear y Denunciar",
"confirmations.block.confirm": "Bloquear",
@@ -408,7 +407,6 @@
"navigation_bar.direct": "Menciones privadas",
"navigation_bar.discover": "Descubrir",
"navigation_bar.domain_blocks": "Dominios ocultos",
- "navigation_bar.edit_profile": "Editar perfil",
"navigation_bar.explore": "Explorar",
"navigation_bar.favourites": "Favoritos",
"navigation_bar.filters": "Palabras silenciadas",
@@ -526,14 +524,15 @@
"poll_button.add_poll": "AÃąadir una encuesta",
"poll_button.remove_poll": "Eliminar encuesta",
"privacy.change": "Ajustar privacidad",
- "privacy.direct.long": "SÃŗlo mostrar a los usuarios mencionados",
- "privacy.direct.short": "Solo personas mencionadas",
- "privacy.private.long": "SÃŗlo mostrar a seguidores",
- "privacy.private.short": "Solo seguidores",
- "privacy.public.long": "Visible para todos",
+ "privacy.direct.long": "Todos los mencionados en la publicaciÃŗn",
+ "privacy.direct.short": "Personas especÃficas",
+ "privacy.private.long": "SÃŗlo tus seguidores",
+ "privacy.private.short": "Seguidores",
+ "privacy.public.long": "Cualquiera dentro y fuera de Mastodon",
"privacy.public.short": "PÃēblico",
- "privacy.unlisted.long": "Visible para todos, pero excluido de las funciones de descubrimiento",
- "privacy.unlisted.short": "No listado",
+ "privacy.unlisted.additional": "Esto se comporta exactamente igual que el pÃēblico, excepto que el post no aparecerÃĄ en las cronologÃas en directo o en los hashtags, la exploraciÃŗn o busquedas en Mastodon, incluso si estÃĄ optado por activar la cuenta de usuario.",
+ "privacy.unlisted.long": "Menos fanfares algorÃtmicos",
+ "privacy.unlisted.short": "PÃēblico silencioso",
"privacy_policy.last_updated": "Actualizado por Ãēltima vez {date}",
"privacy_policy.title": "PolÃtica de Privacidad",
"recommended": "Recomendado",
@@ -551,7 +550,9 @@
"relative_time.minutes": "{number} m",
"relative_time.seconds": "{number} s",
"relative_time.today": "hoy",
+ "reply_indicator.attachments": "{count, plural, one {# adjunto} other {# adjuntos}}",
"reply_indicator.cancel": "Cancelar",
+ "reply_indicator.poll": "Encuesta",
"report.block": "Bloquear",
"report.block_explanation": "No veras sus publicaciones. No podrÃĄn ver tus publicaciones ni seguirte. PodrÃĄn saber que estÃĄn bloqueados.",
"report.categories.legal": "Legal",
@@ -715,10 +716,8 @@
"upload_error.poll": "Subida de archivos no permitida con encuestas.",
"upload_form.audio_description": "Describir para personas con problemas auditivos",
"upload_form.description": "Describir para los usuarios con dificultad visual",
- "upload_form.description_missing": "Sin descripciÃŗn aÃąadida",
"upload_form.edit": "Editar",
"upload_form.thumbnail": "Cambiar miniatura",
- "upload_form.undo": "Borrar",
"upload_form.video_description": "Describir para personas con problemas auditivos o visuales",
"upload_modal.analyzing_picture": "Analizando imagenâĻ",
"upload_modal.apply": "Aplicar",
diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json
index 0d6149f5f..2e4ea9317 100644
--- a/app/javascript/mastodon/locales/es.json
+++ b/app/javascript/mastodon/locales/es.json
@@ -89,7 +89,6 @@
"announcement.announcement": "Anuncio",
"attachments_list.unprocessed": "(sin procesar)",
"audio.hide": "Ocultar audio",
- "autosuggest_hashtag.per_week": "{count} por semana",
"boost_modal.combo": "Puedes hacer clic en {combo} para saltar este aviso la prÃŗxima vez",
"bundle_column_error.copy_stacktrace": "Copiar informe de error",
"bundle_column_error.error.body": "La pÃĄgina solicitada no pudo ser renderizada. PodrÃa deberse a un error en nuestro cÃŗdigo o a un problema de compatibilidad con el navegador.",
@@ -146,22 +145,21 @@
"compose_form.lock_disclaimer": "Tu cuenta no estÃĄ {locked}. Todos pueden seguirte para ver tus publicaciones solo para seguidores.",
"compose_form.lock_disclaimer.lock": "bloqueado",
"compose_form.placeholder": "ÂŋEn quÊ estÃĄs pensando?",
- "compose_form.poll.add_option": "AÃąadir una opciÃŗn",
"compose_form.poll.duration": "DuraciÃŗn de la encuesta",
- "compose_form.poll.option_placeholder": "ElecciÃŗn {number}",
- "compose_form.poll.remove_option": "Eliminar esta opciÃŗn",
+ "compose_form.poll.multiple": "SelecciÃŗn mÃēltiple",
+ "compose_form.poll.option_placeholder": "OpciÃŗn {number}",
+ "compose_form.poll.remove_option": "Quitar esta opciÃŗn",
+ "compose_form.poll.single": "Elige uno",
"compose_form.poll.switch_to_multiple": "Modificar encuesta para permitir mÃēltiples opciones",
"compose_form.poll.switch_to_single": "Modificar encuesta para permitir una Ãēnica opciÃŗn",
+ "compose_form.poll.type": "Estilo",
"compose_form.publish": "Publicar",
"compose_form.publish_form": "Publicar",
- "compose_form.publish_loud": "ÂĄ{publish}!",
- "compose_form.save_changes": "Guardar cambios",
- "compose_form.sensitive.hide": "{count, plural, one {Marcar material como sensible} other {Marcar material como sensible}}",
- "compose_form.sensitive.marked": "{count, plural, one {Material marcado como sensible} other {Material marcado como sensible}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {Material no marcado como sensible} other {Material no marcado como sensible}}",
+ "compose_form.reply": "Responder",
+ "compose_form.save_changes": "Actualizar",
"compose_form.spoiler.marked": "Quitar advertencia de contenido",
"compose_form.spoiler.unmarked": "AÃąadir advertencia de contenido",
- "compose_form.spoiler_placeholder": "Escribe aquà tu advertencia",
+ "compose_form.spoiler_placeholder": "Advertencia de contenido (opcional)",
"confirmation_modal.cancel": "Cancelar",
"confirmations.block.block_and_report": "Bloquear y Reportar",
"confirmations.block.confirm": "Bloquear",
@@ -408,7 +406,6 @@
"navigation_bar.direct": "Menciones privadas",
"navigation_bar.discover": "Descubrir",
"navigation_bar.domain_blocks": "Dominios ocultos",
- "navigation_bar.edit_profile": "Editar perfil",
"navigation_bar.explore": "Explorar",
"navigation_bar.favourites": "Favoritos",
"navigation_bar.filters": "Palabras silenciadas",
@@ -526,14 +523,10 @@
"poll_button.add_poll": "AÃąadir una encuesta",
"poll_button.remove_poll": "Eliminar encuesta",
"privacy.change": "Ajustar privacidad",
- "privacy.direct.long": "Visible solo para usuarios mencionados",
- "privacy.direct.short": "SÃŗlo cuentas mencionadas",
- "privacy.private.long": "SÃŗlo mostrar a seguidores",
- "privacy.private.short": "Solo seguidores",
- "privacy.public.long": "Visible para todos",
+ "privacy.direct.short": "Personas especÃficas",
+ "privacy.private.long": "Solo tus seguidores",
+ "privacy.private.short": "Seguidores",
"privacy.public.short": "PÃēblico",
- "privacy.unlisted.long": "Visible para todos, pero excluido de las funciones de descubrimiento",
- "privacy.unlisted.short": "No listado",
"privacy_policy.last_updated": "Actualizado por Ãēltima vez {date}",
"privacy_policy.title": "PolÃtica de Privacidad",
"recommended": "Recomendado",
@@ -715,10 +708,8 @@
"upload_error.poll": "No se permite la subida de archivos con encuestas.",
"upload_form.audio_description": "Describir para personas con problemas auditivos",
"upload_form.description": "Describir para personas con discapacidad visual",
- "upload_form.description_missing": "No se ha aÃąadido ninguna descripciÃŗn",
"upload_form.edit": "Editar",
"upload_form.thumbnail": "Cambiar miniatura",
- "upload_form.undo": "Eliminar",
"upload_form.video_description": "Describir para personas con problemas auditivos o visuales",
"upload_modal.analyzing_picture": "Analizando imagenâĻ",
"upload_modal.apply": "Aplicar",
diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json
index c39733410..5034c2554 100644
--- a/app/javascript/mastodon/locales/et.json
+++ b/app/javascript/mastodon/locales/et.json
@@ -32,6 +32,7 @@
"account.featured_tags.last_status_never": "Postitusi pole",
"account.featured_tags.title": "{name} esiletÃĩstetud sildid",
"account.follow": "Jälgi",
+ "account.follow_back": "Jälgi vastu",
"account.followers": "Jälgijad",
"account.followers.empty": "Keegi ei jälgi veel seda kasutajat.",
"account.followers_counter": "{count, plural, one {{counter} jälgija} other {{counter} jälgijat}}",
@@ -52,6 +53,7 @@
"account.mute_notifications_short": "Vaigista teavitused",
"account.mute_short": "Vaigista",
"account.muted": "Vaigistatud",
+ "account.mutual": "Ãhine",
"account.no_bio": "Kirjeldust pole lisatud.",
"account.open_original_page": "Ava algne leht",
"account.posts": "Postitused",
@@ -87,7 +89,6 @@
"announcement.announcement": "Teadaanne",
"attachments_list.unprocessed": "(tÃļÃļtlemata)",
"audio.hide": "Peida audio",
- "autosuggest_hashtag.per_week": "{count} nädalas",
"boost_modal.combo": "Vajutades {combo}, saab selle edaspidi vahele jätta",
"bundle_column_error.copy_stacktrace": "Kopeeri veateade",
"bundle_column_error.error.body": "Soovitud lehte ei Ãĩnnestunud esitada. See vÃĩib olla meie koodiviga vÃĩi probleem brauseri Ãŧhilduvusega.",
@@ -146,20 +147,20 @@
"compose_form.placeholder": "Millest mÃĩtled?",
"compose_form.poll.add_option": "Lisa valik",
"compose_form.poll.duration": "KÃŧsitluse kestus",
+ "compose_form.poll.multiple": "Valikvastustega",
"compose_form.poll.option_placeholder": "Valik {number}",
"compose_form.poll.remove_option": "Eemalda see valik",
+ "compose_form.poll.single": "Vali Ãŧks",
"compose_form.poll.switch_to_multiple": "Muuda kÃŧsitlust mitmikvaliku lubamiseks",
"compose_form.poll.switch_to_single": "Muuda kÃŧsitlust ainult Ãŧhe valiku lubamiseks",
+ "compose_form.poll.type": "Stiil",
"compose_form.publish": "Postita",
"compose_form.publish_form": "Postita",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Salvesta muudatused",
- "compose_form.sensitive.hide": "{count, plural, one {Märgi meedia tundlikuks} other {Märgi meediad tundlikuks}}",
- "compose_form.sensitive.marked": "{count, plural, one {Meedia on märgitud tundlikuks} other {Meediad on märgitud tundlikuks}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {Meedia ei ole tundlikuks märgitud} other {Meediad ei ole märgitud tundlikuks}}",
+ "compose_form.reply": "Vasta",
+ "compose_form.save_changes": "Uuenda",
"compose_form.spoiler.marked": "Tekst on hoiatuse taha peidetud",
"compose_form.spoiler.unmarked": "Märgi sisu tundlikuks",
- "compose_form.spoiler_placeholder": "Kirjuta hoiatus siia",
+ "compose_form.spoiler_placeholder": "Sisuhoiatus (valikuline)",
"confirmation_modal.cancel": "Katkesta",
"confirmations.block.block_and_report": "Blokeeri ja teata",
"confirmations.block.confirm": "Blokeeri",
@@ -406,7 +407,6 @@
"navigation_bar.direct": "Privaatsed mainimised",
"navigation_bar.discover": "Avasta",
"navigation_bar.domain_blocks": "Peidetud domeenid",
- "navigation_bar.edit_profile": "Muuda profiili",
"navigation_bar.explore": "Avasta",
"navigation_bar.favourites": "Lemmikud",
"navigation_bar.filters": "Vaigistatud sÃĩnad",
@@ -524,14 +524,14 @@
"poll_button.add_poll": "Lisa kÃŧsitlus",
"poll_button.remove_poll": "Eemalda kÃŧsitlus",
"privacy.change": "Muuda postituse nähtavust",
- "privacy.direct.long": "Postita ainult mainitud kasutajatele",
- "privacy.direct.short": "Mainitud inimesed ainult",
- "privacy.private.long": "Postita ainult jälgijatele",
- "privacy.private.short": "Jälgijad ainult",
- "privacy.public.long": "KÃĩigile nähtav",
+ "privacy.direct.long": "KÃĩik postituses mainitud",
+ "privacy.direct.short": "Määratud kasutajad",
+ "privacy.private.long": "Ainult jälgijad",
+ "privacy.private.short": "Jälgijad",
+ "privacy.public.long": "Nii kasutajad kui mittekasutajad",
"privacy.public.short": "Avalik",
- "privacy.unlisted.long": "KÃĩigile nähtav, aga ei ilmu avastamise vaadetes",
- "privacy.unlisted.short": "Määramata",
+ "privacy.unlisted.long": "Vähem algoritmilisi teavitusi",
+ "privacy.unlisted.short": "Vaikselt avalik",
"privacy_policy.last_updated": "Viimati uuendatud {date}",
"privacy_policy.title": "Isikuandmete kaitse",
"recommended": "Soovitatud",
@@ -549,7 +549,9 @@
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
"relative_time.today": "täna",
+ "reply_indicator.attachments": "{count, plural, one {# lisa} other {# lisa}}",
"reply_indicator.cancel": "TÃŧhista",
+ "reply_indicator.poll": "KÃŧsitlus",
"report.block": "Blokeeri",
"report.block_explanation": "Sa ei näe tema postitusi. Tema ei saa näha sinu postitusi ega sind jälgida. Talle on näha, et ta on blokeeritud.",
"report.categories.legal": "Juriidiline",
@@ -713,10 +715,8 @@
"upload_error.poll": "KÃŧsitlustes pole faili Ãŧleslaadimine lubatud.",
"upload_form.audio_description": "Kirjelda kuulmispuudega inimeste jaoks",
"upload_form.description": "Kirjelda vaegnägijatele",
- "upload_form.description_missing": "Kirjeldus puudub",
"upload_form.edit": "Muuda",
"upload_form.thumbnail": "Muuda pisipilti",
- "upload_form.undo": "Kustuta",
"upload_form.video_description": "Kirjelda kuulmis- vÃĩi nägemispuudega inimeste jaoks",
"upload_modal.analyzing_picture": "AnalÃŧÃŧsime piltiâĻ",
"upload_modal.apply": "Rakenda",
diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json
index c75f697e4..cee18e7a5 100644
--- a/app/javascript/mastodon/locales/eu.json
+++ b/app/javascript/mastodon/locales/eu.json
@@ -25,7 +25,7 @@
"account.direct": "Aipatu pribatuki @{name}",
"account.disable_notifications": "Utzi jakinarazteari @{name} erabiltzaileak argitaratzean",
"account.domain_blocked": "Ezkutatutako domeinua",
- "account.edit_profile": "Aldatu profila",
+ "account.edit_profile": "Editatu profila",
"account.enable_notifications": "Jakinarazi @{name} erabiltzaileak argitaratzean",
"account.endorse": "Nabarmendu profilean",
"account.featured_tags.last_status_at": "Azken bidalketa {date} datan",
@@ -89,7 +89,6 @@
"announcement.announcement": "Iragarpena",
"attachments_list.unprocessed": "(prozesatu gabe)",
"audio.hide": "Ezkutatu audioa",
- "autosuggest_hashtag.per_week": "{count} asteko",
"boost_modal.combo": "{combo} sakatu dezakezu hurrengoan hau saltatzeko",
"bundle_column_error.copy_stacktrace": "Kopiatu errore-txostena",
"bundle_column_error.error.body": "Eskatutako orria ezin izan da bistaratu. Kodeko errore bategatik izan daiteke edo nabigatzailearen bateragarritasun arazo bategatik.",
@@ -146,22 +145,22 @@
"compose_form.lock_disclaimer": "Zure kontua ez dago {locked}. Edonork jarraitu zaitzake zure jarraitzaileentzako soilik diren bidalketak ikusteko.",
"compose_form.lock_disclaimer.lock": "giltzapetuta",
"compose_form.placeholder": "Zer duzu buruan?",
- "compose_form.poll.add_option": "Gehitu aukera bat",
+ "compose_form.poll.add_option": "Gehitu aukera",
"compose_form.poll.duration": "Inkestaren iraupena",
+ "compose_form.poll.multiple": "Aukera aniza",
"compose_form.poll.option_placeholder": "{number}. aukera",
"compose_form.poll.remove_option": "Kendu aukera hau",
+ "compose_form.poll.single": "Hautatu bat",
"compose_form.poll.switch_to_multiple": "Aldatu inkesta hainbat aukera onartzeko",
"compose_form.poll.switch_to_single": "Aldatu inkesta aukera bakarra onartzeko",
+ "compose_form.poll.type": "Estiloa",
"compose_form.publish": "Argitaratu",
"compose_form.publish_form": "Argitaratu",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Gorde aldaketak",
- "compose_form.sensitive.hide": "Markatu multimedia hunkigarri gisa",
- "compose_form.sensitive.marked": "Multimedia edukia hunkigarri gisa markatu da",
- "compose_form.sensitive.unmarked": "Multimedia edukia ez da hunkigarri gisa markatu",
+ "compose_form.reply": "Erantzun",
+ "compose_form.save_changes": "Eguneratu",
"compose_form.spoiler.marked": "Testua abisu batek ezkutatzen du",
"compose_form.spoiler.unmarked": "Testua ez dago ezkutatuta",
- "compose_form.spoiler_placeholder": "Idatzi zure abisua hemen",
+ "compose_form.spoiler_placeholder": "Edukiaren abisua (aukerakoa)",
"confirmation_modal.cancel": "Utzi",
"confirmations.block.block_and_report": "Blokeatu eta salatu",
"confirmations.block.confirm": "Blokeatu",
@@ -408,7 +407,6 @@
"navigation_bar.direct": "Aipamen pribatuak",
"navigation_bar.discover": "Aurkitu",
"navigation_bar.domain_blocks": "Ezkutatutako domeinuak",
- "navigation_bar.edit_profile": "Aldatu profila",
"navigation_bar.explore": "Arakatu",
"navigation_bar.favourites": "Gogokoak",
"navigation_bar.filters": "Mutututako hitzak",
@@ -526,14 +524,15 @@
"poll_button.add_poll": "Gehitu inkesta bat",
"poll_button.remove_poll": "Kendu inkesta",
"privacy.change": "Aldatu bidalketaren pribatutasuna",
- "privacy.direct.long": "Bidali aipatutako erabiltzaileei besterik ez",
- "privacy.direct.short": "Aipatutako jendea soilik",
- "privacy.private.long": "Bidali jarraitzaileei besterik ez",
- "privacy.private.short": "Jarraitzaileak soilik",
- "privacy.public.long": "Guztientzat ikusgai",
+ "privacy.direct.long": "Argitalpen honetan aipatutako denak",
+ "privacy.direct.short": "Jende jakina",
+ "privacy.private.long": "Soilik jarraitzaileak",
+ "privacy.private.short": "Jarraitzaileak",
+ "privacy.public.long": "Mastodonen dagoen edo ez dagoen edonor",
"privacy.public.short": "Publikoa",
- "privacy.unlisted.long": "Guztientzat ikusgai, baina ez aurkitzeko ezaugarrietan",
- "privacy.unlisted.short": "Zerrendatu gabea",
+ "privacy.unlisted.additional": "Aukera honek publiko modua bezala funtzionatzen du, baina argitalpena ez da agertuko zuzeneko jarioetan edo traoletan, \"Arakatu\" atalean edo Mastodonen bilaketan, nahiz eta kontua zabaltzeko onartu duzun.",
+ "privacy.unlisted.long": "Tontakeria algoritmiko gutxiago",
+ "privacy.unlisted.short": "Deiadar urrikoa",
"privacy_policy.last_updated": "Azkenengo eguneraketa {date}",
"privacy_policy.title": "Pribatutasun politika",
"recommended": "Gomendatua",
@@ -551,7 +550,9 @@
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
"relative_time.today": "gaur",
+ "reply_indicator.attachments": "{count, plural, one {# eranskin} other {# eranskin}}",
"reply_indicator.cancel": "Utzi",
+ "reply_indicator.poll": "Inkesta",
"report.block": "Blokeatu",
"report.block_explanation": "Ez dituzu bere bidalketak ikusiko. Ezingo dituzte zure bidalketak ikusi eta ez jarraitu. Blokeatu dituzula jakin dezakete.",
"report.categories.legal": "Juridikoa",
@@ -715,10 +716,8 @@
"upload_error.poll": "Ez da inkestetan fitxategiak igotzea onartzen.",
"upload_form.audio_description": "Deskribatu entzumen galera duten pertsonentzat",
"upload_form.description": "Deskribatu ikusmen arazoak dituztenentzat",
- "upload_form.description_missing": "Ez da deskribapenik gehitu",
"upload_form.edit": "Editatu",
"upload_form.thumbnail": "Aldatu koadro txikia",
- "upload_form.undo": "Ezabatu",
"upload_form.video_description": "Deskribatu entzumen galera edo ikusmen urritasuna duten pertsonentzat",
"upload_modal.analyzing_picture": "Irudia aztertzenâĻ",
"upload_modal.apply": "Aplikatu",
diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json
index a93d0f661..0b078d1ab 100644
--- a/app/javascript/mastodon/locales/fa.json
+++ b/app/javascript/mastodon/locales/fa.json
@@ -13,7 +13,7 @@
"about.rules": "ŲŲØ§ŲÛŲ ÚŠØ§ØąØŗØ§Ø˛",
"account.account_note_header": "ÛØ§Ø¯Ø¯Ø§Ø´ØĒ",
"account.add_or_remove_from_list": "Ø§ŲØ˛ŲØ¯Ų ÛØ§ Ø¨ØąØ¯Ø§Ø´ØĒŲ Ø§Ø˛ ØŗÛØ§ŲŲâŲØ§",
- "account.badges.bot": "ØąŲØ¨Ø§ØĒ",
+ "account.badges.bot": "ØŽŲØ¯ÚŠØ§Øą",
"account.badges.group": "Ú¯ØąŲŲ",
"account.block": "Ø§ŲØŗØ¯Ø§Ø¯ â@{name}",
"account.block_domain": "Ø§ŲØŗØ¯Ø§Ø¯ داŲ
ŲŲŲ {domain}",
@@ -32,6 +32,7 @@
"account.featured_tags.last_status_never": "بدŲŲ ŲØąØŗØĒŲ",
"account.featured_tags.title": "Ø¨ØąÚØŗØ¨âŲØ§Û Ø¨ØąÚ¯Ø˛ÛØ¯ŲŲ {name}",
"account.follow": "ŲžÛâÚ¯ØąŲØĒŲ",
+ "account.follow_back": "Ø¯ŲØ¨Ø§Ų ÚŠØąØ¯Ų Ų
ØĒŲØ§Ø¨Ų",
"account.followers": "ŲžÛâÚ¯ÛØąŲدگاŲ",
"account.followers.empty": "ŲŲŲØ˛ ÚŠØŗÛ ŲžÛâÚ¯ÛØą Ø§ÛŲ ÚŠØ§ØąØ¨Øą ŲÛØŗØĒ.",
"account.followers_counter": "{count, plural, one {{counter} ŲžÛâÚ¯ÛØąŲدŲ} other {{counter} ŲžÛâÚ¯ÛØąŲدŲ}}",
@@ -52,6 +53,7 @@
"account.mute_notifications_short": "ØŽŲ
ŲØ´Û ØĸگاŲÛâŲØ§",
"account.mute_short": "ØŽŲ
ŲØ´Û",
"account.muted": "ØŽŲ
ŲØ´",
+ "account.mutual": "Ø¯ŲØˇØąŲŲ",
"account.no_bio": "Ø´ØąØÛ بਧŲŲ
ŲØ´Ø¯Ų.",
"account.open_original_page": "Ú¯Ø´ŲØ¯Ų ØĩŲØŲŲ Ø§ØĩŲÛ",
"account.posts": "ب਺ØĒŲ",
@@ -87,7 +89,6 @@
"announcement.announcement": "Ø§ØšŲØ§Ų
ÛŲ",
"attachments_list.unprocessed": "(ŲžØąØ¯Ø§Ø˛Ø´ ŲØ´Ø¯Ų)",
"audio.hide": "ŲŲŲØĒŲ Øĩدا",
- "autosuggest_hashtag.per_week": "{count} Ø¯Øą ŲŲØĒŲ",
"boost_modal.combo": "دڊŲ
ŲŲ {combo} ØąØ§ Ø¨Ø˛ŲÛØ¯ ØĒا دÛÚ¯Øą اÛŲ ØąØ§ ŲØ¨ÛŲÛØ¯",
"bundle_column_error.copy_stacktrace": "ØąŲŲŲØ´ØĒ Ø§Ø˛ Ú¯Ø˛Ø§ØąØ´ ØŽØˇØ§",
"bundle_column_error.error.body": "ØĩŲØŲŲ Ø¯ØąØŽŲØ§ØŗØĒÛ ŲØĒŲØ§ŲØŗØĒ ŲžØąØ¯Ø§ØŽØĒ Ø´ŲØ¯. Ų
Ų
ÚŠŲ Ø§ØŗØĒ Ø¨Ų ØŽØ§ØˇØą اشڊاŲÛ Ø¯Øą ڊدŲ
Ø§Ų ÛØ§ Ų
Ø´ÚŠŲ ØŗØ§Ø˛Ú¯Ø§ØąÛ Ų
ØąŲØąÚ¯Øą باشد.",
@@ -146,20 +147,20 @@
"compose_form.placeholder": "ØĒØ§Ø˛Ų ÚŲ ØŽØ¨ØąØ",
"compose_form.poll.add_option": "Ø§ŲØ˛ŲØ¯Ų Ú¯Ø˛ÛŲŲ",
"compose_form.poll.duration": "Ų
دØĒ ŲØ¸ØąØŗŲØŦÛ",
+ "compose_form.poll.multiple": "ÚŲØ¯ Ú¯Ø˛ÛŲŲâØ§Û",
"compose_form.poll.option_placeholder": "Ú¯Ø˛ÛŲŲŲ {number}",
"compose_form.poll.remove_option": "Ø¨ØąØ¯Ø§Ø´ØĒŲ Ø§ÛŲ Ú¯Ø˛ÛŲŲ",
+ "compose_form.poll.single": "Ú¯Ø˛ÛŲØ´ ÛÚŠÛ",
"compose_form.poll.switch_to_multiple": "ØĒØēÛÛØą ŲØ¸ØąØŗŲØŦÛ Ø¨ØąØ§Û Ø§ØŦØ§Ø˛Ų Ø¨Ų ÚŲØ¯ÛŲ Ú¯Ø˛ÛŲŲ",
"compose_form.poll.switch_to_single": "ØĒبدÛŲ Ø¨Ų ŲØ¸ØąØŗŲØŦÛ ØĒÚŠâÚ¯Ø˛ÛŲŲâØ§Û",
- "compose_form.publish": "Ø§ŲØĒØ´Ø§Øą",
+ "compose_form.poll.type": "ØŗØ¨ÚŠ",
+ "compose_form.publish": "ب਺ØĒادŲ",
"compose_form.publish_form": "Ø§ŲØĒØ´Ø§Øą",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Ø°ØŽÛØąŲŲ ØĒØēÛÛØąØ§ØĒ",
- "compose_form.sensitive.hide": "{count, plural, one {ØšŲØ§Ų
ØĒâÚ¯Ø°Ø§ØąÛ ØąØŗØ§ŲŲ Ø¨Ų ØšŲŲØ§Ų ØØŗØ§Øŗ} other {ØšŲØ§Ų
ØĒâÚ¯Ø°Ø§ØąÛ ØąØŗØ§ŲŲâŲØ§ Ø¨Ų ØšŲŲØ§Ų ØØŗØ§Øŗ}}",
- "compose_form.sensitive.marked": "{count, plural, one {ØąØŗØ§ŲŲ Ø¨Ų ØšŲŲØ§Ų ØØŗØ§Øŗ ØšŲØ§Ų
ØĒâÚ¯Ø°Ø§ØąÛ Ø´Ø¯} other {ØąØŗØ§ŲŲâŲØ§ Ø¨Ų ØšŲŲØ§Ų ØØŗØ§Øŗ ØšŲØ§Ų
ØĒâÚ¯Ø°Ø§ØąÛ Ø´Ø¯ŲØ¯}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {ØąØŗØ§ŲŲ Ø¨Ų ØšŲŲØ§Ų ØØŗØ§Øŗ ØšŲØ§Ų
ØĒâÚ¯Ø°Ø§ØąÛ ŲØ´Ø¯} other {ØąØŗØ§ŲŲâŲØ§ Ø¨Ų ØšŲŲØ§Ų ØØŗØ§Øŗ ØšŲØ§Ų
ØĒâÚ¯Ø°Ø§ØąÛ ŲØ´Ø¯Ųد}}",
+ "compose_form.reply": "ŲžØ§ØŗØŽ",
+ "compose_form.save_changes": "بŲâØąŲØ˛ ØąØŗØ§ŲÛ",
"compose_form.spoiler.marked": "Ø¨ØąØ¯Ø§Ø´ØĒŲ ŲØ´Ø¯Ø§Øą Ų
ØØĒŲØ§",
"compose_form.spoiler.unmarked": "Ø§ŲØ˛ŲØ¯Ų ŲØ´Ø¯Ø§Øą Ų
ØØĒŲØ§",
- "compose_form.spoiler_placeholder": "ŲØ´Ø¯Ø§ØąØĒØ§Ų ØąØ§ اÛŲâØŦا بŲŲÛØŗÛد",
+ "compose_form.spoiler_placeholder": "ŲØ´Ø¯Ø§Øą Ų
ØØĒŲØ§ (ا؎ØĒÛØ§ØąÛ)",
"confirmation_modal.cancel": "ŲØēŲ",
"confirmations.block.block_and_report": "Ø§ŲØŗØ¯Ø§Ø¯ Ų Ú¯Ø˛Ø§ØąØ´",
"confirmations.block.confirm": "Ø§ŲØŗØ¯Ø§Ø¯",
@@ -406,7 +407,6 @@
"navigation_bar.direct": "Ø§Ø´Ø§ØąŲâŲØ§Û ØŽØĩŲØĩÛ",
"navigation_bar.discover": "گشØĒ Ų Ú¯Ø°Ø§Øą",
"navigation_bar.domain_blocks": "داŲ
ŲŲâŲØ§Û Ų
ØŗØ¯ŲØ¯ شدŲ",
- "navigation_bar.edit_profile": "ŲÛØąØ§ÛØ´ ŲŲ
اÛŲ",
"navigation_bar.explore": "ÚŠØ§ŲØ´",
"navigation_bar.favourites": "Ø¨ØąÚ¯Ø˛ÛØ¯ŲâŲØ§",
"navigation_bar.filters": "ŲØ§ÚŲâŲØ§Û ØŽŲ
ŲØ´",
@@ -522,14 +522,14 @@
"poll_button.add_poll": "Ø§ŲØ˛ŲØ¯Ų ŲØ¸ØąØŗŲØŦÛ",
"poll_button.remove_poll": "Ø¨ØąØ¯Ø§Ø´ØĒŲ ŲØ¸ØąØŗŲØŦÛ",
"privacy.change": "ØĒØēÛÛØą Ų
ØØąŲ
اŲÚ¯Û ŲØąØŗØĒŲ",
- "privacy.direct.long": "ŲŲ
Ø§ÛØ§Ų ŲŲØˇ Ø¨ØąØ§Û ÚŠØ§ØąØ¨ØąØ§Ų Ø§Ø´Ø§ØąŲ Ø´Ø¯Ų",
- "privacy.direct.short": "ŲŲØˇ Ø§ŲØąØ§Ø¯ Ø§Ø´Ø§ØąŲ Ø´Ø¯Ų",
- "privacy.private.long": "ŲŲ
Ø§ÛØ§Ų ŲŲØˇ Ø¨ØąØ§Û ŲžÛâÚ¯ÛØąŲدگاŲ",
- "privacy.private.short": "ŲŲØˇ ŲžÛâÚ¯ÛØąŲدگاŲ",
- "privacy.public.long": "ŲŲ
Ø§ÛØ§Ų Ø¨ØąØ§Û ŲŲ
Ų",
+ "privacy.direct.long": "ŲØąÚŠØŗÛ ÚŠŲ Ø¯Øą ب਺ØĒŲ ŲØ§Ų
Ø¨ØąØ¯Ų Ø´Ø¯Ų",
+ "privacy.direct.short": "Ø§ŲØąØ§Ø¯ Ų
Ø´ØŽŲØĩ",
+ "privacy.private.long": "ØĒŲŲØ§ ŲžÛâÚ¯ÛØąŲØ¯Ú¯Ø§ŲØĒØ§Ų",
+ "privacy.private.short": "ŲžÛâÚ¯ÛØąŲدگاŲ",
+ "privacy.public.long": "ŲØąÚŠØŗÛ Ø¯Øą Ų Ø¨ÛØąŲŲ Ø§Ø˛ Ų
Ø§ØŗØĒŲØ¯ŲŲ",
"privacy.public.short": "ØšŲ
ŲŲ
Û",
- "privacy.unlisted.long": "ŲŲ
Ø§ÛØ§Ų Ø¨ØąØ§Û ŲŲ
ŲØ ŲŲÛ ØŽØ§ØąØŦ Ø§Ø˛ ŲØ§Ø¨ŲÛØĒâŲØ§Û ÚŠØ´Ų",
- "privacy.unlisted.short": "Ųب਺ØĒ ŲØ´Ø¯Ų",
+ "privacy.unlisted.long": "ØŗØąŲØĩØ¯Ø§Û Ø§ŲÚ¯ŲØąÛØĒŲ
Û ÚŠŲ
âØĒØą",
+ "privacy.unlisted.short": "ØšŲ
ŲŲ
Û ØŗØ§ÚŠØĒ",
"privacy_policy.last_updated": "ØĸØŽØąÛŲ Ø¨ŲâØąŲØ˛ ØąØŗØ§ŲÛ Ø¯Øą {date}",
"privacy_policy.title": "ØŗÛØ§ØŗØĒ Ų
ØØąŲ
اŲÚ¯Û",
"recommended": "ŲžÛØ´ŲŲØ§Ø¯Ø´Ø¯Ų",
@@ -548,6 +548,7 @@
"relative_time.seconds": "{number} ØĢاŲÛŲ",
"relative_time.today": "اŲ
ØąŲØ˛",
"reply_indicator.cancel": "ŲØēŲ",
+ "reply_indicator.poll": "ŲØ¸ØąØŗŲØŦÛ",
"report.block": "Ø§ŲØŗØ¯Ø§Ø¯",
"report.block_explanation": "Ø´Ų
ا ب਺ØĒŲâŲØ§ÛØ´Ø§Ų ØąØ§ ŲØŽŲاŲÛØ¯ Ø¯ÛØ¯. ØĸŲâŲØ§ ŲŲ
ÛâØĒŲØ§ŲŲØ¯ ب਺ØĒŲâŲØ§ÛØĒØ§Ų ØąØ§ ببÛŲŲØ¯ ÛØ§ Ø´Ų
ا ØąØ§ ŲžÛâØ¨Ú¯ÛØąŲد. ØĸŲŲØ§ Ų
ÛâØĒŲØ§ŲŲØ¯ بگŲÛŲØ¯ ÚŠŲ Ų
ØŗØ¯ŲØ¯ شدŲâØ§ŲØ¯.",
"report.categories.legal": "ØŲŲŲÛ",
@@ -711,10 +712,8 @@
"upload_error.poll": "Ø¨Ø§ØąÚ¯Ø°Ø§ØąÛ ŲžØąŲŲØ¯Ų Ø¯Øą ŲØ¸ØąØŗŲØŦÛâŲØ§ Ų
ØŦØ§Ø˛ ŲÛØŗØĒ.",
"upload_form.audio_description": "Ø¨ØąØ§Û ŲØ§Ø´ŲŲØ§ÛØ§Ų ØĒŲØĩÛŲØ´ ÚŠŲÛØ¯",
"upload_form.description": "Ø¨ØąØ§Û ÚŠŲ
âØ¨ÛŲØ§ÛØ§Ų ØĒŲØĩÛŲØ´ ÚŠŲÛØ¯",
- "upload_form.description_missing": "Ø´ØąØÛ Ø§ŲØ˛ŲØ¯Ų ŲØ´Ø¯Ų",
"upload_form.edit": "ŲÛØąØ§ÛØ´",
"upload_form.thumbnail": "ØĒØēÛÛØą Ø¨ŲداŲگشØĒÛ",
- "upload_form.undo": "ØØ°Ų",
"upload_form.video_description": "Ø¨ØąØ§Û ÚŠŲ
âØ¨ÛŲØ§ÛØ§Ų ÛØ§ ŲØ§Ø´ŲŲØ§ÛØ§Ų ØĒŲØĩÛŲØ´ ÚŠŲÛØ¯",
"upload_modal.analyzing_picture": "Ø¯Øą ØØ§Ų ŲžØąØ¯Ø§Ø˛Ø´ ØĒØĩŲÛØąâĻ",
"upload_modal.apply": "اؚŲ
اŲ",
diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json
index dab7eac1e..7b98f9983 100644
--- a/app/javascript/mastodon/locales/fi.json
+++ b/app/javascript/mastodon/locales/fi.json
@@ -21,7 +21,7 @@
"account.blocked": "Estetty",
"account.browse_more_on_origin_server": "Selaile lisää alkuperäisellä palvelimella",
"account.cancel_follow_request": "Peruuta seurantapyyntÃļ",
- "account.copy": "Kopioi profiililinkki",
+ "account.copy": "Kopioi linkki profiiliin",
"account.direct": "Mainitse @{name} yksityisesti",
"account.disable_notifications": "Lopeta ilmoittamasta minulle, kun @{name} julkaisee",
"account.domain_blocked": "Verkkotunnus estetty",
@@ -53,7 +53,7 @@
"account.mute_notifications_short": "Mykistä ilmoitukset",
"account.mute_short": "Mykistä",
"account.muted": "Mykistetty",
- "account.mutual": "Molemmat",
+ "account.mutual": "Seuraatte toisianne",
"account.no_bio": "Kuvausta ei ole annettu.",
"account.open_original_page": "Avaa alkuperäinen sivu",
"account.posts": "Julkaisut",
@@ -89,7 +89,6 @@
"announcement.announcement": "Ilmoitus",
"attachments_list.unprocessed": "(käsittelemätÃļn)",
"audio.hide": "Piilota ääni",
- "autosuggest_hashtag.per_week": "{count} viikossa",
"boost_modal.combo": "Ensi kerralla voit ohittaa tämän painamalla {combo}",
"bundle_column_error.copy_stacktrace": "Kopioi virheraportti",
"bundle_column_error.error.body": "Pyydettyä sivua ei voitu hahmontaa. Se voi johtua virheestä koodissamme tai selaimen yhteensopivuudessa.",
@@ -146,22 +145,22 @@
"compose_form.lock_disclaimer": "Tilisi ei ole {locked}. Kuka tahansa voi seurata tiliäsi ja nähdä vain seuraajille rajaamasi julkaisut.",
"compose_form.lock_disclaimer.lock": "lukittu",
"compose_form.placeholder": "Mitä mietit?",
- "compose_form.poll.add_option": "Lisää valinta",
+ "compose_form.poll.add_option": "Lisää vaihtoehto",
"compose_form.poll.duration": "Ãänestyksen kesto",
- "compose_form.poll.option_placeholder": "Valinta {number}",
- "compose_form.poll.remove_option": "Poista tämä valinta",
+ "compose_form.poll.multiple": "Monivalinta",
+ "compose_form.poll.option_placeholder": "Vaihtoehto {number}",
+ "compose_form.poll.remove_option": "Poista tämä vaihtoehto",
+ "compose_form.poll.single": "Valitse yksi",
"compose_form.poll.switch_to_multiple": "Muuta äänestys monivalinnaksi",
"compose_form.poll.switch_to_single": "Muuta äänestys sallimaan vain yksi valinta",
+ "compose_form.poll.type": "Tyyli",
"compose_form.publish": "Julkaise",
"compose_form.publish_form": "Uusi julkaisu",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Tallenna muutokset",
- "compose_form.sensitive.hide": "{count, plural, one {Merkitse media arkaluonteiseksi} other {Merkitse mediat arkaluonteisiksi}}",
- "compose_form.sensitive.marked": "{count, plural, one {Media on merkitty arkaluonteiseksi} other {Mediat on merkitty arkaluonteisiksi}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {Mediaa ei ole merkitty arkaluonteiseksi} other {Medioita ei ole merkitty arkaluonteisiksi}}",
+ "compose_form.reply": "Vastaa",
+ "compose_form.save_changes": "Päivitä",
"compose_form.spoiler.marked": "Poista sisältÃļvaroitus",
"compose_form.spoiler.unmarked": "Lisää sisältÃļvaroitus",
- "compose_form.spoiler_placeholder": "Kirjoita varoituksesi tähän",
+ "compose_form.spoiler_placeholder": "SisältÃļvaroitus (valinnainen)",
"confirmation_modal.cancel": "Peruuta",
"confirmations.block.block_and_report": "Estä ja raportoi",
"confirmations.block.confirm": "Estä",
@@ -193,7 +192,7 @@
"conversation.mark_as_read": "Merkitse luetuksi",
"conversation.open": "Näytä keskustelu",
"conversation.with": "{names} kanssa",
- "copy_icon_button.copied": "Kopioitiin leikepÃļydälle",
+ "copy_icon_button.copied": "SisältÃļ kopioitiin leikepÃļydälle",
"copypaste.copied": "Kopioitu",
"copypaste.copy_to_clipboard": "Kopioi leikepÃļydälle",
"directory.federated": "Koko tunnettu fediversumi",
@@ -408,7 +407,6 @@
"navigation_bar.direct": "Yksityiset maininnat",
"navigation_bar.discover": "LÃļydä uutta",
"navigation_bar.domain_blocks": "Estetyt verkkotunnukset",
- "navigation_bar.edit_profile": "Muokkaa profiilia",
"navigation_bar.explore": "Selaa",
"navigation_bar.favourites": "Suosikit",
"navigation_bar.filters": "Mykistetyt sanat",
@@ -483,10 +481,10 @@
"onboarding.follows.lead": "Kokoat oman kotisyÃļtteesi itse. Mitä enemmän ihmisiä seuraat, sitä aktiivisempi ja kiinnostavampi syÃļte on. Nämä profiilit voivat olla alkuun hyvä lähtÃļkohta â voit aina lopettaa niiden seuraamisen myÃļhemmin!",
"onboarding.follows.title": "Mukauta kotisyÃļtettäsi",
"onboarding.profile.discoverable": "Aseta profiilini lÃļydettäväksi",
- "onboarding.profile.discoverable_hint": "Kun olet määrittänyt itsesi lÃļydettäväksi Mastodonista, julkaisusi voivat näkyä hakutuloksissa ja suosituissa kohteissa ja profiiliasi voidaan ehdottaa käyttäjille, jotka ovat kiinnostuneet samoista aiheista kuin sinä.",
+ "onboarding.profile.discoverable_hint": "Kun olet määrittänyt itsesi lÃļydettäväksi Mastodonista, julkaisusi voivat näkyä hakutuloksissa ja suosituissa kohteissa. Lisäksi profiiliasi voidaan ehdottaa käyttäjille, jotka ovat kiinnostuneita kanssasi samoista aiheista.",
"onboarding.profile.display_name": "NäyttÃļnimi",
"onboarding.profile.display_name_hint": "Koko nimesi tai lempinimesiâĻ",
- "onboarding.profile.lead": "Voit viimeistellä tämän milloin tahansa asetuksista, jotka tarjoavat vielä enemmän mukautusvalintoja.",
+ "onboarding.profile.lead": "Voit viimeistellä tämän milloin tahansa asetuksista. Sieltä lÃļydät myÃļs lisää mukautusvaihtoehtoja.",
"onboarding.profile.note": "Elämäkerta",
"onboarding.profile.note_hint": "Voit @mainita muita käyttäjiä tai #aihetunnisteitaâĻ",
"onboarding.profile.save_and_continue": "Tallenna ja jatka",
@@ -526,14 +524,13 @@
"poll_button.add_poll": "Lisää äänestys",
"poll_button.remove_poll": "Poista äänestys",
"privacy.change": "Muuta julkaisun näkyvyyttä",
- "privacy.direct.long": "Näkyy vain mainituille käyttäjille",
- "privacy.direct.short": "Vain mainitut käyttäjät",
- "privacy.private.long": "Näkyy vain seuraajille",
- "privacy.private.short": "Vain seuraajat",
- "privacy.public.long": "Näkyy kaikille",
+ "privacy.direct.long": "Kaikki tässä julkaisussa mainitut",
+ "privacy.direct.short": "Tietyt henkilÃļt",
+ "privacy.private.long": "Vain seuraajasi",
+ "privacy.private.short": "Seuraajat",
+ "privacy.public.long": "Kuka tahansa Mastodonissa ja sen ulkopuolella",
"privacy.public.short": "Julkinen",
- "privacy.unlisted.long": "Näkyy kaikille mutta jää pois lÃļytämisominaisuuksista",
- "privacy.unlisted.short": "Listaamaton",
+ "privacy.unlisted.additional": "Tämä toimii kuten julkinen, paitsi että julkaisu ei näy livesyÃļtteissä, aihetunnisteissa, selaa-näkymässä tai Mastodon-haussa, vaikka olisit sallinut ne käyttäjätilin laajuisesti.",
"privacy_policy.last_updated": "Viimeksi päivitetty {date}",
"privacy_policy.title": "TietosuojakäytäntÃļ",
"recommended": "Suositeltu",
@@ -551,7 +548,9 @@
"relative_time.minutes": "{number} min",
"relative_time.seconds": "{number} s",
"relative_time.today": "tänään",
+ "reply_indicator.attachments": "{count, plural, one {# liite} other {# liitettä}}",
"reply_indicator.cancel": "Peruuta",
+ "reply_indicator.poll": "Kysely",
"report.block": "Estä",
"report.block_explanation": "Et näe hänen viestejään, eikä hän voi nähdä viestejäsi tai seurata sinua. Hän näkee, että olet estänyt hänet.",
"report.categories.legal": "Lakiasiat",
@@ -607,7 +606,7 @@
"search.quick_action.status_search": "Julkaisut haulla {x}",
"search.search_or_paste": "Hae tai liitä URL-osoite",
"search_popout.full_text_search_disabled_message": "Ei saatavilla palvelimella {domain}.",
- "search_popout.full_text_search_logged_out_message": "Saatavilla vain sisäänkirjautuneena.",
+ "search_popout.full_text_search_logged_out_message": "Käytettävissä vain sisäänkirjautuneena.",
"search_popout.language_code": "ISO-kielikoodi",
"search_popout.options": "Hakuvalinnat",
"search_popout.quick_actions": "Pikatoiminnot",
@@ -715,10 +714,8 @@
"upload_error.poll": "Tiedoston lataaminen ei ole sallittua äänestyksissä.",
"upload_form.audio_description": "Kuvaile sisältÃļä kuuroille ja kuulorajoitteisille",
"upload_form.description": "Kuvaile sisältÃļä sokeille ja näkÃļrajoitteisille",
- "upload_form.description_missing": "Kuvausta ei ole lisätty",
"upload_form.edit": "Muokkaa",
"upload_form.thumbnail": "Vaihda pikkukuva",
- "upload_form.undo": "Poista",
"upload_form.video_description": "Kuvaile sisältÃļä kuuroille, kuulorajoitteisille, sokeille tai näkÃļrajoitteisille",
"upload_modal.analyzing_picture": "Analysoidaan kuvaaâĻ",
"upload_modal.apply": "Käytä",
diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json
index 9259f2015..a4c529608 100644
--- a/app/javascript/mastodon/locales/fo.json
+++ b/app/javascript/mastodon/locales/fo.json
@@ -89,7 +89,6 @@
"announcement.announcement": "Kunngerð",
"attachments_list.unprocessed": "(Ãŗviðgjørt)",
"audio.hide": "Fjal ljÃŗÃ°",
- "autosuggest_hashtag.per_week": "{count} um vikuna",
"boost_modal.combo": "TÃē kanst trÃŊsta ÃĄ {combo} fyri at loypa uppum hetta nÃĻstu ferð",
"bundle_column_error.copy_stacktrace": "Avrita feilfrÃĄboðan",
"bundle_column_error.error.body": "Umbidna sÃðan kann ikki vÃsast. Tað kann vera orsakað av einum feili à koduni hjÃĄ okkum ella tað kann vera orsakað av kaganum, sum tÃē brÃēkar.",
@@ -148,20 +147,20 @@
"compose_form.placeholder": "Hvat hevur tÃē Ã huga?",
"compose_form.poll.add_option": "Legg valmøguleika afturat",
"compose_form.poll.duration": "AtkvøðugreiðslutÃð",
+ "compose_form.poll.multiple": "Fleiri valmøguleikar",
"compose_form.poll.option_placeholder": "Valmøguleiki {number}",
- "compose_form.poll.remove_option": "Strika valmøguleikan",
+ "compose_form.poll.remove_option": "Strika hendan valmøguleikan",
+ "compose_form.poll.single": "Vel ein",
"compose_form.poll.switch_to_multiple": "Broyt atkvøðugreiðslu til at loyva fleiri svarum",
"compose_form.poll.switch_to_single": "Broyt atkvøðugreiðslu til einstakt svar",
- "compose_form.publish": "Legg Ãēt",
+ "compose_form.poll.type": "StÃlur",
+ "compose_form.publish": "Posta",
"compose_form.publish_form": "Legg Ãēt",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Goym broytingar",
- "compose_form.sensitive.hide": "{count, plural, one {FrÃĄmerk tilfar sum viðkvÃĻmt} other {FrÃĄmerk tilfar sum viðkvÃĻmt}}",
- "compose_form.sensitive.marked": "{count, plural, one {Tilfarið er frÃĄmerkt sum viðkvÃĻmt} other {Tilfarið er frÃĄmerkt sum viðkvÃĻmt}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {Tilfarið er ikki merkt sum viðkvÃĻmt} other {Tilfarið er ikki merkt sum viðkvÃĻmt}}",
+ "compose_form.reply": "Svara",
+ "compose_form.save_changes": "Dagfør",
"compose_form.spoiler.marked": "Ãvaring um at strika innihald",
"compose_form.spoiler.unmarked": "Skriva ÃĄvaring um innihald",
- "compose_form.spoiler_placeholder": "Skriva tÃna ÃĄvaring her",
+ "compose_form.spoiler_placeholder": "InnihaldsÃĄvaring (valfrÃ)",
"confirmation_modal.cancel": "Strika",
"confirmations.block.block_and_report": "Banna og melda",
"confirmations.block.confirm": "Banna",
@@ -393,6 +392,7 @@
"lists.search": "Leita millum fÃŗlk, sum tÃē fylgir",
"lists.subheading": "TÃnir listar",
"load_pending": "{count, plural, one {# nÃŊtt evni} other {# nÃŊggj evni}}",
+ "loading_indicator.label": "InnlesurâĻ",
"media_gallery.toggle_visible": "{number, plural, one {Fjal mynd} other {Fjal myndir}}",
"moved_to_account_banner.text": "Konta tÃn {disabledAccount} er à løtuni Ãŗvirkin, tà tÃē flutti til {movedToAccount}.",
"mute_modal.duration": "TÃðarbil",
@@ -407,7 +407,6 @@
"navigation_bar.direct": "Privatar umrøður",
"navigation_bar.discover": "Uppdaga",
"navigation_bar.domain_blocks": "Bannað økisnøvn",
- "navigation_bar.edit_profile": "Broyt vanga",
"navigation_bar.explore": "Rannsaka",
"navigation_bar.favourites": "DÃĄmdir postar",
"navigation_bar.filters": "Doyvd orð",
@@ -483,6 +482,15 @@
"onboarding.follows.title": "VÃĻlumtÃŗkt ÃĄ Mastodon",
"onboarding.profile.discoverable": "Ger tað møguligt hjÃĄ øðrum at finna vangan hjÃĄ mÃĻr",
"onboarding.profile.discoverable_hint": "TÃĄ tÃē jÃĄttar at onnur skulu kunna finna teg ÃĄ Mastodon, so kann henda, at postar tÃnir sÃggjast à leitiÃērslitum og rÃĄkum, og vangin hjÃĄ tÃĻr kann vera skotin upp fyri fÃŗlki við ÃĄhugamÃĄlum sum minna um tÃni.",
+ "onboarding.profile.display_name": "Navn, sum skal vÃsast",
+ "onboarding.profile.display_name_hint": "TÃtt fulla navn ella tÃtt stuttliga navnâĻ",
+ "onboarding.profile.lead": "TÃē kanst altÃð gera hetta liðugt seinni à stillingunum, har enn fleiri tillagingarmøguleikar eru tøkir.",
+ "onboarding.profile.note": "ÃvilÃŊsing",
+ "onboarding.profile.note_hint": "TÃē kanst @umrøða onnur fÃŗlk ella #frÃĄmerkiâĻ",
+ "onboarding.profile.save_and_continue": "Goym og halt fram",
+ "onboarding.profile.title": "Vangauppsetan",
+ "onboarding.profile.upload_avatar": "Legg vangamynd upp",
+ "onboarding.profile.upload_header": "Legg vangahøvd upp",
"onboarding.share.lead": "Lat fÃŗlk vita, hvussu tey kunnu finna teg ÃĄ Mastodon!",
"onboarding.share.message": "Eg eri {username} ÃĄ #Mastodon! Kom og fylg mÃĻr ÃĄ {url}",
"onboarding.share.next_steps": "Møgulig nÃĻstu stig:",
@@ -516,14 +524,15 @@
"poll_button.add_poll": "Legg atkvøðugreiðslu afturat",
"poll_button.remove_poll": "Strika atkvøðugreiðslu",
"privacy.change": "Broyt privatverju av posti",
- "privacy.direct.long": "Bert sjÃŗnligt hjÃĄ nevndum brÃēkarum",
- "privacy.direct.short": "Bert nevnd fÃŗlk",
- "privacy.private.long": "Bert sjÃŗnligt hjÃĄ fylgjarum",
- "privacy.private.short": "Einans fylgjarar",
- "privacy.public.long": "SjÃŗnligt hjÃĄ øllum",
+ "privacy.direct.long": "Ãll, sum eru nevnd à postinum",
+ "privacy.direct.short": "ÃvÃs fÃŗlk",
+ "privacy.private.long": "Einans tey, ið fylgja tÃĻr",
+ "privacy.private.short": "Fylgjarar",
+ "privacy.public.long": "Ãll à og uttanfyri Mastodon",
"privacy.public.short": "Alment",
- "privacy.unlisted.long": "SjÃŗnligur fyri øll, men ikki gjøgnum uppdagingarhentleikarnar",
- "privacy.unlisted.short": "Ikki listað",
+ "privacy.unlisted.additional": "Hetta er jÃēst sum almenn, tÃŗ verður posturin ikki vÃstur à samtÃðarrÃĄsum ella frÃĄmerkjum, rannsakan ella Mastodon leitingum, sjÃĄlvt um valið er galdandi fyri alla kontuna.",
+ "privacy.unlisted.long": "FÃĻrri algoritmiskar fanfarur",
+ "privacy.unlisted.short": "Stillur almenningur",
"privacy_policy.last_updated": "Seinast dagført {date}",
"privacy_policy.title": "PrivatlÃvspolitikkur",
"recommended": "ViðmÃĻlt",
@@ -541,7 +550,9 @@
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
"relative_time.today": "Ã dag",
+ "reply_indicator.attachments": "{count, plural, one {# viðfesti} other {# viðfesti}}",
"reply_indicator.cancel": "Ãgilda",
+ "reply_indicator.poll": "Atkvøðugreiðsla",
"report.block": "Blokera",
"report.block_explanation": "TÃē fer ikki at sÃggja postarnar hjÃĄ teimum. Tey kunnu ikki sÃggja tÃnar postar ella fylgja tÃĻr. Tey sÃggja, at tey eru blokeraði.",
"report.categories.legal": "Løgfrøðisligt",
@@ -705,10 +716,8 @@
"upload_error.poll": "Ikki loyvt at leggja fÃlur upp à spurnarkanningum.",
"upload_form.audio_description": "LÃŊs fyri teimum, sum eru deyv ella hava ringa hoyrn",
"upload_form.description": "LÃŊs fyri teimum, sum eru blind ella eru sjÃŗnveik",
- "upload_form.description_missing": "LÃŊsing vantar",
"upload_form.edit": "RÃĻtta",
"upload_form.thumbnail": "Broyt smÃĄmynd",
- "upload_form.undo": "Strika",
"upload_form.video_description": "LÃŊs fyri teimum, sum eru deyv, hava ringa hoyrn, eru blind ella eru sjÃŗnveik",
"upload_modal.analyzing_picture": "Greini myndâĻ",
"upload_modal.apply": "Ger virkið",
diff --git a/app/javascript/mastodon/locales/fr-QC.json b/app/javascript/mastodon/locales/fr-CA.json
similarity index 97%
rename from app/javascript/mastodon/locales/fr-QC.json
rename to app/javascript/mastodon/locales/fr-CA.json
index f2d99412d..66a7da6d1 100644
--- a/app/javascript/mastodon/locales/fr-QC.json
+++ b/app/javascript/mastodon/locales/fr-CA.json
@@ -89,7 +89,6 @@
"announcement.announcement": "Annonce",
"attachments_list.unprocessed": "(non traitÊ)",
"audio.hide": "Masquer l'audio",
- "autosuggest_hashtag.per_week": "{count} par semaine",
"boost_modal.combo": "Vous pouvez appuyer sur {combo} pour sauter ceci la prochaine fois",
"bundle_column_error.copy_stacktrace": "Copier le rapport d'erreur",
"bundle_column_error.error.body": "La page demandÊe n'a pas pu ÃĒtre affichÊe. Cela pourrait ÃĒtre dÃģ à un bogue dans notre code, ou à un problème de compatibilitÊ avec le navigateur.",
@@ -146,22 +145,12 @@
"compose_form.lock_disclaimer": "Votre compte nâest pas {locked}. Tout le monde peut vous suivre et voir vos publications privÊs.",
"compose_form.lock_disclaimer.lock": "verrouillÊ",
"compose_form.placeholder": "Ã quoi pensez-vous?",
- "compose_form.poll.add_option": "Ajouter un choix",
"compose_form.poll.duration": "DurÊe du sondage",
- "compose_form.poll.option_placeholder": "Choix {number}",
- "compose_form.poll.remove_option": "Supprimer ce choix",
"compose_form.poll.switch_to_multiple": "Changer le sondage pour autoriser plusieurs choix",
"compose_form.poll.switch_to_single": "Changer le sondage pour n'autoriser qu'un seul choix",
- "compose_form.publish": "Publier",
"compose_form.publish_form": "Publier",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Enregistrer les modifications",
- "compose_form.sensitive.hide": "{count, plural, one {Marquer mÊdia comme sensible} other {Marquer mÊdias comme sensibles}}",
- "compose_form.sensitive.marked": "{count, plural, one {Le mÊdia est marquÊ comme sensible} other {Les mÊdias sont marquÊs comme sensibles}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {Le mÊdia nâest pas marquÊ comme sensible} other {Les mÊdias ne sont pas marquÊs comme sensibles}}",
"compose_form.spoiler.marked": "Enlever l'avertissement de contenu",
"compose_form.spoiler.unmarked": "Ajouter un avertissement de contenu",
- "compose_form.spoiler_placeholder": "Ãcrivez votre avertissement ici",
"confirmation_modal.cancel": "Annuler",
"confirmations.block.block_and_report": "Bloquer et signaler",
"confirmations.block.confirm": "Bloquer",
@@ -408,7 +397,6 @@
"navigation_bar.direct": "Mention privÊe",
"navigation_bar.discover": "DÊcouvrir",
"navigation_bar.domain_blocks": "Domaines bloquÊs",
- "navigation_bar.edit_profile": "Modifier le profil",
"navigation_bar.explore": "Explorer",
"navigation_bar.favourites": "Favoris",
"navigation_bar.filters": "Mots masquÊs",
@@ -526,14 +514,7 @@
"poll_button.add_poll": "Ajouter un sondage",
"poll_button.remove_poll": "Supprimer le sondage",
"privacy.change": "Changer la confidentialitÊ des messages",
- "privacy.direct.long": "Visible uniquement par les comptes mentionnÊs",
- "privacy.direct.short": "Personnes mentionnÊes uniquement",
- "privacy.private.long": "Visible uniquement pour vos abonnÃŠÂˇe¡s",
- "privacy.private.short": "AbonnÃŠÂˇe¡s seulement",
- "privacy.public.long": "Visible pour tous",
"privacy.public.short": "Public",
- "privacy.unlisted.long": "Visible pour tous, mais sans fonctionnalitÊs de dÊcouverte",
- "privacy.unlisted.short": "Non listÊ",
"privacy_policy.last_updated": "Dernière mise à jour {date}",
"privacy_policy.title": "Politique de confidentialitÊ",
"recommended": "RecommandÊ",
@@ -715,10 +696,8 @@
"upload_error.poll": "Lâenvoi de fichiers nâest pas autorisÊ avec les sondages.",
"upload_form.audio_description": "DÊcrire pour les personnes ayant des difficultÊs dâaudition",
"upload_form.description": "DÊcrire pour les malvoyants",
- "upload_form.description_missing": "Description manquante",
"upload_form.edit": "Modifier",
"upload_form.thumbnail": "Changer la vignette",
- "upload_form.undo": "Supprimer",
"upload_form.video_description": "DÊcrire pour les personnes ayant des problèmes de vue ou d'audition",
"upload_modal.analyzing_picture": "Analyse de lâimage en coursâĻ",
"upload_modal.apply": "Appliquer",
diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json
index 774702f98..2d0fa3b7d 100644
--- a/app/javascript/mastodon/locales/fr.json
+++ b/app/javascript/mastodon/locales/fr.json
@@ -89,7 +89,6 @@
"announcement.announcement": "Annonce",
"attachments_list.unprocessed": "(non traitÊ)",
"audio.hide": "Masquer l'audio",
- "autosuggest_hashtag.per_week": "{count} par semaine",
"boost_modal.combo": "Vous pouvez appuyer sur {combo} pour passer ceci la prochaine fois",
"bundle_column_error.copy_stacktrace": "Copier le rapport d'erreur",
"bundle_column_error.error.body": "La page demandÊe n'a pas pu ÃĒtre affichÊe. Cela peut ÃĒtre dÃģ à un bogue dans notre code, ou à un problème de compatibilitÊ avec le navigateur.",
@@ -146,22 +145,12 @@
"compose_form.lock_disclaimer": "Votre compte nâest pas {locked}. Tout le monde peut vous suivre pour voir vos messages rÊservÊs à vos abonnÊâ
eâ
s.",
"compose_form.lock_disclaimer.lock": "verrouillÊ",
"compose_form.placeholder": "Quâavez-vous en tÃĒteâ¯?",
- "compose_form.poll.add_option": "Ajouter un choix",
"compose_form.poll.duration": "DurÊe du sondage",
- "compose_form.poll.option_placeholder": "Choix {number}",
- "compose_form.poll.remove_option": "Supprimer ce choix",
"compose_form.poll.switch_to_multiple": "Changer le sondage pour autoriser plusieurs choix",
"compose_form.poll.switch_to_single": "Modifier le sondage pour autoriser qu'un seul choix",
- "compose_form.publish": "Publier",
"compose_form.publish_form": "Nouvelle publication",
- "compose_form.publish_loud": "{publish}â¯!",
- "compose_form.save_changes": "Enregistrer les modifications",
- "compose_form.sensitive.hide": "{count, plural, one {Marquer le mÊdia comme sensible} other {Marquer les mÊdias comme sensibles}}",
- "compose_form.sensitive.marked": "{count, plural, one {Le mÊdia est marquÊ comme sensible} other {Les mÊdias sont marquÊs comme sensibles}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {Le mÊdia nâest pas marquÊ comme sensible} other {Les mÊdias ne sont pas marquÊs comme sensibles}}",
"compose_form.spoiler.marked": "Enlever lâavertissement de contenu",
"compose_form.spoiler.unmarked": "Ajouter un avertissement de contenu",
- "compose_form.spoiler_placeholder": "Ãcrivez votre avertissement ici",
"confirmation_modal.cancel": "Annuler",
"confirmations.block.block_and_report": "Bloquer et signaler",
"confirmations.block.confirm": "Bloquer",
@@ -408,7 +397,6 @@
"navigation_bar.direct": "Mention privÊe",
"navigation_bar.discover": "DÊcouvrir",
"navigation_bar.domain_blocks": "Domaines bloquÊs",
- "navigation_bar.edit_profile": "Modifier le profil",
"navigation_bar.explore": "Explorer",
"navigation_bar.favourites": "Favoris",
"navigation_bar.filters": "Mots masquÊs",
@@ -526,14 +514,7 @@
"poll_button.add_poll": "Ajouter un sondage",
"poll_button.remove_poll": "Supprimer le sondage",
"privacy.change": "Ajuster la confidentialitÊ du message",
- "privacy.direct.long": "Visible uniquement par les comptes mentionnÊs",
- "privacy.direct.short": "Personnes mentionnÊes uniquement",
- "privacy.private.long": "Visible uniquement par vos abonnÊs",
- "privacy.private.short": "AbonnÊs uniquement",
- "privacy.public.long": "Visible pour tous",
"privacy.public.short": "Public",
- "privacy.unlisted.long": "Visible pour tous, mais sans fonctionnalitÊs de dÊcouverte",
- "privacy.unlisted.short": "Non listÊ",
"privacy_policy.last_updated": "Dernière mise à jour {date}",
"privacy_policy.title": "Politique de confidentialitÊ",
"recommended": "RecommandÊ",
@@ -715,10 +696,8 @@
"upload_error.poll": "Lâenvoi de fichiers nâest pas autorisÊ avec les sondages.",
"upload_form.audio_description": "DÊcrire pour les personnes ayant des difficultÊs dâaudition",
"upload_form.description": "DÊcrire pour les malvoyant¡e¡s",
- "upload_form.description_missing": "Description manquante",
"upload_form.edit": "Modifier",
"upload_form.thumbnail": "Changer la vignette",
- "upload_form.undo": "Supprimer",
"upload_form.video_description": "DÊcrire pour les personnes ayant des problèmes de vue ou d'audition",
"upload_modal.analyzing_picture": "Analyse de lâimage en coursâĻ",
"upload_modal.apply": "Appliquer",
diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json
index ea42ef91c..d5f22d2ee 100644
--- a/app/javascript/mastodon/locales/fy.json
+++ b/app/javascript/mastodon/locales/fy.json
@@ -89,7 +89,6 @@
"announcement.announcement": "Oankundiging",
"attachments_list.unprocessed": "(net ferwurke)",
"audio.hide": "Audio ferstopje",
- "autosuggest_hashtag.per_week": "{count} yn âe wike",
"boost_modal.combo": "Jo kinne op {combo} drukke om dit de folgjende kear oer te slaan",
"bundle_column_error.copy_stacktrace": "Flaterrapport kopiearje",
"bundle_column_error.error.body": "De opfrege side koe net werjÃģn wurde. It kin wÃĒze troch in flater yn Ãēs koade, of in probleem mei browserkompatibiliteit.",
@@ -146,22 +145,12 @@
"compose_form.lock_disclaimer": "Jo account is net {locked}. Elkenien kin jo folgje en kin de berjochten sjen dyât jo allinnich oan jo folgers rjochte hawwe.",
"compose_form.lock_disclaimer.lock": "beskoattele",
"compose_form.placeholder": "Wat wolle jo kwyt?",
- "compose_form.poll.add_option": "Kar tafoegje",
"compose_form.poll.duration": "Doer fan de enkÃĒte",
- "compose_form.poll.option_placeholder": "Kar {number}",
- "compose_form.poll.remove_option": "Dizze kar fuortsmite",
"compose_form.poll.switch_to_multiple": "EnkÃĒte wizigje om meardere karren ta te stean",
"compose_form.poll.switch_to_single": "EnkÃĒte wizigje om in inkelde kar ta te stean",
- "compose_form.publish": "Publisearje",
"compose_form.publish_form": "Publisearje",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Wizigingen bewarje",
- "compose_form.sensitive.hide": "{count, plural, one {Media as gefoelich markearje} other {Media as gefoelich markearje}}",
- "compose_form.sensitive.marked": "{count, plural, one {Media as gefoelich markearre} other {Media as gefoelich markearre}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {Media is net as gefoelich markearre} other {Media is net as gefoelich markearre}}",
"compose_form.spoiler.marked": "YnhÃĸldswarskôging fuortsmite",
"compose_form.spoiler.unmarked": "YnhÃĸldswarskôging tafoegje",
- "compose_form.spoiler_placeholder": "Warskôgingstekst",
"confirmation_modal.cancel": "Annulearje",
"confirmations.block.block_and_report": "Blokkearje en rapportearje",
"confirmations.block.confirm": "Blokkearje",
@@ -408,7 +397,6 @@
"navigation_bar.direct": "Priveefermeldingen",
"navigation_bar.discover": "Untdekke",
"navigation_bar.domain_blocks": "Blokkearre domeinen",
- "navigation_bar.edit_profile": "Profyl bewurkje",
"navigation_bar.explore": "Ferkenne",
"navigation_bar.favourites": "Favoriten",
"navigation_bar.filters": "Negearre wurden",
@@ -526,14 +514,7 @@
"poll_button.add_poll": "Poll tafoegje",
"poll_button.remove_poll": "EnkÃĒte fuortsmite",
"privacy.change": "Sichtberheid fan berjocht oanpasse",
- "privacy.direct.long": "Allinnich sichtber foar fermelde brÃģkers",
- "privacy.direct.short": "Allinnich fermelde minsken",
- "privacy.private.long": "Allinnich sichtber foar folgers",
- "privacy.private.short": "Allinnich folgers",
- "privacy.public.long": "Sichtber foar elkenien",
"privacy.public.short": "Iepenbier",
- "privacy.unlisted.long": "Foar elkenien sichtber, mar net Ãģnder trends, hashtags en op iepenbiere tiidlinen",
- "privacy.unlisted.short": "Minder iepenbier",
"privacy_policy.last_updated": "LÃĒst bywurke op {date}",
"privacy_policy.title": "Privacybelied",
"recommended": "Oanrekommandearre",
@@ -715,10 +696,8 @@
"upload_error.poll": "It opladen fan bestannen is yn enkÃĒten net tastien.",
"upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Describe for the visually impaired",
- "upload_form.description_missing": "Gjin omskriuwing tafoege",
"upload_form.edit": "Bewurkje",
"upload_form.thumbnail": "Miniatuerôfbylding wizigje",
- "upload_form.undo": "Fuortsmite",
"upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.analyzing_picture": "Ofbylding analysearjeâĻ",
"upload_modal.apply": "Tapasse",
diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json
index f0f9c5554..855a27d05 100644
--- a/app/javascript/mastodon/locales/ga.json
+++ b/app/javascript/mastodon/locales/ga.json
@@ -76,7 +76,6 @@
"announcement.announcement": "FÃŗgra",
"attachments_list.unprocessed": "(neamhphrÃŗiseÃĄilte)",
"audio.hide": "Cuir fuaim i bhfolach",
- "autosuggest_hashtag.per_week": "{count} sa seachtain",
"boost_modal.combo": "Is fÊidir leat {combo} a bhrÃē chun Ê seo a scipeÃĄil an chÊad uair eile",
"bundle_column_error.copy_stacktrace": "CÃŗipeÃĄil tuairisc earrÃĄide",
"bundle_column_error.error.body": "Nà fÊidir an leathanach a iarradh a sholÃĄthar. Seans gurb amhlaidh mar gheall ar fhabht sa chÃŗd, nÃŗ mar gheall ar mhÃrÊireacht leis an mbrabhsÃĄlaÃ.",
@@ -127,19 +126,12 @@
"compose_form.lock_disclaimer": "NÃl an cuntas seo {locked}. FÊadfaidh duine ar bith tÃē a leanÃēint agus na postÃĄlacha atÃĄ dÃrithe agat ar do lucht leanÃēna amhÃĄin a fheiceÃĄil.",
"compose_form.lock_disclaimer.lock": "faoi ghlas",
"compose_form.placeholder": "Cad atÃĄ ag tarlÃē?",
- "compose_form.poll.add_option": "Cuir rogha isteach",
"compose_form.poll.duration": "Achar suirbhÊanna",
- "compose_form.poll.option_placeholder": "Rogha {number}",
- "compose_form.poll.remove_option": "Bain an rogha seo",
"compose_form.poll.switch_to_multiple": "Athraigh suirbhÊ chun cead a thabhairt do ilrogha",
"compose_form.poll.switch_to_single": "Athraigh suirbhÊ chun cead a thabhairt do rogha amhÃĄin",
- "compose_form.publish": "Foilsigh",
"compose_form.publish_form": "Foilsigh\n",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "SÃĄbhÃĄil",
"compose_form.spoiler.marked": "Bain rabhadh ÃĄbhair",
"compose_form.spoiler.unmarked": "Cuir rabhadh ÃĄbhair",
- "compose_form.spoiler_placeholder": "ScrÃobh do rabhadh anseo",
"confirmation_modal.cancel": "Cealaigh",
"confirmations.block.block_and_report": "Bac â Tuairiscigh",
"confirmations.block.confirm": "Bac",
@@ -325,7 +317,6 @@
"navigation_bar.compose": "Cum postÃĄil nua",
"navigation_bar.discover": "Faigh amach",
"navigation_bar.domain_blocks": "Fearainn bhactha",
- "navigation_bar.edit_profile": "Cuir an phrÃŗifÃl in eagar",
"navigation_bar.explore": "FÊach thart",
"navigation_bar.filters": "Focail bhalbhaithe",
"navigation_bar.follow_requests": "Iarratais leanÃēnaÃ",
@@ -401,12 +392,7 @@
"poll_button.add_poll": "Cruthaigh suirbhÊ",
"poll_button.remove_poll": "Bain suirbhÊ",
"privacy.change": "Adjust status privacy",
- "privacy.direct.short": "Direct",
- "privacy.private.long": "Sofheicthe do LeantÃŗirà amhÃĄin",
- "privacy.private.short": "LeantÃŗirà amhÃĄin",
- "privacy.public.long": "Infheicthe do chÃĄch",
"privacy.public.short": "PoiblÃ",
- "privacy.unlisted.short": "Neamhliostaithe",
"privacy_policy.title": "Polasaà prÃobhÃĄideachais",
"refresh": "Athnuaigh",
"regeneration_indicator.label": "Ag lÃŗdÃĄilâĻ",
@@ -529,7 +515,6 @@
"upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Describe for the visually impaired",
"upload_form.edit": "Cuir in eagar",
- "upload_form.undo": "Scrios",
"upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.analyzing_picture": "Ag anailÃsiÃē ÃomhÃĄâĻ",
"upload_modal.apply": "Cuir i bhFeidhm",
diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json
index 11d83d6ce..0c7ef79cd 100644
--- a/app/javascript/mastodon/locales/gd.json
+++ b/app/javascript/mastodon/locales/gd.json
@@ -86,7 +86,6 @@
"announcement.announcement": "Brath-fios",
"attachments_list.unprocessed": "(gun phrÃ˛iseasadh)",
"audio.hide": "Falaich an fhuaim",
- "autosuggest_hashtag.per_week": "{count} san t-seachdain",
"boost_modal.combo": "BrÚth air {combo} nam bâ fheà rr leat leum a ghearradh thar seo an ath-thuras",
"bundle_column_error.copy_stacktrace": "Dèan lethbhreac de aithris na mearachd",
"bundle_column_error.error.body": "Cha bâ urrainn dhuinn an duilleag a dhâiarr thu a reandaradh. Dhâfhaoidte gu bheil buga sa chÃ˛d againn no duilgheadas co-chÃ˛rdalachd leis aâ bhrabhsair.",
@@ -143,22 +142,12 @@
"compose_form.lock_disclaimer": "Chan eil an cunntas agad {locked}. âS urrainn do dhuine sam bith âgad leantainn is na postaichean agad a tha ag amas air an luchd-leantainn agad a-mhà in a shealltainn.",
"compose_form.lock_disclaimer.lock": "glaiste",
"compose_form.placeholder": "Dè tha air dâ aire?",
- "compose_form.poll.add_option": "Cuir roghainn ris",
"compose_form.poll.duration": "Faide aâ chunntais-bheachd",
- "compose_form.poll.option_placeholder": "Roghainn {number}",
- "compose_form.poll.remove_option": "Thoir an roghainn seo air falbh",
"compose_form.poll.switch_to_multiple": "Atharraich an cunntas-bheachd ach an gabh iomadh roghainn a thaghadh",
"compose_form.poll.switch_to_single": "Atharraich an cunntas-bheachd gus nach gabh ach aon roghainn a thaghadh",
- "compose_form.publish": "Foillsich",
"compose_form.publish_form": "Post Úr",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "SÃ bhail na h-atharraichean",
- "compose_form.sensitive.hide": "{count, plural, one {Cuir comharra gu bheil am meadhan frionasach} two {Cuir comharra gu bheil na meadhanan frionasach} few {Cuir comharra gu bheil na meadhanan frionasach} other {Cuir comharra gu bheil na meadhanan frionasach}}",
- "compose_form.sensitive.marked": "{count, plural, one {Tha comharra ris aâ mheadhan gu bheil e frionasach} two {Tha comharra ris na meadhanan gu bheil iad frionasach} few {Tha comharra ris na meadhanan gu bheil iad frionasach} other {Tha comharra ris na meadhanan gu bheil iad frionasach}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {Chan eil comharra ris aâ mheadhan gun robh e frionasach} two {Chan eil comharra ris na meadhanan gun robh iad frionasach} few {Chan eil comharra ris na meadhanan gun robh iad frionasach} other {Chan eil comharra ris na meadhanan gun robh iad frionasach}}",
"compose_form.spoiler.marked": "Thoir air falbh an rabhadh susbainte",
"compose_form.spoiler.unmarked": "Cuir rabhadh susbainte ris",
- "compose_form.spoiler_placeholder": "SgrÃŦobh an rabhadh agad an-seo",
"confirmation_modal.cancel": "Sguir dheth",
"confirmations.block.block_and_report": "Bac â dèan gearan",
"confirmations.block.confirm": "Bac",
@@ -402,7 +391,6 @@
"navigation_bar.direct": "Iomraidhean prÃŦobhaideach",
"navigation_bar.discover": "RÚraich",
"navigation_bar.domain_blocks": "Ãrainnean bacte",
- "navigation_bar.edit_profile": "Deasaich aâ phrÃ˛ifil",
"navigation_bar.explore": "RÚraich",
"navigation_bar.favourites": "Annsachdan",
"navigation_bar.filters": "Faclan mÚchte",
@@ -509,14 +497,7 @@
"poll_button.add_poll": "Cuir cunntas-bheachd ris",
"poll_button.remove_poll": "Thoir air falbh an cunntas-bheachd",
"privacy.change": "Cuir gleus air prÃŦobhaideachd aâ phuist",
- "privacy.direct.long": "Chan fhaic ach na cleachdaichean le iomradh orra seo",
- "privacy.direct.short": "An fheadhainn le iomradh orra a-mhà in",
- "privacy.private.long": "Chan fhaic ach na daoine a tha âgad leantainn seo",
- "privacy.private.short": "Luchd-leantainn a-mhà in",
- "privacy.public.long": "ChÃŦ a h-uile duine e",
"privacy.public.short": "Poblach",
- "privacy.unlisted.long": "ChÃŦ a h-uile duine e ach cha nochd e ann an gleusan rÚrachaidh",
- "privacy.unlisted.short": "Falaichte o liostaichean",
"privacy_policy.last_updated": "An t-Úrachadh mu dheireadh {date}",
"privacy_policy.title": "Poileasaidh prÃŦobhaideachd",
"refresh": "Ath-nuadhaich",
@@ -696,10 +677,8 @@
"upload_error.poll": "Chan fhaod thu faidhle a luchdadh suas an cois cunntais-bheachd.",
"upload_form.audio_description": "MÃŦnich e dhan fheadhainn le èisteachd bheag",
"upload_form.description": "MÃŦnich e dhan fheadhainn le cion-lèirsinne",
- "upload_form.description_missing": "Cha deach tuairisgeul a chur ris",
"upload_form.edit": "Deasaich",
"upload_form.thumbnail": "Atharraich an dealbhag",
- "upload_form.undo": "Sguab à s",
"upload_form.video_description": "MÃŦnich e dhan fheadhainn le èisteachd bheag no cion-lèirsinne",
"upload_modal.analyzing_picture": "Aâ sgrÚdadh an deilbhâĻ",
"upload_modal.apply": "Cuir an sà s",
diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json
index bfd20a467..ffd01a547 100644
--- a/app/javascript/mastodon/locales/gl.json
+++ b/app/javascript/mastodon/locales/gl.json
@@ -20,7 +20,7 @@
"account.block_short": "Bloquear",
"account.blocked": "Bloqueada",
"account.browse_more_on_origin_server": "Busca mÃĄis no perfil orixinal",
- "account.cancel_follow_request": "Cancelar a solicitude de seguimento",
+ "account.cancel_follow_request": "Desbotar a solicitude de seguimento",
"account.copy": "Copiar ligazÃŗn ao perfil",
"account.direct": "Mencionar de xeito privado a @{name}",
"account.disable_notifications": "Deixar de notificarme cando @{name} publica",
@@ -32,6 +32,7 @@
"account.featured_tags.last_status_never": "Sen publicaciÃŗns",
"account.featured_tags.title": "Cancelos destacados de {name}",
"account.follow": "Seguir",
+ "account.follow_back": "Seguir tamÊn",
"account.followers": "Seguidoras",
"account.followers.empty": "AÃnda ninguÊn segue esta usuaria.",
"account.followers_counter": "{count, plural, one {{counter} Seguidora} other {{counter} Seguidoras}}",
@@ -52,6 +53,7 @@
"account.mute_notifications_short": "Silenciar notificaciÃŗns",
"account.mute_short": "Acalar",
"account.muted": "Acalada",
+ "account.mutual": "Mutuo",
"account.no_bio": "Sen descriciÃŗn.",
"account.open_original_page": "Abrir pÃĄxina orixinal",
"account.posts": "PublicaciÃŗns",
@@ -87,7 +89,6 @@
"announcement.announcement": "Anuncio",
"attachments_list.unprocessed": "(sen procesar)",
"audio.hide": "Agochar audio",
- "autosuggest_hashtag.per_week": "{count} por semana",
"boost_modal.combo": "Preme {combo} para ignorar isto na seguinte vez",
"bundle_column_error.copy_stacktrace": "Copiar informe do erro",
"bundle_column_error.error.body": "Non se puido mostrar a pÃĄxina solicitada. PoderÃa deberse a un problema no cÃŗdigo, ou incompatiblidade co navegador.",
@@ -144,22 +145,12 @@
"compose_form.lock_disclaimer": "A tÃēa conta non estÃĄ {locked}. Todas poden seguirte para ollar os teus toots sÃŗ para seguidoras.",
"compose_form.lock_disclaimer.lock": "bloqueada",
"compose_form.placeholder": "Que contas?",
- "compose_form.poll.add_option": "Engadir unha opciÃŗn",
"compose_form.poll.duration": "DuraciÃŗn da enquisa",
- "compose_form.poll.option_placeholder": "OpciÃŗn {number}",
- "compose_form.poll.remove_option": "Eliminar esta opciÃŗn",
"compose_form.poll.switch_to_multiple": "Mudar a enquisa para permitir mÃēltiples escollas",
"compose_form.poll.switch_to_single": "Mudar a enquisa para permitir unha soa opciÃŗn",
- "compose_form.publish": "Publicar",
"compose_form.publish_form": "Publicar",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Gardar cambios",
- "compose_form.sensitive.hide": "{count, plural, one {Marca multimedia como sensible} other {Marca multimedia como sensibles}}",
- "compose_form.sensitive.marked": "{count, plural, one {Multimedia marcado como sensible} other {Multimedia marcados como sensibles}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {Multimedia non marcado como sensible} other {Multimedia non marcado como sensible}}",
"compose_form.spoiler.marked": "Retirar o aviso sobre o contido",
"compose_form.spoiler.unmarked": "Engadir aviso sobre o contido",
- "compose_form.spoiler_placeholder": "Escribe o teu aviso aquÃ",
"confirmation_modal.cancel": "Cancelar",
"confirmations.block.block_and_report": "Bloquear e denunciar",
"confirmations.block.confirm": "Bloquear",
@@ -182,7 +173,7 @@
"confirmations.mute.explanation": "Isto agocharÃĄ as sÃēas publicaciÃŗns ou as que a mencionen, mais poderÃĄ ler as tÃēas publicaciÃŗns e ser seguidora tÃēa.",
"confirmations.mute.message": "Tes a certeza de querer acalar a {name}?",
"confirmations.redraft.confirm": "Eliminar e reescribir",
- "confirmations.redraft.message": "Tes a certeza de querer eliminar esta publicaciÃŗn e reescribila? PerderÃĄs as comparticiÃŗns e favoritas, e as respostas ÃĄ publicaciÃŗn orixinal ficarÃĄn orfas.",
+ "confirmations.redraft.message": "Tes a certeza de querer eliminar esta publicaciÃŗn e reescribila? PerderÃĄs as promociÃŗns e favorecementos, e as respostas ÃĄ publicaciÃŗn orixinal ficarÃĄn orfas.",
"confirmations.reply.confirm": "Responder",
"confirmations.reply.message": "Ao responder sobrescribirÃĄs a mensaxe que estÃĄs a compor. Tes a certeza de que queres continuar?",
"confirmations.unfollow.confirm": "Deixar de seguir",
@@ -202,7 +193,7 @@
"disabled_account_banner.text": "Actualmente a tÃēa conta {disabledAccount} estÃĄ desactivada.",
"dismissable_banner.community_timeline": "Estas son as publicaciÃŗns mÃĄis recentes das persoas que teÃąen a sÃēa conta en {domain}.",
"dismissable_banner.dismiss": "Desbotar",
- "dismissable_banner.explore_links": "As persoas deste servidor e da rede descentralizada estÃĄn a falar destas historias agora mesmo.",
+ "dismissable_banner.explore_links": "Estas son as novas historias mÃĄs compartidas hoxe na web social. Aparecen primeiro as novas compartidas por mÃĄis persoas diferentes.",
"dismissable_banner.explore_statuses": "Estas son as publicaciÃŗns da web social que hoxe estÃĄn gaÃąando popularidade. As publicaciÃŗns con mÃĄis promociÃŗns e favorecemento teÃąen puntuaciÃŗn mÃĄis alta.",
"dismissable_banner.explore_tags": "Estes cancelos estÃĄn gaÃąando popularidade entre as persoas deste servidor e noutros servidores da rede descentralizada.",
"dismissable_banner.public_timeline": "Estas son as publicaciÃŗns pÃēblicas mÃĄis recentes das persoas que as usuarias de {domain} estÃĄn a seguir.",
@@ -238,7 +229,7 @@
"empty_column.follow_requests": "Non tes peticiÃŗns de seguimento. Cando recibas unha, amosarase aquÃ.",
"empty_column.followed_tags": "AÃnda non seguiches ningÃēn cancelo. Cando o fagas aparecerÃĄn aquÃ.",
"empty_column.hashtag": "AÃnda non hai nada con este cancelo.",
- "empty_column.home": "A tÃēa cronoloxÃa inicial estÃĄ baleira! Segue a outras usuarias para enchela. {suggestions}",
+ "empty_column.home": "A tÃēa cronoloxÃa inicial estÃĄ baleira! Sigue a outras usuarias para enchela.",
"empty_column.list": "AÃnda non hai nada nesta listaxe. Cando as usuarias incluÃdas na listaxe publiquen mensaxes, amosaranse aquÃ.",
"empty_column.lists": "AÃnda non tes listaxes. Cando crees unha, amosarase aquÃ.",
"empty_column.mutes": "AÃnda non silenciaches a ningÃēnha usuaria.",
@@ -344,7 +335,7 @@
"keyboard_shortcuts.down": "Para mover cara abaixo na listaxe",
"keyboard_shortcuts.enter": "Para abrir publicaciÃŗn",
"keyboard_shortcuts.favourite": "Marcar como favorita",
- "keyboard_shortcuts.favourites": "Para abrir a listaxe das favoritas",
+ "keyboard_shortcuts.favourites": "Para abrir a lista das favoritas",
"keyboard_shortcuts.federated": "Para abrir a cronoloxÃa federada",
"keyboard_shortcuts.heading": "Atallos do teclado",
"keyboard_shortcuts.home": "Para abrir a cronoloxÃa inicial",
@@ -381,7 +372,7 @@
"lists.delete": "Eliminar listaxe",
"lists.edit": "Editar listaxe",
"lists.edit.submit": "Mudar o tÃtulo",
- "lists.exclusive": "Agocha estas publicaciÃŗns no inicio",
+ "lists.exclusive": "Agocha estas publicaciÃŗns no Inicio",
"lists.new.create": "Engadir listaxe",
"lists.new.title_placeholder": "TÃtulo da nova listaxe",
"lists.replies_policy.followed": "Toda usuaria seguida",
@@ -406,7 +397,6 @@
"navigation_bar.direct": "MenciÃŗns privadas",
"navigation_bar.discover": "Descubrir",
"navigation_bar.domain_blocks": "Dominios agochados",
- "navigation_bar.edit_profile": "Editar perfil",
"navigation_bar.explore": "Descubrir",
"navigation_bar.favourites": "Favoritas",
"navigation_bar.filters": "Palabras silenciadas",
@@ -478,8 +468,8 @@
"onboarding.actions.go_to_home": "Vai ÃĄ cronoloxÃa de inicio",
"onboarding.compose.template": "Ola #Mastodon!",
"onboarding.follows.empty": "Desgraciadamente agora mesmo non hai nada que mostrar. Podes intentalo coa busca ou na pÃĄxina descubrir para atopar persoas ÃĄs que seguir, ou intentalo mÃĄis tarde.",
- "onboarding.follows.lead": "Podes facer que a tÃēa cronoloxÃa de inicio sexa como ti a queres. Canta mÃĄis xente sigas mÃĄis interesante serÃĄ. Estes perfÃs poderÃan axudarche a comezar âsempre poderÃĄs deixar de seguilos despois!",
- "onboarding.follows.title": "Popular en Mastodon",
+ "onboarding.follows.lead": "A cronoloxÃa de Inicio Ê o principal xeito de desfrutar Mastodon. Cantas mÃĄis persoas sigas mais interesante e activa serÃĄ. Para comezar, aquà tes algunhas suxestiÃŗns:",
+ "onboarding.follows.title": "Personaliza a cronoloxÃa de inicio",
"onboarding.profile.discoverable": "Que o meu perfil se poida atopar",
"onboarding.profile.discoverable_hint": "Cando elixes que poidan atoparte en Mastodon as tÃēas publicaciÃŗns aparecerÃĄn nos resultados das buscas e nos temas en voga, e o teu perfil poderÃa ser suxerido para seguimento a persoas con intereses semellantes aos teus.",
"onboarding.profile.display_name": "Nome pÃēblico",
@@ -492,20 +482,20 @@
"onboarding.profile.upload_avatar": "Subir imaxe do perfil",
"onboarding.profile.upload_header": "Subir cabeceira para o perfil",
"onboarding.share.lead": "Fai que as persoas saiban como atoparte en Mastodon!",
- "onboarding.share.message": "Son {username} en #Mastodon! SÊgueme en {url}",
+ "onboarding.share.message": "Son {username} en #Mastodon! SÃgueme en {url}",
"onboarding.share.next_steps": "Seguintes pasos:",
"onboarding.share.title": "Comparte o teu perfil",
- "onboarding.start.lead": "A tÃēa nova conta en Mastodon estÃĄ preparada. Mira de que xeito lle podes sacar proveito:",
+ "onboarding.start.lead": "Xa formas parte de Mastodon, unha plataforma de relaciÃŗns sociais descentralizada, Ãēnica, onde ti âe non un algoritmoâ elixes o que les. AxudÃĄmosche cos primeiros pasos:",
"onboarding.start.skip": "Queres omitir todo isto?",
"onboarding.start.title": "Pois xa estÃĄ!",
- "onboarding.steps.follow_people.body": "ConstrÃēes a tÃēa cronoloxÃa. Ãnchea con persoas interesantes.",
- "onboarding.steps.follow_people.title": "Segue a {count, plural, one {unha persoa} other {# persoas}}",
- "onboarding.steps.publish_status.body": "SaÃēda a todo o mundo.",
+ "onboarding.steps.follow_people.body": "Mastodon consiste en seguir a persoas interesantes.",
+ "onboarding.steps.follow_people.title": "Personaliza a tÃēa cronoloxÃa",
+ "onboarding.steps.publish_status.body": "ExprÊsate con texto, fotos, vÃdeos ou enquisas {emoji}",
"onboarding.steps.publish_status.title": "Escribe a tÃēa primeira publicaciÃŗn",
"onboarding.steps.setup_profile.body": "Ao engadir informaciÃŗn ao teu perfil Ê mÃĄis probable que teÃąas mÃĄis interacciÃŗns.",
"onboarding.steps.setup_profile.title": "Personaliza o perfil",
"onboarding.steps.share_profile.body": "Dille ÃĄs amizades como poden atoparte en Mastodon!",
- "onboarding.steps.share_profile.title": "Comparte o teu perfil",
+ "onboarding.steps.share_profile.title": "Comparte o teu perfil en Mastodon",
"onboarding.tips.2fa": "
Sabes que? Podes protexer a tÃēa conta configurando un segundo factor de autenticaciÃŗn nos axustes. Funciona con calquera app TOTP, non precisas un nÃēmero de telÊfono!",
"onboarding.tips.accounts_from_other_servers": "
Sabes que? Como Mastodon Ê descentralizado, algÃēns perfÃs que atopes estarÃĄn en servidores diferentes ao teu. Pero podes interactuar igualmente con eles! O seu servidor Ê o que ven despois da @ no seu identificador!",
"onboarding.tips.migration": "
Sabes que? Se cres que {domain} non Ê o servidor axeitado para ti, podes mover a conta a outro servidor Mastodon sen perder as tÃēas seguidoras. Incluso podes hospedar o teu propio servidor!",
@@ -524,14 +514,7 @@
"poll_button.add_poll": "Engadir unha enquisa",
"poll_button.remove_poll": "Eliminar enquisa",
"privacy.change": "Axustar privacidade",
- "privacy.direct.long": "SÃŗ para as usuarias mencionadas",
- "privacy.direct.short": "SÃŗ persoas mencionadas",
- "privacy.private.long": "SÃŗ para persoas que te seguen",
- "privacy.private.short": "SÃŗ para seguidoras",
- "privacy.public.long": "Visible por todas",
"privacy.public.short": "PÃēblico",
- "privacy.unlisted.long": "Visible por todas, pero excluÃda da secciÃŗn descubrir",
- "privacy.unlisted.short": "Sen listar",
"privacy_policy.last_updated": "Actualizado por Ãēltima vez no {date}",
"privacy_policy.title": "PolÃtica de Privacidade",
"recommended": "Aconsellable",
@@ -571,7 +554,7 @@
"report.reasons.dislike": "Non me gusta",
"report.reasons.dislike_description": "Non Ê algo que queiras ver",
"report.reasons.legal": "Ã ilegal",
- "report.reasons.legal_description": "Cres que atenta contra as leis do paÃs do teu servidor",
+ "report.reasons.legal_description": "Cres que atenta contra as leis do paÃs do teu pais ou servidor",
"report.reasons.other": "Ã outra cousa",
"report.reasons.other_description": "O problema non cae dentro de outras categorÃas",
"report.reasons.spam": "Ã spam",
@@ -713,10 +696,8 @@
"upload_error.poll": "Non se poden subir ficheiros nas enquisas.",
"upload_form.audio_description": "Describir para persoas con problemas auditivos",
"upload_form.description": "Describir para persoas cegas ou con problemas visuais",
- "upload_form.description_missing": "Sen descriciÃŗn",
"upload_form.edit": "Editar",
"upload_form.thumbnail": "Cambiar a miniatura",
- "upload_form.undo": "Eliminar",
"upload_form.video_description": "Describe para persoas con problemas visuais ou auditivos",
"upload_modal.analyzing_picture": "Estase a analizar a imaxeâĻ",
"upload_modal.apply": "Aplicar",
diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json
index 658e16b85..d88a8c49c 100644
--- a/app/javascript/mastodon/locales/he.json
+++ b/app/javascript/mastodon/locales/he.json
@@ -32,7 +32,7 @@
"account.featured_tags.last_status_never": "××× ××Ļר××Ļ××",
"account.featured_tags.title": "××Ē××××Ē ××××ĸ×פ××Ē ×Š× {name}",
"account.follow": "××ĸ×§××",
- "account.follow_back": "×××ר×Ē ×ĸ××§×",
+ "account.follow_back": "××ĸ×§×× ×××ר×",
"account.followers": "×ĸ××§×××",
"account.followers.empty": "××Ŗ ××× ×× ×ĸ××§× ××ר ××׊×Ē×׊ ××× ×ĸ××××.",
"account.followers_counter": "{count, plural,one {×ĸ××§× ×××} other {{counter} ×ĸ××§×××}}",
@@ -89,7 +89,6 @@
"announcement.announcement": "××ר××",
"attachments_list.unprocessed": "(×× ××ĸ×××)",
"audio.hide": "×׊×Ē×§",
- "autosuggest_hashtag.per_week": "{count} ×׊×××ĸ",
"boost_modal.combo": "× ××Ē× ×××§×׊ {combo} ××× ×××× ×פ×ĸ× ××××",
"bundle_column_error.copy_stacktrace": "××ĸ×Ē×§×Ē ××××ĸ×Ē ×Š××××",
"bundle_column_error.error.body": "×××Ŗ ××××ק׊ ××× × ××××. ×× ×ĸ׊×× ×××××Ē ××× ××§×× ×× ××ĸ××× ××Ē×××××Ē ××פ×פ×.",
@@ -146,22 +145,22 @@
"compose_form.lock_disclaimer": "×׊××× × ××× × {locked}. ×× ××× ×××× ××ĸ×§×× ××ר×× ××× ×קר×× ××Ē ××××ĸ××Ē×× ×××××ĸ×××Ē ××ĸ××§××× ××××.",
"compose_form.lock_disclaimer.lock": "× ×ĸ××",
"compose_form.placeholder": "×ĸ× ×× ××Ē.× ××׊×.×Ē?",
- "compose_form.poll.add_option": "××ץ××¤× ×××ר×",
+ "compose_form.poll.add_option": "××ץפ×Ē ×פ׊ר××Ē",
"compose_form.poll.duration": "××Š× ×ץקר",
- "compose_form.poll.option_placeholder": "×פ׊ר××Ē ×ץפר {number}",
- "compose_form.poll.remove_option": "×ץר ××××¨× ××",
+ "compose_form.poll.multiple": "××××¨× ×ר×××",
+ "compose_form.poll.option_placeholder": "×פ׊ר××Ē {number}",
+ "compose_form.poll.remove_option": "×ץר×Ē ×פ׊ר××Ē ××",
+ "compose_form.poll.single": "× × ××××ר",
"compose_form.poll.switch_to_multiple": "××¤×Š×¨× ××××¨× ×ר××× ×ץקר",
"compose_form.poll.switch_to_single": "××¤×Š×¨× ××××¨× ×××××Ē ×ץקר",
- "compose_form.publish": "פרץ××",
+ "compose_form.poll.type": "ץ×× ×׊××",
+ "compose_form.publish": "××××ĸ×",
"compose_form.publish_form": "×פרץ×",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "׊××ר×Ē ×Š×× ××××",
- "compose_form.sensitive.hide": "{count, plural, one {ץ×××× ××××ĸ ×ר××׊} other {ץ×××× ××××ĸ ×ר××׊}}",
- "compose_form.sensitive.marked": "{count, plural, one {××××ĸ ×ץ××× ×ר××׊} other {××××ĸ ×ץ××× ×ר××׊}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {××××ĸ ×× ×ץ××× ×ר××׊} other {××××ĸ ×× ×ץ××× ×ר××׊}}",
+ "compose_form.reply": "×Ē××××",
+ "compose_form.save_changes": "×ĸ××××",
"compose_form.spoiler.marked": "×ץר ×××ר×Ē ×Ē×××",
"compose_form.spoiler.unmarked": "×××Ą×Ŗ ×××ר×Ē ×Ē×××",
- "compose_form.spoiler_placeholder": "××Ē×× ××Ē ×××××¨× ×Š×× ×××",
+ "compose_form.spoiler_placeholder": "×××ר×Ē ×Ē××× (×× ××××)",
"confirmation_modal.cancel": "×××××",
"confirmations.block.block_and_report": "××ץ×× ××××××",
"confirmations.block.confirm": "××ץ××",
@@ -408,7 +407,6 @@
"navigation_bar.direct": "××××ĸ××Ē ×¤×¨××××Ē",
"navigation_bar.discover": "×××",
"navigation_bar.domain_blocks": "×§×××××Ē (׊×××Ē ××Ē××) ×ץ××××Ē",
- "navigation_bar.edit_profile": "×ĸר×××Ē ×¤×¨×פ××",
"navigation_bar.explore": "ץ××ר",
"navigation_bar.favourites": "×××××××",
"navigation_bar.filters": "××××× ××׊×Ē×§××Ē",
@@ -526,14 +524,12 @@
"poll_button.add_poll": "××ץפ×Ē ×Ą×§×¨",
"poll_button.remove_poll": "×ץר×Ē ×Ą×§×¨",
"privacy.change": "׊×× ×× ×¤×¨××××Ē ×××××ĸ×",
- "privacy.direct.long": "רק ××׊×Ē×׊×× ×××××ר×× (mentioned)",
- "privacy.direct.short": "××××××ר×× ××××",
- "privacy.private.long": "××Ļ× ××ĸ××§××× ××××",
- "privacy.private.short": "××ĸ××§××× ××××",
- "privacy.public.long": "×××× ×××",
+ "privacy.direct.long": "×× ×××××ר×× ×××××ĸ×",
+ "privacy.direct.short": "×.× ×Š×× ×ץ×××××",
+ "privacy.private.long": "××ĸ××§××× ××××",
+ "privacy.private.short": "×ĸ××§×××",
+ "privacy.public.long": "×× ××××׊××, ××××ר×× ××ץ××××× ×× ××",
"privacy.public.short": "פ××××",
- "privacy.unlisted.long": "×××× ×××, ××× ××ץ×Ēר ××××Ļ×ĸ× ×Ē××××Ē",
- "privacy.unlisted.short": "×× ×¨×Š×× (×× ×פ×× ×××××)",
"privacy_policy.last_updated": "×ĸ×××× ×××ר×× × {date}",
"privacy_policy.title": "×××× ×××Ē ×¤×¨××××Ē",
"recommended": "×××××Ĩ",
@@ -551,7 +547,9 @@
"relative_time.minutes": "{number} ××§××Ē",
"relative_time.seconds": "{number} ×Š× ×××Ē",
"relative_time.today": "××××",
+ "reply_indicator.attachments": "{count, plural,one {# ×§×××Ĩ ××Ļ×׍ת}other {# ×§××Ļ×× ××Ļ×רפ××}}",
"reply_indicator.cancel": "×××××",
+ "reply_indicator.poll": "×׊××",
"report.block": "××ץ××",
"report.block_explanation": "×× × ××Ē× ×××× ×ר×××Ē ××Ē ×××××ĸ××Ē ×Š×××. ×× ×× ××××× ×ר×××Ē ××Ē ×××××ĸ××Ē ×Š×× ×× ××ĸ×§×× ××ר××. ×× ××××× ×××ĸ×Ē ×Š×× ×ץ××××.",
"report.categories.legal": "×××§×",
@@ -715,10 +713,8 @@
"upload_error.poll": "×× × ××Ē× ×××ĸ×××Ē ×§×××Ĩ ×ĸ× ×Ą×§×¨.",
"upload_form.audio_description": "×Ē×ר/× ×ĸ××ר ××§××× ×Š×××ĸ×",
"upload_form.description": "×Ē×××ר ××××× ×¨×××",
- "upload_form.description_missing": "×× ×××Ą×Ŗ ×Ē×××ר",
"upload_form.edit": "×ĸר×××",
"upload_form.thumbnail": "×Š× ×/× ×Ē××× × ×××××ĸר×Ē",
- "upload_form.undo": "×××××",
"upload_form.video_description": "×Ē×ר/× ×ĸ××ר ××§××× ×Š×××ĸ× ×××§××× ×¨××××",
"upload_modal.analyzing_picture": "×× ×Ē× ×Ē××× ×âĻ",
"upload_modal.apply": "×××",
diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json
index 76d7c1d38..42f4ca4ef 100644
--- a/app/javascript/mastodon/locales/hi.json
+++ b/app/javascript/mastodon/locales/hi.json
@@ -83,7 +83,6 @@
"announcement.announcement": "ā¤āĨā¤ˇā¤Ŗā¤ž",
"attachments_list.unprocessed": "(ā¤
⤏ā¤ā¤¸ā¤žā¤§ā¤ŋ⤤)",
"audio.hide": "ā¤šā¤žā¤ā¤Ą ā¤ā¤Ąā¤ŋ⤝āĨ",
- "autosuggest_hashtag.per_week": "{count} ā¤šā¤° ⤏ā¤ĒāĨā¤¤ā¤žā¤š",
"boost_modal.combo": "ā¤
ā¤ā¤˛āĨ ā¤Ŧā¤žā¤° ⤏āĨā¤ā¤ŋā¤Ē ā¤ā¤°ā¤¨āĨ ā¤āĨ ⤞ā¤ŋ⤠ā¤ā¤Ē {combo} ā¤Ļā¤Ŧā¤ž ⤏ā¤ā¤¤āĨ ā¤šāĨ",
"bundle_column_error.copy_stacktrace": "ā¤āĨā¤ĒāĨ ā¤ā¤°ā¤° ⤰ā¤ŋā¤ĒāĨ⤰āĨā¤",
"bundle_column_error.error.body": "ā¤
⤍āĨ⤰āĨ⤧ā¤ŋ⤤ ā¤ĒāĨ⤠ā¤ĒāĨ⤰⤏āĨ⤤āĨ⤤ ā¤¨ā¤šāĨ⤠ā¤ā¤ŋā¤¯ā¤ž ā¤ā¤ž ⤏ā¤ā¤žāĨ¤ ā¤¯ā¤š ā¤šā¤Žā¤žā¤°āĨ ā¤āĨā¤Ą ā¤ŽāĨ⤠ā¤Ŧā¤ ā¤¯ā¤ž ā¤ŦāĨā¤°ā¤žā¤ā¤ā¤ŧ⤰ ⤏ā¤ā¤ā¤¤ā¤¤ā¤ž ā¤¸ā¤Žā¤¸āĨā¤¯ā¤ž ā¤āĨ ā¤ā¤žā¤°ā¤Ŗ ā¤šāĨ ⤏ā¤ā¤¤ā¤ž ā¤šāĨāĨ¤",
@@ -138,22 +137,12 @@
"compose_form.lock_disclaimer": "ā¤ā¤Ēā¤ā¤ž ā¤ā¤žā¤¤ā¤ž {locked} ā¤¨ā¤šāĨā¤ ā¤šāĨāĨ¤ ā¤ā¤Ēā¤āĨ ā¤āĨā¤ĩ⤞ ā¤ĢāĨ⤞āĨā¤ĩ⤰āĨ⤏ ā¤āĨ ā¤Ļā¤ŋā¤ā¤žā¤ ā¤Ļā¤ŋ⤠ā¤ā¤žā¤¨āĨ ā¤ĩā¤žā¤˛āĨ ā¤ĒāĨ⤏āĨ⤠ā¤ĻāĨā¤ā¤¨āĨ ā¤āĨ ⤞ā¤ŋ⤠ā¤āĨ⤠ā¤āĨ ā¤ĢāĨ⤞āĨ ā¤ā¤° ⤏ā¤ā¤¤ā¤ž ā¤šāĨāĨ¤",
"compose_form.lock_disclaimer.lock": "⤞āĨā¤āĨā¤Ą",
"compose_form.placeholder": "What is on your mind?",
- "compose_form.poll.add_option": "ā¤ĩā¤ŋā¤ā¤˛āĨā¤Ē ā¤āĨā¤Ąā¤ŧāĨ",
"compose_form.poll.duration": "ā¤āĨā¤¨ā¤žā¤ĩ ā¤āĨ ā¤
ā¤ĩ⤧ā¤ŋ",
- "compose_form.poll.option_placeholder": "ā¤āĨ⤞ ā¤ĩā¤ŋā¤ā¤˛āĨā¤Ē {number}",
- "compose_form.poll.remove_option": "ā¤ā¤¸ ā¤ĩā¤ŋā¤ā¤˛āĨā¤Ē ā¤āĨ ā¤šā¤ā¤žā¤ā¤",
"compose_form.poll.switch_to_multiple": "ā¤ā¤ ā¤ĩā¤ŋā¤ā¤˛āĨā¤ĒāĨ⤠ā¤āĨ ā¤
⤍āĨā¤Žā¤¤ā¤ŋ ā¤ĻāĨ⤍āĨ ā¤āĨ ⤞ā¤ŋ⤠ā¤ĒāĨ⤞ ā¤Ŧā¤Ļ⤞āĨā¤",
"compose_form.poll.switch_to_single": "ā¤ā¤ ā¤šāĨ ā¤ĩā¤ŋā¤ā¤˛āĨā¤Ē ā¤āĨ ⤞ā¤ŋ⤠ā¤
⤍āĨā¤Žā¤¤ā¤ŋ ā¤ĻāĨ⤍āĨ ā¤āĨ ⤞ā¤ŋ⤠ā¤ĒāĨ⤞ ā¤Ŧā¤Ļ⤞āĨā¤",
- "compose_form.publish": "ā¤Ēā¤ŦāĨ⤞ā¤ŋā¤ļ",
"compose_form.publish_form": "ā¤Ēā¤ŦāĨ⤞ā¤ŋā¤ļ",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "ā¤Ē⤰ā¤ŋā¤ĩ⤰āĨ⤤⤍āĨ⤠ā¤āĨ ā¤¸ā¤šāĨā¤āĨā¤",
- "compose_form.sensitive.hide": "ā¤ŽāĨā¤Ąā¤ŋā¤¯ā¤ž ā¤āĨ ⤏ā¤ā¤ĩāĨā¤Ļ⤍ā¤ļāĨ⤞ ā¤āĨ ⤰āĨā¤Ē ā¤ŽāĨ⤠ā¤ā¤ŋā¤šāĨ⤍ā¤ŋ⤤ ā¤ā¤°āĨā¤",
- "compose_form.sensitive.marked": "ā¤ŽāĨā¤Ąā¤ŋā¤¯ā¤ž ⤏ā¤ā¤ĩāĨā¤Ļ⤍ā¤ļāĨ⤞ ā¤āĨ ⤰āĨā¤Ē ā¤ŽāĨ⤠ā¤ā¤ŋā¤šāĨ⤍ā¤ŋ⤤ ā¤šāĨ",
- "compose_form.sensitive.unmarked": "ā¤ŽāĨā¤Ąā¤ŋā¤¯ā¤ž ⤏ā¤ā¤ĩāĨā¤Ļ⤍ā¤ļāĨ⤞ ā¤āĨ ⤰āĨā¤Ē ā¤ŽāĨ⤠ā¤ā¤ŋā¤šāĨ⤍ā¤ŋ⤤ ā¤¨ā¤šāĨā¤ ā¤šāĨ",
"compose_form.spoiler.marked": "ā¤āĨā¤¤ā¤žā¤ĩ⤍āĨ ā¤āĨ ā¤ĒāĨā¤āĨ ā¤āĨā¤āĨ⤏āĨ⤠ā¤ā¤ŋā¤Ēā¤ž ā¤šāĨ",
"compose_form.spoiler.unmarked": "ā¤āĨā¤āĨ⤏āĨ⤠ā¤ā¤ŋā¤Ēā¤ž ā¤¨ā¤šāĨā¤ ā¤šāĨ",
- "compose_form.spoiler_placeholder": "ā¤
ā¤Ē⤍āĨ ā¤āĨā¤¤ā¤žā¤ĩ⤍āĨ ā¤¯ā¤šā¤žā¤ ā¤˛ā¤ŋā¤āĨā¤",
"confirmation_modal.cancel": "⤰ā¤ĻāĨā¤Ļ ā¤ā¤°āĨā¤",
"confirmations.block.block_and_report": "ā¤ŦāĨ⤞āĨ⤠ā¤ā¤ĩ⤠⤰ā¤ŋā¤ĒāĨ⤰āĨā¤",
"confirmations.block.confirm": "ā¤ŦāĨ⤞āĨā¤",
@@ -370,7 +359,6 @@
"navigation_bar.direct": "⤍ā¤ŋā¤āĨ ⤏ā¤ā¤ĻāĨā¤ļ",
"navigation_bar.discover": "ā¤āĨā¤āĨā¤",
"navigation_bar.domain_blocks": "Hidden domains",
- "navigation_bar.edit_profile": "ā¤ĒāĨ⤰āĨā¤Ģā¤ŧā¤žā¤ā¤˛ ⤏ā¤ā¤Ēā¤žā¤Ļā¤ŋ⤤ ā¤ā¤°āĨā¤",
"navigation_bar.explore": "ā¤
⤍āĨā¤ĩāĨ⤎⤪ ā¤ā¤°āĨā¤",
"navigation_bar.favourites": "ā¤Ē⤏ā¤ā¤ĻāĨā¤Ļā¤ž",
"navigation_bar.filters": "ā¤ĩā¤žā¤°ā¤ŋ⤤ ā¤ļā¤ŦāĨā¤Ļ",
@@ -386,6 +374,7 @@
"navigation_bar.security": "⤏āĨ⤰ā¤āĨā¤ˇā¤ž",
"not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.",
"notification.reblog": "{name} boosted your status",
+ "notification.status": "{name} ⤍āĨ ā¤
ā¤āĨ ā¤ĒāĨ⤏āĨ⤠ā¤ā¤ŋā¤¯ā¤ž",
"notifications.clear": "⤏āĨā¤ā¤¨ā¤žā¤ā¤ ā¤šā¤ā¤žā¤",
"notifications.column_settings.admin.report": "⤍⤠⤰ā¤ŋā¤ĒāĨ⤰āĨā¤:",
"notifications.column_settings.favourite": "ā¤Ē⤏ā¤ā¤ĻāĨā¤Ļā¤ž:",
@@ -399,9 +388,12 @@
"notifications.column_settings.show": "ā¤āĨā¤˛ā¤Ž ā¤ŽāĨ⤠ā¤Ļā¤ŋā¤ā¤žā¤ā¤",
"notifications.column_settings.sound": "⤧āĨā¤ĩ⤍ā¤ŋ ā¤ā¤˛ā¤žā¤ā¤",
"notifications.column_settings.status": "New toots:",
+ "notifications.column_settings.unread_notifications.category": "ā¤
ā¤Ē⤠ā¤ŋ⤤ ⤏āĨā¤ā¤¨ā¤žā¤ā¤",
+ "notifications.column_settings.unread_notifications.highlight": "ā¤
ā¤Ē⤠ā¤ŋ⤤ ⤏āĨā¤ā¤¨ā¤žā¤ā¤ ā¤āĨ ā¤šā¤žā¤ā¤˛ā¤žā¤ā¤ ā¤ā¤°āĨā¤",
"notifications.column_settings.update": "⤏ā¤ā¤Ēā¤žā¤Ļ⤍:",
"notifications.filter.all": "⤏ā¤āĨ",
"notifications.filter.boosts": "ā¤ŦāĨ⤏āĨā¤",
+ "notifications.filter.favourites": "ā¤Ē⤏ā¤ā¤ĻāĨā¤Ļā¤ž",
"notifications.filter.follows": "ā¤ĢāĨ⤞āĨ",
"notifications.filter.mentions": "ā¤ā¤˛āĨ⤞āĨā¤",
"notifications.filter.polls": "ā¤āĨā¤¨ā¤žā¤ĩ ā¤Ē⤰ā¤ŋā¤Ŗā¤žā¤Ž",
@@ -416,6 +408,7 @@
"onboarding.follows.title": "Popular on Mastodon",
"onboarding.profile.discoverable": "ā¤
ā¤Ēā¤¨ā¤ž ā¤ĒāĨ⤰āĨā¤Ģā¤žā¤ā¤˛ ā¤āĨā¤ā¤¨āĨ ⤝āĨā¤āĨ⤝ ā¤Ŧā¤¨ā¤žā¤ā¤",
"onboarding.profile.discoverable_hint": "ā¤ā¤Ŧ ā¤ā¤Ē ā¤ŽāĨ
⤏āĨā¤āĨā¤ĄāĨ⤍ ā¤Ē⤰ ā¤Ąā¤ŋ⤏āĨā¤ā¤ĩ⤰āĨā¤Ŧā¤ŋ⤞ā¤ŋā¤āĨ ā¤āĨ⤍⤤āĨ ā¤šāĨ⤠⤤āĨ ā¤ā¤Ēā¤āĨ ā¤ĒāĨ⤏āĨ⤠ā¤āĨ⤰āĨā¤ā¤Ąā¤ŋā¤ā¤ ā¤ā¤° ⤏⤰āĨā¤ ā¤ŽāĨ⤠ā¤Ļā¤ŋ⤠⤏ā¤ā¤¤āĨ ā¤šāĨ⤠ā¤ā¤° ā¤ā¤Ēā¤ā¤ž ā¤ĒāĨ⤰āĨā¤Ģā¤žā¤ā¤˛ ā¤ā¤Ēā¤āĨ ā¤šāĨ ā¤āĨ⤏āĨ ā¤
ā¤ā¤žā¤ā¤ā¤āĨ⤏ ā¤āĨ ⤏āĨā¤ā¤žā¤¯ā¤ž ā¤ā¤ž ⤏ā¤ā¤¤ā¤ž ā¤šāĨāĨ¤",
+ "onboarding.profile.display_name": "ā¤ĒāĨ⤰ā¤Ļ⤰āĨā¤ļā¤ŋ⤤ ā¤¨ā¤žā¤Ž",
"onboarding.share.message": "ā¤ŽāĨ⤠{username} ā¤ŽāĨ
⤏āĨā¤āĨā¤ĄāĨ⤍ ā¤Ē⤰ ā¤šāĨā¤! ā¤ŽāĨā¤āĨ ā¤¯ā¤šā¤žā¤ {url} ā¤ĢāĨ⤞āĨ ā¤ā¤°āĨā¤",
"onboarding.share.next_steps": "ā¤ā¤āĨ ā¤ā¤ŋ ⤏ā¤ā¤ā¤ĩā¤ŋ⤤ ā¤ĩā¤ŋ⤧ā¤ŋ",
"onboarding.start.lead": "Your new Mastodon account is ready to go. Here's how you can make the most of it:",
@@ -435,16 +428,13 @@
"poll.vote": "ā¤ĩāĨā¤",
"poll.voted": "ā¤ā¤Ē⤍āĨ ā¤ā¤¸āĨ ā¤ā¤¤āĨ⤤⤰ ā¤ā¤ž ā¤āĨā¤¨ā¤žā¤ĩ ā¤ā¤ŋā¤¯ā¤ž ā¤šāĨāĨ¤",
"privacy.change": "Adjust status privacy",
- "privacy.direct.long": "Post to mentioned users only",
- "privacy.direct.short": "Direct",
- "privacy.private.long": "Post to followers only",
- "privacy.private.short": "Followers-only",
- "privacy.public.long": "⤏ā¤Ŧ ā¤āĨ ā¤Ļā¤ŋā¤ā¤žā¤ ā¤ĻāĨā¤ā¤ž",
"privacy.public.short": "ā¤¸ā¤žā¤°āĨā¤ĩā¤ā¤¨ā¤ŋā¤",
- "privacy.unlisted.short": "ā¤
⤍⤞ā¤ŋ⤏āĨā¤āĨā¤Ą",
"recommended": "ā¤
⤍āĨā¤ļā¤ā¤¸ā¤ŋ⤤",
"refresh": "⤰āĨā¤ĢāĨ⤰āĨā¤ļ ā¤ā¤°āĨā¤",
"regeneration_indicator.label": "⤞āĨā¤Ą ā¤šāĨ ā¤°ā¤šā¤ž ā¤šāĨ...",
+ "relative_time.days": "{number}ā¤Ļā¤ŋ⤍",
+ "relative_time.full.days": "{number, plural, one {# ā¤Ļā¤ŋ⤍} other {# ā¤Ļā¤ŋ⤍}} ā¤Ēā¤šā¤˛āĨ",
+ "relative_time.full.hours": "{number, plural,one {# ā¤ā¤ā¤ā¤ž} other {# ā¤ā¤ā¤āĨ}} ā¤Ēā¤šā¤˛āĨ",
"relative_time.full.just_now": "ā¤
ā¤āĨ-ā¤
ā¤āĨ",
"relative_time.full.minutes": "{number, plural, one {# ā¤Žā¤ŋ⤍ā¤} other {# ā¤Žā¤ŋ⤍ā¤}} ā¤Ēā¤šā¤˛āĨ",
"relative_time.full.seconds": "{number, plural, one {# ⤏āĨā¤ā¤ā¤Ą} other {# ⤏āĨā¤ā¤ā¤Ą}} ā¤Ēā¤šā¤˛āĨ",
@@ -454,15 +444,23 @@
"relative_time.seconds": "{number} ⤏āĨā¤ā¤ā¤Ą",
"relative_time.today": "ā¤ā¤",
"reply_indicator.cancel": "⤰ā¤ĻāĨā¤Ļ ā¤ā¤°āĨā¤",
+ "report.block": "ā¤ŦāĨ⤞āĨā¤",
"report.block_explanation": "ā¤ā¤Ēā¤āĨ ā¤ā¤¨ā¤āĨ ā¤ĒāĨ⤏āĨā¤āĨā¤ ā¤¨ā¤šāĨ⤠ā¤Ļā¤ŋā¤āĨā¤ā¤āĨāĨ¤ ā¤ĩāĨ ā¤ā¤Ēā¤āĨ ā¤ĒāĨ⤏āĨā¤āĨ⤠ā¤āĨ ā¤ĻāĨā¤ ā¤¨ā¤šāĨ⤠ā¤Ēā¤žā¤ā¤ā¤āĨ ā¤ā¤° ā¤ā¤Ēā¤āĨ ā¤Ģā¤ŧāĨ⤞āĨ ā¤¨ā¤šāĨ⤠ā¤ā¤° ā¤Ēā¤žā¤ā¤ā¤āĨāĨ¤ ā¤ā¤¨āĨā¤šāĨ ā¤Ēā¤¤ā¤ž ⤞ā¤āĨā¤ā¤ž ā¤ā¤ŋ ā¤ĩāĨ blocked ā¤šāĨā¤āĨ¤",
"report.categories.other": "ā¤
⤍āĨ⤝",
"report.categories.spam": "ā¤
ā¤ĩā¤žā¤ā¤ā¤ŋ⤤",
"report.category.title_account": "⤰āĨā¤Ē⤰āĨā¤ā¤ž",
"report.close": "⤏āĨā¤ĩāĨā¤ā¤žā¤° ā¤ā¤°āĨā¤",
"report.comment.title": "ā¤āĨā¤¯ā¤ž ā¤ā¤° ā¤āĨā¤ ā¤šāĨ ā¤ā¤ŋ⤏ā¤āĨ ā¤Ŧā¤žā¤°āĨ ā¤ŽāĨ⤠ā¤ā¤Ēā¤āĨ ⤞ā¤ā¤¤ā¤ž ā¤šāĨ ā¤ā¤ŋ ā¤šā¤ŽāĨ⤠⤏āĨā¤ā¤ŋ⤤ ā¤šāĨā¤¨ā¤ž ā¤ā¤žā¤šā¤ŋā¤?",
+ "report.next": "ā¤ā¤āĨ",
"report.placeholder": "Type or paste additional comments",
"report.reasons.dislike": "ā¤ŽāĨā¤āĨ ā¤¯ā¤š ā¤Ē⤏ā¤ā¤Ļ ā¤¨ā¤šāĨā¤ ā¤šāĨ",
+ "report.reasons.legal": "ā¤¯ā¤š ā¤
ā¤ĩāĨ⤧ ā¤šāĨ",
+ "report.reasons.legal_description": "ā¤ā¤Ē ā¤Žā¤žā¤¨ā¤¤āĨ ā¤šāĨ⤠ā¤ā¤ŋ ā¤¯ā¤š ā¤ā¤Ēā¤āĨ ā¤¯ā¤ž ⤏⤰āĨā¤ĩ⤰ ā¤āĨ ā¤ĻāĨā¤ļ ā¤āĨ ā¤ā¤žā¤¨āĨ⤍ ā¤ā¤ž ā¤ā¤˛āĨ⤞ā¤ā¤ā¤¨ ā¤ā¤°ā¤¤ā¤ž ā¤šāĨ",
"report.reasons.other": "ā¤āĨ⤠ā¤ā¤° ā¤šāĨāĨ¤",
+ "report.reasons.violation": "ā¤¯ā¤š ⤏⤰āĨā¤ĩ⤰ ⤍ā¤ŋā¤¯ā¤ŽāĨ⤠ā¤ā¤ž ā¤ā¤˛āĨ⤞ā¤ā¤ā¤¨ ā¤ā¤°ā¤¤ā¤ž ā¤šāĨ",
+ "report.rules.title": "ā¤ā¤ŋ⤍ ⤍ā¤ŋā¤¯ā¤ŽāĨ⤠ā¤ā¤ž ā¤ā¤˛āĨ⤞ā¤ā¤ā¤¨ ā¤šāĨ ā¤°ā¤šā¤ž ā¤šāĨ?",
+ "report.statuses.subtitle": "ā¤˛ā¤žā¤āĨ ā¤šāĨ⤍āĨ ā¤ĩā¤žā¤˛āĨ ⤏ā¤āĨ ā¤ā¤ž ā¤ā¤¯ā¤¨ ā¤ā¤°āĨā¤",
+ "report.statuses.title": "ā¤āĨā¤¯ā¤ž ā¤ā¤¸āĨ ā¤āĨ⤠ā¤ĒāĨ⤏āĨā¤ ā¤šāĨ⤠ā¤āĨ ā¤ā¤¸ ⤰ā¤ŋā¤ĒāĨ⤰āĨ⤠ā¤ā¤ž ā¤¸ā¤Žā¤°āĨā¤Ĩ⤍ ā¤ā¤°ā¤¤āĨ ā¤šāĨā¤?",
"report.submit": "⤏ā¤Ŧā¤Žā¤ŋ⤠ā¤ā¤°āĨā¤",
"report.target": "Report {target}",
"report_notification.attached_statuses": "{count, plural, one {# post} other {# posts}} attached",
@@ -480,11 +478,24 @@
"search_results.statuses": "Toots",
"sign_in_banner.sign_in": "Sign in",
"status.admin_status": "Open this status in the moderation interface",
+ "status.block": "@{name} ā¤āĨ ā¤ŦāĨ⤞āĨ⤠ā¤ā¤°āĨā¤",
+ "status.bookmark": "ā¤ŦāĨā¤ā¤Žā¤žā¤°āĨā¤",
+ "status.cannot_reblog": "⤰ā¤ŋā¤ĒāĨ⤏āĨ⤠ā¤āĨ ā¤ŦāĨ⤏āĨā¤ ā¤¨ā¤šāĨ⤠ā¤ā¤ŋā¤¯ā¤ž ā¤ā¤ž ⤏ā¤ā¤¤ā¤ž",
"status.copy": "Copy link to status",
+ "status.delete": "ā¤šā¤ā¤žā¤ā¤",
+ "status.detailed_status": "ā¤ĩā¤ŋ⤏āĨ⤤āĨ⤤ ā¤ĩā¤žā¤°āĨā¤¤ā¤ž ā¤ĻāĨā¤ļāĨ⤝",
"status.direct": "⤍ā¤ŋā¤āĨ ⤏ā¤ā¤ĻāĨā¤ļ @{name} ⤏āĨ",
"status.edited_x_times": "Edited {count, plural, one {# time} other {# times}}",
+ "status.media.open": "ā¤āĨ⤞⤍āĨ ā¤āĨ ⤞ā¤ŋ⤠ā¤āĨ⤞ā¤ŋ⤠ā¤ā¤°āĨā¤",
+ "status.media.show": "ā¤Ļā¤ŋā¤ā¤žā¤¨āĨ ā¤āĨ ⤞ā¤ŋ⤠ā¤āĨ⤞ā¤ŋ⤠ā¤ā¤°āĨā¤",
+ "status.mention": "@{name} ā¤ā¤ž ā¤ā¤˛āĨ⤞āĨ⤠ā¤ā¤°āĨā¤",
+ "status.more": "ā¤
⤤ā¤ŋ⤰ā¤ŋā¤āĨ⤤",
+ "status.mute": "@{name} ā¤ŽāĨ⤝āĨ⤠ā¤ā¤°āĨā¤",
+ "status.mute_conversation": "ā¤ā¤¸ ā¤ĩā¤žā¤°āĨā¤¤ā¤žā¤˛ā¤žā¤Ē ā¤āĨ ā¤ŽāĨ⤝āĨ⤠ā¤ā¤°āĨā¤",
"status.open": "Expand this status",
+ "status.pin": "ā¤ĒāĨ⤰āĨā¤Ģā¤ŧā¤žā¤ā¤˛ ā¤Ē⤰ ā¤Ēā¤ŋ⤍ ā¤ā¤°āĨā¤",
"status.pinned": "Pinned toot",
+ "status.read_more": "ā¤ā¤° ā¤Ēā¤ĸā¤ŧāĨā¤",
"status.reblog": "ā¤ŦāĨ⤏āĨā¤",
"status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.replied_to": "{name} ā¤ā¤ž ā¤ā¤¤āĨ⤤⤰ ā¤ĻāĨā¤",
@@ -502,7 +513,6 @@
"upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Describe for the visually impaired",
"upload_form.edit": "⤏ā¤ā¤ļāĨ⤧⤍ ā¤ā¤°āĨā¤",
- "upload_form.undo": "ā¤Žā¤ŋā¤ā¤žā¤",
"upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.apply": "ā¤˛ā¤žā¤āĨ ā¤ā¤°āĨā¤",
"upload_modal.edit_media": "ā¤ŽāĨā¤Ąā¤ŋā¤¯ā¤ž ā¤ŽāĨ⤠⤏ā¤ā¤ļāĨ⤧⤍ ā¤ā¤°āĨā¤",
diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json
index 654991a0f..cada365fc 100644
--- a/app/javascript/mastodon/locales/hr.json
+++ b/app/javascript/mastodon/locales/hr.json
@@ -1,8 +1,15 @@
{
"about.blocks": "Moderirani posluÅžitelji",
"about.contact": "Kontakt:",
+ "about.disclaimer": "Mastodon je besplatan softver otvorenog koda i zaÅĄtitni znak tvrtke Mastodon gGmbH.",
"about.domain_blocks.no_reason_available": "Razlog nije dostupan",
+ "about.domain_blocks.preamble": "Mastodon vam opÄenito omoguÄuje pregled sadrÅžaja i interakciju s korisnicima s bilo kojeg drugog posluÅžitelja u fediverse. Ovo su iznimke napravljene na ovom posluÅžitelju.",
+ "about.domain_blocks.silenced.explanation": "ObiÄno neÄete vidjeti profile i sadrÅžaj s ovog posluÅžitelja, osim ako ga izriÄito ne potraÅžite ili ukljuÄite u njega slijedeÄi ga.",
+ "about.domain_blocks.silenced.title": "OgraniÄen",
+ "about.domain_blocks.suspended.explanation": "Podatci s ovog posluÅžitelja neÄe se obraÄivati, pohranjivati ili razmjenjivati, ÅĄto onemoguÄuje bilo kakvu interakciju ili komunikaciju s korisnicima s ovog posluÅžitelja.",
"about.domain_blocks.suspended.title": "Suspendiran",
+ "about.not_available": "Te informacije nisu dostupne na ovom posluÅžitelju.",
+ "about.powered_by": "Decentralizirani druÅĄtveni mediji koje pokreÄe {mastodon}",
"about.rules": "Pravila servera",
"account.account_note_header": "BiljeÅĄka",
"account.add_or_remove_from_list": "Dodaj ili ukloni s liste",
@@ -14,6 +21,8 @@
"account.blocked": "Blokirano",
"account.browse_more_on_origin_server": "Pogledajte viÅĄe na izvornom profilu",
"account.cancel_follow_request": "Withdraw follow request",
+ "account.copy": "Kopiraj vezu u profil",
+ "account.direct": "Privatno spomeni @{name}",
"account.disable_notifications": "Nemoj me obavjestiti kada @{name} napravi objavu",
"account.domain_blocked": "Domena je blokirana",
"account.edit_profile": "Uredi profil",
@@ -21,7 +30,9 @@
"account.endorse": "Istakni na profilu",
"account.featured_tags.last_status_at": "Zadnji post {date}",
"account.featured_tags.last_status_never": "Nema postova",
+ "account.featured_tags.title": "Istaknuti hashtagovi {name}",
"account.follow": "Prati",
+ "account.follow_back": "Slijedi natrag",
"account.followers": "Pratitelji",
"account.followers.empty": "Nitko joÅĄ ne prati korisnika/cu.",
"account.followers_counter": "{count, plural, one {{counter} pratitelj} other {{counter} pratitelja}}",
@@ -32,6 +43,7 @@
"account.hide_reblogs": "Sakrij boostove od @{name}",
"account.in_memoriam": "U sjeÄanje.",
"account.joined_short": "PridruÅžen",
+ "account.languages": "Promjeni pretplaÄene jezike",
"account.link_verified_on": "VlasniÅĄtvo ove poveznice provjereno je {date}",
"account.locked_info": "Status privatnosti ovog raÄuna postavljen je na zakljuÄano. Vlasnik ruÄno pregledava tko ih moÅže pratiti.",
"account.media": "Medijski sadrÅžaj",
@@ -40,11 +52,14 @@
"account.mute_notifications_short": "UtiÅĄaj obavijesti",
"account.mute_short": "UtiÅĄaj",
"account.muted": "UtiÅĄano",
+ "account.mutual": "Uzajamno",
+ "account.no_bio": "Nije dan opis.",
"account.open_original_page": "Otvori originalnu stranicu",
"account.posts": "Objave",
"account.posts_with_replies": "Objave i odgovori",
"account.report": "Prijavi @{name}",
"account.requested": "Äekanje na potvrdu. Kliknite za poniÅĄtavanje zahtjeva za praÄenje",
+ "account.requested_follow": "{name} zatraÅžio/la je praÄenje",
"account.share": "Podijeli profil @{name}",
"account.show_reblogs": "PrikaÅži boostove od @{name}",
"account.statuses_counter": "{count, plural, one {{counter} toot} other {{counter} toota}}",
@@ -54,11 +69,18 @@
"account.unendorse": "Ne istiÄi na profilu",
"account.unfollow": "Prestani pratiti",
"account.unmute": "PoniÅĄti utiÅĄavanje @{name}",
+ "account.unmute_notifications_short": "UkljuÄi utiÅĄane obavijesti",
"account.unmute_short": "PoniÅĄti utiÅĄavanje",
"account_note.placeholder": "Kliknite za dodavanje biljeÅĄke",
+ "admin.dashboard.daily_retention": "Stopa zadrÅžavanja korisnika po danu nakon prijave",
+ "admin.dashboard.monthly_retention": "Stopa zadrÅžavanja korisnika po mjesecu nakon prijave",
"admin.dashboard.retention.average": "ProsjeÄno",
"admin.dashboard.retention.cohort": "Mjesec prijave",
"admin.dashboard.retention.cohort_size": "Novi korisnici",
+ "admin.impact_report.instance_accounts": "Profili raÄuna koji bi ovo izbrisali",
+ "admin.impact_report.instance_followers": "Sljedbenici koje bi izgubili naÅĄi korisnici",
+ "admin.impact_report.instance_follows": "Sljedbenici koje bi izgubili njihovi korisnici",
+ "admin.impact_report.title": "SaÅžetak uÄinka",
"alert.rate_limited.message": "Molimo pokuÅĄajte nakon {retry_time, time, medium}.",
"alert.rate_limited.title": "OgraniÄenje uÄestalosti",
"alert.unexpected.message": "Dogodila se neoÄekivana greÅĄka.",
@@ -66,12 +88,15 @@
"announcement.announcement": "Najava",
"attachments_list.unprocessed": "(neobraÄeno)",
"audio.hide": "Sakrij audio",
- "autosuggest_hashtag.per_week": "{count} tjedno",
"boost_modal.combo": "MoÅžete pritisnuti {combo} kako biste preskoÄili ovo sljedeÄi put",
+ "bundle_column_error.copy_stacktrace": "Kopiraj izvjeÅĄÄe o pogreÅĄci",
+ "bundle_column_error.error.body": "ZaraÅženu stranicu nije moguÄe prikazati. To bi moglo biti zbog pogreÅĄke u naÅĄem kodu ili problema s kompatibilnoÅĄÄu preglednika.",
"bundle_column_error.error.title": "Oh, ne!",
+ "bundle_column_error.network.body": "DoÅĄlo je do pogreÅĄke prilikom pokuÅĄaja uÄitavanja ove stranice. Razlog moÅže biti privremeni problem s internetskom vezom ili ovim posluÅžiteljem.",
"bundle_column_error.network.title": "GreÅĄka mreÅže",
"bundle_column_error.retry": "PokuÅĄajte ponovno",
"bundle_column_error.return": "Na glavnu",
+ "bundle_column_error.routing.body": "TraÅženu stranicu nije moguÄe pronaÄi. Jeste li sigurni da je URL u adresnoj traci toÄan?",
"bundle_column_error.routing.title": "404",
"bundle_modal_error.close": "Zatvori",
"bundle_modal_error.message": "NeÅĄto je poÅĄlo po zlu tijekom uÄitavanja ove komponente.",
@@ -114,22 +139,12 @@
"compose_form.lock_disclaimer": "VaÅĄ raÄun nije {locked}. Svatko Vas moÅže pratiti kako bi vidjeli objave namijenjene VaÅĄim pratiteljima.",
"compose_form.lock_disclaimer.lock": "zakljuÄan",
"compose_form.placeholder": "Å to ti je na umu?",
- "compose_form.poll.add_option": "Dodaj opciju",
"compose_form.poll.duration": "Trajanje ankete",
- "compose_form.poll.option_placeholder": "Opcija {number}",
- "compose_form.poll.remove_option": "Ukloni ovu opciju",
"compose_form.poll.switch_to_multiple": "OmoguÄi viÅĄestruki odabir opcija ankete",
"compose_form.poll.switch_to_single": "OmoguÄi odabir samo jedne opcije ankete",
- "compose_form.publish": "Objavi",
"compose_form.publish_form": "Objavi",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Spremi promjene",
- "compose_form.sensitive.hide": "OznaÄi medijski sadrÅžaj kao osjetljiv",
- "compose_form.sensitive.marked": "Medijski sadrÅžaj oznaÄen je kao osjetljiv",
- "compose_form.sensitive.unmarked": "Medijski sadrÅžaj nije oznaÄen kao osjetljiv",
"compose_form.spoiler.marked": "Tekst je skriven iza upozorenja",
"compose_form.spoiler.unmarked": "Tekst nije skriven",
- "compose_form.spoiler_placeholder": "Ovdje upiÅĄite upozorenje",
"confirmation_modal.cancel": "OtkaÅži",
"confirmations.block.block_and_report": "Blokiraj i prijavi",
"confirmations.block.confirm": "Blokiraj",
@@ -171,6 +186,7 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Evo kako Äe izgledati:",
"emoji_button.activity": "Aktivnost",
+ "emoji_button.clear": "ObriÅĄi",
"emoji_button.custom": "PrilagoÄeno",
"emoji_button.flags": "Zastave",
"emoji_button.food": "Hrana i piÄe",
@@ -211,6 +227,7 @@
"explore.trending_links": "Novosti",
"explore.trending_statuses": "Objave",
"explore.trending_tags": "Hashtagovi",
+ "filter_modal.added.context_mismatch_title": "Nepodudaranje konteksta!",
"filter_modal.added.review_and_configure_title": "Postavke filtara",
"filter_modal.added.title": "Filtar dodan!",
"filter_modal.select_filter.prompt_new": "Nova kategorija: {name}",
@@ -318,7 +335,6 @@
"navigation_bar.direct": "Privatna spominjanja",
"navigation_bar.discover": "IstraÅživanje",
"navigation_bar.domain_blocks": "Blokirane domene",
- "navigation_bar.edit_profile": "Uredi profil",
"navigation_bar.explore": "IstraÅži",
"navigation_bar.favourites": "Favoriti",
"navigation_bar.filters": "UtiÅĄane rijeÄi",
@@ -387,13 +403,7 @@
"poll_button.add_poll": "Dodaj anketu",
"poll_button.remove_poll": "Ukloni anketu",
"privacy.change": "Podesi privatnost toota",
- "privacy.direct.long": "Vidljivo samo spomenutim korisnicima",
- "privacy.direct.short": "Direct",
- "privacy.private.long": "Vidljivo samo pratiteljima",
- "privacy.private.short": "Followers-only",
- "privacy.public.long": "Vidljivo svima",
"privacy.public.short": "Javno",
- "privacy.unlisted.short": "Neprikazano",
"privacy_policy.last_updated": "Zadnje aÅžurirannje {date}",
"privacy_policy.title": "Pravila o zaÅĄtiti privatnosti",
"recommended": "PreporuÄeno",
@@ -533,10 +543,8 @@
"upload_error.poll": "Prijenos datoteka nije dopuÅĄten kod anketa.",
"upload_form.audio_description": "OpiÅĄite za ljude sa slabim sluhom",
"upload_form.description": "OpiÅĄite za ljude sa slabim vidom",
- "upload_form.description_missing": "Bez opisa",
"upload_form.edit": "Uredi",
"upload_form.thumbnail": "Promijeni pretpregled",
- "upload_form.undo": "ObriÅĄi",
"upload_form.video_description": "OpiÅĄite za ljude sa slabim sluhom ili vidom",
"upload_modal.analyzing_picture": "Analiza slikeâĻ",
"upload_modal.apply": "Primijeni",
diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json
index 0d50e36fe..31bca5652 100644
--- a/app/javascript/mastodon/locales/hu.json
+++ b/app/javascript/mastodon/locales/hu.json
@@ -89,7 +89,6 @@
"announcement.announcement": "KÃļzlemÊny",
"attachments_list.unprocessed": "(feldolgozatlan)",
"audio.hide": "Hang elrejtÊse",
- "autosuggest_hashtag.per_week": "{count} hetente",
"boost_modal.combo": "Hogy ÃĄtugord ezt kÃļvetkezÅ alkalommal, hasznÃĄld {combo}",
"bundle_column_error.copy_stacktrace": "HibajelentÊs mÃĄsolÃĄsa",
"bundle_column_error.error.body": "A kÊrt lap nem jelenÃthetÅ meg. Ez lehet, hogy kÃŗdhiba, vagy bÃļngÊszÅkompatibitÃĄsi hiba.",
@@ -146,22 +145,22 @@
"compose_form.lock_disclaimer": "A fiÃŗkod nincs {locked}. BÃĄrki kÃļvetni tud, hogy megtekintse a kizÃĄrÃŗlag kÃļvetÅknek szÃĄnt bejegyzÊseket.",
"compose_form.lock_disclaimer.lock": "zÃĄrolva",
"compose_form.placeholder": "Mi jÃĄr a fejedben?",
- "compose_form.poll.add_option": "LehetÅsÊg hozzÃĄadÃĄsa",
+ "compose_form.poll.add_option": "OpciÃŗ hozzÃĄadÃĄsa",
"compose_form.poll.duration": "SzavazÃĄs idÅtartama",
- "compose_form.poll.option_placeholder": "{number}. lehetÅsÊg",
- "compose_form.poll.remove_option": "LehetÅsÊg eltÃĄvolÃtÃĄsa",
+ "compose_form.poll.multiple": "TÃļbb vÃĄlasztÃĄs",
+ "compose_form.poll.option_placeholder": "OpciÃŗ {number}",
+ "compose_form.poll.remove_option": "OpciÃŗ eltÃĄvolÃtÃĄsa",
+ "compose_form.poll.single": "Egy vÃĄlasztÃĄsa",
"compose_form.poll.switch_to_multiple": "SzavazÃĄs megvÃĄltoztatÃĄsa tÃļbb vÃĄlasztÃĄsosra",
"compose_form.poll.switch_to_single": "SzavazÃĄs megvÃĄltoztatÃĄsa egyetlen vÃĄlasztÃĄsosra",
- "compose_form.publish": "KÃļzzÊtÊtel",
+ "compose_form.poll.type": "StÃlus",
+ "compose_form.publish": "BejegyzÊs",
"compose_form.publish_form": "Ãj bejegyzÊs",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "MÃŗdosÃtÃĄsok mentÊse",
- "compose_form.sensitive.hide": "{count, plural, one {MÊdia kÊnyesnek jelÃļlÊse} other {MÊdia kÊnyesnek jelÃļlÊse}}",
- "compose_form.sensitive.marked": "{count, plural, one {A mÊdiÃĄt kÊnyesnek jelÃļltÊk} other {A mÊdiÃĄt kÊnyesnek jelÃļltÊk}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {A mÊdiÃĄt nem jelÃļltÊk kÊnyesnek} other {A mÊdiÃĄt nem jelÃļltÊk kÊnyesnek}}",
+ "compose_form.reply": "VÃĄlasz",
+ "compose_form.save_changes": "FrissÃtÊs",
"compose_form.spoiler.marked": "Tartalmi figyelmeztetÊs eltÃĄvolÃtÃĄsa",
"compose_form.spoiler.unmarked": "Tartalmi figyelmeztetÊs hozzÃĄadÃĄsa",
- "compose_form.spoiler_placeholder": "Ãrd ide a figyelmeztetÊst",
+ "compose_form.spoiler_placeholder": "Tartalom figyelmeztetÊs (opcionÃĄlis)",
"confirmation_modal.cancel": "MÊgsem",
"confirmations.block.block_and_report": "LetiltÃĄs Ês jelentÊs",
"confirmations.block.confirm": "LetiltÃĄs",
@@ -408,7 +407,6 @@
"navigation_bar.direct": "SzemÊlyes emlÃtÊsek",
"navigation_bar.discover": "FelfedezÊs",
"navigation_bar.domain_blocks": "Letiltott tartomÃĄnyok",
- "navigation_bar.edit_profile": "Profil szerkesztÊse",
"navigation_bar.explore": "FelfedezÊs",
"navigation_bar.favourites": "Kedvencek",
"navigation_bar.filters": "NÊmÃtott szavak",
@@ -526,14 +524,15 @@
"poll_button.add_poll": "Ãj szavazÃĄs",
"poll_button.remove_poll": "SzavazÃĄs eltÃĄvolÃtÃĄsa",
"privacy.change": "BejegyzÊs lÃĄthatÃŗsÃĄgÃĄnak mÃŗdosÃtÃĄsa",
- "privacy.direct.long": "Csak a megemlÃtett felhasznÃĄlÃŗknak lÃĄthatÃŗ",
- "privacy.direct.short": "Csak megemlÃtetteknek",
- "privacy.private.long": "Csak kÃļvetÅknek lÃĄthatÃŗ",
- "privacy.private.short": "Csak kÃļvetÅk",
- "privacy.public.long": "Mindenki szÃĄmÃĄra lÃĄthatÃŗ",
+ "privacy.direct.long": "Mindenki, akit a bejegyzÊsben emlÃtettek",
+ "privacy.direct.short": "Adott szemÊlyek",
+ "privacy.private.long": "Csak a kÃļvetÅk",
+ "privacy.private.short": "KÃļvetÅk",
+ "privacy.public.long": "BÃĄrki a Mastodonon Ês azon kÃvÃŧl",
"privacy.public.short": "NyilvÃĄnos",
- "privacy.unlisted.long": "Mindenki szÃĄmÃĄra lÃĄthatÃŗ, de kimarad a felfedezÅs funkciÃŗkbÃŗl",
- "privacy.unlisted.short": "ListÃĄzatlan",
+ "privacy.unlisted.additional": "Ez pontosan Ãēgy viselkedik, mint a nyilvÃĄnos, kivÊve, hogy a bejegyzÊs nem jelenik meg ÊlÅ hÃrcsatornÃĄkban vagy hashtagokban, felfedezÊsben vagy a Mastodon keresÊsben, mÊg akkor sem, ha az egÊsz fiÃŗkra bejelentkezetÃŧnk.",
+ "privacy.unlisted.long": "Kevesebb algoritmikus fanfÃĄr",
+ "privacy.unlisted.short": "Csendes nyilvÃĄnossÃĄg",
"privacy_policy.last_updated": "UtoljÃĄra frissÃtve: {date}",
"privacy_policy.title": "AdatvÊdelmi szabÃĄlyzat",
"recommended": "AjÃĄnlott",
@@ -551,7 +550,9 @@
"relative_time.minutes": "{number}p",
"relative_time.seconds": "{number}mp",
"relative_time.today": "ma",
+ "reply_indicator.attachments": "{count, plural, one {# mellÊklet} other {# mellÊklet}}",
"reply_indicator.cancel": "MÊgsem",
+ "reply_indicator.poll": "SzavazÃĄs",
"report.block": "LetiltÃĄs",
"report.block_explanation": "Nem fogod lÃĄtni a bejegyzÊseit. Nem fogja tudni megnÊzni a bejegyzÊseidet Ês nem fog tudni kÃļvetni sem. Azt is meg fogja tudni mondani, hogy letiltottad.",
"report.categories.legal": "Jogi informÃĄciÃŗk",
@@ -715,10 +716,8 @@
"upload_error.poll": "SzavazÃĄsnÃĄl nem lehet fÃĄjlt feltÃļlteni.",
"upload_form.audio_description": "LeÃrÃĄs siket vagy hallÃĄssÊrÃŧlt emberek szÃĄmÃĄra",
"upload_form.description": "LeÃrÃĄs vak vagy gyengÊnlÃĄtÃŗ emberek szÃĄmÃĄra",
- "upload_form.description_missing": "Nincs leÃrÃĄs megadva",
"upload_form.edit": "SzerkesztÊs",
"upload_form.thumbnail": "BÊlyegkÊp megvÃĄltoztatÃĄsa",
- "upload_form.undo": "TÃļrlÊs",
"upload_form.video_description": "LeÃrÃĄs siket, hallÃĄssÊrÃŧlt, vak vagy gyengÊnlÃĄtÃŗ emberek szÃĄmÃĄra",
"upload_modal.analyzing_picture": "KÊp elemzÊseâĻ",
"upload_modal.apply": "Alkalmaz",
diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json
index 835105218..6ddcfcdb2 100644
--- a/app/javascript/mastodon/locales/hy.json
+++ b/app/javascript/mastodon/locales/hy.json
@@ -70,7 +70,6 @@
"alert.unexpected.title": "ÕÕĄÕÕĩ",
"announcement.announcement": "Õ
ÕĄÕĩÕŋÕĄÖÕĄÖÕ¸ÖÕŠÕĢÖÕļÕļÕĨÖ",
"audio.hide": "ÔšÕĄÖÖÕļÕĨÕŦ ÕĄÕ¸ÖÕ¤ÕĢÕ¸Õļ",
- "autosuggest_hashtag.per_week": "ÕˇÕĄÕĸÕĄÕŠÕ¨Õ {count}",
"boost_modal.combo": "ÔŋÕĄÖÕ¸Õ˛ ÕĨÕŊ ÕŊÕĨÕ˛Õ´ÕĨÕŦ {combo}Õ ÕŊÕĄ ÕĩÕĄÕģÕ¸ÖÕ¤ ÕĄÕļÕŖÕĄÕ´ ÕĸÕĄÖ ÕŠÕ¸Õ˛ÕļÕĨÕŦÕ¸Ö Õ°ÕĄÕ´ÕĄÖ",
"bundle_column_error.error.title": "ÕÕ, Õ¸ÕšÖ",
"bundle_column_error.network.title": "ÕÕĄÕļÖÕĢ ÕŊÕÕĄÕŦ",
@@ -117,22 +116,12 @@
"compose_form.lock_disclaimer": "ÕÕ¸ Õ°ÕĄÕˇÕĢÖÕ¨ {locked} ÕšÕ§Ö ÔģÖÖÕĄÖÕĄÕļÕšÕĢÖÖÕ¸ÖÕŠÕĢÖÕļ Õ¸Ö Õ¯ÕĄÖÕ¸Õ˛ Õ§ Õ°ÕĨÕŋÕĨÖÕĨÕŦ ÖÕĨÕĻ ÕĨÖ ÕŋÕĨÕŊÕļÕĨÕŦ Õ´ÕĢÕĄÕĩÕļ Õ°ÕĨÕŋÕĨÖÕ¸Õ˛ÕļÕĨÖÕĢ Õ°ÕĄÕ´ÕĄÖ ÕļÕĄÕÕĄÕŋÕĨÕŊÕ¸ÖÕĄÕŽ ÕŖÖÕĄÕŧÕ¸ÖÕ´ÕļÕĨÖÕ¨Ö",
"compose_form.lock_disclaimer.lock": "ÖÕĄÕ¯",
"compose_form.placeholder": "ÔģÕÕļÕš Õ¯ÕĄÕĩ Õ´ÕŋÖÕĢÕ¤",
- "compose_form.poll.add_option": "ÔąÖÕĨÕŦÕĄÖÕļÕĨÕŦ ÕŋÕĄÖÕĸÕĨÖÕĄÕ¯",
"compose_form.poll.duration": "ÕÕĄÖÖÕ´ÕĄÕļ ÕŋÕĨÖÕ¸Õ˛Õ¸ÖÕŠÕĢÖÕļÕ¨",
- "compose_form.poll.option_placeholder": "ÕÕĄÖÕĸÕĨÖÕĄÕ¯ {number}",
- "compose_form.poll.remove_option": "ÕÕĨÕŧÕĄÖÕļÕĨÕŦ ÕĄÕĩÕŊ ÕŋÕĄÖÕĸÕĨÖÕĄÕ¯Õ¨",
"compose_form.poll.switch_to_multiple": "ÕÕĄÖÖÕ¸ÖÕ´Õ¨ Õ¤ÕĄÖÕąÕļÕĨÕŦ ÕĸÕĄÕĻÕ´ÕĄÕ¯ÕĢ Õ¨ÕļÕŋÖÕ¸ÖÕŠÕĨÕĄÕ´Õĸ",
"compose_form.poll.switch_to_single": "ÕÕĄÖÖÕ¸ÖÕ´Õ¨ Õ¤ÕĄÖÕąÕļÕĨÕŦ ÕĨÕĻÕĄÕ¯ÕĢ Õ¨ÕļÕŋÖÕ¸ÖÕŠÕĨÕĄÕ´Õĸ",
- "compose_form.publish": "ÕÖÕĄÕēÕĄÖÕĄÕ¯ÕĨÕŦ",
"compose_form.publish_form": "ÕÖÕĄÕēÕĄÖÕĄÕ¯ÕĨÕŦ",
- "compose_form.publish_loud": "ÕÖÕĄÕēÕĄÖÕĄÕ¯ÕĨÕÕŦ",
- "compose_form.save_changes": "ÕÕĄÕ°ÕēÕĄÕļÕĨÕŦ ÖÕ¸ÖÕ¸ÕÕ¸ÖÕŠÕĢÖÕļÕļÕĨÖÕ¨",
- "compose_form.sensitive.hide": "ÕÕˇÕĨÕŦ Õ´ÕĨÕ¤ÕĢÕĄÕļ Õ¸ÖÕēÕ§ÕŊ Õ¤ÕĢÖÖÕĄÕĻÕŖÕĄÖ",
- "compose_form.sensitive.marked": "ÕÕĨÕ¤ÕĢÕĄÕļ ÕļÕˇÕ¸ÖÕĄÕŽ Õ§ Õ¸ÖÕēÕ§ÕŊ Õ¤ÕĢÖÖÕĄÕĻÕŖÕĄÖ",
- "compose_form.sensitive.unmarked": "ÕÕĨÕ¤ÕĢÕĄÕļ ÕļÕˇÕ¸ÖÕĄÕŽ ÕšÕ§ Õ¸ÖÕēÕ§ÕŊ Õ¤ÕĢÖÖÕĄÕĻÕŖÕĄÖ",
"compose_form.spoiler.marked": "ÕÕĨÖÕŊÕŋÕ¨ ÕŠÕĄÖÖÕ¸ÖÕĄÕŽ Õ§ ÕĻÕŖÕ¸ÖÕˇÕĄÖÕ´ÕĄÕļ ÕĨÕŋÕĨÖÕ¸ÖÕ´",
"compose_form.spoiler.unmarked": "ÕÕĨÖÕŊÕŋÕ¨ ÕŠÕĄÖÖÕ¸ÖÕĄÕŽ ÕšÕ§",
- "compose_form.spoiler_placeholder": "ÔŗÖÕĢÖ ÕļÕĄÕÕĄÕĻÕŖÕ¸ÖÕˇÕĄÖÕ¸ÖÕ´Õ¤ ÕĄÕĩÕŊÕŋÕĨÕ˛",
"confirmation_modal.cancel": "ÕÕĨÕ˛ÕĄÖÕ¯ÕĨÕŦ",
"confirmations.block.block_and_report": "ÔąÖÕŖÕĨÕŦÕĄÖÕĄÕ¯ÕĨÕŦ ÕĨÖ ÕĸÕ¸Õ˛Õ¸ÖÕĨÕŦ",
"confirmations.block.confirm": "ÔąÖÕŖÕĨÕŦÕĄÖÕĄÕ¯ÕĨÕŦ",
@@ -325,7 +314,6 @@
"navigation_bar.direct": "ÕÕĄÕŊÕļÕĄÖÕ¸Ö ÕĩÕĢÕˇÕĄÕŋÕĄÕ¯Õ¸ÖÕ´ÕļÕĨÖ",
"navigation_bar.discover": "Ô˛ÕĄÖÕĄÕĩÕĄÕĩÕŋÕĨÕŦ",
"navigation_bar.domain_blocks": "ÔšÕĄÖÖÕ¸ÖÕĄÕŽ ÕŋÕĢÖÕ¸ÕĩÕŠÕļÕĨÖ",
- "navigation_bar.edit_profile": "ÔŊÕ´ÕĸÕĄÕŖÖÕĨÕŦ Õ°ÕĄÕˇÕĢÖÕ¨",
"navigation_bar.explore": "Ô˛ÕĄÖÕĄÕĩÕĄÕĩÕŋÕĨÕŦ",
"navigation_bar.favourites": "ÕÕĄÖÕĄÕļÕĄÕŽÕļÕĨÖ",
"navigation_bar.filters": "ÔŧÕŧÕĨÖÕ¸ÖÕĄÕŽ ÕĸÕĄÕŧÕĨÖ",
@@ -414,13 +402,7 @@
"poll_button.add_poll": "ÔąÖÕĨÕŦÕĄÖÕļÕĨÕŦ Õ°ÕĄÖÖÕ¸ÖÕ´",
"poll_button.remove_poll": "ÕÕĨÕŧÕĄÖÕļÕĨÕŦ Õ°ÕĄÖÖÕ¸ÖÕ´Õ¨",
"privacy.change": "ÔŋÕĄÖÕŖÕĄÖÕ¸ÖÕĨÕŦ ÕŖÖÕĄÕŧÕ´ÕĄÕļ ÕŖÕĄÕ˛ÕŋÕļÕĢÕ¸ÖÕŠÕĢÖÕļÕ¨",
- "privacy.direct.long": "ÔŋÕ¨ ÕŋÕĨÕŊÕļÕĨÕļ Õ´ÕĢÕĄÕĩÕļ ÕļÕˇÕ¸ÖÕĄÕŽ Ö
ÕŖÕŋÕĄÕŋÕ§ÖÕĨÖÕ¨",
- "privacy.direct.short": "Direct",
- "privacy.private.long": "ÔŋÕ¨ ÕŋÕĨÕŊÕļÕĨÕļ Õ´ÕĢÕĄÕĩÕļ Õ°ÕĨÕŋÕĨÖÕ¸ÖÕ¤ÕļÕĨÖÕ¨",
- "privacy.private.short": "ÕÕĢÕĄÕĩÕļ Õ°ÕĨÕŋÕĨÖÕ¸Õ˛ÕļÕĨÖÕ¨",
- "privacy.public.long": "ÕÕĨÕŊÕĄÕļÕĨÕŦÕĢ ÕĸÕ¸ÕŦÕ¸ÖÕĢÕļ",
"privacy.public.short": "ÕÖÕĄÕēÕĄÖÕĄÕ¯ÕĄÕĩÕĢÕļ",
- "privacy.unlisted.short": "ÔžÕĄÕŽÕ¸ÖÕ¯",
"privacy_policy.last_updated": "ÕÕĨÖÕģÕĢÕļ ÕĄÕļÕŖÕĄÕ´ ÕŠÕĄÖÕ´ÕĄÖÕ¸ÖÕĨÕŦ Õ§Õ {date}",
"privacy_policy.title": "ÔŗÕĄÕ˛ÕŋÕļÕĢÕ¸ÖÕŠÕĨÕĄÕļ ÖÕĄÕ˛ÕĄÖÕĄÕ¯ÕĄÕļÕ¸ÖÕŠÕĢÖÕļ",
"refresh": "ÔšÕĄÖÕ´ÕĄÖÕļÕĨÕŦ",
@@ -556,7 +538,6 @@
"upload_form.description": "ÕÕ¯ÕĄÖÕĄÕŖÕĢÖÕ ÕŋÕĨÕŊÕ¸Õ˛ÕĄÕ¯ÕĄÕļ ÕÕļÕ¤ÕĢÖÕļÕĨÖ Õ¸ÖÕļÕĨÖÕ¸Õ˛ÕļÕĨÖÕĢ Õ°ÕĄÕ´ÕĄÖ",
"upload_form.edit": "ÔŊÕ´ÕĸÕĄÕŖÖÕĨÕŦ",
"upload_form.thumbnail": "ÕÕ¸ÕÕĨÕŦ ÕēÕĄÕŋÕ¯ÕĨÖÕĄÕ¯Õ¨",
- "upload_form.undo": "Õ
ÕĨÕŋÕĄÖÕ¯ÕĨÕŦ",
"upload_form.video_description": "ÕÕ¯ÕĄÖÕĄÕŖÖÕĢÖ ÕŋÕĨÕŊÕĄÕļÕĢÖÕŠÕ¨ ÕŦÕŊÕ¸Õ˛ÕĄÕ¯ÕĄÕļ Õ¯ÕĄÕ´ ÕŋÕĨÕŊÕ¸Õ˛ÕĄÕ¯ÕĄÕļ ÕÕļÕ¤ÕĢÖÕļÕĨÖÕ¸Õž ÕĄÕļÕąÕĄÕļÖ Õ°ÕĄÕ´ÕĄÖ",
"upload_modal.analyzing_picture": "ÔŧÕ¸ÖÕŊÕĄÕļÕ¯ÕĄÖÕĢ ÕžÕĨÖÕŦÕ¸ÖÕŽÕ¸ÖÕ´âĻ",
"upload_modal.apply": "ÔŋÕĢÖÕĄÕŧÕĨÕŦ",
diff --git a/app/javascript/mastodon/locales/ia.json b/app/javascript/mastodon/locales/ia.json
index 917a03466..14b75a17f 100644
--- a/app/javascript/mastodon/locales/ia.json
+++ b/app/javascript/mastodon/locales/ia.json
@@ -1,23 +1,310 @@
{
+ "about.blocks": "Servitores moderate",
+ "about.contact": "Contacto:",
+ "about.disclaimer": "Mastodon es software libere, de codice aperte, e un marca de Mastodon gGmbH.",
+ "about.rules": "Regulas del servitor",
+ "account.account_note_header": "Nota",
"account.add_or_remove_from_list": "Adder o remover ab listas",
+ "account.badges.group": "Gruppo",
+ "account.block": "Blocar @{name}",
+ "account.block_short": "Blocar",
+ "account.blocked": "Blocate",
+ "account.browse_more_on_origin_server": "Navigar plus sur le profilo original",
"account.copy": "Copiar ligamine a profilo",
+ "account.domain_blocked": "Dominio blocate",
+ "account.edit_profile": "Modificar profilo",
+ "account.enable_notifications": "Notifica me quando @{name} publica",
+ "account.endorse": "Evidentiar sur le profilo",
+ "account.featured_tags.last_status_at": "Ultime message in {date}",
+ "account.featured_tags.last_status_never": "Necun messages",
+ "account.featured_tags.title": "Hashtags eminente de {name}",
+ "account.follow": "Sequer",
+ "account.follow_back": "Sequer etiam",
+ "account.followers": "Sequitores",
+ "account.followers.empty": "Iste usator ancora non ha sequitores.",
+ "account.followers_counter": "{count, plural, one {{counter} sequitor} other {{counter} sequitores}}",
+ "account.following": "Sequente",
+ "account.go_to_profile": "Vader al profilo",
+ "account.hide_reblogs": "Celar boosts de @{name}",
+ "account.languages": "Cambiar le linguas subscribite",
+ "account.link_verified_on": "Le proprietate de iste ligamine esseva verificate le {date}",
+ "account.locked_info": "Le stato de confidentialitate de iste conto es definite a blocate. Le proprietario revisa manualmente qui pote sequer lo.",
+ "account.mention": "Mentionar @{name}",
+ "account.moved_to": "{name} indicava que lor nove conto ora es:",
+ "account.mute": "Silentiar @{name}",
+ "account.mute_notifications_short": "Silentiar le notificationes",
+ "account.mute_short": "Silentiar",
+ "account.muted": "Silentiate",
+ "account.no_bio": "Nulle description fornite.",
+ "account.open_original_page": "Aperir le pagina original",
+ "account.posts": "Messages",
+ "account.posts_with_replies": "Messages e responsas",
+ "account.share": "Compartir profilo de @{name}",
+ "account.show_reblogs": "Monstrar responsas de @{name}",
+ "account.unblock": "Disblocar @{name}",
+ "account.unblock_domain": "Disblocar dominio {domain}",
+ "account.unblock_short": "Disblocar",
+ "account.unendorse": "Non evidentiar sur le profilo",
+ "account.unmute": "Non plus silentiar @{name}",
+ "account.unmute_notifications_short": "Non plus silentiar le notificationes",
+ "account.unmute_short": "Non plus silentiar",
+ "account_note.placeholder": "Clicca pro adder un nota",
+ "admin.dashboard.retention.cohort_size": "Nove usatores",
+ "admin.impact_report.instance_followers": "Sequitores que nostre usatores poterea perder",
+ "admin.impact_report.instance_follows": "Sequitores que lor usatores poterea perder",
+ "alert.rate_limited.message": "Retenta depost {retry_time, time, medium}.",
+ "alert.unexpected.message": "Ocurreva un error inexpectate.",
+ "announcement.announcement": "Annuncio",
+ "audio.hide": "Celar audio",
"bundle_column_error.network.title": "Error de rete",
+ "bundle_column_error.retry": "Tentar novemente",
+ "bundle_column_error.return": "Retornar al initio",
"bundle_modal_error.close": "Clauder",
+ "bundle_modal_error.retry": "Tentar novemente",
+ "closed_registrations_modal.find_another_server": "Trovar altere servitor",
+ "column.about": "A proposito de",
+ "column.blocks": "Usatores blocate",
+ "column.bookmarks": "Marcapaginas",
+ "column.community": "Chronologia local",
+ "column.direct": "Mentiones private",
+ "column.directory": "Navigar profilos",
+ "column.domain_blocks": "Dominios blocate",
+ "column.favourites": "Favoritos",
+ "column.firehose": "Fluxos in directe",
"column.home": "Initio",
+ "column.lists": "Listas",
+ "column.mutes": "Usatores silentiate",
+ "column.notifications": "Notificationes",
+ "column.public": "Chronologia federate",
+ "column_header.hide_settings": "Celar le parametros",
+ "column_header.moveLeft_settings": "Mover columna al sinistra",
+ "column_header.moveRight_settings": "Mover columna al dextra",
+ "column_header.show_settings": "Monstrar le parametros",
"column_subheading.settings": "Parametros",
+ "compose.language.change": "Cambiar le lingua",
"compose.language.search": "Cercar linguas...",
+ "compose.published.body": "Message publicate.",
"compose.published.open": "Aperir",
+ "compose.saved.body": "Message salvate.",
+ "compose_form.direct_message_warning_learn_more": "Apprender plus",
+ "compose_form.lock_disclaimer": "Tu conto non es {locked}. Quicunque pote sequer te pro vider tu messages solo pro sequitores.",
+ "compose_form.lock_disclaimer.lock": "blocate",
+ "compose_form.publish_form": "Nove message",
+ "compose_form.spoiler.marked": "Remover advertimento de contento",
+ "compose_form.spoiler.unmarked": "Adder advertimento de contento",
"confirmation_modal.cancel": "Cancellar",
+ "confirmations.block.confirm": "Blocar",
+ "confirmations.delete.confirm": "Deler",
+ "confirmations.delete.message": "Es tu secur que tu vole deler iste message?",
+ "confirmations.delete_list.confirm": "Deler",
+ "confirmations.delete_list.message": "Es tu secur que tu vole deler permanentemente iste lista?",
+ "confirmations.domain_block.confirm": "Blocar le dominio complete",
+ "confirmations.edit.confirm": "Modificar",
"confirmations.logout.confirm": "Clauder le session",
+ "confirmations.logout.message": "Es tu secur que tu vole clauder le session?",
+ "confirmations.mute.confirm": "Silentiar",
+ "confirmations.mute.message": "Es tu secur que tu vole silentiar {name}?",
+ "confirmations.reply.confirm": "Responder",
+ "conversation.delete": "Deler conversation",
+ "conversation.mark_as_read": "Marcar como legite",
+ "conversation.open": "Vider conversation",
+ "conversation.with": "Con {names}",
+ "copy_icon_button.copied": "Copiate al area de transferentia",
+ "copypaste.copied": "Copiate",
"copypaste.copy_to_clipboard": "Copiar al area de transferentia",
+ "directory.federated": "Ab le fediverso cognoscite",
+ "directory.local": "Solmente ab {domain}",
+ "directory.recently_active": "Recentemente active",
+ "disabled_account_banner.account_settings": "Parametros de conto",
+ "disabled_account_banner.text": "Tu conto {disabledAccount} es actualmente disactivate.",
"dismissable_banner.dismiss": "Dimitter",
+ "emoji_button.activity": "Activitate",
+ "emoji_button.clear": "Rader",
+ "emoji_button.custom": "Personalisate",
+ "emoji_button.recent": "Frequentemente usate",
+ "emoji_button.search": "Cercar...",
+ "emoji_button.search_results": "Resultatos de recerca",
+ "empty_column.account_suspended": "Conto suspendite",
+ "empty_column.account_timeline": "Nulle messages hic!",
+ "empty_column.account_unavailable": "Profilo non disponibile",
+ "empty_column.blocks": "Tu non ha blocate alcun usator ancora.",
+ "errors.unexpected_crash.report_issue": "Signalar un defecto",
+ "explore.search_results": "Resultatos de recerca",
+ "explore.title": "Explorar",
+ "explore.trending_links": "Novas",
+ "explore.trending_statuses": "Messages",
+ "explore.trending_tags": "Hashtags",
+ "filter_modal.added.review_and_configure_title": "Parametros de filtro",
+ "filter_modal.added.settings_link": "pagina de parametros",
+ "filter_modal.added.short_explanation": "Iste message esseva addite al sequente categoria de filtros: {title}.",
+ "filter_modal.added.title": "Filtro addite!",
+ "filter_modal.select_filter.prompt_new": "Nove categoria: {name}",
+ "filter_modal.select_filter.search": "Cercar o crear",
+ "filter_modal.select_filter.title": "Filtrar iste message",
+ "filter_modal.title.status": "Filtrar un message",
+ "firehose.all": "Toto",
"firehose.local": "Iste servitor",
+ "firehose.remote": "Altere servitores",
"footer.about": "A proposito de",
+ "footer.directory": "Directorio de profilos",
+ "footer.get_app": "Obtene le application",
+ "footer.keyboard_shortcuts": "Accessos directe de claviero",
+ "footer.privacy_policy": "Politica de confidentialitate",
+ "footer.source_code": "Vider le codice fonte",
+ "footer.status": "Stato",
+ "generic.saved": "Salvate",
+ "getting_started.heading": "Prime passos",
+ "hashtag.column_header.tag_mode.all": "e {additional}",
+ "hashtag.column_header.tag_mode.any": "o {additional}",
+ "hashtag.column_settings.select.no_options_message": "Nulle suggestiones trovate",
+ "hashtag.column_settings.select.placeholder": "Insere hashtagsâĻ",
+ "hashtag.follow": "Sequer hashtag",
+ "home.column_settings.show_reblogs": "Monstrar boosts",
+ "home.column_settings.show_replies": "Monstrar responsas",
+ "home.hide_announcements": "Celar annuncios",
+ "home.pending_critical_update.body": "Actualisa tu servitor de Mastodon le plus tosto possibile!",
"home.pending_critical_update.link": "Vider actualisationes",
+ "home.show_announcements": "Monstrar annuncios",
+ "interaction_modal.no_account_yet": "Non sur Mstodon?",
+ "interaction_modal.on_another_server": "In un servitor differente",
+ "interaction_modal.on_this_server": "In iste servitor",
+ "interaction_modal.title.follow": "Sequer {name}",
+ "interaction_modal.title.reblog": "Facer boost al message de {name}",
+ "interaction_modal.title.reply": "Responder al message de {name}",
+ "keyboard_shortcuts.blocked": "Aperir lista de usatores blocate",
+ "keyboard_shortcuts.boost": "Facer boost al message",
+ "keyboard_shortcuts.description": "Description",
+ "keyboard_shortcuts.enter": "Aperir message",
+ "keyboard_shortcuts.favourites": "Aperir lista de favoritos",
+ "keyboard_shortcuts.federated": "Aperir le chronologia federate",
+ "keyboard_shortcuts.heading": "Accessos directe de claviero",
+ "keyboard_shortcuts.home": "Aperir le chronologia de initio",
+ "keyboard_shortcuts.local": "Aperir le chronologia local",
+ "keyboard_shortcuts.muted": "Aperir lista de usatores silentiate",
"keyboard_shortcuts.my_profile": "Aperir tu profilo",
+ "keyboard_shortcuts.notifications": "Aperir columna de notificationes",
+ "keyboard_shortcuts.reply": "Responder al message",
+ "keyboard_shortcuts.spoilers": "Monstrar/celar le campo CW",
+ "keyboard_shortcuts.toot": "Initiar un nove message",
"lightbox.close": "Clauder",
"lightbox.next": "Sequente",
+ "lightbox.previous": "Precedente",
"link_preview.author": "Per {name}",
"lists.account.add": "Adder al lista",
- "navigation_bar.about": "A proposito de"
+ "lists.account.remove": "Remover ab le lista",
+ "lists.delete": "Deler lista",
+ "lists.edit": "Modificar lista",
+ "lists.edit.submit": "Cambiar titulo",
+ "lists.exclusive": "Celar iste messages ab le initio",
+ "lists.new.create": "Adder lista",
+ "lists.new.title_placeholder": "Nove titulo del lista",
+ "lists.replies_policy.title": "Monstrar responsas a:",
+ "lists.subheading": "Tu listas",
+ "mute_modal.duration": "Duration",
+ "mute_modal.hide_notifications": "Celar notificationes de iste usator?",
+ "navigation_bar.about": "A proposito de",
+ "navigation_bar.advanced_interface": "Aperir in un interfacie web avantiate",
+ "navigation_bar.blocks": "Usatores blocate",
+ "navigation_bar.bookmarks": "Marcapaginas",
+ "navigation_bar.community_timeline": "Chronologia local",
+ "navigation_bar.direct": "Mentiones private",
+ "navigation_bar.discover": "Discoperir",
+ "navigation_bar.domain_blocks": "Dominios blocate",
+ "navigation_bar.favourites": "Favoritos",
+ "navigation_bar.filters": "Parolas silentiate",
+ "navigation_bar.lists": "Listas",
+ "navigation_bar.logout": "Clauder le session",
+ "navigation_bar.mutes": "Usatores silentiate",
+ "navigation_bar.preferences": "Preferentias",
+ "navigation_bar.public_timeline": "Chronologia federate",
+ "navigation_bar.search": "Cercar",
+ "navigation_bar.security": "Securitate",
+ "notification.update": "{name} modificava un message",
+ "notifications.clear": "Rader notificationes",
+ "notifications.column_settings.alert": "Notificationes de scriptorio",
+ "notifications.column_settings.filter_bar.advanced": "Monstrar tote le categorias",
+ "notifications.column_settings.follow": "Nove sequitores:",
+ "notifications.column_settings.mention": "Mentiones:",
+ "notifications.column_settings.push": "Notificationes push",
+ "notifications.column_settings.sound": "Reproducer sono",
+ "notifications.column_settings.status": "Nove messages:",
+ "notifications.filter.all": "Toto",
+ "notifications.filter.favourites": "Favoritos",
+ "notifications.filter.mentions": "Mentiones",
+ "notifications.grant_permission": "Conceder permission.",
+ "notifications.group": "{count} notificationes",
+ "onboarding.compose.template": "Salute #Mastodon!",
+ "onboarding.profile.save_and_continue": "Salvar e continuar",
+ "onboarding.share.next_steps": "Sequente passos possibile:",
+ "onboarding.share.title": "Compartir tu profilo",
+ "onboarding.steps.follow_people.title": "Personalisa tu fluxo de initio",
+ "onboarding.steps.publish_status.title": "Face tu prime message",
+ "onboarding.steps.setup_profile.title": "Personalisa tu profilo",
+ "onboarding.steps.share_profile.title": "Compartir tu profilo de Mastodon",
+ "poll.closed": "Claudite",
+ "poll.reveal": "Vider le resultatos",
+ "privacy.change": "Cambiar privacitate del message",
+ "privacy.public.short": "Public",
+ "privacy_policy.last_updated": "Ultime actualisation {date}",
+ "privacy_policy.title": "Politica de confidentialitate",
+ "relative_time.just_now": "ora",
+ "relative_time.today": "hodie",
+ "reply_indicator.cancel": "Cancellar",
+ "report.block": "Blocar",
+ "report.categories.other": "Alteres",
+ "report.category.title_account": "profilo",
+ "report.category.title_status": "message",
+ "report.close": "Preste",
+ "report.mute": "Silentiar",
+ "report.next": "Sequente",
+ "report.placeholder": "Commentos additional",
+ "report.reasons.dislike": "Non me place",
+ "report_notification.categories.other": "Alteres",
+ "search.quick_action.go_to_account": "Vader al profilo {x}",
+ "search.quick_action.go_to_hashtag": "Vader al hashtag {x}",
+ "search.quick_action.open_url": "Aperir URL in Mastodon",
+ "search_popout.full_text_search_disabled_message": "Non disponibile sur {domain}.",
+ "search_popout.language_code": "Codice de lingua ISO",
+ "search_popout.options": "Optiones de recerca",
+ "search_popout.quick_actions": "Actiones rapide",
+ "search_popout.recent": "Recercas recente",
+ "search_popout.user": "usator",
+ "search_results.accounts": "Profilos",
+ "search_results.hashtags": "Hashtags",
+ "search_results.see_all": "Vider toto",
+ "search_results.statuses": "Messages",
+ "server_banner.learn_more": "Apprender plus",
+ "sign_in_banner.create_account": "Crear un conto",
+ "sign_in_banner.sign_in": "Initiar le session",
+ "status.block": "Blocar @{name}",
+ "status.copy": "Copiar ligamine a message",
+ "status.delete": "Deler",
+ "status.direct_indicator": "Mention private",
+ "status.edit": "Modificar",
+ "status.filter": "Filtrar iste message",
+ "status.hide": "Celar le message",
+ "status.history.created": "create per {name} le {date}",
+ "status.history.edited": "modificate per {name} le {date}",
+ "status.media.open": "Clicca pro aperir",
+ "status.media.show": "Clicca pro monstrar",
+ "status.more": "Plus",
+ "status.mute_conversation": "Silentiar conversation",
+ "status.read_more": "Leger plus",
+ "status.share": "Compartir",
+ "status.translate": "Traducer",
+ "status.translated_from_with": "Traducite ab {lang} usante {provider}",
+ "tabs_bar.home": "Initio",
+ "tabs_bar.notifications": "Notificationes",
+ "timeline_hint.resources.statuses": "Messages ancian",
+ "trends.trending_now": "Ora in tendentias",
+ "upload_modal.choose_image": "Seliger un imagine",
+ "upload_modal.detect_text": "Deteger texto ab un pictura",
+ "video.close": "Clauder le video",
+ "video.download": "Discargar le file",
+ "video.fullscreen": "Schermo plen",
+ "video.hide": "Celar video",
+ "video.mute": "Silentiar le sono",
+ "video.pause": "Pausa",
+ "video.play": "Reproducer",
+ "video.unmute": "Non plus silentiar le sono"
}
diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json
index 5af20a97f..1670d616f 100644
--- a/app/javascript/mastodon/locales/id.json
+++ b/app/javascript/mastodon/locales/id.json
@@ -82,7 +82,6 @@
"announcement.announcement": "Pengumuman",
"attachments_list.unprocessed": "(tidak diproses)",
"audio.hide": "Sembunyikan audio",
- "autosuggest_hashtag.per_week": "{count} per minggu",
"boost_modal.combo": "Anda dapat menekan {combo} untuk melewati ini",
"bundle_column_error.copy_stacktrace": "Salin laporan kesalahan",
"bundle_column_error.error.body": "Laman yang diminta tidak dapat ditampilkan. Mungkin karena sebuah kutu dalam kode kami, atau masalah kompatibilitas peramban.",
@@ -134,22 +133,12 @@
"compose_form.lock_disclaimer": "Akun Anda tidak {locked}. Semua orang dapat mengikuti Anda untuk melihat kiriman khusus untuk pengikut Anda.",
"compose_form.lock_disclaimer.lock": "terkunci",
"compose_form.placeholder": "Apa yang ada di pikiran Anda?",
- "compose_form.poll.add_option": "Tambahkan pilihan",
"compose_form.poll.duration": "Durasi japat",
- "compose_form.poll.option_placeholder": "Pilihan {number}",
- "compose_form.poll.remove_option": "Hapus opsi ini",
"compose_form.poll.switch_to_multiple": "Ubah japat menjadi pilihan ganda",
"compose_form.poll.switch_to_single": "Ubah japat menjadi pilihan tunggal",
- "compose_form.publish": "Terbitkan",
"compose_form.publish_form": "Terbitkan",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Simpan perubahan",
- "compose_form.sensitive.hide": "{count, plural, other {Tandai media sebagai sensitif}}",
- "compose_form.sensitive.marked": "{count, plural, other {Media ini ditandai sebagai sensitif}}",
- "compose_form.sensitive.unmarked": "{count, plural, other {Media ini tidak ditandai sebagai sensitif}}",
"compose_form.spoiler.marked": "Hapus peringatan tentang isi konten",
"compose_form.spoiler.unmarked": "Tambahkan peringatan tentang isi konten",
- "compose_form.spoiler_placeholder": "Peringatan konten",
"confirmation_modal.cancel": "Batal",
"confirmations.block.block_and_report": "Blokir & Laporkan",
"confirmations.block.confirm": "Blokir",
@@ -364,7 +353,6 @@
"navigation_bar.compose": "Tulis toot baru",
"navigation_bar.discover": "Temukan",
"navigation_bar.domain_blocks": "Domain tersembunyi",
- "navigation_bar.edit_profile": "Ubah profil",
"navigation_bar.explore": "Jelajahi",
"navigation_bar.filters": "Kata yang dibisukan",
"navigation_bar.follow_requests": "Permintaan mengikuti",
@@ -454,14 +442,7 @@
"poll_button.add_poll": "Tambah japat",
"poll_button.remove_poll": "Hapus japat",
"privacy.change": "Ubah privasi kiriman",
- "privacy.direct.long": "Kirim hanya ke pengguna yang disebut",
- "privacy.direct.short": "Orang yang disebutkan saja",
- "privacy.private.long": "Kirim kiriman hanya kepada pengikut",
- "privacy.private.short": "Pengikut saja",
- "privacy.public.long": "Terlihat oleh semua",
"privacy.public.short": "Publik",
- "privacy.unlisted.long": "Terlihat oleh semua, tapi jangan tampilkan di fitur jelajah",
- "privacy.unlisted.short": "Tak Terdaftar",
"privacy_policy.last_updated": "Terakhir diperbarui {date}",
"privacy_policy.title": "Kebijakan Privasi",
"refresh": "Segarkan",
@@ -615,10 +596,8 @@
"upload_error.poll": "Unggah berkas tak diizinkan di japat ini.",
"upload_form.audio_description": "Penjelasan untuk orang dengan gangguan pendengaran",
"upload_form.description": "Deskripsikan untuk mereka yang tidak bisa melihat dengan jelas",
- "upload_form.description_missing": "Tidak ada deskripsi yang ditambahkan",
"upload_form.edit": "Sunting",
"upload_form.thumbnail": "Ubah gambar kecil",
- "upload_form.undo": "Undo",
"upload_form.video_description": "Penjelasan untuk orang dengan gangguan pendengaran atau penglihatan",
"upload_modal.analyzing_picture": "Analisis gambarâĻ",
"upload_modal.apply": "Terapkan",
diff --git a/app/javascript/mastodon/locales/ie.json b/app/javascript/mastodon/locales/ie.json
index a7cf1caab..5188d137e 100644
--- a/app/javascript/mastodon/locales/ie.json
+++ b/app/javascript/mastodon/locales/ie.json
@@ -32,6 +32,7 @@
"account.featured_tags.last_status_never": "Null postas",
"account.featured_tags.title": "Recomandat hashtags de {name}",
"account.follow": "Sequer",
+ "account.follow_back": "Sequer reciprocmen",
"account.followers": "Sequitores",
"account.followers.empty": "Ancor nequi seque ti-ci usator.",
"account.followers_counter": "{count, plural, one {{counter} Sequitor} other {{counter} Sequitor}}",
@@ -52,6 +53,7 @@
"account.mute_notifications_short": "Silentiar notificationes",
"account.mute_short": "Silentiar",
"account.muted": "Silentiat",
+ "account.mutual": "Reciproc",
"account.no_bio": "Null descrition providet.",
"account.open_original_page": "Aperter li pÃĄgine original",
"account.posts": "Postas",
@@ -87,7 +89,6 @@
"announcement.announcement": "Proclamation",
"attachments_list.unprocessed": "(Ãntractat)",
"audio.hide": "Celar audio",
- "autosuggest_hashtag.per_week": "{count} per semane",
"boost_modal.combo": "Li proxim vez tu posse pressar {combo} por passar to-ci",
"bundle_column_error.copy_stacktrace": "Copiar erra-raporte",
"bundle_column_error.error.body": "Li demandat pÃĄgine ne posset esser rendit. FÃŗrsan it es un problema in nor code, o un problema de compatibilitÃĄ con li navigator.",
@@ -144,22 +145,21 @@
"compose_form.lock_disclaimer": "Tui conto ne es {locked}. Quicunc posse sequer te por vider tui postas solmen por sequitores.",
"compose_form.lock_disclaimer.lock": "cludet",
"compose_form.placeholder": "Quo es in tui spiritu?",
- "compose_form.poll.add_option": "Adjunter un option",
+ "compose_form.poll.add_option": "Adjunter option",
"compose_form.poll.duration": "Duration del balotation",
+ "compose_form.poll.multiple": "Selection multiplic",
"compose_form.poll.option_placeholder": "Option {number}",
"compose_form.poll.remove_option": "Remover ti-ci option",
+ "compose_form.poll.single": "Selecter un",
"compose_form.poll.switch_to_multiple": "Changea li balotation por permisser multiplic selectiones",
"compose_form.poll.switch_to_single": "Changea li balotation por permisser un singul selection",
- "compose_form.publish": "Publicar",
+ "compose_form.poll.type": "Stil",
+ "compose_form.publish": "Postar",
"compose_form.publish_form": "Nov posta",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Conservar changes",
- "compose_form.sensitive.hide": "{count, plural, one {Marcar medie quam sensitiv} other {Marcar medie quam sensitiv}}",
- "compose_form.sensitive.marked": "{count, plural, one {Medie es marcat quam sensitiv} other {Medie es marcat quam sensitiv}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {Medie ne es marcat quam sensitiv} other {Medie ne es marcat quam sensitiv}}",
+ "compose_form.reply": "Responder",
+ "compose_form.save_changes": "Actualisar",
"compose_form.spoiler.marked": "Remover avise pri li contenete",
"compose_form.spoiler.unmarked": "Adjunter avise pri li contenete",
- "compose_form.spoiler_placeholder": "Scri tui avise ci",
"confirmation_modal.cancel": "Anullar",
"confirmations.block.block_and_report": "Bloccar & Raportar",
"confirmations.block.confirm": "Bloccar",
@@ -191,7 +191,9 @@
"conversation.mark_as_read": "Marcar quam leet",
"conversation.open": "Vider conversation",
"conversation.with": "Con {names}",
+ "copy_icon_button.copied": "Copiat al Paperiere",
"copypaste.copied": "Copiat",
+ "copypaste.copy_to_clipboard": "Copiar al Paperiere",
"directory.federated": "Del conosset fediverse",
"directory.local": "De solmen {domain}",
"directory.new_arrivals": "Nov arivantes",
@@ -246,6 +248,7 @@
"error.unexpected_crash.explanation_addons": "Ti-ci pÃĄgine ne posset esser monstrat correctmen. Li error es probabilmen causat de un extension al navigator o instrumentes por automatic traduction.",
"error.unexpected_crash.next_steps": "Prova recargar li pÃĄgine. Si to ne auxilia, tu fÃŗrsan posse usar Mastodon per un diferent navigator o aplication.",
"error.unexpected_crash.next_steps_addons": "Prova desactivisar les e recargar li pÃĄgine. Si to ne auxilia, tu fÃŗrsan posse usar Mastodon per un diferent navigator o aplication.",
+ "errors.unexpected_crash.copy_stacktrace": "Copiar cumul-tracie a paperiere",
"errors.unexpected_crash.report_issue": "Raportar un problema",
"explore.search_results": "Resultates de sercha",
"explore.suggested_follows": "Gente",
@@ -280,6 +283,7 @@
"footer.directory": "Profilarium",
"footer.get_app": "Obtener li aplication",
"footer.invite": "Invitar gente",
+ "footer.keyboard_shortcuts": "Rapid-tastes",
"footer.privacy_policy": "Politica pri privatie",
"footer.source_code": "Vider li fonte-code",
"footer.status": "Statu",
@@ -342,7 +346,10 @@
"keyboard_shortcuts.favourite": "Favoritisar posta",
"keyboard_shortcuts.favourites": "Aperter li liste de favorites",
"keyboard_shortcuts.federated": "Aperter li federat tÊmpor-linea",
+ "keyboard_shortcuts.heading": "Rapid-tastes",
"keyboard_shortcuts.home": "Aperter li hemal tÊmpor-linea",
+ "keyboard_shortcuts.hotkey": "Rapid clave",
+ "keyboard_shortcuts.legend": "Monstrar ti-ci legende",
"keyboard_shortcuts.local": "Aperter li local tÊmpor-linea",
"keyboard_shortcuts.mention": "Mentionar li autor",
"keyboard_shortcuts.muted": "Aperter li lista de silentiat usatores",
@@ -399,7 +406,6 @@
"navigation_bar.direct": "Privat mentiones",
"navigation_bar.discover": "Decovrir",
"navigation_bar.domain_blocks": "Bloccat dominias",
- "navigation_bar.edit_profile": "Redacter profil",
"navigation_bar.explore": "Explorar",
"navigation_bar.favourites": "Favorites",
"navigation_bar.filters": "Silentiat paroles",
@@ -517,14 +523,11 @@
"poll_button.add_poll": "Adjunter un balotation",
"poll_button.remove_poll": "Remover balotation",
"privacy.change": "Changear li privatie del posta",
- "privacy.direct.long": "Visibil solmen a mentionat usatores",
- "privacy.direct.short": "Solmen persones mentionat",
- "privacy.private.long": "Visibil solmen por sequitores",
- "privacy.private.short": "Solmen sequitores",
- "privacy.public.long": "Visibil a omnes",
+ "privacy.direct.short": "Specific persones",
+ "privacy.private.long": "Solmen tui sequitores",
+ "privacy.private.short": "Sequitores",
+ "privacy.public.long": "Quicunc in e ex Mastodon",
"privacy.public.short": "Public",
- "privacy.unlisted.long": "Visibil por omnes, ma excludet de functiones de decovrition",
- "privacy.unlisted.short": "Delistat",
"privacy_policy.last_updated": "Ultimmen actualisat ye {date}",
"privacy_policy.title": "Politica pri Privatie",
"recommended": "Recomandat",
@@ -599,6 +602,7 @@
"search.search_or_paste": "Serchar o glutinar URL",
"search_popout.full_text_search_disabled_message": "Ne disponibil che {domain}.",
"search_popout.full_text_search_logged_out_message": "Solmen disponibil con session initiat.",
+ "search_popout.language_code": "Code de lingue ISO",
"search_popout.options": "Sercha-parametres",
"search_popout.quick_actions": "Rapid actiones",
"search_popout.recent": "Recent serchas",
@@ -705,10 +709,8 @@
"upload_error.poll": "On ne es permisset cargar medie con balotationes.",
"upload_form.audio_description": "Descrir por persones qui es surd o ne audi bon",
"upload_form.description": "Descrir por persones qui es ciec o have mal vision",
- "upload_form.description_missing": "Null descrition adjuntet",
"upload_form.edit": "Redacter",
"upload_form.thumbnail": "Changear previsual image",
- "upload_form.undo": "Deleter",
"upload_form.video_description": "Descrir por persones qui es surd, ciec, ne audi bon, o have mal vision",
"upload_modal.analyzing_picture": "Analisant imageâĻ",
"upload_modal.apply": "Aplicar",
diff --git a/app/javascript/mastodon/locales/ig.json b/app/javascript/mastodon/locales/ig.json
index f163567f1..a4f726842 100644
--- a/app/javascript/mastodon/locales/ig.json
+++ b/app/javascript/mastodon/locales/ig.json
@@ -107,8 +107,6 @@
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
"onboarding.steps.share_profile.title": "Share your profile",
"privacy.change": "Adjust status privacy",
- "privacy.direct.short": "Direct",
- "privacy.private.short": "Followers-only",
"relative_time.full.just_now": "káģta",
"relative_time.just_now": "káģta",
"relative_time.today": "taa",
@@ -142,7 +140,6 @@
"trends.trending_now": "Na-ewu ewu káģta",
"upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Describe for the visually impaired",
- "upload_form.undo": "HichapáģĨ",
"upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.choose_image": "Háģráģ onyonyo",
"upload_progress.label": "UploadingâĻ"
diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json
index 233b76845..a9dd32c06 100644
--- a/app/javascript/mastodon/locales/io.json
+++ b/app/javascript/mastodon/locales/io.json
@@ -86,7 +86,6 @@
"announcement.announcement": "Anunco",
"attachments_list.unprocessed": "(neprocedita)",
"audio.hide": "Celez audio",
- "autosuggest_hashtag.per_week": "{count} dum singla semano",
"boost_modal.combo": "Vu povas pulsar {combo} por omisar co venontafoye",
"bundle_column_error.copy_stacktrace": "Kopierorraporto",
"bundle_column_error.error.body": "La demandita pagino ne povas strukturigesar. Forsan ol esas eroro en kodexo hike o vidilkoncilieblesproblemo.",
@@ -143,22 +142,12 @@
"compose_form.lock_disclaimer": "Vua konto ne esas {locked}. Irgu povas sequar vu por vidar vua sequanto-nura posti.",
"compose_form.lock_disclaimer.lock": "klefagesas",
"compose_form.placeholder": "Quo esas en tua spirito?",
- "compose_form.poll.add_option": "Insertez selekto",
"compose_form.poll.duration": "Votpostoduro",
- "compose_form.poll.option_placeholder": "Selektato {number}",
- "compose_form.poll.remove_option": "Efacez ca selektajo",
"compose_form.poll.switch_to_multiple": "Chanjez votposto por permisar multiselektaji",
"compose_form.poll.switch_to_single": "Chanjez votposto por permisar una selektajo",
- "compose_form.publish": "Publikigez",
"compose_form.publish_form": "Publish",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Sparez chanji",
- "compose_form.sensitive.hide": "{count, plural,one {Markizez medii quale privata} other {Markizez medii quale privata}}",
- "compose_form.sensitive.marked": "{count, plural,one {Medii markizesis quale privata} other {Medii markizesis quale privata}}",
- "compose_form.sensitive.unmarked": "{count, plural,one {Medii ne markizesis quale privata} other {Medii ne markizesis quale privata}}",
"compose_form.spoiler.marked": "Text is hidden behind warning",
"compose_form.spoiler.unmarked": "Text is not hidden",
- "compose_form.spoiler_placeholder": "Averto di kontenajo",
"confirmation_modal.cancel": "Anulez",
"confirmations.block.block_and_report": "Restriktez e Raportizez",
"confirmations.block.confirm": "Restriktez",
@@ -405,7 +394,6 @@
"navigation_bar.direct": "Privata mencioni",
"navigation_bar.discover": "Deskovrez",
"navigation_bar.domain_blocks": "Hidden domains",
- "navigation_bar.edit_profile": "Modifikar profilo",
"navigation_bar.explore": "Explorez",
"navigation_bar.favourites": "Favoriziti",
"navigation_bar.filters": "Silencigita vorti",
@@ -519,14 +507,7 @@
"poll_button.add_poll": "Insertez votposto",
"poll_button.remove_poll": "Efacez votposto",
"privacy.change": "Aranjar privateso di mesaji",
- "privacy.direct.long": "Sendar nur a mencionata uzeri",
- "privacy.direct.short": "Mencionita personi nur",
- "privacy.private.long": "Sendar nur a sequanti",
- "privacy.private.short": "Sequanti nur",
- "privacy.public.long": "Videbla da omnu",
"privacy.public.short": "Publike",
- "privacy.unlisted.long": "Videbla da omnu ma voluntala ne inkluzas deskovrotraiti",
- "privacy.unlisted.short": "Ne enlistigota",
"privacy_policy.last_updated": "Antea novajo ye {date}",
"privacy_policy.title": "Privatesguidilo",
"recommended": "Rekomendata",
@@ -708,10 +689,8 @@
"upload_error.poll": "Failadchargo ne permisesas kun votposti.",
"upload_form.audio_description": "Deskriptez por personi kun audnekapableso",
"upload_form.description": "Deskriptez por personi kun vidnekapableso",
- "upload_form.description_missing": "Deskriptajo ne insertesis",
"upload_form.edit": "Modifikez",
"upload_form.thumbnail": "Chanjez imajeto",
- "upload_form.undo": "Desfacar",
"upload_form.video_description": "Deskriptez por personi kun audnekapableso o vidnekapableso",
"upload_modal.analyzing_picture": "Analizas imajoâĻ",
"upload_modal.apply": "Aplikez",
diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json
index 46e83b4db..dfece102b 100644
--- a/app/javascript/mastodon/locales/is.json
+++ b/app/javascript/mastodon/locales/is.json
@@ -32,6 +32,7 @@
"account.featured_tags.last_status_never": "Engar fÃĻrslur",
"account.featured_tags.title": "Myllumerki hjÃĄ {name} með aukið vÃĻgi",
"account.follow": "Fylgjast með",
+ "account.follow_back": "Fylgjast með til baka",
"account.followers": "Fylgjendur",
"account.followers.empty": "EnnÃžÃĄ fylgist enginn með Þessum notanda.",
"account.followers_counter": "{count, plural, one {Fylgjandi: {counter}} other {Fylgjendur: {counter}}}",
@@ -52,6 +53,7 @@
"account.mute_notifications_short": "Ãagga à tilkynningum",
"account.mute_short": "Ãagga niður",
"account.muted": "Ãaggaður",
+ "account.mutual": "Sameiginlegir",
"account.no_bio": "Engri lÃŊsingu Ãētvegað.",
"account.open_original_page": "Opna upprunalega sÃðu",
"account.posts": "FÃĻrslur",
@@ -87,7 +89,6 @@
"announcement.announcement": "AuglÃŊsing",
"attachments_list.unprocessed": "(Ãŗunnið)",
"audio.hide": "Fela hljÃŗÃ°",
- "autosuggest_hashtag.per_week": "{count} ÃĄ viku",
"boost_modal.combo": "ÃÃē getur ÃŊtt ÃĄ {combo} til að sleppa Þessu nÃĻst",
"bundle_column_error.copy_stacktrace": "Afrita villuskÃŊrslu",
"bundle_column_error.error.body": "Umbeðna sÃðau var ekki hÃĻgt að myndgera. Ãað gÃĻti verið vegna villu à kÃŗÃ°anum okkar eða vandamÃĄls með samhÃĻfni vafra.",
@@ -146,20 +147,20 @@
"compose_form.placeholder": "Hvað liggur ÞÊr ÃĄ hjarta?",
"compose_form.poll.add_option": "BÃĻta við valkosti",
"compose_form.poll.duration": "TÃmalengd kÃļnnunar",
+ "compose_form.poll.multiple": "Margir valkostir",
"compose_form.poll.option_placeholder": "Valkostur {number}",
"compose_form.poll.remove_option": "FjarlÃĻgja Þennan valkost",
+ "compose_form.poll.single": "Veldu eitt",
"compose_form.poll.switch_to_multiple": "Breyta kÃļnnun svo hÃĻgt sÊ að hafa marga valkosti",
"compose_form.poll.switch_to_single": "Breyta kÃļnnun svo hÃĻgt sÊ að hafa einn stakan valkost",
+ "compose_form.poll.type": "StÃll",
"compose_form.publish": "Birta",
"compose_form.publish_form": "Birta",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Vista breytingar",
- "compose_form.sensitive.hide": "{count, plural, one {Merkja mynd sem viðkvÃĻma} other {Merkja myndir sem viðkvÃĻmar}}",
- "compose_form.sensitive.marked": "{count, plural, one {Mynd er merkt sem viðkvÃĻm} other {Myndir eru merktar sem viðkvÃĻmar}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {Mynd er ekki merkt sem viðkvÃĻm} other {Myndir eru ekki merktar sem viðkvÃĻmar}}",
+ "compose_form.reply": "Svara",
+ "compose_form.save_changes": "UppfÃĻra",
"compose_form.spoiler.marked": "FjarlÃĻgja aðvÃļrun vegna efnis",
"compose_form.spoiler.unmarked": "BÃĻta við aðvÃļrun vegna efnis",
- "compose_form.spoiler_placeholder": "Skrifaðu aðvÃļrunina ÞÃna hÊr",
+ "compose_form.spoiler_placeholder": "AðvÃļrun vegna efnis (valkvÃĻtt)",
"confirmation_modal.cancel": "HÃĻtta við",
"confirmations.block.block_and_report": "Ãtiloka og kÃĻra",
"confirmations.block.confirm": "Ãtiloka",
@@ -406,7 +407,6 @@
"navigation_bar.direct": "Einkaspjall",
"navigation_bar.discover": "UppgÃļtva",
"navigation_bar.domain_blocks": "Ãtilokuð lÊn",
- "navigation_bar.edit_profile": "Breyta notandasniði",
"navigation_bar.explore": "Kanna",
"navigation_bar.favourites": "EftirlÃĻti",
"navigation_bar.filters": "ÃÃļgguð orð",
@@ -524,14 +524,15 @@
"poll_button.add_poll": "BÃĻta við kÃļnnun",
"poll_button.remove_poll": "FjarlÃĻgja kÃļnnun",
"privacy.change": "Aðlaga gagnaleynd fÃĻrslu",
- "privacy.direct.long": "Senda einungis ÃĄ notendur sem minnst er ÃĄ",
- "privacy.direct.short": "Aðeins fÃŗlk sem minnst er ÃĄ",
- "privacy.private.long": "Senda einungis ÃĄ fylgjendur",
- "privacy.private.short": "Einungis fylgjendur",
- "privacy.public.long": "SÃŊnilegt fyrir alla",
+ "privacy.direct.long": "Allir sem minnst er ÃĄ Ã fÃĻrslunni",
+ "privacy.direct.short": "Tilteknir aðilar",
+ "privacy.private.long": "Einungis Þeir sem fylgjast með ÞÊr",
+ "privacy.private.short": "Fylgjendur",
+ "privacy.public.long": "Hver sem er, ÃĄ og utan Mastodon",
"privacy.public.short": "Opinbert",
- "privacy.unlisted.long": "SÃŊnilegt Ãļllum, en ekki tekið með à uppgÃļtvunareiginleikum",
- "privacy.unlisted.short": "ÃskrÃĄÃ°",
+ "privacy.unlisted.additional": "Ãetta hegðar sÊr eins og opinber fÃĻrsla, fyrir utan að fÃĻrslan birtist ekki à beinum streymum eða myllumerkjum, nÊ heldur à Mastodon-leitum jafnvel ÃžÃŗtt ÞÃē hafir valið að falla undir slÃkt à notandasniðinu ÞÃnu.",
+ "privacy.unlisted.long": "Minni stÃĻlar à reikniritum",
+ "privacy.unlisted.short": "HljÃŗÃ°lÃĄtt opinbert",
"privacy_policy.last_updated": "SÃðast uppfÃĻrt {date}",
"privacy_policy.title": "PersÃŗnuverndarstefna",
"recommended": "MÃĻlt með",
@@ -549,7 +550,9 @@
"relative_time.minutes": "{number}mÃn",
"relative_time.seconds": "{number}sek",
"relative_time.today": "Ã dag",
+ "reply_indicator.attachments": "{count, plural, one {# viðhengi} other {# viðhengi}}",
"reply_indicator.cancel": "HÃĻtta við",
+ "reply_indicator.poll": "KÃļnnun",
"report.block": "Ãtiloka",
"report.block_explanation": "ÃÃē munt ekki sjÃĄ fÃĻrslurnar Þeirra. Ãeir munu ekki geta sÊð fÃĻrslurnar ÞÃnar eða fylgst með ÞÊr. Ãeir munu ekki geta sÊð að lokað sÊ ÃĄ ÃžÃĄ.",
"report.categories.legal": "Lagalegt",
@@ -713,10 +716,8 @@
"upload_error.poll": "Innsending skrÃĄa er ekki leyfð à kÃļnnunum.",
"upload_form.audio_description": "LÃŊstu Þessu fyrir heyrnarskerta",
"upload_form.description": "LÃŊstu Þessu fyrir sjÃŗnskerta",
- "upload_form.description_missing": "Engri lÃŊsingu bÃĻtt við",
"upload_form.edit": "Breyta",
"upload_form.thumbnail": "Skipta um smÃĄmynd",
- "upload_form.undo": "Eyða",
"upload_form.video_description": "LÃŊstu Þessu fyrir fÃŗlk sem heyrir illa eða er með skerta sjÃŗn",
"upload_modal.analyzing_picture": "Greini myndâĻ",
"upload_modal.apply": "Virkja",
diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json
index 4fb4d88cb..920b80d5a 100644
--- a/app/javascript/mastodon/locales/it.json
+++ b/app/javascript/mastodon/locales/it.json
@@ -89,7 +89,6 @@
"announcement.announcement": "Annuncio",
"attachments_list.unprocessed": "(non elaborato)",
"audio.hide": "Nascondi audio",
- "autosuggest_hashtag.per_week": "{count} a settimana",
"boost_modal.combo": "Puoi premere {combo} per saltare questo passaggio, la prossima volta",
"bundle_column_error.copy_stacktrace": "Copia rapporto sull'errore",
"bundle_column_error.error.body": "Impossibile rendedrizzare la pagina richiesta. Potrebbe dipendere da un bug nel nostro codice o da un problema di compatibilità di un browser.",
@@ -146,22 +145,22 @@
"compose_form.lock_disclaimer": "Il tuo profilo non è {locked}. Chiunque puÃ˛ seguirti per visualizzare i tuoi post per soli seguaci.",
"compose_form.lock_disclaimer.lock": "bloccato",
"compose_form.placeholder": "Cos'hai in mente?",
- "compose_form.poll.add_option": "Aggiungi una scelta",
+ "compose_form.poll.add_option": "Aggiungi opzione",
"compose_form.poll.duration": "Durata del sondaggio",
- "compose_form.poll.option_placeholder": "Scelta {number}",
- "compose_form.poll.remove_option": "Rimuovi questa scelta",
+ "compose_form.poll.multiple": "Scelta multipla",
+ "compose_form.poll.option_placeholder": "Opzione {number}",
+ "compose_form.poll.remove_option": "Rimuovi questa opzione",
+ "compose_form.poll.single": "Scegli uno",
"compose_form.poll.switch_to_multiple": "Modifica il sondaggio per consentire scelte multiple",
"compose_form.poll.switch_to_single": "Modifica il sondaggio per consentire una singola scelta",
+ "compose_form.poll.type": "Stile",
"compose_form.publish": "Pubblica",
"compose_form.publish_form": "Nuovo post",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Salva le modifiche",
- "compose_form.sensitive.hide": "{count, plural, one {Segna media come sensibile} other {Segna media come sensibili}}",
- "compose_form.sensitive.marked": "{count, plural, one {Il media è contrassegnato come sensibile} other {I media sono contrassegnati come sensibili}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {Il media non è contrassegnato come sensibile} other {I media non sono contrassegnati come sensibili}}",
+ "compose_form.reply": "Rispondi",
+ "compose_form.save_changes": "Aggiorna",
"compose_form.spoiler.marked": "Rimuovi l'avviso del contenuto",
"compose_form.spoiler.unmarked": "Aggiungi l'avviso del contenuto",
- "compose_form.spoiler_placeholder": "Scrivi qui il tuo avviso",
+ "compose_form.spoiler_placeholder": "Contenuto sensibile (facoltativo)",
"confirmation_modal.cancel": "Annulla",
"confirmations.block.block_and_report": "Blocca & Segnala",
"confirmations.block.confirm": "Blocca",
@@ -408,7 +407,6 @@
"navigation_bar.direct": "Menzioni private",
"navigation_bar.discover": "Scopri",
"navigation_bar.domain_blocks": "Domini bloccati",
- "navigation_bar.edit_profile": "Modifica il profilo",
"navigation_bar.explore": "Esplora",
"navigation_bar.favourites": "Preferiti",
"navigation_bar.filters": "Parole silenziate",
@@ -526,14 +524,15 @@
"poll_button.add_poll": "Aggiungi un sondaggio",
"poll_button.remove_poll": "Rimuovi il sondaggio",
"privacy.change": "Modifica privacy del post",
- "privacy.direct.long": "Visibile solo per gli utenti menzionati",
- "privacy.direct.short": "Solo persone menzionate",
- "privacy.private.long": "Visibile solo ai seguaci",
- "privacy.private.short": "Solo seguaci",
- "privacy.public.long": "Visibile a tutti",
+ "privacy.direct.long": "Tutti quelli menzioniati nel post",
+ "privacy.direct.short": "Persone specifiche",
+ "privacy.private.long": "Solo i tuoi follower",
+ "privacy.private.short": "Follower",
+ "privacy.public.long": "Chiunque dentro e fuori Mastodon",
"privacy.public.short": "Pubblico",
- "privacy.unlisted.long": "Visibile a tutti, ma escluso dalle funzioni di scoperta",
- "privacy.unlisted.short": "Non elencato",
+ "privacy.unlisted.additional": "Si comporta esattamente come pubblico, tranne per il fatto che il post non verrà visualizzato nei feed live o negli hashtag, nell'esplorazione o nella ricerca Mastodon, anche se hai attivato l'attivazione a livello di account.",
+ "privacy.unlisted.long": "Meno fanfare algoritmiche",
+ "privacy.unlisted.short": "Pubblico silenzioso",
"privacy_policy.last_updated": "Ultimo aggiornamento {date}",
"privacy_policy.title": "Politica sulla Privacy",
"recommended": "Consigliato",
@@ -551,7 +550,9 @@
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
"relative_time.today": "oggi",
+ "reply_indicator.attachments": "{count, plural, one {# allegato} other {# allegati}}",
"reply_indicator.cancel": "Annulla",
+ "reply_indicator.poll": "Sondaggio",
"report.block": "Blocca",
"report.block_explanation": "Non visualizzerai i suoi post. Non potrà vedere i tuoi post o seguirti. Potrà sapere di esser stato bloccato.",
"report.categories.legal": "Informazioni legali",
@@ -715,10 +716,8 @@
"upload_error.poll": "Caricamento del file non consentito con i sondaggi.",
"upload_form.audio_description": "Descrizione per persone con deficit uditivi",
"upload_form.description": "Descrizione per ipovedenti",
- "upload_form.description_missing": "Nessuna descrizione aggiunta",
"upload_form.edit": "Modifica",
"upload_form.thumbnail": "Cambia la miniatura",
- "upload_form.undo": "Elimina",
"upload_form.video_description": "Descrizione per persone con deficit uditivi o ipovedenti",
"upload_modal.analyzing_picture": "Analizzando l'immagineâĻ",
"upload_modal.apply": "Applica",
diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json
index 55895eef2..480bbffe8 100644
--- a/app/javascript/mastodon/locales/ja.json
+++ b/app/javascript/mastodon/locales/ja.json
@@ -32,6 +32,7 @@
"account.featured_tags.last_status_never": "ããĨãŧãããããžãã",
"account.featured_tags.title": "{name}ãŽæŗ¨įŽãããˇãĨãŋã°",
"account.follow": "ããŠããŧ",
+ "account.follow_back": "ããŠããŧããã¯",
"account.followers": "ããŠãã¯ãŧ",
"account.followers.empty": "ãžã čǰãããŠããŧããĻããžããã",
"account.followers_counter": "{counter} ããŠãã¯ãŧ",
@@ -52,6 +53,7 @@
"account.mute_notifications_short": "éįĨããĒããĢãã",
"account.mute_short": "ããĨãŧã",
"account.muted": "ããĨãŧãæ¸ãŋ",
+ "account.mutual": "į¸äēããŠããŧä¸",
"account.no_bio": "čĒŦæãæäžãããĻããžããã",
"account.open_original_page": "å
ãŽããŧã¸ãéã",
"account.posts": "ããĨãŧã",
@@ -87,7 +89,6 @@
"announcement.announcement": "ãįĨãã",
"attachments_list.unprocessed": "(æĒåĻį)",
"audio.hide": "éŗåŖ°ãéãã",
- "autosuggest_hashtag.per_week": "{count} å / éą",
"boost_modal.combo": "æŦĄããã¯{combo}ãæŧãã°ãšãããã§ããžã",
"bundle_column_error.copy_stacktrace": "ã¨ãŠãŧãŦããŧãããŗããŧ",
"bundle_column_error.error.body": "čĻæąãããããŧã¸ããŦãŗããĒãŗã°ã§ããžããã§ããããŗãŧããŽãã°ããžãã¯ããŠãĻãļãŽäēææ§ãŽåéĄãåå ã§ããå¯čŊæ§ããããžãã",
@@ -144,10 +145,7 @@
"compose_form.lock_disclaimer": "ããĒããŽãĸãĢãĻãŗãã¯{locked}ãĢãĒãŖãĻããžãããčǰã§ãããĒããããŠããŧãããã¨ãã§ããããŠãã¯ãŧéåŽãŽããĨãŧããčĻããã¨ãã§ããžãã",
"compose_form.lock_disclaimer.lock": "æŋčĒåļ",
"compose_form.placeholder": "äģãĒãĢããĻãīŧ",
- "compose_form.poll.add_option": "čŋŊå ",
"compose_form.poll.duration": "ãĸãŗãąãŧãæé",
- "compose_form.poll.option_placeholder": "é
įŽ {number}",
- "compose_form.poll.remove_option": "ããŽé
įŽãåé¤",
"compose_form.poll.switch_to_multiple": "褿°é¸æãĢ夿´",
"compose_form.poll.switch_to_single": "åä¸é¸æãĢ夿´",
"compose_form.publish": "ããĨãŧã",
@@ -411,7 +409,6 @@
"navigation_bar.direct": "éå
ŦéãŽčŋäŋĄ",
"navigation_bar.discover": "čĻã¤ãã",
"navigation_bar.domain_blocks": "ãããã¯ããããĄã¤ãŗ",
- "navigation_bar.edit_profile": "ããããŖãŧãĢãᎍé",
"navigation_bar.explore": "æĸį´ĸãã",
"navigation_bar.favourites": "ãæ°ãĢå
Ĩã",
"navigation_bar.filters": "ããŖãĢãŋãŧč¨åŽ",
@@ -492,7 +489,7 @@
"onboarding.profile.display_name_hint": "ããĢããŧã ããããã¯éĸįŊãååãĒãŠ",
"onboarding.profile.lead": "ãã¨ã§ãã¤ã§ãäŋŽæŖã§ããžãããč¨åŽįģéĸãĢã¯ããäģĨå¤ãŽãĢãšãŋãã¤ãēé
įŽããããžãã",
"onboarding.profile.note": "čĒåˇąį´šäģ",
- "onboarding.profile.note_hint": "ãģããŽäēēãĢ @č¨å ãããã#ãããˇãĨãŋã° ãäģãããã§ããžã",
+ "onboarding.profile.note_hint": "ãģããŽãĻãŧãļãŧã¸ãŽãĄãŗãˇã§ãŗ (@mention) ãã #ãããˇãĨãŋã° ãäŊŋį¨ã§ããžã",
"onboarding.profile.save_and_continue": "äŋåããĻįļãã",
"onboarding.profile.title": "ããããŖãŧãĢãŽč¨åŽ",
"onboarding.profile.upload_avatar": "ããããŖãŧãĢįģåããĸããããŧã",
@@ -530,14 +527,7 @@
"poll_button.add_poll": "ãĸãŗãąãŧããčŋŊå ",
"poll_button.remove_poll": "ãĸãŗãąãŧããåé¤",
"privacy.change": "å
Ŧéį¯å˛ã夿´",
- "privacy.direct.long": "æåŽããã᏿ãŽãŋé˛čϧå¯",
- "privacy.direct.short": "æåŽããã᏿ãŽãŋ",
- "privacy.private.long": "ããŠãã¯ãŧãŽãŋé˛čϧå¯",
- "privacy.private.short": "ããŠãã¯ãŧãŽãŋ",
- "privacy.public.long": "čǰã§ãé˛čϧå¯",
"privacy.public.short": "å
Ŧé",
- "privacy.unlisted.long": "čǰã§ãé˛čϧå¯ããĩã¤ãŦãŗã",
- "privacy.unlisted.short": "éåčŧ",
"privacy_policy.last_updated": "{date}ãĢæ´æ°",
"privacy_policy.title": "ããŠã¤ããˇãŧããĒãˇãŧ",
"recommended": "ãããã",
@@ -694,6 +684,7 @@
"status.translate": "įŋģ荺",
"status.translated_from_with": "{provider}ãäŊŋãŖãĻ{lang}ããįŋģ荺",
"status.uncached_media_warning": "ããŦããĨãŧã¯äŊŋį¨ã§ããžãã",
+ "status.unlisted_quote": "æĒåčŧãŽåŧį¨",
"status.unmute_conversation": "äŧ芹ãŽããĨãŧããč§Ŗé¤",
"status.unpin": "ããããŖãŧãĢã¸ãŽåēåŽãč§Ŗé¤",
"subscribed_languages.lead": "鏿ããč¨čĒãŽããĨãŧãã ããããŧã ã¨ãĒãšããŽãŋã¤ã ãŠã¤ãŗãĢ襨į¤ēãããžããå
¨ãĻãŽč¨čĒãŽããĨãŧããåãåãå ´åã¯å
¨ãĻãŽãã§ãã¯ãå¤ããĻä¸ããã",
@@ -722,10 +713,8 @@
"upload_error.poll": "ãĸãŗãąãŧãã§ã¯ããĄã¤ãĢããĸããããŧãã§ããžããã",
"upload_form.audio_description": "č´ãåããéŖãããĻãŧãļãŧã¸ãŽčĒŦæ",
"upload_form.description": "čĻčĻįãĢé˛čϧãéŖãããĻãŧãļãŧã¸ãŽčĒŦæ",
- "upload_form.description_missing": "čĒŦæãčŋŊå ããĻããžãã",
"upload_form.edit": "ᎍé",
"upload_form.thumbnail": "ãĩã ãã¤ãĢã夿´",
- "upload_form.undo": "åé¤",
"upload_form.video_description": "č´ãåããčĻčĻįãĢé˛čϧãéŖãããĻãŧãļãŧã¸ãŽčĒŦæ",
"upload_modal.analyzing_picture": "įģåãč§Ŗæä¸âĻ",
"upload_modal.apply": "éŠį¨",
diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json
index 9d977e933..8628cb38a 100644
--- a/app/javascript/mastodon/locales/ka.json
+++ b/app/javascript/mastodon/locales/ka.json
@@ -36,7 +36,6 @@
"admin.dashboard.retention.cohort_size": "ááŽááá ááááŽááá ááááá",
"alert.unexpected.message": "áŦáá áááá¨áá áááŖááááááá á¨ááĒáááá.",
"alert.unexpected.title": "áŖááĄ!",
- "autosuggest_hashtag.per_week": "áááá áá¨á {count}",
"boost_modal.combo": "á¨ááááĢáááá áááááá áá {combo}-ᥠá ááá á¨ááááá á¯áá áá áááááĸáááá ááĄ",
"bundle_column_error.retry": "áĄáĒáááá ááááá áá ááŽáá",
"bundle_modal_error.close": "áááŽáŖá áá",
@@ -68,11 +67,8 @@
"compose_form.lock_disclaimer.lock": "áŠááááĸááá",
"compose_form.placeholder": "á ááá á¤ááĨá áá?",
"compose_form.publish_form": "Publish",
- "compose_form.sensitive.marked": "ááááá ááááá¨ááŖááá ááá áĢáááááá áá",
- "compose_form.sensitive.unmarked": "ááááá áá áá ááááá¨ááŖáá ááá áĢáááááá áá",
"compose_form.spoiler.marked": "ááá¤á ááŽáááááᥠáŖááá áĸááĨáĄáĸá ááááááŖááá",
"compose_form.spoiler.unmarked": "áĸááĨáĄáĸá áá áá ááááááŖáá",
- "compose_form.spoiler_placeholder": "ááĨáááá ááá¤á ááŽááááá áááŦáá áá ááĨ",
"confirmation_modal.cancel": "áŖáá á§áá¤á",
"confirmations.block.confirm": "ááááá",
"confirmations.block.message": "ááá áŦááŖááááŖáá áŽáá á, ááĄáŖá á áááááááá {name}?",
@@ -171,7 +167,6 @@
"navigation_bar.compose": "Compose new toot",
"navigation_bar.discover": "ááĻááááŠááá",
"navigation_bar.domain_blocks": "ááááááŖáá áááááááá",
- "navigation_bar.edit_profile": "á¨ááĒáááá áá áá¤ááá",
"navigation_bar.filters": "áááŠáŖááááŖáá áĄááĸá§áááá",
"navigation_bar.follow_requests": "áááááááááᥠááááŽáááááá",
"navigation_bar.lists": "áĄáááá",
@@ -211,12 +206,7 @@
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
"onboarding.steps.share_profile.title": "Share your profile",
"privacy.change": "áĄáĸááĸáŖáĄáᥠáááá¤áááááĒááááŖá áááᥠáááááááá",
- "privacy.direct.long": "ááááááĄáĸáᥠááŽáááá áááĄááŽáááááŖá ááááŽááá áááááááá",
- "privacy.direct.short": "Direct",
- "privacy.private.long": "ááááááĄáĸáᥠááŽáááá ááááááá ááááá",
- "privacy.private.short": "Followers-only",
"privacy.public.short": "áĄáá¯áá á",
- "privacy.unlisted.short": "áŠááááŖáááááá",
"regeneration_indicator.label": "ááĸááá ááááâĻ",
"regeneration_indicator.sublabel": "ááĨáááá áĄááŽááᥠááááĸá áááááááá!",
"relative_time.days": "{number}ááĻ",
@@ -279,7 +269,6 @@
"upload_button.label": "áááááᥠáááááĸááá",
"upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "ááĻáŦáá ááááá ááááŖáááŖá áá áŖá¤ááĄáŖá ááĄááááĄ",
- "upload_form.undo": "áááŖáĨáááá",
"upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_progress.label": "ááĸááá áááá...",
"video.close": "áááááᥠáááŽáŖá áá",
diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json
index 08c70a940..d9388c704 100644
--- a/app/javascript/mastodon/locales/kab.json
+++ b/app/javascript/mastodon/locales/kab.json
@@ -53,7 +53,6 @@
"alert.unexpected.title": "Ayhuh!",
"announcement.announcement": "UlÉŖu",
"audio.hide": "Ffer amesli",
- "autosuggest_hashtag.per_week": "{count} i yimalas",
"boost_modal.combo": "TzemreḠad tetekkiá¸ ÉŖef {combo} akken ad tessurfeḠaya tikelt-nniá¸en",
"bundle_column_error.copy_stacktrace": "NÉŖel tuccá¸a n uneqqis",
"bundle_column_error.error.title": "Uh, ala !",
@@ -99,20 +98,10 @@
"compose_form.lock_disclaimer": "Amiá¸an-ik¡im ur yelli ara {locked}. Menwala yezmer ad k¡kem-yeá¸feáš akken ad iáēer acu tbeášášuḠakked yimeá¸faášen-ik¡im.",
"compose_form.lock_disclaimer.lock": "yettwacekkel",
"compose_form.placeholder": "D acu i itezzin deg wallaÉŖ?",
- "compose_form.poll.add_option": "Rnu afran",
"compose_form.poll.duration": "Tanzagt n tefrant",
- "compose_form.poll.option_placeholder": "Afran {number}",
- "compose_form.poll.remove_option": "SfeḠafran-agi",
- "compose_form.publish": "SuffeÉŖ",
"compose_form.publish_form": "SuffeÉŖ",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Sekles ibeddilen",
- "compose_form.sensitive.hide": "CreḠallal n teywalt d anafri",
- "compose_form.sensitive.marked": "Allal n teywalt yettwacreḠd anafri",
- "compose_form.sensitive.unmarked": "{count, plural, one {Amidya ur yettwacreḠara d anafri} other {Imidyaten ur ttwacreá¸en ara d inafriyen}}",
"compose_form.spoiler.marked": "Kkes aá¸ris yettwaffren deffir n walÉŖu",
"compose_form.spoiler.unmarked": "Rnu aá¸ris yettwaffren deffir n walÉŖu",
- "compose_form.spoiler_placeholder": "Aru alÉŖu-inek¡inem da",
"confirmation_modal.cancel": "Sefsex",
"confirmations.block.block_and_report": "Sewá¸Ĩel & sewÉed",
"confirmations.block.confirm": "Sewá¸Ĩel",
@@ -284,7 +273,6 @@
"navigation_bar.compose": "Aru tajewwiqt tamaynut",
"navigation_bar.discover": "áēer",
"navigation_bar.domain_blocks": "TiÉŖula yeffren",
- "navigation_bar.edit_profile": "áēreg amaÉŖnu",
"navigation_bar.explore": "Snirem",
"navigation_bar.favourites": "Imenyafen",
"navigation_bar.filters": "Awalen i yettwasgugmen",
@@ -359,12 +347,7 @@
"poll_button.add_poll": "Rnu asenqed",
"poll_button.remove_poll": "Kkes asenqed",
"privacy.change": "Seggem tabaá¸nit n yizen",
- "privacy.direct.long": "Bá¸u gar yimseqdacen i tbedreḠkan",
- "privacy.direct.short": "Direct",
- "privacy.private.long": "Bá¸u i yimeá¸faášen-ik kan",
- "privacy.private.short": "Imeá¸faášen kan",
"privacy.public.short": "Azayez",
- "privacy.unlisted.short": "War tabdert",
"privacy_policy.title": "Tasertit tabaá¸nit",
"refresh": "Smiren",
"regeneration_indicator.label": "Yessalay-dâĻ",
@@ -472,7 +455,6 @@
"upload_form.description": "Glem-d i yemdaneni yesÉan ugur deg yiáēri",
"upload_form.edit": "áēreg",
"upload_form.thumbnail": "Beddel tugna",
- "upload_form.undo": "Kkes",
"upload_form.video_description": "Glem-d i yemdanen i yesÉan ugur deg tmesliwt neÉŖ deg yiáēri",
"upload_modal.analyzing_picture": "Tasleá¸t n tugna tettedduâĻ",
"upload_modal.apply": "Snes",
diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json
index e0e047ba1..1f6cc78a5 100644
--- a/app/javascript/mastodon/locales/kk.json
+++ b/app/javascript/mastodon/locales/kk.json
@@ -17,6 +17,7 @@
"account.badges.group": "ĐĸĐžĐŋ",
"account.block": "@{name} Đ´ĐĩĐŗĐĩĐŊĐ´Ņ ĐąŌąŌаŅŅаŅ",
"account.block_domain": "{domain} Đ´ĐžĐŧĐĩĐŊŅĐŊ ĐąŌąŌаŅŅаŅ",
+ "account.block_short": "ĐŌąŌаŅŅаŅ",
"account.blocked": "ĐŌąŌаŅŅаĐģŌаĐŊ",
"account.browse_more_on_origin_server": "ĐаŅŅаĐŋŌŅ ĐŋŅĐžŅиĐģŅĐ´ĐĩĐŊ ŅĐžĐģŅ",
"account.cancel_follow_request": "Withdraw follow request",
@@ -63,7 +64,6 @@
"alert.unexpected.message": "ĐŅŅ ĐŊĶŅŅĐĩ Đ´ŌąŅŅŅ ĐąĐžĐģĐŧадŅ.",
"alert.unexpected.title": "Ķ¨Đš!",
"announcement.announcement": "ĐĨайаŅĐģаĐŊĐ´ŅŅŅ",
- "autosuggest_hashtag.per_week": "{count} аĐŋŅаŅŅĐŊа",
"boost_modal.combo": "ĐĐĩĐģĐĩŅŅĐ´Đĩ ĶŠŅĐēŅСŅĐŋ ĐļŅĐąĐĩŅŅ Ō¯ŅŅĐŊ йаŅŅŌŖŅС {combo}",
"bundle_column_error.retry": "ŌаКŅадаĐŊ ĐēĶŠŅŅŌŖŅС",
"bundle_modal_error.close": "ĐайŅ",
@@ -98,19 +98,12 @@
"compose_form.lock_disclaimer": "ĐĐēĐēаŅĐŊŅŅŌŖŅС {locked} ĐĩĐŧĐĩŅ. ĐĐĩС ĐēĐĩĐģĐŗĐĩĐŊ адаĐŧ ĐļаСŅĐģŅĐŋ, ŅŅĐˇĐ´Ņ ĐžŌи аĐģадŅ.",
"compose_form.lock_disclaimer.lock": "ĐļайŅŌ",
"compose_form.placeholder": "ĐĐĩ ĐąĶŠĐģŅŅĐēŅŌŖŅС ĐēĐĩĐģĐĩĐ´Ņ?",
- "compose_form.poll.add_option": "ĐаŅаĐŋ ŌĐžŅ",
"compose_form.poll.duration": "ХаŅаĐģĐŊаĐŧа ĐŧĐĩŅСŅĐŧŅ",
- "compose_form.poll.option_placeholder": "ĐаŅаĐŋ {number}",
- "compose_form.poll.remove_option": "ĐŌąĐģ ĐļаŅаĐŋŅŅ ĶŠŅŅŅ",
"compose_form.poll.switch_to_multiple": "ĐŅŅĐŊĐĩŅĐĩ ĐļаŅаĐŋ ŅĐ°ŌŖĐ´Đ°ĐšŅŅĐŊдаК ŌŅĐģŅ",
"compose_form.poll.switch_to_single": "ĐĸĐĩĐē ĐąŅŅ ĐļаŅаĐŋ ŅĐ°ŌŖĐ´Đ°ĐšŅŅĐŊдаК ŌŅĐģŅ",
"compose_form.publish_form": "Publish",
- "compose_form.sensitive.hide": "ĐĄĐĩСŅĐŧŅаĐģ ŅĐĩŅŅĐŊĐ´Đĩ ĐąĐĩĐģĐŗŅĐģĐĩ",
- "compose_form.sensitive.marked": "ĐĐĩдиа ĐŊĶСŅĐē Đ´ĐĩĐŋ ĐąĐĩĐģĐŗŅĐģĐĩĐŊĐŗĐĩĐŊ",
- "compose_form.sensitive.unmarked": "ĐĐĩдиа ĐŊĶСŅĐē Đ´ĐĩĐŋ ĐąĐĩĐģĐŗŅĐģĐĩĐŊĐąĐĩĐŗĐĩĐŊ",
"compose_form.spoiler.marked": "ĐĶŅŅĐŊ ĐĩŅĐēĐĩŅŅŅĐŧĐĩĐŊ ĐļаŅŅŅŅĐģŌаĐŊ",
"compose_form.spoiler.unmarked": "ĐĶŅŅĐŊ ĐļаŅŅŅŅĐģĐŧаŌаĐŊ",
- "compose_form.spoiler_placeholder": "ĐŅĐēĐĩŅŅŅŅŌŖŅĐˇĐ´Ņ ĐžŅŅĐŊда ĐļаСŅŌŖŅС",
"confirmation_modal.cancel": "ŌаКŅŅĐŋ аĐģŅ",
"confirmations.block.block_and_report": "ĐĐģĐžĐē ĐļĶĐŊĐĩ ШаŌŅĐŧ",
"confirmations.block.confirm": "ĐŌąŌаŅŅаŅ",
@@ -249,7 +242,6 @@
"navigation_bar.compose": "ĐĐ°ŌŖĐ° ĐļаСйа йаŅŅаŅ",
"navigation_bar.discover": "ŅаŅĐģаŅ",
"navigation_bar.domain_blocks": "ĐайŅŌ Đ´ĐžĐŧĐĩĐŊĐ´ĐĩŅ",
- "navigation_bar.edit_profile": "ĐŅĐžŅиĐģŅ ŅŌ¯ĐˇĐĩŅŅ",
"navigation_bar.filters": "ŌŽĐŊŅŅС ŅĶŠĐˇĐ´ĐĩŅ",
"navigation_bar.follow_requests": "ĐаСŅĐģŅŌа ŅŌąŅаĐŊŌаĐŊдаŅ",
"navigation_bar.follows_and_followers": "ĐаСŅĐģŅĐŧĐ´Đ°Ņ ĐļĶĐŊĐĩ ĐžŌŅŅĐŧаĐŊдаŅ",
@@ -310,12 +302,7 @@
"poll_button.add_poll": "ХаŅаĐģĐŊаĐŧа ŌĐžŅŅ",
"poll_button.remove_poll": "ХаŅаĐģĐŊаĐŧаĐŊŅ ĶŠŅŅŅŅ",
"privacy.change": "ŌŌąĐŋиŅĐģŅĐģŅŌŅŅ ŅĐĩŅŅĐĩŅ",
- "privacy.direct.long": "ĐŅаĐģŌаĐŊ адаĐŧдаŅŌа ŌаĐŊа ĐēĶŠŅŅĐŊĐĩŅŅĐŊ ĐļаСйа",
- "privacy.direct.short": "Direct",
- "privacy.private.long": "ĐĸĐĩĐē ĐžŌŅŅĐŧаĐŊдаŅŌа аŅĐŊаĐģŌаĐŊ ĐļаСйа",
- "privacy.private.short": "Followers-only",
"privacy.public.short": "ĐŅŅŌ",
- "privacy.unlisted.short": "ĐĸŅСŅĐŧŅŅС",
"refresh": "ĐĐ°ŌŖĐ°ŅŅŅ",
"regeneration_indicator.label": "ĐŌ¯ĐēŅĐĩŅâĻ",
"regeneration_indicator.sublabel": "ĐĐĩŅĐŗŅĐģŅĐēŅŅ ĐļĐĩĐģŅ ŌŌąŅŅĐģŅда!",
@@ -398,7 +385,6 @@
"upload_form.description": "ĐĶŠŅŅ ŌайŅĐģĐĩŅŅ ĐŊаŅĐ°Ņ Đ°Đ´Đ°ĐŧĐ´Đ°Ņ Ō¯ŅŅĐŊ ŅиĐŋаŅŅĐ°ŌŖŅС",
"upload_form.edit": "ĐĸŌ¯ĐˇĐĩŅŅ",
"upload_form.thumbnail": "ĐĄŅŅĐĩŅŅŅ ĶŠĐˇĐŗĐĩŅŅŅ",
- "upload_form.undo": "͍ŅŅŅŅ",
"upload_form.video_description": "ĐŅŅŅ ĐŊĐĩĐŧĐĩŅĐĩ ĐēĶŠŅŅ ŌайŅĐģĐĩŅŅ ĐŊаŅĐ°Ņ Đ°Đ´Đ°ĐŧдаŅŌа ŅиĐŋаŅŅаĐŧа ĐąĐĩŅŅŌŖŅС",
"upload_modal.analyzing_picture": "ĐĄŅŅĐĩŅŅŅ Đ°ĐŊаĐģиС ĐļаŅаŅâĻ",
"upload_modal.apply": "ŌĐžĐģдаĐŊŅ",
diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json
index 473690070..396aebbdf 100644
--- a/app/javascript/mastodon/locales/kn.json
+++ b/app/javascript/mastodon/locales/kn.json
@@ -91,10 +91,6 @@
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
"onboarding.steps.share_profile.title": "Share your profile",
"privacy.change": "Adjust status privacy",
- "privacy.direct.long": "Post to mentioned users only",
- "privacy.direct.short": "Direct",
- "privacy.private.long": "Post to followers only",
- "privacy.private.short": "Followers-only",
"report.placeholder": "Type or paste additional comments",
"report.submit": "Submit report",
"report.target": "Report {target}",
diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json
index 5746ab67a..eae7f8fae 100644
--- a/app/javascript/mastodon/locales/ko.json
+++ b/app/javascript/mastodon/locales/ko.json
@@ -68,7 +68,7 @@
"account.unblock_domain": "ëëŠė¸ {domain} ė°¨ë¨ í´ė ",
"account.unblock_short": "ė°¨ë¨ í´ė ",
"account.unendorse": "íëĄíė ėļė˛íė§ ė기",
- "account.unfollow": "íëĄė° í´ė ",
+ "account.unfollow": "ė¸íëĄė°",
"account.unmute": "@{name} ëŽ¤í¸ í´ė ",
"account.unmute_notifications_short": "ėëĻŧ ëŽ¤í¸ í´ė ",
"account.unmute_short": "ëŽ¤í¸ í´ė ",
@@ -89,7 +89,6 @@
"announcement.announcement": "ęŗĩė§ėŦí",
"attachments_list.unprocessed": "(ė˛ëĻŦ ė ë¨)",
"audio.hide": "ėëĻŦ ė¨ę¸°ę¸°",
- "autosuggest_hashtag.per_week": "ėŖŧę° {count}í",
"boost_modal.combo": "ë¤ėė {combo}ëĨŧ ëëŦė ė´ ęŗŧė ė ęą´ëë¸ ė ėėĩëë¤",
"bundle_column_error.copy_stacktrace": "ėëŦ ëĻŦíŦí¸ ëŗĩėŦí기",
"bundle_column_error.error.body": "ėė˛í íė´ė§ëĨŧ ë ëë§ í ė ėėĩëë¤. ė íŦė ėŊëė ë˛ęˇ¸ę° ėęą°ë, ë¸ëŧė°ė í¸íėą ëŦ¸ė ėŧ ė ėėĩëë¤.",
@@ -148,20 +147,20 @@
"compose_form.placeholder": "ė§ę¸ ëŦ´ė¨ ėę°ė íęŗ ėëė?",
"compose_form.poll.add_option": "íëĒŠ ėļę°",
"compose_form.poll.duration": "íŦí 기ę°",
- "compose_form.poll.option_placeholder": "{number}ë˛ íëĒŠ",
+ "compose_form.poll.multiple": "ë¤ė¤ ė í",
+ "compose_form.poll.option_placeholder": "{option}ë˛ė§¸ íëĒŠ",
"compose_form.poll.remove_option": "ė´ íëĒŠ ėė ",
+ "compose_form.poll.single": "ë¨ėŧ ė í",
"compose_form.poll.switch_to_multiple": "ë¤ė¤ ė íė´ ę°ëĨí íŦíëĄ ëŗę˛Ŋ",
"compose_form.poll.switch_to_single": "ë¨ėŧ ė í íŦíëĄ ëŗę˛Ŋ",
+ "compose_form.poll.type": "íė",
"compose_form.publish": "ę˛ė",
"compose_form.publish_form": "ė ę˛ėëŦŧ",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "ëŗę˛ŊėŦí ė ėĨ",
- "compose_form.sensitive.hide": "미ëė´ëĨŧ ë¯ŧę°í¨ėŧëĄ ė¤ė í기",
- "compose_form.sensitive.marked": "미ëė´ę° ė´ëėŖŧėëĄ ė¤ė ëė´ ėėĩëë¤",
- "compose_form.sensitive.unmarked": "미ëė´ę° ė´ëėŖŧėëĄ ė¤ė ëė´ ėė§ ėėĩëë¤",
+ "compose_form.reply": "ëĩėĨ",
+ "compose_form.save_changes": "ėė ",
"compose_form.spoiler.marked": "ė´ëėŖŧė ė ęą°",
"compose_form.spoiler.unmarked": "ė´ë ėŖŧė ëŦ¸ęĩŦ ėļę°",
- "compose_form.spoiler_placeholder": "ę˛Ŋęŗ ëŦ¸ęĩŦëĨŧ ėŦ기ė ėėąíė¸ė",
+ "compose_form.spoiler_placeholder": "ė´ë ėŖŧė (ėĩė
)",
"confirmation_modal.cancel": "뎍ė",
"confirmations.block.block_and_report": "ė°¨ë¨íęŗ ė ęŗ í기",
"confirmations.block.confirm": "ė°¨ë¨",
@@ -240,7 +239,7 @@
"empty_column.follow_requests": "ėė§ íëĄė° ėė˛ė´ ėėĩëë¤. ėė˛ė ë°ėė ë ėŦ기ė ëíëŠëë¤.",
"empty_column.followed_tags": "ėė§ ėëŦ´ í´ėí꡸ë íëĄė°íęŗ ėė§ ėėĩëë¤. í´ėí꡸ëĨŧ íëĄė°í늴, ėŦ기ė íėëŠëë¤.",
"empty_column.hashtag": "ė´ í´ėí꡸ë ėė§ ėŦėŠëė§ ėėėĩëë¤.",
- "empty_column.home": "ëšė ė í íėëŧė¸ė ëšė´ėėĩëë¤! ë ë§ė ėŦëė íëĄė°íėŦ ėąėëŗ´ė¸ė. {suggestions}",
+ "empty_column.home": "ëšė ė í íėëŧė¸ė ëšė´ėėĩëë¤! ë ë§ė ėŦëė íëĄė°íėŦ ėąėëŗ´ė¸ė.",
"empty_column.list": "ëĻŦė¤í¸ė ėė§ ėëŦ´ę˛ë ėėĩëë¤. ëĻŦė¤í¸ė ëęĩ°ę°ę° ę˛ėëŦŧė ėŦëĻŦ늴 ėŦ기ė ëíëŠëë¤.",
"empty_column.lists": "ėė§ ëĻŦė¤í¸ę° ėėĩëë¤. ëĻŦė¤í¸ëĨŧ ë§ë¤ëŠ´ ėŦ기ė ëíëŠëë¤.",
"empty_column.mutes": "ėė§ ėëŦ´ë 뎤í¸íė§ ėėėĩëë¤.",
@@ -408,7 +407,6 @@
"navigation_bar.direct": "ę°ė¸ė ė¸ ëŠė
",
"navigation_bar.discover": "ë°ę˛Ŧí기",
"navigation_bar.domain_blocks": "ė°¨ë¨í ëëŠė¸",
- "navigation_bar.edit_profile": "íëĄí ėė ",
"navigation_bar.explore": "ëëŦëŗ´ę¸°",
"navigation_bar.favourites": "ėĸėė",
"navigation_bar.filters": "뎤í¸í ë¨ė´",
@@ -526,14 +524,15 @@
"poll_button.add_poll": "ė¤ëŦ¸ ėļę°",
"poll_button.remove_poll": "ė¤ëŦ¸ ė ęą°",
"privacy.change": "ę˛ėëŦŧė íëŧė´ë˛ė ė¤ė ė ëŗę˛Ŋ",
- "privacy.direct.long": "ė¸ę¸ë ėŦėŠėë§ ëŗŧ ė ėė",
- "privacy.direct.short": "ëŠė
í ėŦëë¤ë§",
- "privacy.private.long": "íëĄėėę˛ë§ ęŗĩę°",
- "privacy.private.short": "íëĄė ė ėŠ",
- "privacy.public.long": "ëǍëę° ëŗŧ ė ėė",
+ "privacy.direct.long": "ė´ ę˛ėëŦŧėė ė¸ę¸ë ëǍë",
+ "privacy.direct.short": "íšė ė¸ëŦŧ",
+ "privacy.private.long": "ë´ íëĄėë¤ėę˛ë§",
+ "privacy.private.short": "íëĄė",
+ "privacy.public.long": "ë§ė¤í ë ë´ė¸ ëǍë",
"privacy.public.short": "ęŗĩę°",
- "privacy.unlisted.long": "ëǍëę° ëŗŧ ė ėė§ë§, ë°ę˛Ŧí기 기ëĨėėë ė ė¸ë¨",
- "privacy.unlisted.short": "미ëąėŦ",
+ "privacy.unlisted.additional": "ęŗĩę°ė ëę°ė§ë§ ę˛ėëŦŧė´ ëŧė´ë¸ íŧëë í´ėí꡸, ë°ę˛Ŧí기, (ęŗė ė¤ė ėė íėŠíëëŧë) ë§ė¤í ë ę˛ėėė ė ė¸ëŠëë¤.",
+ "privacy.unlisted.long": "ë ė ė ėęŗ ëĻŦėĻ íĄíë ",
+ "privacy.unlisted.short": "ėĄ°ėŠí ęŗĩę°",
"privacy_policy.last_updated": "{date}ė ë§ė§ë§ėŧëĄ ė
ë°ė´í¸ë¨",
"privacy_policy.title": "ę°ė¸ė ëŗ´ė˛ëĻŦë°Šėš¨",
"recommended": "ėļė˛í¨",
@@ -551,7 +550,9 @@
"relative_time.minutes": "{number}ëļ ė ",
"relative_time.seconds": "{number}ė´ ė ",
"relative_time.today": "ė¤ë",
+ "reply_indicator.attachments": "{count, plural, one {#} other {#}}ę°ė 랍ëļíėŧ",
"reply_indicator.cancel": "뎍ė",
+ "reply_indicator.poll": "íŦí",
"report.block": "ė°¨ë¨",
"report.block_explanation": "ëšė ė í´ëš ęŗė ė ę˛ėëŦŧė ëŗ´ė§ ėę˛ ëŠëë¤. í´ëš ęŗė ė ëšė ė ę˛ėëŦŧė ëŗ´ęą°ë íëĄė° í ė ėėĩëë¤. í´ëš ęŗė ė ėė ė´ ė°¨ë¨ëėë¤ë ėŦė¤ė ė ė ėėĩëë¤.",
"report.categories.legal": "ë˛ė ė¸ ëŦ¸ė ",
@@ -659,7 +660,7 @@
"status.media_hidden": "미ëė´ ė¨ę˛¨ė§",
"status.mention": "@{name} ëėę˛ ëŠė
",
"status.more": "ėė¸í",
- "status.mute": "@{name} ëė 뎤í¸í기",
+ "status.mute": "@{name} 뎤í¸",
"status.mute_conversation": "ė´ ëíëĨŧ 뎤í¸",
"status.open": "ėė¸ ė ëŗ´ íė",
"status.pin": "ęŗ ė ",
@@ -674,7 +675,7 @@
"status.replied_to": "{name} ëėę˛",
"status.reply": "ëĩėĨ",
"status.replyAll": "ę¸íëė ëĩėĨ",
- "status.report": "{name} ëė ė ęŗ í기",
+ "status.report": "@{name} ė ęŗ í기",
"status.sensitive_warning": "ë¯ŧę°í ë´ėŠ",
"status.share": "ęŗĩė ",
"status.show_filter_reason": "꡸ëĨ íėí기",
@@ -683,7 +684,7 @@
"status.show_more": "íŧėšę¸°",
"status.show_more_all": "ëǍë íŧėšę¸°",
"status.show_original": "ėëŗ¸ ëŗ´ę¸°",
- "status.title.with_attachments": "{user} ëė´ {attachmentCount, plural, one {랍ëļ} other {{attachmentCount}ę° ė˛¨ëļ}}íėŦ ę˛ė",
+ "status.title.with_attachments": "{user} ëė´ {attachmentCount, plural, one {랍ëļíėŧ} other {{attachmentCount}ę°ė 랍ëļíėŧ}}ęŗŧ í¨ęģ ę˛ėí¨",
"status.translate": "ë˛ė",
"status.translated_from_with": "{provider}ė ėí´ {lang}ėė ë˛ėë¨",
"status.uncached_media_warning": "ë§ëĻŦëŗ´ę¸° íėŠëė§ ėė",
@@ -715,10 +716,8 @@
"upload_error.poll": "íėŧ ė
ëĄëë ė¤ëŦ¸ęŗŧ í¨ęģ ė¸ ė ėėĩëë¤.",
"upload_form.audio_description": "ė˛ę° ėĨė ė¸ė ėí ė¤ëĒ
",
"upload_form.description": "ėę°ėĨė ė¸ė ėí ė¤ëĒ
",
- "upload_form.description_missing": "ė¤ëĒ
ė´ ėļę°ëė§ ėė",
"upload_form.edit": "ėė ",
"upload_form.thumbnail": "ė¸ë¤ėŧ ëŗę˛Ŋ",
- "upload_form.undo": "ėė ",
"upload_form.video_description": "ė˛ę°, ėę° ėĨė ė¸ė ėí ė¤ëĒ
",
"upload_modal.analyzing_picture": "ėŦė§ ëļė ė¤âĻ",
"upload_modal.apply": "ė ėŠ",
diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json
index 7d8603cae..4a0fd671d 100644
--- a/app/javascript/mastodon/locales/ku.json
+++ b/app/javascript/mastodon/locales/ku.json
@@ -77,7 +77,6 @@
"announcement.announcement": "DaxuyanÃŽ",
"attachments_list.unprocessed": "(bÃĒpÃĒvajo)",
"audio.hide": "DengÃĒ veÅÃĒre",
- "autosuggest_hashtag.per_week": "Her hefte {count}",
"boost_modal.combo": "Ji bo derbas bÃŽ carekÃŽ din de pÃĒlÃĒ {combo} bike",
"bundle_column_error.copy_stacktrace": "Rapora çewtiyÃĒ jÃĒ bigire",
"bundle_column_error.error.body": "RÃģpela xwestÃŽ nehate pÃĒÅkÃĒÅkirin. Dibe ku ew ji ber ÅaÅetiyeke koda me, an jÃŽ pirsgirÃĒkeke lihevhatina gerokÃĒ be.",
@@ -129,22 +128,12 @@
"compose_form.lock_disclaimer": "AjimÃĒrÃĒ te ne {locked}. Herkes dikare te biÅopÃŽne da ku ÅandiyÃĒn te yÃĒn tenÃĒ ji ÅopÃŽnerÃĒn re tÃĒne xuyakirin bibÃŽnin.",
"compose_form.lock_disclaimer.lock": "girtÃŽ ye",
"compose_form.placeholder": "Ãi di hiÅÃĒ te derbas dibe?",
- "compose_form.poll.add_option": "HilbijartinekÃŽ tevlÃŽ bike",
"compose_form.poll.duration": "Dema rapirsÃŽ yÃĒ",
- "compose_form.poll.option_placeholder": "{number} HilbijÃĒre",
- "compose_form.poll.remove_option": "VÃĒ hilbijarÃĒ rake",
"compose_form.poll.switch_to_multiple": "RapirsÃŽ yÃĒ biguherÃŽnin da ku destÃģr bidin vebijarkÃĒn pirjimar",
"compose_form.poll.switch_to_single": "RapirsÃŽyÃĒ biguherÃŽne da ku mafÃĒ bidÃŽ tenÃĒ vebijÃĒrkek",
- "compose_form.publish": "BiweÅÃŽne",
"compose_form.publish_form": "BiweÅÃŽne",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Guhertinan tomar bike",
- "compose_form.sensitive.hide": "{count, plural, one {Medya wekÃŽ hestiyar nÃŽÅan bide} other {Medya wekÃŽ hestiyar nÃŽÅan bide}}",
- "compose_form.sensitive.marked": "{count, plural, one {Medya wekÃŽ hestiyar hate nÃŽÅan} other {Medya wekÃŽ hestiyar nÃŽÅan}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {Medya wekÃŽ hestiyar nehatiye nÃŽÅan} other {Medya wekÃŽ hestiyar nehatiye nÃŽÅan}}",
"compose_form.spoiler.marked": "HiÅyariya naverokÃĒ rake",
"compose_form.spoiler.unmarked": "HiÅyariya naverokÃĒ tevlÃŽ bike",
- "compose_form.spoiler_placeholder": "Li vir hiÅyariya xwe binivÃŽse",
"confirmation_modal.cancel": "Dev jÃĒ berde",
"confirmations.block.block_and_report": "Asteng bike & ragihÃŽne",
"confirmations.block.confirm": "Asteng bike",
@@ -351,7 +340,6 @@
"navigation_bar.direct": "QalkirinÃĒn taybet",
"navigation_bar.discover": "VekolÃĒ",
"navigation_bar.domain_blocks": "NavperÃĒn astengkirÃŽ",
- "navigation_bar.edit_profile": "ProfÃŽlÃĒ serrast bike",
"navigation_bar.explore": "Vekole",
"navigation_bar.filters": "PeyvÃĒn bÃĒdengkirÃŽ",
"navigation_bar.follow_requests": "DaxwazÃĒn ÅopandinÃĒ",
@@ -437,14 +425,7 @@
"poll_button.add_poll": "RapirsÃŽyek zÃĒde bike",
"poll_button.remove_poll": "RapirsÃŽ yÃĒ rake",
"privacy.change": "NepÃĒnÃŽtiya Åandiyan biguherÃŽne",
- "privacy.direct.long": "TenÃĒ ji bo bikarhÃĒnerÃĒn qalkirÃŽ tÃĒ dÃŽtin",
- "privacy.direct.short": "TenÃĒ kesÃĒn qalkirÃŽ",
- "privacy.private.long": "TenÃĒ bo ÅopÃŽneran xuyabar e",
- "privacy.private.short": "TenÃĒ ÅopÃŽneran",
- "privacy.public.long": "Ji bo hemÃģyan xuyabar e",
"privacy.public.short": "GelemperÃŽ",
- "privacy.unlisted.long": "Ji bo hemÃģyan xuyabar e, lÃĒ ji taybetmendiyÃĒn vekolÃŽnÃĒ veqetiya ye",
- "privacy.unlisted.short": "NelÃŽstekirÃŽ",
"privacy_policy.last_updated": "Rojanekirina dawÃŽ {date}",
"privacy_policy.title": "PolitÃŽka taybetiyÃĒ",
"refresh": "NÃģ bike",
@@ -608,10 +589,8 @@
"upload_error.poll": "Di rapirsÃŽyan de mafÃĒ barkirina pelan nayÃĒ dayÃŽn.",
"upload_form.audio_description": "Ji bona kesÃĒn kÃĒm dibihÃŽsin re pÃĒnase bike",
"upload_form.description": "Ji bona astengdarÃĒn dÃŽtinÃĒ re vebÃĒje",
- "upload_form.description_missing": "Ti danasÃŽn nehatiye tevlÃŽkirin",
"upload_form.edit": "Serrast bike",
"upload_form.thumbnail": "WÃĒneyÃĒ biçÃģk biguherÃŽne",
- "upload_form.undo": "JÃĒ bibe",
"upload_form.video_description": "Ji bo kesÃĒn kerr Ãģ lalan pÃĒnase bike",
"upload_modal.analyzing_picture": "WÃĒne tÃĒ analÃŽzkirinâĻ",
"upload_modal.apply": "BisepÃŽne",
diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json
index 8f384fe12..e42f50aef 100644
--- a/app/javascript/mastodon/locales/kw.json
+++ b/app/javascript/mastodon/locales/kw.json
@@ -45,7 +45,6 @@
"alert.unexpected.message": "Gwall anwaytyadow re dharva.",
"alert.unexpected.title": "Oups!",
"announcement.announcement": "Deklaryans",
- "autosuggest_hashtag.per_week": "{count} an seythen",
"boost_modal.combo": "Hwi a yll gwaska {combo} dhe woheles hemma an nessa tro",
"bundle_column_error.retry": "Assayewgh arta",
"bundle_modal_error.close": "Degea",
@@ -80,20 +79,12 @@
"compose_form.lock_disclaimer": "Nyns yw agas akont {locked}. Piwpynag a yll agas holya dhe weles agas postow holyoryon-hepken.",
"compose_form.lock_disclaimer.lock": "Alhwedhys",
"compose_form.placeholder": "Pyth eus yn agas brys?",
- "compose_form.poll.add_option": "Keworra dewis",
"compose_form.poll.duration": "Duryans sondyans",
- "compose_form.poll.option_placeholder": "Dewis {number}",
- "compose_form.poll.remove_option": "Dilea'n dewis ma",
"compose_form.poll.switch_to_multiple": "Chanjya sondyans dhe asa lies dewis",
"compose_form.poll.switch_to_single": "Chanjya sondyans dhe asa unn dewis hepken",
"compose_form.publish_form": "Publish",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.sensitive.hide": "{count, plural, one {Merkya myski vel tender} other {Merkya myski vel tender}}",
- "compose_form.sensitive.marked": "{count, plural, one {Myski merkys vel tender} other {Myski merkys vel tender}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {Nyns yw myski merkys vel tender} other {Nyns yw myski merkys vel tender}}",
"compose_form.spoiler.marked": "Dilea gwarnyans dalgh",
"compose_form.spoiler.unmarked": "Keworra gwarnyans dalgh",
- "compose_form.spoiler_placeholder": "Skrifewgh agas gwarnyans omma",
"confirmation_modal.cancel": "Hedhi",
"confirmations.block.block_and_report": "Lettya & Reportya",
"confirmations.block.confirm": "Lettya",
@@ -244,7 +235,6 @@
"navigation_bar.compose": "Komposya post nowydh",
"navigation_bar.discover": "Diskudha",
"navigation_bar.domain_blocks": "Gorfarthow lettys",
- "navigation_bar.edit_profile": "Golegi profil",
"navigation_bar.filters": "Geryow tawhes",
"navigation_bar.follow_requests": "Govynnow holya",
"navigation_bar.follows_and_followers": "Holyansow ha holyoryon",
@@ -316,12 +306,7 @@
"poll_button.add_poll": "Keworra sondyans",
"poll_button.remove_poll": "Dilea sondyans",
"privacy.change": "Chanjya privetter an post",
- "privacy.direct.long": "Gweladow dhe'n dhevnydhyoryon menegys hepken",
- "privacy.direct.short": "Direct",
- "privacy.private.long": "Gweladow dhe holyoryon hepken",
- "privacy.private.short": "Followers-only",
"privacy.public.short": "Poblek",
- "privacy.unlisted.short": "Anrelys",
"refresh": "Daskarga",
"regeneration_indicator.label": "Ow kargaâĻ",
"regeneration_indicator.sublabel": "Yma agas lin dre ow pos pareusys!",
@@ -407,7 +392,6 @@
"upload_form.description": "Deskrifewgh rag tus dhallek",
"upload_form.edit": "Golegi",
"upload_form.thumbnail": "Chanjya avenik",
- "upload_form.undo": "Dilea",
"upload_form.video_description": "Deskrifa rag tus vodharek po dallek",
"upload_modal.analyzing_picture": "Ow tytratya skeusenâĻ",
"upload_modal.apply": "Gweytha",
diff --git a/app/javascript/mastodon/locales/la.json b/app/javascript/mastodon/locales/la.json
index 3e5747ba8..698b3da4c 100644
--- a/app/javascript/mastodon/locales/la.json
+++ b/app/javascript/mastodon/locales/la.json
@@ -34,9 +34,7 @@
"compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.",
"compose_form.lock_disclaimer.lock": "clausum",
"compose_form.placeholder": "What is on your mind?",
- "compose_form.publish": "Barrire",
"compose_form.publish_form": "Barrire",
- "compose_form.publish_loud": "{publish}!",
"compose_form.spoiler.marked": "Text is hidden behind warning",
"compose_form.spoiler.unmarked": "Text is not hidden",
"confirmations.block.confirm": "Impedire",
@@ -116,9 +114,6 @@
"poll_button.add_poll": "Addere electionem",
"poll_button.remove_poll": "Auferre electionem",
"privacy.change": "Adjust status privacy",
- "privacy.direct.short": "Direct",
- "privacy.private.short": "Followers-only",
- "privacy.public.long": "Coram publico",
"privacy.public.short": "Coram publico",
"relative_time.full.just_now": "nunc",
"relative_time.just_now": "nunc",
@@ -153,7 +148,6 @@
"trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {# days}}",
"upload_form.audio_description": "Describe for people who are hard of hearing",
"upload_form.edit": "Recolere",
- "upload_form.undo": "Oblitterare",
"upload_progress.label": "UploadingâĻ",
"video.mute": "Confutare soni"
}
diff --git a/app/javascript/mastodon/locales/lad.json b/app/javascript/mastodon/locales/lad.json
index c54ed2a7e..ba99f5cd3 100644
--- a/app/javascript/mastodon/locales/lad.json
+++ b/app/javascript/mastodon/locales/lad.json
@@ -89,7 +89,6 @@
"announcement.announcement": "Pregon",
"attachments_list.unprocessed": "(no prosesado)",
"audio.hide": "Eskonder audio",
- "autosuggest_hashtag.per_week": "{count} por semana",
"boost_modal.combo": "Puedes klikar {combo} para ometer esto la proksima vez",
"bundle_column_error.copy_stacktrace": "Kopia el raporto de yerro",
"bundle_column_error.error.body": "La pajina solisitada no pudo ser renderada. Podria ser por un yerro en muestro kodiche o un problem de kompatibilita kon el navigador.",
@@ -146,22 +145,12 @@
"compose_form.lock_disclaimer": "Tu kuento no esta {locked}. Todos pueden segirte para ver tus publikasyones solo para suivantes.",
"compose_form.lock_disclaimer.lock": "serrado",
"compose_form.placeholder": "Ke haber?",
- "compose_form.poll.add_option": "Adjusta opsyon",
"compose_form.poll.duration": "Durasion de anketa",
- "compose_form.poll.option_placeholder": "Opsyon {number}",
- "compose_form.poll.remove_option": "Kita esta opsyon",
"compose_form.poll.switch_to_multiple": "Trokar anketa para permeter a eskojer mas ke una opsyon",
"compose_form.poll.switch_to_single": "Trokar anketa para permeter a eskojer solo una opsyon",
- "compose_form.publish": "Publika",
"compose_form.publish_form": "Mueva publikasyon",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Guadra trokamientos",
- "compose_form.sensitive.hide": "{count, plural, one {Marka material komo sensivle} other {Marka material komo sensivle}}",
- "compose_form.sensitive.marked": "{count, plural, one {Material markado komo sensivle} other {Material markado komo sensivle}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {Material no markado komo sensivle} other {Material no markado komo sensivle}}",
"compose_form.spoiler.marked": "Kita avertensya de kontenido",
"compose_form.spoiler.unmarked": "Adjusta avertensya de kontenido",
- "compose_form.spoiler_placeholder": "Eskrive tu avertensya aki",
"confirmation_modal.cancel": "Anula",
"confirmations.block.block_and_report": "Bloka i raporta",
"confirmations.block.confirm": "Bloka",
@@ -328,6 +317,7 @@
"interaction_modal.on_another_server": "En otro sirvidor",
"interaction_modal.on_this_server": "En este sirvidor",
"interaction_modal.sign_in": "No estas konektado kon este sirvidor. Ande tyenes tu kuento?",
+ "interaction_modal.sign_in_hint": "Konsejo: Akel es el sitio adonde te enrejistrates. Si no lo akodras, bushka el mesaj de posta elektronika de bienvenida en tu kuti de arivo. Tambien puedes eskrivir tu nombre de utilizador kompleto (por enshemplo @Mastodon@mastodon.social)",
"interaction_modal.title.favourite": "Endika ke te plaze publikasyon de {name}",
"interaction_modal.title.follow": "Sige a {name}",
"interaction_modal.title.reblog": "Repartaja publikasyon de {name}",
@@ -407,7 +397,6 @@
"navigation_bar.direct": "Enmentaduras privadas",
"navigation_bar.discover": "Diskuvre",
"navigation_bar.domain_blocks": "Domenos blokados",
- "navigation_bar.edit_profile": "Edita profil",
"navigation_bar.explore": "Eksplorar",
"navigation_bar.favourites": "Te plazen",
"navigation_bar.filters": "Biervos silensiados",
@@ -478,16 +467,19 @@
"onboarding.actions.go_to_explore": "Va a los trendes",
"onboarding.actions.go_to_home": "Va a tu linya prinsipala",
"onboarding.compose.template": "Ke haber, #Mastodon?",
+ "onboarding.follows.empty": "Malorozamente, no se pueden amostrar rezultados en este momento. Puedes aprovar uzar la bushkeda o navigar por la pajina de eksplorasyon para topar personas a las que segir, o aprovarlo de muevo mas tadre.",
"onboarding.follows.title": "Personaliza tu linya prinsipala",
"onboarding.profile.discoverable": "Faz ke mi profil apareska en bushkedas",
"onboarding.profile.display_name": "Nombre amostrado",
"onboarding.profile.display_name_hint": "Tu nombre para amostrar.",
+ "onboarding.profile.lead": "Siempre puedes kompletar esto mas tadre en las preferensyas, ande tambien ay mas opsyones de personalizasyon.",
"onboarding.profile.note": "Tu deskripsyon",
"onboarding.profile.note_hint": "Puedes @enmentar a otra djente o #etiketasâĻ",
"onboarding.profile.save_and_continue": "Guadra i kontinua",
"onboarding.profile.title": "Konfigurasyon de profil",
"onboarding.profile.upload_avatar": "Karga imaje de profil",
"onboarding.profile.upload_header": "Karga kavesera de profil",
+ "onboarding.share.lead": "Informe a otros komo toparte en Mastodon!",
"onboarding.share.message": "Soy {username} en #Mastodon! Segidme en {url}",
"onboarding.share.next_steps": "Posivles sigientes pasos:",
"onboarding.share.title": "Partaja tu profil",
@@ -495,9 +487,14 @@
"onboarding.start.title": "Lo logrates!",
"onboarding.steps.follow_people.body": "El buto de Mastodon es segir a djente interesante.",
"onboarding.steps.follow_people.title": "Personaliza tu linya prinsipala",
+ "onboarding.steps.publish_status.body": "Puedes introdusirte al mundo con teksto, fotos, videos o anketas {emoji}",
"onboarding.steps.publish_status.title": "Eskrive tu primera publikasyon",
+ "onboarding.steps.setup_profile.body": "Kompleta tu profil para aumentar tus enteraksyones.",
"onboarding.steps.setup_profile.title": "Personaliza tu profil",
+ "onboarding.steps.share_profile.body": "Informe a tus amigos komo toparte en Mastodon",
"onboarding.steps.share_profile.title": "Partaja tu profil de Mastodon",
+ "password_confirmation.exceeds_maxlength": "La konfirmasyon de kod es demaziado lunga",
+ "password_confirmation.mismatching": "Los dos kodes son desferentes",
"picture_in_picture.restore": "Restora",
"poll.closed": "Serrado",
"poll.refresh": "Arefreska",
@@ -510,14 +507,7 @@
"poll_button.add_poll": "Adjusta anketa",
"poll_button.remove_poll": "Kita anketa",
"privacy.change": "Troka privasita de publikasyon",
- "privacy.direct.long": "Vizivle solo para utilizadores enmentados",
- "privacy.direct.short": "Solo personas enmentadas",
- "privacy.private.long": "Vizivle solo para suivantes",
- "privacy.private.short": "Solo suivantes",
- "privacy.public.long": "Vizivle para todos",
"privacy.public.short": "Publiko",
- "privacy.unlisted.long": "Vizivle para todos, ama eskluido de las fonksiones de diskuvrimyento",
- "privacy.unlisted.short": "No listado",
"privacy_policy.last_updated": "Ultima aktualizasyon: {date}",
"privacy_policy.title": "Politika de privasita",
"recommended": "Rekomendado",
@@ -699,10 +689,8 @@
"upload_error.poll": "No se permite kargar dosyas kon anketas.",
"upload_form.audio_description": "Deskrive para personas sodras o kon problemes auditivos",
"upload_form.description": "Deskrive para personas siegas o kon problemes vizuales",
- "upload_form.description_missing": "No adjustates deskripsion",
"upload_form.edit": "Edita",
"upload_form.thumbnail": "Troka minyatura",
- "upload_form.undo": "Efasa",
"upload_form.video_description": "Deskrive para personas sodras, kon problemes auditivos, siegas o kon problemes vizuales",
"upload_modal.analyzing_picture": "Analizando imajeâĻ",
"upload_modal.apply": "Aplika",
diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json
index 82f1669b1..14fa09e97 100644
--- a/app/javascript/mastodon/locales/lt.json
+++ b/app/javascript/mastodon/locales/lt.json
@@ -2,14 +2,14 @@
"about.blocks": "PriÅžiÅĢrimi serveriai",
"about.contact": "Kontaktuoti:",
"about.disclaimer": "Mastodon â nemokama atvirojo kodo programa ir Mastodon gGmbH prekÄs Åženklas.",
- "about.domain_blocks.no_reason_available": "PrieÅžastis neÅžinoma",
+ "about.domain_blocks.no_reason_available": "PrieÅžastis nepateikta",
"about.domain_blocks.preamble": "Mastodon paprastai leidÅžia perÅžiÅĢrÄti turinį ir bendrauti su naudotojais iÅĄ bet kurio kito fediverse esanÄio serverio. Å ios yra iÅĄimtys, kurios buvo padarytos ÅĄiame konkreÄiame serveryje.",
"about.domain_blocks.silenced.explanation": "Paprastai nematysi profiliÅŗ ir turinio iÅĄ ÅĄio serverio, nebent jį aiÅĄkiai ieÅĄkosi arba pasirinksi jį sekdamas (-a).",
"about.domain_blocks.silenced.title": "Ribota",
"about.domain_blocks.suspended.explanation": "Jokie duomenys iÅĄ ÅĄio serverio nebus apdorojami, saugomi ar keiÄiami, todÄl bet kokia sÄ
veika ar bendravimas su ÅĄio serverio naudotojais bus neįmanomas.",
"about.domain_blocks.suspended.title": "UÅždrausta",
"about.not_available": "Å i informacija nebuvo pateikta ÅĄiame serveryje.",
- "about.powered_by": "Decentralizuota socialinÄ Åžiniasklaida, kuriÄ
valdo {mastodon}",
+ "about.powered_by": "Decentralizuota socialinÄ medija, kuriÄ
valdo {mastodon}",
"about.rules": "Serverio taisyklÄs",
"account.account_note_header": "Pastaba",
"account.add_or_remove_from_list": "PridÄti arba iÅĄtrinti iÅĄ sÄ
raÅĄÅŗ",
@@ -27,24 +27,24 @@
"account.domain_blocked": "UÅžblokuotas domenas",
"account.edit_profile": "Redaguoti profilį",
"account.enable_notifications": "PraneÅĄti man, kai @{name} paskelbia",
- "account.endorse": "SavybÄ profilyje",
+ "account.endorse": "Rekomenduoti profilyje",
"account.featured_tags.last_status_at": "Paskutinį kartÄ
paskelbta {date}",
"account.featured_tags.last_status_never": "NÄra įraÅĄÅŗ",
- "account.featured_tags.title": "{name} rekomenduojamos grotaÅžymÄs",
+ "account.featured_tags.title": "{name} rekomenduojami saitaÅžodÅžiai",
"account.follow": "Sekti",
"account.follow_back": "Sekti atgal",
"account.followers": "SekÄjai",
"account.followers.empty": "Å io naudotojo dar niekas neseka.",
- "account.followers_counter": "{count, plural, one {{counter} sekÄjas (-a)} few {{counter} sekÄjai} many {{counter} sekÄjo} other {{counter} sekÄjÅŗ}}",
- "account.following": "Seka",
- "account.following_counter": "{count, plural, one {{counter} Seka} few {{counter} Seka} many {{counter} Seka} other {{counter} Seka}}",
+ "account.followers_counter": "{count, plural, one {{counter} sekÄjas} few {{counter} sekÄjai} many {{counter} sekÄjo} other {{counter} sekÄjÅŗ}}",
+ "account.following": "Sekama",
+ "account.following_counter": "{count, plural, one {{counter} sekimas} few {{counter} sekimai} many {{counter} sekimo} other {{counter} sekimÅŗ}}",
"account.follows.empty": "Å is (-i) naudotojas (-a) dar nieko neseka.",
"account.go_to_profile": "Eiti į profilį",
"account.hide_reblogs": "SlÄpti pakÄlimus iÅĄ @{name}",
"account.in_memoriam": "Atminimui.",
"account.joined_short": "PrisijungÄ",
"account.languages": "Keisti prenumeruojamas kalbas",
- "account.link_verified_on": "Å ios nuorodos nuosavybÄ buvo patikrinta {date}",
+ "account.link_verified_on": "Å ios nuorodos nuosavybÄ buvo patikrinta {date}.",
"account.locked_info": "Å ios paskyros privatumo bÅĢsena nustatyta kaip uÅžrakinta. Savininkas (-Ä) rankiniu bÅĢdu perÅžiÅĢri, kas gali sekti.",
"account.media": "Medija",
"account.mention": "PaminÄti @{name}",
@@ -58,8 +58,8 @@
"account.open_original_page": "Atidaryti originalinį puslapį",
"account.posts": "ÄŽraÅĄai",
"account.posts_with_replies": "ÄŽraÅĄai ir atsakymai",
- "account.report": "PraneÅĄti @{name}",
- "account.requested": "Laukiama patvirtinimo. Spausk, kad atÅĄaukti sekimo uÅžklausÄ
",
+ "account.report": "PraneÅĄti apie @{name}",
+ "account.requested": "Laukiama patvirtinimo. SpustelÄk, jei nori atÅĄaukti sekimo praÅĄymÄ
.",
"account.requested_follow": "{name} papraÅĄÄ tave sekti",
"account.share": "Bendrinti @{name} profilį",
"account.show_reblogs": "Rodyti pakÄlimus iÅĄ @{name}",
@@ -69,28 +69,27 @@
"account.unblock_short": "Atblokuoti",
"account.unendorse": "Nerodyti profilyje",
"account.unfollow": "Nebesekti",
- "account.unmute": "Atitildyti @{name}",
- "account.unmute_notifications_short": "Atitildyti praneÅĄimus",
- "account.unmute_short": "Atitildyti",
- "account_note.placeholder": "Spausk norÄdamas (-a) pridÄti pastabÄ
",
- "admin.dashboard.daily_retention": "VartotojÅŗ iÅĄbuvimo rodiklis pagal dienÄ
po registracijos",
- "admin.dashboard.monthly_retention": "NaudotojÅŗ iÅĄlaikymo rodiklis pagal mÄnesį po registracijos",
+ "account.unmute": "AtÅĄaukti nutildymÄ
@{name}",
+ "account.unmute_notifications_short": "AtÅĄaukti nutildymÄ
praneÅĄimams",
+ "account.unmute_short": "AtÅĄaukti nutildymÄ
",
+ "account_note.placeholder": "SpustelÄk norÄdamas (-a) pridÄti pastabÄ
",
+ "admin.dashboard.daily_retention": "NaudotojÅŗ pasilikimo rodiklis pagal dienÄ
po registracijos",
+ "admin.dashboard.monthly_retention": "NaudotojÅŗ pasilikimo rodiklis pagal mÄnesį po registracijos",
"admin.dashboard.retention.average": "Vidurkis",
- "admin.dashboard.retention.cohort": "Registravimo mÄnuo",
+ "admin.dashboard.retention.cohort": "Registracijos mÄnuo",
"admin.dashboard.retention.cohort_size": "Nauji naudotojai",
"admin.impact_report.instance_accounts": "PaskyrÅŗ profiliai, kuriuos tai iÅĄtrintÅŗ",
"admin.impact_report.instance_followers": "SekÄjai, kuriuos prarastÅŗ mÅĢsÅŗ naudotojai",
"admin.impact_report.instance_follows": "SekÄjai, kuriuos prarastÅŗ jÅŗ naudotojai",
"admin.impact_report.title": "Poveikio apibendrinimas",
"alert.rate_limited.message": "Pabandyk vÄliau po {retry_time, time, medium}.",
- "alert.rate_limited.title": "Spartos ribojimas",
+ "alert.rate_limited.title": "Sparta ribota",
"alert.unexpected.message": "ÄŽvyko netikÄta klaida.",
"alert.unexpected.title": "Ups!",
"announcement.announcement": "Skelbimas",
"attachments_list.unprocessed": "(neapdorotas)",
"audio.hide": "SlÄpti garsÄ
",
- "autosuggest_hashtag.per_week": "{count} per savaitÄ",
- "boost_modal.combo": "Gali spausti {combo}, kad praleisti kitÄ
kartÄ
",
+ "boost_modal.combo": "Gali paspausti {combo}, kad praleisti kitÄ
kartÄ
",
"bundle_column_error.copy_stacktrace": "Kopijuoti klaidos ataskaitÄ
",
"bundle_column_error.error.body": "UÅžklausos puslapio nepavyko atvaizduoti. Tai gali bÅĢti dÄl mÅĢsÅŗ kodo klaidos arba narÅĄyklÄs suderinamumo problemos.",
"bundle_column_error.error.title": "O, ne!",
@@ -104,10 +103,10 @@
"bundle_modal_error.message": "Kraunant ÅĄÄ¯ komponentÄ
kaÅžkas nepavyko.",
"bundle_modal_error.retry": "Bandyti dar kartÄ
",
"closed_registrations.other_server_instructions": "Kadangi Mastodon yra decentralizuotas, gali susikurti paskyrÄ
kitame serveryje ir vis tiek bendrauti su ÅĄiuo serveriu.",
- "closed_registrations_modal.description": "Sukurti paskyrÄ
{domain} ÅĄiuo metu neįmanoma, taÄiau nepamirÅĄk, kad norint naudotis Mastodon nebÅĢtina turÄti paskyrÄ
{domain}.",
+ "closed_registrations_modal.description": "Sukurti paskyrÄ
{domain} ÅĄiuo metu neįmanoma, taÄiau nepamirÅĄk, kad norint naudotis Mastodon nebÅĢtina turÄti paskyrÄ
domene {domain}.",
"closed_registrations_modal.find_another_server": "Rasti kitÄ
serverį",
"closed_registrations_modal.preamble": "Mastodon yra decentralizuotas, todÄl nesvarbu, kur susikursi paskyrÄ
, galÄsi sekti ir bendrauti su bet kuriuo ÅĄiame serveryje esanÄiu asmeniu. Jį gali net savarankiÅĄkai talpinti!",
- "closed_registrations_modal.title": "UŞsiregistravimas į Mastodon",
+ "closed_registrations_modal.title": "UÅžsiregistruoti Mastodon",
"column.about": "Apie",
"column.blocks": "UÅžblokuoti naudotojai",
"column.bookmarks": "ÅŊymÄs",
@@ -116,15 +115,15 @@
"column.directory": "NarÅĄyti profilius",
"column.domain_blocks": "UÅžblokuoti domenai",
"column.favourites": "MÄgstamiausi",
- "column.firehose": "Tiesioginiai padavimai",
- "column.follow_requests": "Sekti praÅĄymus",
+ "column.firehose": "Tiesioginiai srautai",
+ "column.follow_requests": "Sekimo praÅĄymus",
"column.home": "Pagrindinis",
"column.lists": "SÄ
raÅĄai",
"column.mutes": "Nutildyti naudotojai",
"column.notifications": "PraneÅĄimai",
"column.pins": "Prisegti įraÅĄai",
"column.public": "FederacinÄ laiko skalÄ",
- "column_back_button.label": "Atgal",
+ "column_back_button.label": "GrįŞti",
"column_header.hide_settings": "SlÄpti nustatymus",
"column_header.moveLeft_settings": "Judinti stulpelį į kairÄ",
"column_header.moveRight_settings": "Judinti stulpelį į deÅĄinÄ",
@@ -148,20 +147,20 @@
"compose_form.placeholder": "Kas tavo mintyse?",
"compose_form.poll.add_option": "PridÄti pasirinkimÄ
",
"compose_form.poll.duration": "Apklausos trukmÄ",
+ "compose_form.poll.multiple": "Keli pasirinkimai",
"compose_form.poll.option_placeholder": "{number} pasirinkimas",
"compose_form.poll.remove_option": "PaÅĄalinti ÅĄÄ¯ pasirinkimÄ
",
+ "compose_form.poll.single": "Pasirinkti vienÄ
",
"compose_form.poll.switch_to_multiple": "Keisti apklausÄ
, kad bÅĢtÅŗ galima pasirinkti kelis pasirinkimus",
"compose_form.poll.switch_to_single": "Pakeisti apklausÄ
, kad bÅĢtÅŗ galima pasirinkti vienÄ
variantÄ
",
+ "compose_form.poll.type": "Stilius",
"compose_form.publish": "Skelbti",
"compose_form.publish_form": "Naujas įraÅĄas",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "IÅĄsaugoti pakeitimus",
- "compose_form.sensitive.hide": "{count, plural, one {ÅŊymÄti medijÄ
kaip jautriÄ
} few {ÅŊymÄti medijas kaip jautrias} many {ÅŊymÄti medijo kaip jautrio} other {ÅŊymÄti medijÅŗ kaip jautriÅŗ}}",
- "compose_form.sensitive.marked": "{count, plural, one {Medija paÅžymÄta kaip jautri} few {Medijos paÅžymÄtos kaip jautrios} many {Medijo paÅžymÄta kaip jautrio} other {MedijÅŗ paÅžymÄtÅŗ kaip jautriÅŗ}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {Medija nepaÅžymÄta kaip jautri} few {Medijos nepaÅžymÄtos kaip jautrios} many {Medijo nepaÅžymÄta kaip jautrio} other {MedijÅŗ nepaÅžymÄtÅŗ kaip jautriÅŗ}}",
+ "compose_form.reply": "Atsakyti",
+ "compose_form.save_changes": "Atnaujinti",
"compose_form.spoiler.marked": "PaÅĄalinti turinio įspÄjimÄ
",
"compose_form.spoiler.unmarked": "PridÄti turinio įspÄjimÄ
",
- "compose_form.spoiler_placeholder": "RaÅĄyk savo įspÄjimÄ
Äia",
+ "compose_form.spoiler_placeholder": "Turinio įspÄjimas (pasirinktinis)",
"confirmation_modal.cancel": "AtÅĄaukti",
"confirmations.block.block_and_report": "Blokuoti ir praneÅĄti",
"confirmations.block.confirm": "Blokuoti",
@@ -342,6 +341,7 @@
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
"keyboard_shortcuts.up": "to move up in the list",
"lightbox.close": "UÅždaryti",
+ "lists.new.create": "PridÄti sÄ
raÅĄÄ
",
"loading_indicator.label": "KraunamaâĻ",
"media_gallery.toggle_visible": "{number, plural, one {SlÄpti vaizdÄ
} few {SlÄpti vaizdus} many {SlÄpti vaizdo} other {SlÄpti vaizdÅŗ}}",
"moved_to_account_banner.text": "Tavo paskyra {disabledAccount} ÅĄiuo metu yra iÅĄjungta, nes persikÄlei į {movedToAccount}.",
@@ -356,7 +356,6 @@
"navigation_bar.direct": "PrivatÅĢs paminÄjimai",
"navigation_bar.discover": "Atrasti",
"navigation_bar.domain_blocks": "Hidden domains",
- "navigation_bar.edit_profile": "Redaguoti profilį",
"navigation_bar.explore": "NarÅĄyti",
"navigation_bar.favourites": "MÄgstamiausi",
"navigation_bar.filters": "NutylÄti ÅžodÅžiai",
@@ -466,14 +465,15 @@
"poll_button.add_poll": "PridÄti apklausÄ
",
"poll_button.remove_poll": "Å alinti apklausÄ
",
"privacy.change": "Adjust status privacy",
- "privacy.direct.long": "Post to mentioned users only",
- "privacy.direct.short": "Direct",
- "privacy.private.long": "Post to followers only",
- "privacy.private.short": "Followers-only",
- "privacy.public.long": "Visiems matomas",
+ "privacy.direct.long": "Visus, paminÄtus įraÅĄe",
+ "privacy.direct.short": "KonkretÅĢs ÅžmonÄs",
+ "privacy.private.long": "Tik sekÄjams",
+ "privacy.private.short": "SekÄjai",
+ "privacy.public.long": "Bet kas iÅĄ Mastodon ir ne Mastodon",
"privacy.public.short": "VieÅĄas",
- "privacy.unlisted.long": "Matomas visiems, bet atsisakyta atradimo funkcijÅŗ",
- "privacy.unlisted.short": "Neįtrauktas į sÄ
raÅĄÄ
",
+ "privacy.unlisted.additional": "Tai veikia lygiai taip pat, kaip ir vieÅĄa, tik įraÅĄas nebus rodomas tiesioginiuose srautuose, saitaÅžodÅžiose, narÅĄyme ar Mastodon paieÅĄkoje, net jei esi įtraukÄs (-usi) visÄ
paskyrÄ
.",
+ "privacy.unlisted.long": "MaÅžiau algoritminiÅŗ fanfarÅŗ",
+ "privacy.unlisted.short": "Tyliai vieÅĄa",
"privacy_policy.last_updated": "Paskutinį kartÄ
atnaujinta {date}",
"privacy_policy.title": "Privatumo politika",
"recommended": "Rekomenduojama",
@@ -485,7 +485,9 @@
"relative_time.minutes": "{number} min.",
"relative_time.seconds": "{number} sek.",
"relative_time.today": "ÅĄiandien",
+ "reply_indicator.attachments": "{count, plural, one {# priedas} few {# priedai} many {# priedo} other {# priedÅŗ}}",
"reply_indicator.cancel": "AtÅĄaukti",
+ "reply_indicator.poll": "Apklausa",
"report.block": "Blokuoti",
"report.categories.legal": "Legalus",
"report.categories.other": "Kita",
@@ -579,9 +581,7 @@
"units.short.thousand": "{count} tÅĢkst.",
"upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Describe for the visually impaired",
- "upload_form.description_missing": "NÄra pridÄto apraÅĄymo",
"upload_form.edit": "Redaguoti",
- "upload_form.undo": "IÅĄtrinti",
"upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.choose_image": "Pasirinkti vaizdÄ
",
"upload_modal.description_placeholder": "Greita rudoji lapÄ perÅĄoka tinginį ÅĄunį",
diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json
index c06a1d936..b4426b4c4 100644
--- a/app/javascript/mastodon/locales/lv.json
+++ b/app/javascript/mastodon/locales/lv.json
@@ -86,7 +86,6 @@
"announcement.announcement": "PaziÅojums",
"attachments_list.unprocessed": "(neapstrÄdÄti)",
"audio.hide": "SlÄpt audio",
- "autosuggest_hashtag.per_week": "{count} nedÄÄŧÄ",
"boost_modal.combo": "Nospied {combo}, lai nÄkamreiz ÅĄo izlaistu",
"bundle_column_error.copy_stacktrace": "KopÄt kÄŧÅĢdu ziÅojumu",
"bundle_column_error.error.body": "PieprasÄĢto lapu nevarÄja atveidot. Tas varÄtu bÅĢt saistÄĢts ar kÄŧÅĢdu mÅĢsu kodÄ, vai tÄ ir pÄrlÅĢkprogrammas saderÄĢbas problÄma.",
@@ -143,22 +142,12 @@
"compose_form.lock_disclaimer": "Tavs konts nav {locked}. Ikviens var tev piesekot un redzÄt tikai sekotÄjiem paredzÄtos ziÅojumus.",
"compose_form.lock_disclaimer.lock": "slÄgts",
"compose_form.placeholder": "Kas tev padomÄ?",
- "compose_form.poll.add_option": "Pievienot izvÄli",
"compose_form.poll.duration": "Aptaujas ilgums",
- "compose_form.poll.option_placeholder": "IzvÄle Nr. {number}",
- "compose_form.poll.remove_option": "NoÅemt ÅĄo izvÄli",
"compose_form.poll.switch_to_multiple": "MainÄĢt aptaujas veidu, lai atÄŧautu vairÄkas izvÄles",
"compose_form.poll.switch_to_single": "MainÄĢt aptaujas veidu, lai atÄŧautu vienu izvÄli",
- "compose_form.publish": "PublicÄt",
"compose_form.publish_form": "Jauns ieraksts",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "SaglabÄt izmaiÅas",
- "compose_form.sensitive.hide": "{count, plural, one {AtzÄĢmÄt multividi kÄ sensitÄĢvu} other {AtzÄĢmÄt multivides kÄ sensitÄĢvas}}",
- "compose_form.sensitive.marked": "{count, plural, one {Multivide ir atzÄĢmÄta kÄ sensitÄĢva} other {Multivides ir atzÄĢmÄtas kÄ sensitÄĢvas}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {Multivide nav atzÄĢmÄta kÄ sensitÄĢva} other {Multivides nav atzÄĢmÄtas kÄ sensitÄĢvas}}",
"compose_form.spoiler.marked": "NoÅemt satura brÄĢdinÄjumu",
"compose_form.spoiler.unmarked": "Pievienot satura brÄĢdinÄjumu",
- "compose_form.spoiler_placeholder": "Ieraksti savu brÄĢdinÄjumu ÅĄeit",
"confirmation_modal.cancel": "Atcelt",
"confirmations.block.block_and_report": "BloġÄt un ziÅot",
"confirmations.block.confirm": "BloġÄt",
@@ -403,7 +392,6 @@
"navigation_bar.direct": "PrivÄti pieminÄti",
"navigation_bar.discover": "AtklÄt",
"navigation_bar.domain_blocks": "BloġÄtie domÄni",
- "navigation_bar.edit_profile": "RediÄŖÄt profilu",
"navigation_bar.explore": "PÄrlÅĢkot",
"navigation_bar.favourites": "Izlase",
"navigation_bar.filters": "ApklusinÄtie vÄrdi",
@@ -510,14 +498,7 @@
"poll_button.add_poll": "Pievienot aptauju",
"poll_button.remove_poll": "NoÅemt aptauju",
"privacy.change": "MainÄĢt ieraksta privÄtumu",
- "privacy.direct.long": "Redzama tikai pieminÄtajiem lietotÄjiem",
- "privacy.direct.short": "Tikai minÄtie cilvÄki",
- "privacy.private.long": "Redzama tikai sekotÄjiem",
- "privacy.private.short": "Tikai sekotÄjiem",
- "privacy.public.long": "Redzams visiem",
"privacy.public.short": "Publiska",
- "privacy.unlisted.long": "Redzams visiem, bet izslÄgts no satura atklÄÅĄanas funkcijÄm",
- "privacy.unlisted.short": "NeiekÄŧautie",
"privacy_policy.last_updated": "PÄdÄjo reizi atjauninÄta {date}",
"privacy_policy.title": "PrivÄtuma politika",
"refresh": "AtsvaidzinÄt",
@@ -697,10 +678,8 @@
"upload_error.poll": "DatÅu augÅĄupielÄdes aptaujÄs nav atÄŧautas.",
"upload_form.audio_description": "Pievieno aprakstu cilvÄkiem ar dzirdes zudumu",
"upload_form.description": "Pievieno aprakstu vÄjredzÄĢgajiem",
- "upload_form.description_missing": "Apraksts nav pievienots",
"upload_form.edit": "RediÄŖÄt",
"upload_form.thumbnail": "NomainÄĢt sÄĢktÄlu",
- "upload_form.undo": "DzÄst",
"upload_form.video_description": "Pievieno aprakstu cilvÄkiem ar dzirdes vai redzes traucÄjumiem",
"upload_modal.analyzing_picture": "AnalizÄ attÄluâĻ",
"upload_modal.apply": "Pielietot",
diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json
index bdef3f4a5..f7080842b 100644
--- a/app/javascript/mastodon/locales/mk.json
+++ b/app/javascript/mastodon/locales/mk.json
@@ -48,7 +48,6 @@
"alert.rate_limited.message": "ĐйидĐĩŅĐĩ ŅĐĩ ĐŋОвŅĐžŅĐŊĐž ĐŋĐžŅĐģĐĩ {retry_time, time, medium}.",
"alert.unexpected.message": "ĐĐĩĐžŅĐĩĐēŅваĐŊа ĐŗŅĐĩŅĐēа.",
"alert.unexpected.title": "ĐŖĐŋŅ!",
- "autosuggest_hashtag.per_week": "{count} ĐŊĐĩĐ´ĐĩĐģĐŊĐž",
"boost_modal.combo": "ĐĐģиĐēĐŊи {combo} Са да ĐŗĐž ĐŋŅĐĩŅĐēĐžĐēĐŊĐ¸Ņ ĐžĐ˛Đ° ĐŊаŅĐĩĐ´ĐĩĐŊ ĐŋаŅ",
"bundle_column_error.retry": "ĐйидĐĩŅĐĩ ŅĐĩ ĐŋОвŅĐžŅĐŊĐž",
"bundle_modal_error.close": "ĐаŅвОŅи",
@@ -76,14 +75,8 @@
"compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.",
"compose_form.lock_disclaimer.lock": "СаĐēĐģŅŅĐĩĐŊ",
"compose_form.placeholder": "ШŅĐž иĐŧаŅĐĩ ĐŊа ŅĐŧ?",
- "compose_form.poll.add_option": "ĐĐžĐ´Đ°Ņ Đ¸ĐˇĐąĐžŅ",
"compose_form.poll.duration": "ĐŅĐĩĐŧĐĩŅŅаŅĐĩ ĐŊа аĐŊĐēĐĩŅа",
- "compose_form.poll.option_placeholder": "ĐСйĐĩŅи {number}",
- "compose_form.poll.remove_option": "ĐСйŅиŅи иСйОŅ",
"compose_form.publish_form": "Publish",
- "compose_form.sensitive.hide": "ĐĐąĐĩĐģĐĩĐļи ĐŧĐĩдиа ĐēаĐēĐž ŅĐĩĐŊСиŅивĐŊа",
- "compose_form.sensitive.marked": "ĐĐĩдиаŅа Đĩ ОйĐĩĐģĐĩĐļаĐŊа ĐēаĐēĐž ŅĐĩĐŊСиŅивĐŊа",
- "compose_form.sensitive.unmarked": "ĐĐĩдиаŅа ĐŊĐĩ Đĩ ОйĐĩĐģĐĩĐļаĐŊа ĐēаĐēĐž ŅĐĩĐŊСиŅивĐŊа",
"compose_form.spoiler.marked": "ĐĸĐĩĐēŅŅĐžŅ Đĩ ŅĐžĐēŅиĐĩĐŊ Сад ĐŋŅĐĩĐ´ŅĐŋŅĐĩĐ´ŅваŅĐĩ",
"compose_form.spoiler.unmarked": "ĐĸĐĩĐēŅŅĐžŅ ĐŊĐĩ Đĩ ŅĐžĐēŅиĐĩĐŊ",
"confirmation_modal.cancel": "ĐŅĐēаĐļи",
@@ -182,7 +175,6 @@
"keyboard_shortcuts.up": "to move up in the list",
"navigation_bar.compose": "Compose new toot",
"navigation_bar.domain_blocks": "Hidden domains",
- "navigation_bar.edit_profile": "ĐŖŅĐĩди ĐŋŅĐžŅиĐģ",
"navigation_bar.filters": "ĐаĐŧĐžĐģŅĐĩĐŊи СйОŅОви",
"navigation_bar.follow_requests": "ĐĄĐģĐĩди ĐŋĐžĐēаĐŊи",
"navigation_bar.follows_and_followers": "ĐĄĐģĐĩĐ´ĐĩŅа и ŅĐģĐĩĐ´ĐąĐĩĐŊиŅи",
@@ -229,12 +221,7 @@
"poll_button.add_poll": "ĐОдадĐĩŅĐĩ ĐŊОва аĐŊĐēĐĩŅа",
"poll_button.remove_poll": "ĐСйŅиŅĐĩŅĐĩ аĐŊĐēĐĩŅа",
"privacy.change": "ШŅĐĩĐģĐžĐ˛Đ°Ņ ŅŅаŅŅŅ ĐŊа ĐŋŅиваŅĐŊĐžŅŅ",
- "privacy.direct.long": "ĐĐąŅави ŅаĐŧĐž ĐŊа ŅĐŋĐžĐŧĐŊаŅи ĐēĐžŅиŅĐŊиŅи",
- "privacy.direct.short": "Direct",
- "privacy.private.long": "ĐĐąŅави ŅаĐŧĐž ĐŊа ŅĐģĐĩĐ´ĐąĐĩĐŊиŅи",
- "privacy.private.short": "Followers-only",
"privacy.public.short": "ĐавĐŊĐž",
- "privacy.unlisted.short": "ĐĐĩОйŅавĐĩĐŊĐž",
"refresh": "ĐŅвĐĩĐļи",
"regeneration_indicator.label": "ĐŅиŅŅваŅĐĩâĻ",
"regeneration_indicator.sublabel": "ĐаŅĐ¸ĐžŅ ĐŊОвОŅŅи ŅĐĩ ĐŋĐžĐ´ĐŗĐžŅвŅвааŅ!",
diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json
index 11636646b..0059dd333 100644
--- a/app/javascript/mastodon/locales/ml.json
+++ b/app/javascript/mastodon/locales/ml.json
@@ -60,7 +60,6 @@
"announcement.announcement": "ā´
ā´ąā´ŋā´¯ā´ŋā´Ēāĩā´Ēāĩ",
"attachments_list.unprocessed": "(ā´Ēāĩā´°āĩⴏⴏāĩā´¸āĩ ā´āĩā´¯āĩā´¯ā´žā´¤āĩⴤⴤāĩ)",
"audio.hide": "ā´ļā´Ŧāĩā´Ļā´ ā´ā´´ā´ŋā´ĩā´žā´āĩā´āĩā´",
- "autosuggest_hashtag.per_week": "ā´ā´´āĩā´ ā´¤āĩā´ąāĩā´ {count}",
"boost_modal.combo": "ā´
ā´āĩā´¤āĩā´¤ ā´¤ā´ĩā´Ŗ ā´ā´¤āĩ ā´ā´´ā´ŋā´ĩā´žā´āĩā´āĩā´ĩā´žāĩģ {combo} ā´āĩā´āĩā´ā´žā´ĩāĩā´¨āĩā´¨ā´¤ā´žā´Ŗāĩ",
"bundle_column_error.network.title": "ā´¨āĩā´ąāĩā´ąāĩâā´ĩāĩŧā´āĩā´āĩ ā´Ēā´ŋā´ļā´āĩ",
"bundle_column_error.retry": "ā´ĩāĩā´Ŗāĩā´āĩā´ ā´ļāĩā´°ā´Žā´ŋā´āĩā´āĩā´",
@@ -102,17 +101,12 @@
"compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.",
"compose_form.lock_disclaimer.lock": "ā´˛āĩā´āĩā´āĩā´āĩā´¯āĩā´¤āĩ",
"compose_form.placeholder": "ā´¨ā´ŋā´āĩā´ā´ŗāĩā´āĩ ā´Žā´¨ā´¸āĩā´¸ā´ŋāĩŊ ā´ā´¨āĩā´¤ā´žā´Ŗāĩ?",
- "compose_form.poll.add_option": "ā´ā´°āĩ ā´āĩā´¯āĩâā´¸āĩ ā´āĩāĩŧā´āĩā´āĩā´",
"compose_form.poll.duration": "ā´¤ā´ŋā´°ā´āĩā´āĩā´āĩā´Ēāĩā´Ēā´ŋā´¨āĩā´ąāĩ ā´¸ā´Žā´¯ā´Ļāĩāĩŧā´āĩā´¯ā´",
- "compose_form.poll.option_placeholder": "ā´āĩā´¯āĩâā´¸āĩ {number}",
- "compose_form.poll.remove_option": "ā´ ā´Ąā´ŋā´ĩāĩā´¸āĩ ā´Žā´žā´ąāĩā´ąāĩā´",
"compose_form.poll.switch_to_multiple": "ā´ĩāĩā´āĩā´āĩā´āĩā´Ēāĩā´Ēā´ŋāĩŊ ā´ā´¨āĩā´¨ā´ŋⴞⴧā´ŋā´ā´ ā´āĩā´¯āĩâā´¸āĩā´āĩž ā´āĩžā´Ēāĩā´Ēāĩā´āĩā´¤āĩā´",
"compose_form.poll.switch_to_single": "ā´ĩāĩā´āĩā´āĩā´āĩā´Ēāĩā´Ēā´ŋāĩŊ ā´ā´°āĩā´ąāĩā´ą ā´āĩā´¯āĩâā´¸āĩâ ā´Žā´žā´¤āĩā´°ā´ ā´ā´āĩā´āĩā´",
"compose_form.publish_form": "Publish",
- "compose_form.publish_loud": "{ā´Ēāĩā´°ā´¸ā´ŋā´Ļāĩā´§āĩā´ā´°ā´ŋā´āĩā´āĩā´}!",
"compose_form.spoiler.marked": "ā´ā´´āĩā´¤āĩā´¤āĩ ā´Žāĩā´¨āĩā´¨ā´ąā´ŋā´¯ā´ŋā´Ēāĩā´Ēā´ŋā´¨ā´žāĩŊ ā´Žā´ąā´āĩā´ā´ŋā´°ā´ŋā´āĩā´āĩā´¨āĩā´¨āĩ",
"compose_form.spoiler.unmarked": "ā´ā´´āĩā´¤āĩā´¤āĩ ā´Žā´ąā´¯āĩā´āĩā´ā´Ēāĩā´Ēāĩā´āĩā´ā´ŋā´āĩā´ā´ŋā´˛āĩā´˛",
- "compose_form.spoiler_placeholder": "ā´¨ā´ŋā´āĩā´ā´ŗāĩā´āĩ ā´Žāĩā´¨āĩā´¨ā´ąā´ŋā´¯ā´ŋā´Ēāĩā´Ēāĩ ā´ā´ĩā´ŋā´āĩ ā´ā´´āĩā´¤āĩā´",
"confirmation_modal.cancel": "ā´ąā´Ļāĩā´Ļā´žā´āĩā´āĩā´",
"confirmations.block.block_and_report": "ā´¤ā´ā´¯āĩā´ā´¯āĩā´ ā´ąā´ŋā´Ēāĩā´Ēāĩāĩŧā´āĩā´āĩā´ ā´āĩā´¯āĩā´¯āĩā´",
"confirmations.block.confirm": "ā´¤ā´ā´¯āĩā´",
@@ -244,7 +238,6 @@
"navigation_bar.compose": "ā´Ēāĩā´¤ā´ŋā´¯ ā´āĩā´āĩā´āĩ ā´ā´´āĩā´¤āĩā´",
"navigation_bar.discover": "ā´ā´Ŗāĩā´āĩā´¤āĩā´¤āĩā´",
"navigation_bar.domain_blocks": "Hidden domains",
- "navigation_bar.edit_profile": "ā´Ēāĩā´°āĩā´ĢāĩāĩŊ ā´¤ā´ŋā´°āĩā´¤āĩā´¤āĩā´",
"navigation_bar.follow_requests": "ā´Ēā´ŋā´¨āĩā´¤āĩā´ā´°ā´žā´¨āĩā´ŗāĩā´ŗ ā´
ā´āĩā´¯āĩŧā´¤āĩā´Ĩā´¨ā´āĩž",
"navigation_bar.lists": "ā´˛ā´ŋā´¸āĩā´ąāĩā´ąāĩā´āĩž",
"navigation_bar.logout": "ā´˛āĩā´āĩā´āĩā´āĩ",
@@ -302,10 +295,6 @@
"poll_button.add_poll": "ā´ā´°āĩ ā´Ēāĩāĩž ā´āĩāĩŧā´āĩā´āĩā´",
"poll_button.remove_poll": "ā´Ēāĩāĩž ā´¨āĩā´āĩā´ā´ā´āĩā´¯āĩā´¯āĩā´",
"privacy.change": "ā´āĩā´āĩā´āĩ ā´¸āĩā´ĩā´ā´žā´°āĩⴝⴤ ā´āĩā´°ā´Žāĩā´ā´°ā´ŋā´āĩā´āĩā´",
- "privacy.direct.long": "Post to mentioned users only",
- "privacy.direct.short": "Direct",
- "privacy.private.long": "Post to followers only",
- "privacy.private.short": "Followers-only",
"privacy.public.short": "ā´ā´˛āĩā´˛ā´žā´ĩā´°āĩâā´āĩā´āĩā´",
"refresh": "ā´Ēāĩā´¤āĩā´āĩā´āĩā´",
"regeneration_indicator.label": "ā´˛ā´āĩā´¯ā´Žā´žā´āĩā´āĩā´¨āĩā´¨āĩâĻ",
@@ -372,7 +361,6 @@
"upload_form.description": "ā´ā´žā´´āĩā´ā´ļā´āĩā´¤ā´ŋ ā´ā´˛āĩā´˛ā´žā´¤āĩā´¤ā´ĩāĩŧā´āĩā´āĩ ā´ĩāĩā´Ŗāĩā´ā´ŋ ā´ĩā´ŋā´ĩā´°ā´Ŗā´ ā´¨āĩŊā´āĩ",
"upload_form.edit": "ā´¤ā´ŋā´°āĩā´¤āĩā´¤āĩā´",
"upload_form.thumbnail": "ā´˛ā´āĩā´ā´ŋā´¤āĩā´°ā´ ā´Žā´žā´ąāĩā´ąāĩā´",
- "upload_form.undo": "ā´ā´˛āĩā´˛ā´žā´¤ā´žā´āĩā´āĩā´",
"upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.analyzing_picture": "ā´ā´ŋā´¤āĩā´°ā´ ā´ĩā´ŋā´ļā´ā´˛ā´¨ā´ ā´āĩā´¯āĩā´¯āĩā´¨āĩā´¨āĩâĻ",
"upload_modal.apply": "ā´Ēāĩā´°ā´¯āĩā´ā´ŋā´āĩā´āĩā´",
diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json
index 7f5b7d652..20231f0bb 100644
--- a/app/javascript/mastodon/locales/mr.json
+++ b/app/javascript/mastodon/locales/mr.json
@@ -73,7 +73,6 @@
"alert.unexpected.message": "ā¤ā¤ ā¤
⤍ā¤ĒāĨā¤āĨ⤎ā¤ŋ⤤ ⤤āĨ⤰āĨā¤āĨ ā¤ā¤˛āĨ.",
"alert.unexpected.title": "ā¤
⤰āĨ⤰āĨ!",
"announcement.announcement": "ā¤āĨā¤ˇā¤Ŗā¤ž",
- "autosuggest_hashtag.per_week": "{count} ā¤ĒāĨ⤰⤤ā¤ŋ⤏ā¤ĒāĨā¤¤ā¤žā¤š",
"bundle_column_error.retry": "ā¤ĒāĨ⤍āĨā¤šā¤ž ā¤ĒāĨ⤰⤝⤤āĨ⤍ ā¤ā¤°ā¤ž",
"bundle_modal_error.close": "ā¤Ŧā¤ā¤Ļ ā¤ā¤°ā¤ž",
"bundle_modal_error.message": "ā¤šā¤ž ā¤ā¤ā¤ ⤞āĨā¤Ą ā¤ā¤°ā¤¤ā¤žā¤ā¤¨ā¤ž ā¤ā¤žā¤šāĨ⤤⤰āĨ ā¤āĨā¤ā¤˛āĨ ā¤ā¤šāĨ.",
@@ -99,9 +98,6 @@
"compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
"compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.",
"compose_form.placeholder": "ā¤ā¤Ē⤞āĨā¤¯ā¤ž ā¤Žā¤¨ā¤žā¤¤ ā¤ā¤žā¤¯ ā¤ā¤šāĨ?",
- "compose_form.poll.add_option": "⤍ā¤ĩāĨ⤍ ā¤Ē⤰āĨā¤¯ā¤žā¤¯",
- "compose_form.poll.option_placeholder": "⤍ā¤ŋā¤ĩā¤Ą {number}",
- "compose_form.poll.remove_option": "ā¤šā¤ž ā¤Ē⤰āĨā¤¯ā¤žā¤¯ ā¤ā¤žā¤ĸā¤ž",
"compose_form.publish_form": "Publish",
"compose_form.spoiler.marked": "Text is hidden behind warning",
"compose_form.spoiler.unmarked": "Text is not hidden",
@@ -228,10 +224,6 @@
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
"onboarding.steps.share_profile.title": "Share your profile",
"privacy.change": "Adjust status privacy",
- "privacy.direct.long": "Post to mentioned users only",
- "privacy.direct.short": "Direct",
- "privacy.private.long": "Post to followers only",
- "privacy.private.short": "Followers-only",
"report.placeholder": "Type or paste additional comments",
"report.submit": "Submit report",
"report.target": "Report {target}",
diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json
index 50a48db1e..8c1ff6337 100644
--- a/app/javascript/mastodon/locales/ms.json
+++ b/app/javascript/mastodon/locales/ms.json
@@ -86,7 +86,6 @@
"announcement.announcement": "Pengumuman",
"attachments_list.unprocessed": "(belum diproses)",
"audio.hide": "Sembunyikan audio",
- "autosuggest_hashtag.per_week": "{count} seminggu",
"boost_modal.combo": "Anda boleh tekan {combo} untuk melangkauinya pada waktu lain",
"bundle_column_error.copy_stacktrace": "Salin laporan ralat",
"bundle_column_error.error.body": "Halaman yang diminta gagal dipaparkan. Ini mungkin disebabkan oleh pepijat dalam kod kami, atau masalah keserasian pelayar.",
@@ -143,22 +142,12 @@
"compose_form.lock_disclaimer": "Akaun anda tidak {locked}. Sesiapa pun boleh mengikuti anda untuk melihat hantaran pengikut-sahaja anda.",
"compose_form.lock_disclaimer.lock": "dikunci",
"compose_form.placeholder": "Apakah yang sedang anda fikirkan?",
- "compose_form.poll.add_option": "Tambah pilihan",
"compose_form.poll.duration": "Tempoh undian",
- "compose_form.poll.option_placeholder": "Pilihan {number}",
- "compose_form.poll.remove_option": "Buang pilihan ini",
"compose_form.poll.switch_to_multiple": "Ubah kepada membenarkan aneka undian",
"compose_form.poll.switch_to_single": "Ubah kepada undian pilihan tunggal",
- "compose_form.publish": "Terbit",
"compose_form.publish_form": "Terbit",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Simpan perubahan",
- "compose_form.sensitive.hide": "{count, plural, one {Tandakan media sbg sensitif} other {Tandakan media sbg sensitif}}",
- "compose_form.sensitive.marked": "{count, plural, one {Media telah ditanda sbg sensitif} other {Media telah ditanda sbg sensitif}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {Media tidak ditanda sbg sensitif} other {Media tidak ditanda sbg sensitif}}",
"compose_form.spoiler.marked": "Buang amaran kandungan",
"compose_form.spoiler.unmarked": "Tambah amaran kandungan",
- "compose_form.spoiler_placeholder": "Tulis amaran anda di sini",
"confirmation_modal.cancel": "Batal",
"confirmations.block.block_and_report": "Sekat & Lapor",
"confirmations.block.confirm": "Sekat",
@@ -399,7 +388,6 @@
"navigation_bar.direct": "Sebutan peribadi",
"navigation_bar.discover": "Teroka",
"navigation_bar.domain_blocks": "Domain disekat",
- "navigation_bar.edit_profile": "Sunting profil",
"navigation_bar.explore": "Teroka",
"navigation_bar.favourites": "Kegemaran",
"navigation_bar.filters": "Perkataan yang dibisukan",
@@ -506,14 +494,7 @@
"poll_button.add_poll": "Tambah undian",
"poll_button.remove_poll": "Buang undian",
"privacy.change": "Ubah privasi hantaran",
- "privacy.direct.long": "Hanya boleh dilihat oleh pengguna disebut",
- "privacy.direct.short": "Orang yang disebut sahaja",
- "privacy.private.long": "Hanya boleh dilihat oleh pengikut",
- "privacy.private.short": "Pengikut sahaja",
- "privacy.public.long": "Kelihatan untuk semua",
"privacy.public.short": "Awam",
- "privacy.unlisted.long": "Terpapar untuk semua, tetapi menarik diri daripada ciri penemuan",
- "privacy.unlisted.short": "Tidak tersenarai",
"privacy_policy.last_updated": "Dikemaskini {date}",
"privacy_policy.title": "Dasar Privasi",
"refresh": "Muat semula",
@@ -693,10 +674,8 @@
"upload_error.poll": "Tidak boleh memuat naik fail bersama undian.",
"upload_form.audio_description": "Jelaskan untuk orang yang ada masalah pendengaran",
"upload_form.description": "Jelaskan untuk orang yang ada masalah penglihatan",
- "upload_form.description_missing": "Tiada keterangan ditambah",
"upload_form.edit": "Sunting",
"upload_form.thumbnail": "Ubah gambar kecil",
- "upload_form.undo": "Padam",
"upload_form.video_description": "Jelaskan untuk orang yang ada masalah pendengaran atau penglihatan",
"upload_modal.analyzing_picture": "Menganalisis gambarâĻ",
"upload_modal.apply": "Guna",
diff --git a/app/javascript/mastodon/locales/my.json b/app/javascript/mastodon/locales/my.json
index 3ca03b616..396a72ac4 100644
--- a/app/javascript/mastodon/locales/my.json
+++ b/app/javascript/mastodon/locales/my.json
@@ -87,7 +87,6 @@
"announcement.announcement": "ááŧáąááŧáŦááģááē",
"attachments_list.unprocessed": "(ááá¯ááēááąáŦááēáááąá¸)",
"audio.hide": "áĄááļááááēáááē",
- "autosuggest_hashtag.per_week": "áá
áēáááēááģážááē {count}\n",
"boost_modal.combo": "á¤áĄááŦááᯠááąáŦááēáá
áēááŧáááēááģáąáŦáēáááē {combo} ááá¯áážáááēááá¯ááēáááēá",
"bundle_column_error.copy_stacktrace": "á
áŦáá°á¸ááŦááŊááēááŧáŋááŦáážááááē",
"bundle_column_error.error.body": "á¤á
áŦááģááēáážáŦááᯠááąáŦáēááŧááŦááŊááē ááŧáŋááŦáážáááąáááē",
@@ -144,22 +143,12 @@
"compose_form.lock_disclaimer": "áááˇáēáĄááąáŦááˇáēááᯠ{ááąáŦáˇáááēáááŦá¸ááĢ}á áááˇáēááąáŦááēááá¯ááē-ááŽá¸áááˇáēááá¯áˇá
áēááģáŦá¸ááᯠááŧááˇáēáážá¯áááē áááēáá°áááᯠáááˇáēáĄáŦḠááá¯ááēááŧááēáˇááá¯ááēááĢáááēá",
"compose_form.lock_disclaimer.lock": "ááąáŦáˇáááēááŦá¸áááē",
"compose_form.placeholder": "What is on your mind?",
- "compose_form.poll.add_option": "ááŊáąá¸ááģááēáážá¯áááēááļááąáĢááēá¸áááēáˇááĢ",
"compose_form.poll.duration": "á
á
áēáááēá¸ááŧáŦááģáááē",
- "compose_form.poll.option_placeholder": "ááŊáąá¸ááģááēáážá¯ {number}\n",
- "compose_form.poll.remove_option": "á¤ááŊáąá¸ááģááēáážá¯ááᯠáááēáá¯ááēááĢ",
"compose_form.poll.switch_to_multiple": "á
á
áēáááēá¸ááŊááēáá
áēáá¯áááēááá¯ááąáŦááášáááŧá¯ááģááēáááēááļáááē",
"compose_form.poll.switch_to_single": "á
á
áēáááēá¸ááŊááē áá
áēáá¯ááá¯ááŦááŊáąá¸ááģááēááŊááēáˇááŧá¯áááē",
- "compose_form.publish": "ááá¯áˇá
áēáááēáááē",
"compose_form.publish_form": "ááá¯áˇá
áēáááēáááē",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "ááŧáąáŦááēá¸áá˛áážá¯ááģáŦá¸ááᯠááááēá¸áááēá¸ááĢ",
- "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}",
- "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}",
"compose_form.spoiler.marked": "Text is hidden behind warning",
"compose_form.spoiler.unmarked": "Text is not hidden",
- "compose_form.spoiler_placeholder": "áááááąá¸á
áŦááá¯á¤ááąááŦááŊááēááąá¸ááĢ",
"confirmation_modal.cancel": "áááēááģááēáááē",
"confirmations.block.block_and_report": "áááąáŦáˇááŧáŽá¸ ááá¯ááēááŧáŦá¸áááē",
"confirmations.block.confirm": "áááąáŦáˇáááē",
@@ -405,7 +394,6 @@
"navigation_bar.direct": "ááŽá¸áááˇáēááąáŦáēááŧááģááēááģáŦá¸",
"navigation_bar.discover": "áážáŦááŊáąááĢ",
"navigation_bar.domain_blocks": "Hidden domains",
- "navigation_bar.edit_profile": "ááá¯ááēááąá¸áážááēáááēá¸ááŧááēáááēáááē",
"navigation_bar.explore": "á
á°á¸á
ááēá¸áááē",
"navigation_bar.favourites": "Favorites",
"navigation_bar.filters": "á
ááŦá¸áá¯áļá¸ááģáŦḠááááēááŦá¸ááĢ",
@@ -519,14 +507,7 @@
"poll_button.add_poll": "á
á
áēáááēá¸ááąáŦááēáááē",
"poll_button.remove_poll": "á
á
áēáááēá¸áááēááģááēáááē",
"privacy.change": "Adjust status privacy",
- "privacy.direct.long": "áááēá¸áážááēá¸ááąáĢáēáá°ááŽá¸áááēáˇ",
- "privacy.direct.short": "Direct",
- "privacy.private.long": "ááąáŦáēááá¯á¸áá¯ááēáá°ááŽá¸áááēáˇ",
- "privacy.private.short": "á
áąáŦááˇáēááŧááˇáēáá°ááģáŦá¸ááŦ",
- "privacy.public.long": "áĄáŦá¸áá¯áļḠááŧááēááá¯ááēáááē",
"privacy.public.short": "áĄááģáŦá¸ááá¯ááŧáááē",
- "privacy.unlisted.long": "áĄáŦá¸áá¯áļá¸ááŧááēááá¯ááēááąáŦáēáááēḠáážáŦááŊáąáážá¯ááģáŦá¸ááž áááēáá¯ááēááŦá¸áááē",
- "privacy.unlisted.short": "á
áŦáááēá¸áááŊááēá¸ááŦá¸ááĢ",
"privacy_policy.last_updated": "ááąáŦááēáá¯áļḠááŧááēáááēáá˛áˇáááˇáēáááēá
áŊᲠ{date}",
"privacy_policy.title": "ááá¯ááēááąá¸áĄááģááēáĄáááēáá°ááĢá",
"recommended": "áĄááŧáļááŧá¯áááē",
@@ -708,10 +689,8 @@
"upload_error.poll": "á
á
áēáááēá¸áážááēáˇáĄáá°ááá¯ááēááģáŦá¸áááēááŊááēáˇáááŧá¯ááĢ",
"upload_form.audio_description": "áĄááŧáŦá¸áĄáŦáá¯áļááģáá¯áˇááŊááēá¸ááąáŦ áááēáá˛ááąáŦáá°ááģáŦá¸áĄááŊááē ááąáŦáēááŧááŦá¸áááē",
"upload_form.description": "áĄááŧááēáĄáŦáá¯áļááģáá¯áˇááŊááēá¸ááąáŦ áááēáá˛ááąáŦáá°ááģáŦá¸áĄááŊááē ááąáŦáēááŧááŦá¸áááē",
- "upload_form.description_missing": "ááąáŦáēááŧááģááē ááááˇáēááĢ",
"upload_form.edit": "ááŧááēáááē",
"upload_form.thumbnail": "áá¯áļááąá¸ááᯠááŧáąáŦááēá¸ááĢ",
- "upload_form.undo": "ááģááēáááē",
"upload_form.video_description": "áĄááŧááēáĄáŦáá¯áļáážááēáˇáĄááŧáŦá¸áĄáŦáá¯áļ ááģáá¯áˇááŊááēá¸ááąáŦ áááēáá˛ááąáŦáá°ááģáŦá¸áĄááŊááē ááąáŦáēááŧááŦá¸áááē",
"upload_modal.analyzing_picture": "áá¯áļáĄáŦḠááá¯ááēá¸ááŧáŦá¸á
áááēááŧáŦááąáááē...",
"upload_modal.apply": "áá¯áļá¸ááĢ",
diff --git a/app/javascript/mastodon/locales/ne.json b/app/javascript/mastodon/locales/ne.json
index 229d4f471..86e24a15f 100644
--- a/app/javascript/mastodon/locales/ne.json
+++ b/app/javascript/mastodon/locales/ne.json
@@ -69,12 +69,5 @@
"compose.language.change": "ā¤ā¤žā¤ˇā¤ž ā¤Ē⤰ā¤ŋā¤ĩ⤰āĨ⤤⤍ ā¤ā¤°āĨ⤍āĨā¤šāĨ⤏āĨ",
"compose.language.search": "ā¤ā¤žā¤ˇā¤žā¤šā¤°āĨ ā¤āĨā¤āĨ⤍āĨā¤šāĨ⤏āĨ...",
"compose_form.direct_message_warning_learn_more": "ā¤Ĩā¤Ē ā¤ā¤žā¤¨āĨ⤍āĨā¤šāĨ⤏āĨ",
- "compose_form.poll.add_option": "ā¤ĩā¤ŋā¤ā¤˛āĨā¤Ē ā¤Ĩā¤ĒāĨ⤍āĨā¤šāĨ⤏āĨ",
- "compose_form.poll.remove_option": "⤝āĨ ā¤ĩā¤ŋā¤ā¤˛āĨā¤Ē ā¤šā¤ā¤žā¤ā¤¨āĨā¤šāĨ⤏āĨ",
- "compose_form.publish_form": "ā¤¨ā¤¯ā¤žā¤ ā¤ĒāĨ⤏āĨā¤",
- "compose_form.save_changes": "ā¤Ē⤰ā¤ŋā¤ĩ⤰āĨā¤¤ā¤¨ā¤šā¤°āĨ ⤏āĨ⤠ā¤ā¤°āĨ⤍āĨā¤šāĨ⤏",
- "compose_form.sensitive.hide": "{count, plural, one {⤏ā¤ā¤ĩāĨā¤Ļ⤍ā¤ļāĨ⤞ ā¤Žā¤ŋā¤Ąā¤ŋā¤¯ā¤žā¤āĨ ⤰āĨā¤Ēā¤Žā¤ž ā¤ā¤ŋ⤍āĨā¤š ⤞ā¤ā¤žā¤ā¤¨āĨā¤šāĨ⤏āĨ} other {⤏ā¤ā¤ĩāĨā¤Ļ⤍ā¤ļāĨ⤞ ā¤Žā¤ŋā¤Ąā¤ŋā¤¯ā¤žā¤šā¤°āĨā¤āĨ ⤰āĨā¤Ēā¤Žā¤ž ā¤ā¤ŋ⤍āĨā¤š ⤞ā¤ā¤žā¤ā¤¨āĨā¤šāĨ⤏āĨ}}",
- "compose_form.sensitive.marked": "{count, plural, one {ā¤Žā¤ŋā¤Ąā¤ŋā¤¯ā¤žā¤˛ā¤žā¤ ā¤¸ā¤ā¤ĩāĨā¤Ļ⤍ā¤ļāĨ⤞ ⤰āĨā¤Ēā¤Žā¤ž ā¤ā¤ŋ⤍āĨā¤š ⤞ā¤ā¤žā¤ā¤ā¤āĨ ā¤} other {ā¤Žā¤ŋā¤Ąā¤ŋā¤¯ā¤žā¤šā¤°āĨā¤˛ā¤žā¤ ā¤¸ā¤ā¤ĩāĨā¤Ļ⤍ā¤ļāĨ⤞ ⤰āĨā¤Ēā¤Žā¤ž ā¤ā¤ŋ⤍āĨā¤š ⤞ā¤ā¤žā¤ā¤ā¤āĨ ā¤}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {ā¤Žā¤ŋā¤Ąā¤ŋā¤¯ā¤žā¤˛ā¤žā¤ ā¤¸ā¤ā¤ĩāĨā¤Ļ⤍ā¤ļāĨ⤞ ⤰āĨā¤Ēā¤Žā¤ž ā¤ā¤ŋ⤍āĨā¤š ⤞ā¤ā¤žā¤ā¤ā¤āĨ ā¤āĨ⤍} other {ā¤Žā¤ŋā¤Ąā¤ŋā¤¯ā¤žā¤šā¤°āĨā¤˛ā¤žā¤ ā¤¸ā¤ā¤ĩāĨā¤Ļ⤍ā¤ļāĨ⤞ ⤰āĨā¤Ēā¤Žā¤ž ā¤ā¤ŋ⤍āĨā¤š ⤞ā¤ā¤žā¤ā¤ā¤āĨ ā¤āĨ⤍}}",
- "compose_form.spoiler_placeholder": "ā¤¯ā¤šā¤žā¤ ā¤ā¤ĢāĨ⤍āĨ ā¤āĨā¤¤ā¤žā¤ĩ⤍āĨ ⤞āĨā¤āĨ⤍āĨā¤šāĨ⤏āĨ"
+ "compose_form.publish_form": "ā¤¨ā¤¯ā¤žā¤ ā¤ĒāĨ⤏āĨā¤"
}
diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json
index 86617d4a5..e38f8fd0b 100644
--- a/app/javascript/mastodon/locales/nl.json
+++ b/app/javascript/mastodon/locales/nl.json
@@ -89,7 +89,6 @@
"announcement.announcement": "Mededeling",
"attachments_list.unprocessed": "(niet verwerkt)",
"audio.hide": "Audio verbergen",
- "autosuggest_hashtag.per_week": "{count} per week",
"boost_modal.combo": "Je kunt {combo} klikken om dit de volgende keer over te slaan",
"bundle_column_error.copy_stacktrace": "Foutrapportage kopiÃĢren",
"bundle_column_error.error.body": "De opgevraagde pagina kon niet worden weergegeven. Dit kan het gevolg zijn van een fout in onze broncode, of van een compatibiliteitsprobleem met je webbrowser.",
@@ -146,22 +145,22 @@
"compose_form.lock_disclaimer": "Jouw account is niet {locked}. Iedereen kan jou volgen en kan de berichten zien die je alleen aan jouw volgers hebt gericht.",
"compose_form.lock_disclaimer.lock": "vergrendeld",
"compose_form.placeholder": "Wat wil je kwijt?",
- "compose_form.poll.add_option": "Keuze toevoegen",
+ "compose_form.poll.add_option": "Optie toevoegen",
"compose_form.poll.duration": "Duur van de peiling",
- "compose_form.poll.option_placeholder": "Keuze {number}",
- "compose_form.poll.remove_option": "Deze keuze verwijderen",
+ "compose_form.poll.multiple": "Meerkeuze",
+ "compose_form.poll.option_placeholder": "Optie {number}",
+ "compose_form.poll.remove_option": "Deze optie verwijderen",
+ "compose_form.poll.single": "Kies een",
"compose_form.poll.switch_to_multiple": "Peiling wijzigen om meerdere keuzes toe te staan",
"compose_form.poll.switch_to_single": "Peiling wijzigen om een enkele keuze toe te staan",
- "compose_form.publish": "Toot",
+ "compose_form.poll.type": "Stijl",
+ "compose_form.publish": "Plaatsen",
"compose_form.publish_form": "Nieuw bericht",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Wijzigingen opslaan",
- "compose_form.sensitive.hide": "{count, plural, one {Media als gevoelig markeren} other {Media als gevoelig markeren}}",
- "compose_form.sensitive.marked": "{count, plural, one {Media is als gevoelig gemarkeerd} other {Media is als gevoelig gemarkeerd}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {Media is niet als gevoelig gemarkeerd} other {Media is niet als gevoelig gemarkeerd}}",
+ "compose_form.reply": "Reageren",
+ "compose_form.save_changes": "Bijwerken",
"compose_form.spoiler.marked": "Inhoudswaarschuwing verwijderen",
"compose_form.spoiler.unmarked": "Inhoudswaarschuwing toevoegen",
- "compose_form.spoiler_placeholder": "Waarschuwingstekst",
+ "compose_form.spoiler_placeholder": "Waarschuwing inhoud (optioneel)",
"confirmation_modal.cancel": "Annuleren",
"confirmations.block.block_and_report": "Blokkeren en rapporteren",
"confirmations.block.confirm": "Blokkeren",
@@ -408,7 +407,6 @@
"navigation_bar.direct": "PrivÊberichten",
"navigation_bar.discover": "Ontdekken",
"navigation_bar.domain_blocks": "Geblokkeerde domeinen",
- "navigation_bar.edit_profile": "Profiel bewerken",
"navigation_bar.explore": "Verkennen",
"navigation_bar.favourites": "Favorieten",
"navigation_bar.filters": "Filters",
@@ -526,14 +524,15 @@
"poll_button.add_poll": "Peiling toevoegen",
"poll_button.remove_poll": "Peiling verwijderen",
"privacy.change": "Zichtbaarheid van bericht aanpassen",
- "privacy.direct.long": "Alleen aan vermelde gebruikers tonen",
- "privacy.direct.short": "PrivÊbericht",
- "privacy.private.long": "Alleen aan volgers tonen",
- "privacy.private.short": "Alleen volgers",
- "privacy.public.long": "Voor iedereen zichtbaar",
+ "privacy.direct.long": "Iedereen genoemd in de post",
+ "privacy.direct.short": "Specifieke mensen",
+ "privacy.private.long": "Alleen jouw volgers",
+ "privacy.private.short": "Volgers",
+ "privacy.public.long": "Iedereen op Mastodon en daarbuiten",
"privacy.public.short": "Openbaar",
- "privacy.unlisted.long": "Voor iedereen zichtbaar, maar niet onder trends, hashtags en op openbare tijdlijnen",
- "privacy.unlisted.short": "Minder openbaar",
+ "privacy.unlisted.additional": "Dit is vergelijkbaar met publiek, behalve dat de post niet zal verschijnen in live feeds of hashtags, verkennen of Mastodon zoeken, zelfs als je gekozen hebt voor account-breed.",
+ "privacy.unlisted.long": "Minder algoritmische fanfare",
+ "privacy.unlisted.short": "Stil publiek",
"privacy_policy.last_updated": "Laatst bijgewerkt op {date}",
"privacy_policy.title": "Privacybeleid",
"recommended": "Aanbevolen",
@@ -551,7 +550,9 @@
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
"relative_time.today": "vandaag",
+ "reply_indicator.attachments": "{count, plural, one {# bijlage} other {# bijlagen}}",
"reply_indicator.cancel": "Annuleren",
+ "reply_indicator.poll": "Peiling",
"report.block": "Blokkeren",
"report.block_explanation": "Je kunt diens berichten niet zien. Je kunt door diegene niet gevolgd worden en jouw berichten zijn onzichtbaar. Diegene kan zien dat die door jou is geblokkeerd.",
"report.categories.legal": "Juridisch",
@@ -715,10 +716,8 @@
"upload_error.poll": "Het uploaden van bestanden is bij peilingen niet toegestaan.",
"upload_form.audio_description": "Omschrijf dit voor dove of slechthorende mensen",
"upload_form.description": "Omschrijf dit voor blinde of slechtziende mensen",
- "upload_form.description_missing": "Geen omschrijving toegevoegd",
"upload_form.edit": "Bewerken",
"upload_form.thumbnail": "Miniatuurafbeelding wijzigen",
- "upload_form.undo": "Verwijderen",
"upload_form.video_description": "Omschrijf dit voor dove, slechthorende, blinde of slechtziende mensen",
"upload_modal.analyzing_picture": "Afbeelding analyserenâĻ",
"upload_modal.apply": "Toepassen",
diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json
index 3ef2f80ea..9bb4f5919 100644
--- a/app/javascript/mastodon/locales/nn.json
+++ b/app/javascript/mastodon/locales/nn.json
@@ -89,7 +89,6 @@
"announcement.announcement": "Kunngjering",
"attachments_list.unprocessed": "(ubehandla)",
"audio.hide": "Gøym lyd",
- "autosuggest_hashtag.per_week": "{count} per veke",
"boost_modal.combo": "Du kan trykkja {combo} for ÃĨ hoppa over dette neste gong",
"bundle_column_error.copy_stacktrace": "Kopier feilrapport",
"bundle_column_error.error.body": "Den etterspurde sida kan ikke hentast fram. Det kan skuldast ein feil i koden vÃĨr eller eit kompatibilitetsproblem.",
@@ -146,22 +145,22 @@
"compose_form.lock_disclaimer": "Kontoen din er ikkje {locked}. Kven som helst kan fylgja deg for ÃĨ sjÃĨ innlegga dine.",
"compose_form.lock_disclaimer.lock": "lÃĨst",
"compose_form.placeholder": "Kva har du pÃĨ hjarta?",
- "compose_form.poll.add_option": "Legg til eit val",
+ "compose_form.poll.add_option": "Legg til alternativ",
"compose_form.poll.duration": "Varigheit for rundspørjing",
- "compose_form.poll.option_placeholder": "Val {number}",
- "compose_form.poll.remove_option": "Fjern dette valet",
+ "compose_form.poll.multiple": "Flervalg",
+ "compose_form.poll.option_placeholder": "Valg {number}",
+ "compose_form.poll.remove_option": "Fjern dette valget",
+ "compose_form.poll.single": "Velg en",
"compose_form.poll.switch_to_multiple": "Endre rundspørjinga til ÃĨ tillate fleire val",
"compose_form.poll.switch_to_single": "Endre rundspørjinga til ÃĨ tillate berre eitt val",
- "compose_form.publish": "Legg ut",
+ "compose_form.poll.type": "Stil",
+ "compose_form.publish": "Publiser",
"compose_form.publish_form": "Legg ut",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Lagre endringar",
- "compose_form.sensitive.hide": "{count, plural, one {Marker mediet som ømtolig} other {Marker media som ømtolige}}",
- "compose_form.sensitive.marked": "{count, plural, one {Mediet er markert som ømtolig} other {Media er markerte som ømtolige}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {Mediet er ikkje markert som ømtolig} other {Media er ikkje markerte som ømtolige}}",
+ "compose_form.reply": "Svar",
+ "compose_form.save_changes": "Oppdater",
"compose_form.spoiler.marked": "Fjern innhaldsÃĨtvaring",
"compose_form.spoiler.unmarked": "Legg til innhaldsÃĨtvaring",
- "compose_form.spoiler_placeholder": "Skriv ÃĨtvaringa di her",
+ "compose_form.spoiler_placeholder": "Innholdsadvarsel (valgfritt)",
"confirmation_modal.cancel": "Avbryt",
"confirmations.block.block_and_report": "Blokker & rapporter",
"confirmations.block.confirm": "Blokker",
@@ -408,7 +407,6 @@
"navigation_bar.direct": "Private omtaler",
"navigation_bar.discover": "Oppdag",
"navigation_bar.domain_blocks": "Skjulte domene",
- "navigation_bar.edit_profile": "Rediger profil",
"navigation_bar.explore": "Utforsk",
"navigation_bar.favourites": "Favorittar",
"navigation_bar.filters": "MÃĨlbundne ord",
@@ -482,6 +480,7 @@
"onboarding.follows.empty": "Me kan ikkje visa deg nokon resultat no. Du kan prøva ÃĨ søkja eller bla gjennom utforsk-sida for ÃĨ finna folk ÃĨ fylgja, eller du kan prøva att seinare.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting pointâyou can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
+ "onboarding.profile.discoverable": "Gjør min profil synlig",
"onboarding.profile.display_name": "Synleg namn",
"onboarding.profile.display_name_hint": "Det fulle namnet eller kallenamnet dittâĻ",
"onboarding.profile.lead": "Du kan alltid fullføra dette seinare i innstillingane, og der er det endÃĨ fleire tilpassingsalternativ.",
@@ -524,16 +523,17 @@
"poll_button.add_poll": "Lag ei rundspørjing",
"poll_button.remove_poll": "Fjern rundspørjing",
"privacy.change": "Endre personvernet pÃĨ innlegg",
- "privacy.direct.long": "Synleg kun for omtala brukarar",
- "privacy.direct.short": "Kun nemnde personar",
- "privacy.private.long": "Kun synleg for fylgjarar",
- "privacy.private.short": "Kun fylgjarar",
- "privacy.public.long": "Synleg for alle",
+ "privacy.direct.long": "Alle nevnt i innlegget",
+ "privacy.direct.short": "Spesifikke folk",
+ "privacy.private.long": "Bare følgerne dine",
+ "privacy.private.short": "Følgere",
+ "privacy.public.long": "Alle pÃĨ og utenfor Mastodon",
"privacy.public.short": "Offentleg",
- "privacy.unlisted.long": "Synleg for alle, men blir ikkje vist i oppdagsfunksjonar",
- "privacy.unlisted.short": "Uoppført",
+ "privacy.unlisted.long": "FÃĻrre algoritmiske fanfarer",
+ "privacy.unlisted.short": "Stille offentlig",
"privacy_policy.last_updated": "Sist oppdatert {date}",
"privacy_policy.title": "Personvernsreglar",
+ "recommended": "Anbefalt",
"refresh": "Oppdater",
"regeneration_indicator.label": "LastarâĻ",
"regeneration_indicator.sublabel": "Heimetidslina di vert førebudd!",
@@ -548,7 +548,9 @@
"relative_time.minutes": "{number}min",
"relative_time.seconds": "{number}sek",
"relative_time.today": "i dag",
+ "reply_indicator.attachments": "{count, plural, one {# vedlegg} other {# vedlegg}}",
"reply_indicator.cancel": "Avbryt",
+ "reply_indicator.poll": "Avstemming",
"report.block": "Blokker",
"report.block_explanation": "Du vil ikkje kunne sjÃĨ innlegga deira. Dei vil ikkje kunne sjÃĨ innlegga dine eller fylgje deg. Dei kan sjÃĨ at dei er blokkert.",
"report.categories.legal": "Juridisk",
@@ -604,6 +606,7 @@
"search.quick_action.status_search": "Innlegg som samsvarer med {x}",
"search.search_or_paste": "Søk eller lim inn URL",
"search_popout.full_text_search_disabled_message": "Ikkje tilgjengeleg pÃĨ {domain}.",
+ "search_popout.full_text_search_logged_out_message": "Bare tilgjengelig nÃĨr man er logget inn.",
"search_popout.language_code": "ISO-sprÃĨkkode",
"search_popout.options": "Søkjealternativ",
"search_popout.quick_actions": "Hurtighandlinger",
@@ -711,10 +714,8 @@
"upload_error.poll": "Filopplasting er ikkje lov for rundspørjingar.",
"upload_form.audio_description": "Skildre for dei med nedsett høyrsel",
"upload_form.description": "Skildre for blinde og svaksynte",
- "upload_form.description_missing": "Inga skildring er lagt til",
"upload_form.edit": "Rediger",
"upload_form.thumbnail": "Bytt miniatyrbilete",
- "upload_form.undo": "Slett",
"upload_form.video_description": "Skildre for dei med nedsett høyrsel eller redusert syn",
"upload_modal.analyzing_picture": "Analyserer bileteâĻ",
"upload_modal.apply": "Bruk",
diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json
index 29eaeddff..8da9853be 100644
--- a/app/javascript/mastodon/locales/no.json
+++ b/app/javascript/mastodon/locales/no.json
@@ -32,6 +32,7 @@
"account.featured_tags.last_status_never": "Ingen Innlegg",
"account.featured_tags.title": "{name} sine fremhevede emneknagger",
"account.follow": "Følg",
+ "account.follow_back": "Følg tilbake",
"account.followers": "Følgere",
"account.followers.empty": "Ingen følger denne brukeren ennÃĨ.",
"account.followers_counter": "{count, plural, one {{counter} følger} other {{counter} følgere}}",
@@ -52,6 +53,7 @@
"account.mute_notifications_short": "Demp varsler",
"account.mute_short": "Demp",
"account.muted": "Dempet",
+ "account.mutual": "Gjensidig",
"account.no_bio": "Ingen beskrivelse oppgitt.",
"account.open_original_page": "GÃĨ til originalsiden",
"account.posts": "Innlegg",
@@ -66,7 +68,7 @@
"account.unblock_domain": "Opphev blokkering av {domain}",
"account.unblock_short": "Opphev blokkering",
"account.unendorse": "Ikke vis frem pÃĨ profilen",
- "account.unfollow": "Avfølg",
+ "account.unfollow": "Slutt ÃĨ følge",
"account.unmute": "Opphev demping av @{name}",
"account.unmute_notifications_short": "Opphev demping av varsler",
"account.unmute_short": "Opphev demping",
@@ -87,7 +89,6 @@
"announcement.announcement": "Kunngjøring",
"attachments_list.unprocessed": "(ubehandlet)",
"audio.hide": "Skjul lyd",
- "autosuggest_hashtag.per_week": "{count} per uke",
"boost_modal.combo": "You kan trykke {combo} for ÃĨ hoppe over dette neste gang",
"bundle_column_error.copy_stacktrace": "Kopier feilrapport",
"bundle_column_error.error.body": "Den forespurte siden kan ikke gjengis. Den kan skyldes en feil i vÃĨr kode eller et kompatibilitetsproblem med nettleseren.",
@@ -144,22 +145,22 @@
"compose_form.lock_disclaimer": "Din konto er ikke {locked}. Hvem som helst kan følge deg og se dine private poster.",
"compose_form.lock_disclaimer.lock": "lÃĨst",
"compose_form.placeholder": "Hva har du pÃĨ hjertet?",
- "compose_form.poll.add_option": "Legg til et valg",
+ "compose_form.poll.add_option": "Legg til alternativ",
"compose_form.poll.duration": "Avstemningens varighet",
+ "compose_form.poll.multiple": "Flervalg",
"compose_form.poll.option_placeholder": "Valg {number}",
"compose_form.poll.remove_option": "Fjern dette valget",
+ "compose_form.poll.single": "Velg en",
"compose_form.poll.switch_to_multiple": "Endre avstemning til ÃĨ tillate flere valg",
"compose_form.poll.switch_to_single": "Endre avstemning til ÃĨ tillate ett valg",
+ "compose_form.poll.type": "Stil",
"compose_form.publish": "Publiser",
"compose_form.publish_form": "Publiser",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Lagre endringer",
- "compose_form.sensitive.hide": "{count, plural,one {Merk media som følsomt} other {Merk medier som følsomme}}",
- "compose_form.sensitive.marked": "{count, plural,one {Mediet er merket som følsomt}other {Mediene er merket som følsomme}}",
- "compose_form.sensitive.unmarked": "{count, plural,one {Mediet er ikke merket som følsomt}other {Mediene er ikke merket som følsomme}}",
+ "compose_form.reply": "Svar",
+ "compose_form.save_changes": "Oppdater",
"compose_form.spoiler.marked": "Fjern innholdsvarsel",
"compose_form.spoiler.unmarked": "Legg til innholdsvarsel",
- "compose_form.spoiler_placeholder": "Skriv advarselen din her",
+ "compose_form.spoiler_placeholder": "Innholdsadvarsel (valgfritt)",
"confirmation_modal.cancel": "Avbryt",
"confirmations.block.block_and_report": "Blokker og rapporter",
"confirmations.block.confirm": "Blokkèr",
@@ -406,7 +407,6 @@
"navigation_bar.direct": "Private omtaler",
"navigation_bar.discover": "Oppdag",
"navigation_bar.domain_blocks": "Skjulte domener",
- "navigation_bar.edit_profile": "Rediger profil",
"navigation_bar.explore": "Utforsk",
"navigation_bar.favourites": "Favoritter",
"navigation_bar.filters": "Stilnede ord",
@@ -480,6 +480,7 @@
"onboarding.follows.empty": "Dessverre kan ingen resultater vises akkurat nÃĨ. Du kan prøve ÃĨ bruke søk eller bla gjennom utforske-siden for ÃĨ finne folk ÃĨ følge, eller prøve igjen senere.",
"onboarding.follows.lead": "Hjem-skjermen din er den viktigste mÃĨten ÃĨ oppleve Mastodon pÃĨ. Jo flere du følger, jo mer aktiv og interessant blir det. For ÃĨ komme i gang, er her noen forslag:",
"onboarding.follows.title": "PopulÃĻrt pÃĨ Mastodon",
+ "onboarding.profile.discoverable": "Gjør min profil synlig",
"onboarding.profile.display_name": "Visningsnavn",
"onboarding.profile.display_name_hint": "Ditt fulle navn eller ditt morsomme navnâĻ",
"onboarding.profile.lead": "Du kan alltid fullføre dette senere i innstillingene, der enda flere tilpasningsalternativer er tilgjengelige.",
@@ -522,16 +523,17 @@
"poll_button.add_poll": "Legg til en avstemning",
"poll_button.remove_poll": "Fjern avstemningen",
"privacy.change": "Juster synlighet",
- "privacy.direct.long": "Post kun til nevnte brukere",
- "privacy.direct.short": "Kun nevnte personer",
- "privacy.private.long": "Post kun til følgere",
- "privacy.private.short": "Kun følgere",
- "privacy.public.long": "Synlig for alle",
+ "privacy.direct.long": "Alle nevnt i innlegget",
+ "privacy.direct.short": "Spesifikke folk",
+ "privacy.private.long": "Bare følgerne dine",
+ "privacy.private.short": "Følgere",
+ "privacy.public.long": "Alle pÃĨ og utenfor Mastodon",
"privacy.public.short": "Offentlig",
- "privacy.unlisted.long": "Synlig for alle, men vises ikke i oppdagsfunksjoner",
- "privacy.unlisted.short": "Uoppført",
+ "privacy.unlisted.long": "FÃĻrre algoritmiske fanfarer",
+ "privacy.unlisted.short": "Stille offentlig",
"privacy_policy.last_updated": "Sist oppdatert {date}",
"privacy_policy.title": "Personvernregler",
+ "recommended": "Anbefalt",
"refresh": "Oppfrisk",
"regeneration_indicator.label": "LasterâĻ",
"regeneration_indicator.sublabel": "Dine tidslinje blir gjort klar!",
@@ -546,7 +548,9 @@
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
"relative_time.today": "i dag",
+ "reply_indicator.attachments": "{count, plural, one {# vedlegg} other {# vedlegg}}",
"reply_indicator.cancel": "Avbryt",
+ "reply_indicator.poll": "Avstemming",
"report.block": "Blokker",
"report.block_explanation": "Du kommer ikke til ÃĨ se innleggene deres. De vil ikke kunne se innleggene dine eller følge deg. De vil kunne se at de er blokkert.",
"report.categories.legal": "Juridisk",
@@ -602,6 +606,7 @@
"search.quick_action.status_search": "Innlegg som samsvarer med {x}",
"search.search_or_paste": "Søk eller lim inn URL",
"search_popout.full_text_search_disabled_message": "Ikke tilgjengelig pÃĨ {domain}.",
+ "search_popout.full_text_search_logged_out_message": "Bare tilgjengelig nÃĨr man er logget inn.",
"search_popout.language_code": "ISO sprÃĨkkode",
"search_popout.options": "Alternativer for søk",
"search_popout.quick_actions": "Hurtighandlinger",
@@ -709,10 +714,8 @@
"upload_error.poll": "Filopplasting er ikke tillatt for avstemninger.",
"upload_form.audio_description": "Beskriv det for folk med hørselstap",
"upload_form.description": "Beskriv for synshemmede",
- "upload_form.description_missing": "Ingen beskrivelse lagt til",
"upload_form.edit": "Rediger",
"upload_form.thumbnail": "Endre miniatyrbilde",
- "upload_form.undo": "Angre",
"upload_form.video_description": "Beskriv det for folk med hørselstap eller synshemminger",
"upload_modal.analyzing_picture": "Analyserer bildet âĻ",
"upload_modal.apply": "Bruk",
diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json
index 833bfe6ac..8660a3bc0 100644
--- a/app/javascript/mastodon/locales/oc.json
+++ b/app/javascript/mastodon/locales/oc.json
@@ -18,6 +18,7 @@
"account.blocked": "Blocat",
"account.browse_more_on_origin_server": "Navigar sul perfil original",
"account.cancel_follow_request": "Retirar la demanda dâabonament",
+ "account.copy": "Copiar lo ligam del perfil",
"account.direct": "Mencionar @{name} en privat",
"account.disable_notifications": "Quitar de mâavisar quand @{name} publica quicÃ˛m",
"account.domain_blocked": "Domeni amagat",
@@ -28,6 +29,7 @@
"account.featured_tags.last_status_never": "Cap de publicacion",
"account.featured_tags.title": "Etiquetas en avant de {name}",
"account.follow": "Sègre",
+ "account.follow_back": "Sègre en retorn",
"account.followers": "Seguidors",
"account.followers.empty": "Degun sèc pas aqueste utilizaire pel moment.",
"account.followers_counter": "{count, plural, one {{counter} Seguidor} other {{counter} Seguidors}}",
@@ -48,6 +50,7 @@
"account.mute_notifications_short": "Amudir las notificacions",
"account.mute_short": "Amudir",
"account.muted": "Mes en silenci",
+ "account.mutual": "Mutual",
"account.no_bio": "Cap de descripcion pas fornida.",
"account.open_original_page": "Dobrir la pagina dâorigina",
"account.posts": "Tuts",
@@ -77,7 +80,6 @@
"announcement.announcement": "AnÃŗncia",
"attachments_list.unprocessed": "(pas tractat)",
"audio.hide": "Amagar à udio",
- "autosuggest_hashtag.per_week": "{count} per setmana",
"boost_modal.combo": "Podètz botar {combo} per passar aquÃ˛ lo cÃ˛p que ven",
"bundle_column_error.copy_stacktrace": "Copiar senhalament dâavaria",
"bundle_column_error.error.title": "Oh nonâ¯!",
@@ -128,22 +130,12 @@
"compose_form.lock_disclaimer": "VÃ˛stre compte es pas {locked}. Tot lo mond pÃ˛t vos sègre e veire los estatuts reservats als seguidors.",
"compose_form.lock_disclaimer.lock": "clavat",
"compose_form.placeholder": "A de quÊ pensatz�",
- "compose_form.poll.add_option": "Ajustar una causida",
"compose_form.poll.duration": "Durada del sondatge",
- "compose_form.poll.option_placeholder": "Opcion {number}",
- "compose_form.poll.remove_option": "Levar aquesta opcion",
"compose_form.poll.switch_to_multiple": "Cambiar lo sondatge per permetre de causidas multiplas",
"compose_form.poll.switch_to_single": "Cambiar lo sondatge per permetre una sola causida",
- "compose_form.publish": "Publicar",
"compose_form.publish_form": "Publicar",
- "compose_form.publish_loud": "{publish}â¯!",
- "compose_form.save_changes": "Salvar los cambiaments",
- "compose_form.sensitive.hide": "Marcar coma sensible",
- "compose_form.sensitive.marked": "Lo mèdia es marcat coma sensible",
- "compose_form.sensitive.unmarked": "Lo mèdia es pas marcat coma sensible",
"compose_form.spoiler.marked": "Lo tèxte es rescondut jos lâavertiment",
"compose_form.spoiler.unmarked": "Lo tèxte es pas rescondut",
- "compose_form.spoiler_placeholder": "Escrivètz lâavertiment aquÃ",
"confirmation_modal.cancel": "Anullar",
"confirmations.block.block_and_report": "Blocar e senhalar",
"confirmations.block.confirm": "Blocar",
@@ -172,6 +164,7 @@
"conversation.mark_as_read": "Marcar coma legida",
"conversation.open": "Veire la conversacion",
"conversation.with": "Amb {names}",
+ "copy_icon_button.copied": "Copiat al quichapapièr",
"copypaste.copied": "Copiat",
"copypaste.copy_to_clipboard": "Copiar al quichapapièr",
"directory.federated": "Del fediverse conegut",
@@ -294,6 +287,8 @@
"keyboard_shortcuts.direct": "to open direct messages column",
"keyboard_shortcuts.down": "far davalar dins la lista",
"keyboard_shortcuts.enter": "dobrir los estatuts",
+ "keyboard_shortcuts.favourite": "Marcar coma favorit",
+ "keyboard_shortcuts.favourites": "Dobrir la lista dels favorits",
"keyboard_shortcuts.federated": "dobrir lo flux public global",
"keyboard_shortcuts.heading": "Acorchis clavièr",
"keyboard_shortcuts.home": "dobrir lo flux public local",
@@ -339,6 +334,7 @@
"lists.search": "Cercar demest lo mond que seguètz",
"lists.subheading": "VÃ˛stras listas",
"load_pending": "{count, plural, one {# nÃ˛u element} other {# nÃ˛u elements}}",
+ "loading_indicator.label": "CargamentâĻ",
"media_gallery.toggle_visible": "Modificar la visibilitat",
"mute_modal.duration": "Durada",
"mute_modal.hide_notifications": "Rescondre las notificacions dâaquesta personaâ¯?",
@@ -352,7 +348,6 @@
"navigation_bar.direct": "Mencions privadas",
"navigation_bar.discover": "Trobar",
"navigation_bar.domain_blocks": "Domenis resconduts",
- "navigation_bar.edit_profile": "Modificar lo perfil",
"navigation_bar.explore": "Explorar",
"navigation_bar.favourites": "Favorits",
"navigation_bar.filters": "Mots ignorats",
@@ -371,6 +366,7 @@
"not_signed_in_indicator.not_signed_in": "Devètz vos connectar per accedir a aquesta ressorsa.",
"notification.admin.report": "{name} senhalèt {target}",
"notification.admin.sign_up": "{name} se marquèt",
+ "notification.favourite": "{name} a mes vÃ˛stre estatut en favorit",
"notification.follow": "{name} vos sèc",
"notification.follow_request": "{name} a demandat a vos sègre",
"notification.mention": "{name} vos a mencionat",
@@ -423,6 +419,8 @@
"onboarding.compose.template": "Adiu #Mastodon !",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting pointâyou can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
+ "onboarding.profile.display_name": "Nom dâafichatge",
+ "onboarding.profile.note": "Biografia",
"onboarding.share.title": "Partejar vÃ˛stre perfil",
"onboarding.start.lead": "Your new Mastodon account is ready to go. Here's how you can make the most of it:",
"onboarding.start.skip": "Want to skip right ahead?",
@@ -447,14 +445,7 @@
"poll_button.add_poll": "Ajustar un sondatge",
"poll_button.remove_poll": "Levar lo sondatge",
"privacy.change": "Ajustar la confidencialitat del messatge",
- "privacy.direct.long": "Mostrar pas quâa las personas mencionadas",
- "privacy.direct.short": "Sonque per las personas mencionadas",
- "privacy.private.long": "Mostrar pas quâa vÃ˛stres seguidors",
- "privacy.private.short": "Sonque pels seguidors",
- "privacy.public.long": "Visiblas per totes",
"privacy.public.short": "Public",
- "privacy.unlisted.long": "Visible per totes mas desactivat per las foncionalitats de descobèrta",
- "privacy.unlisted.short": "Pas-listat",
"privacy_policy.last_updated": "Darrièra actualizacion {date}",
"privacy_policy.title": "Politica de confidencialitat",
"refresh": "Actualizar",
@@ -504,6 +495,7 @@
"report_notification.categories.spam": "Messatge indesirable",
"report_notification.categories.violation": "Violacion de las règlas",
"report_notification.open": "Dobrir lo senhalament",
+ "search.no_recent_searches": "Cap de recèrcas recentas",
"search.placeholder": "Recercar",
"search.search_or_paste": "Recercar o picar una URL",
"search_popout.language_code": "CÃ˛di ISO de lenga",
@@ -536,6 +528,7 @@
"status.copy": "Copiar lo ligam de lâestatut",
"status.delete": "Escafar",
"status.detailed_status": "Vista detalhada de la convèrsa",
+ "status.direct": "Mencionar @{name} en privat",
"status.direct_indicator": "Mencion privada",
"status.edit": "Modificar",
"status.edited": "Modificat {date}",
@@ -609,10 +602,8 @@
"upload_error.poll": "Lo mandadÃs de fichièr es pas autorizat pels sondatges.",
"upload_form.audio_description": "Descriure per las personas amb pèrdas auditivas",
"upload_form.description": "Descripcion pels mal vesents",
- "upload_form.description_missing": "Cap de descripcion pas aponduda",
"upload_form.edit": "Modificar",
"upload_form.thumbnail": "Cambiar la vinheta",
- "upload_form.undo": "Suprimir",
"upload_form.video_description": "Descriure per las personas amb pèrdas auditivas o mal vesent",
"upload_modal.analyzing_picture": "Analisi de lâimatgeâĻ",
"upload_modal.apply": "Aplicar",
@@ -626,6 +617,7 @@
"upload_modal.preview_label": "Apercebut ({ratio})",
"upload_progress.label": "MandadÃsâĻ",
"upload_progress.processing": "TractamentâĻ",
+ "username.taken": "Aqueste nom dâutilizaire es pres. Ensajatz-ne un autre",
"video.close": "Tampar la vidèo",
"video.download": "Telecargar lo fichièr",
"video.exit_fullscreen": "Sortir plen ecran",
diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json
index 132b695cd..de085cf98 100644
--- a/app/javascript/mastodon/locales/pa.json
+++ b/app/javascript/mastodon/locales/pa.json
@@ -67,9 +67,7 @@
"compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.",
"compose_form.lock_disclaimer.lock": "ā¨˛ā¨žā¨ ā¨šāŠ",
"compose_form.placeholder": "What is on your mind?",
- "compose_form.publish": "ā¨ĒāŠā¨°ā¨ā¨žā¨¸ā¨ŧ⍍ ā¨ā¨°āŠ",
"compose_form.publish_form": "Publish",
- "compose_form.save_changes": "⍤ā¨Ŧā¨ĻāŠā¨˛āŠā¨ā¨ ā¨¸ā¨žā¨ā¨āŠ",
"compose_form.spoiler.marked": "ā¨¸ā¨ŽāŠąā¨ā¨°āŠ ā¨āŠā¨¤ā¨žā¨ĩā¨¨āŠ ā¨¨āŠāа ā¨šā¨ā¨žā¨",
"compose_form.spoiler.unmarked": "ā¨¸ā¨ŽāŠąā¨ā¨°āŠ ā¨Ŧā¨žā¨°āŠ ā¨āŠā¨¤ā¨žā¨ĩā¨¨āŠ ā¨āŠāŠāŠ",
"confirmation_modal.cancel": "ā¨°āŠąā¨Ļ ā¨ā¨°āŠ",
@@ -188,7 +186,6 @@
"navigation_bar.direct": "⍍ā¨ŋāŠąā¨āŠ āŠā¨ŋā¨ā¨°",
"navigation_bar.discover": "ā¨āŠā¨",
"navigation_bar.domain_blocks": "ā¨Ēā¨žā¨ŦāŠ°ā¨ĻāŠ ā¨˛ā¨žā¨ ā¨ĄāŠā¨ŽāŠā¨¨",
- "navigation_bar.edit_profile": "ā¨Ē⍰āŠā¨Ģā¨žā¨ā¨˛ ⍍āŠāа ⍏āŠā¨§āŠ",
"navigation_bar.explore": "ā¨ĒāŠā¨āŠā¨˛ ā¨ā¨°āŠ",
"navigation_bar.favourites": "ā¨Žā¨¨ā¨Ēā¨¸āŠ°ā¨Ļ",
"navigation_bar.follow_requests": "ā¨Ģā¨ŧā¨žā¨˛āŠ ā¨ĻāŠā¨ā¨ ā¨ŦāŠā¨¨ā¨¤āŠā¨ā¨",
@@ -238,8 +235,6 @@
"poll.refresh": "ā¨¤ā¨žā¨ā¨ŧā¨ž ā¨ā¨°āŠ",
"poll.vote": "ā¨ĩāŠā¨ ā¨Ēā¨žā¨",
"privacy.change": "ā¨ĒāŠā¨¸ā¨ ā¨ĻāŠ ā¨Ē⍰ā¨ĻāŠā¨Ļā¨žā¨°āŠ ā¨¨āŠāа ā¨Ŧā¨Ļ⍞āŠ",
- "privacy.direct.short": "⍏ā¨ŋāŠąā¨§ā¨ž ⍞āŠā¨ā¨žā¨ ā¨Ļā¨ž āŠā¨ŋā¨ā¨° ā¨ā¨°āŠ",
- "privacy.private.short": "⍏ā¨ŋ⍰ā¨Ģā¨ŧ ā¨Ģā¨ŧā¨žā¨˛āŠā¨
⍰",
"privacy.public.short": "ā¨ā¨¨ā¨¤ā¨",
"privacy_policy.title": "ā¨Ē⍰ā¨ĻāŠā¨Ļā¨žā¨°āŠ ā¨¨āŠā¨¤āŠ",
"refresh": "ā¨¤ā¨žā¨ā¨ŧā¨ž ā¨ā¨°āŠ",
@@ -327,7 +322,6 @@
"upload_form.audio_description": "ā¨ŦāŠā¨˛ā¨ŧāŠ ā¨ā¨žā¨ ⍏āŠā¨Ŗā¨¨ ā¨ĩā¨ŋāŠąā¨ ā¨ŽāŠā¨ļā¨ā¨ŋ⍞ ā¨ĩā¨žā¨˛āŠ ā¨˛āŠā¨ā¨žā¨ ⍞⍠ā¨ĩāŠā¨°ā¨ĩāŠ",
"upload_form.description": "ā¨
āŠ°ā¨¨āŠā¨šāŠ ā¨ā¨žā¨ ā¨ĻāŠā¨ā¨Ŗ ā¨˛ā¨ ā¨ŽāŠā¨ļā¨ā¨˛ ā¨ĩā¨žā¨˛āŠ ā¨˛āŠā¨ā¨žā¨ ⍞⍠ā¨ĩāŠā¨°ā¨ĩāŠ",
"upload_form.edit": "⍏āŠā¨§",
- "upload_form.undo": "ā¨šā¨ā¨žā¨",
"upload_form.video_description": "ā¨ŦāŠā¨˛ā¨ŧāŠ, ⍏āŠā¨Ŗā¨¨ ā¨ĩā¨ŋāŠąā¨ ā¨ŽāŠā¨ļā¨ā¨ŋ⍞, ā¨
āŠ°ā¨¨āŠā¨šāŠ ā¨ā¨žā¨ ā¨āŠąā¨ ā¨¨ā¨ŋā¨āŠā¨šā¨ž ā¨ĩā¨žā¨˛āŠ ā¨˛āŠā¨ā¨žā¨ ⍞⍠ā¨ĩāŠā¨°ā¨ĩā¨ž",
"upload_modal.apply": "ā¨˛ā¨žā¨āŠ ā¨ā¨°āŠ",
"upload_modal.applying": "ā¨˛ā¨žā¨āŠ ā¨āŠā¨¤ā¨ž ā¨ā¨ž ⍰ā¨ŋā¨šā¨ž ā¨šāŠâĻ",
diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json
index 9a3710da7..2eaeeaab5 100644
--- a/app/javascript/mastodon/locales/pl.json
+++ b/app/javascript/mastodon/locales/pl.json
@@ -42,7 +42,7 @@
"account.go_to_profile": "PrzejdÅē do profilu",
"account.hide_reblogs": "Ukryj podbicia od @{name}",
"account.in_memoriam": "Ku pamiÄci.",
- "account.joined_short": "DoÅÄ
czony",
+ "account.joined_short": "DoÅÄ
czyÅ(a)",
"account.languages": "ZmieÅ subskrybowane jÄzyki",
"account.link_verified_on": "WÅasnoÅÄ tego odnoÅnika zostaÅa potwierdzona {date}",
"account.locked_info": "To konto jest prywatne. WÅaÅciciel rÄcznie wybiera kto moÅŧe go obserwowaÄ.",
@@ -89,7 +89,6 @@
"announcement.announcement": "OgÅoszenie",
"attachments_list.unprocessed": "(nieprzetworzone)",
"audio.hide": "Ukryj dÅēwiÄk",
- "autosuggest_hashtag.per_week": "{count} co tydzieÅ",
"boost_modal.combo": "NaciÅnij {combo}, aby pominÄ
Ä to nastÄpnym razem",
"bundle_column_error.copy_stacktrace": "Skopiuj raport o bÅÄdzie",
"bundle_column_error.error.body": "Nie moÅŧna zrenderowaÄ ÅŧÄ
danej strony. MoÅŧe to byÄ spowodowane bÅÄdem w naszym kodzie lub problemami z kompatybilnoÅciÄ
przeglÄ
darki.",
@@ -148,20 +147,19 @@
"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.multiple": "Wielokrotny wybÃŗr",
"compose_form.poll.option_placeholder": "Opcja {number}",
"compose_form.poll.remove_option": "UsuÅ tÄ opcjÄ",
+ "compose_form.poll.single": "Wybierz jednÄ
",
"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.poll.type": "Styl",
"compose_form.publish": "Opublikuj",
"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.reply": "Odpowiedz",
+ "compose_form.save_changes": "Aktualizuj",
"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",
@@ -408,7 +406,6 @@
"navigation_bar.direct": "Prywatne wzmianki",
"navigation_bar.discover": "Odkrywaj",
"navigation_bar.domain_blocks": "Ukryte domeny",
- "navigation_bar.edit_profile": "Edytuj profil",
"navigation_bar.explore": "Odkrywaj",
"navigation_bar.favourites": "Ulubione",
"navigation_bar.filters": "Wyciszone sÅowa",
@@ -492,7 +489,7 @@
"onboarding.profile.save_and_continue": "Zapisz i kontynuuj",
"onboarding.profile.title": "Ustawienia profilu",
"onboarding.profile.upload_avatar": "Dodaj zdjÄcie profilowe",
- "onboarding.profile.upload_header": "Dodaj zdjÄcie nagÅÃŗwkowe",
+ "onboarding.profile.upload_header": "Dodaj banner profilu",
"onboarding.share.lead": "Daj znaÄ ludziom, jak mogÄ
ciÄ znaleÅēÄ na Mastodonie!",
"onboarding.share.message": "Jestem {username} na #Mastodon! ÅledÅē mnie tutaj {url}",
"onboarding.share.next_steps": "MoÅŧliwe dalsze kroki:",
@@ -526,14 +523,11 @@
"poll_button.add_poll": "Dodaj gÅosowanie",
"poll_button.remove_poll": "UsuÅ gÅosowanie",
"privacy.change": "Dostosuj widocznoÅÄ wpisÃŗw",
- "privacy.direct.long": "Widoczny tylko dla wspomnianych",
- "privacy.direct.short": "Tylko wspomniane osoby",
- "privacy.private.long": "Widoczny tylko dla osÃŗb, ktÃŗre CiÄ obserwujÄ
",
- "privacy.private.short": "Tylko obserwujÄ
cy",
- "privacy.public.long": "Widoczne dla kaÅŧdego",
+ "privacy.direct.short": "Konkretni ludzie",
+ "privacy.private.long": "Tylko ci, ktÃŗrzy ciÄ obserwujÄ
",
+ "privacy.private.short": "ObserwujÄ
cy",
+ "privacy.public.long": "Ktokolwiek na i poza Mastodonem",
"privacy.public.short": "Publiczny",
- "privacy.unlisted.long": "Widoczne dla kaÅŧdego, z wyÅÄ
czeniem funkcji odkrywania",
- "privacy.unlisted.short": "Niewidoczny",
"privacy_policy.last_updated": "Data ostatniej aktualizacji: {date}",
"privacy_policy.title": "Polityka prywatnoÅci",
"recommended": "Zalecane",
@@ -715,10 +709,8 @@
"upload_error.poll": "DoÅÄ
czanie plikÃŗw nie dozwolone z gÅosowaniami.",
"upload_form.audio_description": "Opisz dla osÃŗb niesÅyszÄ
cych i niedosÅyszÄ
cych",
"upload_form.description": "WprowadÅē opis dla niewidomych i niedowidzÄ
cych",
- "upload_form.description_missing": "Nie dodano opisu",
"upload_form.edit": "Edytuj",
"upload_form.thumbnail": "ZmieÅ miniaturÄ",
- "upload_form.undo": "UsuÅ",
"upload_form.video_description": "Opisz dla osÃŗb niesÅyszÄ
cych, niedosÅyszÄ
cych, niewidomych i niedowidzÄ
cych",
"upload_modal.analyzing_picture": "Analizowanie obrazuâĻ",
"upload_modal.apply": "Zastosuj",
diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json
index 482cc8ee7..bb009239d 100644
--- a/app/javascript/mastodon/locales/pt-BR.json
+++ b/app/javascript/mastodon/locales/pt-BR.json
@@ -32,6 +32,7 @@
"account.featured_tags.last_status_never": "Sem publicaçÃĩes",
"account.featured_tags.title": "Hashtags em destaque de {name}",
"account.follow": "Seguir",
+ "account.follow_back": "Seguir de volta",
"account.followers": "Seguidores",
"account.followers.empty": "Nada aqui.",
"account.followers_counter": "{count, plural, one {{counter} seguidor} other {{counter} seguidores}}",
@@ -52,6 +53,7 @@
"account.mute_notifications_short": "Silenciar notificaçÃĩes",
"account.mute_short": "Silenciar",
"account.muted": "Silenciado",
+ "account.mutual": "MÃētuo",
"account.no_bio": "Nenhuma descriÃ§ÃŖo fornecida.",
"account.open_original_page": "Abrir a pÃĄgina original",
"account.posts": "Toots",
@@ -87,7 +89,6 @@
"announcement.announcement": "Comunicados",
"attachments_list.unprocessed": "(nÃŖo processado)",
"audio.hide": "Ocultar ÃĄudio",
- "autosuggest_hashtag.per_week": "{count} por semana",
"boost_modal.combo": "Pressione {combo} para pular isso na prÃŗxima vez",
"bundle_column_error.copy_stacktrace": "Copiar relatÃŗrio do erro",
"bundle_column_error.error.body": "A pÃĄgina solicitada nÃŖo pôde ser renderizada. Pode ser devido a um erro no nosso cÃŗdigo, ou um problema de compatibilidade do seu navegador.",
@@ -146,20 +147,20 @@
"compose_form.placeholder": "No que vocÃĒ estÃĄ pensando?",
"compose_form.poll.add_option": "Adicionar opÃ§ÃŖo",
"compose_form.poll.duration": "DuraÃ§ÃŖo da enquete",
+ "compose_form.poll.multiple": "MÃēltipla escolha",
"compose_form.poll.option_placeholder": "OpÃ§ÃŖo {number}",
- "compose_form.poll.remove_option": "Remover opÃ§ÃŖo",
+ "compose_form.poll.remove_option": "Remover esta opÃ§ÃŖo",
+ "compose_form.poll.single": "Escolha uma",
"compose_form.poll.switch_to_multiple": "Permitir mÃēltiplas escolhas",
"compose_form.poll.switch_to_single": "OpÃ§ÃŖo Ãēnica",
- "compose_form.publish": "Publicar",
+ "compose_form.poll.type": "Estilo",
+ "compose_form.publish": "PublicaÃ§ÃŖo",
"compose_form.publish_form": "Publicar",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Salvar alteraçÃĩes",
- "compose_form.sensitive.hide": "{count, plural, one {Marcar mÃdia como sensÃvel} other {Marcar mÃdias como sensÃvel}}",
- "compose_form.sensitive.marked": "{count, plural, one {MÃdia marcada como sensÃvel} other {MÃdias marcadas como sensÃvel}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {MÃdia nÃŖo estÃĄ marcada como sensÃvel} other {MÃdias nÃŖo estÃŖo marcadas como sensÃvel}}",
+ "compose_form.reply": "Resposta",
+ "compose_form.save_changes": "AtualizaÃ§ÃŖo",
"compose_form.spoiler.marked": "Com Aviso de ConteÃēdo",
"compose_form.spoiler.unmarked": "Sem Aviso de ConteÃēdo",
- "compose_form.spoiler_placeholder": "Aviso de ConteÃēdo aqui",
+ "compose_form.spoiler_placeholder": "Aviso de conteÃēdo (opcional)",
"confirmation_modal.cancel": "Cancelar",
"confirmations.block.block_and_report": "Bloquear e denunciar",
"confirmations.block.confirm": "Bloquear",
@@ -406,7 +407,6 @@
"navigation_bar.direct": "MençÃĩes privadas",
"navigation_bar.discover": "Descobrir",
"navigation_bar.domain_blocks": "DomÃnios bloqueados",
- "navigation_bar.edit_profile": "Editar perfil",
"navigation_bar.explore": "Explorar",
"navigation_bar.favourites": "Favoritos",
"navigation_bar.filters": "Palavras filtradas",
@@ -524,14 +524,12 @@
"poll_button.add_poll": "Adicionar enquete",
"poll_button.remove_poll": "Remover enquete",
"privacy.change": "Alterar privacidade do toot",
- "privacy.direct.long": "Postar sÃŗ para usuÃĄrios mencionados",
- "privacy.direct.short": "Apenas pessoas mencionadas",
- "privacy.private.long": "Postar sÃŗ para seguidores",
- "privacy.private.short": "Apenas seguidores",
- "privacy.public.long": "VisÃvel para todos",
+ "privacy.direct.long": "Todos mencionados na publicaÃ§ÃŖo",
+ "privacy.direct.short": "Pessoas especÃficas",
+ "privacy.private.long": "Apenas seus seguidores",
+ "privacy.private.short": "Seguidores",
+ "privacy.public.long": "Qualquer um dentro ou fora do Mastodon",
"privacy.public.short": "PÃēblico",
- "privacy.unlisted.long": "VisÃvel para todos, mas desativou os recursos de descoberta",
- "privacy.unlisted.short": "NÃŖo-listado",
"privacy_policy.last_updated": "Atualizado {date}",
"privacy_policy.title": "PolÃtica de privacidade",
"recommended": "Recomendado",
@@ -550,6 +548,7 @@
"relative_time.seconds": "{number}s",
"relative_time.today": "hoje",
"reply_indicator.cancel": "Cancelar",
+ "reply_indicator.poll": "Enquete",
"report.block": "Bloquear",
"report.block_explanation": "VocÃĒ nÃŖo verÃĄ suas publicaçÃĩes. Ele nÃŖo poderÃĄ ver suas publicaçÃĩes ou segui-lo, e serÃĄ capaz de perceber que estÃĄ bloqueado.",
"report.categories.legal": "JurÃdico",
@@ -713,10 +712,8 @@
"upload_error.poll": "MÃdias nÃŖo podem ser anexadas em toots com enquetes.",
"upload_form.audio_description": "Descrever para deficientes auditivos",
"upload_form.description": "Descrever para deficientes visuais",
- "upload_form.description_missing": "Sem descriÃ§ÃŖo",
"upload_form.edit": "Editar",
"upload_form.thumbnail": "Alterar miniatura",
- "upload_form.undo": "Excluir",
"upload_form.video_description": "Descrever para deficientes auditivos ou visuais",
"upload_modal.analyzing_picture": "Analisando imagemâĻ",
"upload_modal.apply": "Aplicar",
diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json
index a6d0ffee9..22bb1bbfd 100644
--- a/app/javascript/mastodon/locales/pt-PT.json
+++ b/app/javascript/mastodon/locales/pt-PT.json
@@ -89,7 +89,6 @@
"announcement.announcement": "AnÃēncio",
"attachments_list.unprocessed": "(nÃŖo processado)",
"audio.hide": "Ocultar ÃĄudio",
- "autosuggest_hashtag.per_week": "{count} por semana",
"boost_modal.combo": "Pode clicar {combo} para nÃŖo voltar a ver",
"bundle_column_error.copy_stacktrace": "Copiar relatÃŗrio de erros",
"bundle_column_error.error.body": "A pÃĄgina solicitada nÃŖo pôde ser sintetizada. Isto pode ser devido a uma falha no nosso cÃŗdigo ou a um problema de compatibilidade com o navegador.",
@@ -146,22 +145,22 @@
"compose_form.lock_disclaimer": "A sua conta nÃŖo Ê {locked}. Qualquer pessoa pode segui-lo e ver as publicaçÃĩes direcionadas apenas a seguidores.",
"compose_form.lock_disclaimer.lock": "fechada",
"compose_form.placeholder": "Em que estÃĄ a pensar?",
- "compose_form.poll.add_option": "Adicionar uma opÃ§ÃŖo",
+ "compose_form.poll.add_option": "Adicionar opÃ§ÃŖo",
"compose_form.poll.duration": "DuraÃ§ÃŖo do inquÊrito",
+ "compose_form.poll.multiple": "Escolha mÃēltipla",
"compose_form.poll.option_placeholder": "OpÃ§ÃŖo {number}",
"compose_form.poll.remove_option": "Eliminar esta opÃ§ÃŖo",
+ "compose_form.poll.single": "Escolha uma",
"compose_form.poll.switch_to_multiple": "Alterar o inquÊrito para permitir vÃĄrias respostas",
"compose_form.poll.switch_to_single": "Alterar o inquÊrito para permitir uma Ãēnica resposta",
+ "compose_form.poll.type": "Estilo",
"compose_form.publish": "Publicar",
"compose_form.publish_form": "Publicar",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Guardar alteraçÃĩes",
- "compose_form.sensitive.hide": "Marcar media como sensÃvel",
- "compose_form.sensitive.marked": "Media marcada como sensÃvel",
- "compose_form.sensitive.unmarked": "Media nÃŖo estÃĄ marcada como sensÃvel",
+ "compose_form.reply": "Responder",
+ "compose_form.save_changes": "Atualizar",
"compose_form.spoiler.marked": "Texto escondido atrÃĄs de aviso",
"compose_form.spoiler.unmarked": "Juntar um aviso de conteÃēdo",
- "compose_form.spoiler_placeholder": "Escreva o seu aviso aqui",
+ "compose_form.spoiler_placeholder": "Aviso de conteÃēdo (opcional)",
"confirmation_modal.cancel": "Cancelar",
"confirmations.block.block_and_report": "Bloquear e Denunciar",
"confirmations.block.confirm": "Bloquear",
@@ -408,7 +407,6 @@
"navigation_bar.direct": "MençÃĩes privadas",
"navigation_bar.discover": "Descobrir",
"navigation_bar.domain_blocks": "DomÃnios escondidos",
- "navigation_bar.edit_profile": "Editar perfil",
"navigation_bar.explore": "Explorar",
"navigation_bar.favourites": "Favoritos",
"navigation_bar.filters": "Palavras silenciadas",
@@ -526,14 +524,15 @@
"poll_button.add_poll": "Adicionar votaÃ§ÃŖo",
"poll_button.remove_poll": "Remover sondagem",
"privacy.change": "Ajustar a privacidade da publicaÃ§ÃŖo",
- "privacy.direct.long": "Apenas para utilizadores mencionados",
- "privacy.direct.short": "Apenas pessoas mencionadas",
- "privacy.private.long": "Apenas para os seguidores",
- "privacy.private.short": "Apenas seguidores",
- "privacy.public.long": "VisÃvel para todos",
+ "privacy.direct.long": "Todos os mencionados na publicaÃ§ÃŖo",
+ "privacy.direct.short": "Pessoas especÃficas",
+ "privacy.private.long": "Apenas os seus seguidores",
+ "privacy.private.short": "Seguidores",
+ "privacy.public.long": "Qualquer pessoa no Mastodon ou nÃŖo",
"privacy.public.short": "PÃēblico",
- "privacy.unlisted.long": "VisÃvel para todos, mas nÃŖo incluir em funcionalidades de divulgaÃ§ÃŖo",
- "privacy.unlisted.short": "NÃŖo listar",
+ "privacy.unlisted.additional": "Isto comporta-se exatamente como pÃēblico, exceto que a publicaÃ§ÃŖo nÃŖo aparecerÃĄ em feeds nem em etiquetas, explorar ou pesquisa Mastodon, mesmo que tenha optado por isso na sua conta.",
+ "privacy.unlisted.long": "Menos fanfarras algorÃtmicas",
+ "privacy.unlisted.short": "PÃēblico silencioso",
"privacy_policy.last_updated": "Ãltima atualizaÃ§ÃŖo em {date}",
"privacy_policy.title": "PolÃtica de privacidade",
"recommended": "Recomendado",
@@ -551,7 +550,9 @@
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
"relative_time.today": "hoje",
+ "reply_indicator.attachments": "{count, plural, one {# anexo} other {# anexos}}",
"reply_indicator.cancel": "Cancelar",
+ "reply_indicator.poll": "Sondagem",
"report.block": "Bloquear",
"report.block_explanation": "NÃŖo verÃĄ as publicaçÃĩes deles. Eles nÃŖo serÃŖo capazes de ver suas publicaçÃĩes ou de o seguir. Eles vÃŖo conseguir saber que estÃŖo bloqueados.",
"report.categories.legal": "Legal",
@@ -715,10 +716,8 @@
"upload_error.poll": "O carregamento de ficheiros nÃŖo Ê permitido em sondagens.",
"upload_form.audio_description": "Descreva para pessoas com diminuiÃ§ÃŖo da acuidade auditiva",
"upload_form.description": "Descreva para pessoas com diminuiÃ§ÃŖo da acuidade visual",
- "upload_form.description_missing": "Nenhuma descriÃ§ÃŖo adicionada",
"upload_form.edit": "Editar",
"upload_form.thumbnail": "Alterar miniatura",
- "upload_form.undo": "Eliminar",
"upload_form.video_description": "Descreva para pessoas com diminuiÃ§ÃŖo da acuidade auditiva ou visual",
"upload_modal.analyzing_picture": "A analizar imagemâĻ",
"upload_modal.apply": "Aplicar",
diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json
index 88dbfa4b8..e6d881a98 100644
--- a/app/javascript/mastodon/locales/ro.json
+++ b/app/javascript/mastodon/locales/ro.json
@@ -76,7 +76,6 @@
"announcement.announcement": "AnunČ",
"attachments_list.unprocessed": "(neprocesate)",
"audio.hide": "Ascunde audio",
- "autosuggest_hashtag.per_week": "{count} pe sÄptÄmÃĸnÄ",
"boost_modal.combo": "PoČi apÄsa {combo} pentru a sÄri peste asta data viitoare",
"bundle_column_error.copy_stacktrace": "CopiazÄ raportul de eroare",
"bundle_column_error.error.body": "Pagina solicitatÄ nu a putut fi randatÄ. Ar putea fi cauzatÄ de o eroare ÃŽn codul nostru sau de o problemÄ de compatibilitate cu browser-ul.",
@@ -131,22 +130,12 @@
"compose_form.lock_disclaimer": "Contul tÄu nu este {locked}. Oricine se poate abona la tine pentru a ÃŽČi vedea postÄrile numai pentru abonaČi.",
"compose_form.lock_disclaimer.lock": "privat",
"compose_form.placeholder": "La ce te gÃĸndeČti?",
- "compose_form.poll.add_option": "AdaugÄ o opČiune",
"compose_form.poll.duration": "Durata sondajului",
- "compose_form.poll.option_placeholder": "OpČiunea {number}",
- "compose_form.poll.remove_option": "EliminÄ acestÄ opČiune",
"compose_form.poll.switch_to_multiple": "ModificÄ sondajul pentru a permite mai multe opČiuni",
"compose_form.poll.switch_to_single": "ModificÄ sondajul pentru a permite o singurÄ opČiune",
- "compose_form.publish": "PublicÄ",
"compose_form.publish_form": "PublicÄ",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "SalveazÄ modificÄrile",
- "compose_form.sensitive.hide": "{count, plural, one {MarcheazÄ conČinutul media ca fiind sensibil} few {MarcheazÄ conČinuturile media ca fiind sensibile} other {MarcheazÄ conČinuturile media ca fiind sensibile}}",
- "compose_form.sensitive.marked": "{count, plural, one {ConČinutul media este marcat ca fiind sensibil} other {ConČinuturile media sunt marcate ca fiind sensibile}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {ConČinutul media nu este marcat ca fiind sensibil} other {ConČinuturile media nu sunt marcate ca fiind sensibile}}",
"compose_form.spoiler.marked": "EliminÄ avertismentul privind conČinutul",
"compose_form.spoiler.unmarked": "AdaugÄ un avertisment privind conČinutul",
- "compose_form.spoiler_placeholder": "Scrie avertismentul aici",
"confirmation_modal.cancel": "AnuleazÄ",
"confirmations.block.block_and_report": "BlocheazÄ Či raporteazÄ",
"confirmations.block.confirm": "BlocheazÄ",
@@ -365,7 +354,6 @@
"navigation_bar.compose": "Compune o nouÄ postare",
"navigation_bar.discover": "DescoperÄ",
"navigation_bar.domain_blocks": "Domenii blocate",
- "navigation_bar.edit_profile": "ModificÄ profilul",
"navigation_bar.explore": "ExploreazÄ",
"navigation_bar.filters": "Cuvinte ignorate",
"navigation_bar.follow_requests": "Cereri de abonare",
@@ -461,14 +449,7 @@
"poll_button.add_poll": "AdaugÄ un sondaj",
"poll_button.remove_poll": "EliminÄ sondajul",
"privacy.change": "ModificÄ confidenČialitatea postÄrii",
- "privacy.direct.long": "Vizibil doar pentru utilizatorii menČionaČi",
- "privacy.direct.short": "Doar persoane menČionate",
- "privacy.private.long": "Vizibil doar pentru abonaČi",
- "privacy.private.short": "Doar abonaČi",
- "privacy.public.long": "Vizibil pentru toČi",
"privacy.public.short": "Public",
- "privacy.unlisted.long": "Vizibil pentru toČi dar fÄrÄ funcČii de descoperire",
- "privacy.unlisted.short": "Nelistat",
"privacy_policy.last_updated": "Ultima actualizare ÃŽn data de {date}",
"privacy_policy.title": "PoliticÄ de confidenČialitate",
"refresh": "ReÃŽncarcÄ",
@@ -641,10 +622,8 @@
"upload_error.poll": "ÃncÄrcarea fiČierului nu este permisÄ cu sondaje.",
"upload_form.audio_description": "Descrie pentru persoanele cu deficienČÄ a auzului",
"upload_form.description": "AdaugÄ o descriere pentru persoanele cu deficienČe de vedere",
- "upload_form.description_missing": "Nicio descriere adÄugatÄ",
"upload_form.edit": "ModificÄ",
"upload_form.thumbnail": "SchimbÄ miniatura",
- "upload_form.undo": "Čterge",
"upload_form.video_description": "AdaugÄ o descriere pentru persoanele cu deficienČe vizuale sau auditive",
"upload_modal.analyzing_picture": "Se analizeazÄ imagineaâĻ",
"upload_modal.apply": "AplicÄ",
diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json
index 37a8328c9..eefa9c729 100644
--- a/app/javascript/mastodon/locales/ru.json
+++ b/app/javascript/mastodon/locales/ru.json
@@ -32,6 +32,7 @@
"account.featured_tags.last_status_never": "ĐĐĩŅ ĐŋĐžŅŅОв",
"account.featured_tags.title": "ĐСйŅаĐŊĐŊŅĐĩ Ņ
ŅŅŅĐĩĐŗĐ¸ {name}",
"account.follow": "ĐОдĐŋиŅаŅŅŅŅ",
+ "account.follow_back": "ĐОдĐŋиŅаŅŅŅŅ Đ˛ ĐžŅвĐĩŅ",
"account.followers": "ĐОдĐŋиŅŅиĐēи",
"account.followers.empty": "Đа ŅŅĐžĐŗĐž ĐŋĐžĐģŅСОваŅĐĩĐģŅ ĐŋĐžĐēа ĐŊиĐēŅĐž ĐŊĐĩ ĐŋОдĐŋиŅаĐŊ.",
"account.followers_counter": "{count, plural, one {{counter} ĐŋОдĐŋиŅŅиĐē} many {{counter} ĐŋОдĐŋиŅŅиĐēОв} other {{counter} ĐŋОдĐŋиŅŅиĐēа}}",
@@ -52,6 +53,7 @@
"account.mute_notifications_short": "ĐŅĐēĐģŅŅиŅŅ ŅвĐĩĐ´ĐžĐŧĐģĐĩĐŊиŅ",
"account.mute_short": "ĐĐĩĐŧОК",
"account.muted": "ĐĐŗĐŊĐžŅиŅŅĐĩŅŅŅ",
+ "account.mutual": "ĐСаиĐŧĐŊĐž",
"account.no_bio": "ĐĐŋиŅаĐŊиĐĩ ĐŊĐĩ ĐŋŅĐĩĐ´ĐžŅŅавĐģĐĩĐŊĐž.",
"account.open_original_page": "ĐŅĐēŅŅŅŅ Đ¸ŅŅ
ОдĐŊŅŅ ŅŅŅаĐŊиŅŅ",
"account.posts": "ĐĐžŅŅŅ",
@@ -87,7 +89,6 @@
"announcement.announcement": "ĐĐąŅŅвĐģĐĩĐŊиĐĩ",
"attachments_list.unprocessed": "(ĐŊĐĩ ОйŅайОŅаĐŊ)",
"audio.hide": "ĐĄĐēŅŅŅŅ Đ°ŅдиО",
- "autosuggest_hashtag.per_week": "{count} / ĐŊĐĩĐ´ĐĩĐģŅ",
"boost_modal.combo": "{combo}, ŅŅĐžĐąŅ ĐŋŅĐžĐŋŅŅŅиŅŅ ŅŅĐž в ŅĐģĐĩĐ´ŅŅŅиК ŅаС",
"bundle_column_error.copy_stacktrace": "ĐĄĐēĐžĐŋиŅОваŅŅ ĐžŅŅĐĩŅ ĐžĐą ĐžŅийĐēĐĩ",
"bundle_column_error.error.body": "ĐаĐŋŅĐžŅĐĩĐŊĐŊĐ°Ņ ŅŅŅаĐŊиŅа ĐŊĐĩ ĐŧĐžĐļĐĩŅ ĐąŅŅŅ ĐžŅОйŅаĐļĐĩĐŊа. ĐŅĐž ĐŧĐžĐļĐĩŅ ĐąŅŅŅ Đ˛ŅСваĐŊĐž ĐžŅийĐēОК в ĐŊаŅĐĩĐŧ ĐēОдĐĩ иĐģи ĐŋŅОйĐģĐĩĐŧОК ŅОвĐŧĐĩŅŅиĐŧĐžŅŅи ĐąŅаŅСĐĩŅа.",
@@ -144,22 +145,12 @@
"compose_form.lock_disclaimer": "ĐаŅа ŅŅŅŅĐŊĐ°Ņ ĐˇĐ°ĐŋиŅŅ {locked}. ĐŅйОК ĐŋĐžĐģŅСОваŅĐĩĐģŅ ŅĐŧĐžĐļĐĩŅ ĐŋОдĐŋиŅаŅŅŅŅ ĐŊа Đ˛Đ°Ņ Đ¸ ĐŋŅĐžŅĐŧаŅŅиваŅŅ ĐŋĐžŅŅŅ Đ´ĐģŅ ĐŋОдĐŋиŅŅиĐēОв.",
"compose_form.lock_disclaimer.lock": "ĐŊĐĩ СаĐēŅŅŅа",
"compose_form.placeholder": "Đ ŅŅĐŧ Đ´ŅĐŧаĐĩŅĐĩ?",
- "compose_form.poll.add_option": "ĐОйавиŅŅ Đ˛Đ°ŅиаĐŊŅ",
"compose_form.poll.duration": "ĐŅОдОĐģĐļиŅĐĩĐģŅĐŊĐžŅŅŅ ĐžĐŋŅĐžŅа",
- "compose_form.poll.option_placeholder": "ĐаŅиаĐŊŅ {number}",
- "compose_form.poll.remove_option": "ĐŖĐąŅаŅŅ ŅŅĐžŅ Đ˛Đ°ŅиаĐŊŅ",
"compose_form.poll.switch_to_multiple": "РаСŅĐĩŅиŅŅ Đ˛ŅĐąĐžŅ ĐŊĐĩŅĐēĐžĐģŅĐēиŅ
ваŅиаĐŊŅОв",
"compose_form.poll.switch_to_single": "ĐĐĩŅĐĩĐēĐģŅŅиŅŅ Đ˛ ŅĐĩĐļиĐŧ вŅйОŅа ОдĐŊĐžĐŗĐž ĐžŅвĐĩŅа",
- "compose_form.publish": "ĐĐŋŅĐąĐģиĐēОваŅŅ",
"compose_form.publish_form": "ĐĐŋŅĐąĐģиĐēОваŅŅ",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "ĐĄĐžŅ
ŅаĐŊиŅŅ",
- "compose_form.sensitive.hide": "{count, plural, one {ĐŅĐŧĐĩŅиŅŅ ĐŧĐĩдиŅаКĐģ ĐēаĐē Đ´ĐĩĐģиĐēаŅĐŊŅĐš} other {ĐŅĐŧĐĩŅиŅŅ ĐŧĐĩдиŅаКĐģŅ ĐēаĐē Đ´ĐĩĐģиĐēаŅĐŊŅĐĩ}}",
- "compose_form.sensitive.marked": "ĐĐĩдиа{count, plural, =1 {ŅаКĐģ ĐžŅĐŧĐĩŅĐĩĐŊ} other {ŅаКĐģŅ ĐžŅĐŧĐĩŅĐĩĐŊŅ}} ĐēаĐē ÂĢĐ´ĐĩĐģиĐēаŅĐŊĐžĐŗĐž Ņ
аŅаĐēŅĐĩŅаÂģ",
- "compose_form.sensitive.unmarked": "ĐĐĩдиа{count, plural, =1 {ŅаКĐģ ĐŊĐĩ ĐžŅĐŧĐĩŅĐĩĐŊ} other {ŅаКĐģŅ ĐŊĐĩ ĐžŅĐŧĐĩŅĐĩĐŊŅ}} ĐēаĐē ÂĢĐ´ĐĩĐģиĐēаŅĐŊĐžĐŗĐž Ņ
аŅаĐēŅĐĩŅаÂģ",
"compose_form.spoiler.marked": "ĐĸĐĩĐēŅŅ ŅĐēŅŅŅ ĐˇĐ° ĐŋŅĐĩĐ´ŅĐŋŅĐĩĐļĐ´ĐĩĐŊиĐĩĐŧ",
"compose_form.spoiler.unmarked": "ĐĸĐĩĐēŅŅ ĐŊĐĩ ŅĐēŅŅŅ",
- "compose_form.spoiler_placeholder": "ĐĸĐĩĐēŅŅ ĐŋŅĐĩĐ´ŅĐŋŅĐĩĐļĐ´ĐĩĐŊиŅ",
"confirmation_modal.cancel": "ĐŅĐŧĐĩĐŊа",
"confirmations.block.block_and_report": "ĐайĐģĐžĐēиŅОваŅŅ Đ¸ ĐŋĐžĐļаĐģОваŅŅŅŅ",
"confirmations.block.confirm": "ĐайĐģĐžĐēиŅОваŅŅ",
@@ -406,7 +397,6 @@
"navigation_bar.direct": "ĐиŅĐŊŅĐĩ ŅĐŋĐžĐŧиĐŊаĐŊиŅ",
"navigation_bar.discover": "ĐСŅŅаКŅĐĩ",
"navigation_bar.domain_blocks": "ĐĄĐēŅŅŅŅĐĩ Đ´ĐžĐŧĐĩĐŊŅ",
- "navigation_bar.edit_profile": "ĐСĐŧĐĩĐŊиŅŅ ĐŋŅĐžŅиĐģŅ",
"navigation_bar.explore": "ĐйСОŅ",
"navigation_bar.favourites": "ĐСйŅаĐŊĐŊŅĐĩ",
"navigation_bar.filters": "ĐĐŗĐŊĐžŅиŅŅĐĩĐŧŅĐĩ ŅĐģОва",
@@ -524,14 +514,7 @@
"poll_button.add_poll": "ĐОйавиŅŅ ĐžĐŋŅĐžŅ",
"poll_button.remove_poll": "ĐŖĐ´Đ°ĐģиŅŅ ĐžĐŋŅĐžŅ",
"privacy.change": "ĐСĐŧĐĩĐŊиŅŅ Đ˛Đ¸Đ´Đ¸ĐŧĐžŅŅŅ ĐŋĐžŅŅа",
- "privacy.direct.long": "ĐĐžĐēаСаŅŅ ŅĐžĐģŅĐēĐž ŅĐŋĐžĐŧŅĐŊŅŅŅĐŧ",
- "privacy.direct.short": "ĐĸĐžĐģŅĐēĐž ŅĐŋĐžĐŧŅĐŊŅŅŅĐĩ",
- "privacy.private.long": "ĐĐžĐēаСаŅŅ ŅĐžĐģŅĐēĐž ĐŋОдĐŋиŅŅиĐēаĐŧ",
- "privacy.private.short": "ĐĐģŅ ĐŋОдĐŋиŅŅиĐēОв",
- "privacy.public.long": "ĐидĐĩĐŊ вŅĐĩĐŧ",
"privacy.public.short": "ĐŅĐąĐģиŅĐŊŅĐš",
- "privacy.unlisted.long": "ĐидĐĩĐŊ вŅĐĩĐŧ, ĐŊĐž ĐŊĐĩ ŅĐĩŅĐĩС ŅŅĐŊĐēŅии ОйСОŅа",
- "privacy.unlisted.short": "ĐĄĐēŅŅŅŅĐš",
"privacy_policy.last_updated": "ĐĐžŅĐģĐĩĐ´ĐŊĐĩĐĩ ОйĐŊОвĐģĐĩĐŊиĐĩ {date}",
"privacy_policy.title": "ĐĐžĐģиŅиĐēа ĐēĐžĐŊŅидĐĩĐŊŅиаĐģŅĐŊĐžŅŅи",
"recommended": "Đ ĐĩĐēĐžĐŧĐĩĐŊĐ´ŅĐĩŅŅŅ",
@@ -713,10 +696,8 @@
"upload_error.poll": "Đ ĐžĐŋŅĐžŅаĐŧ ĐŊĐĩĐģŅĐˇŅ ĐŋŅиĐēŅĐĩĐŋĐģŅŅŅ ŅаКĐģŅ.",
"upload_form.audio_description": "ĐĐŋиŅиŅĐĩ аŅдиОŅаКĐģ Đ´ĐģŅ ĐģŅĐ´ĐĩĐš Ņ ĐŊаŅŅŅĐĩĐŊиĐĩĐŧ ŅĐģŅŅ
а",
"upload_form.description": "ĐОйавŅŅĐĩ ĐžĐŋиŅаĐŊиĐĩ Đ´ĐģŅ ĐģŅĐ´ĐĩĐš Ņ ĐŊаŅŅŅĐĩĐŊиŅĐŧи СŅĐĩĐŊиŅ:",
- "upload_form.description_missing": "ĐĐŋиŅаĐŊиĐĩ ĐŊĐĩ дОйавĐģĐĩĐŊĐž",
"upload_form.edit": "ĐСĐŧĐĩĐŊиŅŅ",
"upload_form.thumbnail": "ĐСĐŧĐĩĐŊиŅŅ ĐžĐąĐģĐžĐļĐēŅ",
- "upload_form.undo": "ĐŅĐŧĐĩĐŊиŅŅ",
"upload_form.video_description": "ĐĐŋиŅиŅĐĩ видĐĩĐž Đ´ĐģŅ ĐģŅĐ´ĐĩĐš Ņ ĐŊаŅŅŅĐĩĐŊиĐĩĐŧ ŅĐģŅŅ
а иĐģи СŅĐĩĐŊиŅ",
"upload_modal.analyzing_picture": "ĐĐąŅайОŅĐēа иСОйŅаĐļĐĩĐŊиŅâĻ",
"upload_modal.apply": "ĐŅиĐŧĐĩĐŊиŅŅ",
diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json
index 051ec5d6f..469930c3e 100644
--- a/app/javascript/mastodon/locales/sa.json
+++ b/app/javascript/mastodon/locales/sa.json
@@ -77,7 +77,6 @@
"announcement.announcement": "ā¤ā¤ĻāĨā¤āĨā¤ˇā¤Ŗā¤ž",
"attachments_list.unprocessed": "(ā¤
ā¤ĒāĨ⤰ā¤āĨā¤¤ā¤ŽāĨ)",
"audio.hide": "⤧āĨā¤ĩ⤍ā¤ŋ⤠ā¤ĒāĨ⤰ā¤āĨā¤ā¤žā¤Ļ⤝",
- "autosuggest_hashtag.per_week": "{count} ā¤ĒāĨ⤰⤤ā¤ŋ⤏ā¤ĒāĨā¤¤ā¤žā¤šāĨ",
"boost_modal.combo": "{combo} ā¤
⤤āĨ⤰ ⤏āĨā¤ĒāĨ⤰⤎āĨā¤āĨ⤠ā¤ļā¤āĨ⤝⤤āĨ, ⤤āĨ⤝ā¤āĨ⤤āĨā¤ŽāĨā¤¤ā¤Žā¤¨āĨ⤝⤏āĨā¤Žā¤ŋ⤍āĨ ā¤¸ā¤Žā¤¯āĨ",
"bundle_column_error.copy_stacktrace": "⤤āĨ⤰āĨā¤āĨā¤¯ā¤žā¤ĩāĨā¤Ļ⤍⤠ā¤ĒāĨ⤰⤤ā¤ŋ⤞ā¤ŋā¤Ēā¤ŋā¤āĨā¤āĨ⤰āĨ",
"bundle_column_error.error.body": "ā¤
⤍āĨ⤰āĨ⤧ā¤ŋ⤤⤠ā¤ĒāĨ⤎āĨ⤠⤠ā¤ĒāĨ⤰⤤ā¤ŋā¤Ēā¤žā¤Ļ⤝ā¤ŋ⤤āĨ⤠⤍ ā¤ļā¤āĨ⤝⤤āĨāĨ¤ ā¤
⤏āĨā¤Žā¤žā¤ā¤ ā¤āĨā¤Ąā¤ŋ ā¤ĻāĨ⤎⤏āĨ⤝ ā¤ā¤žā¤°ā¤ŖāĨ⤍, ā¤
ā¤Ĩā¤ĩā¤ž ā¤ŦāĨā¤°ā¤žā¤ā¤ā¤°āĨ ⤏ā¤ā¤ā¤¤ā¤¤ā¤žā¤¯ā¤žā¤¸āĨā¤¸ā¤Žā¤¸āĨā¤¯ā¤žā¤¯ā¤žā¤ ā¤ā¤žā¤°ā¤ŖāĨ⤍ ā¤ā¤ĩā¤ŋ⤤āĨā¤Žā¤°āĨā¤šā¤¤ā¤ŋāĨ¤",
@@ -129,22 +128,12 @@
"compose_form.lock_disclaimer": "⤤ā¤ĩ ⤞āĨā¤ā¤ž ⤍ ā¤ĒāĨ⤰ā¤ĩāĨ⤎āĨā¤āĨā¤Žā¤ļā¤āĨā¤¯ā¤ž {locked} āĨ¤ ā¤āĨā¤Ŋā¤ĒāĨ⤝⤍āĨ⤏⤰āĨā¤¤ā¤ž ⤤āĨ ā¤āĨā¤ĩā¤˛ā¤Žā¤¨āĨ⤏⤰āĨ⤤āĨāĨā¤Ŗā¤žā¤ ā¤āĨ⤤āĨ ⤏āĨā¤Ĩā¤ŋā¤¤ā¤žā¤¨ā¤ŋ ā¤Ē⤤āĨā¤°ā¤žā¤Ŗā¤ŋ ā¤ĻāĨ⤰⤎āĨā¤āĨ⤠ā¤ļā¤āĨ⤍āĨ⤤ā¤ŋ āĨ¤",
"compose_form.lock_disclaimer.lock": "ā¤
ā¤ĩ⤰āĨā¤ĻāĨ⤧ā¤",
"compose_form.placeholder": "ā¤Žā¤¨ā¤¸ā¤ŋ ⤤āĨ ā¤ā¤ŋā¤Žā¤¸āĨ⤤ā¤ŋ?",
- "compose_form.poll.add_option": "ā¤Žā¤¤ā¤Žā¤Ē⤰⤠⤝āĨā¤āĨā¤¯ā¤¤ā¤žā¤ŽāĨ",
"compose_form.poll.duration": "ā¤Žā¤¤ā¤Ļā¤žā¤¨-ā¤¸ā¤Žā¤¯ā¤žā¤ĩ⤧ā¤ŋā¤",
- "compose_form.poll.option_placeholder": "ā¤Žā¤¤ā¤ŽāĨ {number}",
- "compose_form.poll.remove_option": "ā¤Žā¤¤ā¤ŽāĨ⤤⤍āĨ⤍ā¤ļāĨā¤¯ā¤¤ā¤žā¤ŽāĨ",
"compose_form.poll.switch_to_multiple": "ā¤Žā¤¤ā¤Ļā¤žā¤¨ā¤ ā¤Ē⤰ā¤ŋā¤ĩ⤰āĨ⤤⤝ā¤ŋ⤤āĨā¤ĩā¤ž ā¤Ŧā¤šāĨā¤ĩāĨā¤ā¤˛āĨā¤Ēā¤ŋā¤ā¤Žā¤¤ā¤Ļā¤žā¤¨ā¤ ā¤āĨ⤰ā¤ŋā¤¯ā¤¤ā¤žā¤ŽāĨ",
"compose_form.poll.switch_to_single": "ā¤Žā¤¤ā¤Ļā¤žā¤¨ā¤ ā¤Ē⤰ā¤ŋā¤ĩ⤰āĨ⤤⤝ā¤ŋ⤤āĨā¤ĩā¤ž ⤍ā¤ŋ⤰āĨā¤ĩā¤ŋā¤ā¤˛āĨā¤Ēā¤Žā¤¤ā¤Ļā¤žā¤¨ā¤ ā¤āĨ⤰ā¤ŋā¤¯ā¤¤ā¤žā¤ŽāĨ",
- "compose_form.publish": "ā¤ĒāĨ⤰ā¤ā¤žā¤ļāĨā¤āĨ⤰āĨ",
"compose_form.publish_form": "ā¤ĒāĨ⤰ā¤ā¤žā¤ļāĨā¤āĨ⤰āĨ",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "ā¤Ē⤰ā¤ŋā¤ĩ⤰āĨā¤¤ā¤¨ā¤žā¤¨ā¤ŋ ⤰ā¤āĨ⤎",
- "compose_form.sensitive.hide": "⤏ā¤ā¤ĩāĨā¤Ļ⤍ā¤ļāĨā¤˛ā¤¸ā¤žā¤Žā¤āĨ⤰āĨ⤤āĨ⤝ā¤āĨā¤¯ā¤¤ā¤žā¤ŽāĨ",
- "compose_form.sensitive.marked": "⤏ā¤ā¤ĩāĨā¤Ļ⤍ā¤ļāĨā¤˛ā¤¸ā¤žā¤Žā¤āĨ⤰āĨ⤤āĨ⤝ā¤āĨā¤ā¤ŋā¤¤ā¤ŽāĨ",
- "compose_form.sensitive.unmarked": "⤏ā¤ā¤ĩāĨā¤Ļ⤍ā¤ļāĨā¤˛ā¤¸ā¤žā¤Žā¤āĨ⤰āĨ⤤ā¤ŋ ā¤¨ā¤žā¤āĨā¤ā¤ŋā¤¤ā¤ŽāĨ",
"compose_form.spoiler.marked": "ā¤ĒāĨ⤰ā¤āĨā¤ā¤žā¤¨āĨā¤¨ā¤žā¤āĨ⤎⤰⤠ā¤ĩā¤ŋā¤ĻāĨ⤝⤤āĨ",
"compose_form.spoiler.unmarked": "ā¤
ā¤ĒāĨ⤰ā¤āĨā¤ā¤¨āĨā¤¨ā¤žā¤āĨ⤎⤰⤠ā¤ĩā¤ŋā¤ĻāĨ⤝⤤āĨ",
- "compose_form.spoiler_placeholder": "ā¤ĒāĨ⤰⤤āĨā¤¯ā¤žā¤ĻāĨā¤ļ⤏āĨ⤤āĨ ⤞ā¤ŋā¤āĨā¤¯ā¤¤ā¤žā¤ŽāĨ",
"confirmation_modal.cancel": "⤍ā¤ļāĨā¤¯ā¤¤ā¤žā¤ŽāĨ",
"confirmations.block.block_and_report": "ā¤
ā¤ĩ⤰āĨ⤧āĨ⤝ ā¤ā¤ĩā¤ŋā¤ĻāĨā¤¯ā¤¤ā¤žā¤ŽāĨ",
"confirmations.block.confirm": "⤍ā¤ŋ⤎āĨ⤧ā¤",
@@ -357,7 +346,6 @@
"navigation_bar.direct": "ā¤āĨā¤Ē⤍āĨ⤝⤰āĨā¤ĒāĨ⤪ ā¤ā¤˛āĨ⤞ā¤ŋā¤ā¤ŋā¤¤ā¤žā¤¨ā¤ŋ",
"navigation_bar.discover": "ā¤ā¤ĩā¤ŋ⤎āĨā¤āĨ⤰āĨ",
"navigation_bar.domain_blocks": "Hidden domains",
- "navigation_bar.edit_profile": "ā¤ĒāĨ⤰āĨā¤ĢāĨā¤˛ā¤ ā¤¸ā¤ŽāĨā¤Ēā¤žā¤ĻāĨā¤¯ā¤¤ā¤žā¤ŽāĨ",
"navigation_bar.explore": "ā¤
⤍āĨā¤ĩā¤ŋā¤āĨā¤",
"navigation_bar.filters": "ā¤ŽāĨā¤āĨā¤āĨā¤¤ā¤žā¤¨ā¤ŋ ā¤Ēā¤Ļā¤žā¤¨ā¤ŋ",
"navigation_bar.follow_requests": "ā¤
⤍āĨā¤¸ā¤°ā¤Ŗā¤žā¤¨āĨ⤰āĨā¤§ā¤žā¤",
@@ -453,14 +441,7 @@
"poll_button.add_poll": "⤍ā¤ŋ⤰āĨā¤ĩā¤žā¤ā¤¨ā¤ ⤝āĨā¤ā¤¯",
"poll_button.remove_poll": "⤍ā¤ŋ⤰āĨā¤ĩā¤žā¤ā¤¨ā¤ ā¤Žā¤žā¤°āĨā¤ā¤¯",
"privacy.change": "ā¤Ē⤤āĨ⤰⤏āĨ⤝ ā¤āĨā¤Ē⤍āĨā¤¯ā¤¤ā¤žā¤ ā¤Ē⤰ā¤ŋā¤ĩ⤰āĨ⤤⤝",
- "privacy.direct.long": "ā¤āĨā¤ĩā¤˛ā¤ŽāĨ⤞āĨ⤞ā¤ŋā¤ā¤ŋ⤤āĨā¤āĨā¤āĨ⤤āĨā¤āĨ⤝āĨ ā¤ĻāĨā¤ļāĨ⤝⤤āĨ",
- "privacy.direct.short": "Direct",
- "privacy.private.long": "ā¤āĨā¤ĩ⤞⤠⤝āĨā¤Ŋ⤍āĨ⤏⤰⤍āĨ⤤ā¤ŋ ⤤āĨā¤ĩā¤žā¤ ā¤¤āĨā¤āĨ⤝āĨ ā¤ĻāĨā¤ļāĨ⤝⤤āĨ",
- "privacy.private.short": "Followers-only",
- "privacy.public.long": "⤏⤰āĨā¤ĩāĨā¤āĨ⤝āĨ ā¤ĻāĨā¤ļāĨ⤝⤤āĨ",
"privacy.public.short": "ā¤¸ā¤žā¤°āĨā¤ĩā¤ā¤¨ā¤ŋā¤ā¤ŽāĨ",
- "privacy.unlisted.long": "⤏⤰āĨā¤ĩāĨā¤āĨ⤝āĨ ā¤ĻāĨā¤ļāĨ⤝⤤āĨ ā¤ā¤ŋ⤍āĨ⤤āĨ ā¤ā¤ĩā¤ŋ⤎āĨā¤ā¤žā¤°ā¤ĩā¤ŋā¤ļāĨā¤ˇā¤¤ā¤žā¤āĨ⤝āĨā¤Ŋ⤍āĨ⤤⤰ā¤āĨā¤¤ā¤ ā¤¨ā¤žā¤¸āĨ⤤ā¤ŋ",
- "privacy.unlisted.short": "ā¤
⤏āĨā¤āĨā¤āĨā¤¤ā¤ŽāĨ",
"privacy_policy.last_updated": "ā¤
⤍āĨ⤤ā¤ŋā¤Žā¤ĩā¤žā¤°ā¤ ā¤Ē⤰ā¤ŋā¤ĩ⤰āĨ⤤ā¤ŋā¤¤ā¤ŽāĨ {date}",
"privacy_policy.title": "ā¤āĨā¤Ē⤍āĨā¤¯ā¤¤ā¤žā¤¨āĨ⤤ā¤ŋā¤",
"refresh": "⤍ā¤ĩāĨā¤āĨ⤰āĨ",
@@ -572,7 +553,6 @@
"trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {# days}}",
"upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Describe for the visually impaired",
- "upload_form.undo": "ā¤Žā¤žā¤°āĨā¤ā¤¯",
"upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_progress.label": "UploadingâĻ"
}
diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json
index 89e951f77..90b663aea 100644
--- a/app/javascript/mastodon/locales/sc.json
+++ b/app/javascript/mastodon/locales/sc.json
@@ -60,7 +60,6 @@
"alert.unexpected.title": "Oh!",
"announcement.announcement": "AnnÚntziu",
"audio.hide": "Cua s'Ã udio",
- "autosuggest_hashtag.per_week": "{count} a sa chida",
"boost_modal.combo": "Podes incarcare {combo} pro brincare custu sa borta chi benit",
"bundle_column_error.error.title": "Oh, no!",
"bundle_column_error.network.title": "Faddina de connessione",
@@ -100,22 +99,12 @@
"compose_form.lock_disclaimer": "Su contu tuo no est {locked}. Cale si siat persone ti podet sighire pro bÃŦdere is messà gios tuos chi imbies a sa gente chi ti sighit.",
"compose_form.lock_disclaimer.lock": "blocadu",
"compose_form.placeholder": "A ite ses pensende?",
- "compose_form.poll.add_option": "Agiunghe unu sèberu",
"compose_form.poll.duration": "Longà ria de su sondà giu",
- "compose_form.poll.option_placeholder": "Optzione {number}",
- "compose_form.poll.remove_option": "Boga custa optzione",
"compose_form.poll.switch_to_multiple": "Muda su sondà giu pro permÃŦtere multi-optziones",
"compose_form.poll.switch_to_single": "Muda su sondà giu pro permÃŦtere un'optzione isceti",
- "compose_form.publish": "PÚblica",
"compose_form.publish_form": "Publish",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Sarva is modÃŦficas",
- "compose_form.sensitive.hide": "{count, plural, one {Marca elementu multimediale comente a sensÃŦbile} other {Marca elementos multimediales comente sensÃŦbiles}}",
- "compose_form.sensitive.marked": "{count, plural, one {Elementu multimediale marcadu comente a sensÃŦbile} other {Elementos multimediales marcados comente a sensÃŦbiles}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {Elementu multimediale non marcadu comente a sensÃŦbile} other {Elementos multimediales non marcados comente a sensÃŦbiles}}",
"compose_form.spoiler.marked": "Boga avisu de cuntenutu",
"compose_form.spoiler.unmarked": "Agiunghe avisu de cuntenutu",
- "compose_form.spoiler_placeholder": "Iscrie s'avisu tuo inoghe",
"confirmation_modal.cancel": "Annulla",
"confirmations.block.block_and_report": "Bloca e signala",
"confirmations.block.confirm": "Bloca",
@@ -287,7 +276,6 @@
"navigation_bar.compose": "Cumpone una publicatzione noa",
"navigation_bar.discover": "Iscoberi",
"navigation_bar.domain_blocks": "DomÃŦnios blocados",
- "navigation_bar.edit_profile": "ModÃŦfica profilu",
"navigation_bar.filters": "Faeddos a sa muda",
"navigation_bar.follow_requests": "Rechestas de sighidura",
"navigation_bar.follows_and_followers": "Gente chi sighis e sighiduras",
@@ -364,12 +352,7 @@
"poll_button.add_poll": "Agiunghe unu sondà giu",
"poll_button.remove_poll": "Cantzella su sondà giu",
"privacy.change": "ModÃŦfica s'istadu de riservadesa",
- "privacy.direct.long": "VisÃŦbile isceti pro is persones mentovadas",
- "privacy.direct.short": "Direct",
- "privacy.private.long": "VisÃŦbile isceti pro chie ti sighit",
- "privacy.private.short": "Followers-only",
"privacy.public.short": "PÚblicu",
- "privacy.unlisted.short": "EsclÚidu de sa lista",
"recommended": "Cussigiadu",
"refresh": "Atualiza",
"regeneration_indicator.label": "CarrighendeâĻ",
@@ -473,7 +456,6 @@
"upload_form.description": "Descritzione pro persones cun problemas visuales",
"upload_form.edit": "ModÃŦfica",
"upload_form.thumbnail": "CÃ mbia sa miniadura",
- "upload_form.undo": "Cantzella",
"upload_form.video_description": "Descritzione pro persones cun pèrdida auditiva o problemas visuales",
"upload_modal.analyzing_picture": "Analizende immà gineâĻ",
"upload_modal.apply": "Ãplica",
diff --git a/app/javascript/mastodon/locales/sco.json b/app/javascript/mastodon/locales/sco.json
index 0378cd292..b7563022a 100644
--- a/app/javascript/mastodon/locales/sco.json
+++ b/app/javascript/mastodon/locales/sco.json
@@ -74,7 +74,6 @@
"announcement.announcement": "Annooncement",
"attachments_list.unprocessed": "(No processed)",
"audio.hide": "Stow audio",
- "autosuggest_hashtag.per_week": "{count} a week",
"boost_modal.combo": "Ye kin chap {combo} tae dingie this neist tim",
"bundle_column_error.copy_stacktrace": "Copy error report",
"bundle_column_error.error.body": "The requestit page cuidnae be rennert. Hit cuid be doon tae a bug in wir code, or a brooser compatability issue.",
@@ -125,22 +124,12 @@
"compose_form.lock_disclaimer": "Yer accoont isnae {locked}. Awbody kin follae ye for tae luik at yer follaer-ainly posts.",
"compose_form.lock_disclaimer.lock": "lockit",
"compose_form.placeholder": "Whit's on yer mind?",
- "compose_form.poll.add_option": "Pit in a chyce",
"compose_form.poll.duration": "Poll lenth",
- "compose_form.poll.option_placeholder": "Chyce {number}",
- "compose_form.poll.remove_option": "Tak oot this chyce",
"compose_form.poll.switch_to_multiple": "Chynge poll tae alloo multiple chyces",
"compose_form.poll.switch_to_single": "Chynge poll tae alloo fir a single chyce",
- "compose_form.publish": "Publish",
"compose_form.publish_form": "Publish",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Save chynges",
- "compose_form.sensitive.hide": "{count, plural, one {Mairk media as sensitive} other {Mairk media as sensitive}}",
- "compose_form.sensitive.marked": "{count, plural, one {Media is mairkit as sensitive} other {Media is mairkit as sensitive}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {Media isnae mairkit as sensitive} other {Media isnae mairkit as sensitive}}",
"compose_form.spoiler.marked": "Tak aff the content warnin",
"compose_form.spoiler.unmarked": "Pit on a content warnin",
- "compose_form.spoiler_placeholder": "Scrieve yer warnin in here",
"confirmation_modal.cancel": "Stap",
"confirmations.block.block_and_report": "Dingie & Clype",
"confirmations.block.confirm": "Dingie",
@@ -341,7 +330,6 @@
"navigation_bar.compose": "Scrieve new post",
"navigation_bar.discover": "Fin",
"navigation_bar.domain_blocks": "Dingied domains",
- "navigation_bar.edit_profile": "Edit profile",
"navigation_bar.explore": "Splore",
"navigation_bar.filters": "Wheesht wirds",
"navigation_bar.follow_requests": "Follae requests",
@@ -425,14 +413,7 @@
"poll_button.add_poll": "Dae a poll",
"poll_button.remove_poll": "Tak doon poll",
"privacy.change": "Chynge post privacy",
- "privacy.direct.long": "Ainly menshied uisers kin see this",
- "privacy.direct.short": "Menshied fowk ainly",
- "privacy.private.long": "Ainly follaers kin see this",
- "privacy.private.short": "Ainly follaers",
- "privacy.public.long": "Awbody kin see this",
"privacy.public.short": "Public",
- "privacy.unlisted.long": "Aw kin see this, but optit-oot o discovery features",
- "privacy.unlisted.short": "No listit",
"privacy_policy.last_updated": "Last updatit {date}",
"privacy_policy.title": "Privacy Policy",
"refresh": "Refresh",
@@ -583,10 +564,8 @@
"upload_error.poll": "File upload isnae allooed wi polls.",
"upload_form.audio_description": "Describe fir fowk wi hearin loss",
"upload_form.description": "Describe fir thaim wi visual impairments",
- "upload_form.description_missing": "Nae description addit",
"upload_form.edit": "Edit",
"upload_form.thumbnail": "Chynge thoomnail",
- "upload_form.undo": "Delete",
"upload_form.video_description": "Describe fir fowk wi hearin loss or wi visual impairment",
"upload_modal.analyzing_picture": "Analyzin pictureâĻ",
"upload_modal.apply": "Apply",
diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json
index c2d2a41cc..1b2eb1763 100644
--- a/app/javascript/mastodon/locales/si.json
+++ b/app/javascript/mastodon/locales/si.json
@@ -53,7 +53,6 @@
"alert.unexpected.title": "āļ
āļ´āˇāļēāˇ!",
"announcement.announcement": "āļąāˇāˇāˇāļ¯āļąāļē",
"audio.hide": "āˇāļŦāļ´āļ§āļē āˇāļāˇāļąāˇāļą",
- "autosuggest_hashtag.per_week": "āˇāļāˇāļēāļāļ§ {count}",
"boost_modal.combo": "āļāˇ
āļ āˇāļāˇāˇāˇ āļ¸āˇāļē āļ¸āļ āˇāˇāļģāˇāļ¸āļ§ {combo} āļāļļāˇāļ¸āļ§ āˇāˇāļāˇāļē",
"bundle_column_error.copy_stacktrace": "āļ¯āˇāˇ āˇāˇāļģāˇāļāˇāˇāˇ āļ´āˇāļ§āļ´āļāļāˇ",
"bundle_column_error.error.title": "āļ
āļ´āˇāļēāˇ!",
@@ -102,19 +101,12 @@
"compose_form.encryption_warning": "āļ¸āˇāˇāˇāļ§āļŠāļąāˇ āˇāˇāļ āļ´āˇ
āļāļģāļą āļ¯āˇ āļ
āļąāˇāļ āˇāļāļāˇāļāļąāļēāˇāļąāˇ āļāļģāļāˇâāˇāˇ āļąāˇāˇāˇ. āļ¸āˇāˇāˇāļ§āļŠāļąāˇ āˇāļģāˇāˇ āļāˇāˇāˇāļ¯āˇ āˇāļāˇāˇāļ¯āˇ āļāˇāļģāļāˇāļģāļ⎠āļļāˇāļ¯āˇ āļąāˇāļāļąāˇāļą.",
"compose_form.lock_disclaimer.lock": "āļ
āļāˇāˇ
⎠āļ¯āļ¸āˇ āļāļ",
"compose_form.placeholder": "āļāļļāļ⎠āˇāˇāļāˇāˇāˇāļŊ⎠āļ¸āˇāļąāˇāˇāļ¯?",
- "compose_form.poll.add_option": "āļāˇāļģāˇāļ¸āļ⎠āļēāˇāļ¯āļąāˇāļą",
"compose_form.poll.duration": "āļ¸āļ āˇāˇāļ¸āˇāˇāļ¸āˇ āļāˇāļŊāļē",
- "compose_form.poll.option_placeholder": "āļāˇāļģāˇāļ¸ {number}",
- "compose_form.poll.remove_option": "āļ¸āˇāļ¸ āļāˇāļ⎠āļāļģāļąāˇāļą",
"compose_form.poll.switch_to_multiple": "āļāˇāļģāˇāļ¸āˇ āļāˇāˇāˇāļ´āļēāļāļ§ āļ¸āļ āˇāˇāļ¸āˇāˇāļ¸ āˇāˇāļąāˇāˇ āļāļģāļąāˇāļą",
"compose_form.poll.switch_to_single": "āļāļąāˇ āļāˇāļģāˇāļ¸āļāļ§ āļ¸āļ āˇāˇāļ¸āˇāˇāļ¸ āˇāˇāļąāˇāˇ āļāļģāļąāˇāļą",
- "compose_form.publish": "āļ´āˇâāļģāļāˇāˇāļąāļē",
"compose_form.publish_form": "āļąāˇ āļŊāˇāļ´āˇāļē",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "āˇāˇāļąāˇāˇāļāļ¸āˇ āˇāˇāļģāļāˇāļąāˇāļą",
"compose_form.spoiler.marked": "āļ
āļąāˇāļāļģāˇāļāļ āļ
āˇāˇāˇāļ¯āļē āļāˇāļ⎠āļāļģāļąāˇāļą",
"compose_form.spoiler.unmarked": "āļ
āļąāˇāļāļģāˇāļāļ āļ
āˇāˇāˇāļ¯āļēāļ⎠āļāļ⎠āļāļģāļąāˇāļą",
- "compose_form.spoiler_placeholder": "āļ
āˇāˇāˇāļ¯āļē āļ¸āˇāˇāˇ āļŊāˇāļēāļąāˇāļą",
"confirmation_modal.cancel": "āļ
āˇāļŊāļāļāˇ",
"confirmations.block.block_and_report": "āļ
āˇāˇāˇāļģ āļāļģ āˇāˇāļģāˇāļ⎠āļāļģāļąāˇāļą",
"confirmations.block.confirm": "āļ
āˇāˇāˇāļģ",
@@ -269,7 +261,6 @@
"navigation_bar.compose": "āļąāˇ āļŊāˇāļ´āˇāļēāļ⎠āļŊāˇāļēāļąāˇāļą",
"navigation_bar.direct": "āļ´āˇāļ¯āˇāļāļŊāˇāļ āˇāˇāļŗāˇāˇāļ¸āˇ",
"navigation_bar.domain_blocks": "āļ
āˇāˇāˇāļģ āļāˇ
āˇāˇāļ¸āˇ",
- "navigation_bar.edit_profile": "āļ´āˇāļāˇāļāļŠ āˇāļāˇāˇāļāļģāļĢāļē",
"navigation_bar.explore": "āļāˇāˇāˇāļąāļē",
"navigation_bar.favourites": "āļ´āˇâāļģāˇāļēāļāļ¸āļēāļąāˇ",
"navigation_bar.filters": "āļąāˇāˇāļŦ āļāˇ
āˇāļ āļą",
@@ -335,11 +326,6 @@
"poll_button.add_poll": "āļ¸āļ āˇāˇāļ¸āˇāˇāļ¸āļ⎠āļ
āļģāļšāļąāˇāļą",
"poll_button.remove_poll": "āļ¸āļ āˇāˇāļ¸āˇāˇāļ¸ āļāˇāļāļŊāļąāˇāļą",
"privacy.change": "āļŊāˇāļ´āˇāļē⎠āļģāˇāˇāˇâāļēāļāˇāˇ āˇāļāˇāˇāļ°āļąāļē",
- "privacy.direct.long": "āˇāļŗāˇāļąāˇ āļāˇ
āļ
āļēāļ§ āļ¯āˇāˇāˇāˇāˇāļēāˇ",
- "privacy.direct.short": "āˇāļŗāˇāļąāˇ āļāˇ
āļ
āļēāļ§ āļ´āļ¸āļĢāˇ",
- "privacy.private.long": "āļ
āļąāˇāļāˇāļ¸āˇāļāļēāˇāļąāˇāļ§ āļ¯āˇāˇāˇāˇāˇ",
- "privacy.private.short": "āļ
āļąāˇāļāˇāļ¸āˇāļāļēāˇāļąāˇ āļ´āļ¸āļĢāˇ",
- "privacy.public.long": "āˇāˇāļ¸āļ§ āļ¯āˇāˇāˇāˇāˇāļēāˇ",
"privacy.public.short": "āļ´āˇâāļģāˇāˇāļ¯āˇāļ°",
"privacy_policy.title": "āļģāˇāˇāˇâāļēāļ⎠āļ´āˇâāļģāļāˇāļ´āļāˇāļāˇāļē",
"refresh": "āļąāˇāˇāˇāļ¸āˇ āļāļģāļąāˇāļą",
@@ -481,10 +467,8 @@
"upload_error.poll": "āļ¸āļ āˇāˇāļ¸āˇāˇāļ¸āˇ āˇāļ¸āļ āļāˇāļąāˇ āļēāˇāļ¯āˇāļ¸āļ§ āļāļŠ āļąāˇāļ¯āˇ.",
"upload_form.audio_description": "āļąāˇāļāˇāˇāļą āļ
āļē āˇāļŗāˇāˇ āˇāˇāˇāˇāļāļģ āļāļģāļąāˇāļą",
"upload_form.description": "āļ¯āˇāˇāˇâāļēāˇāļļāˇāļ°āˇāļāļēāļąāˇ āˇāļŗāˇāˇ āˇāˇāˇāˇāļāļģ āļāļģāļąāˇāļą",
- "upload_form.description_missing": "āˇāˇāˇāˇāˇāļāļģāļēāļ⎠āļąāˇāļ",
"upload_form.edit": "āˇāļāˇāˇāļāļģāļĢāļē",
"upload_form.thumbnail": "āˇāˇāļāˇāļ⎠āļģāˇāˇ āˇāˇāļąāˇāˇ āļāļģāļąāˇāļą",
- "upload_form.undo": "āļ¸āļāļąāˇāļą",
"upload_form.video_description": "āˇāˇâāļģāˇāļĢāˇāļļāˇāļ° āˇāˇ āļ¯āˇāˇāˇâāļēāˇāļļāˇāļ°āˇāļ āļ´āˇāļ¯āˇāļāļŊāļēāļąāˇ āˇāļŗāˇāˇ āˇāˇāˇāˇāļāļģ āļāļģāļąāˇāļą",
"upload_modal.analyzing_picture": "āļ´āˇāļąāˇāļāˇāļģāļē āˇāˇāˇāˇāļŊāˇāˇāļĢāļē āļāļģāļ¸āˇāļąāˇâĻ",
"upload_modal.apply": "āļēāˇāļ¯āļąāˇāļą",
diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json
index 02425d73e..5b1203aee 100644
--- a/app/javascript/mastodon/locales/sk.json
+++ b/app/javascript/mastodon/locales/sk.json
@@ -21,7 +21,7 @@
"account.blocked": "BlokovanÃŊ/ÃĄ",
"account.browse_more_on_origin_server": "PrehÄžadÃĄvaj viac na pôvodnom profile",
"account.cancel_follow_request": "ZruÅĄ ÅžiadosÅĨ o sledovanie",
- "account.copy": "SkopÃruj odkaz pre profil",
+ "account.copy": "SkopÃruj odkaz na profil",
"account.direct": "SpomeÅ @{name} sÃēkromne",
"account.disable_notifications": "PrestaÅ mi oznamovaÅĨ, keÄ mÃĄ @{name} prÃspevky",
"account.domain_blocked": "DomÊna skrytÃĄ",
@@ -32,6 +32,7 @@
"account.featured_tags.last_status_never": "ÅŊiadne prÃspevky",
"account.featured_tags.title": "OdporÃēÄanÊ hashtagy pouÅžÃvateÄža {name}",
"account.follow": "Sleduj",
+ "account.follow_back": "Nasleduj späÅĨ",
"account.followers": "Sledovatelia",
"account.followers.empty": "Tohto pouÅžÃvateÄža eÅĄte nikto nenasleduje.",
"account.followers_counter": "{count, plural, one {{counter} SledujÃēci} few {{counter} SledujÃēci} many {{counter} SledujÃēcich} other {{counter} SledujÃēcich}}",
@@ -52,6 +53,7 @@
"account.mute_notifications_short": "StÃÅĄ oznÃĄmenia",
"account.mute_short": "StÃÅĄ",
"account.muted": "StÃÅĄenÃŊ",
+ "account.mutual": "SpoloÄnÊ",
"account.no_bio": "Nie je uvedenÃŊ Åžiadny popis.",
"account.open_original_page": "Otvor pôvodnÃē strÃĄnku",
"account.posts": "PrÃspevky",
@@ -87,7 +89,6 @@
"announcement.announcement": "OznÃĄmenie",
"attachments_list.unprocessed": "(nespracovanÊ)",
"audio.hide": "Skry zvuk",
- "autosuggest_hashtag.per_week": "{count} tÃŊÅždenne",
"boost_modal.combo": "NabudÃēce môŞeÅĄ kliknÃēÅĨ {combo} pre preskoÄenie",
"bundle_column_error.copy_stacktrace": "KopÃrovaÅĨ chybovÃē hlÃĄÅĄku",
"bundle_column_error.error.body": "PoÅžadovanÃē strÃĄnku nebolo moÅžnÊ vykresliÅĨ. MôŞe to byÅĨ spôsobenÊ chybou v naÅĄom kÃŗde alebo problÊmom s kompatibilitou prehliadaÄa.",
@@ -144,22 +145,12 @@
"compose_form.lock_disclaimer": "Tvoj ÃēÄet nie je {locked}. KtokoÄžvek ÅĨa môŞe nasledovaÅĨ a vidieÅĨ tvoje sprÃĄvy pre sledujÃēcich.",
"compose_form.lock_disclaimer.lock": "zamknutÃŊ",
"compose_form.placeholder": "Äo mÃĄÅĄ na mysli?",
- "compose_form.poll.add_option": "Pridaj voÄžbu",
"compose_form.poll.duration": "Trvanie ankety",
- "compose_form.poll.option_placeholder": "VoÄžba {number}",
- "compose_form.poll.remove_option": "OdstrÃĄÅ tÃēto voÄžbu",
"compose_form.poll.switch_to_multiple": "ZmeÅ anketu pre povolenie viacerÃŊch moÅžnostÃ",
"compose_form.poll.switch_to_single": "ZmeÅ anketu na takÃē s jedinou voÄžbou",
- "compose_form.publish": "Zverejni",
"compose_form.publish_form": "ZverejniÅĨ",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "UloÅž zmeny",
- "compose_form.sensitive.hide": "OznaÄ mÊdiÃĄ ako chÃēlostivÊ",
- "compose_form.sensitive.marked": "MÊdiÃĄlny obsah je oznaÄenÃŊ ako chÃēlostivÃŊ",
- "compose_form.sensitive.unmarked": "MÊdiÃĄlny obsah nieje oznaÄenÃŊ ako chÃēlostivÃŊ",
"compose_form.spoiler.marked": "Text je ukrytÃŊ za varovanÃm",
"compose_form.spoiler.unmarked": "Text nieje ukrytÃŊ",
- "compose_form.spoiler_placeholder": "Sem napÃÅĄ tvoje varovanie",
"confirmation_modal.cancel": "ZruÅĄ",
"confirmations.block.block_and_report": "Zablokuj a nahlÃĄs",
"confirmations.block.confirm": "Blokuj",
@@ -406,7 +397,6 @@
"navigation_bar.direct": "SÃēkromnÊ spomenutia",
"navigation_bar.discover": "Objavuj",
"navigation_bar.domain_blocks": "SkrytÊ domÊny",
- "navigation_bar.edit_profile": "Uprav profil",
"navigation_bar.explore": "Objavuj",
"navigation_bar.favourites": "ObÄžÃēbenÊ",
"navigation_bar.filters": "FiltrovanÊ slovÃĄ",
@@ -523,14 +513,7 @@
"poll_button.add_poll": "Pridaj anketu",
"poll_button.remove_poll": "OdstrÃĄÅ anketu",
"privacy.change": "Uprav sÃēkromie prÃspevku",
- "privacy.direct.long": "PoÅĄli iba spomenutÃŊm uÅžÃvateÄžom",
- "privacy.direct.short": "Iba spomenutÃŊm Äžudom",
- "privacy.private.long": "PoÅĄli iba nÃĄsledovateÄžom",
- "privacy.private.short": "Iba pre sledujÃēcich",
- "privacy.public.long": "ViditeÄžnÊ pre vÅĄetkÃŊch",
"privacy.public.short": "VerejnÊ",
- "privacy.unlisted.long": "ViditeÄžnÊ pre vÅĄetkÃŊch, ale odmietnutÊ funkcie zisÅĨovania",
- "privacy.unlisted.short": "Verejne, ale nezobraziÅĨ v osi",
"privacy_policy.last_updated": "PoslednÃĄ Ãēprava {date}",
"privacy_policy.title": "ZÃĄsady sÃēkromia",
"recommended": "OdporÃēÄanÊ",
@@ -712,10 +695,8 @@
"upload_error.poll": "NahrÃĄvanie sÃēborov pri anketÃĄch nieje moÅžnÊ.",
"upload_form.audio_description": "PopÃÅĄ, pre Äžudà so stratou sluchu",
"upload_form.description": "Opis pre slabo vidiacich",
- "upload_form.description_missing": "NepridanÃŊ Åžiadny popis",
"upload_form.edit": "Uprav",
"upload_form.thumbnail": "ZmeniÅĨ miniatÃēru",
- "upload_form.undo": "VymaÅž",
"upload_form.video_description": "PopÃÅĄ, pre Äžudà so stratou sluchu, alebo oÄnÃŊm znevÃŊhodnenÃm",
"upload_modal.analyzing_picture": "Analyzujem obrÃĄzokâĻ",
"upload_modal.apply": "PouÅži",
diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json
index b3998b911..559b05db7 100644
--- a/app/javascript/mastodon/locales/sl.json
+++ b/app/javascript/mastodon/locales/sl.json
@@ -89,7 +89,6 @@
"announcement.announcement": "Obvestilo",
"attachments_list.unprocessed": "(neobdelano)",
"audio.hide": "Skrij zvok",
- "autosuggest_hashtag.per_week": "{count} na teden",
"boost_modal.combo": "Äe Åželite preskoÄiti to, lahko pritisnete {combo}",
"bundle_column_error.copy_stacktrace": "Kopiraj poroÄilo o napaki",
"bundle_column_error.error.body": "Zahtevane strani ni mogoÄe upodobiti. Vzrok teÅžave je morda hroÅĄÄ v naÅĄi kodi ali pa nezdruÅžljivost z brskalnikom.",
@@ -146,22 +145,12 @@
"compose_form.lock_disclaimer": "VaÅĄ raÄun ni {locked}. Vsakdo vam lahko sledi in si ogleda objave, ki so namenjene samo sledilcem.",
"compose_form.lock_disclaimer.lock": "zaklenjen",
"compose_form.placeholder": "O Äem razmiÅĄljate?",
- "compose_form.poll.add_option": "Dodaj izbiro",
"compose_form.poll.duration": "Trajanje ankete",
- "compose_form.poll.option_placeholder": "Izbira {number}",
- "compose_form.poll.remove_option": "Odstrani to izbiro",
"compose_form.poll.switch_to_multiple": "Spremenite anketo, da omogoÄite veÄ izbir",
"compose_form.poll.switch_to_single": "Spremenite anketo, da omogoÄite eno izbiro",
- "compose_form.publish": "Objavi",
"compose_form.publish_form": "Objavi",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Shrani spremembe",
- "compose_form.sensitive.hide": "{count, plural,one {OznaÄi medij kot obÄutljiv} two {OznaÄi medija kot obÄutljiva} other {OznaÄi medije kot obÄutljive}}",
- "compose_form.sensitive.marked": "{count, plural,one {Medij je oznaÄen kot obÄutljiv} two {Medija sta oznaÄena kot obÄutljiva} other {Mediji so oznaÄeni kot obÄutljivi}}",
- "compose_form.sensitive.unmarked": "{count, plural,one {Medij ni oznaÄen kot obÄutljiv} two {Medija nista oznaÄena kot obÄutljiva} other {Mediji niso oznaÄeni kot obÄutljivi}}",
"compose_form.spoiler.marked": "Odstrani opozorilo o vsebini",
"compose_form.spoiler.unmarked": "Dodaj opozorilo o vsebini",
- "compose_form.spoiler_placeholder": "Tukaj napiÅĄite opozorilo",
"confirmation_modal.cancel": "PrekliÄi",
"confirmations.block.block_and_report": "Blokiraj in prijavi",
"confirmations.block.confirm": "Blokiraj",
@@ -408,7 +397,6 @@
"navigation_bar.direct": "Zasebne omembe",
"navigation_bar.discover": "Odkrijte",
"navigation_bar.domain_blocks": "Blokirane domene",
- "navigation_bar.edit_profile": "Uredi profil",
"navigation_bar.explore": "RaziÅĄÄi",
"navigation_bar.favourites": "Priljubljeni",
"navigation_bar.filters": "UtiÅĄane besede",
@@ -526,14 +514,7 @@
"poll_button.add_poll": "Dodaj anketo",
"poll_button.remove_poll": "Odstrani anketo",
"privacy.change": "Spremeni zasebnost objave",
- "privacy.direct.long": "Objavi samo omenjenim uporabnikom",
- "privacy.direct.short": "Samo omenjeni",
- "privacy.private.long": "Vidno samo sledilcem",
- "privacy.private.short": "Samo sledilci",
- "privacy.public.long": "Vidno vsem",
"privacy.public.short": "Javno",
- "privacy.unlisted.long": "Vidno za vse, vendar izkljuÄeno iz funkcionalnosti odkrivanja",
- "privacy.unlisted.short": "Ni prikazano",
"privacy_policy.last_updated": "Zadnja posodobitev {date}",
"privacy_policy.title": "Pravilnik o zasebnosti",
"recommended": "PriporoÄeno",
@@ -715,10 +696,8 @@
"upload_error.poll": "Prenos datoteke z anketami ni dovoljen.",
"upload_form.audio_description": "OpiÅĄi za osebe z okvaro sluha",
"upload_form.description": "OpiÅĄite za slabovidne",
- "upload_form.description_missing": "Noben opis ni dodan",
"upload_form.edit": "Uredi",
"upload_form.thumbnail": "Spremeni sliÄico",
- "upload_form.undo": "IzbriÅĄi",
"upload_form.video_description": "OpiÅĄite za osebe z okvaro sluha in/ali vida",
"upload_modal.analyzing_picture": "Analiziranje slike âĻ",
"upload_modal.apply": "Uveljavi",
diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json
index 48eac1487..bfc674248 100644
--- a/app/javascript/mastodon/locales/sq.json
+++ b/app/javascript/mastodon/locales/sq.json
@@ -32,6 +32,7 @@
"account.featured_tags.last_status_never": "Pa postime",
"account.featured_tags.title": "HashtagÃĢ tÃĢ zgjedhur tÃĢ {name}",
"account.follow": "Ndiqeni",
+ "account.follow_back": "Ndiqe gjithashtu",
"account.followers": "NdjekÃĢs",
"account.followers.empty": "KÃĢtÃĢ pÃĢrdorues ende sâe ndjek kush.",
"account.followers_counter": "{count, plural, one {{counter} NdjekÃĢs} other {{counter} NdjekÃĢs}}",
@@ -52,6 +53,7 @@
"account.mute_notifications_short": "Mos shfaq njoftime",
"account.mute_short": "Mos i shfaq",
"account.muted": "Heshtuar",
+ "account.mutual": "Reciproke",
"account.no_bio": "Sâu dha pÃĢrshkrim.",
"account.open_original_page": "Hap faqen origjinale",
"account.posts": "Mesazhe",
@@ -87,7 +89,6 @@
"announcement.announcement": "LajmÃĢrim",
"attachments_list.unprocessed": "(e papÃĢrpunuar)",
"audio.hide": "Fshihe audion",
- "autosuggest_hashtag.per_week": "{count} pÃĢr javÃĢ",
"boost_modal.combo": "QÃĢ kjo tÃĢ anashkalohet herÃĢs tjetÃĢr, mund tÃĢ shtypni {combo}",
"bundle_column_error.copy_stacktrace": "Kopjo raportim gabimi",
"bundle_column_error.error.body": "Faqja e kÃĢrkuar sâu vizatua dot. Kjo mund tÃĢ vijÃĢ nga njÃĢ e metÃĢ nÃĢ kodin tonÃĢ, ose nga njÃĢ problem pÃĢrputhshmÃĢrie i shfletuesit.",
@@ -144,22 +145,22 @@
"compose_form.lock_disclaimer": "Llogaria juaj sâÃĢshtÃĢ {locked}. Mund ta ndjekÃĢ cilido, pÃĢr tÃĢ parÃĢ postimet tuaja vetÃĢm pÃĢr ndjekÃĢsit.",
"compose_form.lock_disclaimer.lock": "e kyçur",
"compose_form.placeholder": "Ãâbluani nÃĢ mendje?",
- "compose_form.poll.add_option": "Shtoni njÃĢ zgjedhje",
+ "compose_form.poll.add_option": "Shtoni mundÃĢsi",
"compose_form.poll.duration": "KohÃĢzgjatje pyetÃĢsori",
- "compose_form.poll.option_placeholder": "Zgjedhja {number}",
- "compose_form.poll.remove_option": "Hiqe kÃĢtÃĢ zgjedhje",
+ "compose_form.poll.multiple": "ShumÃĢ zgjedhje",
+ "compose_form.poll.option_placeholder": "MundÃĢsia {number}",
+ "compose_form.poll.remove_option": "Hiqe kÃĢtÃĢ mundÃĢsi",
+ "compose_form.poll.single": "Zgjidhni njÃĢ",
"compose_form.poll.switch_to_multiple": "Ndrysho votimin pÃĢr tÃĢ lejuar shumÃĢ zgjedhje",
"compose_form.poll.switch_to_single": "Ndrysho votimin pÃĢr tÃĢ lejuar vetÃĢm njÃĢ zgjedhje",
- "compose_form.publish": "Botoje",
+ "compose_form.poll.type": "Stil",
+ "compose_form.publish": "Postim",
"compose_form.publish_form": "Publikoje",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Ruaji ndryshimet",
- "compose_form.sensitive.hide": "{count, plural, one {VÃĢri shenjÃĢ medias si rezervat} other {VÃĢru shenjÃĢ mediave si rezervat}}",
- "compose_form.sensitive.marked": "{count, plural, one {Medias i ÃĢshtÃĢ vÃĢnÃĢ shenjÃĢ rezervat} other {Mediave u ÃĢshtÃĢ vÃĢnÃĢ shenjÃĢ si rezervat}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {Media sâka shenjÃĢ si rezervat} other {Mediat sâkanÃĢ shenja si rezervat}}",
+ "compose_form.reply": "PÃĢrgjigjuni",
+ "compose_form.save_changes": "PÃĢrditÃĢsoje",
"compose_form.spoiler.marked": "Hiq sinjalizim lÃĢnde",
"compose_form.spoiler.unmarked": "Shtoni sinjalizim lÃĢnde",
- "compose_form.spoiler_placeholder": "Shkruani kÃĢtu sinjalizimin tuaj",
+ "compose_form.spoiler_placeholder": "Sinjalizim lÃĢnde (opsional)",
"confirmation_modal.cancel": "Anuloje",
"confirmations.block.block_and_report": "Bllokojeni & Raportojeni",
"confirmations.block.confirm": "Bllokoje",
@@ -406,7 +407,6 @@
"navigation_bar.direct": "PÃĢrmendje private",
"navigation_bar.discover": "Zbuloni",
"navigation_bar.domain_blocks": "PÃĢrkatÃĢsi tÃĢ bllokuara",
- "navigation_bar.edit_profile": "PÃĢrpunoni profilin",
"navigation_bar.explore": "Eksploroni",
"navigation_bar.favourites": "TÃĢ parapÃĢlqyer",
"navigation_bar.filters": "FjalÃĢ tÃĢ heshtuara",
@@ -524,14 +524,15 @@
"poll_button.add_poll": "Shtoni njÃĢ pyetÃĢsor",
"poll_button.remove_poll": "Hiqe pyetÃĢsorin",
"privacy.change": "Rregulloni privatÃĢsi mesazhesh",
- "privacy.direct.long": "I dukshÃĢm vetÃĢm pÃĢr pÃĢrdorues tÃĢ pÃĢrmendur",
- "privacy.direct.short": "VetÃĢm pÃĢr personat e pÃĢrmendur",
- "privacy.private.long": "I dukshÃĢm vetÃĢm pÃĢr ndjekÃĢs",
- "privacy.private.short": "VetÃĢm ndjekÃĢs",
- "privacy.public.long": "I dukshÃĢm pÃĢr tÃĢ tÃĢrÃĢ",
+ "privacy.direct.long": "GjithkÃĢnd i pÃĢrmendur te postimi",
+ "privacy.direct.short": "Persona tÃĢ veçantÃĢ",
+ "privacy.private.long": "VetÃĢm ndjekÃĢsit tuaj",
+ "privacy.private.short": "NdjekÃĢs",
+ "privacy.public.long": "Cilido qÃĢ hyn e del nÃĢ Mastodon",
"privacy.public.short": "Publik",
- "privacy.unlisted.long": "I dukshÃĢm pÃĢr tÃĢ tÃĢrÃĢ, por lÃĢnÃĢ jashtÃĢ nga veçoritÃĢ e zbulimit",
- "privacy.unlisted.short": "Jo nÃĢ lista",
+ "privacy.unlisted.additional": "Ky sillet saktÃĢsisht si publik, vetÃĢm se postimi sâdo tÃĢ shfaqet nÃĢ prurje tÃĢ drejtpÃĢrdrejta, ose nÃĢ hashtag-ÃĢ, te eksploroni, apo kÃĢrkim nÃĢ Mastodon, edhe kur keni zgjedhur tÃĢ jetÃĢ pÃĢr tÃĢrÃĢ llogarinÃĢ.",
+ "privacy.unlisted.long": "MÃĢ pak fanfara algoritmike",
+ "privacy.unlisted.short": "Publik i qetÃĢ",
"privacy_policy.last_updated": "PÃĢrditÃĢsuar sÃĢ fundi mÃĢ {date}",
"privacy_policy.title": "Rregulla PrivatÃĢsie",
"recommended": "E rekomanduar",
@@ -549,7 +550,9 @@
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
"relative_time.today": "sot",
+ "reply_indicator.attachments": "{count, plural, one {# bashkÃĢngjitje} other {# bashkÃĢngjitje}}",
"reply_indicator.cancel": "Anuloje",
+ "reply_indicator.poll": "PyetÃĢsor",
"report.block": "Bllokoje",
"report.block_explanation": "Sâdo tÃĢ shihni postime prej tyre. Sâdo tÃĢ jenÃĢ nÃĢ gjendje tÃĢ shohin postimet tuaja, apo tâju ndjekin. Do tÃĢ jenÃĢ nÃĢ gjendje tÃĢ shohin se janÃĢ bllokuar.",
"report.categories.legal": "Ligjore",
@@ -713,10 +716,8 @@
"upload_error.poll": "Me pyetÃĢsorÃĢt sâlejohet ngarkim kartelash.",
"upload_form.audio_description": "PÃĢrshkruajeni pÃĢr persona me dÃĢgjim tÃĢ kufizuar",
"upload_form.description": "PÃĢrshkruajeni pÃĢr persona me probleme shikimi",
- "upload_form.description_missing": "Sâu shtua pÃĢrshkrim",
"upload_form.edit": "PÃĢrpunoni",
"upload_form.thumbnail": "Ndryshoni miniaturÃĢn",
- "upload_form.undo": "Fshije",
"upload_form.video_description": "PÃĢrshkruajeni pÃĢr persona me dÃĢgjim tÃĢ kufizuar ose probleme shikimi",
"upload_modal.analyzing_picture": "Po analizohet fotojaâĻ",
"upload_modal.apply": "Aplikoje",
diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json
index 59ad0ae84..b0348748a 100644
--- a/app/javascript/mastodon/locales/sr-Latn.json
+++ b/app/javascript/mastodon/locales/sr-Latn.json
@@ -32,6 +32,7 @@
"account.featured_tags.last_status_never": "Nema objava",
"account.featured_tags.title": "Istaknute heÅĄ oznake korisnika {name}",
"account.follow": "Prati",
+ "account.follow_back": "Uzvrati praÄenje",
"account.followers": "Pratioci",
"account.followers.empty": "JoÅĄ uvek niko ne prati ovog korisnika.",
"account.followers_counter": "{count, plural, one {{counter} pratilac} few {{counter} pratioca} other {{counter} pratilaca}}",
@@ -52,6 +53,7 @@
"account.mute_notifications_short": "IskljuÄi obaveÅĄtenja",
"account.mute_short": "IskljuÄi",
"account.muted": "Ignorisan",
+ "account.mutual": "ZajedniÄki",
"account.no_bio": "Nema opisa.",
"account.open_original_page": "Otvori originalnu stranicu",
"account.posts": "Objave",
@@ -87,7 +89,6 @@
"announcement.announcement": "Najava",
"attachments_list.unprocessed": "(neobraÄeno)",
"audio.hide": "Sakrij audio",
- "autosuggest_hashtag.per_week": "{count} nedeljno",
"boost_modal.combo": "MoÅžete pritisnuti {combo} da preskoÄite ovo sledeÄi put",
"bundle_column_error.copy_stacktrace": "Kopiraj izveÅĄtaj o greÅĄci",
"bundle_column_error.error.body": "Nije moguÄe prikazati traÅženu stranicu. Razlog moÅže biti greÅĄka u naÅĄem kodu ili problem sa kompatibilnoÅĄÄu pretraÅživaÄa.",
@@ -144,22 +145,12 @@
"compose_form.lock_disclaimer": "VaÅĄ nalog nije {locked}. Svako moÅže da vas prati i da vidi vaÅĄe objave namenjene samo za vaÅĄe pratioce.",
"compose_form.lock_disclaimer.lock": "zakljuÄan",
"compose_form.placeholder": "O Äemu razmiÅĄljate?",
- "compose_form.poll.add_option": "Dodajte izbor",
"compose_form.poll.duration": "Trajanje ankete",
- "compose_form.poll.option_placeholder": "Izbor {number}",
- "compose_form.poll.remove_option": "Ukloni ovaj izbor",
"compose_form.poll.switch_to_multiple": "Promenite anketu da biste omoguÄili viÅĄe izbora",
"compose_form.poll.switch_to_single": "Promenite anketu da biste omoguÄili jedan izbor",
- "compose_form.publish": "Objavi",
"compose_form.publish_form": "Objavi",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "SaÄuvaj promene",
- "compose_form.sensitive.hide": "{count, plural, one {OznaÄi multimediju kao osetljivu} few {OznaÄi multimediju kao osetljivu} other {OznaÄi multimediju kao osetljivu}}",
- "compose_form.sensitive.marked": "{count, plural, one {Multimedija je oznaÄena kao osetljiva} few {Multimedija je oznaÄena kao osetljiva} other {Multimedija je oznaÄena kao osetljiva}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {Multimedija nije oznaÄena kao osetljiva} few {Multimedija nije oznaÄena kao osetljiva} other {Multimedija nije oznaÄena kao osetljiva}}",
"compose_form.spoiler.marked": "Ukloni upozorenje o sadrÅžaju",
"compose_form.spoiler.unmarked": "Dodaj upozorenje o sadrÅžaju",
- "compose_form.spoiler_placeholder": "Ovde napiÅĄite upozorenje",
"confirmation_modal.cancel": "OtkaÅži",
"confirmations.block.block_and_report": "Blokiraj i prijavi",
"confirmations.block.confirm": "Blokiraj",
@@ -406,7 +397,6 @@
"navigation_bar.direct": "Privatna pominjanja",
"navigation_bar.discover": "Otkrij",
"navigation_bar.domain_blocks": "Blokirani domeni",
- "navigation_bar.edit_profile": "Uredi profil",
"navigation_bar.explore": "IstraÅži",
"navigation_bar.favourites": "Omiljeno",
"navigation_bar.filters": "Ignorisane reÄi",
@@ -524,14 +514,7 @@
"poll_button.add_poll": "Dodaj anketu",
"poll_button.remove_poll": "Ukloni anketu",
"privacy.change": "Promeni privatnost objave",
- "privacy.direct.long": "Vidljivo samo pomenutim korisnicima",
- "privacy.direct.short": "Samo pomenute osobe",
- "privacy.private.long": "Vidljivo samo pratiocima",
- "privacy.private.short": "Samo pratioci",
- "privacy.public.long": "Vidljivo za sve",
"privacy.public.short": "Javno",
- "privacy.unlisted.long": "Vidljivo svima, ali iskljuÄeno iz funkcija otkrivanja",
- "privacy.unlisted.short": "Neizlistano",
"privacy_policy.last_updated": "Poslednje aÅžuriranje {date}",
"privacy_policy.title": "Politika privatnosti",
"recommended": "PreporuÄeno",
@@ -713,10 +696,8 @@
"upload_error.poll": "Otpremanje datoteka nije dozvoljeno kod anketa.",
"upload_form.audio_description": "Dodajte opis za osobe sa oÅĄteÄenim sluhom",
"upload_form.description": "Dodajte opis za osobe sa oÅĄteÄenim vidom",
- "upload_form.description_missing": "Nema dodatog opisa",
"upload_form.edit": "Uredi",
"upload_form.thumbnail": "Promeni sliÄicu",
- "upload_form.undo": "IzbriÅĄi",
"upload_form.video_description": "OpiÅĄite za osobe sa oÅĄteÄenim sluhom ili vidom",
"upload_modal.analyzing_picture": "Analiziranje slikeâĻ",
"upload_modal.apply": "Primeni",
diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json
index 79786b8d4..4e4956e1a 100644
--- a/app/javascript/mastodon/locales/sr.json
+++ b/app/javascript/mastodon/locales/sr.json
@@ -32,6 +32,7 @@
"account.featured_tags.last_status_never": "ĐĐĩĐŧа ОйŅава",
"account.featured_tags.title": "ĐŅŅаĐēĐŊŅŅĐĩ Ņ
ĐĩŅ ĐžĐˇĐŊаĐēĐĩ ĐēĐžŅиŅĐŊиĐēа {name}",
"account.follow": "ĐŅаŅи",
+ "account.follow_back": "ĐŖĐˇĐ˛ŅаŅи ĐŋŅаŅĐĩŅĐĩ",
"account.followers": "ĐŅаŅиОŅи",
"account.followers.empty": "ĐĐžŅ ŅвĐĩĐē ĐŊиĐēĐž ĐŊĐĩ ĐŋŅаŅи ĐžĐ˛ĐžĐŗ ĐēĐžŅиŅĐŊиĐēа.",
"account.followers_counter": "{count, plural, one {{counter} ĐŋŅаŅиĐģаŅ} few {{counter} ĐŋŅаŅиОŅа} other {{counter} ĐŋŅаŅиĐģаŅа}}",
@@ -88,7 +89,6 @@
"announcement.announcement": "ĐаŅава",
"attachments_list.unprocessed": "(ĐŊĐĩОйŅаŅĐĩĐŊĐž)",
"audio.hide": "ХаĐēŅĐ¸Ņ Đ°ŅдиО",
- "autosuggest_hashtag.per_week": "{count} ĐŊĐĩĐ´ĐĩŅĐŊĐž",
"boost_modal.combo": "ĐĐžĐļĐĩŅĐĩ ĐŋŅиŅиŅĐŊŅŅи {combo} да ĐŋŅĐĩŅĐēĐžŅиŅĐĩ ОвО ŅĐģĐĩĐ´ĐĩŅи ĐŋŅŅ",
"bundle_column_error.copy_stacktrace": "ĐĐžĐŋиŅĐ°Ņ Đ¸ĐˇĐ˛ĐĩŅŅĐ°Ņ Đž ĐŗŅĐĩŅŅи",
"bundle_column_error.error.body": "ĐиŅĐĩ ĐŧĐžĐŗŅŅĐĩ ĐŋŅиĐēаСаŅи ŅŅаĐļĐĩĐŊŅ ŅŅŅаĐŊиŅŅ. РаСĐģĐžĐŗ ĐŧĐžĐļĐĩ йиŅи ĐŗŅĐĩŅĐēа Ņ ĐŊаŅĐĩĐŧ ĐēĐžĐ´Ņ Đ¸Đģи ĐŋŅОйĐģĐĩĐŧ Ņа ĐēĐžĐŧĐŋаŅийиĐģĐŊĐžŅŅŅ ĐŋŅĐĩŅŅаĐļиваŅа.",
@@ -145,22 +145,22 @@
"compose_form.lock_disclaimer": "ĐĐ°Ņ ĐŊаĐģĐžĐŗ ĐŊиŅĐĩ {locked}. ХваĐēĐž ĐŧĐžĐļĐĩ да ĐĐ°Ņ ĐˇĐ°ĐŋŅаŅи и да види ОйŅавĐĩ ĐŊаĐŧĐĩŅĐĩĐŊĐĩ ŅаĐŧĐž ĐаŅиĐŧ ĐŋŅаŅиОŅиĐŧа.",
"compose_form.lock_disclaimer.lock": "СаĐēŅŅŅаĐŊ",
"compose_form.placeholder": "Đ ŅĐĩĐŧŅ ŅаСĐŧиŅŅаŅĐĩ?",
- "compose_form.poll.add_option": "ĐОдаŅŅĐĩ иСйОŅ",
+ "compose_form.poll.add_option": "ĐĐžĐ´Đ°Ņ ĐžĐŋŅиŅŅ",
"compose_form.poll.duration": "ĐĸŅаŅаŅĐĩ аĐŊĐēĐĩŅĐĩ",
- "compose_form.poll.option_placeholder": "ĐĐˇĐąĐžŅ {number}",
- "compose_form.poll.remove_option": "ĐŖĐēĐģĐžĐŊи ĐžĐ˛Đ°Ņ Đ¸ĐˇĐąĐžŅ",
+ "compose_form.poll.multiple": "ĐиŅĐĩŅŅŅŅĐēи иСйОŅ",
+ "compose_form.poll.option_placeholder": "ĐĐŋŅиŅа {number}",
+ "compose_form.poll.remove_option": "ĐŖĐēĐģĐžĐŊи ĐžĐ˛Ņ ĐžĐŋŅиŅŅ",
+ "compose_form.poll.single": "ĐдайĐĩŅиŅĐĩ ŅĐĩĐ´ĐŊĐž",
"compose_form.poll.switch_to_multiple": "ĐŅĐžĐŧĐĩĐŊиŅĐĩ аĐŊĐēĐĩŅŅ Đ´Đ° йиŅŅĐĩ ĐžĐŧĐžĐŗŅŅиĐģи виŅĐĩ иСйОŅа",
"compose_form.poll.switch_to_single": "ĐŅĐžĐŧĐĩĐŊиŅĐĩ аĐŊĐēĐĩŅŅ Đ´Đ° йиŅŅĐĩ ĐžĐŧĐžĐŗŅŅиĐģи ŅĐĩдаĐŊ иСйОŅ",
+ "compose_form.poll.type": "ĐĄŅиĐģ",
"compose_form.publish": "ĐĐąŅави",
"compose_form.publish_form": "ĐОва ОйŅава",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "ХаŅŅĐ˛Đ°Ņ ĐŋŅĐžĐŧĐĩĐŊĐĩ",
- "compose_form.sensitive.hide": "{count, plural, one {ĐСĐŊаŅи ĐŧŅĐģŅиĐŧĐĩдиŅŅ ĐēаО ĐžŅĐĩŅŅивŅ} few {ĐСĐŊаŅи ĐŧŅĐģŅиĐŧĐĩдиŅŅ ĐēаО ĐžŅĐĩŅŅивŅ} other {ĐСĐŊаŅи ĐŧŅĐģŅиĐŧĐĩдиŅŅ ĐēаО ĐžŅĐĩŅŅивŅ}}",
- "compose_form.sensitive.marked": "{count, plural, one {ĐŅĐģŅиĐŧĐĩдиŅа ŅĐĩ ОСĐŊаŅĐĩĐŊа ĐēаО ĐžŅĐĩŅŅива} few {ĐŅĐģŅиĐŧĐĩдиŅа ŅĐĩ ОСĐŊаŅĐĩĐŊа ĐēаО ĐžŅĐĩŅŅива} other {ĐŅĐģŅиĐŧĐĩдиŅа ŅĐĩ ОСĐŊаŅĐĩĐŊа ĐēаО ĐžŅĐĩŅŅива}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {ĐŅĐģŅиĐŧĐĩдиŅа ĐŊиŅĐĩ ОСĐŊаŅĐĩĐŊа ĐēаО ĐžŅĐĩŅŅива} few {ĐŅĐģŅиĐŧĐĩдиŅа ĐŊиŅĐĩ ОСĐŊаŅĐĩĐŊа ĐēаО ĐžŅĐĩŅŅива} other {ĐŅĐģŅиĐŧĐĩдиŅа ĐŊиŅĐĩ ОСĐŊаŅĐĩĐŊа ĐēаО ĐžŅĐĩŅŅива}}",
+ "compose_form.reply": "ĐĐ´ĐŗĐžĐ˛ĐžŅи",
+ "compose_form.save_changes": "ĐĐļŅŅиŅаŅ",
"compose_form.spoiler.marked": "ĐŖĐēĐģĐžĐŊи ŅĐŋОСОŅĐĩŅĐĩ Đž ŅадŅĐļаŅŅ",
"compose_form.spoiler.unmarked": "ĐĐžĐ´Đ°Ņ ŅĐŋОСОŅĐĩŅĐĩ Đž ŅадŅĐļаŅŅ",
- "compose_form.spoiler_placeholder": "ĐвдĐĩ ĐŊаĐŋиŅиŅĐĩ ŅĐŋОСОŅĐĩŅĐĩ",
+ "compose_form.spoiler_placeholder": "ĐŖĐŋОСОŅĐĩŅĐĩ Đž ŅадŅĐļаŅŅ (ĐžĐŋŅиОĐŊĐž)",
"confirmation_modal.cancel": "ĐŅĐēаĐļи",
"confirmations.block.block_and_report": "ĐĐģĐžĐēиŅĐ°Ņ Đ¸ ĐŋŅиŅави",
"confirmations.block.confirm": "ĐĐģĐžĐēиŅаŅ",
@@ -407,7 +407,6 @@
"navigation_bar.direct": "ĐŅиваŅĐŊа ĐŋĐžĐŧиŅаŅа",
"navigation_bar.discover": "ĐŅĐēŅиŅ",
"navigation_bar.domain_blocks": "ĐĐģĐžĐēиŅаĐŊи Đ´ĐžĐŧĐĩĐŊи",
- "navigation_bar.edit_profile": "ĐŖŅĐĩди ĐŋŅĐžŅиĐģ",
"navigation_bar.explore": "ĐŅŅŅаĐļи",
"navigation_bar.favourites": "ĐĐŧиŅĐĩĐŊĐž",
"navigation_bar.filters": "ĐĐŗĐŊĐžŅиŅаĐŊĐĩ ŅĐĩŅи",
@@ -525,14 +524,15 @@
"poll_button.add_poll": "ĐĐžĐ´Đ°Ņ Đ°ĐŊĐēĐĩŅŅ",
"poll_button.remove_poll": "ĐŖĐēĐģĐžĐŊи аĐŊĐēĐĩŅŅ",
"privacy.change": "ĐŅĐžĐŧĐĩĐŊи ĐŋŅиваŅĐŊĐžŅŅ ĐžĐąŅавĐĩ",
- "privacy.direct.long": "ĐидŅивО ŅаĐŧĐž ĐŋĐžĐŧĐĩĐŊŅŅиĐŧ ĐēĐžŅиŅĐŊиŅиĐŧа",
- "privacy.direct.short": "ХаĐŧĐž ĐŋĐžĐŧĐĩĐŊŅŅĐĩ ĐžŅОйĐĩ",
- "privacy.private.long": "ĐидŅивО ŅаĐŧĐž ĐŋŅаŅиОŅиĐŧа",
- "privacy.private.short": "ХаĐŧĐž ĐŋŅаŅиОŅи",
- "privacy.public.long": "ĐидŅивО Са ŅвĐĩ",
+ "privacy.direct.long": "Хви ĐŋĐžĐŧĐĩĐŊŅŅи Ņ ĐžĐąŅави",
+ "privacy.direct.short": "ĐĐ´ŅĐĩŅĐĩĐŊи ŅŅди",
+ "privacy.private.long": "ХаĐŧĐž ваŅи ĐŋŅаŅиОŅи",
+ "privacy.private.short": "ĐŅаŅиОŅи",
+ "privacy.public.long": "ĐиĐģĐž ĐēĐž ĐŊа Mastodon-Ņ Đ¸ ваĐŊ ŅĐĩĐŗĐ°",
"privacy.public.short": "ĐавĐŊĐž",
- "privacy.unlisted.long": "ĐидŅивО ŅвиĐŧа, аĐģи иŅĐēŅŅŅĐĩĐŊĐž иС ŅŅĐŊĐēŅиŅа ĐžŅĐēŅиваŅа",
- "privacy.unlisted.short": "ĐĐĩиСĐģиŅŅаĐŊĐž",
+ "privacy.unlisted.additional": "ĐвО ŅĐĩ ĐŋĐžĐŊаŅа ĐŋĐžŅĐŋŅĐŊĐž ĐēаО ŅавĐŊĐž, ĐžŅиĐŧ ŅŅĐž ŅĐĩ ОйŅава ĐŊĐĩŅĐĩ ĐŋĐžŅавŅиваŅи Ņ Đ¸ĐˇĐ˛ĐžŅиĐŧа ŅĐļивО иĐģи Ņ
ĐĩŅ ĐžĐˇĐŊаĐēаĐŧа, иŅŅŅаĐļиваŅиĐŧа иĐģи ĐŋŅĐĩŅŅаСи Mastodon-а, ŅаĐē и аĐēĐž ŅŅĐĩ ŅĐēŅŅŅĐĩĐŊи Ņ ŅĐĩĐģĐžĐŧ ĐŊаĐģĐžĐŗŅ.",
+ "privacy.unlisted.long": "ĐаŅĐĩ аĐģĐŗĐžŅиŅаĐŧŅĐēиŅ
ŅаĐŊŅаŅа",
+ "privacy.unlisted.short": "ĐĸиŅ
а ŅавĐŊĐžŅŅ",
"privacy_policy.last_updated": "ĐĐžŅĐģĐĩĐ´ŅĐĩ аĐļŅŅиŅаŅĐĩ {date}",
"privacy_policy.title": "ĐĐžĐģиŅиĐēа ĐŋŅиваŅĐŊĐžŅŅи",
"recommended": "ĐŅĐĩĐŋĐžŅŅŅĐĩĐŊĐž",
@@ -550,7 +550,9 @@
"relative_time.minutes": "{number} ĐŧиĐŊ.",
"relative_time.seconds": "{number} ŅĐĩĐē.",
"relative_time.today": "даĐŊаŅ",
+ "reply_indicator.attachments": "{count, plural, one {# ĐŋŅиĐģĐžĐŗ} few {# ĐŋŅиĐģĐžĐŗĐ°} other {# ĐŋŅиĐģĐžĐŗĐ°}}",
"reply_indicator.cancel": "ĐŅĐēаĐļи",
+ "reply_indicator.poll": "ĐĐŊĐēĐĩŅа",
"report.block": "ĐĐģĐžĐēиŅаŅ",
"report.block_explanation": "ĐĐĩŅĐĩŅĐĩ видĐĩŅи ОйŅавĐĩ ĐēĐžŅиŅĐŊиĐēа. Đи ĐžĐŊ ĐŊĐĩŅĐĩ видĐĩŅи ĐаŅĐĩ ОйŅавĐĩ ĐŊиŅи ŅĐĩ ĐŧĐžŅи да ĐĐ°Ņ ĐŋŅаŅи. ĐĸаĐēĐžŅĐĩ ŅĐĩ ĐŧĐžŅи да ŅаСĐŊа да ŅĐĩ ĐąĐģĐžĐēиŅаĐŊ.",
"report.categories.legal": "ĐŅавĐŊи",
@@ -714,10 +716,8 @@
"upload_error.poll": "ĐŅĐŋŅĐĩĐŧаŅĐĩ даŅĐžŅĐĩĐēа ĐŊиŅĐĩ дОСвОŅĐĩĐŊĐž ĐēОд аĐŊĐēĐĩŅа.",
"upload_form.audio_description": "ĐОдаŅŅĐĩ ĐžĐŋĐ¸Ņ ĐˇĐ° ĐžŅОйĐĩ Ņа ĐžŅŅĐĩŅĐĩĐŊиĐŧ ŅĐģŅŅ
ĐžĐŧ",
"upload_form.description": "ĐОдаŅŅĐĩ ĐžĐŋĐ¸Ņ ĐˇĐ° ĐžŅОйĐĩ Ņа ĐžŅŅĐĩŅĐĩĐŊиĐŧ видОĐŧ",
- "upload_form.description_missing": "ĐĐĩĐŧа дОдаŅĐžĐŗ ĐžĐŋиŅа",
"upload_form.edit": "ĐŖŅĐĩди",
"upload_form.thumbnail": "ĐŅĐžĐŧĐĩĐŊи ŅĐģиŅиŅŅ",
- "upload_form.undo": "ĐСйŅиŅи",
"upload_form.video_description": "ĐĐŋиŅиŅĐĩ Са ĐžŅОйĐĩ Ņа ĐžŅŅĐĩŅĐĩĐŊиĐŧ ŅĐģŅŅ
ĐžĐŧ иĐģи видОĐŧ",
"upload_modal.analyzing_picture": "ĐĐŊаĐģиСиŅаŅĐĩ ŅĐģиĐēĐĩâĻ",
"upload_modal.apply": "ĐŅиĐŧĐĩĐŊи",
diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json
index d3ca776bd..d6e6555b5 100644
--- a/app/javascript/mastodon/locales/sv.json
+++ b/app/javascript/mastodon/locales/sv.json
@@ -89,7 +89,6 @@
"announcement.announcement": "Meddelande",
"attachments_list.unprocessed": "(obehandlad)",
"audio.hide": "DÃļlj audio",
- "autosuggest_hashtag.per_week": "{count} per vecka",
"boost_modal.combo": "Du kan trycka pÃĨ {combo} fÃļr att hoppa Ãļver detta nästa gÃĨng",
"bundle_column_error.copy_stacktrace": "Kopiera felrapport",
"bundle_column_error.error.body": "Den begärda sidan kunde inte visas. Det kan bero pÃĨ ett fel i vÃĨr kod eller ett problem med webbläsarens kompatibilitet.",
@@ -146,22 +145,18 @@
"compose_form.lock_disclaimer": "Ditt konto är inte {locked}. Vem som helst kan fÃļlja dig fÃļr att se dina inlägg som endast är fÃļr fÃļljare.",
"compose_form.lock_disclaimer.lock": "lÃĨst",
"compose_form.placeholder": "Vad tänker du pÃĨ?",
- "compose_form.poll.add_option": "Lägg till ett val",
+ "compose_form.poll.add_option": "Lägg till alternativ",
"compose_form.poll.duration": "Varaktighet fÃļr omrÃļstning",
- "compose_form.poll.option_placeholder": "Val {number}",
- "compose_form.poll.remove_option": "Ta bort detta val",
+ "compose_form.poll.option_placeholder": "Alternativ {number}",
"compose_form.poll.switch_to_multiple": "Ãndra enkät fÃļr att tillÃĨta flera val",
"compose_form.poll.switch_to_single": "Ãndra enkät fÃļr att tillÃĨta ett enda val",
- "compose_form.publish": "Publicera",
+ "compose_form.poll.type": "Stil",
"compose_form.publish_form": "Publicera",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Spara ändringar",
- "compose_form.sensitive.hide": "Markera media som känsligt",
- "compose_form.sensitive.marked": "Media har markerats som känsligt",
- "compose_form.sensitive.unmarked": "Media är inte markerat som känsligt",
+ "compose_form.reply": "Svara",
+ "compose_form.save_changes": "Uppdatera",
"compose_form.spoiler.marked": "Texten är dold bakom en varning",
"compose_form.spoiler.unmarked": "Texten är inte dold",
- "compose_form.spoiler_placeholder": "Skriv din varning här",
+ "compose_form.spoiler_placeholder": "InnehÃĨllsvarning (valfritt)",
"confirmation_modal.cancel": "Avbryt",
"confirmations.block.block_and_report": "Blockera & rapportera",
"confirmations.block.confirm": "Blockera",
@@ -408,7 +403,6 @@
"navigation_bar.direct": "Privata nämningar",
"navigation_bar.discover": "Upptäck",
"navigation_bar.domain_blocks": "Dolda domäner",
- "navigation_bar.edit_profile": "Redigera profil",
"navigation_bar.explore": "Utforska",
"navigation_bar.favourites": "Favoriter",
"navigation_bar.filters": "Tystade ord",
@@ -524,14 +518,10 @@
"poll_button.add_poll": "Lägg till en omrÃļstning",
"poll_button.remove_poll": "Ta bort omrÃļstning",
"privacy.change": "Ãndra inläggsintegritet",
- "privacy.direct.long": "Skicka endast till nämnda användare",
- "privacy.direct.short": "Endast omnämnda personer",
- "privacy.private.long": "Endast synligt fÃļr fÃļljare",
- "privacy.private.short": "Endast fÃļljare",
- "privacy.public.long": "Synlig fÃļr alla",
+ "privacy.private.long": "Endast dina fÃļljare",
+ "privacy.private.short": "FÃļljare",
+ "privacy.public.long": "Alla pÃĨ och utanfÃļr Mastodon",
"privacy.public.short": "Publik",
- "privacy.unlisted.long": "Synlig fÃļr alla, men visas inte i upptäcksfunktioner",
- "privacy.unlisted.short": "Olistad",
"privacy_policy.last_updated": "Senast uppdaterad {date}",
"privacy_policy.title": "Integritetspolicy",
"recommended": "Rekommenderas",
@@ -550,6 +540,7 @@
"relative_time.seconds": "{number}sek",
"relative_time.today": "idag",
"reply_indicator.cancel": "Ã
ngra",
+ "reply_indicator.poll": "OmrÃļstning",
"report.block": "Blockera",
"report.block_explanation": "Du kommer inte se hens inlägg. Hen kommer inte kunna se dina inlägg eller fÃļlja dig. Hen kommer kunna se att hen är blockerad.",
"report.categories.legal": "Juridisk",
@@ -713,10 +704,8 @@
"upload_error.poll": "Filuppladdning tillÃĨts inte med omrÃļstningar.",
"upload_form.audio_description": "Beskriv fÃļr personer med hÃļrselnedsättning",
"upload_form.description": "Beskriv fÃļr synskadade",
- "upload_form.description_missing": "Beskrivning saknas",
"upload_form.edit": "Redigera",
"upload_form.thumbnail": "Ãndra miniatyr",
- "upload_form.undo": "Radera",
"upload_form.video_description": "Beskriv fÃļr personer med hÃļrsel- eller synnedsättning",
"upload_modal.analyzing_picture": "Analyserar bildâĻ",
"upload_modal.apply": "Verkställ",
diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json
index abbdf9b7d..42164f656 100644
--- a/app/javascript/mastodon/locales/szl.json
+++ b/app/javascript/mastodon/locales/szl.json
@@ -93,8 +93,6 @@
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
"onboarding.steps.share_profile.title": "Share your profile",
"privacy.change": "Adjust status privacy",
- "privacy.direct.short": "Direct",
- "privacy.private.short": "Followers-only",
"report.placeholder": "Type or paste additional comments",
"report.submit": "Submit report",
"report.target": "Report {target}",
diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json
index 6b2332d5b..6210c3d0b 100644
--- a/app/javascript/mastodon/locales/ta.json
+++ b/app/javascript/mastodon/locales/ta.json
@@ -10,6 +10,7 @@
"account.badges.group": "āŽā¯āŽ´ā¯",
"account.block": "@{name} -āŽāŽ¤ā¯ āŽ¤āŽā¯",
"account.block_domain": "{domain} āŽ¯āŽŋāŽ˛ā¯ āŽāްā¯āލā¯āޤ❠āŽĩāŽ°ā¯āŽŽā¯ āŽāޞā¯āŽ˛āŽžāŽĩāŽąā¯āŽąā¯āޝā¯āŽŽā¯ āŽŽāŽąā¯",
+ "account.block_short": "āŽ¤āŽā¯",
"account.blocked": "āŽŽā¯āŽāŽā¯āŽāŽĒā¯āŽĒāŽā¯āŽāޤā¯",
"account.browse_more_on_origin_server": "āŽŽā¯āޞā¯āŽŽā¯ āŽāŽ˛āŽžāŽĩ āŽā¯āޝāŽĩāŽŋāŽĩāŽ°āŽ¤ā¯āޤāŽŋāŽąā¯āŽā¯āŽā¯ āŽā¯āޞā¯āŽ",
"account.cancel_follow_request": "Withdraw follow request",
@@ -18,20 +19,26 @@
"account.edit_profile": "āŽā¯āޝāŽĩāŽŋāŽĩāŽ°āŽ¤ā¯āŽ¤ā¯ āŽŽāŽžāŽąā¯āŽąā¯",
"account.enable_notifications": "@{name} āŽĒāŽ¤āŽŋāŽĩāŽŋāŽā¯āŽāޞ❠āŽāŽŠāŽā¯āŽā¯āŽ¤ā¯ āŽ¤ā¯āްāŽŋāŽ¯āŽĒā¯āŽĒāŽā¯āޤā¯āޤāŽĩā¯āŽŽā¯",
"account.endorse": "āŽā¯āޝāŽĩāŽŋāŽĩāŽ°āŽ¤ā¯āޤāŽŋāŽ˛ā¯ āŽĩā¯āŽŗāŽŋāŽĒā¯āŽĒāŽā¯āޤā¯āޤā¯",
+ "account.featured_tags.last_status_never": "āŽāŽā¯āŽā¯āŽā޺❠āŽāޞā¯āޞā¯",
"account.follow": "āŽĒāŽŋāŽŠā¯āޤā¯āŽāްā¯",
+ "account.follow_back": "āŽĒāŽŋāŽŠā¯āޤā¯āŽāްā¯",
"account.followers": "āŽĒāŽŋāŽŠā¯āޤā¯āŽāްā¯āŽĒāŽĩāŽ°ā¯āŽāŽŗā¯",
"account.followers.empty": "āŽāޤā¯āŽĩāŽ°ā¯ āŽ¯āŽžāŽ°ā¯āŽŽā¯ āŽāލā¯āޤ āŽĒāŽ¯āŽŠāŽ°ā¯āŽĒ❠āŽĒāŽŋāŽŠā¯āޤā¯āŽāްāŽĩāŽŋāŽ˛ā¯āޞā¯.",
"account.followers_counter": "{count, plural, one {{counter} āŽĩāŽžāŽāŽāްā¯} other {{counter} āŽĩāŽžāŽāŽāްā¯āŽāŽŗā¯}}",
"account.following": "āŽĒāŽŋāŽŠā¯āޤā¯āŽāްā¯āŽŽā¯",
"account.following_counter": "{count, plural,one {{counter} āŽāލā¯āŽ¤āŽž} other {{counter} āŽāލā¯āŽ¤āŽžāŽā¯āŽāŽŗā¯}}",
"account.follows.empty": "āŽāލā¯āޤ āŽĒāŽ¯āŽŠāŽ°ā¯ āŽāޤā¯āŽĩāŽ°ā¯ āŽ¯āŽžāŽ°ā¯āޝā¯āŽŽā¯ āŽĒāŽŋāŽŠā¯āޤā¯āŽāްāŽĩāŽŋāŽ˛ā¯āޞā¯.",
+ "account.go_to_profile": "āŽā¯āޝāŽĩāŽŋāŽĩāŽ°āŽ¤ā¯āޤāŽŋāŽąā¯āŽā¯āŽā¯ āŽā¯āޞā¯āޞāŽĩā¯āŽŽā¯",
"account.hide_reblogs": "āŽāްā¯āލā¯āޤ❠āŽāŽā¯āŽāŽŋāŽ¯āŽžāŽ āŽŽāŽąā¯ @{name}",
"account.link_verified_on": "āŽāލā¯āޤ āŽāŽŖā¯āŽĒā¯āŽĒ❠āŽāްāŽŋāŽŽā¯āŽ¯āŽžāŽŗāŽ°ā¯ āŽāްāŽŋāŽĒāŽžāŽ°ā¯āŽā¯āŽāŽĒā¯āŽĒāŽā¯āŽāޤ❠{date}",
"account.locked_info": "āŽāލā¯āޤāŽā¯ āŽāŽŖāŽā¯āŽā¯ āŽ¤āŽŠāŽŋāŽ¯ā¯āްāŽŋāŽŽā¯ āŽ¨āŽŋāŽ˛ā¯ āŽĒā¯āŽā¯āŽāŽĒā¯āŽĒāŽā¯āŽā¯āŽŗā¯āŽŗāŽ¤ā¯. āŽ
āŽĩāŽ°ā¯āŽāŽŗā¯āŽĒ❠āŽĒāŽŋāŽŠā¯āޤā¯āŽāްā¯āŽĒāŽĩāŽ°ā¯ āŽ¯āŽžāŽ°ā¯ āŽāŽŠā¯āŽĒāŽ¤ā¯ āŽāްāŽŋāŽŽā¯āŽ¯āŽžāŽŗāŽ°ā¯ āŽā¯āŽŽā¯āŽąā¯āŽ¯āŽžāŽ āŽŽāŽ¤āŽŋāŽĒā¯āŽĒāŽžāŽ¯ā¯āŽĩ❠āŽā¯āޝā¯āŽāŽŋāŽąāŽžāŽ°ā¯.",
"account.media": "āŽāŽāŽāŽā¯āŽāŽŗā¯",
"account.mention": "āŽā¯āŽąāŽŋāŽĒā¯āŽĒāŽŋāŽā¯ @{name}",
"account.mute": "āŽāŽŽā¯āŽ¯āŽžāŽŠ @{name}",
+ "account.mute_notifications_short": "āŽ
āŽąāŽŋāŽĩāŽŋāŽĒā¯āŽĒā¯āŽā޺❠āŽāޞāŽŋāŽ¯āŽāŽā¯āŽā¯",
+ "account.mute_short": "āŽ
āŽŽā¯āޤāŽŋāŽ¯āŽžāŽā¯āŽā¯",
"account.muted": "āŽŽā¯āŽāŽā¯āŽāŽŋāŽ¯āŽ¤ā¯",
+ "account.no_bio": "āŽĩāŽŋāŽŗāŽā¯āŽāŽŽā¯ āŽāޤā¯āŽĩā¯āŽŽā¯ āŽĩāŽ´āŽā¯āŽāŽĒā¯āŽĒāŽāŽĩāŽŋāŽ˛ā¯āޞā¯.",
"account.posts": "āŽā¯āŽā¯āŽā¯āŽāŽŗā¯",
"account.posts_with_replies": "Toots āŽŽāŽąā¯āŽąā¯āŽŽā¯ āŽĒāŽ¤āŽŋāŽ˛ā¯āŽāŽŗā¯",
"account.report": "@{name} -āŽāŽĒ❠āŽĒā¯āŽāŽžāŽ°āŽŗāŽŋ",
@@ -59,17 +66,30 @@
"announcement.announcement": "āŽ
āŽąāŽŋāŽĩāŽŋāŽĒā¯āŽĒā¯",
"attachments_list.unprocessed": "(āŽā¯āŽ¯āŽ˛āŽžāŽā¯āŽāŽĒā¯āŽĒāŽāŽžāŽ¤āŽ¤ā¯)",
"audio.hide": "āŽāŽāŽŋāŽ¯ā¯āŽĩā¯ āŽŽāŽąā¯",
- "autosuggest_hashtag.per_week": "āŽāŽĩā¯āŽĩā¯āް❠āŽĩāŽžāŽ°āŽŽā¯ {count}",
"boost_modal.combo": "āŽ¨ā¯āŽā¯āŽā޺❠āŽāޤ❠āŽ
āŽā¯āޤā¯āŽ¤āŽŽā¯āŽąā¯ āŽ¤āŽĩāŽŋāŽ°ā¯āŽā¯āŽ {combo} āŽĩ❠āŽ
āŽ´ā¯āޤā¯āޤāŽĩā¯āŽŽā¯",
+ "bundle_column_error.error.title": "āŽ
āŽāŽā¯!",
+ "bundle_column_error.network.body": "āŽāލā¯āޤāŽĒ❠āŽĒāŽā¯āŽāޤā¯āޤā¯āŽ¤ā¯ āŽ¤āŽŋāŽąāŽā¯āŽā¯āŽŽā¯āŽĒā¯āŽ´ā¯āޤ❠āŽāް❠āŽĒāŽŋāŽ´ā¯ āŽāŽąā¯āŽĒāŽā¯āŽā¯āŽĩāŽŋāŽā¯āŽāޤā¯. āŽāޤ❠āŽāŽā¯āŽā޺❠āŽāŽŖā¯āޝ āŽ¤ā¯āŽāްā¯āŽĒāŽŋāŽ˛ā¯ āŽ
āŽ˛ā¯āŽ˛āŽ¤ā¯ āŽāŽĒā¯āŽĒāŽ¤ā¯āޤāŽŋāŽŠā¯ āŽĩāŽ´āŽā¯āŽā¯āŽāŽŋāŽ¯āŽŋāŽ˛ā¯ āŽāŽąā¯āŽĒāŽā¯āŽā¯āŽŗā¯āŽŗ āŽāŽ°ā¯ āŽ¤āŽąā¯āŽāŽžāŽ˛āŽŋāŽ āŽĒāŽŋāŽ°āŽā¯āŽāŽŖā¯āŽ¯āŽžāŽ āŽāްā¯āŽā¯āŽāŽ˛āŽžāŽŽā¯.",
+ "bundle_column_error.network.title": "āŽĒāŽŋāŽŖā¯āޝāŽĒ❠āŽĒāŽŋāŽ´ā¯",
"bundle_column_error.retry": "āŽŽā¯āŽŖā¯āŽā¯āŽŽā¯ āŽŽā¯āŽ¯āŽąā¯āŽāŽŋāŽā¯āŽāŽĩā¯āŽŽā¯",
+ "bundle_column_error.return": "āŽŽā¯āŽāŽĒā¯āŽĒāŽŋāŽąā¯āŽā¯ āŽā¯āޞā¯āޞāŽĩā¯āŽŽā¯",
+ "bundle_column_error.routing.body": "āŽā¯āŽā¯āŽāŽĒā¯āŽĒāŽā¯āŽ āŽĒāŽā¯āŽāޤā¯āޤā¯āŽā¯ āŽāŽžāŽŖāŽĩāŽŋāŽ˛ā¯āޞā¯. āŽ¨ā¯āŽā¯āŽā޺❠āŽāŽŗā¯āŽŗāŽŋāŽā¯āŽ āŽŽā¯āŽāŽĩāŽ°āŽŋ āŽāްāŽŋāŽ¯āŽŠāŽ¤āŽž?",
+ "bundle_column_error.routing.title": "404",
"bundle_modal_error.close": "āŽŽā¯āŽā¯āŽ",
"bundle_modal_error.message": "āŽāŽā¯āŽā¯āŽąā¯āŽąā¯ āŽāŽąā¯āŽąāŽŽā¯ āŽā¯āޝā¯āޝā¯āŽŽā¯āŽĒā¯āŽ´ā¯āޤ❠āŽāŽ¤ā¯ āŽ¤āŽĩāŽąā¯ āŽāŽąā¯āŽĒāŽā¯āŽā¯āŽŗā¯āŽŗāŽ¤ā¯.",
"bundle_modal_error.retry": "āŽŽā¯āŽŖā¯āŽā¯āŽŽā¯ āŽŽā¯āŽ¯āŽąā¯āŽāŽŋ āŽā¯āޝā¯",
+ "closed_registrations.other_server_instructions": "āŽŽā¯āŽā¯āŽāŽāŽžāŽŠā¯ āŽāް❠āŽĒāŽ°āŽĩāŽ˛āŽžāŽā¯āŽāŽĒā¯āŽĒāŽā¯āŽ āŽŽā¯āŽŠā¯āŽĒā¯āްā¯ā޺❠āŽāŽŠā¯āŽĒāŽ¤āŽžāŽ˛ā¯, āŽ¨ā¯āŽā¯āŽā޺❠āŽĩā¯āް❠āŽāް❠āŽĩāŽ´āŽā¯āŽāŽŋāŽ¯āŽŋāŽ˛ā¯ āŽāŽŖāŽā¯āŽā¯ āŽāްā¯āŽĩāŽžāŽā¯āŽāŽŋāŽ¯āŽŋāŽ°ā¯āލā¯āŽ¤āŽžāŽ˛ā¯āŽŽā¯ āŽāލā¯āޤ āŽĩāŽ´āŽā¯āŽāŽŋāŽ¯āŽŋāŽ˛ā¯ āŽĒāŽ¯āŽŠā¯āŽĒāŽā¯āޤā¯āŽ¤āŽ˛āŽžāŽŽā¯.",
+ "closed_registrations_modal.description": "{domain} āŽāޞ❠āŽāŽĒā¯āŽĒā¯āŽ´ā¯āޤ❠āŽāŽŖāŽā¯āŽā¯āŽā޺❠āŽāްā¯āŽĩāŽžāŽā¯āŽ āŽŽā¯āŽāŽŋāŽ¯āŽžāŽ¤ā¯. āŽ¨ā¯āŽā¯āŽāŽŗā¯ āŽŽā¯āŽā¯āŽāŽāŽžāŽŠā¯ āŽĒāŽ¯āŽŠā¯āŽĒāŽā¯āޤā¯āޤ, āŽā¯āŽąāŽŋāŽĒā¯āŽĒāŽžāŽ {domain} āŽŽā¯āŽāŽĩāŽ°āŽŋāŽ¯āŽŋāŽ˛ā¯ āŽāŽŖāŽā¯āŽā¯āŽ¤ā¯ āŽ¤ā¯āŽĩāŽā¯āŽ āŽĩā¯āŽŖā¯āŽā¯āŽŽā¯ āŽāŽŠā¯āŽą āŽ
āŽĩāŽāŽŋāŽ¯āŽŽāŽŋāŽ˛ā¯āޞ❠āŽāŽŠā¯āŽĒāŽ¤ā¯ āŽŽāŽŠāŽ¤āŽŋāŽ˛ā¯ āŽĩā¯āޤā¯āޤā¯āŽā¯ āŽā¯āŽŗā¯āŽŗāŽĩā¯āŽŽā¯.",
+ "closed_registrations_modal.find_another_server": "āŽĩā¯āŽąā¯āް❠āŽĩāŽ´āŽā¯āŽāŽŋāŽ¯ā¯āŽā¯ āŽāŽŖā¯āŽā¯āŽĒāŽŋāŽāŽŋ",
+ "closed_registrations_modal.preamble": "āŽŽā¯āŽā¯āŽāŽāŽžāŽŠā¯ āŽāް❠āŽĒāŽ°āŽĩāŽ˛āŽžāŽā¯āŽāŽĒā¯āŽĒāŽā¯āŽ āŽŽā¯āŽŠā¯āŽĒā¯āްā¯āŽŗā¯. āŽāŽ¤āŽŠāŽžāŽ˛ā¯ āŽ¨ā¯āŽā¯āŽā޺❠āŽāŽā¯āŽā¯āŽā¯ āŽāŽŖāŽā¯āŽā¯ āŽāްā¯āŽĩāŽžāŽā¯āŽāŽŋāŽŠāŽžāŽ˛ā¯āŽŽā¯ āŽāލā¯āޤ āŽĩāŽ´āŽā¯āŽāŽŋāŽ¯āŽŋāŽ˛ā¯ āŽāŽŗā¯āŽŗ āŽ¯āŽžāŽ°ā¯āŽāŽŠā¯ āŽĩā¯āŽŖā¯āŽā¯āŽŽā¯ āŽāŽŠā¯āŽąāŽžāŽ˛ā¯āŽŽā¯ āŽāްāŽĩāŽžāŽāŽ˛āŽžāŽŽā¯. āŽ¨ā¯āŽā¯āŽā޺❠āŽā¯āŽ āŽāް❠āŽĩāŽ´āŽā¯āŽāŽŋāŽ¯ā¯ āŽ¨āŽŋāŽąā¯āŽĩāŽ˛āŽžāŽŽā¯!",
+ "closed_registrations_modal.title": "āŽŽā¯āŽā¯āŽāŽāŽžāŽŠā¯ āŽāŽŖāŽā¯āŽā¯ āŽ¤ā¯āŽĩāŽā¯āŽāŽĒā¯āŽĒāŽā¯āŽāŽŋāŽąāŽ¤ā¯",
+ "column.about": "āŽĒāŽąā¯āŽąāŽŋ",
"column.blocks": "āŽ¤āŽā¯āŽā¯āŽāŽĒā¯āŽĒāŽā¯āŽ āŽĒāŽ¯āŽŠāŽ°ā¯āŽāŽŗā¯",
"column.bookmarks": "āŽ
āŽā¯āŽ¯āŽžāŽŗāŽā¯āŽā¯āŽąāŽŋāŽāŽŗā¯",
"column.community": "āŽā¯āޝ āŽ¨āŽŋāŽāŽ´ā¯āŽĩ❠āŽāŽžāŽ˛āŽĩāŽ°āŽŋāŽā¯",
+ "column.direct": "āŽ¤āŽŠāŽŋāŽĒā¯āŽĒāŽā¯āŽ āŽā¯āŽąāŽŋāŽĒā¯āŽĒā¯āŽāŽŗā¯",
"column.directory": "āŽā¯āޝāŽĩāŽŋāŽĩāŽ°āŽā¯āŽā޺❠āŽāŽ˛āŽžāŽĩā¯",
"column.domain_blocks": "āŽŽāŽąā¯āލā¯āޤāŽŋāŽ°ā¯āŽā¯āŽā¯āŽŽā¯ āŽ¤āŽŋāŽ°āŽŗāŽā¯āŽāŽŗā¯",
+ "column.favourites": "āŽĒāŽŋāŽāŽŋāŽ¤ā¯āޤāŽĩā¯",
"column.follow_requests": "āŽĒāŽŋāŽŠā¯āޤā¯āŽāް āŽ
āŽŠā¯āŽŽāŽ¤āŽŋāŽāŽŗā¯",
"column.home": "āŽŽā¯āŽāŽĒā¯āŽĒā¯",
"column.lists": "āŽĒāŽā¯āŽāŽŋāŽ¯āŽ˛ā¯āŽāŽŗā¯",
@@ -90,28 +110,21 @@
"community.column_settings.remote_only": "āŽ¤ā¯āޞā¯āŽĩāŽŋāŽ˛āŽŋāŽ°ā¯āލā¯āŽ¤ā¯ āŽŽāŽā¯āŽā¯āŽŽā¯",
"compose.language.change": "āŽŽā¯āŽ´āŽŋāŽ¯ā¯ āŽŽāŽžāŽąā¯āŽąā¯",
"compose.language.search": "āŽ¤ā¯āŽāŽ˛ā¯ āŽŽā¯āŽ´āŽŋāŽāŽŗā¯...",
+ "compose.published.body": "āŽĒāŽ¤āŽŋāŽĩāŽŋāŽāŽĒā¯āŽĒāŽā¯āŽāޤā¯.",
+ "compose.published.open": "āŽ¤āŽŋāŽą",
+ "compose.saved.body": "āŽĒāŽ¤āŽŋāŽĩ❠āŽā¯āŽŽāŽŋāŽā¯āŽāŽĒā¯āŽĒāŽā¯āŽāޤā¯.",
"compose_form.direct_message_warning_learn_more": "āŽŽā¯āޞā¯āŽŽā¯ āŽ
āŽąāŽŋāŽ¯",
"compose_form.encryption_warning": "MastodonāŽ˛ā¯ āŽāŽŗā¯āŽŗ āŽĒāŽ¤āŽŋāŽĩā¯āŽāŽŗā¯ āŽŽā¯āŽąā¯āŽ¯āŽžāŽ āŽāŽŠā¯āŽā¯āްāŽŋāŽĒā¯āŽā¯(encrypt) āŽā¯āޝā¯āޝāŽĒāŽāŽĩāŽŋāŽ˛ā¯āޞā¯. āŽ
āŽ¤āŽŠāŽžāŽ˛ā¯ āŽŽā¯āŽā¯āŽāŽŋāŽ¯ āŽ¤āŽāŽĩāŽ˛ā¯āŽā޺❠āŽāŽā¯āŽā¯ āŽĒāŽāŽŋāŽ° āŽĩā¯āŽŖā¯āŽāŽžāŽŽā¯.",
"compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.",
"compose_form.lock_disclaimer": "āŽāŽā¯āŽā޺❠āŽāŽŖāŽā¯āŽā¯ {locked} āŽā¯āޝā¯āޝāŽĒā¯āŽĒāŽāŽĩāŽŋāŽ˛ā¯āޞā¯. āŽāŽā¯āŽā޺❠āŽĒāŽ¤āŽŋāŽĩā¯āŽāŽŗā¯ āŽ¯āŽžāŽ°ā¯ āŽĩā¯āŽŖā¯āŽā¯āŽŽāŽžāŽŠāŽžāŽ˛ā¯āŽŽā¯ āŽĒāŽŋāŽŠā¯āޤā¯āŽāްā¯āލā¯āޤ❠āŽāŽžāŽŖāŽ˛āŽžāŽŽā¯.",
"compose_form.lock_disclaimer.lock": "āŽĒā¯āŽā¯āŽāŽĒā¯āŽĒāŽā¯āŽāޤā¯",
"compose_form.placeholder": "āŽāŽā¯āŽāŽŗā¯ āŽŽāŽŠāŽ¤āŽŋāŽ˛ā¯ āŽāŽŠā¯āŽŠ āŽāްā¯āŽā¯āŽāŽŋāŽąāŽ¤ā¯?",
- "compose_form.poll.add_option": "āŽ¤ā¯āްā¯āŽĩ❠āŽā¯āްā¯",
"compose_form.poll.duration": "āŽāްā¯āޤā¯āޤā¯āŽā¯āŽāŽŖāŽŋāŽĒā¯āŽĒāŽŋāŽŠā¯ āŽāŽžāŽ˛ āŽ
āŽŗāŽĩā¯",
- "compose_form.poll.option_placeholder": "āŽ¤ā¯āްā¯āŽĩ❠āŽāު❠{number}",
- "compose_form.poll.remove_option": "āŽāލā¯āŽ¤āŽ¤ā¯ āŽ¤ā¯āްā¯āŽĩ❠āŽ
āŽāŽąā¯āŽąā¯",
"compose_form.poll.switch_to_multiple": "āŽĒāŽ˛ āŽ¤ā¯āްā¯āŽĩā¯āŽā޺❠āŽ
āŽŠā¯āŽŽāŽ¤āŽŋāŽā¯āŽā¯āŽŽāŽžāŽąā¯ āŽŽāŽžāŽąā¯āŽąā¯",
"compose_form.poll.switch_to_single": "āŽāް❠āŽāŽ°ā¯ āŽ¤ā¯āްā¯āŽĩā¯ āŽŽāŽā¯āŽā¯āŽŽā¯ āŽ
āŽŠā¯āŽŽāŽ¤āŽŋāŽā¯āŽā¯āŽŽāŽžāŽąā¯ āŽŽāŽžāŽąā¯āŽąā¯",
- "compose_form.publish": "āŽĩā¯āŽŗāŽŋāŽ¯āŽŋāŽā¯",
"compose_form.publish_form": "Publish",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "āŽŽāŽžāŽąā¯āŽąāŽā¯āŽā޺❠āŽā¯āŽŽāŽŋ",
- "compose_form.sensitive.hide": "āŽ
āŽŠā¯āŽĩāŽ°ā¯āŽā¯āŽā¯āŽŽā¯ āŽāŽąā¯āŽąāŽĒ❠āŽĒāŽāŽŽā¯ āŽāޞā¯āޞ❠āŽāŽŠāŽā¯ āŽā¯āŽąāŽŋāŽ¯āŽŋāŽā¯",
- "compose_form.sensitive.marked": "āŽāŽĒā¯āŽĒāŽāŽŽā¯ āŽ
āŽŠā¯āŽĩāŽ°ā¯āŽā¯āŽā¯āŽŽā¯ āŽāŽąā¯āŽąāŽ¤āŽ˛ā¯āޞ āŽāŽŠāŽā¯ āŽā¯āŽąāŽŋāŽ¯āŽŋāŽāŽĒā¯āŽĒāŽā¯āŽā¯āŽŗā¯āŽŗāŽ¤ā¯",
- "compose_form.sensitive.unmarked": "āŽāŽĒā¯āŽĒāŽāŽŽā¯ āŽ
āŽŠā¯āŽĩāŽ°ā¯āŽā¯āŽā¯āŽŽā¯ āŽāŽąā¯āŽąāŽ¤āŽ˛ā¯āޞ āŽāŽŠāŽā¯ āŽā¯āŽąāŽŋāŽ¯āŽŋāŽāŽĒā¯āŽĒāŽāŽĩāŽŋāŽ˛ā¯āޞā¯",
"compose_form.spoiler.marked": "āŽāŽā¯āŽāްāŽŋāŽā¯āŽā¯āޝāŽŋāŽŠā¯ āŽĒāŽŋāŽŠā¯āŽŠāŽžāŽ˛ā¯ āŽĒāŽ¤āŽŋāŽĩā¯ āŽŽāŽąā¯āŽā¯āŽāŽĒā¯āŽĒāŽā¯āŽā¯āŽŗā¯āŽŗāŽ¤ā¯",
"compose_form.spoiler.unmarked": "āŽĒāŽ¤āŽŋāŽĩā¯ āŽŽāŽąā¯āŽā¯āŽāŽĒā¯āŽĒāŽāŽĩāŽŋāŽ˛ā¯āޞā¯",
- "compose_form.spoiler_placeholder": "āŽāŽā¯āŽā޺❠āŽāŽā¯āŽāްāŽŋāŽā¯āŽā¯āޝ❠āŽāŽā¯āŽā¯ āŽāŽ´ā¯āޤāŽĩā¯āŽŽā¯",
"confirmation_modal.cancel": "āŽ°āŽ¤ā¯āޤā¯",
"confirmations.block.block_and_report": "āŽ¤āŽā¯āޤā¯āޤā¯āŽĒ❠āŽĒā¯āŽāŽžāŽ°āŽŗāŽŋ",
"confirmations.block.confirm": "āŽ¤āŽā¯",
@@ -180,6 +193,10 @@
"error.unexpected_crash.next_steps": "āŽĒāŽā¯āŽāޤā¯āޤā¯āŽĒ❠āŽĒā¯āޤā¯āŽĒā¯āŽĒāŽŋāŽ¤ā¯āޤā¯āŽĒ❠āŽĒāŽžāŽ°ā¯āŽā¯āŽāŽĩā¯āŽŽā¯. āŽ
āŽĒā¯āŽĒāŽāŽŋāŽ¯ā¯āŽŽā¯ āŽĩā¯āޞ❠āŽā¯āޝā¯āޝāŽĩāŽŋāŽ˛ā¯āޞ❠āŽāŽŠāŽŋāŽ˛ā¯, āŽŽāŽžāŽ¸ā¯āŽāŽāŽžāŽŠā¯ āŽĩā¯āŽąā¯ āŽāް❠āŽāŽ˛āŽžāŽĩāŽŋāŽ¯āŽŋāŽŠā¯ āŽŽā¯āŽ˛āŽŽā¯, āŽ
āŽ˛ā¯āŽ˛āŽ¤ā¯ āŽĒā¯āްā¯āޤā¯āŽ¤āŽŽāŽžāŽŠ āŽā¯āŽ¯āŽ˛āŽŋāŽ¯āŽŋāŽŠā¯ āŽŽā¯āŽ˛āŽŽā¯ āŽĒāŽ¯āŽŠā¯āŽĒāŽā¯āޤā¯āޤāŽŋāŽĒ❠āŽĒāŽžāŽ°ā¯āŽā¯āŽāŽĩā¯āŽŽā¯.",
"errors.unexpected_crash.copy_stacktrace": "Stacktrace-āŽ clipboard-āŽ˛ā¯ āŽ¨āŽāޞā¯āŽā¯",
"errors.unexpected_crash.report_issue": "āŽĒā¯āŽāŽžāŽ°āŽŗāŽŋ",
+ "explore.title": "āŽāŽ˛āŽžāŽĩā¯",
+ "explore.trending_links": "āŽā¯āޝā¯āޤāŽŋāŽāŽŗā¯",
+ "explore.trending_statuses": "āŽĒāŽ¤āŽŋāŽĩā¯āŽāŽŗā¯",
+ "explore.trending_tags": "āŽšā¯āގā¯āŽā¯āŽā¯āŽā¯āŽāŽŗā¯",
"follow_request.authorize": "āŽ
āŽŠā¯āŽŽāŽ¤āŽŋāŽ¯āŽŗāŽŋ",
"follow_request.reject": "āŽ¨āŽŋāŽ°āŽžāŽāްāŽŋ",
"follow_requests.unlocked_explanation": "āŽāŽā¯āŽā޺❠āŽāŽŖāŽā¯āŽā¯ āŽĒā¯āŽā¯āŽāŽĒā¯āŽĒāŽāŽĩāŽŋāŽ˛ā¯āޞ❠āŽāŽŠā¯āŽąāŽžāŽ˛ā¯āŽŽā¯, āŽāލā¯āޤāŽā¯ āŽāŽŖāŽā¯āŽā¯āŽāŽŗāŽŋāŽ˛āŽŋāŽ°ā¯āލā¯āޤ❠āŽāŽā¯āŽāŽŗā¯āŽĒ❠āŽĒāŽŋāŽŠā¯āޤā¯āŽāް āŽĩāŽŋāŽ°ā¯āŽŽā¯āŽĒā¯āŽŽā¯ āŽā¯āްāŽŋāŽā¯āŽā¯āŽāŽŗā¯ āŽ¨ā¯āŽā¯āŽā޺❠āŽĒāŽ°ā¯āŽā¯āޞāŽŋāŽĒā¯āŽĒāŽ¤ā¯ āŽ¨āŽ˛āŽŽā¯ āŽāŽŠā¯āŽąā¯ {domain} āŽāŽ´āŽŋāŽ¯āŽ°ā¯ āŽāŽŖā¯āŽŖā¯āŽāŽŋāŽąāŽžāŽ°ā¯.",
@@ -255,7 +272,6 @@
"navigation_bar.compose": "āŽĒā¯āޤāŽŋāŽ¯āŽĩāŽąā¯āŽąā¯ āŽāŽ´ā¯āޤā¯āŽ toot",
"navigation_bar.discover": "āŽāŽŖā¯āŽā¯ āŽĒāŽŋāŽāŽŋ",
"navigation_bar.domain_blocks": "āŽŽāŽąā¯āލā¯āޤ āŽāŽŗāŽā¯āŽāŽŗā¯",
- "navigation_bar.edit_profile": "āŽā¯āޝāŽĩāŽŋāŽĩāŽ°āŽ¤ā¯āޤā¯āŽ¤ā¯ āŽ¤āŽŋāŽ°ā¯āޤā¯āޤāŽĩā¯āŽŽā¯",
"navigation_bar.filters": "āŽŽā¯āŽāŽā¯āŽāŽĒā¯āŽĒāŽā¯āŽ āŽĩāŽžāŽ°ā¯āޤā¯āޤā¯āŽāŽŗā¯",
"navigation_bar.follow_requests": "āŽā¯āްāŽŋāŽā¯āŽā¯āŽā޺❠āŽĒāŽŋāŽŠā¯āŽĒāŽąā¯āŽąāŽĩā¯āŽŽā¯",
"navigation_bar.follows_and_followers": "āŽĒāŽŋāŽŠā¯āŽĒāŽąā¯āŽąāŽ˛ā¯āŽāŽŗā¯ āŽŽāŽąā¯āŽąā¯āŽŽā¯ āŽĒāŽŋāŽŠā¯āŽĒāŽąā¯āŽąā¯āŽĒāŽĩāŽ°ā¯āŽāŽŗā¯",
@@ -316,12 +332,7 @@
"poll_button.add_poll": "āŽĩāŽžāŽā¯āŽā¯āŽā¯āŽĒā¯āŽĒā¯āŽā¯ āŽā¯āްā¯āŽā¯āŽāŽĩā¯āŽŽā¯",
"poll_button.remove_poll": "āŽĩāŽžāŽā¯āŽā¯āŽā¯āŽĒā¯āŽĒ❠āŽ
āŽāŽąā¯āŽąā¯",
"privacy.change": "āŽ¨āŽŋāŽ˛ā¯ āŽ¤āŽŠāŽŋāŽ¯ā¯āްāŽŋāŽŽā¯",
- "privacy.direct.long": "āŽā¯āŽąāŽŋāŽĒā¯āŽĒāŽŋāŽāŽĒā¯āŽĒāŽā¯āŽ āŽĒāŽ¯āŽŠāŽ°ā¯āŽāŽŗā¯āŽā¯āŽā¯ āŽŽāŽā¯āŽā¯āŽŽā¯ āŽāŽā¯āŽā¯āޝāŽŋāŽāŽĩā¯āŽŽā¯",
- "privacy.direct.short": "Direct",
- "privacy.private.long": "āŽĒāŽŋāŽŠā¯āޤā¯āŽāްā¯āŽĒāŽĩāŽ°ā¯āŽāŽŗā¯āŽā¯āŽā¯ āŽŽāŽā¯āŽā¯āŽŽā¯ āŽāŽā¯āŽā¯",
- "privacy.private.short": "Followers-only",
"privacy.public.short": "āŽĒā¯āŽžāŽ¤ā¯",
- "privacy.unlisted.short": "āŽĒāŽā¯āŽāŽŋāŽ¯āŽ˛āŽŋāŽāŽĒā¯āŽĒāŽāŽžāŽ¤",
"refresh": "āŽĒā¯āޤā¯āŽĒā¯āŽĒāŽŋ",
"regeneration_indicator.label": "āŽā¯āŽŽā¯āޝā¯āŽąā¯āŽąāŽŽā¯âĻ",
"regeneration_indicator.sublabel": "āŽāŽā¯āŽā޺❠āŽĩā¯āŽā¯āŽā¯ āŽāŽā¯āŽāŽŽā¯ āŽ¤āŽ¯āŽžāŽ°ā¯ āŽā¯āޝā¯āޝāŽĒā¯āŽĒāŽā¯āŽāŽŋāŽąāŽ¤ā¯!",
@@ -404,7 +415,6 @@
"upload_form.description": "āŽĒāŽžāŽ°ā¯āŽĩā¯āŽ¯āŽąā¯āŽą āŽĩāŽŋāŽĩāŽ°āŽŋāŽā¯āŽāŽĩā¯āŽŽā¯",
"upload_form.edit": "āŽ¤ā¯āŽžāŽā¯",
"upload_form.thumbnail": "āŽāŽŋāŽąā¯āŽĒāŽāޤā¯āŽ¤ā¯ āŽŽāŽžāŽąā¯āŽą",
- "upload_form.undo": "āŽ¨ā¯āŽā¯āŽā¯",
"upload_form.video_description": "āŽā¯āŽĩāŽŋāŽ¤ā¯āޤāŽŋāŽąāŽŠā¯ āŽŽāŽąā¯āŽąā¯āŽŽā¯ āŽĒāŽžāŽ°ā¯āŽĩā¯āŽā¯ āŽā¯āŽąā¯āŽĒāŽžāŽā¯ āŽāŽŗā¯āŽŗāŽĩāŽ°ā¯āŽāŽŗā¯āŽā¯āŽāŽžāŽ āŽĩāŽŋāŽŗāŽā¯āŽā¯āŽâ",
"upload_modal.analyzing_picture": "āŽĒāŽāŽŽā¯ āŽāŽ°āŽžāŽ¯āŽĒā¯āŽĒāŽā¯āŽāŽŋāŽąāŽ¤ā¯âĻ",
"upload_modal.apply": "āŽāŽĒāŽ¯ā¯āŽāŽŋ",
diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json
index 7c1956d95..b1a242c75 100644
--- a/app/javascript/mastodon/locales/tai.json
+++ b/app/javascript/mastodon/locales/tai.json
@@ -79,8 +79,6 @@
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
"onboarding.steps.share_profile.title": "Share your profile",
"privacy.change": "Adjust status privacy",
- "privacy.direct.short": "Direct",
- "privacy.private.short": "Followers-only",
"report.placeholder": "Type or paste additional comments",
"report.submit": "Submit report",
"report.target": "Report {target}",
diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json
index 3c231871f..24a67247c 100644
--- a/app/javascript/mastodon/locales/te.json
+++ b/app/javascript/mastodon/locales/te.json
@@ -64,16 +64,10 @@
"compose_form.lock_disclaimer": "ā°Žāą ā°ā°žā°¤ā°ž {locked} ā°āąā°¯ā°Ŧā°Ąā°˛āąā°Ļāą. ā°ā°ĩā°°āąā°¨ā°ž ā°Žā°ŋā°Žāąā°Žā°˛āąā°¨ā°ŋ ā°
ā°¨āąā°¸ā°°ā°ŋā°ā°ā°ŋ ā°Žāą ā°
ā°¨āąā°ā°°āąā°˛ā°āą-ā°Žā°žā°¤āąā°°ā°Žāą ā°Ēāąā°¸āąā°āąā°˛ā°¨āą ā°ĩāąā°āąā°ˇā°ŋā°ā°ā°ĩā°āąā°āą.",
"compose_form.lock_disclaimer.lock": "ā°Ŧā°ŋā°ā°ŋā°ā°ā°Ŧā°Ąā°ŋā°¨ā°Ļā°ŋ",
"compose_form.placeholder": "ā°Žāą ā°Žā°¨ā°¸āąā°¸āąā°˛āą ā°ā°Žāąā°ā°Ļā°ŋ?",
- "compose_form.poll.add_option": "ā°ā° ā°ā°ā°Ēā°ŋā°ā°¨āą ā°āąā°°āąā°ā°ā°Ąā°ŋ",
"compose_form.poll.duration": "ā°ā°¨āąā°¨ā°ŋā° ā°ĩāąā°¯ā°ĩā°§ā°ŋ",
- "compose_form.poll.option_placeholder": "ā°ā°ā°Ēā°ŋā° {number}",
- "compose_form.poll.remove_option": "ā° ā°ā°ā°Ēā°ŋā°ā°¨āą ā°¤āąā°˛ā°ā°ŋā°ā°āą",
"compose_form.publish_form": "Publish",
- "compose_form.sensitive.marked": "ā°Žāąā°Ąā°ŋā°¯ā°ž ā°¸āąā°¨āąā°¨ā°ŋā°¤ā°Žāąā°¨ā°Ļā°ŋā°ā°ž ā°āąā°°āąā°¤ā°ŋā°ā°ā°Ŧā°Ąā°ŋā°ā°Ļā°ŋ",
- "compose_form.sensitive.unmarked": "ā°Žāąā°Ąā°ŋā°¯ā°ž ā°¸āąā°¨āąā°¨ā°ŋā°¤ā°Žāąā°¨ā°Ļā°ŋā°ā°ž ā°āąā°°āąā°¤ā°ŋā°ā°ā°Ŧā°Ąā°˛āąā°Ļāą",
"compose_form.spoiler.marked": "ā°šāąā°āąā°ā°°ā°ŋā° ā°ĩāąā°¨āąā° ā°Ēā°žā° āąā°¯ā° ā°Ļā°žā°ā°Ŧā°Ąā°ŋā°ā°Ļā°ŋ",
"compose_form.spoiler.unmarked": "ā°Ēā°žā° āąā°¯ā° ā°Ļā°žā°ā°Ŧā°Ąā°˛āąā°Ļāą",
- "compose_form.spoiler_placeholder": "ā°ā°āąā°ā°Ą ā°Žāą ā°šāąā°āąā°ā°°ā°ŋā°ā°¨āą ā°°ā°žā°¯ā°ā°Ąā°ŋ",
"confirmation_modal.cancel": "ā°°ā°Ļāąā°Ļāą ā°āąā°¯āąā°¯ā°ŋ",
"confirmations.block.confirm": "ā°Ŧāąā°˛ā°žā°āą ā°āąā°¯ā°ŋ",
"confirmations.block.message": "ā°Žāąā°°āą ā°ā°āąā°ā°ŋā°¤ā°ā°ā°ž {name}ā°¨ā°ŋ ā°Ŧāąā°˛ā°žā°āą ā°āąā°¯ā°žā°˛ā°¨āąā°āąā°ā°āąā°¨āąā°¨ā°žā°°ā°ž?",
@@ -186,7 +180,6 @@
"navigation_bar.compose": "ā°āąā°¤āąā°¤ ā°āąā°āąā°¨āą ā°°ā°žā°¯ā°ā°Ąā°ŋ",
"navigation_bar.discover": "ā°ā°¨āąā°āąā°¨āą",
"navigation_bar.domain_blocks": "ā°Ļā°žā°ā°ŋā°¨ ā°Ąāąā°Žāąā°¨āąā°˛āą",
- "navigation_bar.edit_profile": "ā°Ēāąā°°āąā°Ģāąā°˛āąā°¨ā°ŋ ā°¸ā°ĩā°°ā°ŋā°ā°ā°ā°Ąā°ŋ",
"navigation_bar.filters": "ā°Žāąā°¯āąā°āą ā°āąā°¯ā°Ŧā°Ąā°ŋā°¨ ā°Ēā°Ļā°žā°˛āą",
"navigation_bar.follow_requests": "ā°
ā°¨āąā°¸ā°°ā°ŋā°ā°ā°Ąā°žā°¨ā°ŋā°ā°ŋ ā°
ā°āąā°¯ā°°āąā°§ā°¨ā°˛āą",
"navigation_bar.lists": "ā°ā°žā°Ŧā°ŋā°¤ā°žā°˛āą",
@@ -240,12 +233,7 @@
"poll_button.add_poll": "ā°ā° ā°ā°¨āąā°¨ā°ŋā°ā°¨āą ā°āąā°°āąā°āą",
"poll_button.remove_poll": "ā°ā°¨āąā°¨ā°ŋā°ā°¨āą ā°¤āąā°˛ā°ā°ŋā°ā°āą",
"privacy.change": "ā°¸āąā°āąā°ā°¸āą ā°āąā°Ēāąā°¯ā°¤ā°¨āą Ⰿⰰāąā°Ļāąā°Ŧā°žā°āą ā°āąā°¯ā°ā°Ąā°ŋ",
- "privacy.direct.long": "ā°Ēāąā°°āąā°āąā°¨āąā°¨ ā°ĩā°ŋā°¨ā°ŋā°¯āąā°ā°Ļā°žā°°āąā°˛ā°āą ā°Žā°žā°¤āąā°°ā°Žāą ā°Ēāąā°¸āąā°āą ā°āąā°¯ā°ŋ",
- "privacy.direct.short": "Direct",
- "privacy.private.long": "ā°
ā°¨āąā°ā°°āąā°˛ā°āą ā°Žā°žā°¤āąā°°ā°Žāą ā°Ēāąā°¸āąā°āą ā°āąā°¯ā°ŋ",
- "privacy.private.short": "Followers-only",
"privacy.public.short": "ā°Ēāąā°°ā°ā°ž",
- "privacy.unlisted.short": "ā°ā°žā°Ŧā°ŋā°¤ā°ž ā°āąā°¯ā°Ŧā°Ąā°¨ā°ŋā°Ļā°ŋ",
"regeneration_indicator.label": "ā°˛āąā°Ąāą ā°
ā°ĩāąā°¤āąā°ā°Ļā°ŋâĻ",
"regeneration_indicator.sublabel": "ā°Žāą ā°šāąā°Žāą ā°Ģāąā°Ąāą ā°¸ā°ŋā°Ļāąā°§ā°Žā°ĩāąā°¤āąā°ā°Ļā°ŋ!",
"relative_time.just_now": "ā°ā°Ēāąā°Ēāąā°Ąāą",
@@ -308,7 +296,6 @@
"upload_button.label": "ā°Žāąā°Ąā°ŋā°¯ā°žā°¨āą ā°āąā°Ąā°ŋā°ā°ā°ā°Ąā°ŋ (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "ā°Ļāąā°ˇāąā°ā°ŋ ā°˛āąā°Ēā°Žāąā°¨āąā°¨ ā°ĩā°žā°°ā°ŋ ā°āąā°¸ā° ā°ĩā°ŋā°ĩā°°ā°ŋā°ā°ā°ā°Ąā°ŋ",
- "upload_form.undo": "ā°¤āąā°˛ā°ā°ŋā°ā°āą",
"upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_progress.label": "ā°
ā°Ēāąā°˛āąā°Ąāą ā°
ā°ĩāąā°¤āąā°ā°Ļā°ŋ...",
"video.close": "ā°ĩāąā°Ąā°ŋā°¯āąā°¨ā°ŋ ā°Žāąā°¸ā°ŋā°ĩāąā°¯ā°ŋ",
diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json
index d14e37517..4437afa78 100644
--- a/app/javascript/mastodon/locales/th.json
+++ b/app/javascript/mastodon/locales/th.json
@@ -53,6 +53,7 @@
"account.mute_notifications_short": "ā¸āšā¸ā¸ā¸ā¸˛ā¸Ŗāšā¸āšā¸āšā¸ā¸ˇā¸ā¸",
"account.mute_short": "ā¸āšā¸ā¸",
"account.muted": "ā¸āšā¸ā¸ā¸ā¸ĸā¸šāš",
+ "account.mutual": "ā¸ā¸ā¸ā¸ĩāšā¸Ąā¸ĩ⏪āšā¸§ā¸Ąā¸ā¸ąā¸",
"account.no_bio": "āšā¸Ąāšāšā¸āšāšā¸Ģāšā¸ā¸ŗā¸ā¸ā¸´ā¸ā¸˛ā¸ĸ",
"account.open_original_page": "āšā¸ā¸´ā¸ā¸Ģā¸āšā¸˛ā¸ā¸ąāšā¸āšā¸ā¸´ā¸Ą",
"account.posts": "āšā¸ā¸Ēā¸āš",
@@ -88,7 +89,6 @@
"announcement.announcement": "ā¸ā¸Ŗā¸°ā¸ā¸˛ā¸¨",
"attachments_list.unprocessed": "(ā¸ĸā¸ąā¸āšā¸Ąāšāšā¸āšā¸ā¸Ŗā¸°ā¸Ąā¸§ā¸Ĩā¸ā¸Ĩ)",
"audio.hide": "ā¸āšā¸ā¸āšā¸Ēā¸ĩā¸ĸā¸",
- "autosuggest_hashtag.per_week": "{count} ā¸āšā¸ā¸Ēā¸ąā¸ā¸ā¸˛ā¸Ģāš",
"boost_modal.combo": "ā¸ā¸¸ā¸ā¸Ēā¸˛ā¸Ąā¸˛ā¸Ŗā¸ā¸ā¸ {combo} āšā¸ā¸ˇāšā¸ā¸āšā¸˛ā¸Ąā¸Ē⏴āšā¸ā¸ā¸ĩāšāšā¸ā¸ā¸Ŗā¸ąāšā¸ā¸ā¸ąā¸āšā¸",
"bundle_column_error.copy_stacktrace": "ā¸ā¸ąā¸ā¸Ĩā¸ā¸ā¸Ŗā¸˛ā¸ĸā¸ā¸˛ā¸ā¸āšā¸ā¸ā¸´ā¸ā¸ā¸Ĩ⏞ā¸",
"bundle_column_error.error.body": "āšā¸Ąāšā¸Ēā¸˛ā¸Ąā¸˛ā¸Ŗā¸āšā¸Ēā¸ā¸ā¸ā¸Ĩā¸Ģā¸āšā¸˛ā¸ā¸ĩāšā¸ā¸ ā¸āšā¸ā¸ā¸´ā¸ā¸ā¸Ĩ⏞ā¸ā¸ā¸˛ā¸āšā¸āšā¸āšā¸ā¸Ŗā¸˛ā¸°ā¸āšā¸ā¸ā¸ā¸ā¸Ŗāšā¸ā¸āšā¸āšā¸āšā¸ā¸ā¸ā¸āšā¸Ŗā¸˛ ā¸Ģ⏪⏎ā¸ā¸ā¸ąā¸ā¸Ģ⏞ā¸ā¸§ā¸˛ā¸Ąāšā¸āšā¸˛ā¸ā¸ąā¸āšā¸āšā¸ā¸ā¸āšā¸ā¸Ŗā¸˛ā¸§āšāšā¸ā¸ā¸Ŗāš",
@@ -145,22 +145,12 @@
"compose_form.lock_disclaimer": "ā¸ā¸ąā¸ā¸ā¸ĩā¸ā¸ā¸ā¸ā¸¸ā¸āšā¸Ąāšāšā¸āš {locked} āšā¸ā¸Ŗā¸āšā¸ā¸˛ā¸Ąā¸Ēā¸˛ā¸Ąā¸˛ā¸Ŗā¸ā¸ā¸´ā¸ā¸ā¸˛ā¸Ąā¸ā¸¸ā¸āšā¸ā¸ˇāšā¸ā¸ā¸šāšā¸ā¸Ēā¸āšā¸Ē⏺ā¸Ģā¸Ŗā¸ąā¸ā¸ā¸šāšā¸ā¸´ā¸ā¸ā¸˛ā¸Ąāšā¸āšā¸˛ā¸ā¸ąāšā¸ā¸ā¸ā¸ā¸ā¸¸ā¸",
"compose_form.lock_disclaimer.lock": "ā¸Ĩāšā¸ā¸ā¸ā¸ĸā¸šāš",
"compose_form.placeholder": "ā¸ā¸¸ā¸ā¸ā¸ŗā¸Ĩā¸ąā¸ā¸ā¸´ā¸ā¸ā¸°āšā¸Ŗā¸ā¸ĸā¸šāš?",
- "compose_form.poll.add_option": "āšā¸ā¸´āšā¸Ąā¸ā¸ąā¸§āšā¸Ĩ⏎ā¸ā¸",
"compose_form.poll.duration": "⏪⏰ā¸ĸ⏰āšā¸§ā¸Ĩ⏞ā¸ā¸˛ā¸Ŗā¸Ē⏺⏪⏧ā¸ā¸ā¸§ā¸˛ā¸Ąā¸ā¸´ā¸āšā¸Ģāšā¸",
- "compose_form.poll.option_placeholder": "ā¸ā¸ąā¸§āšā¸Ĩ⏎ā¸ā¸ {number}",
- "compose_form.poll.remove_option": "āšā¸ā¸˛ā¸ā¸ąā¸§āšā¸Ĩ⏎ā¸ā¸ā¸ā¸ĩāšā¸ā¸ā¸",
"compose_form.poll.switch_to_multiple": "āšā¸ā¸Ĩā¸ĩāšā¸ĸā¸ā¸ā¸˛ā¸Ŗā¸Ē⏺⏪⏧ā¸ā¸ā¸§ā¸˛ā¸Ąā¸ā¸´ā¸āšā¸Ģāšā¸āšā¸āšā¸ā¸ā¸ā¸¸ā¸ā¸˛ā¸ā¸Ģā¸Ĩ⏞ā¸ĸā¸ā¸ąā¸§āšā¸Ĩ⏎ā¸ā¸",
"compose_form.poll.switch_to_single": "āšā¸ā¸Ĩā¸ĩāšā¸ĸā¸ā¸ā¸˛ā¸Ŗā¸Ē⏺⏪⏧ā¸ā¸ā¸§ā¸˛ā¸Ąā¸ā¸´ā¸āšā¸Ģāšā¸āšā¸āšā¸ā¸ā¸ā¸¸ā¸ā¸˛ā¸ā¸ā¸ąā¸§āšā¸Ĩ⏎ā¸ā¸āšā¸ā¸ĩāšā¸ĸ⏧",
- "compose_form.publish": "āšā¸ā¸ĸāšā¸ā¸Ŗāš",
"compose_form.publish_form": "āšā¸ā¸Ēā¸āšāšā¸Ģā¸Ąāš",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "ā¸ā¸ąā¸ā¸ā¸ļā¸ā¸ā¸˛ā¸Ŗāšā¸ā¸Ĩā¸ĩāšā¸ĸā¸āšā¸ā¸Ĩā¸",
- "compose_form.sensitive.hide": "{count, plural, other {ā¸ā¸ŗāšā¸ā¸Ŗā¸ˇāšā¸ā¸ā¸Ģā¸Ąā¸˛ā¸ĸā¸Ē⏎āšā¸ā¸§āšā¸˛ā¸Ĩ⏰āšā¸ā¸ĩā¸ĸā¸ā¸āšā¸ā¸}}",
- "compose_form.sensitive.marked": "{count, plural, other {ā¸Ąā¸ĩā¸ā¸˛ā¸Ŗā¸ā¸ŗāšā¸ā¸Ŗā¸ˇāšā¸ā¸ā¸Ģā¸Ąā¸˛ā¸ĸā¸Ē⏎āšā¸ā¸§āšā¸˛ā¸Ĩ⏰āšā¸ā¸ĩā¸ĸā¸ā¸āšā¸ā¸}}",
- "compose_form.sensitive.unmarked": "{count, plural, other {āšā¸Ąāšā¸Ąā¸ĩā¸ā¸˛ā¸Ŗā¸ā¸ŗāšā¸ā¸Ŗā¸ˇāšā¸ā¸ā¸Ģā¸Ąā¸˛ā¸ĸā¸Ē⏎āšā¸ā¸§āšā¸˛ā¸Ĩ⏰āšā¸ā¸ĩā¸ĸā¸ā¸āšā¸ā¸}}",
"compose_form.spoiler.marked": "āšā¸ā¸˛ā¸ā¸ŗāšā¸ā¸ˇā¸ā¸āšā¸ā¸ˇāšā¸ā¸Ģ⏞ā¸ā¸ā¸",
"compose_form.spoiler.unmarked": "āšā¸ā¸´āšā¸Ąā¸ā¸ŗāšā¸ā¸ˇā¸ā¸āšā¸ā¸ˇāšā¸ā¸Ģ⏞",
- "compose_form.spoiler_placeholder": "āšā¸ā¸ĩā¸ĸā¸ā¸ā¸ŗāšā¸ā¸ˇā¸ā¸ā¸ā¸ā¸ā¸ā¸¸ā¸ā¸ā¸ĩāšā¸ā¸ĩāš",
"confirmation_modal.cancel": "ā¸ĸā¸āšā¸Ĩ⏴ā¸",
"confirmations.block.block_and_report": "ā¸ā¸´ā¸ā¸ā¸ąāšā¸āšā¸Ĩāšā¸§ā¸Ŗā¸˛ā¸ĸā¸ā¸˛ā¸",
"confirmations.block.confirm": "ā¸ā¸´ā¸ā¸ā¸ąāšā¸",
@@ -203,7 +193,7 @@
"disabled_account_banner.text": "ā¸Ąā¸ĩā¸ā¸˛ā¸Ŗā¸ā¸´ā¸āšā¸āšā¸ā¸˛ā¸ā¸ā¸ąā¸ā¸ā¸ĩā¸ā¸ā¸ā¸ā¸¸ā¸ {disabledAccount} āšā¸ā¸ā¸ąā¸ā¸ā¸¸ā¸ā¸ąā¸",
"dismissable_banner.community_timeline": "ā¸ā¸ĩāšā¸ā¸ˇā¸āšā¸ā¸Ēā¸āšā¸Ē⏞ā¸ā¸˛ā¸Ŗā¸ā¸°ā¸Ĩāšā¸˛ā¸Ē⏏ā¸ā¸ā¸˛ā¸ā¸ā¸šāšā¸ā¸ā¸ā¸ĩāšā¸ā¸ąā¸ā¸ā¸ĩāšā¸āšā¸Ŗā¸ąā¸ā¸ā¸˛ā¸Ŗāšā¸Žā¸Ēā¸āšāšā¸ā¸ĸ {domain}",
"dismissable_banner.dismiss": "ā¸ā¸´ā¸",
- "dismissable_banner.explore_links": "ā¸ā¸ĩāšā¸ā¸ˇā¸āšā¸Ŗā¸ˇāšā¸ā¸ā¸āšā¸˛ā¸§ā¸ā¸ĩāšāšā¸āšā¸Ŗā¸ąā¸ā¸ā¸˛ā¸Ŗāšā¸āšā¸ā¸ā¸ąā¸ā¸Ąā¸˛ā¸ā¸ā¸ĩāšā¸Ē⏏ā¸āšā¸āšā¸§āšā¸ā¸Ēā¸ąā¸ā¸ā¸Ąā¸§ā¸ąā¸ā¸ā¸ĩāš āšā¸Ŗā¸ˇāšā¸ā¸ā¸āšā¸˛ā¸§ā¸ā¸ĩāšāšā¸Ģā¸Ąāšā¸ā¸§āšā¸˛ā¸ā¸ĩāšāšā¸āšā¸Ŗā¸ąā¸ā¸ā¸˛ā¸Ŗāšā¸ā¸Ēā¸āšāšā¸ā¸ĸā¸ā¸šāšā¸ā¸ā¸āšā¸˛ā¸ āš ā¸Ąā¸˛ā¸ā¸ā¸§āšā¸˛ā¸ā¸°āšā¸āšā¸Ŗā¸ąā¸ā¸ā¸˛ā¸Ŗā¸ā¸ąā¸ā¸ā¸ąā¸ā¸ā¸ąā¸ā¸ā¸ĩāšā¸Ēā¸šā¸ā¸ā¸§āšā¸˛",
+ "dismissable_banner.explore_links": "ā¸ā¸ĩāšāšā¸āšā¸āšā¸Ŗā¸ˇāšā¸ā¸ā¸āšā¸˛ā¸§ā¸ā¸ĩāšāšā¸āšā¸Ŗā¸ąā¸ā¸ā¸˛ā¸Ŗāšā¸ā¸Ŗāšā¸Ąā¸˛ā¸ā¸ā¸ĩāšā¸Ē⏏ā¸āšā¸āšā¸§āšā¸ā¸Ēā¸ąā¸ā¸ā¸Ąā¸§ā¸ąā¸ā¸ā¸ĩāš āšā¸Ŗā¸ˇāšā¸ā¸ā¸āšā¸˛ā¸§ā¸ā¸ĩāšāšā¸Ģā¸Ąāšā¸ā¸§āšā¸˛ā¸ā¸ĩāšā¸Ąā¸ĩā¸ā¸āšā¸ā¸Ēā¸āšā¸Ąā¸˛ā¸ā¸ā¸§āšā¸˛ā¸ā¸°āšā¸āšā¸Ŗā¸ąā¸ā¸ā¸˛ā¸Ŗā¸ā¸ąā¸ā¸ā¸ąā¸ā¸ā¸ąā¸ā¸ā¸ĩāšā¸Ēā¸šā¸ā¸ā¸§āšā¸˛",
"dismissable_banner.explore_statuses": "ā¸ā¸ĩāšā¸ā¸ˇā¸āšā¸ā¸Ēā¸āšā¸ā¸˛ā¸ā¸ā¸ąāšā¸§ā¸ā¸ąāšā¸āšā¸§āšā¸ā¸Ēā¸ąā¸ā¸ā¸Ąā¸ā¸ĩāšā¸ā¸ŗā¸Ĩā¸ąā¸āšā¸āšā¸Ŗā¸ąā¸ā¸ā¸§ā¸˛ā¸Ąā¸Ēā¸āšā¸ā¸§ā¸ąā¸ā¸ā¸ĩāš āšā¸ā¸Ēā¸āšā¸ā¸ĩāšāšā¸Ģā¸Ąāšā¸ā¸§āšā¸˛ā¸ā¸ĩāšā¸Ąā¸ĩā¸ā¸˛ā¸Ŗā¸ā¸ąā¸āšā¸Ĩ⏰⏪⏞ā¸ĸā¸ā¸˛ā¸Ŗāšā¸ā¸Ŗā¸ā¸Ąā¸˛ā¸ā¸ā¸§āšā¸˛ā¸ā¸°āšā¸āšā¸Ŗā¸ąā¸ā¸ā¸˛ā¸Ŗā¸ā¸ąā¸ā¸ā¸ąā¸ā¸ā¸ąā¸ā¸ā¸ĩāšā¸Ēā¸šā¸ā¸ā¸§āšā¸˛",
"dismissable_banner.explore_tags": "ā¸ā¸ĩāšā¸ā¸ˇā¸āšā¸Žā¸āšā¸āšā¸ā¸ā¸ĩāšā¸ā¸ŗā¸Ĩā¸ąā¸āšā¸āšā¸Ŗā¸ąā¸ā¸ā¸§ā¸˛ā¸Ąā¸Ēā¸āšā¸āšā¸āšā¸§āšā¸ā¸Ēā¸ąā¸ā¸ā¸Ąā¸§ā¸ąā¸ā¸ā¸ĩāš āšā¸Žā¸āšā¸āšā¸ā¸ā¸ĩāšā¸Ąā¸ĩā¸ā¸˛ā¸Ŗāšā¸āšāšā¸ā¸ĸā¸ā¸šāšā¸ā¸ā¸āšā¸˛ā¸ āš ā¸Ąā¸˛ā¸ā¸ā¸§āšā¸˛ā¸ā¸°āšā¸āšā¸Ŗā¸ąā¸ā¸ā¸˛ā¸Ŗā¸ā¸ąā¸ā¸ā¸ąā¸ā¸ā¸ąā¸ā¸ā¸ĩāšā¸Ēā¸šā¸ā¸ā¸§āšā¸˛",
"dismissable_banner.public_timeline": "ā¸ā¸ĩāšā¸ā¸ˇā¸āšā¸ā¸Ēā¸āšā¸Ē⏞ā¸ā¸˛ā¸Ŗā¸ā¸°ā¸Ĩāšā¸˛ā¸Ē⏏ā¸ā¸ā¸˛ā¸ā¸ā¸šāšā¸ā¸āšā¸āšā¸§āšā¸ā¸Ēā¸ąā¸ā¸ā¸Ąā¸ā¸ĩāšā¸ā¸šāšā¸ā¸āšā¸ {domain} ā¸ā¸´ā¸ā¸ā¸˛ā¸Ą",
@@ -313,7 +303,7 @@
"home.explore_prompt.body": "ā¸ā¸ĩā¸ā¸Ģā¸āšā¸˛āšā¸Ŗā¸ā¸ā¸ā¸ā¸ā¸¸ā¸ā¸ā¸°ā¸Ąā¸ĩā¸ā¸˛ā¸Ŗā¸ā¸Ēā¸Ąā¸ā¸Ē⏞ā¸ā¸ā¸ā¸āšā¸ā¸Ēā¸āšā¸ā¸˛ā¸āšā¸Žā¸āšā¸āšā¸ā¸ā¸ĩāšā¸ā¸¸ā¸āšā¸āšāšā¸Ĩ⏎ā¸ā¸ā¸ā¸´ā¸ā¸ā¸˛ā¸Ą, ā¸ā¸šāšā¸ā¸ā¸ā¸ĩāšā¸ā¸¸ā¸āšā¸āšāšā¸Ĩ⏎ā¸ā¸ā¸ā¸´ā¸ā¸ā¸˛ā¸Ą āšā¸Ĩ⏰āšā¸ā¸Ēā¸āšā¸ā¸ĩāšāšā¸ā¸˛ā¸ā¸ąā¸ ā¸Ģ⏞ā¸ā¸ā¸ąāšā¸ā¸Ŗā¸šāšā¸Ēā¸ļā¸āšā¸ā¸ĩā¸ĸā¸āšā¸ā¸´ā¸āšā¸ ā¸ā¸¸ā¸ā¸ā¸˛ā¸ā¸āšā¸ā¸ā¸ā¸˛ā¸Ŗ:",
"home.explore_prompt.title": "ā¸ā¸ĩāšā¸ā¸ˇā¸ā¸ā¸˛ā¸ā¸Ģā¸āšā¸˛āšā¸Ŗā¸ā¸ā¸ā¸ā¸ā¸¸ā¸ā¸ ⏞ā¸ĸāšā¸ Mastodon",
"home.hide_announcements": "ā¸āšā¸ā¸ā¸ā¸Ŗā¸°ā¸ā¸˛ā¸¨",
- "home.pending_critical_update.body": "āšā¸ā¸Ŗā¸ā¸ā¸ąā¸āšā¸ā¸āšā¸ā¸´ā¸Ŗāšā¸āšā¸§ā¸ā¸Ŗāš Mastodon ā¸ā¸ā¸ā¸ā¸¸ā¸āšā¸ā¸ĸāšā¸Ŗāšā¸§ā¸ā¸ĩāšā¸Ē⏏ā¸āšā¸āšā¸˛ā¸ā¸ĩāšā¸ā¸°ā¸ā¸ŗāšā¸āš!",
+ "home.pending_critical_update.body": "āšā¸ā¸Ŗā¸ā¸ā¸ąā¸āšā¸ā¸āšā¸ā¸´ā¸Ŗāšā¸āšā¸§ā¸ā¸Ŗāš Mastodon ā¸ā¸ā¸ā¸ā¸¸ā¸āšā¸ā¸ĸāšā¸Ŗāšā¸§ā¸ā¸ĩāšā¸Ē⏏ā¸āšā¸āšā¸˛ā¸ā¸ĩāšā¸ā¸°āšā¸āšā¸āšā¸āšā¸āš!",
"home.pending_critical_update.link": "ā¸ā¸šā¸ā¸˛ā¸Ŗā¸ā¸ąā¸āšā¸ā¸",
"home.pending_critical_update.title": "ā¸Ąā¸ĩā¸ā¸˛ā¸Ŗā¸ā¸ąā¸āšā¸ā¸ā¸ā¸§ā¸˛ā¸Ąā¸ā¸Ĩā¸ā¸ā¸ ā¸ąā¸ĸā¸Ē⏺ā¸ā¸ąā¸ā¸ā¸Ŗāšā¸ā¸Ąāšā¸āšā¸ā¸˛ā¸!",
"home.show_announcements": "āšā¸Ēā¸ā¸ā¸ā¸Ŗā¸°ā¸ā¸˛ā¸¨",
@@ -407,7 +397,6 @@
"navigation_bar.direct": "ā¸ā¸˛ā¸Ŗā¸ā¸Ĩāšā¸˛ā¸§ā¸ā¸ļā¸āšā¸ā¸ā¸Ēāšā¸§ā¸ā¸ā¸ąā¸§",
"navigation_bar.discover": "ā¸āšā¸ā¸ā¸",
"navigation_bar.domain_blocks": "āšā¸āšā¸Ąā¸ā¸ā¸ĩāšā¸ā¸´ā¸ā¸ā¸ąāšā¸ā¸ā¸ĸā¸šāš",
- "navigation_bar.edit_profile": "āšā¸āšāšā¸āšā¸ā¸Ŗāšā¸ā¸Ĩāš",
"navigation_bar.explore": "ā¸Ē⏺⏪⏧ā¸",
"navigation_bar.favourites": "⏪⏞ā¸ĸā¸ā¸˛ā¸Ŗāšā¸ā¸Ŗā¸",
"navigation_bar.filters": "ā¸ā¸ŗā¸ā¸ĩāšā¸āšā¸ā¸ā¸ā¸ĸā¸šāš",
@@ -525,14 +514,7 @@
"poll_button.add_poll": "āšā¸ā¸´āšā¸Ąā¸ā¸˛ā¸Ŗā¸Ē⏺⏪⏧ā¸ā¸ā¸§ā¸˛ā¸Ąā¸ā¸´ā¸āšā¸Ģāšā¸",
"poll_button.remove_poll": "āšā¸ā¸˛ā¸ā¸˛ā¸Ŗā¸Ē⏺⏪⏧ā¸ā¸ā¸§ā¸˛ā¸Ąā¸ā¸´ā¸āšā¸Ģāšā¸ā¸ā¸ā¸",
"privacy.change": "āšā¸ā¸Ĩā¸ĩāšā¸ĸā¸ā¸ā¸§ā¸˛ā¸Ąāšā¸āšā¸ā¸Ēāšā¸§ā¸ā¸ā¸ąā¸§ā¸ā¸ā¸āšā¸ā¸Ēā¸āš",
- "privacy.direct.long": "ā¸ā¸Ŗā¸˛ā¸ā¸āšā¸āšā¸ā¸šāšāšā¸āšā¸ā¸ĩāšā¸ā¸Ĩāšā¸˛ā¸§ā¸ā¸ļā¸āšā¸āšā¸˛ā¸ā¸ąāšā¸",
- "privacy.direct.short": "ā¸ā¸šāšā¸ā¸ā¸ā¸ĩāšā¸ā¸Ĩāšā¸˛ā¸§ā¸ā¸ļā¸āšā¸āšā¸˛ā¸ā¸ąāšā¸",
- "privacy.private.long": "ā¸ā¸Ŗā¸˛ā¸ā¸āšā¸āšā¸ā¸šāšā¸ā¸´ā¸ā¸ā¸˛ā¸Ąāšā¸āšā¸˛ā¸ā¸ąāšā¸",
- "privacy.private.short": "ā¸ā¸šāšā¸ā¸´ā¸ā¸ā¸˛ā¸Ąāšā¸āšā¸˛ā¸ā¸ąāšā¸",
- "privacy.public.long": "ā¸ā¸Ŗā¸˛ā¸ā¸āšā¸āšā¸ā¸ąāšā¸ā¸Ģā¸Ąā¸",
"privacy.public.short": "ā¸Ē⏞ā¸ā¸˛ā¸Ŗā¸ā¸°",
- "privacy.unlisted.long": "ā¸ā¸Ŗā¸˛ā¸ā¸āšā¸āšā¸ā¸ąāšā¸ā¸Ģā¸Ąā¸ āšā¸āšāšā¸Ĩ⏎ā¸ā¸āšā¸Ąāšā¸Ŗā¸ąā¸ā¸ā¸¸ā¸ā¸Ĩā¸ąā¸ā¸Šā¸ā¸°ā¸ā¸˛ā¸Ŗā¸āšā¸ā¸ā¸",
- "privacy.unlisted.short": "āšā¸Ąāšā¸ā¸ĸā¸šāšāšā¸ā¸Ŗā¸˛ā¸ĸā¸ā¸˛ā¸Ŗ",
"privacy_policy.last_updated": "ā¸ā¸ąā¸āšā¸ā¸ā¸Ĩāšā¸˛ā¸Ē⏏ā¸āšā¸Ąā¸ˇāšā¸ {date}",
"privacy_policy.title": "ā¸āšā¸ĸā¸ā¸˛ā¸ĸā¸ā¸§ā¸˛ā¸Ąāšā¸āšā¸ā¸Ēāšā¸§ā¸ā¸ā¸ąā¸§",
"recommended": "āšā¸ā¸°ā¸ā¸ŗ",
@@ -714,10 +696,8 @@
"upload_error.poll": "āšā¸Ąāšā¸ā¸ā¸¸ā¸ā¸˛ā¸ā¸ā¸˛ā¸Ŗā¸ā¸ąā¸āšā¸Ģā¸Ĩā¸āšā¸ā¸Ĩāšāšā¸ā¸ĸā¸Ąā¸ĩā¸ā¸˛ā¸Ŗā¸Ē⏺⏪⏧ā¸ā¸ā¸§ā¸˛ā¸Ąā¸ā¸´ā¸āšā¸Ģāšā¸",
"upload_form.audio_description": "ā¸ā¸ā¸´ā¸ā¸˛ā¸ĸā¸Ē⏺ā¸Ģā¸Ŗā¸ąā¸ā¸ā¸šāšā¸ā¸ĩāšā¸Ēā¸šā¸āšā¸Ēā¸ĩā¸ĸā¸ā¸˛ā¸Ŗāšā¸āšā¸ĸ⏴ā¸",
"upload_form.description": "ā¸ā¸ā¸´ā¸ā¸˛ā¸ĸā¸Ē⏺ā¸Ģā¸Ŗā¸ąā¸ā¸ā¸šāšā¸ā¸ā¸ā¸ĩāšā¸ā¸´ā¸ā¸˛ā¸Ŗā¸ā¸˛ā¸ā¸ā¸˛ā¸Ŗā¸Ąā¸ā¸āšā¸Ģāšā¸ā¸Ģ⏪⏎ā¸ā¸Ąā¸ĩā¸Ē⏞ā¸ĸā¸ā¸˛āšā¸Ĩ⏎ā¸ā¸ā¸Ŗā¸˛ā¸",
- "upload_form.description_missing": "āšā¸Ąāšāšā¸āšāšā¸ā¸´āšā¸Ąā¸ā¸ŗā¸ā¸ā¸´ā¸ā¸˛ā¸ĸ",
"upload_form.edit": "āšā¸āšāšā¸",
"upload_form.thumbnail": "āšā¸ā¸Ĩā¸ĩāšā¸ĸā¸ā¸ ⏞ā¸ā¸ā¸ā¸˛ā¸ā¸ĸāšā¸",
- "upload_form.undo": "ā¸Ĩā¸",
"upload_form.video_description": "ā¸ā¸ā¸´ā¸ā¸˛ā¸ĸā¸Ē⏺ā¸Ģā¸Ŗā¸ąā¸ā¸ā¸šāšā¸ā¸ā¸ā¸ĩāšā¸ā¸´ā¸ā¸˛ā¸Ŗā¸ā¸˛ā¸ā¸ā¸˛ā¸Ŗāšā¸āšā¸ĸ⏴⏠āšā¸āšā¸ĸ⏴ā¸āšā¸Ąāšā¸ā¸ąā¸ ā¸ā¸´ā¸ā¸˛ā¸Ŗā¸ā¸˛ā¸ā¸ā¸˛ā¸Ŗā¸Ąā¸ā¸āšā¸Ģāšā¸ ā¸Ģ⏪⏎ā¸ā¸Ąā¸ĩā¸Ē⏞ā¸ĸā¸ā¸˛āšā¸Ĩ⏎ā¸ā¸ā¸Ŗā¸˛ā¸",
"upload_modal.analyzing_picture": "ā¸ā¸ŗā¸Ĩā¸ąā¸ā¸§ā¸´āšā¸ā¸Ŗā¸˛ā¸°ā¸Ģāšā¸Ŗā¸šā¸ā¸ ⏞ā¸âĻ",
"upload_modal.apply": "ā¸ā¸ŗāšā¸āšā¸āš",
diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json
index e85db817b..6811c158d 100644
--- a/app/javascript/mastodon/locales/tr.json
+++ b/app/javascript/mastodon/locales/tr.json
@@ -89,7 +89,6 @@
"announcement.announcement": "Duyuru",
"attachments_list.unprocessed": "(iÅlenmemiÅ)",
"audio.hide": "Sesi gizle",
- "autosuggest_hashtag.per_week": "Haftada {count}",
"boost_modal.combo": "Bir daha ki sefere {combo} tuÅuna basabilirsin",
"bundle_column_error.copy_stacktrace": "Hata raporunu kopyala",
"bundle_column_error.error.body": "İstenen sayfa gÃļsterilemiyor. Bu durum kodumuzdaki bir hatadan veya tarayÄącÄą uyum sorunundan kaynaklanÄąyor olabilir.",
@@ -146,22 +145,12 @@
"compose_form.lock_disclaimer": "HesabÄąn {locked} deÄil. YalnÄązca takipçilere Ãļzel gÃļnderilerini gÃļrÃŧntÃŧlemek için herkes seni takip edebilir.",
"compose_form.lock_disclaimer.lock": "kilitli",
"compose_form.placeholder": "AklÄąnda ne var?",
- "compose_form.poll.add_option": "Bir seçenek ekleyin",
"compose_form.poll.duration": "Anket sÃŧresi",
- "compose_form.poll.option_placeholder": "{number}.seçenek",
- "compose_form.poll.remove_option": "Bu seçeneÄi kaldÄąr",
"compose_form.poll.switch_to_multiple": "Birden çok seçeneÄe izin vermek için anketi deÄiÅtir",
"compose_form.poll.switch_to_single": "Tek bir seçeneÄe izin vermek için anketi deÄiÅtir",
- "compose_form.publish": "GÃļnder",
"compose_form.publish_form": "GÃļnder",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "DeÄiÅiklikleri kaydet",
- "compose_form.sensitive.hide": "{count, plural, one {MedyayÄą hassas olarak iÅaretle} other {MedyayÄą hassas olarak iÅaretle}}",
- "compose_form.sensitive.marked": "{count, plural, one {Medya hassas olarak iÅaretlendi} other {Medya hassas olarak iÅaretlendi}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {Medya hassas olarak iÅaretlenmemiÅ} other {Medya hassas olarak iÅaretlenmemiÅ}}",
"compose_form.spoiler.marked": "Metin uyarÄąnÄąn arkasÄąna gizlenir",
"compose_form.spoiler.unmarked": "Metin gizli deÄil",
- "compose_form.spoiler_placeholder": "UyarÄąnÄązÄą buraya yazÄąn",
"confirmation_modal.cancel": "İptal",
"confirmations.block.block_and_report": "Engelle ve Bildir",
"confirmations.block.confirm": "Engelle",
@@ -408,7 +397,6 @@
"navigation_bar.direct": "Ãzel deÄinmeler",
"navigation_bar.discover": "KeÅfet",
"navigation_bar.domain_blocks": "Engellenen alan adlarÄą",
- "navigation_bar.edit_profile": "Profili dÃŧzenle",
"navigation_bar.explore": "KeÅfet",
"navigation_bar.favourites": "Favorilerin",
"navigation_bar.filters": "Sessize alÄąnmÄąÅ kelimeler",
@@ -526,14 +514,7 @@
"poll_button.add_poll": "Bir anket ekleyin",
"poll_button.remove_poll": "Anketi kaldÄąr",
"privacy.change": "GÃļnderi gizliliÄini deÄiÅtir",
- "privacy.direct.long": "Sadece bahsedilen kullanÄącÄąlar için gÃļrÃŧnÃŧr",
- "privacy.direct.short": "Sadece bahsedilen kiÅiler",
- "privacy.private.long": "Sadece takipçiler için gÃļrÃŧnÃŧr",
- "privacy.private.short": "Sadece takipçiler",
- "privacy.public.long": "Herkese aÃ§Äąk",
"privacy.public.short": "Herkese aÃ§Äąk",
- "privacy.unlisted.long": "KeÅfet harici herkese aÃ§Äąk",
- "privacy.unlisted.short": "ListelenmemiÅ",
"privacy_policy.last_updated": "Son gÃŧncelleme {date}",
"privacy_policy.title": "Gizlilik PolitikasÄą",
"recommended": "Ãnerilen",
@@ -715,10 +696,8 @@
"upload_error.poll": "Anketlerde dosya yÃŧklemesine izin verilmez.",
"upload_form.audio_description": "İÅitme kaybÄą olan kiÅiler için yazÄą ekleyiniz",
"upload_form.description": "GÃļrme engelliler için aÃ§Äąklama",
- "upload_form.description_missing": "AÃ§Äąklama eklenmedi",
"upload_form.edit": "DÃŧzenle",
"upload_form.thumbnail": "KÃŧçÃŧk resmi deÄiÅtir",
- "upload_form.undo": "Sil",
"upload_form.video_description": "İÅitme kaybÄą veya gÃļrme engeli olan kiÅiler için aÃ§Äąklama ekleyiniz",
"upload_modal.analyzing_picture": "Resim analiz ediliyorâĻ",
"upload_modal.apply": "Uygula",
diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json
index 47fe60bd2..17de9884e 100644
--- a/app/javascript/mastodon/locales/tt.json
+++ b/app/javascript/mastodon/locales/tt.json
@@ -76,7 +76,6 @@
"announcement.announcement": "ĐĐŗŅĐģаĐŊ",
"attachments_list.unprocessed": "(ŅиĐŧаĐģ)",
"audio.hide": "ĐŅдиОĐŊŅ ŅŅĐĩŅŌ¯",
- "autosuggest_hashtag.per_week": "{count} аŅĐŊĐ°ĐŗĐ°",
"boost_modal.combo": "ĐĄĐĩС йаŅа аĐģаŅŅС {combo} ĐēиĐģĶŅĐĩ ŅаĐŋĐēŅŅ ĐŧĐžĐŊŅ ŅĐ°ĐŗŅĐŊŅ ĶŠŅĐĩĐŊ",
"bundle_column_error.copy_stacktrace": "ĐŌ¯ŅĐĩŅĐĩĐŋ аĐģŅ Ņ
аŅа ŅŅŅŅĐŊда ĐŅŅĐĩŅ",
"bundle_column_error.error.body": "ĐĄĐžŅаĐģĐŗĐ°ĐŊ ĐąĐ¸Ņ ĐēŌ¯ŅŅĶŅĐĩĐģĶ Đ°ĐģĐŧŅĐš. ĐŅ ĐąĐĩСĐŊĐĩŌŖ ĐēОдŅĐ°ĐŗŅ Ņ
аŅа ŅĐēи ĐąŅаŅСĐĩŅĐŗĐ° ŅŅŅŅ ĐēиĐģŌ¯ ĐŋŅОйĐģĐĩĐŧаŅŅ Đ°ŅĐēаŅŅĐŊда ĐąŅĐģŅŅĐŗĐ° ĐŧĶŠĐŧĐēиĐŊ.",
@@ -128,22 +127,12 @@
"compose_form.lock_disclaimer": "ĐĄĐĩСĐŊĐĩŌŖ Ņ
иŅаĐŋ ŅŌ¯ĐŗĐĩĐģ {locked}. ĐĐŋŅĶŅĐąĐĩŅ ŅĐĩĐģĶĐŗĶĐŊ ĐēĐĩŅĐĩ ŅĐĩСĐŊĐĩŌŖ ŅСĐŧа ĶŠŅĐĩĐŊ иŅŅĶ Đ°Đģа.",
"compose_form.lock_disclaimer.lock": "йиĐēĐģĐĩ",
"compose_form.placeholder": "What is on your mind?",
- "compose_form.poll.add_option": "ХаКĐģĐ°Ņ ĶŠŅŅĶĐŗĐĩС",
"compose_form.poll.duration": "ĐĄĐžŅаŅŅŅŅŅ ĐžĐˇŅĐŊĐģŅĐŗŅ",
- "compose_form.poll.option_placeholder": "ХаКĐģĐ°Ņ {number}",
- "compose_form.poll.remove_option": "ĐąĐĩŅĐĩŅŌ¯",
"compose_form.poll.switch_to_multiple": "ĐĐĩŅĐŊиŅĶ Đ˛Đ°ŅиаĐŊŅĐŊŅ ŅиŅŌ¯ ĶŠŅĐĩĐŊ ŅĐžŅаŅŅŅŅŅĐŊŅ ŌŽĐˇĐŗĶŅŅĐĩĐŗĐĩС",
"compose_form.poll.switch_to_single": "ĐĐĩŅĐ´ĶĐŊĐąĐĩŅ ŅаКĐģĐ°Ņ ĶŠŅĐĩĐŊ ŅĐžŅаŅŅŅŅŅĐŊŅ ŌŽĐˇĐŗĶŅŅĐĩĐŗĐĩС",
- "compose_form.publish": "ĐаŅŅŅŅŅ",
"compose_form.publish_form": "ĐаŅŅŅŅŅ",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "ŌŽĐˇĐŗĶŅĐĩŅĐģĶŅĐŊĐĩ ŅаĐēĐģаŅ",
- "compose_form.sensitive.hide": "{count, plural, one {ĐĐĩдиаĐŊŅ ŅĐ¸ĐˇĐŗĐĩŅ Đ¸ŅĐĩĐŋ йиĐģĐŗĐĩĐģĶĐŗĐĩС} other {ĐĐĩдиаĐŊŅ ŅĐ¸ĐˇĐŗĐĩŅ Đ¸ŅĐĩĐŋ йиĐģĐŗĐĩĐģĶĐŗĐĩС}}",
- "compose_form.sensitive.marked": "{count, plural, one {ĐĸаŅŅŅŅ ŅĐ¸ĐˇĐŗĐĩŅ Đ´Đ¸Đŋ ŅСŅĐģĐŗĐ°ĐŊ} other {ĐĸаŅŅŅŅ ŅĐ¸ĐˇĐŗĐĩŅ Đ´Đ¸Đŋ ŅСŅĐģĐŗĐ°ĐŊ}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {ĐĐĩдиа ŅĐ¸ĐˇĐŗĐĩŅ ĐąŅĐģаŅаĐē йиĐģĐŗĐĩĐģĐĩ ŅŌ¯ĐŗĐĩĐģ} other {ĐĐĩдиа ŅĐ¸ĐˇĐŗĐĩŅ ĐąŅĐģаŅаĐē йиĐģĐŗĐĩĐģĐĩ ŅŌ¯ĐŗĐĩĐģ}}",
"compose_form.spoiler.marked": "Text is hidden behind warning",
"compose_form.spoiler.unmarked": "Text is not hidden",
- "compose_form.spoiler_placeholder": "ĐиŅĶŅŌ¯ĐĩĐŗĐĩСĐŊĐĩ ĐŧĐžĐŊда ŅСŅĐŗŅС",
"confirmation_modal.cancel": "ĐĐ°Ņ ŅаŅŅŅ",
"confirmations.block.block_and_report": "ĐĐģĐžĐēĐģĐ°Ņ ŌģĶĐŧ ŅиĐēаŅŅŅ Đ¸ŅŌ¯",
"confirmations.block.confirm": "ĐĐģĐžĐēĐģаŅ",
@@ -322,7 +311,6 @@
"navigation_bar.compose": "Compose new toot",
"navigation_bar.direct": "ĐĨĐžŅŅŅŅĐš иŅĐēĶ Đ°ĐģŅĐģаŅ",
"navigation_bar.domain_blocks": "Hidden domains",
- "navigation_bar.edit_profile": "ĐŅĐžŅиĐģŅĐŊŅ Ō¯ĐˇĐŗĶŅŅŌ¯",
"navigation_bar.explore": "ĐŌ¯ĐˇĶŅŌ¯",
"navigation_bar.lists": "ĐŅĐĩĐŧĐģĐĩĐēĐģĶŅ",
"navigation_bar.logout": "ЧŅĐŗŅ",
@@ -376,9 +364,6 @@
"poll_button.add_poll": "ĐĄĐžŅаŅŅŅŅŅĐŊŅ ĶŠŅŅĶŌ¯",
"poll_button.remove_poll": "ĐĄĐžŅаŅŅŅŅŅĐŊŅ ĐąĐĩŅĐĩŅŌ¯",
"privacy.change": "Adjust status privacy",
- "privacy.direct.short": "Direct",
- "privacy.private.short": "Followers-only",
- "privacy.public.long": "ŌēĶŅĐēĐĩĐŧĐŗĶ Đ°ŅŅĐē",
"privacy.public.short": "ŌēĶŅĐēĐĩĐŧĐŗĶ Đ°ŅŅĐē",
"privacy_policy.last_updated": "ĐĄĐžŌŖĐŗŅ ŅŌŖĐ°ŅŅŅ {date}",
"privacy_policy.title": "ĐĨĐžŅŅŅŅĐšĐģŅĐē ĐĄĶŅŅĶŅĐĩ",
@@ -478,9 +463,7 @@
"units.short.thousand": "{count}Đ",
"upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Describe for the visually impaired",
- "upload_form.description_missing": "ĐĸаŅвиŅĐģаĐŧа ĶŠŅŅĶĐģĐŧĶĐ´Đĩ",
"upload_form.edit": "ŌŽĐˇĐŗĶŅŅŌ¯",
- "upload_form.undo": "ĐĐĩŅĐĩŅŌ¯",
"upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.analyzing_picture": "Đ ĶŅĐĩĐŧĐŗĶ Đ°ĐŊаĐģиС ŅŅаŅâĻ",
"upload_modal.apply": "ĐŅĐģĐģаĐŊ",
diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json
index 6bb5ba0eb..9dc3b5c1f 100644
--- a/app/javascript/mastodon/locales/ug.json
+++ b/app/javascript/mastodon/locales/ug.json
@@ -76,8 +76,6 @@
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
"onboarding.steps.share_profile.title": "Share your profile",
"privacy.change": "Adjust status privacy",
- "privacy.direct.short": "Direct",
- "privacy.private.short": "Followers-only",
"report.placeholder": "Type or paste additional comments",
"report.submit": "Submit report",
"report.target": "Report {target}",
diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json
index 92eacaad1..38e5f9cfb 100644
--- a/app/javascript/mastodon/locales/uk.json
+++ b/app/javascript/mastodon/locales/uk.json
@@ -32,6 +32,7 @@
"account.featured_tags.last_status_never": "ĐĐĩĐŧĐ°Ņ Đ´ĐžĐŋиŅŅв",
"account.featured_tags.title": "{name} видŅĐģŅŅ Ņ
ĐĩŅŅĐĩŌи",
"account.follow": "ĐŅĐ´ĐŋиŅаŅиŅŅ",
+ "account.follow_back": "ĐŅĐ´ĐŋиŅаŅиŅŅ Đ˛ĐˇĐ°ŅĐŧĐŊĐž",
"account.followers": "ĐŅĐ´ĐŋиŅĐŊиĐēи",
"account.followers.empty": "ĐŅŅ
ŅĐž ŅĐĩ ĐŊĐĩ ĐŋŅĐ´ĐŋиŅаĐŊиК ĐŊа ŅŅĐžĐŗĐž ĐēĐžŅиŅŅŅваŅа.",
"account.followers_counter": "{count, plural, one {{counter} ĐŋŅĐ´ĐŋиŅĐŊиĐē} few {{counter} ĐŋŅĐ´ĐŋиŅĐŊиĐēи} many {{counter} ĐŋŅĐ´ĐŋиŅĐŊиĐēŅв} other {{counter} ĐŋŅĐ´ĐŋиŅĐŊиĐēи}}",
@@ -88,7 +89,6 @@
"announcement.announcement": "ĐĐŗĐžĐģĐžŅĐĩĐŊĐŊŅ",
"attachments_list.unprocessed": "(ĐŊĐĩ ОйŅОйĐģĐĩĐŊĐž)",
"audio.hide": "ĐĄŅ
ОваŅи аŅĐ´ŅĐž",
- "autosuggest_hashtag.per_week": "{count} ĐŊа ŅиĐļĐ´ĐĩĐŊŅ",
"boost_modal.combo": "Đи ĐŧĐžĐļĐĩŅĐĩ ĐŊаŅиŅĐŊŅŅи {combo}, ŅОйи ĐŋŅĐžĐŋŅŅŅиŅи ŅĐĩ ĐŊаŅŅŅĐŋĐŊĐžĐŗĐž ŅаСŅ",
"bundle_column_error.copy_stacktrace": "ĐĐžĐŋŅŅваŅи СвŅŅ ĐŋŅĐž ĐŋĐžĐŧиĐģĐēŅ",
"bundle_column_error.error.body": "ĐĐĩĐŧĐžĐļĐģивО ĐŋĐžĐēаСаŅи СаĐŋиŅаĐŊŅ ŅŅĐžŅŅĐŊĐēŅ. ĐĻĐĩ ĐŧĐžĐļĐĩ ĐąŅŅи ŅĐŋŅиŅиĐŊĐĩĐŊĐž ĐŋĐžĐŧиĐģĐēĐžŅ Ņ ĐŊаŅĐžĐŧŅ ĐēОдŅ, айО ŅĐĩŅĐĩС ĐŋŅОйĐģĐĩĐŧŅ ŅŅĐŧŅŅĐŊĐžŅŅŅ Đˇ ĐąŅаŅСĐĩŅĐžĐŧ.",
@@ -145,22 +145,13 @@
"compose_form.lock_disclaimer": "ĐĐ°Ņ ĐžĐąĐģŅĐēОвиК СаĐŋĐ¸Ņ ĐŊĐĩ {locked}. ĐŅĐ´Ņ-ŅĐēиК ĐēĐžŅиŅŅŅĐ˛Đ°Ņ ĐŧĐžĐļĐĩ ĐŋŅĐ´ĐŋиŅаŅиŅŅ ĐŊа Đ˛Đ°Ņ Ņа ĐŋĐĩŅĐĩĐŗĐģŅдаŅи ваŅŅ Đ´ĐžĐŋиŅи Đ´ĐģŅ ĐŋŅĐ´ĐŋиŅĐŊиĐēŅв.",
"compose_form.lock_disclaimer.lock": "ĐŋŅиваŅĐŊиК",
"compose_form.placeholder": "ĐŠĐž Ņ Đ˛Đ°Ņ ĐŊа Đ´ŅĐŧŅŅ?",
- "compose_form.poll.add_option": "ĐОдаŅи ваŅŅаĐŊŅ",
+ "compose_form.poll.add_option": "ĐОдаŅи ĐžĐŋŅŅŅ",
"compose_form.poll.duration": "ĐĸŅиваĐģŅŅŅŅ ĐžĐŋиŅŅваĐŊĐŊŅ",
- "compose_form.poll.option_placeholder": "ĐаŅŅаĐŊŅ {number}",
- "compose_form.poll.remove_option": "ĐидаĐģиŅи ŅĐĩĐš ваŅŅаĐŊŅ",
"compose_form.poll.switch_to_multiple": "ĐОСвОĐģиŅи вийŅŅ Đ´ĐĩĐēŅĐģŅĐēĐžŅ
вŅĐ´ĐŋОвŅĐ´ĐĩĐš",
"compose_form.poll.switch_to_single": "ĐĐĩŅĐĩĐŧĐēĐŊŅŅи Ņ ŅĐĩĐļиĐŧ вийОŅŅ ĐžĐ´ĐŊŅŅŅ Đ˛ŅĐ´ĐŋОвŅĐ´Ņ",
- "compose_form.publish": "ĐĐŋŅĐąĐģŅĐēŅваŅи",
"compose_form.publish_form": "ĐОвиК Đ´ĐžĐŋиŅ",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "ĐĐąĐĩŅĐĩĐŗŅи СĐŧŅĐŊи",
- "compose_form.sensitive.hide": "{count, plural, one {ĐОСĐŊаŅиŅи ĐŧĐĩĐ´Ņа Đ´ĐĩĐģŅĐēаŅĐŊиĐŧ} other {ĐОСĐŊаŅиŅи ĐŧĐĩĐ´Ņа Đ´ĐĩĐģŅĐēаŅĐŊиĐŧи}}",
- "compose_form.sensitive.marked": "{count, plural, one {ĐĐĩĐ´Ņа ĐŋОСĐŊаŅĐĩĐŊĐĩ Đ´ĐĩĐģŅĐēаŅĐŊиĐŧ} other {ĐĐĩĐ´Ņа ĐŋОСĐŊаŅĐĩĐŊŅ Đ´ĐĩĐģŅĐēаŅĐŊиĐŧи}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {ĐĐĩĐ´Ņа ĐŊĐĩ ĐŋОСĐŊаŅĐĩĐŊĐĩ Đ´ĐĩĐģŅĐēаŅĐŊиĐŧ} other {ĐĐĩĐ´Ņа ĐŊĐĩ ĐŋОСĐŊаŅĐĩĐŊŅ Đ´ĐĩĐģŅĐēаŅĐŊиĐŧи}}",
"compose_form.spoiler.marked": "ĐŅийŅаŅи ĐŋĐžĐŋĐĩŅĐĩĐ´ĐļĐĩĐŊĐŊŅ ĐŋŅĐž вĐŧŅŅŅ",
"compose_form.spoiler.unmarked": "ĐОдаŅи ĐŋĐžĐŋĐĩŅĐĩĐ´ĐļĐĩĐŊĐŊŅ ĐŋŅĐž вĐŧŅŅŅ",
- "compose_form.spoiler_placeholder": "ĐаĐŋиŅŅŅŅ ŅĐ˛ĐžŅ ĐŋĐžĐŋĐĩŅĐĩĐ´ĐļĐĩĐŊĐŊŅ ŅŅŅ",
"confirmation_modal.cancel": "ĐĄĐēаŅŅваŅи",
"confirmations.block.block_and_report": "ĐайĐģĐžĐēŅваŅи Ņа ĐŋĐžŅĐēаŅĐļиŅиŅŅ",
"confirmations.block.confirm": "ĐайĐģĐžĐēŅваŅи",
@@ -407,7 +398,6 @@
"navigation_bar.direct": "ĐŅОйиŅŅŅ ĐˇĐŗĐ°Đ´Đēи",
"navigation_bar.discover": "ĐĐžŅĐģŅдиŅи",
"navigation_bar.domain_blocks": "ĐайĐģĐžĐēОваĐŊŅ Đ´ĐžĐŧĐĩĐŊи",
- "navigation_bar.edit_profile": "Đ ĐĩĐ´Đ°ĐŗŅваŅи ĐŋŅĐžŅŅĐģŅ",
"navigation_bar.explore": "ĐĐŗĐģŅĐ´",
"navigation_bar.favourites": "ĐŖĐŋОдОйаĐŊĐĩ",
"navigation_bar.filters": "ĐŅиŅ
ОваĐŊŅ ŅĐģОва",
@@ -525,14 +515,7 @@
"poll_button.add_poll": "ĐОдаŅи ĐžĐŋиŅŅваĐŊĐŊŅ",
"poll_button.remove_poll": "ĐидаĐģиŅи ĐžĐŋиŅŅваĐŊĐŊŅ",
"privacy.change": "ĐĐŧŅĐŊиŅи видиĐŧŅŅŅŅ Đ´ĐžĐŋиŅŅ",
- "privacy.direct.long": "ĐĐžĐēаСаŅи ŅŅĐģŅĐēи ĐˇĐŗĐ°Đ´Đ°ĐŊиĐŧ ĐēĐžŅиŅŅŅваŅаĐŧ",
- "privacy.direct.short": "ĐиŅĐĩ ĐˇĐŗĐ°Đ´Đ°ĐŊŅ ĐģŅди",
- "privacy.private.long": "ĐĐžĐēаСаŅи ŅŅĐģŅĐēи ĐŋŅĐ´ĐŋиŅĐŊиĐēаĐŧ",
- "privacy.private.short": "ĐĸŅĐģŅĐēи Đ´ĐģŅ ĐŋŅĐ´ĐŋиŅĐŊиĐēŅв",
- "privacy.public.long": "ĐидиĐŧиК Đ´ĐģŅ Đ˛ŅŅŅ
",
"privacy.public.short": "ĐŅĐąĐģŅŅĐŊĐž",
- "privacy.unlisted.long": "ĐидиĐŧиК Đ´ĐģŅ Đ˛ŅŅŅ
, аĐģĐĩ ĐŊĐĩ ŅĐĩŅĐĩС ĐŧĐžĐļĐģивОŅŅŅ Đ˛Đ¸ŅвĐģĐĩĐŊĐŊŅ",
- "privacy.unlisted.short": "ĐŅиŅ
ОваĐŊиК",
"privacy_policy.last_updated": "ĐĐŊОвĐģĐĩĐŊĐž {date}",
"privacy_policy.title": "ĐĐžĐģŅŅиĐēа ĐŋŅиваŅĐŊĐžŅŅŅ",
"recommended": "Đ ĐĩĐēĐžĐŧĐĩĐŊдОваĐŊĐž",
@@ -714,10 +697,8 @@
"upload_error.poll": "ĐĐĩ ĐŧĐžĐļĐŊа СаваĐŊŅаĐļŅваŅи ŅаКĐģи Đ´Đž ĐžĐŋиŅŅваĐŊŅ.",
"upload_form.audio_description": "ĐĐŋиŅŅŅŅ Đ´ĐģŅ ĐģŅĐ´ĐĩĐš ŅС вадаĐŧи ŅĐģŅŅ
Ņ",
"upload_form.description": "ĐĐŋиŅŅŅŅ Đ´ĐģŅ ĐģŅĐ´ĐĩĐš С вадаĐŧи СОŅŅ",
- "upload_form.description_missing": "ĐĐĩĐŧĐ°Ņ ĐžĐŋиŅŅ",
"upload_form.edit": "ĐĐŧŅĐŊиŅи",
"upload_form.thumbnail": "ĐĐŧŅĐŊиŅи ĐŧŅĐŊŅаŅŅŅŅ",
- "upload_form.undo": "ĐидаĐģиŅи",
"upload_form.video_description": "ĐĐŋиŅŅŅŅ Đ´ĐģŅ ĐģŅĐ´ĐĩĐš ŅС вадаĐŧи ŅĐģŅŅ
Ņ Đ°ĐąĐž СОŅŅ",
"upload_modal.analyzing_picture": "ĐĐŊаĐģŅСŅŅĐŧĐž СОйŅаĐļĐĩĐŊĐŊŅâĻ",
"upload_modal.apply": "ĐаŅŅĐžŅŅваŅи",
diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json
index 563b2dedf..fee2cc3a9 100644
--- a/app/javascript/mastodon/locales/ur.json
+++ b/app/javascript/mastodon/locales/ur.json
@@ -72,7 +72,6 @@
"alert.unexpected.message": "اÛÚŠ ØēÛØą Ų
ØĒŲŲØš ØŗÛŲ ÛŲØ§ ÛÛ.",
"alert.unexpected.title": "ا ØąÛ!",
"announcement.announcement": "Ø§ØšŲØ§Ų",
- "autosuggest_hashtag.per_week": "{count} ŲÛ ÛŲØĒÛ",
"boost_modal.combo": "ØĸØĻÛŲØ¯Û ÛÛ ŲÛ Ø¯ÛÚŠÚžŲÛ ÚŠÛŲØĻÛ ØĸŲž {combo} دبا ØŗÚŠØĒÛ ÛÛÚē",
"bundle_column_error.error.title": "اŲŲØ ŲÛÛÚē!",
"bundle_column_error.network.title": "ŲÛŲš ŲØąÚŠ ÚŠÛ ØŽØąØ§Ø¨Û",
@@ -115,22 +114,12 @@
"compose_form.lock_disclaimer": "ØĸŲž ڊا اڊاؤŲŲš {locked} ŲÛÛÚē ÛÛ. ÚŠŲØĻÛ Ø¨ÚžÛ ØĸŲž ÚŠÛ Ų
ØŽØĩŲØĩ Ø¨ØąØ§ØĻÛ ŲžÛØąŲÚŠØ§Øą ŲšŲŲš دÛÚŠÚžŲÛ ÚŠÛ ØŽØ§ØˇØą ØĸŲž ÚŠÛ ŲžÛØąŲÛ ÚŠØą ØŗÚŠØĒا ÛÛ.",
"compose_form.lock_disclaimer.lock": "Ų
ŲŲŲ",
"compose_form.placeholder": "ØĸŲž ÚŠÛØ§ ØŗŲÚ ØąÛÛ ÛÛÚēØ",
- "compose_form.poll.add_option": "Ø§ŲØĒØŽØ§Ø¨ شاŲ
Ų ÚŠØąÛÚē",
"compose_form.poll.duration": "Ų
دØĒŲ ØąØ§ØĻÛ",
- "compose_form.poll.option_placeholder": "Ø§ŲØĒØŽØ§Ø¨ {number}",
- "compose_form.poll.remove_option": "ÛÛ Ø§ŲØĒØŽØ§Ø¨ ÛŲšØ§ دÛÚē",
"compose_form.poll.switch_to_multiple": "Ų
ØĒؚدد Ø§ŲØĒØŽØ§Ø¨ ÚŠÛ Ø§ØŦØ§Ø˛ØĒ دÛŲÛ ÚŠÛ ŲÛÛ ŲžŲŲ ØĒبدÛŲ ÚŠØąÛÚē",
"compose_form.poll.switch_to_single": "ÚŠØŗÛ Ø§ÛÚŠ Ø§ŲØĒØŽØ§Ø¨ ÚŠÛ ŲÛÛ ŲžŲŲ ØĒبدÛŲ ÚŠØąÛÚē",
- "compose_form.publish": "اشاؚØĒ ÚŠØąØ¯Û",
"compose_form.publish_form": "اشاؚØĒ ÚŠØąÛÚē",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "ØĒبدÛŲÛØ§Úē Ų
ØŲŲØ¸ ÚŠØąÛÚē",
- "compose_form.sensitive.hide": "ŲØŗØ§ØĻŲ ÚŠŲ ØØŗØ§Øŗ ŲØ´Ø§ŲØ¯Û ÚŠØąÛÚē",
- "compose_form.sensitive.marked": "ŲØŗØ§ØĻŲ ØØŗØ§Øŗ ŲØ´Ø§ŲØ¯Û ÛÛ",
- "compose_form.sensitive.unmarked": "{count, plural, one {Ų
ÛÚÛØ§ ÚŠŲ ØØŗØ§Øŗ ÚŠÛ ØˇŲØą ŲžØą ŲØ´Ø§Ų Ø˛Ø¯ ŲÛÛÚē ÚŠÛØ§ Ú¯ÛØ§ ÛÛ} other {Ų
ÛÚÛØ§ ÚŠŲ ØØŗØ§Øŗ ÚŠÛ ØˇŲØą ŲžØą ŲØ´Ø§Ų Ø˛Ø¯ ŲÛÛÚē ÚŠÛØ§ Ú¯ÛØ§ ÛÛ}}",
"compose_form.spoiler.marked": "Text is hidden behind warning",
"compose_form.spoiler.unmarked": "Text is not hidden",
- "compose_form.spoiler_placeholder": "Ø§ŲžŲÛ ŲØ§ØąŲŲÚ¯ ÛÛØ§Úē ŲÚŠÚžÛÚē",
"confirmation_modal.cancel": "Ų
ŲØŗŲØŽ",
"confirmations.block.block_and_report": "Ø´ÚŠØ§ÛØĒ ÚŠØąÛÚē Ø§ŲØą Ø¨ŲØ§ÚŠ ÚŠØąÛÚē",
"confirmations.block.confirm": "Ø¨ŲØ§ÚŠ",
@@ -242,7 +231,6 @@
"navigation_bar.compose": "Compose new toot",
"navigation_bar.discover": "Ø¯ØąÛØ§ŲØĒ ÚŠØąÛÚē",
"navigation_bar.domain_blocks": "Hidden domains",
- "navigation_bar.edit_profile": "ŲžØąŲŲØ§ØĻŲ Ų
ÛÚē ØĒØąŲ
ÛŲ
ÚŠØąÛÚē",
"navigation_bar.filters": "؎اŲ
ŲØ´ ÚŠØąØ¯Û Ø§ŲŲØ§Ø¸",
"navigation_bar.follow_requests": "ŲžÛØąŲÛ ÚŠÛ Ø¯ØąØŽŲØ§ØŗØĒÛÚē",
"navigation_bar.follows_and_followers": "ŲžÛØąŲÛ ÚŠØąØ¯Û Ø§ŲØą ŲžÛØąŲÚŠØ§Øą",
@@ -281,10 +269,6 @@
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
"onboarding.steps.share_profile.title": "Share your profile",
"privacy.change": "Adjust status privacy",
- "privacy.direct.long": "Post to mentioned users only",
- "privacy.direct.short": "Direct",
- "privacy.private.long": "Post to followers only",
- "privacy.private.short": "Followers-only",
"report.placeholder": "Type or paste additional comments",
"report.submit": "Submit report",
"report.target": "Report {target}",
diff --git a/app/javascript/mastodon/locales/uz.json b/app/javascript/mastodon/locales/uz.json
index 8eeee42a5..8f231c8c7 100644
--- a/app/javascript/mastodon/locales/uz.json
+++ b/app/javascript/mastodon/locales/uz.json
@@ -75,7 +75,6 @@
"announcement.announcement": "E'lonlar",
"attachments_list.unprocessed": "(qayta ishlanmagan)",
"audio.hide": "Audioni yashirish",
- "autosuggest_hashtag.per_week": "{count} haftasiga",
"boost_modal.combo": "Keyingi safar buni oĘģtkazib yuborish uchun {combo} tugmasini bosishingiz mumkin",
"bundle_column_error.copy_stacktrace": "Xato hisobotini nusxalash",
"bundle_column_error.error.body": "SoĘģralgan sahifani koĘģrsatib boĘģlmadi. Buning sababi bizning kodimizdagi xato yoki brauzer mosligi muammosi bo'lishi mumkin.",
@@ -126,22 +125,12 @@
"compose_form.lock_disclaimer": "Hisobingiz {locked}. Faqat obunachilarga moĘģljallangan postlaringizni koĘģrish uchun har kim sizni kuzatishi mumkin.",
"compose_form.lock_disclaimer.lock": "yopilgan",
"compose_form.placeholder": "Xalolizda nima?",
- "compose_form.poll.add_option": "Tanlov qo'shing",
"compose_form.poll.duration": "Soârov muddati",
- "compose_form.poll.option_placeholder": "Tanlov {number}",
- "compose_form.poll.remove_option": "Olib tashlash",
"compose_form.poll.switch_to_multiple": "Bir nechta tanlovga ruxsat berish uchun so'rovnomani o'zgartirish",
"compose_form.poll.switch_to_single": "Yagona tanlovga ruxsat berish uchun soârovnomani oâzgartirish",
- "compose_form.publish": "Nashr qilish",
"compose_form.publish_form": "Nashr qilish",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Oâzgarishlarni saqlash",
- "compose_form.sensitive.hide": "{count, plural, one {Mediani sezgir deb belgilang} other {Medialarni sezgir deb belgilang}}",
- "compose_form.sensitive.marked": "{count, plural, one {Mediani sezgir deb belgilang} other {Medialarni sezgir deb belgilang}}",
- "compose_form.sensitive.unmarked": "{count, plural, one {Mediani sezgir deb belgilang} other {Medialarni sezgir deb belgilang}}",
"compose_form.spoiler.marked": "Kontent ogohlantirishini olib tashlang",
"compose_form.spoiler.unmarked": "Kontent haqida ogohlantirish qo'shing",
- "compose_form.spoiler_placeholder": "Sharhingizni bu erga yozing",
"confirmation_modal.cancel": "Bekor qilish",
"confirmations.block.block_and_report": "Bloklash va hisobot berish",
"confirmations.block.confirm": "Bloklash",
@@ -336,7 +325,6 @@
"navigation_bar.compose": "Yangi post yozing",
"navigation_bar.discover": "Kashf qilish",
"navigation_bar.domain_blocks": "Bloklangan domenlar",
- "navigation_bar.edit_profile": "Profilni tahrirlash",
"navigation_bar.explore": "Oârganish",
"navigation_bar.filters": "E'tiborga olinmagan so'zlar",
"navigation_bar.followed_tags": "Kuzatilgan hashtaglar",
@@ -368,8 +356,6 @@
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
"onboarding.steps.share_profile.title": "Share your profile",
"privacy.change": "Adjust status privacy",
- "privacy.direct.short": "Direct",
- "privacy.private.short": "Followers-only",
"report.placeholder": "Type or paste additional comments",
"report.submit": "Submit report",
"report.target": "Report {target}",
diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json
index 721c7cd4a..73a11b957 100644
--- a/app/javascript/mastodon/locales/vi.json
+++ b/app/javascript/mastodon/locales/vi.json
@@ -32,6 +32,7 @@
"account.featured_tags.last_status_never": "Chưa cÃŗ tÃēt",
"account.featured_tags.title": "Hashtag cáģ§a {name}",
"account.follow": "Theo dÃĩi",
+ "account.follow_back": "Theo dÃĩi láēĄi",
"account.followers": "Ngưáģi theo dÃĩi",
"account.followers.empty": "Chưa cÃŗ ngưáģi theo dÃĩi nà o.",
"account.followers_counter": "{count, plural, one {{counter} Ngưáģi theo dÃĩi} other {{counter} Ngưáģi theo dÃĩi}}",
@@ -52,6 +53,7 @@
"account.mute_notifications_short": "áē¨n thông bÃĄo",
"account.mute_short": "áē¨n",
"account.muted": "ÄÃŖ áēŠn",
+ "account.mutual": "Äang theo dÃĩi nhau",
"account.no_bio": "Chưa cÃŗ miÃĒu táēŖ.",
"account.open_original_page": "Máģ trang gáģc",
"account.posts": "TÃēt",
@@ -87,7 +89,6 @@
"announcement.announcement": "CÃŗ gÃŦ máģi?",
"attachments_list.unprocessed": "(chưa xáģ lÃ)",
"audio.hide": "áē¨n Ãĸm thanh",
- "autosuggest_hashtag.per_week": "{count} máģi tuáē§n",
"boost_modal.combo": "NháēĨn {combo} Äáģ báģ qua bưáģc nà y",
"bundle_column_error.copy_stacktrace": "Sao chÊp bÃĄo láģi",
"bundle_column_error.error.body": "Không tháģ hiáģn trang nà y. ÄÃĸy cÃŗ tháģ là máģt láģi trong mÃŖ láēp trÃŦnh cáģ§a chÃēng tôi, hoáēˇc là váēĨn Äáģ tÆ°ÆĄng thÃch cáģ§a trÃŦnh duyáģt.",
@@ -144,22 +145,12 @@
"compose_form.lock_disclaimer": "Tà i khoáēŖn cáģ§a báēĄn không {locked}. BáēĨt cáģŠ ai cÅŠng cÃŗ tháģ theo dÃĩi và xem tÃēt riÃĒng tư cáģ§a báēĄn.",
"compose_form.lock_disclaimer.lock": "khÃŗa",
"compose_form.placeholder": "BáēĄn Äang nghÄŠ gÃŦ?",
- "compose_form.poll.add_option": "ThÃĒm láģąa cháģn",
"compose_form.poll.duration": "Háēŋt háēĄn và o",
- "compose_form.poll.option_placeholder": "Láģąa cháģn {number}",
- "compose_form.poll.remove_option": "XÃŗa láģąa cháģn nà y",
"compose_form.poll.switch_to_multiple": "CÃŗ tháģ cháģn nhiáģu láģąa cháģn",
"compose_form.poll.switch_to_single": "Cháģ cho phÊp cháģn duy nháēĨt máģt láģąa cháģn",
- "compose_form.publish": "ÄÄng",
"compose_form.publish_form": "ÄÄng",
- "compose_form.publish_loud": "{publish}!",
- "compose_form.save_changes": "Lưu thay Äáģi",
- "compose_form.sensitive.hide": "{count, plural, other {ÄÃĄnh dáēĨu náģi dung nháēĄy cáēŖm}}",
- "compose_form.sensitive.marked": "{count, plural, other {Náģi dung nà y nháēĄy cáēŖm}}",
- "compose_form.sensitive.unmarked": "{count, plural, other {Náģi dung nà y bÃŦnh thưáģng}}",
"compose_form.spoiler.marked": "Háģ§y náģi dung áēŠn",
"compose_form.spoiler.unmarked": "TáēĄo náģi dung áēŠn",
- "compose_form.spoiler_placeholder": "Láģi dáēĢn cho náģi dung áēŠn",
"confirmation_modal.cancel": "Háģ§y báģ",
"confirmations.block.block_and_report": "Cháēˇn & BÃĄo cÃĄo",
"confirmations.block.confirm": "Cháēˇn",
@@ -238,7 +229,7 @@
"empty_column.follow_requests": "BáēĄn chưa cÃŗ yÃĒu cáē§u theo dÃĩi nà o.",
"empty_column.followed_tags": "BáēĄn chưa theo dÃĩi hashtag nà o. Khi báēĄn theo dÃĩi, chÃēng sáēŊ hiáģn lÃĒn áģ ÄÃĸy.",
"empty_column.hashtag": "Chưa cÃŗ tÃēt nà o dÚng hashtag nà y.",
- "empty_column.home": "Trang chÃnh cáģ§a báēĄn Äang tráģng! HÃŖy theo dÃĩi nhiáģu ngưáģi hÆĄn Äáģ láēĨp Äáē§y.",
+ "empty_column.home": "Trang cháģ§ cáģ§a báēĄn Äang tráģng! HÃŖy theo dÃĩi nhiáģu ngưáģi hÆĄn Äáģ láēĨp Äáē§y.",
"empty_column.list": "Chưa cÃŗ tÃēt. Khi nháģ¯ng ngưáģi trong danh sÃĄch nà y ÄÄng tÃēt máģi, chÃēng sáēŊ xuáēĨt hiáģn áģ ÄÃĸy.",
"empty_column.lists": "BáēĄn chưa táēĄo danh sÃĄch nà o.",
"empty_column.mutes": "BáēĄn chưa áēŠn báēĨt káģŗ ai.",
@@ -334,38 +325,38 @@
"intervals.full.days": "{number, plural, other {# ngà y}}",
"intervals.full.hours": "{number, plural, other {# giáģ}}",
"intervals.full.minutes": "{number, plural, other {# phÃēt}}",
- "keyboard_shortcuts.back": "tráģ láēĄi",
+ "keyboard_shortcuts.back": "quay láēĄi",
"keyboard_shortcuts.blocked": "máģ danh sÃĄch ngưáģi ÄÃŖ cháēˇn",
"keyboard_shortcuts.boost": "ÄÄng láēĄi",
- "keyboard_shortcuts.column": "máģ cÃĄc máģĨc",
+ "keyboard_shortcuts.column": "máģ cÃĄc cáģt",
"keyboard_shortcuts.compose": "máģ khung soáēĄn tÃēt",
"keyboard_shortcuts.description": "Mô táēŖ",
- "keyboard_shortcuts.direct": "máģ máģĨc nháē¯n riÃĒng",
+ "keyboard_shortcuts.direct": "máģ nháē¯n riÃĒng",
"keyboard_shortcuts.down": "di chuyáģn xuáģng dưáģi danh sÃĄch",
- "keyboard_shortcuts.enter": "viáēŋt tÃēt máģi",
+ "keyboard_shortcuts.enter": "máģ tÃēt",
"keyboard_shortcuts.favourite": "thÃch tÃēt",
"keyboard_shortcuts.favourites": "máģ lưáģŖt thÃch",
"keyboard_shortcuts.federated": "máģ máēĄng liÃĒn háģŖp",
"keyboard_shortcuts.heading": "Danh sÃĄch phÃm táē¯t",
- "keyboard_shortcuts.home": "máģ trang chÃnh",
+ "keyboard_shortcuts.home": "máģ trang cháģ§",
"keyboard_shortcuts.hotkey": "PhÃm táē¯t",
"keyboard_shortcuts.legend": "hiáģn báēŖng hưáģng dáēĢn nà y",
"keyboard_shortcuts.local": "máģ mÃĄy cháģ§ cáģ§a báēĄn",
"keyboard_shortcuts.mention": "nháē¯c Äáēŋn ai ÄÃŗ",
"keyboard_shortcuts.muted": "máģ danh sÃĄch ngưáģi ÄÃŖ áēŠn",
"keyboard_shortcuts.my_profile": "máģ háģ sÆĄ cáģ§a báēĄn",
- "keyboard_shortcuts.notifications": "máģ máģĨc thông bÃĄo",
+ "keyboard_shortcuts.notifications": "máģ thông bÃĄo",
"keyboard_shortcuts.open_media": "máģ áēŖnh hoáēˇc video",
- "keyboard_shortcuts.pinned": "máģ danh sÃĄch tÃēt ghim",
- "keyboard_shortcuts.profile": "máģ háģ sÆĄ cáģ§a ngưáģi viáēŋt tÃēt",
+ "keyboard_shortcuts.pinned": "Open pinned posts list",
+ "keyboard_shortcuts.profile": "máģ trang cáģ§a ngưáģi ÄÄng tÃēt",
"keyboard_shortcuts.reply": "tráēŖ láģi",
"keyboard_shortcuts.requests": "máģ danh sÃĄch yÃĒu cáē§u theo dÃĩi",
"keyboard_shortcuts.search": "máģ tÃŦm kiáēŋm",
"keyboard_shortcuts.spoilers": "hiáģn/áēŠn náģi dung nháēĄy cáēŖm",
- "keyboard_shortcuts.start": "máģ máģĨc \"Dà nh cho ngưáģi máģi\"",
- "keyboard_shortcuts.toggle_hidden": "áēŠn/hiáģn vÄn báēŖn bÃĒn dưáģi spoil",
+ "keyboard_shortcuts.start": "máģ \"Dà nh cho ngưáģi máģi\"",
+ "keyboard_shortcuts.toggle_hidden": "áēŠn/hiáģn náģi dung áēŠn",
"keyboard_shortcuts.toggle_sensitivity": "áēŠn/hiáģn áēŖnh hoáēˇc video",
- "keyboard_shortcuts.toot": "viáēŋt tÃēt máģi",
+ "keyboard_shortcuts.toot": "soáēĄn tÃēt máģi",
"keyboard_shortcuts.unfocus": "ÄÆ°a con tráģ ra kháģi ô soáēĄn tháēŖo hoáēˇc ô tÃŦm kiáēŋm",
"keyboard_shortcuts.up": "di chuyáģn lÃĒn trÃĒn danh sÃĄch",
"lightbox.close": "ÄÃŗng",
@@ -402,11 +393,10 @@
"navigation_bar.blocks": "Ngưáģi ÄÃŖ cháēˇn",
"navigation_bar.bookmarks": "ÄÃŖ lưu",
"navigation_bar.community_timeline": "Cáģng Äáģng",
- "navigation_bar.compose": "Viáēŋt tÃēt máģi",
+ "navigation_bar.compose": "SoáēĄn tÃēt máģi",
"navigation_bar.direct": "Nháē¯n riÃĒng",
"navigation_bar.discover": "KhÃĄm phÃĄ",
"navigation_bar.domain_blocks": "MÃĄy cháģ§ ÄÃŖ áēŠn",
- "navigation_bar.edit_profile": "Sáģa háģ sÆĄ",
"navigation_bar.explore": "Xu hưáģng",
"navigation_bar.favourites": "LưáģŖt thÃch",
"navigation_bar.filters": "Báģ láģc táģĢ ngáģ¯",
@@ -434,7 +424,7 @@
"notification.poll": "Cuáģc bÃŦnh cháģn ÄÃŖ káēŋt thÃēc",
"notification.reblog": "{name} ÄÄng láēĄi tÃēt cáģ§a báēĄn",
"notification.status": "{name} ÄÄng tÃēt máģi",
- "notification.update": "{name} ÄÃŖ viáēŋt láēĄi máģt tÃēt",
+ "notification.update": "{name} ÄÃŖ sáģa tÃēt",
"notifications.clear": "XÃŗa háēŋt thông bÃĄo",
"notifications.clear_confirmation": "BáēĄn tháēt sáģą muáģn xÃŗa vÄŠnh viáģ
n táēĨt cáēŖ thông bÃĄo cáģ§a mÃŦnh?",
"notifications.column_settings.admin.report": "BÃĄo cÃĄo máģi:",
@@ -475,7 +465,7 @@
"onboarding.action.back": "Quay láēĄi",
"onboarding.actions.back": "Quay láēĄi",
"onboarding.actions.go_to_explore": "Xem nháģ¯ng gÃŦ Äang tháģnh hà nh",
- "onboarding.actions.go_to_home": "Äáēŋn trang chÃnh",
+ "onboarding.actions.go_to_home": "Äáēŋn trang cháģ§",
"onboarding.compose.template": "Xin chà o #Mastodon!",
"onboarding.follows.empty": "Không cÃŗ káēŋt quáēŖ cÃŗ tháģ ÄÆ°áģŖc hiáģn tháģ lÃēc nà y. BáēĄn cÃŗ tháģ tháģ sáģ dáģĨng tÃnh nÄng tÃŦm kiáēŋm hoáēˇc duyáģt qua trang khÃĄm phÃĄ Äáģ tÃŦm nháģ¯ng ngưáģi theo dÃĩi hoáēˇc tháģ láēĄi sau.",
"onboarding.follows.lead": "BáēĄn quáēŖn lÃŊ báēŖng tin cáģ§a riÃĒng báēĄn. BáēĄn cà ng theo dÃĩi nhiáģu ngưáģi, nÃŗ sáēŊ cà ng sôi Äáģng và thÃē váģ. Äáģ báē¯t Äáē§u, ÄÃĸy là và i gáģŖi ÃŊ:",
@@ -499,7 +489,7 @@
"onboarding.start.skip": "Muáģn báģ qua luôn?",
"onboarding.start.title": "Xong ráģi báēĄn!",
"onboarding.steps.follow_people.body": "Theo dÃĩi nháģ¯ng ngưáģi thÃē váģ trÃĒn Mastodon.",
- "onboarding.steps.follow_people.title": "CÃĄ nhÃĸn hÃŗa trang chÃnh",
+ "onboarding.steps.follow_people.title": "CÃĄ nhÃĸn hÃŗa trang cháģ§",
"onboarding.steps.publish_status.body": "Chà o cáģng Äáģng báēąng láģi nÃŗi, áēŖnh hoáēˇc video {emoji}",
"onboarding.steps.publish_status.title": "ÄÄng tÃēt Äáē§u tiÃĒn",
"onboarding.steps.setup_profile.body": "TáēĄo sáģą tÆ°ÆĄng tÃĄc báēąng máģt háģ sÆĄ hoà n cháģnh.",
@@ -524,20 +514,13 @@
"poll_button.add_poll": "TáēĄo bÃŦnh cháģn",
"poll_button.remove_poll": "Háģ§y cuáģc bÃŦnh cháģn",
"privacy.change": "Cháģn kiáģu tÃēt",
- "privacy.direct.long": "Cháģ ngưáģi ÄÆ°áģŖc nháē¯c Äáēŋn máģi tháēĨy",
- "privacy.direct.short": "Nháē¯n riÃĒng",
- "privacy.private.long": "Dà nh riÃĒng cho ngưáģi theo dÃĩi",
- "privacy.private.short": "Cháģ ngưáģi theo dÃĩi",
- "privacy.public.long": "Hiáģn tháģ váģi máģi ngưáģi",
"privacy.public.short": "Công khai",
- "privacy.unlisted.long": "Công khai nhưng áēŠn trÃĒn báēŖng tin",
- "privacy.unlisted.short": "HáēĄn cháēŋ",
"privacy_policy.last_updated": "Cáēp nháēt láē§n cuáģi {date}",
"privacy_policy.title": "ChÃnh sÃĄch báēŖo máēt",
"recommended": "Äáģ xuáēĨt",
"refresh": "LÃ m máģi",
"regeneration_indicator.label": "Äang táēŖiâĻ",
- "regeneration_indicator.sublabel": "Trang chÃnh cáģ§a báēĄn Äang ÄÆ°áģŖc cáēp nháēt!",
+ "regeneration_indicator.sublabel": "Trang cháģ§ cáģ§a báēĄn Äang ÄÆ°áģŖc cáēp nháēt!",
"relative_time.days": "{number} ngà y",
"relative_time.full.days": "{number, plural, other {# ngà y}}",
"relative_time.full.hours": "{number, plural, other {# giáģ}}",
@@ -589,7 +572,7 @@
"report.thanks.title": "Không muáģn xem tháģŠ nà y?",
"report.thanks.title_actionable": "CáēŖm ÆĄn ÄÃŖ bÃĄo cÃĄo, chÃēng tôi sáēŊ xem xÊt káģš.",
"report.unfollow": "Báģ theo dÃĩi @{name}",
- "report.unfollow_explanation": "BáēĄn Äang theo dÃĩi ngưáģi nà y. Äáģ không tháēĨy tÃēt cáģ§a háģ trÃĒn trang chÃnh náģ¯a, hÃŖy báģ theo dÃĩi.",
+ "report.unfollow_explanation": "BáēĄn Äang theo dÃĩi ngưáģi nà y. Äáģ không tháēĨy tÃēt cáģ§a háģ trÃĒn trang cháģ§ náģ¯a, hÃŖy báģ theo dÃĩi.",
"report_notification.attached_statuses": "{count, plural, other {{count} tÃēt}} ÄÃnh kèm",
"report_notification.categories.legal": "PhÃĄp lÃŊ",
"report_notification.categories.other": "KhÃĄc",
@@ -690,7 +673,7 @@
"subscribed_languages.lead": "Cháģ cÃĄc tÃēt ÄÄng báēąng cÃĄc ngôn ngáģ¯ ÄÃŖ cháģn máģi ÄÆ°áģŖc xuáēĨt hiáģn trÃĒn báēŖng tin cáģ§a báēĄn. Không cháģn gÃŦ cáēŖ Äáģ Äáģc tÃēt ÄÄng báēąng máģi ngôn ngáģ¯.",
"subscribed_languages.save": "Lưu thay Äáģi",
"subscribed_languages.target": "Äáģi ngôn ngáģ¯ mong muáģn cho {target}",
- "tabs_bar.home": "Trang chÃnh",
+ "tabs_bar.home": "Trang cháģ§",
"tabs_bar.notifications": "Thông bÃĄo",
"time_remaining.days": "{number, plural, other {# ngà y}}",
"time_remaining.hours": "{number, plural, other {# giáģ}}",
@@ -713,10 +696,8 @@
"upload_error.poll": "Không cho phÊp ÄÃnh kèm táēp tin.",
"upload_form.audio_description": "Mô táēŖ cho ngưáģi máēĨt thÃnh giÃĄc",
"upload_form.description": "Mô táēŖ cho ngưáģi khiáēŋm tháģ",
- "upload_form.description_missing": "Chưa thÃĒm mô táēŖ",
"upload_form.edit": "BiÃĒn táēp",
"upload_form.thumbnail": "Äáģi áēŖnh thumbnail",
- "upload_form.undo": "XÃŗa báģ",
"upload_form.video_description": "Mô táēŖ cho ngưáģi máēĨt tháģ láģąc hoáēˇc không tháģ nghe",
"upload_modal.analyzing_picture": "PhÃĸn tÃch hÃŦnh áēŖnh",
"upload_modal.apply": "Ãp dáģĨng",
diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json
index 008a9636d..a585838cd 100644
--- a/app/javascript/mastodon/locales/zgh.json
+++ b/app/javascript/mastodon/locales/zgh.json
@@ -22,7 +22,6 @@
"account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
"account.unfollow": "â´Ŋâ´Ŋâĩ â´°â´šâ´ŧâ´ŧâĩâĩ",
"account_note.placeholder": "Click to add a note",
- "autosuggest_hashtag.per_week": "{count} âĩ âĩâĩâ´°âĩâ´°âĩâĩ",
"bundle_column_error.retry": "â´°âĩâĩ â´°âĩâĩ",
"bundle_modal_error.close": "âĩâ´ŗâĩ",
"bundle_modal_error.retry": "â´°âĩâĩ â´°âĩâĩ",
@@ -44,9 +43,7 @@
"compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.",
"compose_form.lock_disclaimer.lock": "âĩâĩâĩâĩâĩâ´ŗâĩ",
"compose_form.placeholder": "âĩâ´°âĩĸâ´ˇ âĩâĩâĩâ´°âĩ â´ŗ âĩâĩ
â´ŧ âĩâĩâ´Ŋ?",
- "compose_form.poll.option_placeholder": "â´°âĩâĩâĩâ´°âĩĸ {number}",
"compose_form.publish_form": "Publish",
- "compose_form.publish_loud": "{publish}!",
"compose_form.spoiler.marked": "Text is hidden behind warning",
"compose_form.spoiler.unmarked": "Text is not hidden",
"confirmation_modal.cancel": "âĩâĩ",
@@ -129,7 +126,6 @@
"media_gallery.toggle_visible": "â´ŧâ´ŧâĩ {number, plural, one {âĩâ´°âĩĄâĩâ´°â´ŧâĩ} other {âĩâĩâĩĄâĩâ´°â´ŧâĩâĩ}}",
"navigation_bar.compose": "Compose new toot",
"navigation_bar.domain_blocks": "Hidden domains",
- "navigation_bar.edit_profile": "âĩâĩâ´ŧâĩ âĩâ´ŧâĩâĩ",
"navigation_bar.follow_requests": "âĩâĩâĩâĩâ´°âĩĄâĩâĩ âĩ âĩâ´šâ´ŧâ´°âĩ",
"navigation_bar.lists": "âĩâĩâĩâ´ŗâ´°âĩâĩâĩ",
"navigation_bar.logout": "â´ŧâ´ŧâĩ",
@@ -161,8 +157,6 @@
"poll_button.add_poll": "âĩâĩâĩ âĩĸâ´°âĩ âĩĸâĩâ´ˇâĩŖ",
"poll_button.remove_poll": "âĩâĩâĩâĩâĩĸ âĩâ´ˇâĩŖ",
"privacy.change": "Adjust status privacy",
- "privacy.direct.short": "Direct",
- "privacy.private.short": "Followers-only",
"privacy.public.short": "âĩâ´°â´ŗâ´ˇâĩⴡⴰâĩâĩ",
"regeneration_indicator.label": "â´°âĩŖâ´ˇâ´°âĩâĻ",
"relative_time.days": "{number}â´°âĩ",
@@ -211,7 +205,6 @@
"upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Describe for the visually impaired",
"upload_form.edit": "âĩâĩâ´ŧâĩ",
- "upload_form.undo": "â´Ŋâ´Ŋâĩ",
"upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.choose_image": "â´ˇâĩâĩ âĩâ´°âĩĄâĩâ´°â´ŧâĩ",
"upload_progress.label": "UploadingâĻ",
diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json
index 575e0c7ae..9b55e51b1 100644
--- a/app/javascript/mastodon/locales/zh-CN.json
+++ b/app/javascript/mastodon/locales/zh-CN.json
@@ -53,7 +53,7 @@
"account.mute_notifications_short": "å
ŗééįĨ",
"account.mute_short": "éč",
"account.muted": "厞éč",
- "account.mutual": "äēį¸å
ŗæŗ¨",
+ "account.mutual": "äēį˛åĨŊå",
"account.no_bio": "æĒæäžæčŋ°ã",
"account.open_original_page": "æåŧåå§éĄĩéĸ",
"account.posts": "åæ",
@@ -89,7 +89,6 @@
"announcement.announcement": "å
Ŧå",
"attachments_list.unprocessed": "(æĒå¤į)",
"audio.hide": "éčéŗéĸ",
- "autosuggest_hashtag.per_week": "æ¯ææ {count} æĄ",
"boost_modal.combo": "䏿ŦĄæäŊ {combo} åŗå¯čˇŗčŋæ¤æį¤ē",
"bundle_column_error.copy_stacktrace": "å¤åļé蝝æĨå",
"bundle_column_error.error.body": "蝎æąįéĄĩéĸæ æŗæ¸˛æīŧå¯čŊæ¯äģŖį åēį°é蝝ææĩč§å¨åå¨å
ŧ厚æ§éŽéĸã",
@@ -148,20 +147,20 @@
"compose_form.placeholder": "æŗåäģäšīŧ",
"compose_form.poll.add_option": "æˇģå é饚",
"compose_form.poll.duration": "æįĨ¨æé",
+ "compose_form.poll.multiple": "å¤é",
"compose_form.poll.option_placeholder": "é饚 {number}",
- "compose_form.poll.remove_option": "į§ģ餿¤é饚",
+ "compose_form.poll.remove_option": "å 餿¤é饚",
+ "compose_form.poll.single": "åé",
"compose_form.poll.switch_to_multiple": "å°æįĨ¨æšä¸ēå¤é",
"compose_form.poll.switch_to_single": "å°æįĨ¨æšä¸ēåé",
+ "compose_form.poll.type": "æ ˇåŧ",
"compose_form.publish": "åå¸",
"compose_form.publish_form": "åå¸",
- "compose_form.publish_loud": "{publish}īŧ",
- "compose_form.save_changes": "äŋåæ´æš",
- "compose_form.sensitive.hide": "æ 莰åĒäŊä¸ēææå
厚",
- "compose_form.sensitive.marked": "åĒäŊ厞čĸĢæ 莰ä¸ēææå
厚",
- "compose_form.sensitive.unmarked": "åĒäŊæĒčĸĢæ 莰ä¸ēææå
厚",
+ "compose_form.reply": "åå¤",
+ "compose_form.save_changes": "æ´æ°",
"compose_form.spoiler.marked": "į§ģé¤å
厚čĻå",
"compose_form.spoiler.unmarked": "æˇģå å
厚čĻå",
- "compose_form.spoiler_placeholder": "åä¸äŊ įčĻå",
+ "compose_form.spoiler_placeholder": "å
厚čĻå (å¯é)",
"confirmation_modal.cancel": "åæļ",
"confirmations.block.block_and_report": "åąčŊä¸ä¸žæĨ",
"confirmations.block.confirm": "åąčŊ",
@@ -408,7 +407,6 @@
"navigation_bar.direct": "į§ä¸æå",
"navigation_bar.discover": "åį°",
"navigation_bar.domain_blocks": "厞åąčŊįåå",
- "navigation_bar.edit_profile": "äŋŽæšä¸Ēäēēčĩæ",
"navigation_bar.explore": "æĸį´ĸ",
"navigation_bar.favourites": "åæŦĸ",
"navigation_bar.filters": "åŋŊįĨįå
ŗéŽč¯",
@@ -446,7 +444,7 @@
"notifications.column_settings.filter_bar.advanced": "æžį¤ēææįąģåĢ",
"notifications.column_settings.filter_bar.category": "åŋĢéčŋæģ¤æ ",
"notifications.column_settings.filter_bar.show_bar": "æžį¤ēčŋæģ¤æ ",
- "notifications.column_settings.follow": "æ°å
ŗæŗ¨č
īŧ",
+ "notifications.column_settings.follow": "æ°į˛ä¸īŧ",
"notifications.column_settings.follow_request": "æ°å
ŗæŗ¨č¯ˇæąīŧ",
"notifications.column_settings.mention": "æåīŧ",
"notifications.column_settings.poll": "æįĨ¨įģæīŧ",
@@ -526,14 +524,15 @@
"poll_button.add_poll": "åčĩˇæįĨ¨",
"poll_button.remove_poll": "į§ģ餿įĨ¨",
"privacy.change": "莞įŊŽåæįå¯č§čå´",
- "privacy.direct.long": "åĒæčĸĢæåį፿ˇčŊįå°",
- "privacy.direct.short": "äģ
æå°įäēē",
- "privacy.private.long": "äģ
寚å
ŗæŗ¨č
å¯č§",
- "privacy.private.short": "äģ
å
ŗæŗ¨č
å¯č§",
- "privacy.public.long": "ææäēēå¯č§",
+ "privacy.direct.long": "å¸å䏿å°įæ¯ä¸Ēäēē",
+ "privacy.direct.short": "å
ˇäŊįäēē",
+ "privacy.private.long": "äģ
鿍įå
ŗæŗ¨č
",
+ "privacy.private.short": "å
ŗæŗ¨č
",
+ "privacy.public.long": "ææMastodonå
å¤įäēē",
"privacy.public.short": "å
Ŧåŧ",
- "privacy.unlisted.long": "ææäēēå¯č§īŧäŊä¸å¨æĸį´ĸåčŊåēį°",
- "privacy.unlisted.short": "ä¸å
Ŧåŧ",
+ "privacy.unlisted.additional": "č¯Ĩæ¨ĄåŧįčĄä¸ēä¸âå
ŦåŧâåŽå
¨į¸åīŧåĒæ¯å¸åä¸äŧåēį°å¨åŽæļ卿ãč¯éĸæ įžãæĸį´ĸæ Mastodon æį´ĸä¸īŧåŗäŊŋäŊ 厞å¨č´Ļæˇįē§čŽžįŊŽä¸éæŠå å
Ĩã",
+ "privacy.unlisted.long": "åå°įŽæŗåŊąå",
+ "privacy.unlisted.short": "ææå
Ŧåŧ",
"privacy_policy.last_updated": "æčŋæ´æ°äē {date}",
"privacy_policy.title": "éį§æŋį",
"recommended": "æ¨č",
@@ -551,7 +550,9 @@
"relative_time.minutes": "{number} åéå",
"relative_time.seconds": "{number} į§å",
"relative_time.today": "äģ夊",
+ "reply_indicator.attachments": "{count, plural, other {# ä¸Ēéäģļ}}",
"reply_indicator.cancel": "åæļ",
+ "reply_indicator.poll": "æįĨ¨",
"report.block": "åąčŊ",
"report.block_explanation": "äŊ å°æ æŗįå°äģäģŦįåæãäģäģŦäšå°æ æŗįå°äŊ įåææå
ŗæŗ¨äŊ ãäģäģŦå°čŊå¤å¤æåēäģäģŦčĸĢåąčŊäēã",
"report.categories.legal": "æŗåžäšåĄ",
@@ -700,7 +701,7 @@
"time_remaining.moments": "åŗå°įģæ",
"time_remaining.seconds": "åŠäŊ {number, plural, one {# į§} other {# į§}}",
"timeline_hint.remote_resource_not_displayed": "ä¸äŧæžį¤ēæĨčĒå
ļåŽæåĄå¨į{resource}",
- "timeline_hint.resources.followers": "å
ŗæŗ¨č
",
+ "timeline_hint.resources.followers": "į˛ä¸",
"timeline_hint.resources.follows": "å
ŗæŗ¨",
"timeline_hint.resources.statuses": "æ´æŠįåæ",
"trends.counter_by_accounts": "čŋåģ {days, plural, other {{days} 夊}}æ{count, plural, other { {counter} äēē}}莨čŽē",
@@ -715,10 +716,8 @@
"upload_error.poll": "æįĨ¨ä¸ä¸å
莸ä¸äŧ æäģļã",
"upload_form.audio_description": "ä¸ēåŦéäēēåŖĢæˇģå æåæčŋ°",
"upload_form.description": "ä¸ēč§č§éįĸäēēåŖĢæˇģå æå蝴æ",
- "upload_form.description_missing": "æĒæˇģå æčŋ°",
"upload_form.edit": "įŧčž",
"upload_form.thumbnail": "æ´æšįŧŠįĨåž",
- "upload_form.undo": "å é¤",
"upload_form.video_description": "ä¸ēåŦéäēēåŖĢåč§éäēēåŖĢæˇģå æåæčŋ°",
"upload_modal.analyzing_picture": "åæåžįâĻ",
"upload_modal.apply": "åēį¨",
diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json
index cd0845b6e..5890c4df4 100644
--- a/app/javascript/mastodon/locales/zh-HK.json
+++ b/app/javascript/mastodon/locales/zh-HK.json
@@ -89,7 +89,6 @@
"announcement.announcement": "å
Ŧå",
"attachments_list.unprocessed": "īŧæĒčįīŧ",
"audio.hide": "éąčéŗč¨",
- "autosuggest_hashtag.per_week": "æ¯éą {count} æŦĄ",
"boost_modal.combo": "äŊ 䏿ŦĄå¯äģĨæ {combo} äžčˇŗé",
"bundle_column_error.copy_stacktrace": "č¤čŖŊé¯čĒ¤å ąå",
"bundle_column_error.error.body": "įĄæŗæäžčĢæąįé éĸãéå¯čŊæ¯å įēäģŖįĸŧåēįžé¯čǤæįčĻŊå¨åēįžå
ŧ厚åéĄã",
@@ -146,22 +145,22 @@
"compose_form.lock_disclaimer": "äŊ į፿ļįæ
æ˛æ{locked}īŧäģģäŊäēēéŊčŊįĢåŗéæŗ¨äŊ īŧįļåžįå°ãåĒæéæŗ¨č
čŊįãįæįĢ ã",
"compose_form.lock_disclaimer.lock": "éåŽ",
"compose_form.placeholder": "äŊ 卿ŗįéēŧīŧ",
- "compose_form.poll.add_option": "æ°åĸ鏿",
+ "compose_form.poll.add_option": "æ°åĸé¸é
",
"compose_form.poll.duration": "æįĨ¨æé",
- "compose_form.poll.option_placeholder": "įŦŦ {number} å鏿",
- "compose_form.poll.remove_option": "į§ģ餿¤é¸æ",
+ "compose_form.poll.multiple": "å¤é¸",
+ "compose_form.poll.option_placeholder": "é¸é
{number}",
+ "compose_form.poll.remove_option": "į§ģ餿¤é¸é
",
+ "compose_form.poll.single": "鏿ä¸å",
"compose_form.poll.switch_to_multiple": "čŽæ´æįĨ¨įēå
訹å¤åé¸é
",
"compose_form.poll.switch_to_single": "čŽæ´æįĨ¨įēéåŽåŽä¸é¸é
",
+ "compose_form.poll.type": "éĸ¨æ ŧ",
"compose_form.publish": "įŧäŊ",
"compose_form.publish_form": "įŧäŊ",
- "compose_form.publish_loud": "{publish}īŧ",
- "compose_form.save_changes": "å˛åčŽæ´",
- "compose_form.sensitive.hide": "æ¨č¨åĒéĢįēææå
§åŽš",
- "compose_form.sensitive.marked": "åĒéĢčĸĢæ¨į¤ēįēææ",
- "compose_form.sensitive.unmarked": "åĒéĢæ˛æčĸĢæ¨į¤ēįēææ",
+ "compose_form.reply": "åčĻ",
+ "compose_form.save_changes": "æ´æ°",
"compose_form.spoiler.marked": "æåčĸĢčĻåéąč",
"compose_form.spoiler.unmarked": "æåæ˛æčĸĢéąč",
- "compose_form.spoiler_placeholder": "ææčĻå荿¯",
+ "compose_form.spoiler_placeholder": "å
§åŽščĻå (é¸į¨)",
"confirmation_modal.cancel": "åæļ",
"confirmations.block.block_and_report": "å°éä¸ĻæĒĸč",
"confirmations.block.confirm": "å°é",
@@ -408,7 +407,6 @@
"navigation_bar.direct": "į§äēēæå",
"navigation_bar.discover": "æĸį´ĸ",
"navigation_bar.domain_blocks": "å°éįæåįĢ",
- "navigation_bar.edit_profile": "äŋŽæšåäēēčŗæ",
"navigation_bar.explore": "æĸį´ĸ",
"navigation_bar.favourites": "ææ",
"navigation_bar.filters": "ééŗčŠåŊ",
@@ -526,14 +524,15 @@
"poll_button.add_poll": "åģēįĢæįĨ¨",
"poll_button.remove_poll": "į§ģ餿įĨ¨",
"privacy.change": "čĒŋæ´į§éąč¨åŽ",
- "privacy.direct.long": "åĒææåįäŊŋį¨č
čŊįå°",
- "privacy.direct.short": "å
éæåįäēē",
- "privacy.private.long": "åĒæäŊ įéæŗ¨č
čŊįå°",
- "privacy.private.short": "å
éčŋŊé¨č
",
- "privacy.public.long": "å°ææäēēå¯čĻ",
+ "privacy.direct.long": "叿æåįäēē",
+ "privacy.direct.short": "įšåŽįäēē",
+ "privacy.private.long": "åĒæäŊ įčŋŊ蚤č
",
+ "privacy.private.short": "čŋŊ蚤č
",
+ "privacy.public.long": "Mastodon å
§å¤įäģģäŊäēē",
"privacy.public.short": "å
Ŧå
ą",
- "privacy.unlisted.long": "å°ææäēēå¯čĻīŧäŊä¸å
æŦæĸį´ĸåčŊ",
- "privacy.unlisted.short": "å
Ŧé",
+ "privacy.unlisted.additional": "éčå
ŦéåŽå
¨į¸åīŧäŊæ¯äŊ įå¸æä¸æéĄ¯į¤ēå¨åŗæåæ
ãæ¨įą¤ãæĸį´ĸå Mastodon įæå°įĩæä¸īŧåŗäŊŋäŊ į叺æļåį¨äēį¸éč¨åŽäšåĨŊã",
+ "privacy.unlisted.long": "čŧå°į¨æŧįŽæŗåŽŖåŗ",
+ "privacy.unlisted.short": "åå
Ŧé",
"privacy_policy.last_updated": "æåžæ´æ° {date}",
"privacy_policy.title": "į§éąæŋį",
"recommended": "æ¨čĻ",
@@ -551,7 +550,9 @@
"relative_time.minutes": "{number}åéå",
"relative_time.seconds": "{number}į§å",
"relative_time.today": "äģ夊",
+ "reply_indicator.attachments": "{count, plural, one {# éäģļ} other {# éäģļ}}",
"reply_indicator.cancel": "åæļ",
+ "reply_indicator.poll": "æįĨ¨",
"report.block": "å°é",
"report.block_explanation": "äŊ å°ä¸æįå°äģåį叿ãäģåå°įĄæŗįå°äŊ į叿æčŋŊé¨äŊ ãäģåå°įŧįžčĒåˇąčĸĢå°éäēã",
"report.categories.legal": "æŗåž",
@@ -715,10 +716,8 @@
"upload_error.poll": "ä¸å
č¨ąå¨æįĨ¨ä¸åŗæĒæĄã",
"upload_form.audio_description": "į°ĄåŽæčŋ°å
§åŽšįĩĻčŊéäēēåŖĢ",
"upload_form.description": "įēčĻčĻēéį¤äēēåŖĢæˇģå æåčĒĒæ",
- "upload_form.description_missing": "æ˛æå å
Ĩæčŋ°",
"upload_form.edit": "ᎍčŧ¯",
"upload_form.thumbnail": "æ´æšé čĻŊå",
- "upload_form.undo": "åĒé¤",
"upload_form.video_description": "į°ĄåŽæčŋ°įĩĻčŊéæčĻéäēēåŖĢ",
"upload_modal.analyzing_picture": "æŖå¨åæåįâĻ",
"upload_modal.apply": "åĨį¨",
diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json
index 998393695..c365e67e0 100644
--- a/app/javascript/mastodon/locales/zh-TW.json
+++ b/app/javascript/mastodon/locales/zh-TW.json
@@ -48,7 +48,7 @@
"account.locked_info": "æ¤å¸ŗčįéąį§įæ
č¨åŽįēéåŽã芲ææč
ææåå¯Šæ ¸čŊčˇé¨æ¤å¸ŗčįäēēã",
"account.media": "åĒéĢ",
"account.mention": "æå @{name}",
- "account.moved_to": "{name} įžå¨įæ°å¸ŗčįēīŧ",
+ "account.moved_to": "{name} įŽå῰叺čįēīŧ",
"account.mute": "ééŗ @{name}",
"account.mute_notifications_short": "ééŗæ¨æéįĨ",
"account.mute_short": "ééŗ",
@@ -59,7 +59,7 @@
"account.posts": "åæ",
"account.posts_with_replies": "åæčåčĻ",
"account.report": "æĒĸč @{name}",
- "account.requested": "æŖå¨įåž
æ ¸åãæä¸ä¸äģĨåæļčˇé¨čĢæą",
+ "account.requested": "æŖå¨įåå¯Šæ ¸ãæä¸ä¸äģĨåæļčˇé¨čĢæą",
"account.requested_follow": "{name} čĻæąčˇé¨æ¨",
"account.share": "åäēĢ @{name} įåäēēæĒæĄ",
"account.show_reblogs": "éĄ¯į¤ēäžčĒ @{name} įåæ",
@@ -84,12 +84,11 @@
"admin.impact_report.title": "åŊąéŋį¸Ŋįĩ",
"alert.rate_limited.message": "čĢæŧ {retry_time, time, medium} åžéčŠĻã",
"alert.rate_limited.title": "厞éé",
- "alert.unexpected.message": "įŧįäēéé æįé¯čǤã",
+ "alert.unexpected.message": "įŧįéé æįé¯čǤã",
"alert.unexpected.title": "ååīŧ",
"announcement.announcement": "å
Ŧå",
"attachments_list.unprocessed": "īŧæĒįļčįīŧ",
"audio.hide": "éąčéŗč¨",
- "autosuggest_hashtag.per_week": "{count} / éą",
"boost_modal.combo": "䏿ŦĄæ¨å¯äģĨæ {combo} 莺é",
"bundle_column_error.copy_stacktrace": "č¤čŖŊé¯čĒ¤å ąå",
"bundle_column_error.error.body": "įĄæŗįšĒčŖŊčĢæąįé éĸãéå¯čŊæ¯å įēæåį¨åŧįĸŧä¸įč螿æ¯įčĻŊå¨įį¸åŽšåéĄã",
@@ -148,20 +147,20 @@
"compose_form.placeholder": "æŖå¨æŗäēäģéēŧåīŧ",
"compose_form.poll.add_option": "æ°åĸé¸é
",
"compose_form.poll.duration": "æįĨ¨æé",
- "compose_form.poll.option_placeholder": "įŦŦ {number} åé¸é
",
+ "compose_form.poll.multiple": "å¤é¸",
+ "compose_form.poll.option_placeholder": "é¸é
{number}",
"compose_form.poll.remove_option": "į§ģ餿¤é¸é
",
+ "compose_form.poll.single": "鏿ä¸å",
"compose_form.poll.switch_to_multiple": "čŽæ´æįĨ¨įēå
訹å¤åé¸é
",
"compose_form.poll.switch_to_single": "čŽæ´æįĨ¨įēå
訹åŽä¸é¸é
",
- "compose_form.publish": "ååēåģ",
+ "compose_form.poll.type": "æįĨ¨æšåŧ",
+ "compose_form.publish": "įŧå",
"compose_form.publish_form": "ååēåģ",
- "compose_form.publish_loud": "{publish}īŧ",
- "compose_form.save_changes": "å˛åčŽæ´",
- "compose_form.sensitive.hide": "{count, plural, other {å°åĒéĢæ¨č¨įēææå
§åŽš}}",
- "compose_form.sensitive.marked": "æ¤åĒéĢčĸĢæ¨č¨įēææå
§åŽš",
- "compose_form.sensitive.unmarked": "æ¤åĒéĢæĒčĸĢæ¨č¨įēææå
§åŽš",
+ "compose_form.reply": "åčĻ",
+ "compose_form.save_changes": "æ´æ°",
"compose_form.spoiler.marked": "į§ģé¤å
§åŽščĻå",
"compose_form.spoiler.unmarked": "æ°åĸå
§åŽščĻå",
- "compose_form.spoiler_placeholder": "čĢæŧæ¤čåĄĢå¯Ģå
§åŽščĻå荿¯",
+ "compose_form.spoiler_placeholder": "å
§åŽščĻå (å¯é¸į)",
"confirmation_modal.cancel": "åæļ",
"confirmations.block.block_and_report": "å°éä¸ĻæĒĸč",
"confirmations.block.confirm": "å°é",
@@ -241,7 +240,7 @@
"empty_column.followed_tags": "æ¨éæ˛æčˇé¨äģģäŊä¸ģéĄæ¨įą¤ãįᅪčˇé¨ä¸ģéĄæ¨įिīŧåŽåå°æŧæ¤éĄ¯į¤ēã",
"empty_column.hashtag": "éåä¸ģéĄæ¨įą¤ä¸äģéēŧäšæ˛æã",
"empty_column.home": "æ¨įéĻé æéč쏿¯įŠēįīŧčˇé¨æ´å¤äēēäžå°åŽåĄĢæģŋå§īŧ",
- "empty_column.list": "éäģŊå襨ä¸äģéēŧäšæ˛æãį¦å襨įæåĄååēäēæ°įåææīŧåŽåå°éĄ¯į¤ēæŧæ¤ã",
+ "empty_column.list": "éäģŊå襨ä¸äģéēŧäšæ˛æãį¦å襨įæåĄååēæ°įåææīŧåŽåå°éĄ¯į¤ēæŧæ¤ã",
"empty_column.lists": "æ¨éæ˛æåģēįĢäģģäŊå襨ãįᅪåģēįĢå襨æīŧåŽå°æŧæ¤éĄ¯į¤ēã",
"empty_column.mutes": "æ¨å°æĒééŗäģģäŊäŊŋį¨č
ã",
"empty_column.notifications": "æ¨éæ˛ææļå°äģģäŊéįĨīŧįᅪčåĨäēēéå§äēåæīŧåŽå°æŧæ¤éĄ¯į¤ēã",
@@ -303,8 +302,8 @@
"hashtag.counter_by_accounts": "{count, plural, one {{counter} å} other {{counter} å}}åčč
",
"hashtag.counter_by_uses": "{count, plural, one {{counter} å} other {{counter} å}}åæ",
"hashtag.counter_by_uses_today": "æŦæĨæ {count, plural, one {{counter} å} other {{counter} å}}åæ",
- "hashtag.follow": "čŋŊ蚤ä¸ģéĄæ¨įą¤",
- "hashtag.unfollow": "åæļčŋŊ蚤ä¸ģéĄæ¨įą¤",
+ "hashtag.follow": "čˇé¨ä¸ģéĄæ¨įą¤",
+ "hashtag.unfollow": "åæļčˇé¨ä¸ģéĄæ¨įą¤",
"hashtags.and_other": "âĻåå
ļäģ {count, plural, other {# å}}",
"home.actions.go_to_explore": "įįįŧįäģéēŧæ°éŽŽäē",
"home.actions.go_to_suggestions": "å°æžä¸äēäēēäžčˇé¨",
@@ -408,7 +407,6 @@
"navigation_bar.direct": "į§č¨",
"navigation_bar.discover": "æĸį´ĸ",
"navigation_bar.domain_blocks": "厞å°éįļ˛å",
- "navigation_bar.edit_profile": "ᎍčŧ¯åäēēæĒæĄ",
"navigation_bar.explore": "æĸį´ĸ",
"navigation_bar.favourites": "ææ",
"navigation_bar.filters": "厞ééŗįééĩå",
@@ -526,13 +524,14 @@
"poll_button.add_poll": "åģēįĢæįĨ¨",
"poll_button.remove_poll": "į§ģ餿įĨ¨",
"privacy.change": "čĒŋæ´åæéąį§įæ
",
- "privacy.direct.long": "åĒæčĸĢæåįäŊŋį¨č
čŊįå°",
- "privacy.direct.short": "å
éæåč
",
- "privacy.private.long": "åĒæčˇé¨æ¨įäŊŋį¨č
čŊįå°",
- "privacy.private.short": "å
éčˇé¨č
",
- "privacy.public.long": "å°ææäēēå¯čĻ",
+ "privacy.direct.long": "æ¤åææåäšææäēē",
+ "privacy.direct.short": "æåŽäŊŋį¨č
",
+ "privacy.private.long": "åĒæčˇé¨æ¨įäēēčŊįå°",
+ "privacy.private.short": "čˇé¨č
",
+ "privacy.public.long": "ææäēē (įĄčĢå¨ Mastodon ä¸čåĻ)",
"privacy.public.short": "å
Ŧé",
- "privacy.unlisted.long": "å°ææäēēå¯čĻīŧäŊ鏿éåēæĸį´ĸåčŊ",
+ "privacy.unlisted.additional": "æ¤čå
ŦéåæåŽå
¨į¸åīŧäŊåæä¸æåēįžæŧåŗæå
§åŽšæä¸ģéĄæ¨įą¤ãæĸį´ĸãå Mastodon æå°ä¸īŧåŗäŊŋæ¨å¨å¸ŗæļč¨åŽä¸é¸æå å
Ĩã",
+ "privacy.unlisted.long": "æįļįĄč˛",
"privacy.unlisted.short": "ä¸å
Ŧé",
"privacy_policy.last_updated": "æåžæ´æ°īŧ{date}",
"privacy_policy.title": "éąį§æŦæŋį",
@@ -551,7 +550,9 @@
"relative_time.minutes": "{number} åéå",
"relative_time.seconds": "{number} į§",
"relative_time.today": "äģ夊",
+ "reply_indicator.attachments": "{count, plural, other {# åéå æĒæĄ}}",
"reply_indicator.cancel": "åæļ",
+ "reply_indicator.poll": "æįĨ¨",
"report.block": "å°é",
"report.block_explanation": "æ¨å°ä¸åįå°äģåįåæãäģåå°įĄæŗįå°æ¨įåæææ¯čˇé¨æ¨ãäģåæįŧįžäģå厞čĸĢå°éã",
"report.categories.legal": "åæŗæ§",
@@ -715,10 +716,8 @@
"upload_error.poll": "ä¸å
訹æŧæįĨ¨æä¸åŗæĒæĄã",
"upload_form.audio_description": "įēčŊéäēēåŖĢåĸå æåčĒĒæ",
"upload_form.description": "įēčĻéäēēåŖĢåĸå æåčĒĒæ",
- "upload_form.description_missing": "æ˛æäģģäŊæčŋ°",
"upload_form.edit": "ᎍčŧ¯",
"upload_form.thumbnail": "æ´æšé čĻŊå",
- "upload_form.undo": "åĒé¤",
"upload_form.video_description": "įēčŊéæčĻéäēēåŖĢåĸå æåčĒĒæ",
"upload_modal.analyzing_picture": "æŖå¨åæåįâĻ",
"upload_modal.apply": "åĨį¨",
diff --git a/app/javascript/mastodon/reducers/accounts.ts b/app/javascript/mastodon/reducers/accounts.ts
index f7270eb60..5a9cc7220 100644
--- a/app/javascript/mastodon/reducers/accounts.ts
+++ b/app/javascript/mastodon/reducers/accounts.ts
@@ -1,7 +1,6 @@
+import type { Reducer } from '@reduxjs/toolkit';
import { Map as ImmutableMap } from 'immutable';
-import type { Reducer } from 'redux';
-
import {
followAccountSuccess,
unfollowAccountSuccess,
@@ -60,25 +59,19 @@ export const accountsReducer: Reducer
= (
return normalizeAccounts(state, action.payload.accounts);
else if (followAccountSuccess.match(action)) {
return state
- .update(
- action.payload.relationship.id,
- (account) => account?.update('followers_count', (n) => n + 1),
+ .update(action.payload.relationship.id, (account) =>
+ account?.update('followers_count', (n) => n + 1),
)
- .update(
- getCurrentUser(),
- (account) => account?.update('following_count', (n) => n + 1),
+ .update(getCurrentUser(), (account) =>
+ account?.update('following_count', (n) => n + 1),
);
} else if (unfollowAccountSuccess.match(action))
return state
- .update(
- action.payload.relationship.id,
- (account) =>
- account?.update('followers_count', (n) => Math.max(0, n - 1)),
+ .update(action.payload.relationship.id, (account) =>
+ account?.update('followers_count', (n) => Math.max(0, n - 1)),
)
- .update(
- getCurrentUser(),
- (account) =>
- account?.update('following_count', (n) => Math.max(0, n - 1)),
+ .update(getCurrentUser(), (account) =>
+ account?.update('following_count', (n) => Math.max(0, n - 1)),
);
else return state;
};
diff --git a/app/javascript/mastodon/reducers/accounts_map.js b/app/javascript/mastodon/reducers/accounts_map.js
index d5ecad7db..9053dcc9c 100644
--- a/app/javascript/mastodon/reducers/accounts_map.js
+++ b/app/javascript/mastodon/reducers/accounts_map.js
@@ -2,8 +2,13 @@ import { Map as ImmutableMap } from 'immutable';
import { ACCOUNT_LOOKUP_FAIL } from '../actions/accounts';
import { importAccounts } from '../actions/accounts_typed';
+import { domain } from '../initial_state';
-export const normalizeForLookup = str => str.toLowerCase();
+export const normalizeForLookup = str => {
+ str = str.toLowerCase();
+ const trailingIndex = str.indexOf(`@${domain.toLowerCase()}`);
+ return (trailingIndex > 0) ? str.slice(0, trailingIndex) : str;
+};
const initialState = ImmutableMap();
diff --git a/app/javascript/mastodon/reducers/compose.js b/app/javascript/mastodon/reducers/compose.js
index 6b8df0fc0..7540bf81a 100644
--- a/app/javascript/mastodon/reducers/compose.js
+++ b/app/javascript/mastodon/reducers/compose.js
@@ -7,7 +7,6 @@ import {
COMPOSE_REPLY,
COMPOSE_REPLY_CANCEL,
COMPOSE_QUOTE,
- COMPOSE_QUOTE_CANCEL,
COMPOSE_DIRECT,
COMPOSE_MENTION,
COMPOSE_SUBMIT_REQUEST,
@@ -42,9 +41,7 @@ import {
COMPOSE_RESET,
COMPOSE_POLL_ADD,
COMPOSE_POLL_REMOVE,
- COMPOSE_POLL_OPTION_ADD,
COMPOSE_POLL_OPTION_CHANGE,
- COMPOSE_POLL_OPTION_REMOVE,
COMPOSE_POLL_SETTINGS_CHANGE,
INIT_MEDIA_EDIT_MODAL,
COMPOSE_CHANGE_MEDIA_DESCRIPTION,
@@ -299,6 +296,18 @@ const updateSuggestionTags = (state, token) => {
});
};
+const updatePoll = (state, index, value) => state.updateIn(['poll', 'options'], options => {
+ const tmp = options.set(index, value).filterNot(x => x.trim().length === 0);
+
+ if (tmp.size === 0) {
+ return tmp.push('').push('');
+ } else if (tmp.size < 4) {
+ return tmp.push('');
+ }
+
+ return tmp;
+});
+
export default function compose(state = initialState, action) {
switch(action.type) {
case STORE_HYDRATE:
@@ -387,7 +396,6 @@ export default function compose(state = initialState, action) {
case COMPOSE_UPLOAD_CHANGE_REQUEST:
return state.set('is_changing_upload', true);
case COMPOSE_REPLY_CANCEL:
- case COMPOSE_QUOTE_CANCEL:
case COMPOSE_RESET:
case COMPOSE_SUBMIT_SUCCESS:
return clearAll(state);
@@ -520,6 +528,8 @@ export default function compose(state = initialState, action) {
map.set('id', action.status.get('id'));
map.set('text', action.text);
map.set('in_reply_to', action.status.get('in_reply_to_id'));
+ map.set('quote_from', action.status.getIn(['quote', 'id']));
+ map.set('quote_from_url', action.status.getIn(['quote', 'url']));
map.set('privacy', action.status.get('visibility'));
map.set('media_attachments', action.status.get('media_attachments'));
map.set('focusDate', new Date());
@@ -548,12 +558,8 @@ export default function compose(state = initialState, action) {
return state.set('poll', initialPoll);
case COMPOSE_POLL_REMOVE:
return state.set('poll', null);
- case COMPOSE_POLL_OPTION_ADD:
- return state.updateIn(['poll', 'options'], options => options.push(action.title));
case COMPOSE_POLL_OPTION_CHANGE:
- return state.setIn(['poll', 'options', action.index], action.title);
- case COMPOSE_POLL_OPTION_REMOVE:
- return state.updateIn(['poll', 'options'], options => options.delete(action.index));
+ return updatePoll(state, action.index, action.title);
case COMPOSE_POLL_SETTINGS_CHANGE:
return state.update('poll', poll => poll.set('expires_in', action.expiresIn).set('multiple', action.isMultiple));
case COMPOSE_LANGUAGE_CHANGE:
diff --git a/app/javascript/mastodon/reducers/modal.ts b/app/javascript/mastodon/reducers/modal.ts
index 73a2afb91..368f26542 100644
--- a/app/javascript/mastodon/reducers/modal.ts
+++ b/app/javascript/mastodon/reducers/modal.ts
@@ -1,6 +1,5 @@
-import { Record as ImmutableRecord, Stack } from 'immutable';
-
import type { Reducer } from '@reduxjs/toolkit';
+import { Record as ImmutableRecord, Stack } from 'immutable';
import { COMPOSE_UPLOAD_CHANGE_SUCCESS } from '../actions/compose';
import type { ModalType } from '../actions/modal';
diff --git a/app/javascript/mastodon/reducers/relationships.ts b/app/javascript/mastodon/reducers/relationships.ts
index 2ba61839c..dcca11b20 100644
--- a/app/javascript/mastodon/reducers/relationships.ts
+++ b/app/javascript/mastodon/reducers/relationships.ts
@@ -1,7 +1,6 @@
-import { Map as ImmutableMap } from 'immutable';
-
import { isFulfilled } from '@reduxjs/toolkit';
-import type { Reducer } from 'redux';
+import type { Reducer } from '@reduxjs/toolkit';
+import { Map as ImmutableMap } from 'immutable';
import type { ApiRelationshipJSON } from 'mastodon/api_types/relationships';
import type { Account } from 'mastodon/models/account';
diff --git a/app/javascript/mastodon/reducers/settings.js b/app/javascript/mastodon/reducers/settings.js
index a605ecbb8..0e353e0d1 100644
--- a/app/javascript/mastodon/reducers/settings.js
+++ b/app/javascript/mastodon/reducers/settings.js
@@ -104,7 +104,7 @@ const initialState = ImmutableMap({
dismissed_banners: ImmutableMap({
'public_timeline': false,
'community_timeline': false,
- 'home.explore_prompt': false,
+ 'home/follow-suggestions': false,
'explore/links': false,
'explore/statuses': false,
'explore/tags': false,
diff --git a/app/javascript/mastodon/reducers/suggestions.js b/app/javascript/mastodon/reducers/suggestions.js
index 0f224ff4b..5b9d983de 100644
--- a/app/javascript/mastodon/reducers/suggestions.js
+++ b/app/javascript/mastodon/reducers/suggestions.js
@@ -28,12 +28,12 @@ export default function suggestionsReducer(state = initialState, action) {
case SUGGESTIONS_FETCH_FAIL:
return state.set('isLoading', false);
case SUGGESTIONS_DISMISS:
- return state.update('items', list => list.filterNot(x => x.account === action.id));
+ return state.update('items', list => list.filterNot(x => x.get('account') === action.id));
case blockAccountSuccess.type:
case muteAccountSuccess.type:
- return state.update('items', list => list.filterNot(x => x.account === action.payload.relationship.id));
+ return state.update('items', list => list.filterNot(x => x.get('account') === action.payload.relationship.id));
case blockDomainSuccess.type:
- return state.update('items', list => list.filterNot(x => action.payload.accounts.includes(x.account)));
+ return state.update('items', list => list.filterNot(x => action.payload.accounts.includes(x.get('account'))));
default:
return state;
}
diff --git a/app/javascript/mastodon/reducers/timelines.js b/app/javascript/mastodon/reducers/timelines.js
index 43dedd6e6..4c9ab98a8 100644
--- a/app/javascript/mastodon/reducers/timelines.js
+++ b/app/javascript/mastodon/reducers/timelines.js
@@ -17,6 +17,9 @@ import {
TIMELINE_DISCONNECT,
TIMELINE_LOAD_PENDING,
TIMELINE_MARK_AS_PARTIAL,
+ TIMELINE_INSERT,
+ TIMELINE_GAP,
+ TIMELINE_SUGGESTIONS,
} from '../actions/timelines';
import { compareId } from '../compare_id';
@@ -32,6 +35,8 @@ const initialTimeline = ImmutableMap({
items: ImmutableList(),
});
+const isPlaceholder = value => value === TIMELINE_GAP || value === TIMELINE_SUGGESTIONS;
+
const expandNormalizedTimeline = (state, timeline, statuses, next, isPartial, isLoadingRecent, usePendingItems) => {
// This method is pretty tricky because:
// - existing items in the timeline might be out of order
@@ -63,20 +68,20 @@ const expandNormalizedTimeline = (state, timeline, statuses, next, isPartial, is
// First, find the furthest (if properly sorted, oldest) item in the timeline that is
// newer than the oldest fetched one, as it's most likely that it delimits the gap.
// Start the gap *after* that item.
- const lastIndex = oldIds.findLastIndex(id => id !== null && compareId(id, newIds.last()) >= 0) + 1;
+ const lastIndex = oldIds.findLastIndex(id => !isPlaceholder(id) && compareId(id, newIds.last()) >= 0) + 1;
// Then, try to find the furthest (if properly sorted, oldest) item in the timeline that
// is newer than the most recent fetched one, as it delimits a section comprised of only
// items older or within `newIds` (or that were deleted from the server, so should be removed
// anyway).
// Stop the gap *after* that item.
- const firstIndex = oldIds.take(lastIndex).findLastIndex(id => id !== null && compareId(id, newIds.first()) > 0) + 1;
+ const firstIndex = oldIds.take(lastIndex).findLastIndex(id => !isPlaceholder(id) && compareId(id, newIds.first()) > 0) + 1;
let insertedIds = ImmutableOrderedSet(newIds).withMutations(insertedIds => {
// It is possible, though unlikely, that the slice we are replacing contains items older
// than the elements we got from the API. Get them and add them back at the back of the
// slice.
- const olderIds = oldIds.slice(firstIndex, lastIndex).filter(id => id !== null && compareId(id, newIds.last()) < 0);
+ const olderIds = oldIds.slice(firstIndex, lastIndex).filter(id => !isPlaceholder(id) && compareId(id, newIds.last()) < 0);
insertedIds.union(olderIds);
// Make sure we aren't inserting duplicates
@@ -84,8 +89,8 @@ const expandNormalizedTimeline = (state, timeline, statuses, next, isPartial, is
}).toList();
// Finally, insert a gap marker if the data is marked as partial by the server
- if (isPartial && (firstIndex === 0 || oldIds.get(firstIndex - 1) !== null)) {
- insertedIds = insertedIds.unshift(null);
+ if (isPartial && (firstIndex === 0 || oldIds.get(firstIndex - 1) !== TIMELINE_GAP)) {
+ insertedIds = insertedIds.unshift(TIMELINE_GAP);
}
return oldIds.take(firstIndex).concat(
@@ -178,7 +183,7 @@ const reconnectTimeline = (state, usePendingItems) => {
}
return state.withMutations(mMap => {
- mMap.update(usePendingItems ? 'pendingItems' : 'items', items => items.first() ? items.unshift(null) : items);
+ mMap.update(usePendingItems ? 'pendingItems' : 'items', items => items.first() ? items.unshift(TIMELINE_GAP) : items);
mMap.set('online', true);
});
};
@@ -213,7 +218,7 @@ export default function timelines(state = initialState, action) {
return state.update(
action.timeline,
initialTimeline,
- map => map.set('online', false).update(action.usePendingItems ? 'pendingItems' : 'items', items => items.first() ? items.unshift(null) : items),
+ map => map.set('online', false).update(action.usePendingItems ? 'pendingItems' : 'items', items => items.first() ? items.unshift(TIMELINE_GAP) : items),
);
case TIMELINE_MARK_AS_PARTIAL:
return state.update(
@@ -221,6 +226,18 @@ export default function timelines(state = initialState, action) {
initialTimeline,
map => map.set('isPartial', true).set('items', ImmutableList()).set('pendingItems', ImmutableList()).set('unread', 0),
);
+ case TIMELINE_INSERT:
+ return state.update(
+ action.timeline,
+ initialTimeline,
+ map => map.update('items', ImmutableList(), list => {
+ if (!list.includes(action.key)) {
+ return list.insert(action.index, action.key);
+ }
+
+ return list;
+ })
+ );
default:
return state;
}
diff --git a/app/javascript/mastodon/selectors/accounts.ts b/app/javascript/mastodon/selectors/accounts.ts
index 66193136c..cee3a87bc 100644
--- a/app/javascript/mastodon/selectors/accounts.ts
+++ b/app/javascript/mastodon/selectors/accounts.ts
@@ -1,5 +1,5 @@
+import { createSelector } from '@reduxjs/toolkit';
import { Record as ImmutableRecord } from 'immutable';
-import { createSelector } from 'reselect';
import { accountDefaultValues } from 'mastodon/models/account';
import type { Account, AccountShape } from 'mastodon/models/account';
diff --git a/app/javascript/mastodon/selectors/index.js b/app/javascript/mastodon/selectors/index.js
index f9a7810e9..431585477 100644
--- a/app/javascript/mastodon/selectors/index.js
+++ b/app/javascript/mastodon/selectors/index.js
@@ -1,5 +1,5 @@
+import { createSelector } from '@reduxjs/toolkit';
import { List as ImmutableList, Map as ImmutableMap } from 'immutable';
-import { createSelector } from 'reselect';
import { toServerSideType } from 'mastodon/utils/filters';
diff --git a/app/javascript/mastodon/store/middlewares/errors.ts b/app/javascript/mastodon/store/middlewares/errors.ts
index 9f28f5ff5..e11aa7817 100644
--- a/app/javascript/mastodon/store/middlewares/errors.ts
+++ b/app/javascript/mastodon/store/middlewares/errors.ts
@@ -1,20 +1,34 @@
-import type { AnyAction, Middleware } from 'redux';
+import { isAction } from '@reduxjs/toolkit';
+import type { Action, Middleware } from '@reduxjs/toolkit';
import type { RootState } from '..';
import { showAlertForError } from '../../actions/alerts';
const defaultFailSuffix = 'FAIL';
+const isFailedAction = new RegExp(`${defaultFailSuffix}$`, 'g');
-export const errorsMiddleware: Middleware =
+interface ActionWithMaybeAlertParams extends Action {
+ skipAlert?: boolean;
+ skipNotFound?: boolean;
+ error?: unknown;
+}
+
+function isActionWithmaybeAlertParams(
+ action: unknown,
+): action is ActionWithMaybeAlertParams {
+ return isAction(action);
+}
+
+export const errorsMiddleware: Middleware, RootState> =
({ dispatch }) =>
(next) =>
- (action: AnyAction & { skipAlert?: boolean; skipNotFound?: boolean }) => {
- if (action.type && !action.skipAlert) {
- const isFail = new RegExp(`${defaultFailSuffix}$`, 'g');
-
- if (typeof action.type === 'string' && action.type.match(isFail)) {
- dispatch(showAlertForError(action.error, action.skipNotFound));
- }
+ (action) => {
+ if (
+ isActionWithmaybeAlertParams(action) &&
+ !action.skipAlert &&
+ action.type.match(isFailedAction)
+ ) {
+ dispatch(showAlertForError(action.error, action.skipNotFound));
}
return next(action);
diff --git a/app/javascript/mastodon/store/middlewares/loading_bar.ts b/app/javascript/mastodon/store/middlewares/loading_bar.ts
index 83056ee49..d259be899 100644
--- a/app/javascript/mastodon/store/middlewares/loading_bar.ts
+++ b/app/javascript/mastodon/store/middlewares/loading_bar.ts
@@ -3,9 +3,11 @@ import {
isPending as isThunkActionPending,
isFulfilled as isThunkActionFulfilled,
isRejected as isThunkActionRejected,
+ isAction,
} from '@reduxjs/toolkit';
+import type { Middleware, UnknownAction } from '@reduxjs/toolkit';
+
import { showLoading, hideLoading } from 'react-redux-loading-bar';
-import type { AnyAction, Middleware } from 'redux';
import type { RootState } from '..';
@@ -19,14 +21,28 @@ const defaultTypeSuffixes: Config['promiseTypeSuffixes'] = [
'REJECTED',
];
+interface ActionWithSkipLoading extends UnknownAction {
+ skipLoading: boolean;
+}
+
+function isActionWithSkipLoading(
+ action: unknown,
+): action is ActionWithSkipLoading {
+ return (
+ isAction(action) &&
+ 'skipLoading' in action &&
+ typeof action.skipLoading === 'boolean'
+ );
+}
+
export const loadingBarMiddleware = (
config: Config = {},
-): Middleware => {
+): Middleware<{ skipLoading?: boolean }, RootState> => {
const promiseTypeSuffixes = config.promiseTypeSuffixes ?? defaultTypeSuffixes;
return ({ dispatch }) =>
(next) =>
- (action: AnyAction) => {
+ (action) => {
let isPending = false;
let isFulfilled = false;
let isRejected = false;
@@ -39,7 +55,7 @@ export const loadingBarMiddleware = (
else if (isThunkActionFulfilled(action)) isFulfilled = true;
else if (isThunkActionRejected(action)) isRejected = true;
} else if (
- action.type &&
+ isActionWithSkipLoading(action) &&
!action.skipLoading &&
typeof action.type === 'string'
) {
diff --git a/app/javascript/mastodon/store/middlewares/sounds.ts b/app/javascript/mastodon/store/middlewares/sounds.ts
index 09ade7d75..51839f427 100644
--- a/app/javascript/mastodon/store/middlewares/sounds.ts
+++ b/app/javascript/mastodon/store/middlewares/sounds.ts
@@ -1,4 +1,5 @@
-import type { Middleware, AnyAction } from 'redux';
+import { isAction } from '@reduxjs/toolkit';
+import type { Middleware, UnknownAction } from '@reduxjs/toolkit';
import ready from 'mastodon/ready';
import { assetHost } from 'mastodon/utils/config';
@@ -10,6 +11,21 @@ interface AudioSource {
type: string;
}
+interface ActionWithMetaSound extends UnknownAction {
+ meta: { sound: string };
+}
+
+function isActionWithMetaSound(action: unknown): action is ActionWithMetaSound {
+ return (
+ isAction(action) &&
+ 'meta' in action &&
+ typeof action.meta === 'object' &&
+ !!action.meta &&
+ 'sound' in action.meta &&
+ typeof action.meta.sound === 'string'
+ );
+}
+
const createAudio = (sources: AudioSource[]) => {
const audio = new Audio();
sources.forEach(({ type, src }) => {
@@ -34,7 +50,10 @@ const play = (audio: HTMLAudioElement) => {
void audio.play();
};
-export const soundsMiddleware = (): Middleware => {
+export const soundsMiddleware = (): Middleware<
+ Record,
+ RootState
+> => {
const soundCache: Record = {};
void ready(() => {
@@ -50,15 +69,15 @@ export const soundsMiddleware = (): Middleware => {
]);
});
- return () =>
- (next) =>
- (action: AnyAction & { meta?: { sound?: string } }) => {
- const sound = action.meta?.sound;
+ return () => (next) => (action) => {
+ if (isActionWithMetaSound(action)) {
+ const sound = action.meta.sound;
if (sound && Object.hasOwn(soundCache, sound)) {
play(soundCache[sound]);
}
+ }
- return next(action);
- };
+ return next(action);
+ };
};
diff --git a/app/javascript/mastodon/store/typed_functions.ts b/app/javascript/mastodon/store/typed_functions.ts
index f1e71385a..4859b8265 100644
--- a/app/javascript/mastodon/store/typed_functions.ts
+++ b/app/javascript/mastodon/store/typed_functions.ts
@@ -1,12 +1,11 @@
-import type { TypedUseSelectorHook } from 'react-redux';
-import { useDispatch, useSelector } from 'react-redux';
-
import { createAsyncThunk } from '@reduxjs/toolkit';
+// eslint-disable-next-line @typescript-eslint/no-restricted-imports
+import { useDispatch, useSelector } from 'react-redux';
import type { AppDispatch, RootState } from './store';
-export const useAppDispatch: () => AppDispatch = useDispatch;
-export const useAppSelector: TypedUseSelectorHook = useSelector;
+export const useAppDispatch = useDispatch.withTypes();
+export const useAppSelector = useSelector.withTypes();
export const createAppAsyncThunk = createAsyncThunk.withTypes<{
state: RootState;
diff --git a/app/javascript/material-icons/400-24px/account_circle-fill.svg b/app/javascript/material-icons/400-24px/account_circle-fill.svg
new file mode 100644
index 000000000..1bf9d57a3
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/account_circle-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/account_circle.svg b/app/javascript/material-icons/400-24px/account_circle.svg
new file mode 100644
index 000000000..ce59194be
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/account_circle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/add-fill.svg b/app/javascript/material-icons/400-24px/add-fill.svg
new file mode 100644
index 000000000..f8bc9309c
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/add-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/add.svg b/app/javascript/material-icons/400-24px/add.svg
new file mode 100644
index 000000000..f8bc9309c
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/add.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/add_photo_alternate-fill.svg b/app/javascript/material-icons/400-24px/add_photo_alternate-fill.svg
new file mode 100644
index 000000000..deb3f8e0d
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/add_photo_alternate-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/add_photo_alternate.svg b/app/javascript/material-icons/400-24px/add_photo_alternate.svg
new file mode 100644
index 000000000..0ae8ad841
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/add_photo_alternate.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/alternate_email-fill.svg b/app/javascript/material-icons/400-24px/alternate_email-fill.svg
new file mode 100644
index 000000000..7648cf975
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/alternate_email-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/alternate_email.svg b/app/javascript/material-icons/400-24px/alternate_email.svg
new file mode 100644
index 000000000..7648cf975
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/alternate_email.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/arrow_back-fill.svg b/app/javascript/material-icons/400-24px/arrow_back-fill.svg
new file mode 100644
index 000000000..cba0c8b2a
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/arrow_back-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/arrow_back.svg b/app/javascript/material-icons/400-24px/arrow_back.svg
new file mode 100644
index 000000000..cba0c8b2a
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/arrow_back.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/arrow_drop_down-fill.svg b/app/javascript/material-icons/400-24px/arrow_drop_down-fill.svg
new file mode 100644
index 000000000..48c72546d
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/arrow_drop_down-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/arrow_drop_down.svg b/app/javascript/material-icons/400-24px/arrow_drop_down.svg
new file mode 100644
index 000000000..48c72546d
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/arrow_drop_down.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/arrow_right_alt-fill.svg b/app/javascript/material-icons/400-24px/arrow_right_alt-fill.svg
new file mode 100644
index 000000000..4bf73bb6d
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/arrow_right_alt-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/arrow_right_alt.svg b/app/javascript/material-icons/400-24px/arrow_right_alt.svg
new file mode 100644
index 000000000..4bf73bb6d
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/arrow_right_alt.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/bar_chart_4_bars-fill.svg b/app/javascript/material-icons/400-24px/bar_chart_4_bars-fill.svg
new file mode 100644
index 000000000..63215a3e0
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/bar_chart_4_bars-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/bar_chart_4_bars.svg b/app/javascript/material-icons/400-24px/bar_chart_4_bars.svg
new file mode 100644
index 000000000..63215a3e0
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/bar_chart_4_bars.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/block-fill.svg b/app/javascript/material-icons/400-24px/block-fill.svg
new file mode 100644
index 000000000..20e9889ae
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/block-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/block.svg b/app/javascript/material-icons/400-24px/block.svg
new file mode 100644
index 000000000..20e9889ae
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/block.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/bookmark-fill.svg b/app/javascript/material-icons/400-24px/bookmark-fill.svg
new file mode 100644
index 000000000..3a7b4d2e8
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/bookmark-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/bookmark.svg b/app/javascript/material-icons/400-24px/bookmark.svg
new file mode 100644
index 000000000..a8226a6d8
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/bookmark.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/bookmarks-fill.svg b/app/javascript/material-icons/400-24px/bookmarks-fill.svg
new file mode 100644
index 000000000..f5231f925
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/bookmarks-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/bookmarks.svg b/app/javascript/material-icons/400-24px/bookmarks.svg
new file mode 100644
index 000000000..67dffd685
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/bookmarks.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/campaign-fill.svg b/app/javascript/material-icons/400-24px/campaign-fill.svg
new file mode 100644
index 000000000..3df7275bf
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/campaign-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/campaign.svg b/app/javascript/material-icons/400-24px/campaign.svg
new file mode 100644
index 000000000..a6d893fed
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/campaign.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/cancel-fill.svg b/app/javascript/material-icons/400-24px/cancel-fill.svg
new file mode 100644
index 000000000..f7d476f25
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/cancel-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/cancel.svg b/app/javascript/material-icons/400-24px/cancel.svg
new file mode 100644
index 000000000..8504fbfda
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/cancel.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/cancel_presentation-fill.svg b/app/javascript/material-icons/400-24px/cancel_presentation-fill.svg
new file mode 100644
index 000000000..8e8e6a1ee
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/cancel_presentation-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/cancel_presentation.svg b/app/javascript/material-icons/400-24px/cancel_presentation.svg
new file mode 100644
index 000000000..c0da419cd
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/cancel_presentation.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/check-fill.svg b/app/javascript/material-icons/400-24px/check-fill.svg
new file mode 100644
index 000000000..1655d12bf
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/check-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/check.svg b/app/javascript/material-icons/400-24px/check.svg
new file mode 100644
index 000000000..1655d12bf
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/check.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/check_box_outline_blank-fill.svg b/app/javascript/material-icons/400-24px/check_box_outline_blank-fill.svg
new file mode 100644
index 000000000..3f7df315a
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/check_box_outline_blank-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/check_box_outline_blank.svg b/app/javascript/material-icons/400-24px/check_box_outline_blank.svg
new file mode 100644
index 000000000..3f7df315a
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/check_box_outline_blank.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/chevron_left-fill.svg b/app/javascript/material-icons/400-24px/chevron_left-fill.svg
new file mode 100644
index 000000000..53783746a
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/chevron_left-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/chevron_left.svg b/app/javascript/material-icons/400-24px/chevron_left.svg
new file mode 100644
index 000000000..53783746a
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/chevron_left.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/chevron_right-fill.svg b/app/javascript/material-icons/400-24px/chevron_right-fill.svg
new file mode 100644
index 000000000..410046736
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/chevron_right-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/chevron_right.svg b/app/javascript/material-icons/400-24px/chevron_right.svg
new file mode 100644
index 000000000..410046736
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/chevron_right.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/close-fill.svg b/app/javascript/material-icons/400-24px/close-fill.svg
new file mode 100644
index 000000000..5a60c58e7
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/close-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/close.svg b/app/javascript/material-icons/400-24px/close.svg
new file mode 100644
index 000000000..5a60c58e7
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/close.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/content_copy-fill.svg b/app/javascript/material-icons/400-24px/content_copy-fill.svg
new file mode 100644
index 000000000..dabf09450
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/content_copy-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/content_copy.svg b/app/javascript/material-icons/400-24px/content_copy.svg
new file mode 100644
index 000000000..d875c8449
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/content_copy.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/delete-fill.svg b/app/javascript/material-icons/400-24px/delete-fill.svg
new file mode 100644
index 000000000..59d1abb8b
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/delete-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/delete.svg b/app/javascript/material-icons/400-24px/delete.svg
new file mode 100644
index 000000000..560d174b9
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/delete.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/delete_forever-fill.svg b/app/javascript/material-icons/400-24px/delete_forever-fill.svg
new file mode 100644
index 000000000..40fe4497f
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/delete_forever-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/delete_forever.svg b/app/javascript/material-icons/400-24px/delete_forever.svg
new file mode 100644
index 000000000..763f517d1
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/delete_forever.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/description-fill.svg b/app/javascript/material-icons/400-24px/description-fill.svg
new file mode 100644
index 000000000..07998b29d
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/description-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/description.svg b/app/javascript/material-icons/400-24px/description.svg
new file mode 100644
index 000000000..309a4f5b3
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/description.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/done-fill.svg b/app/javascript/material-icons/400-24px/done-fill.svg
new file mode 100644
index 000000000..1655d12bf
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/done-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/done.svg b/app/javascript/material-icons/400-24px/done.svg
new file mode 100644
index 000000000..1655d12bf
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/done.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/done_all-fill.svg b/app/javascript/material-icons/400-24px/done_all-fill.svg
new file mode 100644
index 000000000..8f05228c4
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/done_all-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/done_all.svg b/app/javascript/material-icons/400-24px/done_all.svg
new file mode 100644
index 000000000..8f05228c4
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/done_all.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/download-fill.svg b/app/javascript/material-icons/400-24px/download-fill.svg
new file mode 100644
index 000000000..6a171ea82
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/download-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/download.svg b/app/javascript/material-icons/400-24px/download.svg
new file mode 100644
index 000000000..6a171ea82
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/download.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/edit-fill.svg b/app/javascript/material-icons/400-24px/edit-fill.svg
new file mode 100644
index 000000000..278e79978
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/edit-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/edit.svg b/app/javascript/material-icons/400-24px/edit.svg
new file mode 100644
index 000000000..cb81b1130
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/edit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/edit_note-fill.svg b/app/javascript/material-icons/400-24px/edit_note-fill.svg
new file mode 100644
index 000000000..b18db1df8
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/edit_note-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/edit_note.svg b/app/javascript/material-icons/400-24px/edit_note.svg
new file mode 100644
index 000000000..cf7e98405
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/edit_note.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/expand_more-fill.svg b/app/javascript/material-icons/400-24px/expand_more-fill.svg
new file mode 100644
index 000000000..0c8f27359
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/expand_more-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/expand_more.svg b/app/javascript/material-icons/400-24px/expand_more.svg
new file mode 100644
index 000000000..0c8f27359
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/expand_more.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/find_in_page-fill.svg b/app/javascript/material-icons/400-24px/find_in_page-fill.svg
new file mode 100644
index 000000000..146f838a2
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/find_in_page-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/find_in_page.svg b/app/javascript/material-icons/400-24px/find_in_page.svg
new file mode 100644
index 000000000..f21c2786c
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/find_in_page.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/flag-fill.svg b/app/javascript/material-icons/400-24px/flag-fill.svg
new file mode 100644
index 000000000..e44a94d90
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/flag-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/flag.svg b/app/javascript/material-icons/400-24px/flag.svg
new file mode 100644
index 000000000..cb4c810e0
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/flag.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/format_quote-fill.svg b/app/javascript/material-icons/400-24px/format_quote-fill.svg
new file mode 100644
index 000000000..f4afa3ed1
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/format_quote-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/format_quote.svg b/app/javascript/material-icons/400-24px/format_quote.svg
new file mode 100644
index 000000000..c354385ea
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/format_quote.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/fullscreen-fill.svg b/app/javascript/material-icons/400-24px/fullscreen-fill.svg
new file mode 100644
index 000000000..940c878a7
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/fullscreen-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/fullscreen.svg b/app/javascript/material-icons/400-24px/fullscreen.svg
new file mode 100644
index 000000000..940c878a7
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/fullscreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/fullscreen_exit-fill.svg b/app/javascript/material-icons/400-24px/fullscreen_exit-fill.svg
new file mode 100644
index 000000000..d9d45a6c6
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/fullscreen_exit-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/fullscreen_exit.svg b/app/javascript/material-icons/400-24px/fullscreen_exit.svg
new file mode 100644
index 000000000..d9d45a6c6
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/fullscreen_exit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/group-fill.svg b/app/javascript/material-icons/400-24px/group-fill.svg
new file mode 100644
index 000000000..c0d6cef5c
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/group-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/group.svg b/app/javascript/material-icons/400-24px/group.svg
new file mode 100644
index 000000000..dbc2c937e
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/group.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/home-fill.svg b/app/javascript/material-icons/400-24px/home-fill.svg
new file mode 100644
index 000000000..e25441638
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/home-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/home.svg b/app/javascript/material-icons/400-24px/home.svg
new file mode 100644
index 000000000..d700ddea7
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/home.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/info-fill.svg b/app/javascript/material-icons/400-24px/info-fill.svg
new file mode 100644
index 000000000..0232e17ad
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/info-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/info.svg b/app/javascript/material-icons/400-24px/info.svg
new file mode 100644
index 000000000..05606f4e5
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/info.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/insert_chart-fill.svg b/app/javascript/material-icons/400-24px/insert_chart-fill.svg
new file mode 100644
index 000000000..12d137ca8
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/insert_chart-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/insert_chart.svg b/app/javascript/material-icons/400-24px/insert_chart.svg
new file mode 100644
index 000000000..4f2a10be5
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/insert_chart.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/link-fill.svg b/app/javascript/material-icons/400-24px/link-fill.svg
new file mode 100644
index 000000000..319a0681c
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/link-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/link.svg b/app/javascript/material-icons/400-24px/link.svg
new file mode 100644
index 000000000..319a0681c
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/link.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/list_alt-fill.svg b/app/javascript/material-icons/400-24px/list_alt-fill.svg
new file mode 100644
index 000000000..6aa8b5082
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/list_alt-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/list_alt.svg b/app/javascript/material-icons/400-24px/list_alt.svg
new file mode 100644
index 000000000..cca8ab195
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/list_alt.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/lock-fill.svg b/app/javascript/material-icons/400-24px/lock-fill.svg
new file mode 100644
index 000000000..0815d7841
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/lock-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/lock.svg b/app/javascript/material-icons/400-24px/lock.svg
new file mode 100644
index 000000000..20b9e3984
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/lock.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/lock_open-fill.svg b/app/javascript/material-icons/400-24px/lock_open-fill.svg
new file mode 100644
index 000000000..60309dce5
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/lock_open-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/lock_open.svg b/app/javascript/material-icons/400-24px/lock_open.svg
new file mode 100644
index 000000000..824c70b7c
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/lock_open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/logout-fill.svg b/app/javascript/material-icons/400-24px/logout-fill.svg
new file mode 100644
index 000000000..488145350
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/logout-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/logout.svg b/app/javascript/material-icons/400-24px/logout.svg
new file mode 100644
index 000000000..488145350
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/logout.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/menu-fill.svg b/app/javascript/material-icons/400-24px/menu-fill.svg
new file mode 100644
index 000000000..2f427e91c
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/menu-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/menu.svg b/app/javascript/material-icons/400-24px/menu.svg
new file mode 100644
index 000000000..2f427e91c
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/menu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/mood-fill.svg b/app/javascript/material-icons/400-24px/mood-fill.svg
new file mode 100644
index 000000000..9480d0fb9
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/mood-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/mood.svg b/app/javascript/material-icons/400-24px/mood.svg
new file mode 100644
index 000000000..46cafa768
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/mood.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/more_horiz-fill.svg b/app/javascript/material-icons/400-24px/more_horiz-fill.svg
new file mode 100644
index 000000000..e77715489
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/more_horiz-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/more_horiz.svg b/app/javascript/material-icons/400-24px/more_horiz.svg
new file mode 100644
index 000000000..e77715489
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/more_horiz.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/music_note-fill.svg b/app/javascript/material-icons/400-24px/music_note-fill.svg
new file mode 100644
index 000000000..b10ad1921
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/music_note-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/music_note.svg b/app/javascript/material-icons/400-24px/music_note.svg
new file mode 100644
index 000000000..b10ad1921
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/music_note.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/navigate_before-fill.svg b/app/javascript/material-icons/400-24px/navigate_before-fill.svg
new file mode 100644
index 000000000..53783746a
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/navigate_before-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/navigate_before.svg b/app/javascript/material-icons/400-24px/navigate_before.svg
new file mode 100644
index 000000000..53783746a
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/navigate_before.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/navigate_next-fill.svg b/app/javascript/material-icons/400-24px/navigate_next-fill.svg
new file mode 100644
index 000000000..410046736
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/navigate_next-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/navigate_next.svg b/app/javascript/material-icons/400-24px/navigate_next.svg
new file mode 100644
index 000000000..410046736
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/navigate_next.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/notifications-fill.svg b/app/javascript/material-icons/400-24px/notifications-fill.svg
new file mode 100644
index 000000000..0730efefc
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/notifications-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/notifications.svg b/app/javascript/material-icons/400-24px/notifications.svg
new file mode 100644
index 000000000..dbfe0e040
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/notifications.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/notifications_active-fill.svg b/app/javascript/material-icons/400-24px/notifications_active-fill.svg
new file mode 100644
index 000000000..856a0ed8a
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/notifications_active-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/notifications_active.svg b/app/javascript/material-icons/400-24px/notifications_active.svg
new file mode 100644
index 000000000..1389a10e0
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/notifications_active.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/open_in_new-fill.svg b/app/javascript/material-icons/400-24px/open_in_new-fill.svg
new file mode 100644
index 000000000..42895ffd1
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/open_in_new-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/open_in_new.svg b/app/javascript/material-icons/400-24px/open_in_new.svg
new file mode 100644
index 000000000..42895ffd1
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/open_in_new.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/pause-fill.svg b/app/javascript/material-icons/400-24px/pause-fill.svg
new file mode 100644
index 000000000..fc9a8074d
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/pause-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/pause.svg b/app/javascript/material-icons/400-24px/pause.svg
new file mode 100644
index 000000000..95bc792fc
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/pause.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/person-fill.svg b/app/javascript/material-icons/400-24px/person-fill.svg
new file mode 100644
index 000000000..73ef1efc1
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/person-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/person.svg b/app/javascript/material-icons/400-24px/person.svg
new file mode 100644
index 000000000..a3f6b246c
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/person.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/person_add-fill.svg b/app/javascript/material-icons/400-24px/person_add-fill.svg
new file mode 100644
index 000000000..3fa7f6528
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/person_add-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/person_add.svg b/app/javascript/material-icons/400-24px/person_add.svg
new file mode 100644
index 000000000..39b592bf0
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/person_add.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/photo_library-fill.svg b/app/javascript/material-icons/400-24px/photo_library-fill.svg
new file mode 100644
index 000000000..e68aec832
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/photo_library-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/photo_library.svg b/app/javascript/material-icons/400-24px/photo_library.svg
new file mode 100644
index 000000000..3b22224b8
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/photo_library.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/play_arrow-fill.svg b/app/javascript/material-icons/400-24px/play_arrow-fill.svg
new file mode 100644
index 000000000..6465b9022
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/play_arrow-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/play_arrow.svg b/app/javascript/material-icons/400-24px/play_arrow.svg
new file mode 100644
index 000000000..52f0fcc9c
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/play_arrow.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/public-fill.svg b/app/javascript/material-icons/400-24px/public-fill.svg
new file mode 100644
index 000000000..1e9e79de4
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/public-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/public.svg b/app/javascript/material-icons/400-24px/public.svg
new file mode 100644
index 000000000..1e9e79de4
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/public.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/push_pin-fill.svg b/app/javascript/material-icons/400-24px/push_pin-fill.svg
new file mode 100644
index 000000000..6095ba77e
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/push_pin-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/push_pin.svg b/app/javascript/material-icons/400-24px/push_pin.svg
new file mode 100644
index 000000000..e1abd900a
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/push_pin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/quiet_time-fill.svg b/app/javascript/material-icons/400-24px/quiet_time-fill.svg
new file mode 100644
index 000000000..aed5740db
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/quiet_time-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/quiet_time.svg b/app/javascript/material-icons/400-24px/quiet_time.svg
new file mode 100644
index 000000000..552da6658
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/quiet_time.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/rectangle-fill.svg b/app/javascript/material-icons/400-24px/rectangle-fill.svg
new file mode 100644
index 000000000..64b038f26
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/rectangle-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/rectangle.svg b/app/javascript/material-icons/400-24px/rectangle.svg
new file mode 100644
index 000000000..ada92f2cf
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/rectangle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/refresh-fill.svg b/app/javascript/material-icons/400-24px/refresh-fill.svg
new file mode 100644
index 000000000..a7a6bc801
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/refresh-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/refresh.svg b/app/javascript/material-icons/400-24px/refresh.svg
new file mode 100644
index 000000000..a7a6bc801
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/refresh.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/repeat-fill.svg b/app/javascript/material-icons/400-24px/repeat-fill.svg
new file mode 100644
index 000000000..c1b09d802
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/repeat-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/repeat.svg b/app/javascript/material-icons/400-24px/repeat.svg
new file mode 100644
index 000000000..c1b09d802
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/repeat.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/reply-fill.svg b/app/javascript/material-icons/400-24px/reply-fill.svg
new file mode 100644
index 000000000..eb661f282
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/reply-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/reply.svg b/app/javascript/material-icons/400-24px/reply.svg
new file mode 100644
index 000000000..eb661f282
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/reply.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/reply_all-fill.svg b/app/javascript/material-icons/400-24px/reply_all-fill.svg
new file mode 100644
index 000000000..74c9573ea
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/reply_all-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/reply_all.svg b/app/javascript/material-icons/400-24px/reply_all.svg
new file mode 100644
index 000000000..74c9573ea
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/reply_all.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/search-fill.svg b/app/javascript/material-icons/400-24px/search-fill.svg
new file mode 100644
index 000000000..ef0d0521e
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/search-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/search.svg b/app/javascript/material-icons/400-24px/search.svg
new file mode 100644
index 000000000..ef0d0521e
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/search.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/settings-fill.svg b/app/javascript/material-icons/400-24px/settings-fill.svg
new file mode 100644
index 000000000..f13347950
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/settings-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/settings.svg b/app/javascript/material-icons/400-24px/settings.svg
new file mode 100644
index 000000000..817c782f0
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/settings.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/share-fill.svg b/app/javascript/material-icons/400-24px/share-fill.svg
new file mode 100644
index 000000000..5a6b0d0a8
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/share-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/share.svg b/app/javascript/material-icons/400-24px/share.svg
new file mode 100644
index 000000000..6876cd42d
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/share.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/smart_toy-fill.svg b/app/javascript/material-icons/400-24px/smart_toy-fill.svg
new file mode 100644
index 000000000..df417f5ff
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/smart_toy-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/smart_toy.svg b/app/javascript/material-icons/400-24px/smart_toy.svg
new file mode 100644
index 000000000..b84efc73b
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/smart_toy.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/star-fill.svg b/app/javascript/material-icons/400-24px/star-fill.svg
new file mode 100644
index 000000000..cb2231e63
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/star-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/star.svg b/app/javascript/material-icons/400-24px/star.svg
new file mode 100644
index 000000000..1736e085d
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/star.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/tag-fill.svg b/app/javascript/material-icons/400-24px/tag-fill.svg
new file mode 100644
index 000000000..ce76d537b
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/tag-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/tag.svg b/app/javascript/material-icons/400-24px/tag.svg
new file mode 100644
index 000000000..ce76d537b
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/tag.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/translate-fill.svg b/app/javascript/material-icons/400-24px/translate-fill.svg
new file mode 100644
index 000000000..ecaaf37f1
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/translate-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/translate.svg b/app/javascript/material-icons/400-24px/translate.svg
new file mode 100644
index 000000000..ecaaf37f1
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/translate.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/tune-fill.svg b/app/javascript/material-icons/400-24px/tune-fill.svg
new file mode 100644
index 000000000..887f8bd49
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/tune-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/tune.svg b/app/javascript/material-icons/400-24px/tune.svg
new file mode 100644
index 000000000..887f8bd49
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/tune.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/upload_file-fill.svg b/app/javascript/material-icons/400-24px/upload_file-fill.svg
new file mode 100644
index 000000000..639d77af3
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/upload_file-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/upload_file.svg b/app/javascript/material-icons/400-24px/upload_file.svg
new file mode 100644
index 000000000..40ce5b65e
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/upload_file.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/visibility-fill.svg b/app/javascript/material-icons/400-24px/visibility-fill.svg
new file mode 100644
index 000000000..44b5f4c60
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/visibility-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/visibility.svg b/app/javascript/material-icons/400-24px/visibility.svg
new file mode 100644
index 000000000..8fe45d09a
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/visibility.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/visibility_off-fill.svg b/app/javascript/material-icons/400-24px/visibility_off-fill.svg
new file mode 100644
index 000000000..e21fbd88d
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/visibility_off-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/visibility_off.svg b/app/javascript/material-icons/400-24px/visibility_off.svg
new file mode 100644
index 000000000..d98cf8d94
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/visibility_off.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/volume_off-fill.svg b/app/javascript/material-icons/400-24px/volume_off-fill.svg
new file mode 100644
index 000000000..b3d12d4d9
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/volume_off-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/volume_off.svg b/app/javascript/material-icons/400-24px/volume_off.svg
new file mode 100644
index 000000000..a0acf6374
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/volume_off.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/volume_up-fill.svg b/app/javascript/material-icons/400-24px/volume_up-fill.svg
new file mode 100644
index 000000000..dd5771215
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/volume_up-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/volume_up.svg b/app/javascript/material-icons/400-24px/volume_up.svg
new file mode 100644
index 000000000..fd9006a6d
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/volume_up.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/warning-fill.svg b/app/javascript/material-icons/400-24px/warning-fill.svg
new file mode 100644
index 000000000..c3727d3f5
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/warning-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/warning.svg b/app/javascript/material-icons/400-24px/warning.svg
new file mode 100644
index 000000000..238299e60
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/warning.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/LICENSE b/app/javascript/material-icons/LICENSE
new file mode 100644
index 000000000..d64569567
--- /dev/null
+++ b/app/javascript/material-icons/LICENSE
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/app/javascript/material-icons/README.md b/app/javascript/material-icons/README.md
new file mode 100644
index 000000000..1479cb225
--- /dev/null
+++ b/app/javascript/material-icons/README.md
@@ -0,0 +1 @@
+Files in this directory are Material Symbols icons fetched using the `icons:download` task.
diff --git a/app/javascript/packs/inert.js b/app/javascript/packs/inert.js
new file mode 100644
index 000000000..7c04a97fa
--- /dev/null
+++ b/app/javascript/packs/inert.js
@@ -0,0 +1,4 @@
+/* Placeholder file to have `inert.scss` compiled by Webpack
+ This is used by the `wicg-inert` polyfill */
+
+import '../styles/inert.scss';
diff --git a/app/javascript/packs/share.jsx b/app/javascript/packs/share.jsx
index 0f3b84549..7b5723091 100644
--- a/app/javascript/packs/share.jsx
+++ b/app/javascript/packs/share.jsx
@@ -13,10 +13,12 @@ function loaded() {
if (mountNode) {
const attr = mountNode.getAttribute('data-props');
- if(!attr) return;
+
+ if (!attr) return;
const props = JSON.parse(attr);
const root = createRoot(mountNode);
+
root.render();
}
}
diff --git a/app/javascript/styles/contrast/diff.scss b/app/javascript/styles/contrast/diff.scss
index 1c2386f02..ae607f484 100644
--- a/app/javascript/styles/contrast/diff.scss
+++ b/app/javascript/styles/contrast/diff.scss
@@ -1,20 +1,7 @@
-.compose-form {
- .compose-form__modifiers {
- .compose-form__upload {
- &-description {
- input {
- &::placeholder {
- opacity: 1;
- }
- }
- }
- }
- }
-}
-
.status__content a,
-.link-footer a,
.reply-indicator__content a,
+.edit-indicator__content a,
+.link-footer a,
.status__content__read-more-button,
.status__content__translate-button {
text-decoration: underline;
@@ -42,7 +29,9 @@
}
}
-.status__content a {
+.status__content a,
+.reply-indicator__content a,
+.edit-indicator__content a {
color: $highlight-text-color;
}
@@ -50,24 +39,10 @@
color: $darker-text-color;
}
-.compose-form__poll-wrapper .button.button-secondary,
-.compose-form .autosuggest-textarea__textarea::placeholder,
-.compose-form .spoiler-input__input::placeholder,
-.report-dialog-modal__textarea::placeholder,
-.language-dropdown__dropdown__results__item__common-name,
-.compose-form .icon-button {
+.report-dialog-modal__textarea::placeholder {
color: $inverted-text-color;
}
-.text-icon-button.active {
- color: $ui-highlight-color;
-}
-
-.language-dropdown__dropdown__results__item.active {
- background: $ui-highlight-color;
- font-weight: 500;
-}
-
.link-button:disabled {
cursor: not-allowed;
diff --git a/app/javascript/styles/fonts/inter.scss b/app/javascript/styles/fonts/inter.scss
new file mode 100644
index 000000000..bb4899b70
--- /dev/null
+++ b/app/javascript/styles/fonts/inter.scss
@@ -0,0 +1,8 @@
+@font-face {
+ font-family: Inter;
+ src: url('../fonts/inter/inter-variable-font-slnt-wght.woff2')
+ format('woff2-variations');
+ font-weight: 100 900;
+ font-style: normal;
+ mso-generic-font-family: swiss; /* stylelint-disable-line property-no-unknown -- Proprietary property for Outlook on Windows. */
+}
diff --git a/public/inert.css b/app/javascript/styles/inert.scss
similarity index 78%
rename from public/inert.css
rename to app/javascript/styles/inert.scss
index 54e10616d..a60045d7b 100644
--- a/public/inert.css
+++ b/app/javascript/styles/inert.scss
@@ -1,3 +1,5 @@
+/* This is needed for the wicg-inert polyfill */
+
[inert] {
pointer-events: none;
cursor: default;
diff --git a/app/javascript/styles/mailer.scss b/app/javascript/styles/mailer.scss
index 92d00cae8..a2cbb494b 100644
--- a/app/javascript/styles/mailer.scss
+++ b/app/javascript/styles/mailer.scss
@@ -1,574 +1,620 @@
-@import 'mastodon/variables';
-@import 'fonts/roboto';
+@import 'fonts/inter';
-table,
-td,
-div {
- box-sizing: border-box;
-}
-
-html,
body {
- width: 100% !important;
- min-width: 100%;
+ accent-color: #6364ff;
+ word-break: break-word;
margin: 0;
+ background-color: #f3f2f5;
padding: 0;
- -webkit-text-size-adjust: 100%;
- -ms-text-size-adjust: 100%;
-}
-
-.email-body {
- td,
- div,
- a,
- span {
- line-height: inherit;
- }
-}
-
-a {
- &,
- &:visited,
- span {
- text-decoration: none;
- color: $ui-highlight-color;
- }
-
- #outlook & {
- padding: 0;
- }
-}
-
-img {
- outline: none;
- border: 0;
- text-decoration: none;
- -ms-interpolation-mode: bicubic;
- clear: both;
- line-height: 100%;
-}
-
-table {
- border-spacing: 0;
- mso-table-lspace: 0;
- mso-table-rspace: 0;
-}
-
-td {
- vertical-align: top;
-}
-
-.auto-dir {
- p {
- unicode-bidi: plaintext;
- }
-
- a {
- unicode-bidi: isolate;
- }
-}
-
-.email-table,
-.content-section,
-.column,
-.column-cell {
- width: 100%;
- min-width: 100%;
-}
-
-.email-body {
- font-size: 0 !important;
- line-height: 100%;
- text-align: center;
- padding-left: 16px;
- padding-right: 16px;
-}
-
-.email-start {
- padding-top: 32px;
-}
-
-.email-end {
- padding-bottom: 32px;
-}
-
-.email-body,
-html,
-body {
- background-color: lighten($ui-base-color, 4%);
-}
-
-.email-container,
-.email-row,
-.col-0,
-.col-1,
-.col-2,
-.col-3,
-.col-4,
-.col-5,
-.col-6 {
- font-size: 0;
- display: inline-block;
- width: 100%;
- min-width: 100%;
- min-width: 0 !important;
- vertical-align: top;
-}
-
-.content-cell {
- width: 100%;
- min-width: 100%;
- min-width: 0 !important;
-}
-
-.column-cell {
- padding-top: 16px;
- padding-bottom: 16px;
- vertical-align: top;
-
- &.button-cell {
- padding-top: 0;
- }
-}
-
-.email-container {
- max-width: 632px;
- margin: 0 auto;
- text-align: center;
-}
-
-.email-row {
- display: block;
- max-width: 600px !important;
- margin: 0 auto;
- text-align: center;
- clear: both;
-}
-
-.col-0 {
- max-width: 50px;
-}
-
-.col-1 {
- max-width: 100px;
-}
-
-.col-2 {
- max-width: 200px;
-}
-
-.col-3 {
- max-width: 300px;
-}
-
-.col-4 {
- max-width: 400px;
-}
-
-.col-5 {
- max-width: 500px;
-}
-
-.col-6 {
- max-width: 600px;
-}
-
-.column-cell,
-.column-cell td,
-p {
- font-family: Helvetica, Arial, sans-serif;
-
- @media only screen {
- font-family: $font-sans-serif, sans-serif !important;
- }
-}
-
-.email-body .column-cell,
-.column-cell,
-p {
- font-size: 15px;
- line-height: 23px;
- color: $ui-primary-color;
- mso-line-height-rule: exactly;
- text-rendering: optimizelegibility;
-}
-
-p {
- display: block;
- margin-top: 0;
- margin-bottom: 16px;
-
- &.small {
- font-size: 13px;
- }
-
- &.lead {
- font-size: 19px;
- line-height: 27px;
- }
+ -webkit-text-size-adjust: none;
+ text-size-adjust: none;
}
+p,
h1,
h2,
h3,
h4,
h5,
h6 {
- color: $ui-secondary-color;
- margin-left: 0;
- margin-right: 0;
- margin-top: 20px;
- margin-bottom: 8px;
+ margin: 0;
+ background-color: transparent;
padding: 0;
- font-weight: 500;
+ border: none;
+ font-family: Inter, 'Lucida Grande', sans-serif;
}
-h1 {
- font-size: 26px;
- line-height: 36px;
+img {
+ max-width: 100%;
+ height: auto;
+ border: none;
+ text-indent: 0;
+ vertical-align: middle;
+ color: inherit;
+ font-family: inherit;
}
-h2 {
- font-size: 23px;
- line-height: 30px;
+table {
+ border: none;
}
-h3 {
- font-size: 19px;
- line-height: 25px;
+table + p {
+ margin-top: 16px;
}
-h5 {
- font-size: 16px;
- line-height: 21px;
- font-weight: 700;
- color: lighten($ui-base-color, 34%);
+.email {
+ min-width: 280px;
+ font-family: Inter, 'Lucida Grande', sans-serif;
+ word-break: break-word;
+ color: #17063b;
+ background-color: #f3f2f5;
}
-.input-cell {
- h5 {
- margin-top: 4px;
- }
-}
-
-.input {
- td {
- background: darken($ui-base-color, 8%);
- border-radius: 4px;
- padding: 16px;
- line-height: 20px;
- mso-line-height-rule: exactly;
- text-align: center;
- font-weight: 500;
- font-size: 17px;
- }
-}
-
-.content-cell,
-.blank-cell {
+.email-container {
+ max-width: 740px;
+ margin: 0 auto;
width: 100%;
- font-size: 0;
- text-align: center;
- vertical-align: top;
- padding-left: 16px;
- padding-right: 16px;
}
-.content-cell {
- background-color: darken($ui-base-color, 4%);
-
- &.darker {
- background-color: darken($ui-base-color, 8%);
- }
+// Outer email card
+.email-card-table {
+ border-collapse: collapse;
+ width: 100%;
}
-.hero {
- background-color: $ui-base-color;
- padding-top: 20px;
+.email-card-td {
+ overflow: hidden;
+ box-shadow: 0 4px 16px 0 rgba(23, 6, 59, 4%);
+ background-color: #fff;
}
-.hero-with-button {
- padding-bottom: 16px;
-
- h1 {
- margin-bottom: 4px;
- }
-
- p.lead {
- margin-bottom: 32px;
- }
+// Inner email card
+.email-inner-card-table {
+ border-collapse: separate;
+ width: 100%;
+ border-radius: 12px;
}
-.header {
- border-radius: 5px 5px 0 0;
- background-color: darken($ui-base-color, 8%);
-
- .column-cell {
- text-align: center;
- padding-top: 20px;
- padding-bottom: 8px;
- }
+.email-inner-card-td-without-padding,
+.email-inner-card-td {
+ border-radius: 12px;
+ overflow: hidden;
+ box-shadow: 0 4px 16px 0 rgba(23, 6, 59, 8%);
+ background-color: #fff;
+ border: 1px solid #dfdee3;
}
-.content-start {
- padding-top: 32px;
+.email-inner-card-td {
+ padding: 24px;
}
-.content-end {
- border-radius: 0 0 5px 5px;
- padding-top: 16px;
+// Account
+.email-account-banner-table {
+ background-color: #f3f2f5;
+ border-top-left-radius: 12px;
+ border-top-right-radius: 12px;
}
-.footer {
- .column-cell,
- p {
- color: lighten($ui-base-color, 34%);
- }
+.email-account-banner-td {
+ border-top-left-radius: 12px;
+ border-top-right-radius: 12px;
+ height: 140px;
+ vertical-align: bottom;
+ background-position: center !important;
+ background-size: cover !important;
+}
- p {
- margin-bottom: 0;
- font-size: 13px;
+.email-account-banner-inner-td {
+ padding: 24px 24px 0;
+ mso-padding-alt: 24px;
+}
- &.small {
- margin-bottom: 0;
- }
- }
+.email-account-banner-overlap-div {
+ max-height: 42px;
+}
- a {
- color: lighten($ui-base-color, 34%);
- text-decoration: underline;
- }
+.email-account-banner-icon-table {
+ width: auto;
+ margin: 0;
+ overflow: hidden;
+ border-radius: 8px;
+ border-collapse: separate;
+ background-color: #fff;
+ border: 2px solid #fff;
img {
- opacity: 0.3;
- }
-}
-
-.logo {
- position: relative;
- left: -4px;
-}
-
-.button {
- display: table;
- margin-left: auto;
- margin-right: auto;
-
- td {
- line-height: 20px;
- mso-line-height-rule: exactly;
- border-radius: 4px;
- text-align: center;
- font-weight: 500;
- font-size: 17px;
- padding: 0 !important;
-
- a,
- a span {
- color: $primary-text-color;
- display: block !important;
- text-align: center !important;
- vertical-align: top !important;
- line-height: inherit !important;
- }
-
- a {
- padding: 10px 22px !important;
- line-height: 26px !important;
- font-weight: 500 !important;
- }
- }
-
- &.button-small {
- td {
- border-radius: 4px;
- font-size: 14px;
- padding: 8px 16px;
-
- a {
- padding: 5px 16px !important;
- line-height: 26px !important;
- }
- }
- }
-}
-
-.button-default {
- background-color: darken($ui-base-color, 8%);
-}
-
-.button-primary {
- background-color: darken($ui-highlight-color, 3%);
-}
-
-.text-center {
- text-align: center;
-}
-
-.text-right {
- text-align: right;
-}
-
-.padded {
- padding-left: 16px;
- padding-right: 16px;
-}
-
-.padded-bottom {
- padding-bottom: 32px;
-}
-
-.margin-bottom {
- margin-bottom: 20px;
-}
-
-.hero-icon {
- width: 64px;
-
- td {
- text-align: center;
- vertical-align: middle;
- line-height: 100%;
- mso-line-height-rule: exactly;
- padding: 16px;
- border-radius: 80px;
- background: $success-green;
- }
-
- &.warning-icon td {
- background: $gold-star;
- }
-
- &.alert-icon td {
- background: $error-red;
- }
-
- img {
- max-width: 32px;
- width: 32px;
- height: 32px;
display: block;
- line-height: 100%;
+ max-width: 100%;
+ border: none;
+ border-radius: 6px;
}
}
-.hr {
- width: 100%;
+.email-account-body-td {
+ padding: 56px 24px 24px;
+ mso-padding-alt: 24px;
+}
+.email-account-name {
+ font-size: 16px;
+ font-weight: 600;
+ line-height: 24px;
+ color: #17063b;
+}
+
+.email-account-handle {
+ font-size: 14px;
+ line-height: 20px;
+ color: #746a89;
+}
+
+.email-account-stats-table {
td {
- font-size: 0;
- line-height: 1px;
- mso-line-height-rule: exactly;
- min-height: 1px;
- overflow: hidden;
- height: 2px;
- background-color: transparent !important;
- border-top: 1px solid lighten($ui-base-color, 8%);
+ padding-right: 16px;
+ font-size: 14px;
+ line-height: 20px;
+ color: #746a89;
+ }
+
+ b {
+ font-weight: 600;
+ color: #17063b;
+ }
+
+ span {
+ white-space: nowrap;
}
}
-.status {
- padding-bottom: 32px;
-
- &--highlighted {
- border: 1px solid lighten($ui-base-color, 8%);
- border-radius: 4px;
- padding-bottom: 16px;
- margin-bottom: 16px;
- }
-
- .status-header {
- td {
- font-size: 14px;
- padding-bottom: 15px;
- }
-
- bdi {
- color: $white;
- font-size: 16px;
- display: block;
- font-weight: 500;
- }
-
- td:first-child {
- padding-right: 10px;
- }
-
- img {
- width: 48px;
- height: 48px;
- border-radius: 4px;
- }
- }
+// Utility classes
+.email-w-full {
+ width: 100%;
+}
+.email-prose {
p {
- font-size: 19px;
- margin-bottom: 20px;
+ color: #17063b;
+ font-size: 14px;
+ line-height: 20px;
- &.status-footer {
- color: lighten($ui-base-color, 26%);
- font-size: 14px;
- margin-bottom: 0;
+ &:not(:last-child) {
+ margin-bottom: 16px;
+ }
- a {
- color: lighten($ui-base-color, 26%);
+ a:not([class]) {
+ color: #6364ff;
+ text-decoration: none;
+
+ &:hover {
+ color: #563acc !important;
}
}
}
}
-.border-top {
- border-top: 1px solid lighten($ui-base-color, 8%);
+.email-padding-24 {
+ padding: 24px;
}
-ul {
- padding-left: 15px;
- margin-top: 0;
- margin-bottom: 0;
+.email-padding-top-24 {
+ padding-top: 24px;
+}
+
+.email-padding-top-16 {
padding-top: 16px;
-
- li {
- margin-bottom: 16px;
- color: lighten($ui-base-color, 26%);
-
- span {
- color: $ui-primary-color;
- }
- }
}
-ul.rules-list {
+.email-padding-top-0 {
padding-top: 0;
}
-@media only screen and (device-width >= 768px) and (device-width <= 1024px) and (orientation: landscape) {
- body {
- min-height: 1024px !important;
+.email-border-top {
+ border-top: 1px solid #dfdee3;
+}
+
+.email-border-bottom {
+ border-bottom: 1px solid #dfdee3;
+}
+
+// Header
+.email-header-td {
+ padding: 16px 32px;
+ background-color: #1b001f;
+ background-image: url('../images/mailer-new/common/header-bg-start.png');
+ background-position: left top;
+ background-repeat: repeat;
+}
+
+.email-header-logo-table {
+ width: auto;
+ margin: 0;
+}
+
+.email-header-logo-td {
+ padding: 16px 0;
+ font-size: 0;
+
+ img {
+ color: #fff;
+ font-size: 16px;
+ font-weight: bold;
+ max-height: 40px;
}
}
-@media (width <= 697px) {
- .email-container,
- .col-1,
- .col-2,
- .col-3,
- .col-4,
- .col-5,
- .col-6 {
- width: 100% !important;
- max-width: none !important;
- }
+.email-header-logo-a {
+ display: inline-block;
- .email-start {
- padding-top: 16px !important;
- }
-
- .email-end {
- padding-bottom: 16px !important;
- }
-
- .padded {
- padding-left: 0 !important;
- padding-right: 0 !important;
+ img {
+ display: inline-block;
+ color: #fff;
+ }
+}
+
+.email-header-logo-div {
+ max-height: 0;
+}
+
+.email-header-logo-p {
+ word-break: break-all;
+ padding-left: 40px;
+ padding-top: 26px;
+ font-size: 11px;
+ line-height: 13px;
+ color: #8d808f;
+ text-align: left;
+}
+
+.email-header-logo-span {
+ display: block;
+ text-align: right;
+}
+
+.email-header-heading-td {
+ padding: 16px 0;
+}
+
+.email-header-heading-img-td {
+ width: 56px;
+ text-align: left;
+ vertical-align: top;
+
+ img {
+ width: 56px;
+ height: 56px;
+ border-radius: 12px;
+ }
+}
+
+.email-header-heading-txt-td {
+ vertical-align: middle;
+ padding-left: 16px;
+ padding-right: 16px;
+
+ h1 {
+ margin-bottom: 5px;
+ color: #fff;
+ font-size: 24px;
+ line-height: 28px;
+ font-weight: 600;
+ }
+
+ p {
+ color: #a399a5;
+ font-size: 18px;
+ line-height: 21.6px;
+ font-weight: 500;
+ }
+
+ &:only-child {
+ padding-left: 0;
+ padding-right: 0;
+ }
+}
+
+// To make the design work with images off
+// we create an empty div that overlaps with
+// the rest of the content with a dark background.
+.email-header-after-div {
+ max-height: 0;
+}
+
+.email-header-after-inside-div {
+ height: 30px;
+ background-color: #1b001f;
+}
+
+// Body content
+.email-body-td {
+ background-image: url('../images/mailer-new/common/header-bg-end.png');
+ background-position: left top;
+ background-repeat: no-repeat;
+}
+
+.email-body-padding-td {
+ padding: 0 32px 32px;
+ mso-padding-alt: 32px;
+}
+
+.email-body-padding-td {
+ & > p {
+ font-size: 14px;
+ line-height: 20px;
+ color: #17063b;
+
+ a {
+ color: #6364ff;
+ text-decoration: none;
+
+ &:hover {
+ color: #563acc !important;
+ }
+ }
+ }
+}
+
+// Footer
+.email-footer-td {
+ padding: 28px 32px 32px;
+ text-align: center;
+}
+
+.email-footer-logo-a {
+ display: inline-block;
+}
+
+.email-footer-p {
+ color: #9b94ab;
+ text-align: center;
+ font-size: 12px;
+ line-height: 20px;
+
+ a {
+ color: #9b94ab;
+ text-decoration: underline;
+ }
+
+ &:first-child {
+ margin-bottom: 12px;
+ }
+}
+
+// Button
+.email-btn-table {
+ margin: 0;
+ max-width: 100%;
+ border-collapse: separate;
+ border-radius: 8px;
+ background-color: #6364ff;
+}
+
+.email-btn-td {
+ height: 40px;
+ text-align: center;
+ mso-padding-alt: 0 35px;
+}
+
+.email-btn-a {
+ display: block;
+ border-radius: 8px;
+ padding-left: 35px;
+ padding-right: 35px;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ text-align: center;
+ font-family: Inter, 'Lucida Grande', sans-serif;
+ font-size: 14px;
+ font-weight: 600;
+ line-height: 20px;
+ color: #fff;
+ text-decoration: none;
+ transition: background-color 0.3s ease-in-out;
+}
+
+// Status
+.email-status-header-img {
+ vertical-align: top;
+ width: 48px;
+
+ img {
+ width: 48px;
+ height: 48px;
+ border-radius: 8px;
+ overflow: hidden;
+ }
+}
+
+.email-status-header-text {
+ padding-left: 16px;
+ padding-right: 16px;
+ vertical-align: middle;
+}
+
+.email-status-header-name {
+ font-size: 16px;
+ font-weight: 600;
+ line-height: 24px;
+ color: #17063b;
+}
+
+.email-status-header-handle {
+ font-size: 14px;
+ line-height: 20px;
+ color: #746a89;
+}
+
+.email-status-content {
+ padding-top: 24px;
+}
+
+.email-status-spoiler {
+ color: #746a89;
+ font-style: italic;
+ margin-bottom: 8px;
+}
+
+.email-status-prose {
+ p {
+ font-size: 14px;
+ line-height: 20px;
+ color: #17063b;
+ }
+
+ a {
+ color: #6364ff;
+ text-decoration: none;
+
+ &:hover {
+ color: #563acc !important;
+ }
+ }
+}
+
+.email-status-media {
+ margin-top: 16px;
+ font-size: 14px;
+ line-height: 20px;
+ color: #17063b;
+
+ img {
+ border-radius: 8px;
+ }
+
+ a {
+ color: #6364ff;
+ text-decoration: none;
+
+ &:hover {
+ color: #563acc !important;
+ }
+ }
+}
+
+.email-status-footer {
+ margin-top: 16px;
+ font-size: 12px;
+ line-height: 16px;
+ color: #746a89;
+
+ a {
+ color: #746a89;
+ }
+
+ a:hover {
+ color: #746a89 !important;
+ text-decoration: underline !important;
+ }
+}
+
+// Purple frame for emphasis
+.email-frame-table {
+ background-color: #efefff;
+ border-radius: 8px;
+}
+
+.email-frame-td {
+ padding: 16px;
+}
+
+.email-frame-wrapper-td {
+ padding-bottom: 16px;
+}
+
+.email-frame-td > p {
+ text-align: center;
+ font-size: 16px;
+ line-height: 24px;
+}
+
+// Checklist item
+.email-checklist-wrapper-td {
+ padding: 4px 0;
+}
+
+.email-checklist-table {
+ border-radius: 12px;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #efefff;
+ background-color: #fff;
+}
+
+.email-checklist-td {
+ padding: 16px;
+}
+
+.email-checklist-icons-td {
+ width: 84px;
+ vertical-align: top;
+}
+
+.email-checklist-icons-checkbox-td {
+ width: 20px;
+ vertical-align: middle;
+
+ img {
+ max-width: 100%;
+ width: 20px;
+ }
+}
+
+.email-checklist-icons-step-td {
+ width: 64px;
+ text-align: center;
+ vertical-align: middle;
+
+ img {
+ max-width: 100%;
+ width: 40px;
+ }
+}
+
+.email-checklist-text-td {
+ h3 {
+ margin: 0 0 4px;
+ color: #17063b;
+ font-size: 14px;
+ font-weight: 600;
+ line-height: 16.8px;
+ }
+
+ p {
+ margin: 0 0 2px;
+ color: #746a89;
+ font-size: 14px;
+ line-height: 16.8px;
+ }
+
+ .email-btn-table {
+ width: 100px;
+ }
+
+ .email-btn-td {
+ mso-padding-alt: 10px;
+ }
+
+ .email-btn-a {
+ padding-left: 10px;
+ padding-right: 10px;
+ }
+}
+
+// Responsive
+/* stylelint-disable-next-line media-feature-range-notation -- Basic media queries have better support across email clients. */
+@media only screen and (min-width: 740px) {
+ .email-desktop-p-8 {
+ padding: 32px !important;
+ }
+
+ .email-desktop-rounded-16px {
+ border-radius: 16px !important;
+ }
+
+ .email-header-td {
+ border-radius: 16px 16px 0 0 !important;
+ }
+
+ .email-desktop-flex {
+ display: flex;
}
}
diff --git a/app/javascript/styles/mastodon-light/diff.scss b/app/javascript/styles/mastodon-light/diff.scss
index 3777fccbf..520e91e28 100644
--- a/app/javascript/styles/mastodon-light/diff.scss
+++ b/app/javascript/styles/mastodon-light/diff.scss
@@ -145,10 +145,6 @@ html {
}
}
-.compose-form__autosuggest-wrapper,
-.poll__option input[type='text'],
-.compose-form .spoiler-input__input,
-.compose-form__poll-wrapper select,
.search__input,
.setting-text,
.report-dialog-modal__textarea,
@@ -172,28 +168,11 @@ html {
border-bottom: 0;
}
-.compose-form__poll-wrapper select {
- background: $simple-background-color
- url("data:image/svg+xml;utf8,")
- no-repeat right 8px center / auto 16px;
-}
-
-.compose-form__poll-wrapper,
-.compose-form__poll-wrapper .poll__footer {
- border-top-color: lighten($ui-base-color, 8%);
-}
-
.notification__filter-bar {
border: 1px solid lighten($ui-base-color, 8%);
border-top: 0;
}
-.compose-form .compose-form__buttons-wrapper {
- background: $ui-base-color;
- border: 1px solid lighten($ui-base-color, 8%);
- border-top: 0;
-}
-
.drawer__header,
.drawer__inner {
background: $white;
@@ -206,52 +185,6 @@ html {
no-repeat bottom / 100% auto;
}
-// Change the colors used in compose-form
-.compose-form {
- .compose-form__modifiers {
- .compose-form__upload__actions .icon-button,
- .compose-form__upload__warning .icon-button {
- color: lighten($white, 7%);
-
- &:active,
- &:focus,
- &:hover {
- color: $white;
- }
- }
- }
-
- .compose-form__buttons-wrapper {
- background: darken($ui-base-color, 6%);
- }
-
- .autosuggest-textarea__suggestions {
- background: darken($ui-base-color, 6%);
- }
-
- .autosuggest-textarea__suggestions__item {
- &:hover,
- &:focus,
- &:active,
- &.selected {
- background: lighten($ui-base-color, 4%);
- }
- }
-}
-
-.emoji-mart-bar {
- border-color: lighten($ui-base-color, 4%);
-
- &:first-child {
- background: darken($ui-base-color, 6%);
- }
-}
-
-.emoji-mart-search input {
- background: rgba($ui-base-color, 0.3);
- border-color: $ui-base-color;
-}
-
.upload-progress__backdrop {
background: $ui-base-color;
}
@@ -283,41 +216,11 @@ html {
background: $ui-base-color;
}
-.privacy-dropdown.active .privacy-dropdown__value.active .icon-button {
- color: $white;
-}
-
.account-gallery__item a {
background-color: $ui-base-color;
}
-// Change the colors used in the dropdown menu
-.dropdown-menu {
- background: $white;
-
- &__arrow::before {
- background-color: $white;
- }
-
- &__item {
- a,
- button {
- background: $white;
- color: $darker-text-color;
- }
- }
-}
-
// Change the text colors on inverted background
-.privacy-dropdown__option.active,
-.privacy-dropdown__option:hover,
-.privacy-dropdown__option.active .privacy-dropdown__option__content,
-.privacy-dropdown__option.active .privacy-dropdown__option__content strong,
-.privacy-dropdown__option:hover .privacy-dropdown__option__content,
-.privacy-dropdown__option:hover .privacy-dropdown__option__content strong,
-.dropdown-menu__item a:active,
-.dropdown-menu__item a:focus,
-.dropdown-menu__item a:hover,
.actions-modal ul li:not(:empty) a.active,
.actions-modal ul li:not(:empty) a.active button,
.actions-modal ul li:not(:empty) a:active,
@@ -326,7 +229,6 @@ html {
.actions-modal ul li:not(:empty) a:focus button,
.actions-modal ul li:not(:empty) a:hover,
.actions-modal ul li:not(:empty) a:hover button,
-.language-dropdown__dropdown__results__item.active,
.admin-wrapper .sidebar ul .simple-navigation-active-leaf a,
.simple_form .block-button,
.simple_form .button,
@@ -334,19 +236,6 @@ html {
color: $white;
}
-.language-dropdown__dropdown__results__item
- .language-dropdown__dropdown__results__item__common-name {
- color: lighten($ui-base-color, 8%);
-}
-
-.language-dropdown__dropdown__results__item.active
- .language-dropdown__dropdown__results__item__common-name {
- color: darken($ui-base-color, 12%);
-}
-
-.dropdown-menu__separator,
-.dropdown-menu__item.edited-timestamp__history__item,
-.dropdown-menu__container__header,
.compare-history-modal .report-modal__target,
.report-dialog-modal .poll__option.dialog-option {
border-bottom-color: lighten($ui-base-color, 4%);
@@ -380,10 +269,7 @@ html {
.reactions-bar__item:hover,
.reactions-bar__item:focus,
-.reactions-bar__item:active,
-.language-dropdown__dropdown__results__item:hover,
-.language-dropdown__dropdown__results__item:focus,
-.language-dropdown__dropdown__results__item:active {
+.reactions-bar__item:active {
background-color: $ui-base-color;
}
@@ -626,11 +512,6 @@ html {
}
}
-.reply-indicator {
- background: transparent;
- border: 1px solid lighten($ui-base-color, 8%);
-}
-
.status__content,
.reply-indicator__content {
a {
@@ -670,3 +551,43 @@ html {
background-color: rgba($ui-highlight-color, 0.15);
}
}
+
+.compose-form__actions .icon-button.active,
+.dropdown-button.active,
+.privacy-dropdown__option.active,
+.privacy-dropdown__option:focus,
+.language-dropdown__dropdown__results__item:focus,
+.language-dropdown__dropdown__results__item.active,
+.privacy-dropdown__option:focus .privacy-dropdown__option__content,
+.privacy-dropdown__option:focus .privacy-dropdown__option__content strong,
+.privacy-dropdown__option.active .privacy-dropdown__option__content,
+.privacy-dropdown__option.active .privacy-dropdown__option__content strong,
+.language-dropdown__dropdown__results__item:focus
+ .language-dropdown__dropdown__results__item__common-name,
+.language-dropdown__dropdown__results__item.active
+ .language-dropdown__dropdown__results__item__common-name {
+ color: $white;
+}
+
+.compose-form .spoiler-input__input {
+ color: lighten($ui-highlight-color, 8%);
+}
+
+.compose-form .autosuggest-textarea__textarea,
+.compose-form__highlightable,
+.poll__option input[type='text'] {
+ background: darken($ui-base-color, 10%);
+}
+
+.inline-follow-suggestions {
+ background-color: rgba($ui-highlight-color, 0.1);
+ border-bottom-color: rgba($ui-highlight-color, 0.3);
+}
+
+.inline-follow-suggestions__body__scrollable__card {
+ background: $white;
+}
+
+.inline-follow-suggestions__body__scroll-button__icon {
+ color: $white;
+}
diff --git a/app/javascript/styles/mastodon-light/variables.scss b/app/javascript/styles/mastodon-light/variables.scss
index ac8a83121..3cf5561ca 100644
--- a/app/javascript/styles/mastodon-light/variables.scss
+++ b/app/javascript/styles/mastodon-light/variables.scss
@@ -5,7 +5,7 @@ $white: #ffffff;
$classic-base-color: #282c37;
$classic-primary-color: #9baec8;
$classic-secondary-color: #d9e1e8;
-$classic-highlight-color: #858afa;
+$classic-highlight-color: #6364ff;
$blurple-600: #563acc; // Iris
$blurple-500: #6364ff; // Brand purple
@@ -34,7 +34,7 @@ $ui-button-tertiary-border-color: $blurple-500 !default;
$primary-text-color: $black !default;
$darker-text-color: $classic-base-color !default;
-$highlight-text-color: darken($ui-highlight-color, 8%) !default;
+$highlight-text-color: $ui-highlight-color !default;
$dark-text-color: #444b5d;
$action-button-color: #606984;
@@ -55,3 +55,8 @@ $account-background-color: $white !default;
}
$emojis-requiring-inversion: 'chains';
+
+.theme-mastodon-light {
+ --dropdown-border-color: #d9e1e8;
+ --dropdown-background-color: #fff;
+}
diff --git a/app/javascript/styles/mastodon/_mixins.scss b/app/javascript/styles/mastodon/_mixins.scss
index dcfab6bd0..d7f8586dd 100644
--- a/app/javascript/styles/mastodon/_mixins.scss
+++ b/app/javascript/styles/mastodon/_mixins.scss
@@ -15,13 +15,14 @@
outline: 0;
box-sizing: border-box;
width: 100%;
- border: 0;
box-shadow: none;
font-family: inherit;
background: $ui-base-color;
color: $darker-text-color;
border-radius: 4px;
- font-size: 14px;
+ border: 1px solid lighten($ui-base-color, 8%);
+ font-size: 17px;
+ line-height: normal;
margin: 0;
}
diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss
index a65f35e7b..3f538d08d 100644
--- a/app/javascript/styles/mastodon/admin.scss
+++ b/app/javascript/styles/mastodon/admin.scss
@@ -1314,6 +1314,9 @@ a.sparkline {
&__label {
padding: 15px;
+ display: flex;
+ gap: 8px;
+ align-items: center;
}
&__rules {
@@ -1324,6 +1327,9 @@ a.sparkline {
&__rule {
cursor: pointer;
padding: 15px;
+ display: flex;
+ gap: 8px;
+ align-items: center;
}
}
diff --git a/app/javascript/styles/mastodon/basics.scss b/app/javascript/styles/mastodon/basics.scss
index 6714b2426..28dad81da 100644
--- a/app/javascript/styles/mastodon/basics.scss
+++ b/app/javascript/styles/mastodon/basics.scss
@@ -8,7 +8,7 @@
body {
font-family: $font-sans-serif, sans-serif;
- background: darken($ui-base-color, 7%);
+ background: darken($ui-base-color, 8%);
font-size: 13px;
line-height: 18px;
font-weight: 400;
diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss
index b148ff1fe..4b985d253 100644
--- a/app/javascript/styles/mastodon/components.scss
+++ b/app/javascript/styles/mastodon/components.scss
@@ -187,8 +187,8 @@
.icon {
flex: 0 0 auto;
- width: 20px;
- height: 20px;
+ width: 24px;
+ height: 24px;
aspect-ratio: 1;
path {
@@ -200,7 +200,7 @@
display: inline-flex;
color: $action-button-color;
border: 0;
- padding: 2px;
+ padding: 0;
border-radius: 4px;
background: transparent;
cursor: pointer;
@@ -368,46 +368,155 @@ body > [data-popper-placement] {
}
}
-.compose-form {
- padding: 15px;
+.autosuggest-textarea {
+ &__textarea {
+ background: transparent;
+ min-height: 100px;
+ padding-bottom: 0;
+ resize: none;
+ scrollbar-color: initial;
- &__sensitive-button {
- padding: 10px;
- padding-top: 0;
- font-size: 14px;
- font-weight: 500;
-
- &.active {
- color: $highlight-text-color;
- }
-
- input[type='checkbox'] {
- appearance: none;
- display: inline-block;
- position: relative;
- border: 1px solid $ui-primary-color;
- box-sizing: border-box;
- width: 18px;
- height: 18px;
- flex: 0 0 auto;
- margin-inline-end: 10px;
- top: -1px;
- border-radius: 4px;
- vertical-align: middle;
- cursor: inherit;
-
- &:checked {
- border-color: $highlight-text-color;
- background: $highlight-text-color
- url("data:image/svg+xml;utf8,")
- center center no-repeat;
- }
+ &::-webkit-scrollbar {
+ all: unset;
}
}
- .compose-form__warning {
+ &__suggestions {
+ box-shadow: var(--dropdown-shadow);
+ background: $ui-base-color;
+ border: 1px solid lighten($ui-base-color, 14%);
+ border-radius: 0 0 4px 4px;
+ color: $secondary-text-color;
+ font-size: 14px;
+ padding: 0;
+
+ &__item {
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
+ height: 48px;
+ cursor: pointer;
+ font-size: 14px;
+ line-height: 20px;
+ letter-spacing: 0.25px;
+ color: $secondary-text-color;
+
+ &:last-child {
+ border-radius: 0 0 4px 4px;
+ }
+
+ &:hover,
+ &:focus,
+ &:active,
+ &.selected {
+ background: $ui-highlight-color;
+ color: $primary-text-color;
+
+ .autosuggest-account .display-name__account {
+ color: inherit;
+ }
+ }
+ }
+ }
+}
+
+.autosuggest-account,
+.autosuggest-emoji,
+.autosuggest-hashtag {
+ flex: 1 0 0;
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ justify-content: flex-start;
+ gap: 12px;
+ padding: 8px 12px;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.autosuggest-account {
+ .display-name {
+ font-weight: 400;
+ display: flex;
+ flex-direction: column;
+ flex: 1 0 0;
+ }
+
+ .display-name__account {
+ display: block;
+ line-height: 16px;
+ font-size: 12px;
+ color: $dark-text-color;
+ }
+}
+
+.autosuggest-hashtag {
+ justify-content: space-between;
+
+ &__name {
+ flex: 1 1 auto;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+
+ &__uses {
+ flex: 0 0 auto;
+ text-align: end;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+}
+
+.autosuggest-emoji {
+ &__name {
+ flex: 1 0 0;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+}
+
+.autosuggest-account .account__avatar,
+.autosuggest-emoji img {
+ display: block;
+ width: 24px;
+ height: 24px;
+ flex: 0 0 auto;
+}
+
+.compose-form {
+ display: flex;
+ flex-direction: column;
+ gap: 32px;
+
+ .layout-multiple-columns &,
+ .column & {
+ padding: 15px;
+ }
+
+ &__highlightable {
+ display: flex;
+ flex-direction: column;
+ gap: 16px;
+ flex: 0 1 auto;
+ border-radius: 4px;
+ border: 1px solid lighten($ui-base-color, 8%);
+ transition: border-color 300ms linear;
+ min-height: 0;
+ position: relative;
+ background: $ui-base-color;
+ overflow-y: auto;
+
+ &.active {
+ transition: none;
+ border-color: $ui-highlight-color;
+ }
+ }
+
+ &__warning {
color: $inverted-text-color;
- margin-bottom: 10px;
background: $ui-primary-color;
box-shadow: 0 2px 6px rgba($base-shadow-color, 0.3);
padding: 8px 10px;
@@ -439,32 +548,27 @@ body > [data-popper-placement] {
}
}
- .emoji-picker-dropdown {
- position: absolute;
- top: 0;
- inset-inline-end: 0;
- }
-
- .compose-form__autosuggest-wrapper {
- position: relative;
- }
-
- .autosuggest-textarea,
- .autosuggest-input,
.spoiler-input {
- position: relative;
- width: 100%;
- }
+ display: flex;
+ align-items: stretch;
- .spoiler-input {
- height: 0;
- transform-origin: bottom;
- opacity: 0;
+ &__border {
+ background: url('../images/warning-stripes.svg') repeat-y;
+ width: 5px;
+ flex: 0 0 auto;
- &.spoiler-input--visible {
- height: 36px;
- margin-bottom: 11px;
- opacity: 1;
+ &:first-child {
+ border-start-start-radius: 4px;
+ }
+
+ &:last-child {
+ border-start-end-radius: 4px;
+ }
+ }
+
+ .autosuggest-input {
+ flex: 1 1 auto;
+ border-bottom: 1px solid lighten($ui-base-color, 8%);
}
}
@@ -474,265 +578,303 @@ body > [data-popper-placement] {
box-sizing: border-box;
width: 100%;
margin: 0;
- color: $inverted-text-color;
- background: $simple-background-color;
- padding: 10px;
+ color: $secondary-text-color;
+ background: $ui-base-color;
font-family: inherit;
font-size: 14px;
- resize: vertical;
+ padding: 12px;
+ line-height: normal;
border: 0;
outline: 0;
- &::placeholder {
- color: $dark-text-color;
- }
-
&:focus {
outline: 0;
}
-
- @media screen and (width <= 600px) {
- font-size: 16px;
- }
}
.spoiler-input__input {
- border-radius: 4px;
+ padding: 12px 12px - 5px;
+ background: mix($ui-base-color, $ui-highlight-color, 85%);
+ color: $highlight-text-color;
}
- .autosuggest-textarea__textarea {
- min-height: 100px;
- border-radius: 4px 4px 0 0;
- padding-bottom: 0;
- padding-right: 10px + 22px; // Cannot use inline-end because of dir=auto
- resize: none;
- scrollbar-color: initial;
-
- &::-webkit-scrollbar {
- all: unset;
- }
-
- @media screen and (width <= 600px) {
- height: 100px !important; // Prevent auto-resize textarea
- resize: vertical;
- }
- }
-
- .autosuggest-textarea__suggestions-wrapper {
- position: relative;
- height: 0;
- }
-
- .autosuggest-textarea__suggestions {
- box-sizing: border-box;
- display: none;
- position: absolute;
- top: 100%;
- width: 100%;
- z-index: 99;
- box-shadow: 4px 4px 6px rgba($base-shadow-color, 0.4);
- background: $ui-secondary-color;
- border-radius: 0 0 4px 4px;
- color: $inverted-text-color;
- font-size: 14px;
- padding: 6px;
-
- &.autosuggest-textarea__suggestions--visible {
- display: block;
- }
- }
-
- .autosuggest-textarea__suggestions__item {
- padding: 10px;
- cursor: pointer;
- border-radius: 4px;
-
- &:hover,
- &:focus,
- &:active,
- &.selected {
- background: darken($ui-secondary-color, 10%);
- }
- }
-
- .autosuggest-account,
- .autosuggest-emoji,
- .autosuggest-hashtag {
+ &__dropdowns {
display: flex;
- flex-direction: row;
align-items: center;
- justify-content: flex-start;
- line-height: 18px;
- font-size: 14px;
- }
+ gap: 8px;
- .autosuggest-hashtag {
- justify-content: space-between;
-
- &__name {
- flex: 1 1 auto;
+ & > div {
overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- }
-
- strong {
- font-weight: 500;
- }
-
- &__uses {
- flex: 0 0 auto;
- text-align: end;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- }
- }
-
- .autosuggest-account-icon,
- .autosuggest-emoji img {
- display: block;
- margin-inline-end: 8px;
- width: 16px;
- height: 16px;
- }
-
- .autosuggest-account .display-name__account {
- color: $lighter-text-color;
- }
-
- .compose-form__modifiers {
- color: $inverted-text-color;
- font-family: inherit;
- font-size: 14px;
- background: $simple-background-color;
-
- .compose-form__upload-wrapper {
- overflow: hidden;
- }
-
- .compose-form__uploads-wrapper {
display: flex;
- flex-direction: row;
- padding: 5px;
- flex-wrap: wrap;
+ }
+ }
+
+ &__uploads {
+ display: flex;
+ gap: 8px;
+ padding: 0 12px;
+ flex-wrap: wrap;
+ align-self: stretch;
+ align-items: flex-start;
+ align-content: flex-start;
+ justify-content: center;
+ }
+
+ &__upload {
+ flex: 1 1 0;
+ min-width: calc(50% - 8px);
+
+ &__actions {
+ display: flex;
+ align-items: flex-start;
+ justify-content: space-between;
+ padding: 8px;
}
- .compose-form__upload {
- flex: 1 1 0;
- min-width: 40%;
- margin: 5px;
-
- &__actions {
- background: linear-gradient(
- 180deg,
- rgba($base-shadow-color, 0.8) 0,
- rgba($base-shadow-color, 0.35) 80%,
- transparent
- );
- display: flex;
- align-items: flex-start;
- justify-content: space-between;
- }
-
- .icon-button {
- flex: 0 1 auto;
- color: $secondary-text-color;
- font-size: 14px;
- font-weight: 500;
- padding: 10px;
- font-family: inherit;
-
- .icon {
- width: 15px;
- height: 15px;
- }
-
- &:hover,
- &:focus,
- &:active {
- color: lighten($secondary-text-color, 7%);
- }
- }
-
- &__warning {
- position: absolute;
- z-index: 2;
- bottom: 0;
- inset-inline-start: 0;
- inset-inline-end: 0;
- box-sizing: border-box;
- background: linear-gradient(
- 0deg,
- rgba($base-shadow-color, 0.8) 0,
- rgba($base-shadow-color, 0.35) 80%,
- transparent
- );
- }
+ &__preview {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ border-radius: 6px;
+ z-index: -1;
+ top: 0;
+ inset-inline-start: 0;
}
- .compose-form__upload-thumbnail {
- border-radius: 4px;
- background-color: $base-shadow-color;
+ &__thumbnail {
+ width: 100%;
+ height: 144px;
+ border-radius: 6px;
background-position: center;
background-size: cover;
background-repeat: no-repeat;
- height: 140px;
- width: 100%;
overflow: hidden;
}
+
+ .icon-button {
+ flex: 0 0 auto;
+ color: $white;
+ background: rgba(0, 0, 0, 75%);
+ border-radius: 6px;
+ font-size: 12px;
+ line-height: 16px;
+ font-weight: 500;
+ padding: 4px 8px;
+ font-family: inherit;
+
+ .icon {
+ width: 15px;
+ height: 15px;
+ }
+ }
+
+ .icon-button.compose-form__upload__delete {
+ padding: 3px;
+ border-radius: 50%;
+
+ .icon {
+ width: 18px;
+ height: 18px;
+ }
+ }
+
+ &__warning {
+ position: absolute;
+ z-index: 2;
+ bottom: 0;
+ inset-inline-start: 0;
+ inset-inline-end: 0;
+ padding: 8px;
+
+ .icon-button.active {
+ color: #ffbe2e;
+ background: rgba(0, 0, 0, 75%);
+ }
+ }
}
- .compose-form__buttons-wrapper {
- padding: 10px;
- background: darken($simple-background-color, 8%);
- border-radius: 0 0 4px 4px;
+ &__footer {
display: flex;
- justify-content: space-between;
- flex: 0 0 auto;
+ flex-direction: column;
+ gap: 12px;
+ padding: 12px;
+ padding-top: 0;
+ }
- .compose-form__buttons {
+ &__submit {
+ display: flex;
+ align-items: center;
+ flex: 1 1 auto;
+ max-width: 100%;
+ overflow: hidden;
+ }
+
+ &__buttons {
+ display: flex;
+ gap: 8px;
+ align-items: center;
+ flex: 1 1 auto;
+
+ & > div {
display: flex;
- gap: 2px;
-
- .icon-button {
- height: 100%;
- }
-
- .compose-form__upload-button-icon {
- line-height: 27px;
- }
-
- .compose-form__sensitive-button {
- display: none;
-
- &.compose-form__sensitive-button--visible {
- display: block;
- }
-
- .compose-form__sensitive-button__icon {
- line-height: 27px;
- }
- }
}
- .icon-button,
- .text-icon-button {
- box-sizing: content-box;
- padding: 0 3px;
+ .icon-button {
+ padding: 3px;
}
- .character-counter__wrapper {
- align-self: center;
- margin-inline-end: 4px;
+ .icon-button .icon {
+ width: 18px;
+ height: 18px;
}
}
- .compose-form__publish {
+ &__actions {
display: flex;
- justify-content: flex-end;
- min-width: 0;
+ align-items: center;
flex: 0 0 auto;
+ gap: 12px;
+ flex-wrap: wrap;
+
+ .button {
+ display: block; // Otherwise text-ellipsis doesn't work
+ font-size: 14px;
+ line-height: normal;
+ font-weight: 700;
+ flex: 1 1 auto;
+ padding: 5px 12px;
+ border-radius: 4px;
+ }
+
+ .icon-button {
+ box-sizing: content-box;
+ color: $highlight-text-color;
+
+ &:hover,
+ &:focus,
+ &:active {
+ color: $highlight-text-color;
+ }
+
+ &.disabled {
+ color: $highlight-text-color;
+ opacity: 0.5;
+ }
+
+ &.active {
+ background: $ui-highlight-color;
+ color: $primary-text-color;
+ }
+ }
+ }
+
+ &__poll {
+ display: flex;
+ flex-direction: column;
+ align-self: stretch;
+ gap: 8px;
+
+ .poll__option {
+ padding: 0 12px;
+ gap: 8px;
+
+ &.empty:not(:focus-within) {
+ opacity: 0.5;
+ }
+ }
+
+ .poll__input {
+ width: 17px;
+ height: 17px;
+ border-color: $darker-text-color;
+ }
+
+ &__footer {
+ display: flex;
+ align-items: center;
+ gap: 16px;
+ padding-inline-start: 37px;
+ padding-inline-end: 40px;
+
+ &__sep {
+ width: 1px;
+ height: 22px;
+ background: lighten($ui-base-color, 8%);
+ flex: 0 0 auto;
+ }
+ }
+
+ &__select {
+ display: flex;
+ flex-direction: column;
+ gap: 2px;
+ flex: 1 1 auto;
+ min-width: 0;
+
+ &__label {
+ flex: 0 0 auto;
+ font-size: 11px;
+ font-weight: 500;
+ line-height: 16px;
+ letter-spacing: 0.5px;
+ color: $darker-text-color;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ }
+
+ &__value {
+ flex: 0 0 auto;
+ appearance: none;
+ background: transparent;
+ border: none;
+ padding: 0;
+ font-size: 14px;
+ font-weight: 500;
+ line-height: 20px;
+ letter-spacing: 0.1px;
+ color: $highlight-text-color;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ }
+ }
+ }
+}
+
+.dropdown-button {
+ display: flex;
+ align-items: center;
+ gap: 4px;
+ background: transparent;
+ color: $highlight-text-color;
+ border-radius: 6px;
+ border: 1px solid $highlight-text-color;
+ padding: 4px 8px;
+ font-size: 13px;
+ line-height: normal;
+ font-weight: 400;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+
+ .icon {
+ width: 15px;
+ height: 15px;
+ flex: 0 0 auto;
+ }
+
+ &__label {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ flex: 1 1 auto;
+ }
+
+ &.active {
+ background: $ui-highlight-color;
+ border-color: $ui-highlight-color;
+ color: $primary-text-color;
padding-top: 10px;
.compose-form__publish-button-wrapper {
@@ -763,11 +905,14 @@ body > [data-popper-placement] {
cursor: default;
font-family: $font-sans-serif, sans-serif;
font-size: 14px;
- font-weight: 600;
- color: $lighter-text-color;
+ font-weight: 400;
+ line-height: normal;
+ color: $darker-text-color;
+ flex: 1 0 auto;
+ text-align: end;
&.character-counter--over {
- color: $warning-red;
+ color: $error-red;
}
}
@@ -861,14 +1006,15 @@ body > [data-popper-placement] {
}
.status__content,
+.edit-indicator__content,
.reply-indicator__content {
position: relative;
- font-size: 15px;
- line-height: 22px;
word-wrap: break-word;
font-weight: 400;
overflow: hidden;
text-overflow: ellipsis;
+ font-size: 15px;
+ line-height: 22px;
padding-top: 2px;
color: $primary-text-color;
@@ -953,6 +1099,178 @@ body > [data-popper-placement] {
}
}
+.reply-indicator {
+ display: grid;
+ grid-template-columns: 46px minmax(0, 1fr);
+ grid-template-rows: 46px max-content;
+ gap: 0 10px;
+
+ &.quote-indicator {
+ background: $success-green;
+ }
+
+ .detailed-status__display-name {
+ margin-bottom: 4px;
+ }
+
+ .detailed-status__display-avatar {
+ grid-column-start: 1;
+ grid-row-start: 1;
+ grid-row-end: span 1;
+ }
+
+ &__main {
+ grid-column-start: 2;
+ grid-row-start: 1;
+ grid-row-end: span 2;
+ }
+
+ .display-name {
+ font-size: 14px;
+ line-height: 16px;
+
+ &__account {
+ display: none;
+ }
+ }
+
+ &__line {
+ grid-column-start: 1;
+ grid-row-start: 2;
+ grid-row-end: span 1;
+ position: relative;
+
+ &::before {
+ display: block;
+ content: '';
+ position: absolute;
+ inset-inline-start: 50%;
+ top: 4px;
+ transform: translateX(-50%);
+ background: lighten($ui-base-color, 8%);
+ width: 2px;
+ height: calc(100% + 32px - 8px); // Account for gap to next element
+ }
+ }
+
+ &__content {
+ font-size: 14px;
+ line-height: 20px;
+ letter-spacing: 0.25px;
+ display: -webkit-box;
+ -webkit-line-clamp: 4;
+ -webkit-box-orient: vertical;
+ padding: 0;
+ max-height: 4 * 20px;
+ overflow: hidden;
+ color: $darker-text-color;
+ }
+
+ &__attachments {
+ margin-top: 4px;
+ color: $darker-text-color;
+ font-size: 12px;
+ line-height: 16px;
+ display: flex;
+ align-items: center;
+ gap: 4px;
+
+ .icon {
+ width: 18px;
+ height: 18px;
+ }
+ }
+}
+
+.edit-indicator {
+ border-radius: 4px 4px 0 0;
+ background: lighten($ui-base-color, 4%);
+ padding: 12px;
+ overflow-y: auto;
+ flex: 0 0 auto;
+ border-bottom: 0.5px solid lighten($ui-base-color, 8%);
+ display: flex;
+ flex-direction: column;
+ gap: 4px;
+
+ &__header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ color: $darker-text-color;
+ font-size: 12px;
+ line-height: 16px;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+
+ &__cancel {
+ display: flex;
+
+ .icon {
+ width: 18px;
+ height: 18px;
+ }
+ }
+
+ &__display-name {
+ display: flex;
+ gap: 4px;
+
+ a {
+ color: inherit;
+ text-decoration: none;
+
+ &:hover,
+ &:focus,
+ &:active {
+ text-decoration: underline;
+ }
+ }
+ }
+
+ &__content {
+ color: $secondary-text-color;
+ font-size: 14px;
+ line-height: 20px;
+ letter-spacing: 0.25px;
+ padding-top: 0 !important;
+ display: -webkit-box;
+ -webkit-line-clamp: 4;
+ -webkit-box-orient: vertical;
+ max-height: 4 * 20px;
+ overflow: hidden;
+
+ a {
+ color: $highlight-text-color;
+ }
+ }
+
+ &__attachments {
+ color: $darker-text-color;
+ font-size: 12px;
+ line-height: 16px;
+ opacity: 0.75;
+ display: flex;
+ align-items: center;
+ gap: 4px;
+
+ .icon {
+ width: 18px;
+ height: 18px;
+ }
+ }
+}
+
+.edit-indicator__content,
+.reply-indicator__content {
+ .emojione {
+ width: 18px;
+ height: 18px;
+ margin: -3px 0 0;
+ }
+}
+
.announcements__item__content {
word-wrap: break-word;
overflow-y: auto;
@@ -1108,17 +1426,6 @@ body > [data-popper-placement] {
appearance: none;
}
- .status__avatar,
- .detailed-status__display-avatar {
- position: absolute;
- top: 5px !important;
- left: 5px !important;
- }
-
- .display-name {
- padding-left: 56px;
- }
-
.detailed-status__display-name {
margin-bottom: 0;
line-height: unset;
@@ -1316,7 +1623,8 @@ body > [data-popper-placement] {
color: $dark-text-color;
}
-.status__info .status__display-name {
+.status__info .status__display-name,
+.edit-indicator .status__display-name {
max-width: 100%;
display: flex;
font-size: 15px;
@@ -1529,8 +1837,7 @@ body > [data-popper-placement] {
.icon {
width: 15px;
height: 15px;
- position: relative;
- top: 0.145em;
+ vertical-align: middle;
}
}
@@ -1590,15 +1897,6 @@ body > [data-popper-placement] {
line-height: 18px;
}
-.reply-indicator__content {
- color: $inverted-text-color;
- font-size: 14px;
-
- a {
- color: $lighter-text-color;
- }
-}
-
.domain {
padding: 10px;
border-bottom: 1px solid lighten($ui-base-color, 8%);
@@ -1809,7 +2107,6 @@ a .account__avatar {
}
.status__display-name,
-.reply-indicator__display-name,
.detailed-status__display-name,
a.account__display-name {
&:hover .display-name strong {
@@ -2067,57 +2364,45 @@ a.account__display-name {
}
.navigation-bar {
- padding: 15px;
display: flex;
align-items: center;
flex-shrink: 0;
cursor: default;
gap: 10px;
- color: $darker-text-color;
- strong {
- color: $secondary-text-color;
+ .column > & {
+ padding: 15px;
}
- a {
- color: inherit;
- text-decoration: none;
- }
+ .account {
+ border-bottom: 0;
+ padding: 0;
+ flex: 1 1 auto;
+ min-width: 0;
- .navigation-bar__actions {
- position: relative;
+ &__display-name {
+ font-size: 16px;
+ line-height: 24px;
+ letter-spacing: 0.15px;
+ font-weight: 500;
- .compose__action-bar .icon-button {
- pointer-events: auto;
- transform: scale(1, 1) translate(0, 0);
- opacity: 1;
-
- .icon {
- width: 24px;
- height: 24px;
+ .display-name__account {
+ font-size: 14px;
+ line-height: 20px;
+ letter-spacing: 0.1px;
}
}
}
-}
-.navigation-bar__profile {
- display: flex;
- flex-direction: column;
- flex: 1 1 auto;
- line-height: 20px;
-}
+ .icon-button {
+ padding: 8px;
+ color: $secondary-text-color;
+ }
-.navigation-bar__profile-account {
- display: inline;
- font-weight: 500;
- overflow: hidden;
- text-overflow: ellipsis;
-}
-
-.navigation-bar__profile-edit {
- display: inline;
- color: inherit;
- text-decoration: none;
+ .icon-button .icon {
+ width: 24px;
+ height: 24px;
+ }
}
.dropdown-animation {
@@ -2295,6 +2580,7 @@ a.account__display-name {
&__panels {
display: flex;
justify-content: center;
+ gap: 16px;
width: 100%;
height: 100%;
min-height: 100vh;
@@ -2327,7 +2613,6 @@ a.account__display-name {
flex-direction: column;
@media screen and (min-width: $no-gap-breakpoint) {
- padding: 0 10px;
max-width: 600px;
}
}
@@ -2453,7 +2738,7 @@ $ui-header-height: 55px;
.drawer__tab {
display: flex;
flex: 1 1 auto;
- padding: 15px 5px 13px;
+ padding: 13px 3px 11px;
color: $darker-text-color;
text-decoration: none;
text-align: center;
@@ -2577,6 +2862,7 @@ $ui-header-height: 55px;
.columns-area__panels {
min-height: calc(100vh - $ui-header-height);
+ gap: 0;
}
.columns-area__panels__pane--navigational {
@@ -2976,21 +3262,6 @@ $ui-header-height: 55px;
}
}
-.compose-form__highlightable {
- display: flex;
- flex-direction: column;
- flex: 0 1 auto;
- border-radius: 4px;
- transition: box-shadow 300ms linear;
- min-height: 0;
- position: relative;
-
- &.active {
- transition: none;
- box-shadow: 0 0 0 6px rgba(lighten($highlight-text-color, 8%), 0.7);
- }
-}
-
.compose-panel {
width: 285px;
margin-top: 10px;
@@ -3019,32 +3290,9 @@ $ui-header-height: 55px;
}
}
- .navigation-bar {
- flex: 0 1 48px;
- }
-
.compose-form {
- flex: 1;
- display: flex;
- flex-direction: column;
- min-height: 310px;
- padding-bottom: 71px;
- margin-bottom: -71px;
- }
-
- .compose-form__autosuggest-wrapper {
- overflow-y: auto;
- background-color: $white;
- border-radius: 4px 4px 0 0;
- flex: 0 1 auto;
- }
-
- .autosuggest-textarea__textarea {
- overflow-y: hidden;
- }
-
- .compose-form__upload-thumbnail {
- height: 80px;
+ flex: 1 1 auto;
+ min-height: 0;
}
}
@@ -3064,6 +3312,10 @@ $ui-header-height: 55px;
height: 30px;
width: auto;
}
+
+ &__logo {
+ margin-bottom: 12px;
+ }
}
.navigation-panel,
@@ -3095,7 +3347,7 @@ $ui-header-height: 55px;
position: absolute;
top: 0;
inset-inline-start: 0;
- background: $ui-base-color;
+ background: darken($ui-base-color, 4%);
box-sizing: border-box;
padding: 0;
display: flex;
@@ -3111,7 +3363,7 @@ $ui-header-height: 55px;
}
.drawer__inner__mastodon {
- background: $ui-base-color
+ background: darken($ui-base-color, 4%)
url('data:image/svg+xml;utf8,')
no-repeat bottom / 100% auto;
flex: 1;
@@ -3133,24 +3385,20 @@ $ui-header-height: 55px;
}
}
-.pseudo-drawer {
- background: lighten($ui-base-color, 13%);
- font-size: 13px;
- text-align: start;
-}
-
.drawer__header {
flex: 0 0 auto;
font-size: 16px;
- background: $ui-base-color;
+ background: darken($ui-base-color, 4%);
margin-bottom: 10px;
display: flex;
flex-direction: row;
border-radius: 4px;
overflow: hidden;
- a:hover {
- background: lighten($ui-base-color, 3%);
+ a:hover,
+ a:focus,
+ a:active {
+ background: $ui-base-color;
}
}
@@ -3336,7 +3584,7 @@ $ui-header-height: 55px;
align-items: center;
gap: 5px;
font-size: 16px;
- padding: 15px;
+ padding: 13px;
text-decoration: none;
overflow: hidden;
white-space: nowrap;
@@ -3360,7 +3608,7 @@ $ui-header-height: 55px;
&--transparent {
background: transparent;
- color: $ui-secondary-color;
+ color: $secondary-text-color;
&:hover,
&:focus,
@@ -3935,7 +4183,7 @@ a.status-card {
gap: 5px;
margin: 0;
border: 0;
- padding: 15px;
+ padding: 13px;
padding-inline-end: 0;
color: inherit;
background: transparent;
@@ -4665,10 +4913,7 @@ a.status-card {
}
.emoji-picker-dropdown__menu {
- background: $simple-background-color;
position: relative;
- box-shadow: var(--dropdown-shadow);
- border-radius: 4px;
margin-top: 5px;
z-index: 2;
@@ -4691,11 +4936,12 @@ a.status-card {
.emoji-picker-dropdown__modifiers__menu {
position: absolute;
z-index: 4;
- top: -4px;
- inset-inline-start: -8px;
- background: $simple-background-color;
+ top: -5px;
+ inset-inline-start: -9px;
+ background: var(--dropdown-background-color);
+ border: 1px solid var(--dropdown-border-color);
border-radius: 4px;
- box-shadow: 1px 2px 6px rgba($base-shadow-color, 0.2);
+ box-shadow: var(--dropdown-shadow);
overflow: hidden;
button {
@@ -4708,7 +4954,7 @@ a.status-card {
&:hover,
&:focus,
&:active {
- background: rgba($ui-secondary-color, 0.4);
+ background: var(--dropdown-border-color);
}
}
@@ -4777,15 +5023,17 @@ a.status-card {
}
.upload-progress {
- padding: 10px;
- color: $lighter-text-color;
+ color: $darker-text-color;
overflow: hidden;
display: flex;
- gap: 10px;
+ gap: 8px;
+ align-items: center;
+ padding: 0 12px;
.icon {
width: 24px;
height: 24px;
+ color: $ui-highlight-color;
}
span {
@@ -4804,7 +5052,7 @@ a.status-card {
width: 100%;
height: 6px;
border-radius: 6px;
- background: darken($simple-background-color, 8%);
+ background: darken($ui-base-color, 8%);
position: relative;
margin-top: 5px;
}
@@ -4858,12 +5106,16 @@ a.status-card {
filter: none;
}
-.privacy-dropdown__dropdown {
- background: $simple-background-color;
+.privacy-dropdown__dropdown,
+.language-dropdown__dropdown {
box-shadow: var(--dropdown-shadow);
+ background: var(--dropdown-background-color);
+ border: 1px solid var(--dropdown-border-color);
+ padding: 4px;
border-radius: 4px;
overflow: hidden;
z-index: 2;
+ width: 300px;
&.top {
transform-origin: 50% 100%;
@@ -4884,28 +5136,41 @@ a.status-card {
}
.privacy-dropdown__option {
- color: $inverted-text-color;
- padding: 10px;
+ font-size: 14px;
+ line-height: 20px;
+ letter-spacing: 0.25px;
+ padding: 8px 12px;
cursor: pointer;
display: flex;
+ align-items: center;
+ gap: 12px;
+ border-radius: 4px;
+ color: $primary-text-color;
&:hover,
+ &:active {
+ background: var(--dropdown-border-color);
+ }
+
+ &:focus,
&.active {
background: $ui-highlight-color;
color: $primary-text-color;
outline: 0;
- .privacy-dropdown__option__content {
+ .privacy-dropdown__option__content,
+ .privacy-dropdown__option__content strong,
+ .privacy-dropdown__option__additional {
color: $primary-text-color;
-
- strong {
- color: $primary-text-color;
- }
}
}
- &.active:hover {
- background: lighten($ui-highlight-color, 4%);
+ &__additional {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ color: $darker-text-color;
+ cursor: help;
}
}
@@ -4913,17 +5178,16 @@ a.status-card {
display: flex;
align-items: center;
justify-content: center;
- margin-inline-end: 10px;
}
.privacy-dropdown__option__content {
flex: 1 1 auto;
- color: $lighter-text-color;
+ color: $darker-text-color;
strong {
+ color: $primary-text-color;
font-weight: 500;
display: block;
- color: $inverted-text-color;
@each $lang in $cjk-langs {
&:lang(#{$lang}) {
@@ -4935,64 +5199,78 @@ a.status-card {
.language-dropdown {
&__dropdown {
- background: $simple-background-color;
- box-shadow: var(--dropdown-shadow);
- border-radius: 4px;
- overflow: hidden;
- z-index: 2;
-
- &.top {
- transform-origin: 50% 100%;
- }
-
- &.bottom {
- transform-origin: 50% 0;
- }
+ padding: 0;
.emoji-mart-search {
- padding-inline-end: 10px;
+ padding: 10px;
+ background: var(--dropdown-background-color);
+
+ input {
+ padding: 8px 12px;
+ background: $ui-base-color;
+ border: 1px solid lighten($ui-base-color, 8%);
+ color: $darker-text-color;
+
+ @media screen and (width <= 600px) {
+ font-size: 16px;
+ line-height: 24px;
+ letter-spacing: 0.5px;
+ }
+ }
}
.emoji-mart-search-icon {
- inset-inline-end: 10px + 5px;
+ inset-inline-end: 15px;
+ opacity: 1;
+ color: $darker-text-color;
+
+ .icon {
+ width: 18px;
+ height: 18px;
+ }
+
+ &:disabled {
+ opacity: 0.38;
+ }
}
.emoji-mart-scroll {
padding: 0 10px 10px;
+ background: var(--dropdown-background-color);
}
&__results {
&__item {
cursor: pointer;
- color: $inverted-text-color;
+ color: $primary-text-color;
+ font-size: 14px;
+ line-height: 20px;
+ letter-spacing: 0.25px;
font-weight: 500;
- padding: 10px;
+ padding: 8px 12px;
border-radius: 4px;
- display: flex;
- gap: 6px;
- align-items: center;
-
- &:focus,
- &:active,
- &:hover {
- background: $ui-secondary-color;
- }
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
&__common-name {
color: $darker-text-color;
+ font-weight: 400;
}
+ &:active,
+ &:hover {
+ background: var(--dropdown-border-color);
+ }
+
+ &:focus,
&.active {
background: $ui-highlight-color;
color: $primary-text-color;
outline: 0;
.language-dropdown__dropdown__results__item__common-name {
- color: $secondary-text-color;
- }
-
- &:hover {
- background: lighten($ui-highlight-color, 4%);
+ color: $primary-text-color;
}
}
}
@@ -5001,9 +5279,13 @@ a.status-card {
}
.search {
- margin-bottom: 10px;
+ margin-bottom: 32px;
position: relative;
+ .layout-multiple-columns & {
+ margin-bottom: 10px;
+ }
+
&__popout {
box-sizing: border-box;
display: none;
@@ -5012,6 +5294,7 @@ a.status-card {
margin-top: -2px;
width: 100%;
background: $ui-base-color;
+ border: 1px solid lighten($ui-base-color, 8%);
border-radius: 0 0 4px 4px;
box-shadow: var(--dropdown-shadow);
z-index: 99;
@@ -5020,7 +5303,7 @@ a.status-card {
h4 {
text-transform: uppercase;
- color: $dark-text-color;
+ color: $darker-text-color;
font-weight: 500;
padding: 0 10px;
margin-bottom: 10px;
@@ -5028,6 +5311,7 @@ a.status-card {
.icon-button {
padding: 0;
+ color: $darker-text-color;
}
.icon {
@@ -5043,7 +5327,7 @@ a.status-card {
}
&__message {
- color: $dark-text-color;
+ color: $darker-text-color;
padding: 0 10px;
}
@@ -5099,6 +5383,10 @@ a.status-card {
}
&.active {
+ .search__input {
+ border-radius: 4px 4px 0 0;
+ }
+
.search__popout {
display: block;
}
@@ -5109,14 +5397,9 @@ a.status-card {
@include search-input;
display: block;
- padding: 15px;
- padding-inline-end: 30px;
- line-height: 18px;
- font-size: 16px;
-
- &::placeholder {
- color: lighten($darker-text-color, 4%);
- }
+ padding: 12px 16px;
+ padding-inline-start: 16px + 15px + 8px;
+ line-height: normal;
&::-moz-focus-inner {
border: 0;
@@ -5127,10 +5410,6 @@ a.status-card {
&:active {
outline: 0 !important;
}
-
- &:focus {
- background: lighten($ui-base-color, 4%);
- }
}
.search__icon {
@@ -5145,21 +5424,21 @@ a.status-card {
.icon {
position: absolute;
- top: 13px;
- inset-inline-end: 10px;
+ top: 12px + 2px;
+ inset-inline-start: 16px - 2px;
display: inline-block;
opacity: 0;
transition: all 100ms linear;
transition-property: transform, opacity;
- width: 24px;
- height: 24px;
- color: $secondary-text-color;
+ width: 20px;
+ height: 20px;
+ color: $darker-text-color;
cursor: default;
pointer-events: none;
&.active {
pointer-events: auto;
- opacity: 0.3;
+ opacity: 1;
}
}
@@ -5174,16 +5453,10 @@ a.status-card {
.icon-times-circle {
transform: rotate(0deg);
- color: $action-button-color;
cursor: pointer;
&.active {
transform: rotate(90deg);
- opacity: 1;
- }
-
- &:hover {
- color: lighten($action-button-color, 7%);
}
}
}
@@ -5675,6 +5948,10 @@ a.status-card {
padding-inline-end: 10px;
}
+ .icon {
+ vertical-align: middle;
+ }
+
.button {
flex: 0 0 auto;
}
@@ -5786,6 +6063,11 @@ a.status-card {
}
}
+ .dialog-option {
+ align-items: center;
+ gap: 12px;
+ }
+
.dialog-option .poll__input {
border-color: $inverted-text-color;
color: $ui-secondary-color;
@@ -5794,8 +6076,8 @@ a.status-card {
justify-content: center;
svg {
- width: 8px;
- height: auto;
+ width: 15px;
+ height: 15px;
}
&:active,
@@ -6225,6 +6507,7 @@ a.status-card {
gap: 2px;
}
+.media-gallery__alt__label,
.media-gallery__gifv__label {
display: flex;
align-items: center;
@@ -6301,6 +6584,7 @@ a.status-card {
.icon {
color: $dark-text-color;
+ vertical-align: middle;
}
}
}
@@ -6991,90 +7275,6 @@ noscript {
}
}
-@media screen and (width <= 630px) and (height <= 400px) {
- $duration: 400ms;
- $delay: 100ms;
-
- .search {
- will-change: margin-top;
- transition: margin-top $duration $delay;
- }
-
- .navigation-bar {
- will-change: padding-bottom;
- transition: padding-bottom $duration $delay;
- }
-
- .navigation-bar {
- & > a:first-child {
- will-change: margin-top, margin-inline-start, margin-inline-end, width;
- transition:
- margin-top $duration $delay,
- margin-inline-start $duration ($duration + $delay),
- margin-inline-end $duration ($duration + $delay);
- }
-
- & > .navigation-bar__profile-edit {
- will-change: margin-top;
- transition: margin-top $duration $delay;
- }
-
- .navigation-bar__actions {
- & > .icon-button.close {
- will-change: opacity transform;
- transition:
- opacity $duration * 0.5 $delay,
- transform $duration $delay;
- }
-
- & > .compose__action-bar .icon-button {
- will-change: opacity transform;
- transition:
- opacity $duration * 0.5 $delay + $duration * 0.5,
- transform $duration $delay;
- }
- }
- }
-
- .is-composing {
- .search {
- margin-top: -50px;
- }
-
- .navigation-bar {
- padding-bottom: 0;
-
- & > a:first-child {
- margin: -100px 10px 0 -50px;
- }
-
- .navigation-bar__profile {
- padding-top: 2px;
- }
-
- .navigation-bar__profile-edit {
- position: absolute;
- margin-top: -60px;
- }
-
- .navigation-bar__actions {
- .icon-button.close {
- pointer-events: auto;
- opacity: 1;
- transform: scale(1, 1) translate(0, 0);
- bottom: 5px;
- }
-
- .compose__action-bar .icon-button {
- pointer-events: none;
- opacity: 0;
- transform: scale(0, 1) translate(100%, 0);
- }
- }
- }
- }
-}
-
.embed-modal {
width: auto;
max-width: 80vw;
@@ -7546,6 +7746,13 @@ noscript {
span {
user-select: all;
}
+
+ .icon-lock {
+ height: 16px;
+ width: 16px;
+ position: relative;
+ top: 3px;
+ }
}
}
}
@@ -9029,11 +9236,14 @@ noscript {
.link-footer {
flex: 0 0 auto;
- padding: 10px;
padding-top: 20px;
z-index: 1;
font-size: 13px;
+ .column & {
+ padding: 15px;
+ }
+
p {
color: $dark-text-color;
margin-bottom: 20px;
@@ -9413,3 +9623,199 @@ noscript {
padding: 0;
}
}
+
+.inline-follow-suggestions {
+ display: flex;
+ flex-direction: column;
+ gap: 12px;
+ padding: 16px 0;
+ border-bottom: 1px solid mix($ui-base-color, $ui-highlight-color, 75%);
+ background: mix($ui-base-color, $ui-highlight-color, 95%);
+
+ &__header {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 0 16px;
+
+ h3 {
+ font-size: 15px;
+ line-height: 22px;
+ font-weight: 500;
+ }
+
+ &__actions {
+ display: flex;
+ align-items: center;
+ gap: 24px;
+ }
+
+ .link-button {
+ font-size: 13px;
+ font-weight: 500;
+ }
+ }
+
+ &__body {
+ position: relative;
+
+ &__scroll-button {
+ position: absolute;
+ height: 100%;
+ background: transparent;
+ border: none;
+ cursor: pointer;
+ top: 0;
+ color: $primary-text-color;
+
+ &.left {
+ left: 0;
+ }
+
+ &.right {
+ right: 0;
+ }
+
+ &__icon {
+ border-radius: 50%;
+ background: $ui-highlight-color;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ aspect-ratio: 1;
+ padding: 8px;
+
+ .icon {
+ width: 24px;
+ height: 24px;
+ }
+ }
+
+ &:hover,
+ &:focus,
+ &:active {
+ .inline-follow-suggestions__body__scroll-button__icon {
+ background: lighten($ui-highlight-color, 4%);
+ }
+ }
+ }
+
+ &__scrollable {
+ display: flex;
+ flex-wrap: nowrap;
+ gap: 16px;
+ padding: 16px;
+ padding-bottom: 0;
+ scroll-snap-type: x mandatory;
+ scroll-padding: 16px;
+ scroll-behavior: smooth;
+ overflow-x: hidden;
+
+ &__card {
+ background: darken($ui-base-color, 4%);
+ border: 1px solid lighten($ui-base-color, 8%);
+ border-radius: 4px;
+ display: flex;
+ flex-direction: column;
+ gap: 12px;
+ align-items: center;
+ padding: 12px;
+ scroll-snap-align: start;
+ flex: 0 0 auto;
+ width: 200px;
+ box-sizing: border-box;
+ position: relative;
+
+ a {
+ text-decoration: none;
+ }
+
+ & > .icon-button {
+ position: absolute;
+ inset-inline-end: 8px;
+ top: 8px;
+ }
+
+ &__avatar {
+ height: 48px;
+ display: flex;
+
+ a {
+ display: flex;
+ text-decoration: none;
+ }
+ }
+
+ .account__avatar {
+ flex-shrink: 0;
+ align-self: flex-end;
+ border: 1px solid lighten($ui-base-color, 8%);
+ background-color: $ui-base-color;
+ }
+
+ &__text-stack {
+ display: flex;
+ flex-direction: column;
+ gap: 4px;
+ align-items: center;
+ max-width: 100%;
+
+ a {
+ max-width: 100%;
+ }
+
+ &__source {
+ display: inline-flex;
+ align-items: center;
+ color: $dark-text-color;
+ gap: 4px;
+ overflow: hidden;
+ white-space: nowrap;
+
+ > span {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+
+ .icon {
+ width: 16px;
+ height: 16px;
+ }
+ }
+ }
+
+ .display-name {
+ display: flex;
+ flex-direction: column;
+ gap: 4px;
+ align-items: center;
+
+ & > * {
+ max-width: 100%;
+ }
+
+ &__html {
+ font-size: 15px;
+ font-weight: 500;
+ color: $secondary-text-color;
+ }
+
+ &__account {
+ font-size: 14px;
+ color: $darker-text-color;
+ }
+ }
+
+ .verified-badge {
+ font-size: 14px;
+ max-width: 100%;
+ }
+
+ .button {
+ display: block;
+ width: 100%;
+ }
+ }
+ }
+ }
+}
diff --git a/app/javascript/styles/mastodon/containers.scss b/app/javascript/styles/mastodon/containers.scss
index 3d646da23..8a472d75b 100644
--- a/app/javascript/styles/mastodon/containers.scss
+++ b/app/javascript/styles/mastodon/containers.scss
@@ -40,13 +40,12 @@
.compose-form {
width: 400px;
margin: 0 auto;
- padding: 20px 0;
- margin-top: 40px;
+ padding: 10px 0;
+ padding-bottom: 20px;
box-sizing: border-box;
@media screen and (width <= 400px) {
width: 100%;
- margin-top: 0;
padding: 20px;
}
}
@@ -56,13 +55,15 @@
width: 400px;
margin: 0 auto;
display: flex;
- font-size: 13px;
- line-height: 18px;
+ align-items: center;
+ gap: 10px;
+ font-size: 14px;
+ line-height: 20px;
box-sizing: border-box;
padding: 20px 0;
margin-top: 40px;
margin-bottom: 10px;
- border-bottom: 1px solid $ui-base-color;
+ border-bottom: 1px solid lighten($ui-base-color, 8%);
@media screen and (width <= 440px) {
width: 100%;
@@ -71,9 +72,9 @@
}
.avatar {
- width: 40px;
- height: 40px;
- margin-inline-end: 10px;
+ width: 48px;
+ height: 48px;
+ flex: 0 0 auto;
img {
width: 100%;
@@ -87,13 +88,14 @@
.name {
flex: 1 1 auto;
color: $secondary-text-color;
- width: calc(100% - 90px);
.username {
display: block;
- font-weight: 500;
+ font-size: 16px;
+ line-height: 24px;
text-overflow: ellipsis;
overflow: hidden;
+ color: $primary-text-color;
}
}
@@ -101,6 +103,62 @@
display: block;
font-size: 32px;
line-height: 40px;
- margin-inline-start: 10px;
+ flex: 0 0 auto;
+ }
+}
+
+.redirect {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ height: 100vh;
+ font-size: 14px;
+ line-height: 18px;
+
+ &__logo {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin-bottom: 30px;
+
+ img {
+ height: 48px;
+ }
+ }
+
+ &__message {
+ text-align: center;
+
+ h1 {
+ font-size: 17px;
+ line-height: 22px;
+ font-weight: 700;
+ margin-bottom: 30px;
+ }
+
+ p {
+ margin-bottom: 30px;
+
+ &:last-child {
+ margin-bottom: 0;
+ }
+ }
+
+ a {
+ color: $highlight-text-color;
+ font-weight: 500;
+ text-decoration: none;
+
+ &:hover,
+ &:focus,
+ &:active {
+ text-decoration: underline;
+ }
+ }
+ }
+
+ &__link {
+ margin-top: 15px;
}
}
diff --git a/app/javascript/styles/mastodon/emoji_picker.scss b/app/javascript/styles/mastodon/emoji_picker.scss
index c7247c3a5..fec0c10dd 100644
--- a/app/javascript/styles/mastodon/emoji_picker.scss
+++ b/app/javascript/styles/mastodon/emoji_picker.scss
@@ -1,7 +1,6 @@
.emoji-mart {
font-size: 13px;
display: inline-block;
- color: $inverted-text-color;
&,
* {
@@ -15,13 +14,13 @@
}
.emoji-mart-bar {
- border: 0 solid darken($ui-secondary-color, 8%);
+ border: 0 solid var(--dropdown-border-color);
&:first-child {
border-bottom-width: 1px;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
- background: $ui-secondary-color;
+ background: var(--dropdown-border-color);
}
&:last-child {
@@ -36,7 +35,6 @@
display: flex;
justify-content: space-between;
padding: 0 6px;
- color: $lighter-text-color;
line-height: 0;
}
@@ -50,9 +48,10 @@
cursor: pointer;
background: transparent;
border: 0;
+ color: $darker-text-color;
&:hover {
- color: darken($lighter-text-color, 4%);
+ color: lighten($darker-text-color, 4%);
}
}
@@ -60,7 +59,7 @@
color: $highlight-text-color;
&:hover {
- color: darken($highlight-text-color, 4%);
+ color: lighten($highlight-text-color, 4%);
}
.emoji-mart-anchor-bar {
@@ -95,7 +94,7 @@
height: 270px;
max-height: 35vh;
padding: 0 6px 6px;
- background: $simple-background-color;
+ background: var(--dropdown-background-color);
will-change: transform;
&::-webkit-scrollbar-track:hover,
@@ -107,7 +106,7 @@
.emoji-mart-search {
padding: 10px;
padding-inline-end: 45px;
- background: $simple-background-color;
+ background: var(--dropdown-background-color);
position: relative;
input {
@@ -118,9 +117,9 @@
font-family: inherit;
display: block;
width: 100%;
- background: rgba($ui-secondary-color, 0.3);
- color: $inverted-text-color;
- border: 1px solid $ui-secondary-color;
+ background: $ui-base-color;
+ color: $darker-text-color;
+ border: 1px solid lighten($ui-base-color, 8%);
border-radius: 4px;
&::-moz-focus-inner {
@@ -155,11 +154,10 @@
&:disabled {
cursor: default;
pointer-events: none;
- opacity: 0.3;
}
svg {
- fill: $action-button-color;
+ fill: $darker-text-color;
}
}
@@ -180,7 +178,7 @@
inset-inline-start: 0;
width: 100%;
height: 100%;
- background-color: rgba($ui-secondary-color, 0.7);
+ background-color: var(--dropdown-border-color);
border-radius: 100%;
}
}
@@ -197,7 +195,7 @@
width: 100%;
font-weight: 500;
padding: 5px 6px;
- background: $simple-background-color;
+ background: var(--dropdown-background-color);
}
}
@@ -241,7 +239,7 @@
.emoji-mart-no-results {
font-size: 14px;
- color: $light-text-color;
+ color: $dark-text-color;
text-align: center;
padding: 5px 6px;
padding-top: 70px;
diff --git a/app/javascript/styles/mastodon/modal.scss b/app/javascript/styles/mastodon/modal.scss
index 0b7220b21..60e7d6224 100644
--- a/app/javascript/styles/mastodon/modal.scss
+++ b/app/javascript/styles/mastodon/modal.scss
@@ -1,5 +1,5 @@
.modal-layout {
- background: $ui-base-color
+ background: darken($ui-base-color, 4%)
url('data:image/svg+xml;utf8,')
repeat-x bottom fixed;
display: flex;
diff --git a/app/javascript/styles/mastodon/polls.scss b/app/javascript/styles/mastodon/polls.scss
index 8a26e611c..939fca336 100644
--- a/app/javascript/styles/mastodon/polls.scss
+++ b/app/javascript/styles/mastodon/polls.scss
@@ -52,6 +52,8 @@
&__option {
position: relative;
display: flex;
+ align-items: flex-start;
+ gap: 8px;
padding: 6px 0;
line-height: 18px;
cursor: default;
@@ -78,16 +80,22 @@
box-sizing: border-box;
width: 100%;
font-size: 14px;
- color: $inverted-text-color;
+ color: $secondary-text-color;
outline: 0;
font-family: inherit;
- background: $simple-background-color;
- border: 1px solid darken($simple-background-color, 14%);
+ background: $ui-base-color;
+ border: 1px solid $darker-text-color;
border-radius: 4px;
- padding: 6px 10px;
+ padding: 8px 12px;
&:focus {
- border-color: $highlight-text-color;
+ border-color: $ui-highlight-color;
+ }
+
+ @media screen and (width <= 600px) {
+ font-size: 16px;
+ line-height: 24px;
+ letter-spacing: 0.5px;
}
}
@@ -96,26 +104,20 @@
}
&.editable {
- display: flex;
align-items: center;
overflow: visible;
}
}
&__input {
- display: inline-block;
+ display: block;
position: relative;
border: 1px solid $ui-primary-color;
box-sizing: border-box;
- width: 18px;
- height: 18px;
- margin-inline-end: 10px;
- top: -1px;
+ width: 17px;
+ height: 17px;
border-radius: 50%;
- vertical-align: middle;
- margin-top: auto;
- margin-bottom: auto;
- flex: 0 0 18px;
+ flex: 0 0 auto;
&.checkbox {
border-radius: 4px;
@@ -159,6 +161,15 @@
}
}
+ &__option.editable &__input {
+ &:active,
+ &:focus,
+ &:hover {
+ border-color: $ui-primary-color;
+ border-width: 1px;
+ }
+ }
+
&__number {
display: inline-block;
width: 45px;
@@ -209,90 +220,6 @@
}
}
-.compose-form__poll-wrapper {
- border-top: 1px solid darken($simple-background-color, 8%);
-
- ul {
- padding: 10px;
- }
-
- .poll__input {
- &:active,
- &:focus,
- &:hover {
- border-color: $ui-button-focus-background-color;
- }
- }
-
- .poll__footer {
- border-top: 1px solid darken($simple-background-color, 8%);
- padding: 10px;
- display: flex;
- align-items: center;
-
- button,
- select {
- flex: 1 1 50%;
-
- &:focus {
- border-color: $highlight-text-color;
- }
- }
- }
-
- .button.button-secondary {
- font-size: 14px;
- font-weight: 400;
- padding: 6px 10px;
- height: auto;
- line-height: inherit;
- color: $action-button-color;
- border-color: $action-button-color;
- margin-inline-end: 5px;
-
- &:hover,
- &:focus,
- &.active {
- border-color: $action-button-color;
- background-color: $action-button-color;
- color: $ui-button-color;
- }
- }
-
- li {
- display: flex;
- align-items: center;
-
- .poll__option {
- flex: 0 0 auto;
- width: calc(100% - (23px + 6px));
- margin-inline-end: 6px;
- }
- }
-
- select {
- appearance: none;
- box-sizing: border-box;
- font-size: 14px;
- color: $inverted-text-color;
- display: inline-block;
- width: auto;
- outline: 0;
- font-family: inherit;
- background: $simple-background-color
- url("data:image/svg+xml;utf8,")
- no-repeat right 8px center / auto 16px;
- border: 1px solid darken($simple-background-color, 14%);
- border-radius: 4px;
- padding: 6px 10px;
- padding-inline-end: 30px;
- }
-
- .icon-button.disabled {
- color: darken($simple-background-color, 14%);
- }
-}
-
.muted .poll {
color: $dark-text-color;
diff --git a/app/javascript/svg-icons/repeat_active.svg b/app/javascript/svg-icons/repeat_active.svg
new file mode 100644
index 000000000..a5bbb8fc4
--- /dev/null
+++ b/app/javascript/svg-icons/repeat_active.svg
@@ -0,0 +1,4 @@
+
diff --git a/app/javascript/svg-icons/repeat_disabled.svg b/app/javascript/svg-icons/repeat_disabled.svg
old mode 100755
new mode 100644
diff --git a/app/javascript/svg-icons/repeat_private.svg b/app/javascript/svg-icons/repeat_private.svg
old mode 100755
new mode 100644
diff --git a/app/javascript/svg-icons/repeat_private_active.svg b/app/javascript/svg-icons/repeat_private_active.svg
new file mode 100644
index 000000000..cf2a05c84
--- /dev/null
+++ b/app/javascript/svg-icons/repeat_private_active.svg
@@ -0,0 +1,6 @@
+
diff --git a/app/javascript/types/image.d.ts b/app/javascript/types/image.d.ts
index 07d192955..8a08eca9f 100644
--- a/app/javascript/types/image.d.ts
+++ b/app/javascript/types/image.d.ts
@@ -20,16 +20,20 @@ declare module '*.png' {
}
declare module '*.svg' {
+ const path: string;
+ export default path;
+}
+
+declare module '*.svg?react' {
import type React from 'react';
interface SVGPropsWithTitle extends React.SVGProps {
title?: string;
}
- export const ReactComponent: React.FC;
+ const ReactComponent: React.FC;
- const path: string;
- export default path;
+ export default ReactComponent;
}
declare module '*.webp' {
diff --git a/app/lib/activitypub/activity.rb b/app/lib/activitypub/activity.rb
index 45ce7252f..96a0836aa 100644
--- a/app/lib/activitypub/activity.rb
+++ b/app/lib/activitypub/activity.rb
@@ -154,7 +154,7 @@ class ActivityPub::Activity
if object_uri.start_with?('http')
return if ActivityPub::TagManager.instance.local_uri?(object_uri)
- ActivityPub::FetchRemoteStatusService.new.call(object_uri, id: true, on_behalf_of: @account.followers.local.first, request_id: @options[:request_id])
+ ActivityPub::FetchRemoteStatusService.new.call(object_uri, on_behalf_of: @account.followers.local.first, request_id: @options[:request_id])
elsif @object['url'].present?
::FetchRemoteStatusService.new.call(@object['url'], request_id: @options[:request_id])
end
diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb
index 3312d48e5..b96b1289e 100644
--- a/app/lib/activitypub/activity/create.rb
+++ b/app/lib/activitypub/activity/create.rb
@@ -109,7 +109,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
end
def process_status_params
- @status_parser = ActivityPub::Parser::StatusParser.new(@json, followers_collection: @account.followers_url)
+ @status_parser = ActivityPub::Parser::StatusParser.new(@json, followers_collection: @account.followers_url, object: @object)
attachment_ids = process_attachments.take(4).map(&:id)
@@ -285,6 +285,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
RedownloadMediaWorker.perform_in(rand(30..600).seconds, media_attachment.id)
rescue Seahorse::Client::NetworkingError => e
Rails.logger.warn "Error storing media attachment: #{e}"
+ RedownloadMediaWorker.perform_async(media_attachment.id)
end
end
@@ -321,7 +322,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
already_voted = true
with_redis_lock("vote:#{replied_to_status.poll_id}:#{@account.id}") do
- already_voted = poll.votes.where(account: @account).exists?
+ already_voted = poll.votes.exists?(account: @account)
poll.votes.create!(account: @account, choice: poll.options.index(@object['name']), uri: object_uri)
end
@@ -407,7 +408,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
return false if local_usernames.empty?
- Account.local.where(username: local_usernames).exists?
+ Account.local.exists?(username: local_usernames)
end
def tombstone_exists?
diff --git a/app/lib/activitypub/linked_data_signature.rb b/app/lib/activitypub/linked_data_signature.rb
index faea63e8f..9459fdd8b 100644
--- a/app/lib/activitypub/linked_data_signature.rb
+++ b/app/lib/activitypub/linked_data_signature.rb
@@ -19,7 +19,7 @@ class ActivityPub::LinkedDataSignature
return unless type == 'RsaSignature2017'
creator = ActivityPub::TagManager.instance.uri_to_actor(creator_uri)
- creator = ActivityPub::FetchRemoteKeyService.new.call(creator_uri, id: false) if creator&.public_key.blank?
+ creator = ActivityPub::FetchRemoteKeyService.new.call(creator_uri) if creator&.public_key.blank?
return if creator.nil?
diff --git a/app/lib/activitypub/parser/status_parser.rb b/app/lib/activitypub/parser/status_parser.rb
index 45f5fc5bf..cfc2b8788 100644
--- a/app/lib/activitypub/parser/status_parser.rb
+++ b/app/lib/activitypub/parser/status_parser.rb
@@ -4,12 +4,13 @@ class ActivityPub::Parser::StatusParser
include JsonLdHelper
# @param [Hash] json
- # @param [Hash] magic_values
- # @option magic_values [String] :followers_collection
- def initialize(json, magic_values = {})
- @json = json
- @object = json['object'] || json
- @magic_values = magic_values
+ # @param [Hash] options
+ # @option options [String] :followers_collection
+ # @option options [Hash] :object
+ def initialize(json, **options)
+ @json = json
+ @object = options[:object] || json['object'] || json
+ @options = options
end
def uri
@@ -78,7 +79,7 @@ class ActivityPub::Parser::StatusParser
:public
elsif audience_cc.any? { |cc| ActivityPub::TagManager.instance.public_collection?(cc) }
:unlisted
- elsif audience_to.include?(@magic_values[:followers_collection])
+ elsif audience_to.include?(@options[:followers_collection])
:private
else
:direct
diff --git a/app/lib/admin/system_check/media_privacy_check.rb b/app/lib/admin/system_check/media_privacy_check.rb
index 1df05b120..2ddc8e8b0 100644
--- a/app/lib/admin/system_check/media_privacy_check.rb
+++ b/app/lib/admin/system_check/media_privacy_check.rb
@@ -78,7 +78,7 @@ class Admin::SystemCheck::MediaPrivacyCheck < Admin::SystemCheck::BaseCheck
@media_attachment ||= begin
attachment = Account.representative.media_attachments.first
if attachment.present?
- attachment.touch # rubocop:disable Rails/SkipsModelValidations
+ attachment.touch
attachment
else
create_test_attachment!
diff --git a/app/lib/annual_report.rb b/app/lib/annual_report.rb
new file mode 100644
index 000000000..cf4297f2a
--- /dev/null
+++ b/app/lib/annual_report.rb
@@ -0,0 +1,43 @@
+# frozen_string_literal: true
+
+class AnnualReport
+ include DatabaseHelper
+
+ SOURCES = [
+ AnnualReport::Archetype,
+ AnnualReport::TypeDistribution,
+ AnnualReport::TopStatuses,
+ AnnualReport::MostUsedApps,
+ AnnualReport::CommonlyInteractedWithAccounts,
+ AnnualReport::TimeSeries,
+ AnnualReport::TopHashtags,
+ AnnualReport::MostRebloggedAccounts,
+ AnnualReport::Percentiles,
+ ].freeze
+
+ SCHEMA = 1
+
+ def initialize(account, year)
+ @account = account
+ @year = year
+ end
+
+ def generate
+ return if GeneratedAnnualReport.exists?(account: @account, year: @year)
+
+ GeneratedAnnualReport.create(
+ account: @account,
+ year: @year,
+ schema_version: SCHEMA,
+ data: data
+ )
+ end
+
+ private
+
+ def data
+ with_read_replica do
+ SOURCES.each_with_object({}) { |klass, hsh| hsh.merge!(klass.new(@account, @year).generate) }
+ end
+ end
+end
diff --git a/app/lib/annual_report/archetype.rb b/app/lib/annual_report/archetype.rb
new file mode 100644
index 000000000..ea9ef366d
--- /dev/null
+++ b/app/lib/annual_report/archetype.rb
@@ -0,0 +1,49 @@
+# frozen_string_literal: true
+
+class AnnualReport::Archetype < AnnualReport::Source
+ # Average number of posts (including replies and reblogs) made by
+ # each active user in a single year (2023)
+ AVERAGE_PER_YEAR = 113
+
+ def generate
+ {
+ archetype: archetype,
+ }
+ end
+
+ private
+
+ def archetype
+ if (standalone_count + replies_count + reblogs_count) < AVERAGE_PER_YEAR
+ :lurker
+ elsif reblogs_count > (standalone_count * 2)
+ :booster
+ elsif polls_count > (standalone_count * 0.1) # standalone_count includes posts with polls
+ :pollster
+ elsif replies_count > (standalone_count * 2)
+ :replier
+ else
+ :oracle
+ end
+ end
+
+ def polls_count
+ @polls_count ||= base_scope.where.not(poll_id: nil).count
+ end
+
+ def reblogs_count
+ @reblogs_count ||= base_scope.where.not(reblog_of_id: nil).count
+ end
+
+ def replies_count
+ @replies_count ||= base_scope.where.not(in_reply_to_id: nil).where.not(in_reply_to_account_id: @account.id).count
+ end
+
+ def standalone_count
+ @standalone_count ||= base_scope.without_replies.without_reblogs.count
+ end
+
+ def base_scope
+ @account.statuses.where(id: year_as_snowflake_range)
+ end
+end
diff --git a/app/lib/annual_report/commonly_interacted_with_accounts.rb b/app/lib/annual_report/commonly_interacted_with_accounts.rb
new file mode 100644
index 000000000..af5e854c2
--- /dev/null
+++ b/app/lib/annual_report/commonly_interacted_with_accounts.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+class AnnualReport::CommonlyInteractedWithAccounts < AnnualReport::Source
+ SET_SIZE = 40
+
+ def generate
+ {
+ commonly_interacted_with_accounts: commonly_interacted_with_accounts.map do |(account_id, count)|
+ {
+ account_id: account_id,
+ count: count,
+ }
+ end,
+ }
+ end
+
+ private
+
+ def commonly_interacted_with_accounts
+ @account.statuses.reorder(nil).where(id: year_as_snowflake_range).where.not(in_reply_to_account_id: @account.id).group(:in_reply_to_account_id).having('count(*) > 1').order(total: :desc).limit(SET_SIZE).pluck(Arel.sql('in_reply_to_account_id, count(*) AS total'))
+ end
+end
diff --git a/app/lib/annual_report/most_reblogged_accounts.rb b/app/lib/annual_report/most_reblogged_accounts.rb
new file mode 100644
index 000000000..e3e8a7c90
--- /dev/null
+++ b/app/lib/annual_report/most_reblogged_accounts.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+class AnnualReport::MostRebloggedAccounts < AnnualReport::Source
+ SET_SIZE = 10
+
+ def generate
+ {
+ most_reblogged_accounts: most_reblogged_accounts.map do |(account_id, count)|
+ {
+ account_id: account_id,
+ count: count,
+ }
+ end,
+ }
+ end
+
+ private
+
+ def most_reblogged_accounts
+ @account.statuses.reorder(nil).where(id: year_as_snowflake_range).where.not(reblog_of_id: nil).joins(reblog: :account).group('accounts.id').having('count(*) > 1').order(total: :desc).limit(SET_SIZE).pluck(Arel.sql('accounts.id, count(*) as total'))
+ end
+end
diff --git a/app/lib/annual_report/most_used_apps.rb b/app/lib/annual_report/most_used_apps.rb
new file mode 100644
index 000000000..85ff1ff86
--- /dev/null
+++ b/app/lib/annual_report/most_used_apps.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+class AnnualReport::MostUsedApps < AnnualReport::Source
+ SET_SIZE = 10
+
+ def generate
+ {
+ most_used_apps: most_used_apps.map do |(name, count)|
+ {
+ name: name,
+ count: count,
+ }
+ end,
+ }
+ end
+
+ private
+
+ def most_used_apps
+ @account.statuses.reorder(nil).where(id: year_as_snowflake_range).joins(:application).group('oauth_applications.name').order(total: :desc).limit(SET_SIZE).pluck(Arel.sql('oauth_applications.name, count(*) as total'))
+ end
+end
diff --git a/app/lib/annual_report/percentiles.rb b/app/lib/annual_report/percentiles.rb
new file mode 100644
index 000000000..9fe4698ee
--- /dev/null
+++ b/app/lib/annual_report/percentiles.rb
@@ -0,0 +1,62 @@
+# frozen_string_literal: true
+
+class AnnualReport::Percentiles < AnnualReport::Source
+ def generate
+ {
+ percentiles: {
+ followers: (total_with_fewer_followers / (total_with_any_followers + 1.0)) * 100,
+ statuses: (total_with_fewer_statuses / (total_with_any_statuses + 1.0)) * 100,
+ },
+ }
+ end
+
+ private
+
+ def followers_gained
+ @followers_gained ||= @account.passive_relationships.where("date_part('year', follows.created_at) = ?", @year).count
+ end
+
+ def statuses_created
+ @statuses_created ||= @account.statuses.where(id: year_as_snowflake_range).count
+ end
+
+ def total_with_fewer_followers
+ @total_with_fewer_followers ||= Follow.find_by_sql([<<~SQL.squish, { year: @year, comparison: followers_gained }]).first.total
+ WITH tmp0 AS (
+ SELECT follows.target_account_id
+ FROM follows
+ INNER JOIN accounts ON accounts.id = follows.target_account_id
+ WHERE date_part('year', follows.created_at) = :year
+ AND accounts.domain IS NULL
+ GROUP BY follows.target_account_id
+ HAVING COUNT(*) < :comparison
+ )
+ SELECT count(*) AS total
+ FROM tmp0
+ SQL
+ end
+
+ def total_with_fewer_statuses
+ @total_with_fewer_statuses ||= Status.find_by_sql([<<~SQL.squish, { comparison: statuses_created, min_id: year_as_snowflake_range.first, max_id: year_as_snowflake_range.last }]).first.total
+ WITH tmp0 AS (
+ SELECT statuses.account_id
+ FROM statuses
+ INNER JOIN accounts ON accounts.id = statuses.account_id
+ WHERE statuses.id BETWEEN :min_id AND :max_id
+ AND accounts.domain IS NULL
+ GROUP BY statuses.account_id
+ HAVING count(*) < :comparison
+ )
+ SELECT count(*) AS total
+ FROM tmp0
+ SQL
+ end
+
+ def total_with_any_followers
+ @total_with_any_followers ||= Follow.where("date_part('year', follows.created_at) = ?", @year).joins(:target_account).merge(Account.local).count('distinct follows.target_account_id')
+ end
+
+ def total_with_any_statuses
+ @total_with_any_statuses ||= Status.where(id: year_as_snowflake_range).joins(:account).merge(Account.local).count('distinct statuses.account_id')
+ end
+end
diff --git a/app/lib/annual_report/source.rb b/app/lib/annual_report/source.rb
new file mode 100644
index 000000000..1ccb62267
--- /dev/null
+++ b/app/lib/annual_report/source.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+class AnnualReport::Source
+ attr_reader :account, :year
+
+ def initialize(account, year)
+ @account = account
+ @year = year
+ end
+
+ protected
+
+ def year_as_snowflake_range
+ (Mastodon::Snowflake.id_at(DateTime.new(year, 1, 1))..Mastodon::Snowflake.id_at(DateTime.new(year, 12, 31)))
+ end
+end
diff --git a/app/lib/annual_report/time_series.rb b/app/lib/annual_report/time_series.rb
new file mode 100644
index 000000000..a144bac0d
--- /dev/null
+++ b/app/lib/annual_report/time_series.rb
@@ -0,0 +1,30 @@
+# frozen_string_literal: true
+
+class AnnualReport::TimeSeries < AnnualReport::Source
+ def generate
+ {
+ time_series: (1..12).map do |month|
+ {
+ month: month,
+ statuses: statuses_per_month[month] || 0,
+ following: following_per_month[month] || 0,
+ followers: followers_per_month[month] || 0,
+ }
+ end,
+ }
+ end
+
+ private
+
+ def statuses_per_month
+ @statuses_per_month ||= @account.statuses.reorder(nil).where(id: year_as_snowflake_range).group(:period).pluck(Arel.sql("date_part('month', created_at)::int AS period, count(*)")).to_h
+ end
+
+ def following_per_month
+ @following_per_month ||= @account.active_relationships.where("date_part('year', created_at) = ?", @year).group(:period).pluck(Arel.sql("date_part('month', created_at)::int AS period, count(*)")).to_h
+ end
+
+ def followers_per_month
+ @followers_per_month ||= @account.passive_relationships.where("date_part('year', created_at) = ?", @year).group(:period).pluck(Arel.sql("date_part('month', created_at)::int AS period, count(*)")).to_h
+ end
+end
diff --git a/app/lib/annual_report/top_hashtags.rb b/app/lib/annual_report/top_hashtags.rb
new file mode 100644
index 000000000..488dacb1b
--- /dev/null
+++ b/app/lib/annual_report/top_hashtags.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+class AnnualReport::TopHashtags < AnnualReport::Source
+ SET_SIZE = 40
+
+ def generate
+ {
+ top_hashtags: top_hashtags.map do |(name, count)|
+ {
+ name: name,
+ count: count,
+ }
+ end,
+ }
+ end
+
+ private
+
+ def top_hashtags
+ Tag.joins(:statuses).where(statuses: { id: @account.statuses.where(id: year_as_snowflake_range).reorder(nil).select(:id) }).group(:id).having('count(*) > 1').order(total: :desc).limit(SET_SIZE).pluck(Arel.sql('COALESCE(tags.display_name, tags.name), count(*) AS total'))
+ end
+end
diff --git a/app/lib/annual_report/top_statuses.rb b/app/lib/annual_report/top_statuses.rb
new file mode 100644
index 000000000..112e5591c
--- /dev/null
+++ b/app/lib/annual_report/top_statuses.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+class AnnualReport::TopStatuses < AnnualReport::Source
+ def generate
+ top_reblogs = base_scope.order(reblogs_count: :desc).first&.id
+ top_favourites = base_scope.where.not(id: top_reblogs).order(favourites_count: :desc).first&.id
+ top_replies = base_scope.where.not(id: [top_reblogs, top_favourites]).order(replies_count: :desc).first&.id
+
+ {
+ top_statuses: {
+ by_reblogs: top_reblogs,
+ by_favourites: top_favourites,
+ by_replies: top_replies,
+ },
+ }
+ end
+
+ def base_scope
+ @account.statuses.with_public_visibility.joins(:status_stat).where(id: year_as_snowflake_range).reorder(nil)
+ end
+end
diff --git a/app/lib/annual_report/type_distribution.rb b/app/lib/annual_report/type_distribution.rb
new file mode 100644
index 000000000..fc12a6f1f
--- /dev/null
+++ b/app/lib/annual_report/type_distribution.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+class AnnualReport::TypeDistribution < AnnualReport::Source
+ def generate
+ {
+ type_distribution: {
+ total: base_scope.count,
+ reblogs: base_scope.where.not(reblog_of_id: nil).count,
+ replies: base_scope.where.not(in_reply_to_id: nil).where.not(in_reply_to_account_id: @account.id).count,
+ standalone: base_scope.without_replies.without_reblogs.count,
+ },
+ }
+ end
+
+ private
+
+ def base_scope
+ @account.statuses.where(id: year_as_snowflake_range)
+ end
+end
diff --git a/app/lib/attachment_batch.rb b/app/lib/attachment_batch.rb
index b28f5c3d7..32ccb0b13 100644
--- a/app/lib/attachment_batch.rb
+++ b/app/lib/attachment_batch.rb
@@ -37,7 +37,7 @@ class AttachmentBatch
def clear
remove_files
- batch.update_all(nullified_attributes) # rubocop:disable Rails/SkipsModelValidations
+ batch.update_all(nullified_attributes)
end
private
diff --git a/app/lib/content_security_policy.rb b/app/lib/content_security_policy.rb
index 966e41f03..210f37cea 100644
--- a/app/lib/content_security_policy.rb
+++ b/app/lib/content_security_policy.rb
@@ -10,7 +10,7 @@ class ContentSecurityPolicy
end
def media_hosts
- [assets_host, cdn_host_value].compact
+ [assets_host, cdn_host_value, paperclip_root_url].compact
end
private
@@ -23,6 +23,15 @@ class ContentSecurityPolicy
s3_alias_host || s3_cloudfront_host || azure_alias_host || s3_hostname_host
end
+ def paperclip_root_url
+ root_url = ENV.fetch('PAPERCLIP_ROOT_URL', nil)
+ return if root_url.blank?
+
+ (Addressable::URI.parse(assets_host) + root_url).tap do |uri|
+ uri.path += '/' unless uri.path.blank? || uri.path.end_with?('/')
+ end.to_s
+ end
+
def url_from_base_host
host_to_url(base_host)
end
diff --git a/app/lib/delivery_failure_tracker.rb b/app/lib/delivery_failure_tracker.rb
index d93826982..e17b45d66 100644
--- a/app/lib/delivery_failure_tracker.rb
+++ b/app/lib/delivery_failure_tracker.rb
@@ -28,7 +28,7 @@ class DeliveryFailureTracker
end
def available?
- !UnavailableDomain.where(domain: @host).exists?
+ !UnavailableDomain.exists?(domain: @host)
end
def exhausted_deliveries_days
diff --git a/app/lib/emoji_formatter.rb b/app/lib/emoji_formatter.rb
index 15b98dc57..2a3683c49 100644
--- a/app/lib/emoji_formatter.rb
+++ b/app/lib/emoji_formatter.rb
@@ -66,16 +66,6 @@ class EmojiFormatter
@emoji_map ||= custom_emojis.each_with_object({}) { |e, h| h[e.shortcode] = [full_asset_url(e.image.url), full_asset_url(e.image.url(:static))] }
end
- def count_tag_nesting(tag)
- if tag[1] == '/'
- -1
- elsif tag[-2] == '/'
- 0
- else
- 1
- end
- end
-
def tag_for_emoji(shortcode, emoji)
return content_tag(:span, ":#{shortcode}:", translate: 'no') if raw_shortcode?
diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb
index 53767486f..38a177e64 100644
--- a/app/lib/feed_manager.rb
+++ b/app/lib/feed_manager.rb
@@ -420,8 +420,8 @@ class FeedManager
check_for_blocks = status.active_mentions.pluck(:account_id)
check_for_blocks.push(status.in_reply_to_account) if status.reply? && !status.in_reply_to_account_id.nil?
- should_filter = blocks_or_mutes?(receiver_id, check_for_blocks, :mentions) # Filter if it's from someone I blocked, in reply to someone I blocked, or mentioning someone I blocked (or muted)
- should_filter ||= status.account.silenced? && !Follow.where(account_id: receiver_id, target_account_id: status.account_id).exists? # of if the account is silenced and I'm not following them
+ should_filter = blocks_or_mutes?(receiver_id, check_for_blocks, :mentions) # Filter if it's from someone I blocked, in reply to someone I blocked, or mentioning someone I blocked (or muted)
+ should_filter ||= status.account.silenced? && !Follow.exists?(account_id: receiver_id, target_account_id: status.account_id) # Filter if the account is silenced and I'm not following them
should_filter
end
@@ -434,7 +434,7 @@ class FeedManager
if status.reply? && status.in_reply_to_account_id != status.account_id
should_filter = status.in_reply_to_account_id != list.account_id
should_filter &&= !list.show_followed?
- should_filter &&= !(list.show_list? && ListAccount.where(list_id: list.id, account_id: status.in_reply_to_account_id).exists?)
+ should_filter &&= !(list.show_list? && ListAccount.exists?(list_id: list.id, account_id: status.in_reply_to_account_id))
return !!should_filter
end
diff --git a/app/lib/permalink_redirector.rb b/app/lib/permalink_redirector.rb
index 0dd37483e..f551f69db 100644
--- a/app/lib/permalink_redirector.rb
+++ b/app/lib/permalink_redirector.rb
@@ -5,17 +5,46 @@ class PermalinkRedirector
def initialize(path)
@path = path
+ @object = nil
+ end
+
+ def object
+ @object ||= begin
+ if at_username_status_request? || statuses_status_request?
+ status = Status.find_by(id: second_segment)
+ status if status&.distributable? && !status&.local?
+ elsif at_username_request?
+ username, domain = first_segment.delete_prefix('@').split('@')
+ domain = nil if TagManager.instance.local_domain?(domain)
+ account = Account.find_remote(username, domain)
+ account unless account&.local?
+ elsif accounts_request? && record_integer_id_request?
+ account = Account.find_by(id: second_segment)
+ account unless account&.local?
+ end
+ end
end
def redirect_path
- if at_username_status_request? || statuses_status_request?
- find_status_url_by_id(second_segment)
- elsif at_username_request?
- find_account_url_by_name(first_segment)
- elsif accounts_request? && record_integer_id_request?
- find_account_url_by_id(second_segment)
- elsif @path.start_with?('/deck')
- @path.delete_prefix('/deck')
+ return ActivityPub::TagManager.instance.url_for(object) if object.present?
+
+ @path.delete_prefix('/deck') if @path.start_with?('/deck')
+ end
+
+ def redirect_uri
+ return ActivityPub::TagManager.instance.uri_for(object) if object.present?
+
+ @path.delete_prefix('/deck') if @path.start_with?('/deck')
+ end
+
+ def redirect_confirmation_path
+ case object.class.name
+ when 'Account'
+ redirect_account_path(object.id)
+ when 'Status'
+ redirect_status_path(object.id)
+ else
+ @path.delete_prefix('/deck') if @path.start_with?('/deck')
end
end
@@ -56,22 +85,4 @@ class PermalinkRedirector
def path_segments
@path_segments ||= @path.delete_prefix('/deck').delete_prefix('/').split('/')
end
-
- def find_status_url_by_id(id)
- status = Status.find_by(id: id)
- ActivityPub::TagManager.instance.url_for(status) if status&.distributable? && !status.account.local?
- end
-
- def find_account_url_by_id(id)
- account = Account.find_by(id: id)
- ActivityPub::TagManager.instance.url_for(account) if account.present? && !account.local?
- end
-
- def find_account_url_by_name(name)
- username, domain = name.gsub(/\A@/, '').split('@')
- domain = nil if TagManager.instance.local_domain?(domain)
- account = Account.find_remote(username, domain)
-
- ActivityPub::TagManager.instance.url_for(account) if account.present? && !account.local?
- end
end
diff --git a/app/lib/request.rb b/app/lib/request.rb
index 5f128af73..8d4120868 100644
--- a/app/lib/request.rb
+++ b/app/lib/request.rb
@@ -77,6 +77,7 @@ class Request
@url = Addressable::URI.parse(url).normalize
@http_client = options.delete(:http_client)
@allow_local = options.delete(:allow_local)
+ @full_path = options.delete(:with_query_string)
@options = options.merge(socket_class: use_proxy? || @allow_local ? ProxySocket : Socket)
@options = @options.merge(timeout_class: PerOperationWithDeadline, timeout_options: TIMEOUT)
@options = @options.merge(proxy_url) if use_proxy?
@@ -146,7 +147,7 @@ class Request
private
def set_common_headers!
- @headers[REQUEST_TARGET] = "#{@verb} #{@url.path}"
+ @headers[REQUEST_TARGET] = request_target
@headers['User-Agent'] = Mastodon::Version.user_agent
@headers['Host'] = @url.host
@headers['Date'] = Time.now.utc.httpdate
@@ -157,6 +158,14 @@ class Request
@headers['Digest'] = "SHA-256=#{Digest::SHA256.base64digest(@options[:body])}"
end
+ def request_target
+ if @url.query.nil? || !@full_path
+ "#{@verb} #{@url.path}"
+ else
+ "#{@verb} #{@url.path}?#{@url.query}"
+ end
+ end
+
def signature
algorithm = 'rsa-sha256'
signature = Base64.strict_encode64(@keypair.sign(OpenSSL::Digest.new('SHA256'), signed_string))
diff --git a/app/lib/settings/scoped_settings.rb b/app/lib/settings/scoped_settings.rb
deleted file mode 100644
index 3ad57cc1e..000000000
--- a/app/lib/settings/scoped_settings.rb
+++ /dev/null
@@ -1,79 +0,0 @@
-# frozen_string_literal: true
-
-module Settings
- class ScopedSettings
- DEFAULTING_TO_UNSCOPED = %w(
- theme
- noindex
- ).freeze
-
- def initialize(object)
- @object = object
- end
-
- def method_missing(method, *args)
- method_name = method.to_s
- # set a value for a variable
- if method_name[-1] == '='
- var_name = method_name.sub('=', '')
- value = args.first
- self[var_name] = value
- else
- # retrieve a value
- self[method_name]
- end
- end
-
- def respond_to_missing?(*)
- true
- end
-
- def all_as_records
- vars = thing_scoped
- records = vars.index_by(&:var)
-
- Setting.default_settings.each do |key, default_value|
- next if records.key?(key) || default_value.is_a?(Hash)
-
- records[key] = Setting.new(var: key, value: default_value)
- end
-
- records
- end
-
- def []=(key, value)
- key = key.to_s
- record = thing_scoped.find_or_initialize_by(var: key)
- record.update!(value: value)
-
- Rails.cache.write(Setting.cache_key(key, @object), value)
- end
-
- def [](key)
- Rails.cache.fetch(Setting.cache_key(key, @object)) do
- db_val = thing_scoped.find_by(var: key.to_s)
- if db_val
- default_value = ScopedSettings.default_settings[key]
- return default_value.with_indifferent_access.merge!(db_val.value) if default_value.is_a?(Hash)
-
- db_val.value
- else
- ScopedSettings.default_settings[key]
- end
- end
- end
-
- class << self
- def default_settings
- defaulting = DEFAULTING_TO_UNSCOPED.index_with { |k| Setting[k] }
- Setting.default_settings.merge!(defaulting)
- end
- end
-
- protected
-
- def thing_scoped
- Setting.unscoped.where(thing_type: @object.class.base_class.to_s, thing_id: @object.id)
- end
- end
-end
diff --git a/app/lib/status_cache_hydrator.rb b/app/lib/status_cache_hydrator.rb
index 45b50cb37..34f6199ec 100644
--- a/app/lib/status_cache_hydrator.rb
+++ b/app/lib/status_cache_hydrator.rb
@@ -26,11 +26,11 @@ class StatusCacheHydrator
def hydrate_non_reblog_payload(empty_payload, account_id)
empty_payload.tap do |payload|
- payload[:favourited] = Favourite.where(account_id: account_id, status_id: @status.id).exists?
- payload[:reblogged] = Status.where(account_id: account_id, reblog_of_id: @status.id).exists?
- payload[:muted] = ConversationMute.where(account_id: account_id, conversation_id: @status.conversation_id).exists?
- payload[:bookmarked] = Bookmark.where(account_id: account_id, status_id: @status.id).exists?
- payload[:pinned] = StatusPin.where(account_id: account_id, status_id: @status.id).exists? if @status.account_id == account_id
+ payload[:favourited] = Favourite.exists?(account_id: account_id, status_id: @status.id)
+ payload[:reblogged] = Status.exists?(account_id: account_id, reblog_of_id: @status.id)
+ payload[:muted] = ConversationMute.exists?(account_id: account_id, conversation_id: @status.conversation_id)
+ payload[:bookmarked] = Bookmark.exists?(account_id: account_id, status_id: @status.id)
+ payload[:pinned] = StatusPin.exists?(account_id: account_id, status_id: @status.id) if @status.account_id == account_id
payload[:filtered] = mapped_applied_custom_filter(account_id, @status)
if payload[:poll]
@@ -51,11 +51,11 @@ class StatusCacheHydrator
# used to create the status, we need to hydrate it here too
payload[:reblog][:application] = payload_reblog_application if payload[:reblog][:application].nil? && @status.reblog.account_id == account_id
- payload[:reblog][:favourited] = Favourite.where(account_id: account_id, status_id: @status.reblog_of_id).exists?
- payload[:reblog][:reblogged] = Status.where(account_id: account_id, reblog_of_id: @status.reblog_of_id).exists?
- payload[:reblog][:muted] = ConversationMute.where(account_id: account_id, conversation_id: @status.reblog.conversation_id).exists?
- payload[:reblog][:bookmarked] = Bookmark.where(account_id: account_id, status_id: @status.reblog_of_id).exists?
- payload[:reblog][:pinned] = StatusPin.where(account_id: account_id, status_id: @status.reblog_of_id).exists? if @status.reblog.account_id == account_id
+ payload[:reblog][:favourited] = Favourite.exists?(account_id: account_id, status_id: @status.reblog_of_id)
+ payload[:reblog][:reblogged] = Status.exists?(account_id: account_id, reblog_of_id: @status.reblog_of_id)
+ payload[:reblog][:muted] = ConversationMute.exists?(account_id: account_id, conversation_id: @status.reblog.conversation_id)
+ payload[:reblog][:bookmarked] = Bookmark.exists?(account_id: account_id, status_id: @status.reblog_of_id)
+ payload[:reblog][:pinned] = StatusPin.exists?(account_id: account_id, status_id: @status.reblog_of_id) if @status.reblog.account_id == account_id
payload[:reblog][:filtered] = payload[:filtered]
if payload[:reblog][:poll]
diff --git a/app/lib/status_reach_finder.rb b/app/lib/status_reach_finder.rb
index 36fb0e80f..17e42e3ec 100644
--- a/app/lib/status_reach_finder.rb
+++ b/app/lib/status_reach_finder.rb
@@ -16,28 +16,28 @@ class StatusReachFinder
private
def reached_account_inboxes
+ Account.where(id: reached_account_ids).inboxes
+ end
+
+ def reached_account_ids
# When the status is a reblog, there are no interactions with it
# directly, we assume all interactions are with the original one
if @status.reblog?
- []
+ [reblog_of_account_id]
else
- Account.where(id: reached_account_ids).inboxes
- end
- end
-
- def reached_account_ids
- [
- replied_to_account_id,
- reblog_of_account_id,
- mentioned_account_ids,
- reblogs_account_ids,
- favourites_account_ids,
- replies_account_ids,
- ].tap do |arr|
- arr.flatten!
- arr.compact!
- arr.uniq!
+ [
+ replied_to_account_id,
+ reblog_of_account_id,
+ mentioned_account_ids,
+ reblogs_account_ids,
+ favourites_account_ids,
+ replies_account_ids,
+ ].tap do |arr|
+ arr.flatten!
+ arr.compact!
+ arr.uniq!
+ end
end
end
diff --git a/app/lib/suspicious_sign_in_detector.rb b/app/lib/suspicious_sign_in_detector.rb
index 1af5188c6..74f49aa55 100644
--- a/app/lib/suspicious_sign_in_detector.rb
+++ b/app/lib/suspicious_sign_in_detector.rb
@@ -19,7 +19,7 @@ class SuspiciousSignInDetector
end
def previously_seen_ip?(request)
- @user.ips.where('ip <<= ?', masked_ip(request)).exists?
+ @user.ips.exists?(['ip <<= ?', masked_ip(request)])
end
def freshly_signed_up?
diff --git a/app/lib/vacuum/media_attachments_vacuum.rb b/app/lib/vacuum/media_attachments_vacuum.rb
index ab7ea4092..e55819529 100644
--- a/app/lib/vacuum/media_attachments_vacuum.rb
+++ b/app/lib/vacuum/media_attachments_vacuum.rb
@@ -27,11 +27,17 @@ class Vacuum::MediaAttachmentsVacuum
end
def media_attachments_past_retention_period
- MediaAttachment.remote.cached.where(MediaAttachment.arel_table[:created_at].lt(@retention_period.ago)).where(MediaAttachment.arel_table[:updated_at].lt(@retention_period.ago))
+ MediaAttachment
+ .remote
+ .cached
+ .created_before(@retention_period.ago)
+ .updated_before(@retention_period.ago)
end
def orphaned_media_attachments
- MediaAttachment.unattached.where(MediaAttachment.arel_table[:created_at].lt(TTL.ago))
+ MediaAttachment
+ .unattached
+ .created_before(TTL.ago)
end
def retention_period?
diff --git a/app/mailers/notification_mailer.rb b/app/mailers/notification_mailer.rb
index 5eecfed10..4eb38ec34 100644
--- a/app/mailers/notification_mailer.rb
+++ b/app/mailers/notification_mailer.rb
@@ -12,6 +12,8 @@ class NotificationMailer < ApplicationMailer
default to: -> { email_address_with_name(@user.email, @me.username) }
+ layout 'mailer'
+
def mention
return unless @user.functional? && @status.present?
diff --git a/app/mailers/user_mailer.rb b/app/mailers/user_mailer.rb
index 432b851b5..3b1a085cb 100644
--- a/app/mailers/user_mailer.rb
+++ b/app/mailers/user_mailer.rb
@@ -191,6 +191,18 @@ class UserMailer < Devise::Mailer
end
end
+ def failed_2fa(user, remote_ip, user_agent, timestamp)
+ @resource = user
+ @remote_ip = remote_ip
+ @user_agent = user_agent
+ @detection = Browser.new(user_agent)
+ @timestamp = timestamp.to_time.utc
+
+ I18n.with_locale(locale) do
+ mail subject: default_i18n_subject
+ end
+ end
+
private
def default_devise_subject
diff --git a/app/models/account.rb b/app/models/account.rb
index 2145cfcb6..05e1f943c 100644
--- a/app/models/account.rb
+++ b/app/models/account.rb
@@ -108,6 +108,8 @@ class Account < ApplicationRecord
validates :shared_inbox_url, absence: true, if: :local?, on: :create
validates :followers_url, absence: true, if: :local?, on: :create
+ normalizes :username, with: ->(username) { username.squish }
+
scope :remote, -> { where.not(domain: nil) }
scope :local, -> { where(domain: nil) }
scope :partitioned, -> { order(Arel.sql('row_number() over (partition by domain)')) }
@@ -121,15 +123,15 @@ class Account < ApplicationRecord
scope :bots, -> { where(actor_type: %w(Application Service)) }
scope :groups, -> { where(actor_type: 'Group') }
scope :alphabetic, -> { order(domain: :asc, username: :asc) }
+ scope :matches_uri_prefix, ->(value) { where(arel_table[:uri].matches("#{sanitize_sql_like(value)}/%", false, true)).or(where(uri: value)) }
scope :matches_username, ->(value) { where('lower((username)::text) LIKE lower(?)', "#{value}%") }
scope :matches_display_name, ->(value) { where(arel_table[:display_name].matches("#{value}%")) }
- scope :matches_domain, ->(value) { where(arel_table[:domain].matches("%#{value}%")) }
scope :without_unapproved, -> { left_outer_joins(:user).merge(User.approved.confirmed).or(remote) }
+ scope :auditable, -> { where(id: Admin::ActionLog.select(:account_id).distinct) }
scope :searchable, -> { without_unapproved.without_suspended.where(moved_to_account_id: nil) }
scope :discoverable, -> { searchable.without_silenced.where(discoverable: true).joins(:account_stat) }
- scope :followable_by, ->(account) { joins(arel_table.join(Follow.arel_table, Arel::Nodes::OuterJoin).on(arel_table[:id].eq(Follow.arel_table[:target_account_id]).and(Follow.arel_table[:account_id].eq(account.id))).join_sources).where(Follow.arel_table[:id].eq(nil)).joins(arel_table.join(FollowRequest.arel_table, Arel::Nodes::OuterJoin).on(arel_table[:id].eq(FollowRequest.arel_table[:target_account_id]).and(FollowRequest.arel_table[:account_id].eq(account.id))).join_sources).where(FollowRequest.arel_table[:id].eq(nil)) }
scope :by_recent_status, -> { includes(:account_stat).merge(AccountStat.order('last_status_at DESC NULLS LAST')).references(:account_stat) }
- scope :by_recent_sign_in, -> { order(Arel.sql('users.current_sign_in_at DESC NULLS LAST')) }
+ scope :by_recent_activity, -> { left_joins(:user, :account_stat).order(coalesced_activity_timestamps.desc).order(id: :desc) }
scope :popular, -> { order('account_stats.followers_count desc') }
scope :by_domain_and_subdomains, ->(domain) { where(domain: Instance.by_domain_and_subdomains(domain).select(:domain)) }
scope :not_excluded_by_account, ->(account) { where.not(id: account.excluded_from_timeline_account_ids) }
@@ -442,6 +444,14 @@ class Account < ApplicationRecord
DeliveryFailureTracker.without_unavailable(urls)
end
+ def coalesced_activity_timestamps
+ Arel.sql(
+ <<~SQL.squish
+ COALESCE(users.current_sign_in_at, account_stats.last_status_at, to_timestamp(0))
+ SQL
+ )
+ end
+
def from_text(text)
return [] if text.blank?
@@ -475,7 +485,6 @@ class Account < ApplicationRecord
end
before_validation :prepare_contents, if: :local?
- before_validation :prepare_username, on: :create
before_create :generate_keys
before_destroy :clean_feed_manager
@@ -493,10 +502,6 @@ class Account < ApplicationRecord
note&.strip!
end
- def prepare_username
- username&.squish!
- end
-
def generate_keys
return unless local? && private_key.blank? && public_key.blank?
diff --git a/app/models/account_filter.rb b/app/models/account_filter.rb
index 55d34e85c..42b1c4953 100644
--- a/app/models/account_filter.rb
+++ b/app/models/account_filter.rb
@@ -104,15 +104,7 @@ class AccountFilter
def order_scope(value)
case value.to_s
when 'active'
- accounts_with_users
- .left_joins(:account_stat)
- .order(
- Arel.sql(
- <<~SQL.squish
- COALESCE(users.current_sign_in_at, account_stats.last_status_at, to_timestamp(0)) DESC, accounts.id DESC
- SQL
- )
- )
+ Account.by_recent_activity
when 'recent'
Account.recent
else
diff --git a/app/models/account_suggestions.rb b/app/models/account_suggestions.rb
index d62176c7c..25c8b04d5 100644
--- a/app/models/account_suggestions.rb
+++ b/app/models/account_suggestions.rb
@@ -29,7 +29,7 @@ class AccountSuggestions
# a complicated query on this end.
account_ids = account_ids_with_sources[offset, limit]
- accounts_map = Account.where(id: account_ids.map(&:first)).includes(:account_stat).index_by(&:id)
+ accounts_map = Account.where(id: account_ids.map(&:first)).includes(:account_stat, :user).index_by(&:id)
account_ids.filter_map do |(account_id, source)|
next unless accounts_map.key?(account_id)
diff --git a/app/models/account_suggestions/source.rb b/app/models/account_suggestions/source.rb
index ee93a1342..d83f5e377 100644
--- a/app/models/account_suggestions/source.rb
+++ b/app/models/account_suggestions/source.rb
@@ -8,11 +8,31 @@ class AccountSuggestions::Source
protected
def base_account_scope(account)
- Account.searchable
- .followable_by(account)
- .not_excluded_by_account(account)
- .not_domain_blocked_by_account(account)
- .where.not(id: account.id)
- .joins("LEFT OUTER JOIN follow_recommendation_mutes ON follow_recommendation_mutes.target_account_id = accounts.id AND follow_recommendation_mutes.account_id = #{account.id}").where(follow_recommendation_mutes: { target_account_id: nil })
+ Account
+ .searchable
+ .where.not(follows_sql, id: account.id)
+ .where.not(follow_requests_sql, id: account.id)
+ .not_excluded_by_account(account)
+ .not_domain_blocked_by_account(account)
+ .where.not(id: account.id)
+ .where.not(follow_recommendation_mutes_sql, id: account.id)
+ end
+
+ def follows_sql
+ <<~SQL.squish
+ EXISTS (SELECT 1 FROM follows WHERE follows.target_account_id = accounts.id AND follows.account_id = :id)
+ SQL
+ end
+
+ def follow_requests_sql
+ <<~SQL.squish
+ EXISTS (SELECT 1 FROM follow_requests WHERE follow_requests.target_account_id = accounts.id AND follow_requests.account_id = :id)
+ SQL
+ end
+
+ def follow_recommendation_mutes_sql
+ <<~SQL.squish
+ EXISTS (SELECT 1 FROM follow_recommendation_mutes WHERE follow_recommendation_mutes.target_account_id = accounts.id AND follow_recommendation_mutes.account_id = :id)
+ SQL
end
end
diff --git a/app/models/account_summary.rb b/app/models/account_summary.rb
index 0d8835b83..30ada50cc 100644
--- a/app/models/account_summary.rb
+++ b/app/models/account_summary.rb
@@ -12,11 +12,15 @@
class AccountSummary < ApplicationRecord
self.primary_key = :account_id
+ has_many :follow_recommendation_suppressions, primary_key: :account_id, foreign_key: :account_id, inverse_of: false
+
scope :safe, -> { where(sensitive: false) }
- scope :localized, ->(locale) { where(language: locale) }
- scope :filtered, -> { joins(arel_table.join(FollowRecommendationSuppression.arel_table, Arel::Nodes::OuterJoin).on(arel_table[:account_id].eq(FollowRecommendationSuppression.arel_table[:account_id])).join_sources).where(FollowRecommendationSuppression.arel_table[:id].eq(nil)) }
+ scope :localized, ->(locale) { order(Arel::Nodes::Case.new.when(arel_table[:language].eq(locale)).then(1).else(0).desc) }
+ scope :filtered, -> { where.missing(:follow_recommendation_suppressions) }
def self.refresh
+ Scenic.database.refresh_materialized_view(table_name, concurrently: true, cascade: false)
+ rescue ActiveRecord::StatementInvalid
Scenic.database.refresh_materialized_view(table_name, concurrently: false, cascade: false)
end
diff --git a/app/models/admin/action_log_filter.rb b/app/models/admin/action_log_filter.rb
index d413cb386..f581af74e 100644
--- a/app/models/admin/action_log_filter.rb
+++ b/app/models/admin/action_log_filter.rb
@@ -72,7 +72,7 @@ class Admin::ActionLogFilter
end
def results
- scope = latest_action_logs.includes(:target)
+ scope = latest_action_logs.includes(:target, :account)
params.each do |key, value|
next if key.to_s == 'page'
diff --git a/app/models/announcement.rb b/app/models/announcement.rb
index 2cd7c1d5e..e63057002 100644
--- a/app/models/announcement.rb
+++ b/app/models/announcement.rb
@@ -20,19 +20,28 @@
class Announcement < ApplicationRecord
scope :unpublished, -> { where(published: false) }
scope :published, -> { where(published: true) }
- scope :without_muted, ->(account) { joins("LEFT OUTER JOIN announcement_mutes ON announcement_mutes.announcement_id = announcements.id AND announcement_mutes.account_id = #{account.id}").where(announcement_mutes: { id: nil }) }
- scope :chronological, -> { order(Arel.sql('COALESCE(announcements.starts_at, announcements.scheduled_at, announcements.published_at, announcements.created_at) ASC')) }
- scope :reverse_chronological, -> { order(Arel.sql('COALESCE(announcements.starts_at, announcements.scheduled_at, announcements.published_at, announcements.created_at) DESC')) }
+ scope :chronological, -> { order(coalesced_chronology_timestamps.asc) }
+ scope :reverse_chronological, -> { order(coalesced_chronology_timestamps.desc) }
has_many :announcement_mutes, dependent: :destroy
has_many :announcement_reactions, dependent: :destroy
validates :text, presence: true
- validates :starts_at, presence: true, if: -> { ends_at.present? }
- validates :ends_at, presence: true, if: -> { starts_at.present? }
+ validates :starts_at, presence: true, if: :ends_at?
+ validates :ends_at, presence: true, if: :starts_at?
before_validation :set_published, on: :create
+ class << self
+ def coalesced_chronology_timestamps
+ Arel.sql(
+ <<~SQL.squish
+ COALESCE(announcements.starts_at, announcements.scheduled_at, announcements.published_at, announcements.created_at)
+ SQL
+ )
+ end
+ end
+
def to_log_human_identifier
text
end
@@ -45,10 +54,6 @@ class Announcement < ApplicationRecord
update!(published: false, scheduled_at: nil)
end
- def time_range?
- starts_at.present? && ends_at.present?
- end
-
def mentions
@mentions ||= Account.from_text(text)
end
@@ -70,22 +75,41 @@ class Announcement < ApplicationRecord
end
def reactions(account = nil)
- records = begin
- scope = announcement_reactions.group(:announcement_id, :name, :custom_emoji_id).order(Arel.sql('MIN(created_at) ASC'))
-
- if account.nil?
- scope.select('name, custom_emoji_id, count(*) as count, false as me')
- else
- scope.select("name, custom_emoji_id, count(*) as count, exists(select 1 from announcement_reactions r where r.account_id = #{account.id} and r.announcement_id = announcement_reactions.announcement_id and r.name = announcement_reactions.name) as me")
+ grouped_ordered_announcement_reactions.select(
+ [:name, :custom_emoji_id, 'COUNT(*) as count'].tap do |values|
+ values << value_for_reaction_me_column(account)
end
- end.to_a
-
- ActiveRecord::Associations::Preloader.new(records: records, associations: :custom_emoji).call
- records
+ ).to_a.tap do |records|
+ ActiveRecord::Associations::Preloader.new(records: records, associations: :custom_emoji).call
+ end
end
private
+ def grouped_ordered_announcement_reactions
+ announcement_reactions
+ .group(:announcement_id, :name, :custom_emoji_id)
+ .order(
+ Arel.sql('MIN(created_at)').asc
+ )
+ end
+
+ def value_for_reaction_me_column(account)
+ if account.nil?
+ 'FALSE AS me'
+ else
+ <<~SQL.squish
+ EXISTS(
+ SELECT 1
+ FROM announcement_reactions inner_reactions
+ WHERE inner_reactions.account_id = #{account.id}
+ AND inner_reactions.announcement_id = announcement_reactions.announcement_id
+ AND inner_reactions.name = announcement_reactions.name
+ ) AS me
+ SQL
+ end
+ end
+
def set_published
return unless scheduled_at.blank? || scheduled_at.past?
diff --git a/app/models/appeal.rb b/app/models/appeal.rb
index f1290ad01..395056b76 100644
--- a/app/models/appeal.rb
+++ b/app/models/appeal.rb
@@ -20,8 +20,11 @@ class Appeal < ApplicationRecord
belongs_to :account
belongs_to :strike, class_name: 'AccountWarning', foreign_key: 'account_warning_id', inverse_of: :appeal
- belongs_to :approved_by_account, class_name: 'Account', optional: true
- belongs_to :rejected_by_account, class_name: 'Account', optional: true
+
+ with_options class_name: 'Account', optional: true do
+ belongs_to :approved_by_account
+ belongs_to :rejected_by_account
+ end
validates :text, presence: true, length: { maximum: 2_000 }
validates :account_warning_id, uniqueness: true
diff --git a/app/models/bulk_import.rb b/app/models/bulk_import.rb
index 810e47184..406fb2aba 100644
--- a/app/models/bulk_import.rb
+++ b/app/models/bulk_import.rb
@@ -44,8 +44,8 @@ class BulkImport < ApplicationRecord
def self.progress!(bulk_import_id, imported: false)
# Use `increment_counter` so that the incrementation is done atomically in the database
- BulkImport.increment_counter(:processed_items, bulk_import_id) # rubocop:disable Rails/SkipsModelValidations
- BulkImport.increment_counter(:imported_items, bulk_import_id) if imported # rubocop:disable Rails/SkipsModelValidations
+ BulkImport.increment_counter(:processed_items, bulk_import_id)
+ BulkImport.increment_counter(:imported_items, bulk_import_id) if imported
# Since the incrementation has been done atomically, concurrent access to `bulk_import` is now bening
bulk_import = BulkImport.find(bulk_import_id)
diff --git a/app/models/concerns/account/interactions.rb b/app/models/concerns/account/interactions.rb
index 351530c2f..5b05c31e0 100644
--- a/app/models/concerns/account/interactions.rb
+++ b/app/models/concerns/account/interactions.rb
@@ -183,7 +183,7 @@ module Account::Interactions
end
def following?(other_account)
- active_relationships.where(target_account: other_account).exists?
+ active_relationships.exists?(target_account: other_account)
end
def following_anyone?
@@ -199,51 +199,51 @@ module Account::Interactions
end
def blocking?(other_account)
- block_relationships.where(target_account: other_account).exists?
+ block_relationships.exists?(target_account: other_account)
end
def domain_blocking?(other_domain)
- domain_blocks.where(domain: other_domain).exists?
+ domain_blocks.exists?(domain: other_domain)
end
def muting?(other_account)
- mute_relationships.where(target_account: other_account).exists?
+ mute_relationships.exists?(target_account: other_account)
end
def muting_conversation?(conversation)
- conversation_mutes.where(conversation: conversation).exists?
+ conversation_mutes.exists?(conversation: conversation)
end
def muting_notifications?(other_account)
- mute_relationships.where(target_account: other_account, hide_notifications: true).exists?
+ mute_relationships.exists?(target_account: other_account, hide_notifications: true)
end
def muting_reblogs?(other_account)
- active_relationships.where(target_account: other_account, show_reblogs: false).exists?
+ active_relationships.exists?(target_account: other_account, show_reblogs: false)
end
def requested?(other_account)
- follow_requests.where(target_account: other_account).exists?
+ follow_requests.exists?(target_account: other_account)
end
def favourited?(status)
- status.proper.favourites.where(account: self).exists?
+ status.proper.favourites.exists?(account: self)
end
def bookmarked?(status)
- status.proper.bookmarks.where(account: self).exists?
+ status.proper.bookmarks.exists?(account: self)
end
def reblogged?(status)
- status.proper.reblogs.where(account: self).exists?
+ status.proper.reblogs.exists?(account: self)
end
def pinned?(status)
- status_pins.where(status: status).exists?
+ status_pins.exists?(status: status)
end
def endorsed?(account)
- account_pins.where(target_account: account).exists?
+ account_pins.exists?(target_account: account)
end
def status_matches_filters(status)
diff --git a/app/models/concerns/attachmentable.rb b/app/models/concerns/attachmentable.rb
index 4cdbdeb47..3b7db1fce 100644
--- a/app/models/concerns/attachmentable.rb
+++ b/app/models/concerns/attachmentable.rb
@@ -11,11 +11,12 @@ module Attachmentable
# For some file extensions, there exist different content
# type variants, and browsers often send the wrong one,
# for example, sending an audio .ogg file as video/ogg,
- # likewise, MimeMagic also misreports them as such. For
+ # likewise, kt-paperclip also misreports them as such. For
# those files, it is necessary to use the output of the
# `file` utility instead
INCORRECT_CONTENT_TYPES = %w(
audio/vorbis
+ audio/opus
video/ogg
video/webm
).freeze
diff --git a/app/models/concerns/remotable.rb b/app/models/concerns/remotable.rb
index 6118e204a..8382c9159 100644
--- a/app/models/concerns/remotable.rb
+++ b/app/models/concerns/remotable.rb
@@ -46,7 +46,7 @@ module Remotable
public_send(:"download_#{attachment_name}!", url) if download_on_assign
end
- alias_method(:"reset_#{attachment_name}!", "download_#{attachment_name}!")
+ alias_method(:"reset_#{attachment_name}!", :"download_#{attachment_name}!")
end
end
end
diff --git a/app/models/concerns/user/omniauthable.rb b/app/models/concerns/user/omniauthable.rb
index 6d1d1b8cc..113bfda23 100644
--- a/app/models/concerns/user/omniauthable.rb
+++ b/app/models/concerns/user/omniauthable.rb
@@ -61,7 +61,7 @@ module User::Omniauthable
user.account.avatar_remote_url = nil
end
- user.confirm! if email_is_verified
+ user.mark_email_as_confirmed! if email_is_verified
user.save!
user
end
diff --git a/app/models/custom_emoji.rb b/app/models/custom_emoji.rb
index cdf7aa796..e8cc7d45d 100644
--- a/app/models/custom_emoji.rb
+++ b/app/models/custom_emoji.rb
@@ -42,7 +42,7 @@ class CustomEmoji < ApplicationRecord
has_attached_file :image, styles: { static: { format: 'png', convert_options: '-coalesce +profile "!icc,*" +set date:modify +set date:create +set date:timestamp' } }, validate_media_type: false
- before_validation :downcase_domain
+ normalizes :domain, with: ->(domain) { domain.downcase }
validates_attachment :image, content_type: { content_type: IMAGE_MIME_TYPES }, presence: true, size: { less_than: LIMIT }
validates :shortcode, uniqueness: { scope: :domain }, format: { with: SHORTCODE_ONLY_RE }, length: { minimum: 2 }
@@ -87,7 +87,7 @@ class CustomEmoji < ApplicationRecord
end
def search(shortcode)
- where('"custom_emojis"."shortcode" ILIKE ?', "%#{shortcode}%")
+ where(arel_table[:shortcode].matches("%#{sanitize_sql_like(shortcode)}%"))
end
end
@@ -96,8 +96,4 @@ class CustomEmoji < ApplicationRecord
def remove_entity_cache
Rails.cache.delete(EntityCache.instance.to_key(:emoji, shortcode, domain))
end
-
- def downcase_domain
- self.domain = domain.downcase unless domain.nil?
- end
end
diff --git a/app/models/custom_emoji_filter.rb b/app/models/custom_emoji_filter.rb
index ed7a8dda1..870cc7197 100644
--- a/app/models/custom_emoji_filter.rb
+++ b/app/models/custom_emoji_filter.rb
@@ -31,7 +31,7 @@ class CustomEmojiFilter
def scope_for(key, value)
case key.to_s
when 'local'
- CustomEmoji.local.left_joins(:category).reorder(Arel.sql('custom_emoji_categories.name ASC NULLS FIRST, custom_emojis.shortcode ASC'))
+ CustomEmoji.local.left_joins(:category).reorder(CustomEmojiCategory.arel_table[:name].asc.nulls_first).order(shortcode: :asc)
when 'remote'
CustomEmoji.remote
when 'by_domain'
diff --git a/app/models/custom_filter.rb b/app/models/custom_filter.rb
index 5a53e73ba..c8120c239 100644
--- a/app/models/custom_filter.rb
+++ b/app/models/custom_filter.rb
@@ -68,16 +68,7 @@ class CustomFilter < ApplicationRecord
scope = CustomFilterKeyword.includes(:custom_filter).where(custom_filter: { account_id: account_id }).where(Arel.sql('expires_at IS NULL OR expires_at > NOW()'))
scope.to_a.group_by(&:custom_filter).each do |filter, keywords|
- keywords.map! do |keyword|
- if keyword.whole_word
- sb = /\A[[:word:]]/.match?(keyword.keyword) ? '\b' : ''
- eb = /[[:word:]]\z/.match?(keyword.keyword) ? '\b' : ''
-
- /(?mix:#{sb}#{Regexp.escape(keyword.keyword)}#{eb})/
- else
- /#{Regexp.escape(keyword.keyword)}/i
- end
- end
+ keywords.map!(&:to_regex)
filters_hash[filter.id] = { keywords: Regexp.union(keywords), filter: filter }
end.to_h
@@ -128,6 +119,10 @@ class CustomFilter < ApplicationRecord
end
def context_must_be_valid
- errors.add(:context, I18n.t('filters.errors.invalid_context')) if context.empty? || context.any? { |c| !VALID_CONTEXTS.include?(c) }
+ errors.add(:context, I18n.t('filters.errors.invalid_context')) if invalid_context_value?
+ end
+
+ def invalid_context_value?
+ context.blank? || context.difference(VALID_CONTEXTS).any?
end
end
diff --git a/app/models/custom_filter_keyword.rb b/app/models/custom_filter_keyword.rb
index 3158b3b79..979d0b822 100644
--- a/app/models/custom_filter_keyword.rb
+++ b/app/models/custom_filter_keyword.rb
@@ -23,8 +23,24 @@ class CustomFilterKeyword < ApplicationRecord
before_destroy :prepare_cache_invalidation!
after_commit :invalidate_cache!
+ def to_regex
+ if whole_word?
+ /(?mix:#{to_regex_sb}#{Regexp.escape(keyword)}#{to_regex_eb})/
+ else
+ /#{Regexp.escape(keyword)}/i
+ end
+ end
+
private
+ def to_regex_sb
+ /\A[[:word:]]/.match?(keyword) ? '\b' : ''
+ end
+
+ def to_regex_eb
+ /[[:word:]]\z/.match?(keyword) ? '\b' : ''
+ end
+
def prepare_cache_invalidation!
custom_filter.prepare_cache_invalidation!
end
diff --git a/app/models/domain_allow.rb b/app/models/domain_allow.rb
index ce9597b4d..47ada7ac2 100644
--- a/app/models/domain_allow.rb
+++ b/app/models/domain_allow.rb
@@ -17,8 +17,6 @@ class DomainAllow < ApplicationRecord
validates :domain, presence: true, uniqueness: true, domain: true
- scope :matches_domain, ->(value) { where(arel_table[:domain].matches("%#{value}%")) }
-
def to_log_human_identifier
domain
end
diff --git a/app/models/domain_block.rb b/app/models/domain_block.rb
index ff23f8fcc..a05db099a 100644
--- a/app/models/domain_block.rb
+++ b/app/models/domain_block.rb
@@ -28,10 +28,9 @@ class DomainBlock < ApplicationRecord
has_many :accounts, foreign_key: :domain, primary_key: :domain, inverse_of: false, dependent: nil
delegate :count, to: :accounts, prefix: true
- scope :matches_domain, ->(value) { where(arel_table[:domain].matches("%#{value}%")) }
scope :with_user_facing_limitations, -> { where(severity: [:silence, :suspend]) }
scope :with_limitations, -> { where(severity: [:silence, :suspend]).or(where(reject_media: true)) }
- scope :by_severity, -> { order(Arel.sql('(CASE severity WHEN 0 THEN 1 WHEN 1 THEN 2 WHEN 2 THEN 0 END), domain')) }
+ scope :by_severity, -> { in_order_of(:severity, %w(noop silence suspend)).order(:domain) }
def to_log_human_identifier
domain
@@ -85,11 +84,6 @@ class DomainBlock < ApplicationRecord
(reject_media || !other_block.reject_media) && (reject_reports || !other_block.reject_reports)
end
- def affected_accounts_count
- scope = suspend? ? accounts.where(suspended_at: created_at) : accounts.where(silenced_at: created_at)
- scope.count
- end
-
def public_domain
return domain unless obfuscate?
diff --git a/app/models/email_domain_block.rb b/app/models/email_domain_block.rb
index 60e90208d..40be59420 100644
--- a/app/models/email_domain_block.rb
+++ b/app/models/email_domain_block.rb
@@ -4,11 +4,12 @@
#
# Table name: email_domain_blocks
#
-# id :bigint(8) not null, primary key
-# domain :string default(""), not null
-# created_at :datetime not null
-# updated_at :datetime not null
-# parent_id :bigint(8)
+# id :bigint(8) not null, primary key
+# domain :string default(""), not null
+# created_at :datetime not null
+# updated_at :datetime not null
+# parent_id :bigint(8)
+# allow_with_approval :boolean default(FALSE), not null
#
class EmailDomainBlock < ApplicationRecord
@@ -20,8 +21,10 @@ class EmailDomainBlock < ApplicationRecord
include DomainNormalizable
include Paginable
- belongs_to :parent, class_name: 'EmailDomainBlock', optional: true
- has_many :children, class_name: 'EmailDomainBlock', foreign_key: :parent_id, inverse_of: :parent, dependent: :destroy
+ with_options class_name: 'EmailDomainBlock' do
+ belongs_to :parent, optional: true
+ has_many :children, foreign_key: :parent_id, inverse_of: :parent, dependent: :destroy
+ end
validates :domain, presence: true, uniqueness: true, domain: true
@@ -42,8 +45,8 @@ class EmailDomainBlock < ApplicationRecord
@attempt_ip = attempt_ip
end
- def match?
- blocking? || invalid_uri?
+ def match?(...)
+ blocking?(...) || invalid_uri?
end
private
@@ -52,8 +55,8 @@ class EmailDomainBlock < ApplicationRecord
@uris.any?(&:nil?)
end
- def blocking?
- blocks = EmailDomainBlock.where(domain: domains_with_variants).order(Arel.sql('char_length(domain) desc'))
+ def blocking?(allow_with_approval: false)
+ blocks = EmailDomainBlock.where(domain: domains_with_variants, allow_with_approval: allow_with_approval).order(Arel.sql('char_length(domain) desc'))
blocks.each { |block| block.history.add(@attempt_ip) } if @attempt_ip.present?
blocks.any?
end
@@ -86,4 +89,8 @@ class EmailDomainBlock < ApplicationRecord
def self.block?(domain_or_domains, attempt_ip: nil)
Matcher.new(domain_or_domains, attempt_ip: attempt_ip).match?
end
+
+ def self.requires_approval?(domain_or_domains, attempt_ip: nil)
+ Matcher.new(domain_or_domains, attempt_ip: attempt_ip).match?(allow_with_approval: true)
+ end
end
diff --git a/app/models/featured_tag.rb b/app/models/featured_tag.rb
index 7c36aa8b0..ea8aa4787 100644
--- a/app/models/featured_tag.rb
+++ b/app/models/featured_tag.rb
@@ -45,7 +45,7 @@ class FeaturedTag < ApplicationRecord
end
def decrement(deleted_status_id)
- update(statuses_count: [0, statuses_count - 1].max, last_status_at: account.statuses.where(visibility: %i(public unlisted)).tagged_with(tag).where.not(id: deleted_status_id).select(:created_at).first&.created_at)
+ update(statuses_count: [0, statuses_count - 1].max, last_status_at: visible_tagged_account_statuses.where.not(id: deleted_status_id).select(:created_at).first&.created_at)
end
private
@@ -55,8 +55,8 @@ class FeaturedTag < ApplicationRecord
end
def reset_data
- self.statuses_count = account.statuses.where(visibility: %i(public unlisted)).tagged_with(tag).count
- self.last_status_at = account.statuses.where(visibility: %i(public unlisted)).tagged_with(tag).select(:created_at).first&.created_at
+ self.statuses_count = visible_tagged_account_statuses.count
+ self.last_status_at = visible_tagged_account_statuses.select(:created_at).first&.created_at
end
def validate_featured_tags_limit
@@ -66,6 +66,14 @@ class FeaturedTag < ApplicationRecord
end
def validate_tag_uniqueness
- errors.add(:name, :taken) if FeaturedTag.by_name(name).where(account_id: account_id).exists?
+ errors.add(:name, :taken) if tag_already_featured_for_account?
+ end
+
+ def tag_already_featured_for_account?
+ FeaturedTag.by_name(name).exists?(account_id: account_id)
+ end
+
+ def visible_tagged_account_statuses
+ account.statuses.where(visibility: %i(public unlisted)).tagged_with(tag)
end
end
diff --git a/app/models/follow_recommendation.rb b/app/models/follow_recommendation.rb
index 9d2648394..6b49a3ca6 100644
--- a/app/models/follow_recommendation.rb
+++ b/app/models/follow_recommendation.rb
@@ -19,6 +19,8 @@ class FollowRecommendation < ApplicationRecord
scope :localized, ->(locale) { joins(:account_summary).merge(AccountSummary.localized(locale)) }
def self.refresh
+ Scenic.database.refresh_materialized_view(table_name, concurrently: true, cascade: false)
+ rescue ActiveRecord::StatementInvalid
Scenic.database.refresh_materialized_view(table_name, concurrently: false, cascade: false)
end
diff --git a/app/models/follow_request.rb b/app/models/follow_request.rb
index 3c5e8f96f..c13cc718d 100644
--- a/app/models/follow_request.rb
+++ b/app/models/follow_request.rb
@@ -33,7 +33,7 @@ class FollowRequest < ApplicationRecord
def authorize!
follow = account.follow!(target_account, reblogs: show_reblogs, notify: notify, languages: languages, uri: uri, bypass_limit: true)
- ListAccount.where(follow_request: self).update_all(follow_request_id: nil, follow_id: follow.id) # rubocop:disable Rails/SkipsModelValidations
+ ListAccount.where(follow_request: self).update_all(follow_request_id: nil, follow_id: follow.id)
MergeWorker.perform_async(target_account.id, account.id) if account.local?
destroy!
end
diff --git a/app/models/form/import.rb b/app/models/form/import.rb
index 712acf370..fc83d9c58 100644
--- a/app/models/form/import.rb
+++ b/app/models/form/import.rb
@@ -69,7 +69,7 @@ class Form::Import
ApplicationRecord.transaction do
now = Time.now.utc
@bulk_import = current_account.bulk_imports.create(type: type, overwrite: overwrite || false, state: :unconfirmed, original_filename: data.original_filename, likely_mismatched: likely_mismatched?)
- nb_items = BulkImportRow.insert_all(parsed_rows.map { |row| { bulk_import_id: bulk_import.id, data: row, created_at: now, updated_at: now } }).length # rubocop:disable Rails/SkipsModelValidations
+ nb_items = BulkImportRow.insert_all(parsed_rows.map { |row| { bulk_import_id: bulk_import.id, data: row, created_at: now, updated_at: now } }).length
@bulk_import.update(total_items: nb_items)
end
end
diff --git a/app/models/generated_annual_report.rb b/app/models/generated_annual_report.rb
new file mode 100644
index 000000000..43c97d710
--- /dev/null
+++ b/app/models/generated_annual_report.rb
@@ -0,0 +1,37 @@
+# frozen_string_literal: true
+
+# == Schema Information
+#
+# Table name: generated_annual_reports
+#
+# id :bigint(8) not null, primary key
+# account_id :bigint(8) not null
+# year :integer not null
+# data :jsonb not null
+# schema_version :integer not null
+# viewed_at :datetime
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+
+class GeneratedAnnualReport < ApplicationRecord
+ belongs_to :account
+
+ scope :pending, -> { where(viewed_at: nil) }
+
+ def viewed?
+ viewed_at.present?
+ end
+
+ def view!
+ update!(viewed_at: Time.now.utc)
+ end
+
+ def account_ids
+ data['most_reblogged_accounts'].pluck('account_id') + data['commonly_interacted_with_accounts'].pluck('account_id')
+ end
+
+ def status_ids
+ data['top_statuses'].values
+ end
+end
diff --git a/app/models/instance.rb b/app/models/instance.rb
index 17ee0cbb1..0fd31c809 100644
--- a/app/models/instance.rb
+++ b/app/models/instance.rb
@@ -13,22 +13,37 @@ class Instance < ApplicationRecord
attr_accessor :failure_days
- has_many :accounts, foreign_key: :domain, primary_key: :domain, inverse_of: false
-
with_options foreign_key: :domain, primary_key: :domain, inverse_of: false do
belongs_to :domain_block
belongs_to :domain_allow
- belongs_to :unavailable_domain # skipcq: RB-RL1031
+ belongs_to :unavailable_domain
+
+ has_many :accounts, dependent: nil
end
scope :searchable, -> { where.not(domain: DomainBlock.select(:domain)) }
scope :matches_domain, ->(value) { where(arel_table[:domain].matches("%#{value}%")) }
+ scope :domain_starts_with, ->(value) { where(arel_table[:domain].matches("#{sanitize_sql_like(value)}%", false, true)) }
scope :by_domain_and_subdomains, ->(domain) { where("reverse('.' || domain) LIKE reverse(?)", "%.#{domain}") }
+ scope :with_domain_follows, ->(domains) { where(domain: domains).where(domain_account_follows) }
def self.refresh
Scenic.database.refresh_materialized_view(table_name, concurrently: true, cascade: false)
end
+ def self.domain_account_follows
+ Arel.sql(
+ <<~SQL.squish
+ EXISTS (
+ SELECT 1
+ FROM follows
+ JOIN accounts ON follows.account_id = accounts.id OR follows.target_account_id = accounts.id
+ WHERE accounts.domain = instances.domain
+ )
+ SQL
+ )
+ end
+
def readonly?
true
end
diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb
index 1f40e5725..7ff6a15f5 100644
--- a/app/models/media_attachment.rb
+++ b/app/models/media_attachment.rb
@@ -204,12 +204,14 @@ class MediaAttachment < ApplicationRecord
validates :file, presence: true, if: :local?
validates :thumbnail, absence: true, if: -> { local? && !audio_or_video? }
- scope :attached, -> { where.not(status_id: nil).or(where.not(scheduled_status_id: nil)) }
- scope :cached, -> { remote.where.not(file_file_name: nil) }
- scope :local, -> { where(remote_url: '') }
- scope :ordered, -> { order(id: :asc) }
- scope :remote, -> { where.not(remote_url: '') }
+ scope :attached, -> { where.not(status_id: nil).or(where.not(scheduled_status_id: nil)) }
+ scope :cached, -> { remote.where.not(file_file_name: nil) }
+ scope :created_before, ->(value) { where(arel_table[:created_at].lt(value)) }
+ scope :local, -> { where(remote_url: '') }
+ scope :ordered, -> { order(id: :asc) }
+ scope :remote, -> { where.not(remote_url: '') }
scope :unattached, -> { where(status_id: nil, scheduled_status_id: nil) }
+ scope :updated_before, ->(value) { where(arel_table[:updated_at].lt(value)) }
attr_accessor :skip_download
diff --git a/app/models/poll.rb b/app/models/poll.rb
index 72f04f00a..cc4184f80 100644
--- a/app/models/poll.rb
+++ b/app/models/poll.rb
@@ -27,8 +27,11 @@ class Poll < ApplicationRecord
belongs_to :status
has_many :votes, class_name: 'PollVote', inverse_of: :poll, dependent: :delete_all
- has_many :voters, -> { group('accounts.id') }, through: :votes, class_name: 'Account', source: :account
- has_many :local_voters, -> { group('accounts.id').merge(Account.local) }, through: :votes, class_name: 'Account', source: :account
+
+ with_options class_name: 'Account', source: :account, through: :votes do
+ has_many :voters, -> { group('accounts.id') }
+ has_many :local_voters, -> { group('accounts.id').merge(Account.local) }
+ end
has_many :notifications, as: :activity, dependent: :destroy
@@ -54,7 +57,7 @@ class Poll < ApplicationRecord
end
def voted?(account)
- account.id == account_id || votes.where(account: account).exists?
+ account.id == account_id || votes.exists?(account: account)
end
def own_votes(account)
diff --git a/app/models/privacy_policy.rb b/app/models/privacy_policy.rb
index 36cbf1882..c0d6e1b76 100644
--- a/app/models/privacy_policy.rb
+++ b/app/models/privacy_policy.rb
@@ -1,66 +1,7 @@
# frozen_string_literal: true
class PrivacyPolicy < ActiveModelSerializers::Model
- DEFAULT_PRIVACY_POLICY = <<~TXT
- This privacy policy describes how %{domain} ("%{domain}", "we", "us") collects, protects and uses the personally identifiable information you may provide through the %{domain} website or its API. The policy also describes the choices available to you regarding our use of your personal information and how you can access and update this information. This policy does not apply to the practices of companies that %{domain} does not own or control, or to individuals that %{domain} does not employ or manage.
-
- # What information do we collect?
-
- - **Basic account information**: If you register on this server, you may be asked to enter a username, an e-mail address and a password. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly.
- - **Posts, following and other public information**: The list of people you follow is listed publicly, the same is true for your followers. When you submit a message, the date and time is stored as well as the application you submitted the message from. Messages may contain media attachments, such as pictures and videos. Public and unlisted posts are available publicly. When you feature a post on your profile, that is also publicly available information. Your posts are delivered to your followers, in some cases it means they are delivered to different servers and copies are stored there. When you delete posts, this is likewise delivered to your followers. The action of reblogging or favouriting another post is always public.
- - **Direct and followers-only posts**: All posts are stored and processed on the server. Followers-only posts are delivered to your followers and users who are mentioned in them, and direct posts are delivered only to users mentioned in them. In some cases it means they are delivered to different servers and copies are stored there. We make a good faith effort to limit the access to those posts only to authorized persons, but other servers may fail to do so. Therefore it's important to review servers your followers belong to. You may toggle an option to approve and reject new followers manually in the settings. **Please keep in mind that the operators of the server and any receiving server may view such messages**, and that recipients may screenshot, copy or otherwise re-share them. **Do not share any sensitive information over Mastodon.**
- - **IPs and other metadata**: When you log in, we record the IP address you log in from, as well as the name of your browser application. All the logged in sessions are available for your review and revocation in the settings. The latest IP address used is stored for up to 12 months. We also may retain server logs which include the IP address of every request to our server.
-
- # What do we use your information for?
-
- Any of the information we collect from you may be used in the following ways:
-
- - To provide the core functionality of Mastodon. You can only interact with other people's content and post your own content when you are logged in. For example, you may follow other people to view their combined posts in your own personalized home timeline.
- - To aid moderation of the community, for example comparing your IP address with other known ones to determine ban evasion or other violations.
- - The email address you provide may be used to send you information, notifications about other people interacting with your content or sending you messages, and to respond to inquiries, and/or other requests or questions.
-
- # How do we protect your information?
-
- We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL, and your password is hashed using a strong one-way algorithm. You may enable two-factor authentication to further secure access to your account.
-
- # What is our data retention policy?
-
- We will make a good faith effort to:
-
- - Retain server logs containing the IP address of all requests to this server, in so far as such logs are kept, no more than 90 days.
- - Retain the IP addresses associated with registered users no more than 12 months.
-
- You can request and download an archive of your content, including your posts, media attachments, profile picture, and header image.
-
- You may irreversibly delete your account at any time.
-
- # Do we use cookies?
-
- Yes. Cookies are small files that a site or its service provider transfers to your computer's hard drive through your Web browser (if you allow). These cookies enable the site to recognize your browser and, if you have a registered account, associate it with your registered account.
-
- We use cookies to understand and save your preferences for future visits.
-
- # Do we disclose any information to outside parties?
-
- We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety.
-
- Your public content may be downloaded by other servers in the network. Your public and followers-only posts are delivered to the servers where your followers reside, and direct messages are delivered to the servers of the recipients, in so far as those followers or recipients reside on a different server than this.
-
- When you authorize an application to use your account, depending on the scope of permissions you approve, it may access your public profile information, your following list, your followers, your lists, all your posts, and your favourites. Applications can never access your e-mail address or password.
-
- # Site usage by children
-
- If this server is in the EU or the EEA: Our site, products and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the GDPR (General Data Protection Regulation) do not use this site.
-
- If this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of COPPA (Children's Online Privacy Protection Act) do not use this site.
-
- Law requirements can be different if this server is in another jurisdiction.
-
- ___
-
- This document is CC-BY-SA. Originally adapted from the [Discourse privacy policy](https://github.com/discourse/discourse).
- TXT
-
+ DEFAULT_PRIVACY_POLICY = Rails.root.join('config', 'templates', 'privacy-policy.md').read
DEFAULT_UPDATED_AT = DateTime.new(2022, 10, 7).freeze
attributes :updated_at, :text
diff --git a/app/models/report.rb b/app/models/report.rb
index c565362cc..38da26d7b 100644
--- a/app/models/report.rb
+++ b/app/models/report.rb
@@ -29,16 +29,19 @@ class Report < ApplicationRecord
rate_limit by: :account, family: :reports
belongs_to :account
- belongs_to :target_account, class_name: 'Account'
- belongs_to :action_taken_by_account, class_name: 'Account', optional: true
- belongs_to :assigned_account, class_name: 'Account', optional: true
+
+ with_options class_name: 'Account' do
+ belongs_to :target_account
+ belongs_to :action_taken_by_account, optional: true
+ belongs_to :assigned_account, optional: true
+ end
has_many :notes, class_name: 'ReportNote', inverse_of: :report, dependent: :destroy
has_many :notifications, as: :activity, dependent: :destroy
scope :unresolved, -> { where(action_taken_at: nil) }
scope :resolved, -> { where.not(action_taken_at: nil) }
- scope :with_accounts, -> { includes([:account, :target_account, :action_taken_by_account, :assigned_account].index_with({ user: [:invite_request, :invite] })) }
+ scope :with_accounts, -> { includes([:account, :target_account, :action_taken_by_account, :assigned_account].index_with([:account_stat, { user: [:invite_request, :invite, :ips] }])) }
# A report is considered local if the reporter is local
delegate :local?, to: :account
diff --git a/app/models/session_activation.rb b/app/models/session_activation.rb
index 7f5f0d9a9..c67180d3b 100644
--- a/app/models/session_activation.rb
+++ b/app/models/session_activation.rb
@@ -41,7 +41,7 @@ class SessionActivation < ApplicationRecord
class << self
def active?(id)
- id && where(session_id: id).exists?
+ id && exists?(session_id: id)
end
def activate(**options)
diff --git a/app/models/setting.rb b/app/models/setting.rb
index 3bdc6ffb4..6af7a98c6 100644
--- a/app/models/setting.rb
+++ b/app/models/setting.rb
@@ -13,49 +13,114 @@
# thing_id :bigint(8)
#
-class Setting < RailsSettings::Base
- source Rails.root.join('config', 'settings.yml')
+# This file is derived from a fork of the `rails-settings-cached` gem available at
+# https://github.com/mastodon/rails-settings-cached/tree/v0.6.6-aliases-true, with
+# the original available at:
+# https://github.com/huacnlee/rails-settings-cached/tree/0.x
+
+# It is licensed as follows:
+
+# Copyright (c) 2006 Alex Wayne
+# Some additional features added 2009 by Georg Ledermann
+
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOa AND
+# NONINFRINGEMENT. IN NO EVENT SaALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+class Setting < ApplicationRecord
+ after_commit :rewrite_cache, on: %i(create update)
+ after_commit :expire_cache, on: %i(destroy)
+
+ # Settings are server-wide settings only, but they were previously
+ # used for users too. This can be dropped later with a database
+ # migration dropping any scoped setting.
+ default_scope { where(thing_type: nil, thing_id: nil) }
+
+ class << self
+ # get or set a variable with the variable as the called method
+ # rubocop:disable Style/MissingRespondToMissing
+ def method_missing(method, *args)
+ # set a value for a variable
+ if method.end_with?('=')
+ var_name = method.to_s.chomp('=')
+ value = args.first
+ self[var_name] = value
+ else
+ # retrieve a value
+ self[method.to_s]
+ end
+ end
+ # rubocop:enable Style/MissingRespondToMissing
+
+ def cache_prefix_by_startup
+ @cache_prefix_by_startup ||= Digest::MD5.hexdigest(default_settings.to_s)
+ end
+
+ def cache_key(var_name)
+ "rails_settings_cached/#{cache_prefix_by_startup}/#{var_name}"
+ end
+
+ def [](key)
+ Rails.cache.fetch(cache_key(key)) do
+ db_val = find_by(var: key)
+ db_val ? db_val.value : default_settings[key]
+ end
+ end
+
+ # set a setting value by [] notation
+ def []=(var_name, value)
+ record = find_or_initialize_by(var: var_name.to_s)
+ record.value = value
+ record.save!
+ end
+
+ def default_settings
+ return @default_settings if defined?(@default_settings)
+
+ content = Rails.root.join('config', 'settings.yml').read
+ hash = content.empty? ? {} : YAML.safe_load(ERB.new(content).result, aliases: true).to_hash
+ @default_settings = (hash[Rails.env] || {}).freeze
+ end
+ end
+
+ # get the value field, YAML decoded
+ def value
+ YAML.safe_load(self[:value], permitted_classes: [ActiveSupport::HashWithIndifferentAccess, Symbol]) if self[:value].present?
+ end
+
+ # set the value field, YAML encoded
+ def value=(new_value)
+ self[:value] = new_value.to_yaml
+ end
+
+ def rewrite_cache
+ Rails.cache.write(cache_key, value)
+ end
+
+ def expire_cache
+ Rails.cache.delete(cache_key)
+ end
+
+ def cache_key
+ self.class.cache_key(var)
+ end
def to_param
var
end
-
- class << self
- def [](key)
- return super(key) unless rails_initialized?
-
- Rails.cache.fetch(cache_key(key, nil)) do
- db_val = object(key)
-
- if db_val
- default_value = default_settings[key]
-
- return default_value.with_indifferent_access.merge!(db_val.value) if default_value.is_a?(Hash)
-
- db_val.value
- else
- default_settings[key]
- end
- end
- end
-
- def all_as_records
- vars = thing_scoped
- records = vars.index_by(&:var)
-
- default_settings.each do |key, default_value|
- next if records.key?(key) || default_value.is_a?(Hash)
-
- records[key] = Setting.new(var: key, value: default_value)
- end
-
- records
- end
-
- def default_settings
- return {} unless RailsSettings::Default.enabled?
-
- RailsSettings::Default.instance
- end
- end
end
diff --git a/app/models/status.rb b/app/models/status.rb
index 90db698fb..a8684b617 100644
--- a/app/models/status.rb
+++ b/app/models/status.rb
@@ -62,9 +62,11 @@ class Status < ApplicationRecord
belongs_to :conversation, optional: true
belongs_to :preloadable_poll, class_name: 'Poll', foreign_key: 'poll_id', optional: true, inverse_of: false
- belongs_to :thread, foreign_key: 'in_reply_to_id', class_name: 'Status', inverse_of: :replies, optional: true
- belongs_to :reblog, foreign_key: 'reblog_of_id', class_name: 'Status', inverse_of: :reblogs, optional: true
- belongs_to :quote, class_name: 'Status', inverse_of: :quoted, optional: true
+ with_options class_name: 'Status', optional: true do
+ belongs_to :thread, foreign_key: 'in_reply_to_id', inverse_of: :replies
+ belongs_to :reblog, foreign_key: 'reblog_of_id', inverse_of: :reblogs
+ belongs_to :quote, class_name: 'Status', inverse_of: :quoted, optional: true
+ end
has_many :favourites, inverse_of: :status, dependent: :destroy
has_many :emoji_reactions, inverse_of: :status, dependent: :destroy
@@ -115,8 +117,6 @@ class Status < ApplicationRecord
scope :without_reblogs, -> { where(statuses: { reblog_of_id: nil }) }
scope :with_public_visibility, -> { where(visibility: :public) }
scope :tagged_with, ->(tag_ids) { joins(:statuses_tags).where(statuses_tags: { tag_id: tag_ids }) }
- scope :excluding_silenced_accounts, -> { left_outer_joins(:account).where(accounts: { silenced_at: nil }) }
- scope :including_silenced_accounts, -> { left_outer_joins(:account).where.not(accounts: { silenced_at: nil }) }
scope :not_excluded_by_account, ->(account) { where.not(account_id: account.excluded_from_timeline_account_ids) }
scope :not_domain_blocked_by_account, ->(account) { account.excluded_from_timeline_domains.blank? ? left_outer_joins(:account) : left_outer_joins(:account).where('accounts.domain IS NULL OR accounts.domain NOT IN (?)', account.excluded_from_timeline_domains) }
scope :tagged_with_all, lambda { |tag_ids|
@@ -278,7 +278,7 @@ class Status < ApplicationRecord
end
def reported?
- @reported ||= Report.where(target_account: account).unresolved.where('? = ANY(status_ids)', id).exists?
+ @reported ||= Report.where(target_account: account).unresolved.exists?(['? = ANY(status_ids)', id])
end
def emojis
diff --git a/app/models/tag.rb b/app/models/tag.rb
index 46e55d74f..f2168ae90 100644
--- a/app/models/tag.rb
+++ b/app/models/tag.rb
@@ -39,6 +39,8 @@ class Tag < ApplicationRecord
HASHTAG_NAME_RE = /\A(#{HASHTAG_NAME_PAT})\z/i
HASHTAG_INVALID_CHARS_RE = /[^[:alnum:]\u0E47-\u0E4E#{HASHTAG_SEPARATORS}]/
+ RECENT_STATUS_LIMIT = 1000
+
validates :name, presence: true, format: { with: HASHTAG_NAME_RE }
validates :display_name, format: { with: HASHTAG_NAME_RE }
validate :validate_name_change, if: -> { !new_record? && name_changed? }
@@ -53,7 +55,7 @@ class Tag < ApplicationRecord
scope :not_trendable, -> { where(trendable: false) }
scope :recently_used, lambda { |account|
joins(:statuses)
- .where(statuses: { id: account.statuses.select(:id).limit(1000) })
+ .where(statuses: { id: account.statuses.select(:id).limit(RECENT_STATUS_LIMIT) })
.group(:id).order(Arel.sql('count(*) desc'))
}
scope :matches_name, ->(term) { where(arel_table[:name].lower.matches(arel_table.lower("#{sanitize_sql_like(Tag.normalize(term))}%"), nil, true)) } # Search with case-sensitive to use B-tree index
diff --git a/app/models/user.rb b/app/models/user.rb
index a1574c02a..70c24336f 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -117,16 +117,16 @@ class User < ApplicationRecord
scope :active, -> { confirmed.where(arel_table[:current_sign_in_at].gteq(ACTIVE_DURATION.ago)).joins(:account).where(accounts: { suspended_at: nil }) }
scope :matches_email, ->(value) { where(arel_table[:email].matches("#{value}%")) }
scope :matches_ip, ->(value) { left_joins(:ips).where('user_ips.ip <<= ?', value).group('users.id') }
- scope :emailable, -> { confirmed.enabled.joins(:account).merge(Account.searchable) }
- before_validation :sanitize_languages
before_validation :sanitize_role
- before_validation :sanitize_time_zone
- before_validation :sanitize_locale
before_create :set_approved
after_commit :send_pending_devise_notifications
after_create_commit :trigger_webhooks
+ normalizes :locale, with: ->(locale) { I18n.available_locales.exclude?(locale.to_sym) ? nil : locale }
+ normalizes :time_zone, with: ->(time_zone) { ActiveSupport::TimeZone[time_zone].nil? ? nil : time_zone }
+ normalizes :chosen_languages, with: ->(chosen_languages) { chosen_languages.compact_blank.presence }
+
# This avoids a deprecation warning from Rails 5.1
# It seems possible that a future release of devise-two-factor will
# handle this itself, and this can be removed from our User class.
@@ -149,6 +149,10 @@ class User < ApplicationRecord
end
end
+ def self.skip_mx_check?
+ Rails.env.local?
+ end
+
def role
if role_id.nil?
UserRole.everyone
@@ -186,37 +190,16 @@ class User < ApplicationRecord
end
def confirm
- new_user = !confirmed?
- self.approved = true if open_registrations? && !sign_up_from_ip_requires_approval?
-
- super
-
- if new_user
- # Avoid extremely unlikely race condition when approving and confirming
- # the user at the same time
- reload unless approved?
-
- if approved?
- prepare_new_user!
- else
- notify_staff_about_pending_account!
- end
+ wrap_email_confirmation do
+ super
end
end
- def confirm!
- new_user = !confirmed?
- self.approved = true if open_registrations?
-
- skip_confirmation!
- save!
-
- if new_user
- # Avoid extremely unlikely race condition when approving and confirming
- # the user at the same time
- reload unless approved?
-
- prepare_new_user! if approved?
+ # Mark current email as confirmed, bypassing Devise
+ def mark_email_as_confirmed!
+ wrap_email_confirmation do
+ skip_confirmation!
+ save!
end
end
@@ -418,7 +401,7 @@ class User < ApplicationRecord
def set_approved
self.approved = begin
- if sign_up_from_ip_requires_approval?
+ if sign_up_from_ip_requires_approval? || sign_up_email_requires_approval?
false
else
open_registrations? || valid_invitation? || external?
@@ -426,8 +409,53 @@ class User < ApplicationRecord
end
end
+ def grant_approval_on_confirmation?
+ # Re-check approval on confirmation if the server has switched to open registrations
+ open_registrations? && !sign_up_from_ip_requires_approval? && !sign_up_email_requires_approval?
+ end
+
+ def wrap_email_confirmation
+ new_user = !confirmed?
+ self.approved = true if grant_approval_on_confirmation?
+
+ yield
+
+ if new_user
+ # Avoid extremely unlikely race condition when approving and confirming
+ # the user at the same time
+ reload unless approved?
+
+ if approved?
+ prepare_new_user!
+ else
+ notify_staff_about_pending_account!
+ end
+ end
+ end
+
def sign_up_from_ip_requires_approval?
- !sign_up_ip.nil? && IpBlock.where(severity: :sign_up_requires_approval).where('ip >>= ?', sign_up_ip.to_s).exists?
+ sign_up_ip.present? && IpBlock.sign_up_requires_approval.exists?(['ip >>= ?', sign_up_ip.to_s])
+ end
+
+ def sign_up_email_requires_approval?
+ return false if email.blank?
+
+ _, domain = email.split('@', 2)
+ return false if domain.blank?
+
+ records = []
+
+ # Doing this conditionally is not very satisfying, but this is consistent
+ # with the MX records validations we do and keeps the specs tractable.
+ unless self.class.skip_mx_check?
+ Resolv::DNS.open do |dns|
+ dns.timeouts = 5
+
+ records = dns.getresources(domain, Resolv::DNS::Resource::IN::MX).to_a.map { |e| e.exchange.to_s }.compact_blank
+ end
+ end
+
+ EmailDomainBlock.requires_approval?(records + [domain], attempt_ip: sign_up_ip)
end
def open_registrations?
@@ -442,25 +470,10 @@ class User < ApplicationRecord
@bypass_invite_request_check
end
- def sanitize_languages
- return if chosen_languages.nil?
-
- chosen_languages.compact_blank!
- self.chosen_languages = nil if chosen_languages.empty?
- end
-
def sanitize_role
self.role = nil if role.present? && role.everyone?
end
- def sanitize_time_zone
- self.time_zone = nil if time_zone.present? && ActiveSupport::TimeZone[time_zone].nil?
- end
-
- def sanitize_locale
- self.locale = nil if locale.present? && I18n.available_locales.exclude?(locale.to_sym)
- end
-
def prepare_new_user!
BootstrapTimelineWorker.perform_async(account_id)
ActivityTracker.increment('activity:accounts:local')
@@ -493,7 +506,7 @@ class User < ApplicationRecord
end
def validate_email_dns?
- email_changed? && !external? && !Rails.env.local?
+ email_changed? && !external? && !self.class.skip_mx_check?
end
def validate_role_elevation
diff --git a/app/policies/status_policy.rb b/app/policies/status_policy.rb
index 990036565..cc8d0439c 100644
--- a/app/policies/status_policy.rb
+++ b/app/policies/status_policy.rb
@@ -61,7 +61,7 @@ class StatusPolicy < ApplicationPolicy
if record.mentions.loaded?
record.mentions.any? { |mention| mention.account_id == current_account.id }
else
- record.mentions.where(account: current_account).exists?
+ record.mentions.exists?(account: current_account)
end
end
diff --git a/app/presenters/annual_reports_presenter.rb b/app/presenters/annual_reports_presenter.rb
new file mode 100644
index 000000000..001e1d37b
--- /dev/null
+++ b/app/presenters/annual_reports_presenter.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+class AnnualReportsPresenter
+ alias read_attribute_for_serialization send
+
+ attr_reader :annual_reports
+
+ def initialize(annual_reports)
+ @annual_reports = annual_reports
+ end
+
+ def accounts
+ @accounts ||= Account.where(id: @annual_reports.flat_map(&:account_ids)).includes(:account_stat, :moved_to_account, user: :role)
+ end
+
+ def statuses
+ @statuses ||= Status.where(id: @annual_reports.flat_map(&:status_ids)).with_includes
+ end
+
+ def self.model_name
+ @model_name ||= ActiveModel::Name.new(self)
+ end
+end
diff --git a/app/serializers/manifest_serializer.rb b/app/serializers/manifest_serializer.rb
index 501bb788e..1c1f7d0ad 100644
--- a/app/serializers/manifest_serializer.rb
+++ b/app/serializers/manifest_serializer.rb
@@ -39,7 +39,7 @@ class ManifestSerializer < ActiveModel::Serializer
def icons
ICON_SIZES.map do |size|
{
- src: full_pack_url("media/icons/android-chrome-#{size}x#{size}.png"),
+ src: frontend_asset_url("icons/android-chrome-#{size}x#{size}.png"),
sizes: "#{size}x#{size}",
type: 'image/png',
purpose: 'any maskable',
diff --git a/app/serializers/rest/admin/email_domain_block_serializer.rb b/app/serializers/rest/admin/email_domain_block_serializer.rb
index a026ff680..afe7722cb 100644
--- a/app/serializers/rest/admin/email_domain_block_serializer.rb
+++ b/app/serializers/rest/admin/email_domain_block_serializer.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
class REST::Admin::EmailDomainBlockSerializer < ActiveModel::Serializer
- attributes :id, :domain, :created_at, :history
+ attributes :id, :domain, :created_at, :history, :allow_with_approval
def id
object.id.to_s
diff --git a/app/serializers/rest/announcement_serializer.rb b/app/serializers/rest/announcement_serializer.rb
index 23b2fa514..8cee27127 100644
--- a/app/serializers/rest/announcement_serializer.rb
+++ b/app/serializers/rest/announcement_serializer.rb
@@ -23,7 +23,7 @@ class REST::AnnouncementSerializer < ActiveModel::Serializer
end
def read
- object.announcement_mutes.where(account: current_user.account).exists?
+ object.announcement_mutes.exists?(account: current_user.account)
end
def content
diff --git a/app/serializers/rest/annual_report_serializer.rb b/app/serializers/rest/annual_report_serializer.rb
new file mode 100644
index 000000000..1fb5ddb5c
--- /dev/null
+++ b/app/serializers/rest/annual_report_serializer.rb
@@ -0,0 +1,5 @@
+# frozen_string_literal: true
+
+class REST::AnnualReportSerializer < ActiveModel::Serializer
+ attributes :year, :data, :schema_version
+end
diff --git a/app/serializers/rest/annual_reports_serializer.rb b/app/serializers/rest/annual_reports_serializer.rb
new file mode 100644
index 000000000..ea9572be1
--- /dev/null
+++ b/app/serializers/rest/annual_reports_serializer.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+class REST::AnnualReportsSerializer < ActiveModel::Serializer
+ has_many :annual_reports, serializer: REST::AnnualReportSerializer
+ has_many :accounts, serializer: REST::AccountSerializer
+ has_many :statuses, serializer: REST::StatusSerializer
+end
diff --git a/app/serializers/rest/instance_serializer.rb b/app/serializers/rest/instance_serializer.rb
index 04dfa85cd..5194857b4 100644
--- a/app/serializers/rest/instance_serializer.rb
+++ b/app/serializers/rest/instance_serializer.rb
@@ -28,7 +28,7 @@ class REST::InstanceSerializer < ActiveModel::Serializer
}
else
{
- url: full_pack_url('media/images/preview.png'),
+ url: frontend_asset_url('images/preview.png'),
}
end
end
diff --git a/app/serializers/rest/tag_serializer.rb b/app/serializers/rest/tag_serializer.rb
index 7801e77d1..017b57271 100644
--- a/app/serializers/rest/tag_serializer.rb
+++ b/app/serializers/rest/tag_serializer.rb
@@ -19,7 +19,7 @@ class REST::TagSerializer < ActiveModel::Serializer
if instance_options && instance_options[:relationships]
instance_options[:relationships].following_map[object.id] || false
else
- TagFollow.where(tag_id: object.id, account_id: current_user.account_id).exists?
+ TagFollow.exists?(tag_id: object.id, account_id: current_user.account_id)
end
end
diff --git a/app/serializers/rest/v1/instance_serializer.rb b/app/serializers/rest/v1/instance_serializer.rb
index 145ca6967..fc405850a 100644
--- a/app/serializers/rest/v1/instance_serializer.rb
+++ b/app/serializers/rest/v1/instance_serializer.rb
@@ -33,7 +33,7 @@ class REST::V1::InstanceSerializer < ActiveModel::Serializer
end
def thumbnail
- instance_presenter.thumbnail ? full_asset_url(instance_presenter.thumbnail.file.url(:'@1x')) : full_pack_url('media/images/preview.png')
+ instance_presenter.thumbnail ? full_asset_url(instance_presenter.thumbnail.file.url(:'@1x')) : frontend_asset_url('images/preview.png')
end
def stats
diff --git a/app/services/activitypub/fetch_featured_collection_service.rb b/app/services/activitypub/fetch_featured_collection_service.rb
index d2bae08a0..89c3a1b6c 100644
--- a/app/services/activitypub/fetch_featured_collection_service.rb
+++ b/app/services/activitypub/fetch_featured_collection_service.rb
@@ -23,9 +23,9 @@ class ActivityPub::FetchFeaturedCollectionService < BaseService
case collection['type']
when 'Collection', 'CollectionPage'
- collection['items']
+ as_array(collection['items'])
when 'OrderedCollection', 'OrderedCollectionPage'
- collection['orderedItems']
+ as_array(collection['orderedItems'])
end
end
diff --git a/app/services/activitypub/fetch_remote_account_service.rb b/app/services/activitypub/fetch_remote_account_service.rb
index 567dd8a14..7b083d889 100644
--- a/app/services/activitypub/fetch_remote_account_service.rb
+++ b/app/services/activitypub/fetch_remote_account_service.rb
@@ -2,7 +2,7 @@
class ActivityPub::FetchRemoteAccountService < ActivityPub::FetchRemoteActorService
# Does a WebFinger roundtrip on each call, unless `only_key` is true
- def call(uri, id: true, prefetched_body: nil, break_on_redirect: false, only_key: false, suppress_errors: true, request_id: nil)
+ def call(uri, prefetched_body: nil, break_on_redirect: false, only_key: false, suppress_errors: true, request_id: nil)
actor = super
return actor if actor.nil? || actor.is_a?(Account)
diff --git a/app/services/activitypub/fetch_remote_actor_service.rb b/app/services/activitypub/fetch_remote_actor_service.rb
index 8df8c7587..86a134bb4 100644
--- a/app/services/activitypub/fetch_remote_actor_service.rb
+++ b/app/services/activitypub/fetch_remote_actor_service.rb
@@ -10,15 +10,15 @@ class ActivityPub::FetchRemoteActorService < BaseService
SUPPORTED_TYPES = %w(Application Group Organization Person Service).freeze
# Does a WebFinger roundtrip on each call, unless `only_key` is true
- def call(uri, id: true, prefetched_body: nil, break_on_redirect: false, only_key: false, suppress_errors: true, request_id: nil)
+ def call(uri, prefetched_body: nil, break_on_redirect: false, only_key: false, suppress_errors: true, request_id: nil)
return if domain_not_allowed?(uri)
return ActivityPub::TagManager.instance.uri_to_actor(uri) if ActivityPub::TagManager.instance.local_uri?(uri)
@json = begin
if prefetched_body.nil?
- fetch_resource(uri, id)
+ fetch_resource(uri, true)
else
- body_to_json(prefetched_body, compare_id: id ? uri : nil)
+ body_to_json(prefetched_body, compare_id: uri)
end
rescue Oj::ParseError
raise Error, "Error parsing JSON-LD document #{uri}"
diff --git a/app/services/activitypub/fetch_remote_key_service.rb b/app/services/activitypub/fetch_remote_key_service.rb
index 8eb97c1e6..e96b5ad3b 100644
--- a/app/services/activitypub/fetch_remote_key_service.rb
+++ b/app/services/activitypub/fetch_remote_key_service.rb
@@ -6,23 +6,10 @@ class ActivityPub::FetchRemoteKeyService < BaseService
class Error < StandardError; end
# Returns actor that owns the key
- def call(uri, id: true, prefetched_body: nil, suppress_errors: true)
+ def call(uri, suppress_errors: true)
raise Error, 'No key URI given' if uri.blank?
- if prefetched_body.nil?
- if id
- @json = fetch_resource_without_id_validation(uri)
- if actor_type?
- @json = fetch_resource(@json['id'], true)
- elsif uri != @json['id']
- raise Error, "Fetched URI #{uri} has wrong id #{@json['id']}"
- end
- else
- @json = fetch_resource(uri, id)
- end
- else
- @json = body_to_json(prefetched_body, compare_id: id ? uri : nil)
- end
+ @json = fetch_resource(uri, false)
raise Error, "Unable to fetch key JSON at #{uri}" if @json.nil?
raise Error, "Unsupported JSON-LD context for document #{uri}" unless supported_context?(@json)
diff --git a/app/services/activitypub/fetch_remote_status_service.rb b/app/services/activitypub/fetch_remote_status_service.rb
index a491b32b2..6f8882378 100644
--- a/app/services/activitypub/fetch_remote_status_service.rb
+++ b/app/services/activitypub/fetch_remote_status_service.rb
@@ -8,14 +8,14 @@ class ActivityPub::FetchRemoteStatusService < BaseService
DISCOVERIES_PER_REQUEST = 1000
# Should be called when uri has already been checked for locality
- def call(uri, id: true, prefetched_body: nil, on_behalf_of: nil, expected_actor_uri: nil, request_id: nil)
+ def call(uri, prefetched_body: nil, on_behalf_of: nil, expected_actor_uri: nil, request_id: nil)
return if domain_not_allowed?(uri)
@request_id = request_id || "#{Time.now.utc.to_i}-status-#{uri}"
@json = if prefetched_body.nil?
- fetch_resource(uri, id, on_behalf_of)
+ fetch_resource(uri, true, on_behalf_of)
else
- body_to_json(prefetched_body, compare_id: id ? uri : nil)
+ body_to_json(prefetched_body, compare_id: uri)
end
return unless supported_context?
@@ -44,7 +44,7 @@ class ActivityPub::FetchRemoteStatusService < BaseService
# If we fetched a status that already exists, then we need to treat the
# activity as an update rather than create
- activity_json['type'] = 'Update' if equals_or_includes_any?(activity_json['type'], %w(Create)) && Status.where(uri: object_uri, account_id: actor.id).exists?
+ activity_json['type'] = 'Update' if equals_or_includes_any?(activity_json['type'], %w(Create)) && Status.exists?(uri: object_uri, account_id: actor.id)
with_redis do |redis|
discoveries = redis.incr("status_discovery_per_request:#{@request_id}")
@@ -65,7 +65,7 @@ class ActivityPub::FetchRemoteStatusService < BaseService
def account_from_uri(uri)
actor = ActivityPub::TagManager.instance.uri_to_resource(uri, Account)
- actor = ActivityPub::FetchRemoteAccountService.new.call(uri, id: true, request_id: @request_id) if actor.nil? || actor.possibly_stale?
+ actor = ActivityPub::FetchRemoteAccountService.new.call(uri, request_id: @request_id) if actor.nil? || actor.possibly_stale?
actor
end
diff --git a/app/services/activitypub/fetch_replies_service.rb b/app/services/activitypub/fetch_replies_service.rb
index b5c7759ec..e2ecdef16 100644
--- a/app/services/activitypub/fetch_replies_service.rb
+++ b/app/services/activitypub/fetch_replies_service.rb
@@ -26,9 +26,9 @@ class ActivityPub::FetchRepliesService < BaseService
case collection['type']
when 'Collection', 'CollectionPage'
- collection['items']
+ as_array(collection['items'])
when 'OrderedCollection', 'OrderedCollectionPage'
- collection['orderedItems']
+ as_array(collection['orderedItems'])
end
end
@@ -37,7 +37,20 @@ class ActivityPub::FetchRepliesService < BaseService
return unless @allow_synchronous_requests
return if non_matching_uri_hosts?(@account.uri, collection_or_uri)
- fetch_resource_without_id_validation(collection_or_uri, nil, true)
+ # NOTE: For backward compatibility reasons, Mastodon signs outgoing
+ # queries incorrectly by default.
+ #
+ # While this is relevant for all URLs with query strings, this is
+ # the only code path where this happens in practice.
+ #
+ # Therefore, retry with correct signatures if this fails.
+ begin
+ fetch_resource_without_id_validation(collection_or_uri, nil, true)
+ rescue Mastodon::UnexpectedResponseError => e
+ raise unless e.response && e.response.code == 401 && Addressable::URI.parse(collection_or_uri).query.present?
+
+ fetch_resource_without_id_validation(collection_or_uri, nil, true, request_options: { with_query_string: true })
+ end
end
def filtered_replies
diff --git a/app/services/activitypub/process_account_service.rb b/app/services/activitypub/process_account_service.rb
index 8fc0989a3..9e787ace5 100644
--- a/app/services/activitypub/process_account_service.rb
+++ b/app/services/activitypub/process_account_service.rb
@@ -277,7 +277,7 @@ class ActivityPub::ProcessAccountService < BaseService
def moved_account
account = ActivityPub::TagManager.instance.uri_to_resource(@json['movedTo'], Account)
- account ||= ActivityPub::FetchRemoteAccountService.new.call(@json['movedTo'], id: true, break_on_redirect: true, request_id: @options[:request_id])
+ account ||= ActivityPub::FetchRemoteAccountService.new.call(@json['movedTo'], break_on_redirect: true, request_id: @options[:request_id])
account
end
diff --git a/app/services/activitypub/synchronize_followers_service.rb b/app/services/activitypub/synchronize_followers_service.rb
index 7ccc91730..f51d671a0 100644
--- a/app/services/activitypub/synchronize_followers_service.rb
+++ b/app/services/activitypub/synchronize_followers_service.rb
@@ -59,9 +59,9 @@ class ActivityPub::SynchronizeFollowersService < BaseService
case collection['type']
when 'Collection', 'CollectionPage'
- collection['items']
+ as_array(collection['items'])
when 'OrderedCollection', 'OrderedCollectionPage'
- collection['orderedItems']
+ as_array(collection['orderedItems'])
end
end
diff --git a/app/services/fetch_resource_service.rb b/app/services/fetch_resource_service.rb
index a3406e5a5..71c6cca79 100644
--- a/app/services/fetch_resource_service.rb
+++ b/app/services/fetch_resource_service.rb
@@ -48,7 +48,15 @@ class FetchResourceService < BaseService
body = response.body_with_limit
json = body_to_json(body)
- [json['id'], { prefetched_body: body, id: true }] if supported_context?(json) && (equals_or_includes_any?(json['type'], ActivityPub::FetchRemoteActorService::SUPPORTED_TYPES) || expected_type?(json))
+ return unless supported_context?(json) && (equals_or_includes_any?(json['type'], ActivityPub::FetchRemoteActorService::SUPPORTED_TYPES) || expected_type?(json))
+
+ if json['id'] != @url
+ return if terminal
+
+ return process(json['id'], terminal: true)
+ end
+
+ [@url, { prefetched_body: body }]
elsif !terminal
link_header = response['Link'] && parse_link_header(response)
diff --git a/app/services/keys/query_service.rb b/app/services/keys/query_service.rb
index 14c9d9205..33e13293f 100644
--- a/app/services/keys/query_service.rb
+++ b/app/services/keys/query_service.rb
@@ -69,7 +69,7 @@ class Keys::QueryService < BaseService
return if json['items'].blank?
- @devices = json['items'].map do |device|
+ @devices = as_array(json['items']).map do |device|
Device.new(device_id: device['id'], name: device['name'], identity_key: device.dig('identityKey', 'publicKeyBase64'), fingerprint_key: device.dig('fingerprintKey', 'publicKeyBase64'), claim_url: device['claim'])
end
rescue HTTP::Error, OpenSSL::SSL::SSLError, Mastodon::Error => e
diff --git a/app/services/reblog_service.rb b/app/services/reblog_service.rb
index 960315ed8..cca79eced 100644
--- a/app/services/reblog_service.rb
+++ b/app/services/reblog_service.rb
@@ -43,11 +43,7 @@ class ReblogService < BaseService
def create_notification(reblog)
reblogged_status = reblog.reblog
- if reblogged_status.account.local?
- LocalNotificationWorker.perform_async(reblogged_status.account_id, reblog.id, reblog.class.name, 'reblog')
- elsif reblogged_status.account.activitypub? && !reblogged_status.account.following?(reblog.account)
- ActivityPub::DeliveryWorker.perform_async(build_json(reblog), reblog.account_id, reblogged_status.account.inbox_url)
- end
+ LocalNotificationWorker.perform_async(reblogged_status.account_id, reblog.id, reblog.class.name, 'reblog') if reblogged_status.account.local?
end
def increment_statistics
diff --git a/app/services/vote_service.rb b/app/services/vote_service.rb
index 3e92a1690..878350388 100644
--- a/app/services/vote_service.rb
+++ b/app/services/vote_service.rb
@@ -19,7 +19,7 @@ class VoteService < BaseService
already_voted = true
with_redis_lock("vote:#{@poll.id}:#{@account.id}") do
- already_voted = @poll.votes.where(account: @account).exists?
+ already_voted = @poll.votes.exists?(account: @account)
ApplicationRecord.transaction do
@choices.each do |choice|
diff --git a/app/validators/email_mx_validator.rb b/app/validators/email_mx_validator.rb
index a30a0c820..794377894 100644
--- a/app/validators/email_mx_validator.rb
+++ b/app/validators/email_mx_validator.rb
@@ -47,6 +47,7 @@ class EmailMxValidator < ActiveModel::Validator
dns.timeouts = 5
records = dns.getresources(domain, Resolv::DNS::Resource::IN::MX).to_a.map { |e| e.exchange.to_s }
+ next if records == [''] # This domain explicitly rejects emails
([domain] + records).uniq.each do |hostname|
ips.concat(dns.getresources(hostname, Resolv::DNS::Resource::IN::A).to_a.map { |e| e.address.to_s })
diff --git a/app/validators/reaction_validator.rb b/app/validators/reaction_validator.rb
index 4ed3376e8..89d83de5a 100644
--- a/app/validators/reaction_validator.rb
+++ b/app/validators/reaction_validator.rb
@@ -19,7 +19,7 @@ class ReactionValidator < ActiveModel::Validator
end
def new_reaction?(reaction)
- !reaction.announcement.announcement_reactions.where(name: reaction.name).exists?
+ !reaction.announcement.announcement_reactions.exists?(name: reaction.name)
end
def limit_reached?(reaction)
diff --git a/app/validators/vote_validator.rb b/app/validators/vote_validator.rb
index fa2bd223d..e725b4c0b 100644
--- a/app/validators/vote_validator.rb
+++ b/app/validators/vote_validator.rb
@@ -35,7 +35,7 @@ class VoteValidator < ActiveModel::Validator
if vote.persisted?
account_votes_on_same_poll(vote).where(choice: vote.choice).where.not(poll_votes: { id: vote }).exists?
else
- account_votes_on_same_poll(vote).where(choice: vote.choice).exists?
+ account_votes_on_same_poll(vote).exists?(choice: vote.choice)
end
end
diff --git a/app/views/admin/account_warnings/_account_warning.html.haml b/app/views/admin/account_warnings/_account_warning.html.haml
index 85bac789f..5702e4f6d 100644
--- a/app/views/admin/account_warnings/_account_warning.html.haml
+++ b/app/views/admin/account_warnings/_account_warning.html.haml
@@ -5,7 +5,10 @@
= fa_icon 'warning'
.log-entry__content
.log-entry__title
- = t(account_warning.action, scope: 'admin.strikes.actions', name: content_tag(:span, account_warning.account ? account_warning.account.username : I18n.t('admin.action_logs.deleted_account'), class: 'username'), target: content_tag(:span, account_warning.target_account.pretty_acct, class: 'target')).html_safe
+ = t(account_warning.action,
+ scope: 'admin.strikes.actions',
+ name: content_tag(:span, account_warning.account ? account_warning.account.username : I18n.t('admin.action_logs.deleted_account'), class: 'username'),
+ target: content_tag(:span, account_warning.target_account.pretty_acct, class: 'target')).html_safe
.log-entry__timestamp
%time.formatted{ datetime: account_warning.created_at.iso8601 }
= l(account_warning.created_at)
diff --git a/app/views/admin/action_logs/_action_log.html.haml b/app/views/admin/action_logs/_action_log.html.haml
index a2fce2d11..dcc333180 100644
--- a/app/views/admin/action_logs/_action_log.html.haml
+++ b/app/views/admin/action_logs/_action_log.html.haml
@@ -4,6 +4,8 @@
= image_tag action_log.account.avatar.url(:original), alt: '', width: 40, height: 40, class: 'avatar'
.log-entry__content
.log-entry__title
- = t("admin.action_logs.actions.#{action_log.action}_#{action_log.target_type.underscore}_html", name: content_tag(:span, action_log.account.username, class: 'username'), target: content_tag(:span, log_target(action_log), class: 'target'))
+ = t "admin.action_logs.actions.#{action_log.action}_#{action_log.target_type.underscore}_html",
+ name: content_tag(:span, action_log.account.username, class: 'username'),
+ target: content_tag(:span, log_target(action_log), class: 'target')
.log-entry__timestamp
%time.formatted{ datetime: action_log.created_at.iso8601 }
diff --git a/app/views/admin/email_domain_blocks/_email_domain_block.html.haml b/app/views/admin/email_domain_blocks/_email_domain_block.html.haml
index 7cb973c4b..f6a6e8266 100644
--- a/app/views/admin/email_domain_blocks/_email_domain_block.html.haml
+++ b/app/views/admin/email_domain_blocks/_email_domain_block.html.haml
@@ -12,3 +12,7 @@
¡
= t('admin.email_domain_blocks.attempts_over_week', count: email_domain_block.history.reduce(0) { |sum, day| sum + day.accounts })
+
+ - if email_domain_block.allow_with_approval?
+ ¡
+ = t('admin.email_domain_blocks.allow_registrations_with_approval')
diff --git a/app/views/admin/email_domain_blocks/new.html.haml b/app/views/admin/email_domain_blocks/new.html.haml
index fa1d950ad..3d3148773 100644
--- a/app/views/admin/email_domain_blocks/new.html.haml
+++ b/app/views/admin/email_domain_blocks/new.html.haml
@@ -7,6 +7,9 @@
.fields-group
= f.input :domain, wrapper: :with_block_label, label: t('admin.email_domain_blocks.domain'), input_html: { readonly: defined?(@resolved_records) }
+ .fields-group
+ = f.input :allow_with_approval, wrapper: :with_label, hint: false, label: I18n.t('admin.email_domain_blocks.allow_registrations_with_approval')
+
- if defined?(@resolved_records)
%p.hint= t('admin.email_domain_blocks.resolved_dns_records_hint_html')
diff --git a/app/views/admin/reports/_media_attachments.html.haml b/app/views/admin/reports/_media_attachments.html.haml
index 8ecd7444d..3c52d6917 100644
--- a/app/views/admin/reports/_media_attachments.html.haml
+++ b/app/views/admin/reports/_media_attachments.html.haml
@@ -2,6 +2,16 @@
= render_video_component(status, visible: false)
- elsif status.ordered_media_attachments.first.audio?
- audio = status.ordered_media_attachments.first
- = react_component :audio, src: audio.file.url(:original), height: 110, alt: audio.description, lang: status.language, duration: audio.file.meta.dig(:original, :duration)
+ = react_component :audio,
+ alt: audio.description,
+ duration: audio.file.meta.dig(:original, :duration),
+ height: 110,
+ lang: status.language,
+ src: audio.file.url(:original)
- else
- = react_component :media_gallery, height: 343, sensitive: status.sensitive?, visible: false, lang: status.language, media: status.ordered_media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json }
+ = react_component :media_gallery,
+ height: 343,
+ lang: status.language,
+ media: status.ordered_media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json },
+ sensitive: status.sensitive?,
+ visible: false
diff --git a/app/views/application/mailer/_account.html.haml b/app/views/application/mailer/_account.html.haml
new file mode 100644
index 000000000..27493f770
--- /dev/null
+++ b/app/views/application/mailer/_account.html.haml
@@ -0,0 +1,30 @@
+%table.email-w-full.email-account-banner-table{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
+ %tr
+ %td.email-account-banner-td{ height: 140, background: full_asset_url(account.header.url) }
+ %table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
+ %tr
+ %td.email-account-banner-inner-td
+ .email-account-banner-overlap-div
+ %table.email-account-banner-icon-table{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
+ %tr
+ %td
+ %img{ src: full_asset_url(account.avatar.url), width: 80, height: 80, alt: '' }
+%table.email-w-full.email-account-body-table{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
+ %tr
+ %td.email-account-body-td
+ %p.email-account-name= display_name(account)
+ %p.email-account-handle= acct(account)
+ %table{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
+ %tr
+ %td.email-padding-top-16
+ %table.email-w-full.email-account-stats-table{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
+ %tr
+ %td
+ %b= account_formatted_stat(account.statuses_count)
+ %span= t('accounts.posts', count: account.statuses_count)
+ %td
+ %b= account_formatted_stat(account.following_count)
+ %span= t('accounts.following')
+ %td
+ %b= account_formatted_stat(account.followers_count)
+ %span= t('accounts.followers', count: account.followers_count)
diff --git a/app/views/application/mailer/_button.html.haml b/app/views/application/mailer/_button.html.haml
new file mode 100644
index 000000000..61430732e
--- /dev/null
+++ b/app/views/application/mailer/_button.html.haml
@@ -0,0 +1,4 @@
+%table.email-btn-table{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
+ %tr
+ %td.email-btn-td
+ = link_to "#{text}Â â", url, class: 'email-btn-a email-btn-hover'
diff --git a/app/views/application/mailer/_checklist.html.haml b/app/views/application/mailer/_checklist.html.haml
new file mode 100644
index 000000000..83072bd36
--- /dev/null
+++ b/app/views/application/mailer/_checklist.html.haml
@@ -0,0 +1,29 @@
+%table.email-w-full.email-checklist-wrapper-table{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
+ %tr
+ %td.email-checklist-wrapper-td
+ %table.email-w-full.email-checklist-table{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
+ %tr
+ %td.email-checklist-td
+ %table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
+ %tr
+ %td.email-checklist-icons-td
+ %table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
+ %tr
+ %td.email-checklist-icons-checkbox-td
+ - if defined?(checked) && checked
+ = image_tag frontend_asset_url('images/mailer-new/welcome/checkbox-on.png'), alt: '', width: 20, height: 20
+ - else
+ = image_tag frontend_asset_url('images/mailer-new/welcome/checkbox-off.png'), alt: '', width: 20, height: 20
+ %td.email-checklist-icons-step-td
+ - if defined?(step_image_url)
+ = image_tag step_image_url, alt: '', width: 40, height: 40
+ %td.email-checklist-text-td
+ .email-desktop-flex
+ %div
+ - if defined?(title)
+ %h3= title
+ - if defined?(text)
+ %p= text
+ %div
+ - if defined?(button_text) && defined?(button_url) && defined?(checked) && !checked
+ = render 'application/mailer/button', text: button_text, url: button_url
diff --git a/app/views/application/mailer/_frame.html.haml b/app/views/application/mailer/_frame.html.haml
new file mode 100644
index 000000000..74403e767
--- /dev/null
+++ b/app/views/application/mailer/_frame.html.haml
@@ -0,0 +1,4 @@
+%table.email-w-full.email-frame-table{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
+ %tr
+ %td.email-frame-td
+ %p= text
diff --git a/app/views/application/mailer/_heading.html.haml b/app/views/application/mailer/_heading.html.haml
new file mode 100644
index 000000000..9fc5dc747
--- /dev/null
+++ b/app/views/application/mailer/_heading.html.haml
@@ -0,0 +1,13 @@
+%table.email-w-full.email-header-heading-table{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
+ %tr
+ %td.email-header-heading-td
+ %table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
+ %tr
+ - if defined?(heading_image_url)
+ %td.email-header-heading-img-td
+ = image_tag heading_image_url, alt: '', width: 56, height: 56
+ %td.email-header-heading-txt-td
+ - if defined?(heading_title)
+ %h1= heading_title
+ - if defined?(heading_subtitle)
+ %p= heading_subtitle
diff --git a/app/views/auth/challenges/new.html.haml b/app/views/auth/challenges/new.html.haml
index 4f21e4af6..50dcebb00 100644
--- a/app/views/auth/challenges/new.html.haml
+++ b/app/views/auth/challenges/new.html.haml
@@ -5,7 +5,11 @@
= f.input :return_to, as: :hidden
.field-group
- = f.input :current_password, wrapper: :with_block_label, input_html: { autocomplete: 'current-password', autofocus: true }, label: t('challenge.prompt'), required: true
+ = f.input :current_password,
+ input_html: { autocomplete: 'current-password', autofocus: true },
+ label: t('challenge.prompt'),
+ required: true,
+ wrapper: :with_block_label
.actions
= f.button :button, t('challenge.confirm'), type: :submit
diff --git a/app/views/auth/confirmations/new.html.haml b/app/views/auth/confirmations/new.html.haml
index 0cb82a1f8..eaa9d9add 100644
--- a/app/views/auth/confirmations/new.html.haml
+++ b/app/views/auth/confirmations/new.html.haml
@@ -21,7 +21,13 @@
= render 'shared/error_messages', object: resource
.fields-group
- = f.input :email, autofocus: true, wrapper: :with_label, label: t('simple_form.labels.defaults.email'), input_html: { 'aria-label': t('simple_form.labels.defaults.email') }, readonly: current_user.present?, hint: current_user.present? && t('auth.confirmations.wrong_email_hint')
+ = f.input :email,
+ autofocus: true,
+ hint: current_user.present? && t('auth.confirmations.wrong_email_hint'),
+ input_html: { 'aria-label': t('simple_form.labels.defaults.email') },
+ label: t('simple_form.labels.defaults.email'),
+ readonly: current_user.present?,
+ wrapper: :with_label
.actions
= f.button :button, t('auth.resend_confirmation'), type: :submit
diff --git a/app/views/auth/passwords/edit.html.haml b/app/views/auth/passwords/edit.html.haml
index b95a9b676..a75dc2d9f 100644
--- a/app/views/auth/passwords/edit.html.haml
+++ b/app/views/auth/passwords/edit.html.haml
@@ -8,9 +8,18 @@
= f.input :reset_password_token, as: :hidden
.fields-group
- = f.input :password, wrapper: :with_label, autofocus: true, label: t('simple_form.labels.defaults.new_password'), input_html: { 'aria-label': t('simple_form.labels.defaults.new_password'), autocomplete: 'new-password', minlength: User.password_length.first, maxlength: User.password_length.last }, required: true
+ = f.input :password,
+ autofocus: true,
+ input_html: { 'aria-label': t('simple_form.labels.defaults.new_password'), autocomplete: 'new-password', minlength: User.password_length.first, maxlength: User.password_length.last },
+ label: t('simple_form.labels.defaults.new_password'),
+ required: true,
+ wrapper: :with_label
.fields-group
- = f.input :password_confirmation, wrapper: :with_label, label: t('simple_form.labels.defaults.confirm_new_password'), input_html: { 'aria-label': t('simple_form.labels.defaults.confirm_new_password'), autocomplete: 'new-password' }, required: true
+ = f.input :password_confirmation,
+ input_html: { 'aria-label': t('simple_form.labels.defaults.confirm_new_password'), autocomplete: 'new-password' },
+ label: t('simple_form.labels.defaults.confirm_new_password'),
+ required: true,
+ wrapper: :with_label
.actions
= f.button :button, t('auth.set_new_password'), type: :submit
diff --git a/app/views/auth/passwords/new.html.haml b/app/views/auth/passwords/new.html.haml
index 10ad108ea..8d5adaf3b 100644
--- a/app/views/auth/passwords/new.html.haml
+++ b/app/views/auth/passwords/new.html.haml
@@ -5,7 +5,12 @@
= render 'shared/error_messages', object: resource
.fields-group
- = f.input :email, autofocus: true, wrapper: :with_label, label: t('simple_form.labels.defaults.email'), input_html: { 'aria-label': t('simple_form.labels.defaults.email') }, hint: false
+ = f.input :email,
+ autofocus: true,
+ hint: false,
+ input_html: { 'aria-label': t('simple_form.labels.defaults.email') },
+ label: t('simple_form.labels.defaults.email'),
+ wrapper: :with_label
.actions
= f.button :button, t('auth.reset_password'), type: :submit
diff --git a/app/views/auth/registrations/_account_warning.html.haml b/app/views/auth/registrations/_account_warning.html.haml
index 40e7e1296..19e5746ff 100644
--- a/app/views/auth/registrations/_account_warning.html.haml
+++ b/app/views/auth/registrations/_account_warning.html.haml
@@ -5,7 +5,9 @@
= fa_icon 'warning'
.log-entry__content
.log-entry__title
- = t('disputes.strikes.title', action: t(account_warning.action, scope: 'disputes.strikes.title_actions'), date: l(account_warning.created_at.to_date))
+ = t 'disputes.strikes.title',
+ action: t(account_warning.action, scope: 'disputes.strikes.title_actions'),
+ date: l(account_warning.created_at.to_date)
.log-entry__timestamp
%time.formatted{ datetime: account_warning.created_at.iso8601 }= l(account_warning.created_at)
diff --git a/app/views/auth/registrations/_session.html.haml b/app/views/auth/registrations/_session.html.haml
index 28499a7c9..2fa7db70c 100644
--- a/app/views/auth/registrations/_session.html.haml
+++ b/app/views/auth/registrations/_session.html.haml
@@ -3,7 +3,9 @@
%span{ title: session.user_agent }<
= fa_icon "#{session_device_icon(session)} fw", 'aria-label': session_device_icon(session)
- = t 'sessions.description', browser: t("sessions.browsers.#{session.browser}", default: session.browser.to_s), platform: t("sessions.platforms.#{session.platform}", default: session.platform.to_s)
+ = t 'sessions.description',
+ browser: t("sessions.browsers.#{session.browser}", default: session.browser.to_s),
+ platform: t("sessions.platforms.#{session.platform}", default: session.platform.to_s)
%td
%samp= session.ip
%td
diff --git a/app/views/auth/registrations/edit.html.haml b/app/views/auth/registrations/edit.html.haml
index f5ef4e97e..48350f478 100644
--- a/app/views/auth/registrations/edit.html.haml
+++ b/app/views/auth/registrations/edit.html.haml
@@ -15,15 +15,33 @@
- if (!use_seamless_external_login? || resource.encrypted_password.present?) && !omniauth_only?
.fields-row
.fields-row__column.fields-group.fields-row__column-6
- = f.input :email, wrapper: :with_label, input_html: { 'aria-label': t('simple_form.labels.defaults.email') }, required: true, disabled: current_account.suspended?
+ = f.input :email,
+ disabled: current_account.suspended?,
+ input_html: { 'aria-label': t('simple_form.labels.defaults.email') },
+ required: true,
+ wrapper: :with_label
.fields-row__column.fields-group.fields-row__column-6
- = f.input :current_password, wrapper: :with_label, input_html: { 'aria-label': t('simple_form.labels.defaults.current_password'), autocomplete: 'current-password' }, required: true, disabled: current_account.suspended?, hint: false
+ = f.input :current_password,
+ disabled: current_account.suspended?,
+ hint: false,
+ input_html: { 'aria-label': t('simple_form.labels.defaults.current_password'), autocomplete: 'current-password' },
+ required: true,
+ wrapper: :with_label
.fields-row
.fields-row__column.fields-group.fields-row__column-6
- = f.input :password, wrapper: :with_label, label: t('simple_form.labels.defaults.new_password'), input_html: { 'aria-label': t('simple_form.labels.defaults.new_password'), autocomplete: 'new-password', minlength: User.password_length.first, maxlength: User.password_length.last }, hint: t('simple_form.hints.defaults.password'), disabled: current_account.suspended?
+ = f.input :password,
+ disabled: current_account.suspended?,
+ hint: t('simple_form.hints.defaults.password'),
+ input_html: { 'aria-label': t('simple_form.labels.defaults.new_password'), autocomplete: 'new-password', minlength: User.password_length.first, maxlength: User.password_length.last },
+ label: t('simple_form.labels.defaults.new_password'),
+ wrapper: :with_label
.fields-row__column.fields-group.fields-row__column-6
- = f.input :password_confirmation, wrapper: :with_label, label: t('simple_form.labels.defaults.confirm_new_password'), input_html: { 'aria-label': t('simple_form.labels.defaults.confirm_new_password'), autocomplete: 'new-password' }, disabled: current_account.suspended?
+ = f.input :password_confirmation,
+ disabled: current_account.suspended?,
+ input_html: { 'aria-label': t('simple_form.labels.defaults.confirm_new_password'), autocomplete: 'new-password' },
+ label: t('simple_form.labels.defaults.confirm_new_password'),
+ wrapper: :with_label
.actions
= f.button :button, t('generic.save_changes'), type: :submit, class: 'button', disabled: current_account.suspended?
diff --git a/app/views/auth/registrations/new.html.haml b/app/views/auth/registrations/new.html.haml
index 4cac7b51b..1e5aac297 100644
--- a/app/views/auth/registrations/new.html.haml
+++ b/app/views/auth/registrations/new.html.haml
@@ -19,25 +19,61 @@
.fields-group
= f.simple_fields_for :account do |ff|
- = ff.input :username, wrapper: :with_label, label: false, required: true, input_html: { 'aria-label': t('simple_form.labels.defaults.username'), autocomplete: 'off', placeholder: t('simple_form.labels.defaults.username'), pattern: '[a-zA-Z0-9_]+', maxlength: 30 }, append: "@#{site_hostname}"
- = f.input :email, placeholder: t('simple_form.labels.defaults.email'), required: true, input_html: { 'aria-label': t('simple_form.labels.defaults.email'), autocomplete: 'username' }, hint: false
- = f.input :password, placeholder: t('simple_form.labels.defaults.password'), required: true, input_html: { 'aria-label': t('simple_form.labels.defaults.password'), autocomplete: 'new-password', minlength: User.password_length.first, maxlength: User.password_length.last }, hint: false
- = f.input :password_confirmation, placeholder: t('simple_form.labels.defaults.confirm_password'), required: true, input_html: { 'aria-label': t('simple_form.labels.defaults.confirm_password'), autocomplete: 'new-password' }, hint: false
- = f.input :confirm_password, as: :string, placeholder: t('simple_form.labels.defaults.honeypot', label: t('simple_form.labels.defaults.password')), required: false, input_html: { 'aria-label': t('simple_form.labels.defaults.honeypot', label: t('simple_form.labels.defaults.password')), autocomplete: 'off' }, hint: false
- = f.input :website, as: :url, wrapper: :with_label, label: t('simple_form.labels.defaults.honeypot', label: 'Website'), required: false, input_html: { 'aria-label': t('simple_form.labels.defaults.honeypot', label: 'Website'), autocomplete: 'off' }
+ = ff.input :username,
+ append: "@#{site_hostname}",
+ input_html: { 'aria-label': t('simple_form.labels.defaults.username'), autocomplete: 'off', placeholder: t('simple_form.labels.defaults.username'), pattern: '[a-zA-Z0-9_]+', maxlength: 30 },
+ label: false,
+ required: true,
+ wrapper: :with_label
+ = f.input :email,
+ hint: false,
+ input_html: { 'aria-label': t('simple_form.labels.defaults.email'), autocomplete: 'username' },
+ placeholder: t('simple_form.labels.defaults.email'),
+ required: true
+ = f.input :password,
+ hint: false,
+ input_html: { 'aria-label': t('simple_form.labels.defaults.password'), autocomplete: 'new-password', minlength: User.password_length.first, maxlength: User.password_length.last },
+ placeholder: t('simple_form.labels.defaults.password'),
+ required: true
+ = f.input :password_confirmation,
+ hint: false,
+ input_html: { 'aria-label': t('simple_form.labels.defaults.confirm_password'), autocomplete: 'new-password' },
+ placeholder: t('simple_form.labels.defaults.confirm_password'),
+ required: true
+ = f.input :confirm_password,
+ as: :string,
+ hint: false,
+ input_html: { 'aria-label': t('simple_form.labels.defaults.honeypot', label: t('simple_form.labels.defaults.password')), autocomplete: 'off' },
+ placeholder: t('simple_form.labels.defaults.honeypot', label: t('simple_form.labels.defaults.password')),
+ required: false
+ = f.input :website,
+ as: :url,
+ input_html: { 'aria-label': t('simple_form.labels.defaults.honeypot', label: 'Website'), autocomplete: 'off' },
+ label: t('simple_form.labels.defaults.honeypot', label: 'Website'),
+ required: false,
+ wrapper: :with_label
- if approved_registrations? && @invite.blank?
%p.lead= t('auth.sign_up.manual_review', domain: site_hostname)
.fields-group
= f.simple_fields_for :invite_request, resource.invite_request || resource.build_invite_request do |invite_request_fields|
- = invite_request_fields.input :text, as: :text, wrapper: :with_block_label, required: Setting.require_invite_text, label: false, hint: false
+ = invite_request_fields.input :text,
+ as: :text,
+ hint: false,
+ label: false,
+ required: Setting.require_invite_text,
+ wrapper: :with_block_label
= hidden_field_tag :accept, params[:accept]
= f.input :invite_code, as: :hidden
.fields-group
- = f.input :agreement, as: :boolean, wrapper: :with_label, label: t('auth.privacy_policy_agreement_html', rules_path: about_more_path, privacy_policy_path: privacy_policy_path), required: true
+ = f.input :agreement,
+ as: :boolean,
+ label: t('auth.privacy_policy_agreement_html', rules_path: about_more_path, privacy_policy_path: privacy_policy_path),
+ required: true,
+ wrapper: :with_label
.actions
= f.button :button, @invite.present? ? t('auth.register') : sign_up_message, type: :submit
diff --git a/app/views/auth/sessions/new.html.haml b/app/views/auth/sessions/new.html.haml
index 7914e0157..89903581a 100644
--- a/app/views/auth/sessions/new.html.haml
+++ b/app/views/auth/sessions/new.html.haml
@@ -10,11 +10,25 @@
%p.lead= t('auth.sign_in.preamble_html', domain: site_hostname)
.fields-group
- if use_seamless_external_login?
- = f.input :email, autofocus: true, wrapper: :with_label, label: t('simple_form.labels.defaults.username_or_email'), input_html: { 'aria-label': t('simple_form.labels.defaults.username_or_email') }, hint: false
+ = f.input :email,
+ autofocus: true,
+ hint: false,
+ input_html: { 'aria-label': t('simple_form.labels.defaults.username_or_email') },
+ label: t('simple_form.labels.defaults.username_or_email'),
+ wrapper: :with_label
- else
- = f.input :email, autofocus: true, wrapper: :with_label, label: t('simple_form.labels.defaults.email'), input_html: { 'aria-label': t('simple_form.labels.defaults.email') }, hint: false
+ = f.input :email,
+ autofocus: true,
+ hint: false,
+ input_html: { 'aria-label': t('simple_form.labels.defaults.email') },
+ label: t('simple_form.labels.defaults.email'),
+ wrapper: :with_label
.fields-group
- = f.input :password, wrapper: :with_label, label: t('simple_form.labels.defaults.password'), input_html: { 'aria-label': t('simple_form.labels.defaults.password'), autocomplete: 'current-password' }, hint: false
+ = f.input :password,
+ hint: false,
+ input_html: { 'aria-label': t('simple_form.labels.defaults.password'), autocomplete: 'current-password' },
+ label: t('simple_form.labels.defaults.password'),
+ wrapper: :with_label
.actions
= f.button :button, t('auth.login'), type: :submit
diff --git a/app/views/auth/sessions/two_factor/_otp_authentication_form.html.haml b/app/views/auth/sessions/two_factor/_otp_authentication_form.html.haml
index 8cc2c8561..30e97a68c 100644
--- a/app/views/auth/sessions/two_factor/_otp_authentication_form.html.haml
+++ b/app/views/auth/sessions/two_factor/_otp_authentication_form.html.haml
@@ -5,7 +5,12 @@
%p.hint.authentication-hint= t('simple_form.hints.sessions.otp')
.fields-group
- = f.input :otp_attempt, type: :number, wrapper: :with_label, label: t('simple_form.labels.defaults.otp_attempt'), input_html: { 'aria-label': t('simple_form.labels.defaults.otp_attempt'), autocomplete: 'one-time-code' }, autofocus: true
+ = f.input :otp_attempt,
+ autofocus: true,
+ input_html: { 'aria-label': t('simple_form.labels.defaults.otp_attempt'), autocomplete: 'one-time-code' },
+ label: t('simple_form.labels.defaults.otp_attempt'),
+ type: :number,
+ wrapper: :with_label
.actions
= f.button :button, t('auth.login'), type: :submit
diff --git a/app/views/auth/setup/show.html.haml b/app/views/auth/setup/show.html.haml
index 97c826d70..713f77470 100644
--- a/app/views/auth/setup/show.html.haml
+++ b/app/views/auth/setup/show.html.haml
@@ -16,7 +16,10 @@
%p.lead= t('auth.setup.email_below_hint_html')
.fields-group
- = f.input :email, required: true, hint: false, input_html: { 'aria-label': t('simple_form.labels.defaults.email'), autocomplete: 'off' }
+ = f.input :email,
+ hint: false,
+ input_html: { 'aria-label': t('simple_form.labels.defaults.email'), autocomplete: 'off' },
+ required: true
.actions
= f.button :button, t('auth.resend_confirmation'), type: :submit, class: 'button timer-button', disabled: true
diff --git a/app/views/custom_css/show.css.erb b/app/views/custom_css/show.css.erb
index 9cd38fb37..78da809ed 100644
--- a/app/views/custom_css/show.css.erb
+++ b/app/views/custom_css/show.css.erb
@@ -1,8 +1,8 @@
-<%- if Setting.custom_css.present? %>
-<%= raw Setting.custom_css %>
+<%- if custom_css_styles.present? %>
+<%= raw custom_css_styles %>
<%- end %>
-<%- UserRole.where(highlighted: true).select { |role| role.color.present? }.each do |role| %>
+<%- @user_roles.each do |role| %>
.user-role-<%= role.id %> {
--user-role-accent: <%= role.color %>;
}
diff --git a/app/views/disputes/strikes/show.html.haml b/app/views/disputes/strikes/show.html.haml
index 62695b155..5f7213882 100644
--- a/app/views/disputes/strikes/show.html.haml
+++ b/app/views/disputes/strikes/show.html.haml
@@ -21,7 +21,7 @@
.report-header
.report-header__card
- = render 'card', strike: @strike
+ = render 'disputes/strikes/card', strike: @strike
.report-header__details
.report-header__details__item
diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml
index b6e837de4..2db3602dd 100755
--- a/app/views/layouts/application.html.haml
+++ b/app/views/layouts/application.html.haml
@@ -14,12 +14,12 @@
%link{ rel: 'icon', href: '/favicon.ico', type: 'image/x-icon' }/
- %w(16 32 48).each do |size|
- %link{ rel: 'icon', sizes: "#{size}x#{size}", href: asset_pack_path("media/icons/favicon-#{size}x#{size}.png"), type: 'image/png' }/
+ %link{ rel: 'icon', sizes: "#{size}x#{size}", href: frontend_asset_path("icons/favicon-#{size}x#{size}.png"), type: 'image/png' }/
- %w(57 60 72 76 114 120 144 152 167 180 1024).each do |size|
- %link{ rel: 'apple-touch-icon', sizes: "#{size}x#{size}", href: asset_pack_path("media/icons/apple-touch-icon-#{size}x#{size}.png") }/
+ %link{ rel: 'apple-touch-icon', sizes: "#{size}x#{size}", href: frontend_asset_path("icons/apple-touch-icon-#{size}x#{size}.png") }/
- %link{ rel: 'mask-icon', href: asset_pack_path('media/images/logo-symbol-icon.svg'), color: '#6364FF' }/
+ %link{ rel: 'mask-icon', href: frontend_asset_path('images/logo-symbol-icon.svg'), color: '#6364FF' }/
%link{ rel: 'manifest', href: manifest_path(format: :json) }/
%meta{ name: 'theme-color', content: '#191b22' }/
%meta{ name: 'apple-mobile-web-app-capable', content: 'yes' }/
@@ -28,12 +28,14 @@
= stylesheet_pack_tag 'common', media: 'all', crossorigin: 'anonymous'
= stylesheet_pack_tag current_theme, media: 'all', crossorigin: 'anonymous'
+ -# Needed for the wicg-inert polyfill. It needs to be on it's own