+
{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 b3e9950e93f..7d59d616d83 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 3fd8ff127d8..65843646095 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 5e71da9d968..272a3cff009 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 36a8f58f8b5..3e7ae2add02 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';
diff --git a/app/javascript/mastodon/features/video/index.jsx b/app/javascript/mastodon/features/video/index.jsx
index bef14ea2768..89a8ba560a0 100644
--- a/app/javascript/mastodon/features/video/index.jsx
+++ b/app/javascript/mastodon/features/video/index.jsx
@@ -7,22 +7,21 @@ 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';
import { displayMedia, useBlurhash } from '../../initial_state';
-import { currentMedia, setCurrentMedia } from '../../reducers/media_attachments';
import { isFullscreen, requestFullscreen, exitFullscreen } from '../ui/util/fullscreen';
const messages = defineMessages({
@@ -182,7 +181,6 @@ class Video extends PureComponent {
};
handlePause = () => {
- this.video.pause();
this.setState({ paused: true });
};
@@ -346,32 +344,11 @@ class Video extends PureComponent {
};
togglePlay = () => {
- const videos = document.querySelectorAll('video');
-
- videos.forEach((video) => {
- const button = video.nextElementSibling;
- button.addEventListener('click', () => {
- if (video.paused) {
- videos.forEach((e) => {
- if (e !== video) {
- e.pause();
- }
- });
- video.play();
- this.setState({ paused: false });
- } else {
- video.pause();
- this.setState({ paused: true });
- }
- });
- });
-
- if (currentMedia !== null) {
- currentMedia.pause();
+ if (this.state.paused) {
+ this.setState({ paused: false }, () => this.video.play());
+ } else {
+ this.setState({ paused: true }, () => this.video.pause());
}
-
- this.video.play();
- setCurrentMedia(this.video);
};
toggleFullscreen = () => {
@@ -612,7 +589,6 @@ class Video extends PureComponent {
aria-label={alt}
title={alt}
lang={lang}
- volume={volume}
onClick={this.togglePlay}
onKeyDown={this.handleVideoKeyDown}
onPlay={this.handlePlay}
diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json
index d3cc40c60c0..d2ac2f8f27f 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.",
@@ -30,7 +31,6 @@
"account.followers.empty": "Hierdie gebruiker het nog nie volgers nie.",
"account.following": "Volg",
"account.follows.empty": "Die gebruiker volg nog niemand.",
- "account.follows_you": "Volg jou",
"account.go_to_profile": "Gaan na profiel",
"account.hide_reblogs": "Versteek plasings wat deur @{name} aangestuur is",
"account.joined_short": "Aangesluit",
@@ -66,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",
@@ -111,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",
@@ -234,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",
@@ -267,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 a652272fadb..e9d609a1ce3 100644
--- a/app/javascript/mastodon/locales/an.json
+++ b/app/javascript/mastodon/locales/an.json
@@ -35,7 +35,6 @@
"account.following": "Seguindo",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Seguindo}}",
"account.follows.empty": "Este usuario encara no sigue a dengÃēn.",
- "account.follows_you": "Te sigue",
"account.go_to_profile": "Ir ta lo perfil",
"account.hide_reblogs": "Amagar retutz de @{name}",
"account.joined_short": "S'uniÃŗ",
@@ -76,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.",
@@ -127,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",
@@ -346,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",
@@ -430,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",
@@ -499,6 +479,7 @@
"report_notification.open": "Ubrir informe",
"search.placeholder": "Buscar",
"search.search_or_paste": "Buscar u apegar URL",
+ "search_popout.full_text_search_logged_out_message": "NomÃĄs disponible iniciando la sesiÃŗn.",
"search_results.all": "Totz",
"search_results.hashtags": "Etiquetas",
"search_results.nothing_found": "No se podiÃŗ trobar cosa pa estes termins de busqueda",
@@ -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 979bc9a701f..5f2d151fae7 100644
--- a/app/javascript/mastodon/locales/ar.json
+++ b/app/javascript/mastodon/locales/ar.json
@@ -37,7 +37,6 @@
"account.following": "اŲاشØĒØąØ§ŲاØĒ",
"account.following_counter": "{count, plural, zero{Ųا ŲŲØĒابŲØš ØŖØدŲا} one {ŲŲØĒابŲØšŲ ŲاØد} two{ŲŲØĒابŲØšŲ اŲØĢŲاŲ} few{ŲŲØĒابŲØšŲ {counter}} many{ŲŲØĒابŲØšŲ {counter}} other {ŲŲØĒابŲØšŲ {counter}}}",
"account.follows.empty": "Ųا ŲŲØĒابؚ Ųذا اŲŲ
ŲØŗØĒ؎دŲ
Ų ØŖŲŲŲ ØŖØدŲ ØØĒŲ اŲØĸŲ.",
- "account.follows_you": "ŲŲØĒابŲØšŲŲ",
"account.go_to_profile": "اذŲب ØĨŲŲ اŲŲ
ŲŲ اŲØ´ØŽØĩŲ",
"account.hide_reblogs": "ØĨØŽŲØ§ØĄ اŲŲ
ؚاد ŲØ´ØąŲا Ų
ŲŲ @{name}",
"account.in_memoriam": "ŲŲ اŲØ°ŲØąŲ.",
@@ -87,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": "Ųا ŲŲ
ŲŲ ØĒŲدŲŲ
اŲØĩŲØØŠ اŲŲ
ØˇŲŲب؊. Ųد ŲŲŲŲ بØŗبب ØŽØˇØŖ ŲŲ اŲØĒØšŲŲŲ
اØĒ اŲØ¨ØąŲ
ØŦŲØŠØ ØŖŲ Ų
Ø´ŲŲØŠ ØĒŲاŲŲ اŲŲ
ØĒØĩŲØ.",
@@ -144,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": "ØØ¸Øą",
@@ -403,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": "اŲŲŲŲ
اØĒ اŲŲ
ŲØĒŲŲ
ØŠ",
@@ -510,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": "ØŖŲØšŲØ´",
@@ -697,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 98f622c2934..479c9c9243c 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,22 +26,18 @@
"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.",
- "account.follows_you": "SÃguete",
"account.go_to_profile": "Dir al perfil",
"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}",
@@ -72,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.",
@@ -109,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",
@@ -151,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ÃĄ",
@@ -160,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",
@@ -222,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",
@@ -264,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",
@@ -292,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",
@@ -300,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",
@@ -335,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.",
@@ -351,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",
@@ -373,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",
@@ -416,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}.",
@@ -464,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",
@@ -492,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 f94a8b79ff9..e069515109f 100644
--- a/app/javascript/mastodon/locales/be.json
+++ b/app/javascript/mastodon/locales/be.json
@@ -32,13 +32,13 @@
"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} ĐŋĐ°Đ´ĐŋŅŅŅŅĐēĐ°}}",
"account.following": "ĐĐ°Đ´ĐŋŅŅĐēŅ",
"account.following_counter": "{count, plural, one {{counter} ĐŋĐ°Đ´ĐŋŅŅĐēĐ°} few {{counter} ĐŋĐ°Đ´ĐŋŅŅĐēŅ} many {{counter} ĐŋĐ°Đ´ĐŋŅŅĐ°Đē} other {{counter} ĐŋĐ°Đ´ĐŋŅŅĐēŅ}}",
"account.follows.empty": "ĐĐ°ŅŅŅŅĐ°ĐģŅĐŊŅĐē ĐŊŅ ĐŊĐ° ĐēĐ°ĐŗĐž ĐŊĐĩ ĐŋĐ°Đ´ĐŋŅŅĐ°ĐŊŅ.",
- "account.follows_you": "ĐĐ°Đ´ĐŋŅŅĐ°ĐŊŅ ĐŊĐ° ваŅ",
"account.go_to_profile": "ĐĐĩŅĐ°ĐšŅŅŅ Đ´Đ° ĐŋŅĐžŅŅĐģŅ",
"account.hide_reblogs": "ĐĄŅ
аваŅŅ ĐŋĐ°ŅŅŅŅĐŊĐŊŅ Đ°Đ´ @{name}",
"account.in_memoriam": "ĐŖ ĐŋĐ°ĐŧŅŅŅ.",
@@ -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, 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 +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/bg.json b/app/javascript/mastodon/locales/bg.json
index f57d868c7a8..213ac090a7c 100644
--- a/app/javascript/mastodon/locales/bg.json
+++ b/app/javascript/mastodon/locales/bg.json
@@ -32,13 +32,13 @@
"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} ĐŋĐžŅĐģĐĩдОваŅĐĩĐģи}}",
"account.following": "ĐĐžŅĐģĐĩдваĐŊĐž",
"account.following_counter": "{count, plural, one {{counter} ĐŋĐžŅĐģĐĩдваĐŊ} other {{counter} ĐŋĐžŅĐģĐĩдваĐŊи}}",
"account.follows.empty": "ĐĐžŅŅĐĩйиŅĐĩĐģŅŅ ĐžŅĐĩ ĐŊиĐēĐžĐŗĐž ĐŊĐĩ ŅĐģĐĩдва.",
- "account.follows_you": "ĐĄĐģĐĩдва ви",
"account.go_to_profile": "ĐŅĐŧ ĐŋŅĐžŅиĐģĐ°",
"account.hide_reblogs": "ĐĄĐēŅиваĐŊĐĩ ĐŊĐ° ĐŋОдŅиĐģваĐŊиŅ ĐžŅ @{name}",
"account.in_memoriam": "Đ ĐŋĐ°ĐŧĐĩŅ ĐŊĐ°.",
@@ -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": "ĐĐ°ŅвĐĩĐŊĐ°ŅĐ° ŅŅŅĐ°ĐŊиŅĐ° ĐŊĐĩ ĐŧĐžĐļĐĩ Đ´Đ° ŅĐĩ иСОйŅаСи. ĐĸОва ĐŧĐžĐļĐĩ Đ´Đ° Đĩ СаŅади ĐŗŅĐĩŅĐēĐ° в ĐēОда ĐŊи иĐģи ĐŋŅОйĐģĐĩĐŧ ŅŅŅ ŅŅвĐŧĐĩŅŅиĐŧĐžŅŅŅĐ° ĐŊĐ° ĐąŅĐ°ŅСŅŅĐ°.",
@@ -147,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": "ĐĐģĐžĐēиŅĐ°ĐŊĐĩ",
@@ -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,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": "ĐŅĐĩĐŋĐžŅŅŅĐ°ĐŊĐž",
@@ -550,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": "ĐŅавĐŊи вŅĐŋŅĐžŅи",
@@ -714,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 b6e4fbb965f..508caa2f427 100644
--- a/app/javascript/mastodon/locales/bn.json
+++ b/app/javascript/mastodon/locales/bn.json
@@ -37,7 +37,6 @@
"account.following": "āĻ
āĻ¨ā§āĻ¸āĻ°āĻŖ āĻāĻ°āĻž āĻšāĻā§āĻā§",
"account.following_counter": "{count, plural,one {{counter} āĻāĻ¨āĻā§ āĻ
āĻ¨ā§āĻ¸āĻ°āĻŖ} other {{counter} āĻāĻ¨āĻā§ āĻ
āĻ¨ā§āĻ¸āĻ°āĻŖ}}",
"account.follows.empty": "āĻāĻ āĻ¸āĻĻāĻ¸ā§āĻ¯ āĻāĻžāĻāĻā§ āĻāĻāĻ¨ā§ āĻĢāĻ˛ā§ āĻāĻ°ā§āĻ¨ āĻ¨āĻž.",
- "account.follows_you": "āĻāĻĒāĻ¨āĻžāĻā§ āĻĢāĻ˛ā§ āĻāĻ°ā§",
"account.go_to_profile": "āĻĒā§āĻ°ā§āĻĢāĻžāĻāĻ˛ā§ āĻ¯āĻžāĻ¨",
"account.hide_reblogs": "@{name}'āĻ° āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨āĻā§āĻ˛āĻŋ āĻ˛ā§āĻāĻŋā§ā§ āĻĢā§āĻ˛ā§āĻ¨",
"account.in_memoriam": "āĻ¸ā§āĻŽā§āĻ¤āĻŋāĻ¤ā§.",
@@ -86,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": "āĻ
āĻ¨ā§āĻ°ā§āĻ§ āĻāĻ°āĻž āĻĒā§āĻˇā§āĻ āĻžāĻāĻŋ āĻ°ā§āĻ¨ā§āĻĄāĻžāĻ° āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĻ¨āĻŋāĨ¤ āĻāĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻĄā§ āĻāĻāĻāĻŋ āĻŦāĻžāĻ āĻŦāĻž āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ° āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯ā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻāĻžāĻ°āĻŖā§ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤",
@@ -143,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": "āĻŦā§āĻ˛āĻ āĻāĻ°ā§āĻ¨",
@@ -325,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": "āĻŦāĻ¨ā§āĻ§ āĻāĻ°āĻž āĻļāĻŦā§āĻĻ",
@@ -396,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": "āĻāĻĒāĻ¨āĻžāĻ° āĻŦāĻžā§āĻŋāĻ°-āĻ¸āĻŽā§āĻ°ā§āĻāĻž āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻāĻ°āĻž āĻšāĻā§āĻā§!",
@@ -507,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 39cd7324194..5e83ab4e6dc 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,17 +30,18 @@
"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}}",
"account.following": "KoumanantoÚ",
"account.following_counter": "{count, plural, one{{counter} C'houmanant} two{{counter} Goumanant} other {{counter} a Goumanant}}",
"account.follows.empty": "An implijer¡ez-maÃą na heul den ebet.",
- "account.follows_you": "Ho heuilh",
"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}",
@@ -50,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Ú}}",
@@ -64,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",
@@ -71,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.",
@@ -78,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.",
@@ -101,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Ú",
@@ -123,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Ãą",
@@ -159,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",
@@ -173,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",
@@ -210,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Ãą.",
@@ -224,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",
@@ -238,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",
@@ -248,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}",
@@ -286,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",
@@ -315,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",
@@ -329,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 ?",
@@ -338,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Ãą",
@@ -370,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Ú",
@@ -387,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Ú",
@@ -400,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Ãą",
@@ -424,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!",
@@ -451,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",
@@ -468,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",
@@ -483,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",
@@ -501,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",
@@ -510,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",
@@ -549,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Ú",
@@ -576,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Ãą",
@@ -593,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 9b6b49c3d66..c978a8b01fc 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 87121b7c529..0d089bf8b89 100644
--- a/app/javascript/mastodon/locales/ca.json
+++ b/app/javascript/mastodon/locales/ca.json
@@ -32,13 +32,13 @@
"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 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}}",
"account.following": "Seguint",
"account.following_counter": "{count, plural, other {{counter} Seguint-ne}}",
"account.follows.empty": "Aquest usuari encara no segueix ningÃē.",
- "account.follows_you": "Et segueix",
"account.go_to_profile": "VÊs al perfil",
"account.hide_reblogs": "Amaga els impulsos de @{name}",
"account.in_memoriam": "En MemÃ˛ria.",
@@ -53,6 +53,7 @@
"account.mute_notifications_short": "Silencia les notificacions",
"account.mute_short": "Silencia",
"account.muted": "Silenciat",
+ "account.mutual": "Mutu",
"account.no_bio": "No s'ha proporcionat cap descripciÃŗ.",
"account.open_original_page": "Obre la pà gina original",
"account.posts": "Tuts",
@@ -88,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.",
@@ -145,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",
@@ -407,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",
@@ -482,6 +481,7 @@
"onboarding.follows.lead": "La teva lÃnia de temps inici nomÊs està a les teves mans. Com mÊs gent segueixis, mÊs activa i interessant serà . Aquests perfils poden ser un bon punt d'iniciâsempre pots acabar deixant de seguir-los!:",
"onboarding.follows.title": "Personalitza la pantalla d'inci",
"onboarding.profile.discoverable": "Fes el meu perfil descobrible",
+ "onboarding.profile.discoverable_hint": "En acceptar d'Êsser descobert a Mastodon els teus missatges poden aparèixer dins les tendències i els resultats de cerques, i el teu perfil es pot suggerir a qui tingui interessos semblants als teus.",
"onboarding.profile.display_name": "Nom que es mostrarà ",
"onboarding.profile.display_name_hint": "El teu nom complet o el teu malnomâĻ",
"onboarding.profile.lead": "Sempre ho pots completar mÊs endavant a la configuraciÃŗ, on hi ha encara mÊs opcions disponibles.",
@@ -519,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",
@@ -605,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",
@@ -713,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 7e964183292..73910f9b7c7 100644
--- a/app/javascript/mastodon/locales/ckb.json
+++ b/app/javascript/mastodon/locales/ckb.json
@@ -36,7 +36,6 @@
"account.following": "بÛدŲادا",
"account.following_counter": "{count, plural, one {{counter} Ø´ŲÛŲÚŠÛŲØĒŲŲ} other {{counter} Ø´ŲÛŲÚŠÛŲØĒŲŲ}}",
"account.follows.empty": "ØĻÛŲ
بÛÚŠØ§ØąŲÛŲÛØąÛ ØĒا ØĻÛØŗØĒا Ø´ŲÛŲ ÚŠÛØŗ ŲÛÚŠÛŲØĒŲŲÛ.",
- "account.follows_you": "Ø´ŲÛŲØĒ دÛÚŠÛŲÛØĒ",
"account.go_to_profile": "بÚÛ Ø¨Û ŲžÚÛŲاÛŲÛ",
"account.hide_reblogs": "Ø¯Ø§Ø´Ø§ØąØ¯ŲÛ Ø¨ŲŲØŗØĒÛڊاŲ ŲÛ @{name}",
"account.joined_short": "بÛØ´Ø¯Ø§ØąÛ ÚŠØąØ¯ŲŲÛ",
@@ -77,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": "ŲاŲžÛÚÛÛ Ø¯Ø§ŲØ§ÚŠØąØ§Ų ŲÛØĒŲاŲØąØ§ ÚÛŲدÛØą Ø¨ÚŠØąÛØĒ. دÛÚŠØąÛØĒ بÛŲÛÛ ŲÛÚĩÛÛÛÚŠÛ ÚŠÛدÛÚŠÛŲ
اŲÛŲÛ Ø¨ÛØĒØ ÛاŲ ÚŠÛØ´ÛÛ Ú¯ŲŲØŦاŲÛ ŲÛبگÛÚ.",
@@ -129,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": "بŲÛÚŠ",
@@ -355,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": "بÛدŲاداÚŲÛ Ø¯Ø§ŲØ§ÚŠØ§ØąÛÛڊاŲ بڊÛ",
@@ -440,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": "ŲŲÛÚŠØąØ¯ŲÛŲÛ",
@@ -611,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 d4bb2f82ba4..9d0b0306c8e 100644
--- a/app/javascript/mastodon/locales/co.json
+++ b/app/javascript/mastodon/locales/co.json
@@ -19,7 +19,6 @@
"account.followers_counter": "{count, plural, one {{counter} Abbunatu} other {{counter} Abbunati}}",
"account.following_counter": "{count, plural, one {{counter} Abbunamentu} other {{counter} Abbunamenti}}",
"account.follows.empty": "St'utilizatore Ún seguita nisunu.",
- "account.follows_you": "Vi seguita",
"account.hide_reblogs": "Piattà spartere da @{name}",
"account.link_verified_on": "A prupietà di stu ligame hè stata verificata u {date}",
"account.locked_info": "U statutu di vita privata di u contu hè chjosu. U pruprietariu esamina manualmente e dumande d'abbunamentu.",
@@ -46,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à ",
@@ -81,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à ",
@@ -246,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",
@@ -319,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!",
@@ -410,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 16bf5020c50..7d91670de06 100644
--- a/app/javascript/mastodon/locales/cs.json
+++ b/app/javascript/mastodon/locales/cs.json
@@ -38,7 +38,6 @@
"account.following": "Sledujete",
"account.following_counter": "{count, plural, one {{counter} SledovanÃŊ} few {{counter} SledovanÃ} many {{counter} SledovanÃŊch} other {{counter} SledovanÃŊch}}",
"account.follows.empty": "Tento uÅživatel zatÃm nikoho nesleduje.",
- "account.follows_you": "Sleduje vÃĄs",
"account.go_to_profile": "PÅejÃt na profil",
"account.hide_reblogs": "SkrÃŊt boosty od @{name}",
"account.in_memoriam": "In Memoriam.",
@@ -88,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.",
@@ -145,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",
@@ -402,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",
@@ -509,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",
@@ -696,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 4ecf48735e1..3cd090e1861 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,13 +32,13 @@
"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}}}",
"account.following": "Yn dilyn",
"account.following_counter": "{count, plural, one {Yn dilyn: {counter}} other {Yn dilyn: {counter}}}",
"account.follows.empty": "Nid yw'r defnyddiwr hwn yn dilyn unrhyw un eto.",
- "account.follows_you": "Yn eich dilyn chi",
"account.go_to_profile": "Mynd i'r proffil",
"account.hide_reblogs": "Cuddio hybiau gan @{name}",
"account.in_memoriam": "Er Cof.",
@@ -52,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",
@@ -87,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.",
@@ -144,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",
@@ -169,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",
@@ -406,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",
@@ -482,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:",
@@ -521,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",
@@ -602,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",
@@ -709,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 04fc43734f3..5d6cac69d83 100644
--- a/app/javascript/mastodon/locales/da.json
+++ b/app/javascript/mastodon/locales/da.json
@@ -32,13 +32,13 @@
"account.featured_tags.last_status_never": "Ingen indlÃĻg",
"account.featured_tags.title": "{name}s fremhÃĻvede hashtags",
"account.follow": "Følg",
+ "account.follow_back": "Følg tilbage",
"account.followers": "Følgere",
"account.followers.empty": "Ingen følger denne bruger endnu.",
"account.followers_counter": "{count, plural, one {{counter} Følger} other {{counter} Følgere}}",
"account.following": "Følger",
"account.following_counter": "{count, plural, one {{counter} Følges} other {{counter} Følges}}",
"account.follows.empty": "Denne bruger følger ikke nogen endnu.",
- "account.follows_you": "Følger dig",
"account.go_to_profile": "GÃĨ til profil",
"account.hide_reblogs": "Skjul boosts fra @{name}",
"account.in_memoriam": "Til minde om.",
@@ -53,6 +53,7 @@
"account.mute_notifications_short": "SlÃĨ lyden fra for notifikationer",
"account.mute_short": "Skjul (mute)",
"account.muted": "Skjult (muted)",
+ "account.mutual": "FÃĻlles",
"account.no_bio": "Ingen beskrivelse til rÃĨdighed.",
"account.open_original_page": "Ã
bn oprindelig side",
"account.posts": "IndlÃĻg",
@@ -88,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.",
@@ -145,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",
@@ -407,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)",
@@ -525,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",
@@ -550,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",
@@ -714,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 cf545e48c1b..a6dd098bb20 100644
--- a/app/javascript/mastodon/locales/de.json
+++ b/app/javascript/mastodon/locales/de.json
@@ -32,13 +32,13 @@
"account.featured_tags.last_status_never": "Keine Beiträge",
"account.featured_tags.title": "Von {name} vorgestellte Hashtags",
"account.follow": "Folgen",
+ "account.follow_back": "Ebenfalls folgen",
"account.followers": "Follower",
"account.followers.empty": "Diesem Profil folgt noch niemand.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Follower}}",
"account.following": "Folge ich",
"account.following_counter": "{count, plural, one {{counter} Folge ich} other {{counter} Folge ich}}",
"account.follows.empty": "Dieses Profil folgt noch niemandem.",
- "account.follows_you": "Folgt dir",
"account.go_to_profile": "Profil aufrufen",
"account.hide_reblogs": "Geteilte Beiträge von @{name} ausblenden",
"account.in_memoriam": "Zum Andenken.",
@@ -53,6 +53,7 @@
"account.mute_notifications_short": "Benachrichtigungen stummschalten",
"account.mute_short": "Stummschalten",
"account.muted": "Stummgeschaltet",
+ "account.mutual": "Gegenseitig",
"account.no_bio": "Keine Beschreibung verfÃŧgbar.",
"account.open_original_page": "UrsprÃŧngliche Seite Ãļffnen",
"account.posts": "Beiträge",
@@ -61,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",
@@ -88,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.",
@@ -145,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",
@@ -407,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",
@@ -488,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",
@@ -525,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",
@@ -550,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",
@@ -714,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 02ce7120a38..068d2289066 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,13 +32,13 @@
"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} ÎÎēĪÎģÎŋĪ
θÎŋΚ}}",
"account.following": "ÎÎēÎŋÎģÎŋĪ
θÎĩίĪÎĩ",
"account.following_counter": "{count, plural, one {{counter} ÎÎēÎŋÎģÎŋĪ
θÎĩί} other {{counter} ÎÎēÎŋÎģÎŋĪ
θÎŋĪÎŊ}}",
"account.follows.empty": "ÎĪ
ĪĪĪ Îŋ ĪĪÎŽĪĪΡĪ δÎĩÎŊ ÎąÎēÎŋÎģÎŋĪ
θÎĩί ÎēÎąÎŊÎÎŊÎąÎŊ ÎąÎēĪÎŧÎą.",
- "account.follows_you": "ÎŖÎĩ ÎąÎēÎŋÎģÎŋĪ
θÎĩί",
"account.go_to_profile": "ÎÎĩĪÎŦβιĪΡ ĪĪÎŋ ĪĪÎŋĪίÎģ",
"account.hide_reblogs": "ÎĪĪÎēĪĪ
ĪΡ ÎĩÎŊΚĪĪĪĪÎĩĪÎŊ ÎąĪĪ @{name}",
"account.in_memoriam": "ÎΚĪ ÎŧÎŊÎŽÎŧΡÎŊ.",
@@ -48,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": "ΤÎŋĪ
Ī ÎēιΚ ÎąĪÎąÎŊĪÎŽĪÎĩΚĪ",
@@ -64,6 +70,7 @@
"account.unendorse": "ÎÎą ÎŧΡÎŊ ĪÎąĪÎĪÎĩĪιΚ ĪĪÎŋ ĪĪÎŋĪίÎģ",
"account.unfollow": "ÎĪĪΡ ÎąÎēÎŋÎģÎŋĪθΡĪΡĪ",
"account.unmute": "ÎΚιÎēÎŋĪÎŽ ĪίÎŗÎąĪΡĪ @{name}",
+ "account.unmute_notifications_short": "ÎŖίÎŗÎąĪΡ ÎĩΚδÎŋĪÎŋΚΎĪÎĩĪÎŊ",
"account.unmute_short": "ÎÎąĪÎŦĪÎŗΡĪΡ ĪίÎŗÎąĪΡĪ",
"account_note.placeholder": "ÎÎŦÎŊÎĩ ÎēÎģΚÎē ÎŗΚι ÎŊÎą ĪĪÎŋĪθÎĪÎĩΚĪ ĪΡÎŧÎĩίĪĪΡ",
"admin.dashboard.daily_retention": "Î ÎŋĪÎŋĪĪĪ ĪĪΡĪĪĪÎŊ ĪÎŋĪ
ĪÎąĪÎąÎŧÎÎŊÎŋĪ
ÎŊ ÎŧÎĩĪÎŦ ĪΡÎŊ ÎĩÎŗÎŗĪÎąĪÎŽ, ÎąÎŊÎŦ ΡÎŧÎĪÎą",
@@ -78,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": "ÎÎĩÎŊ ÎŽĪÎąÎŊ δĪ
ÎŊÎąĪÎŽ Ρ ÎąĪĪδÎŋĪΡ ĪΡĪ ĪÎĩÎģÎ¯Î´ÎąĪ ĪÎŋĪ
ÎļÎŽĪΡĪÎĩĪ. ÎĪÎŋĪÎĩί ÎŊÎą ÎŋĪÎĩίÎģÎĩĪιΚ ĪÎĩ ĪĪÎŦÎģÎŧÎą ĪĪÎŋÎŊ ÎēĪδΚÎēÎŦ ÎŧÎąĪ ÎŽ ĪÎĩ ĪĪĪβÎģΡÎŧÎą ĪĪ
ÎŧβιĪĪĪΡĪÎąĪ ĪÎŋĪ
ĪĪÎŋÎŗĪÎŦÎŧÎŧÎąĪÎŋĪ ĪÎĩĪΚΎÎŗΡĪΡĪ.",
@@ -104,6 +110,7 @@
"column.direct": "ÎδΚĪĪΚÎēÎĪ ÎąÎŊÎąĪÎŋĪÎĪ",
"column.directory": "Î ÎĩĪΚΎÎŗΡĪΡ ĪĪÎą ĪĪÎŋĪίÎģ",
"column.domain_blocks": "ÎĪÎŋÎēÎģÎĩΚĪÎŧÎÎŊÎŋΚ ĪÎŋÎŧÎĩίĪ",
+ "column.favourites": "ÎÎŗÎąĪΡÎŧÎÎŊÎą",
"column.follow_requests": "ÎΚĪÎŽÎŧÎąĪÎą ÎąÎēÎŋÎģÎŋĪθΡĪΡĪ",
"column.home": "ÎĪĪΚÎēÎŽ",
"column.lists": "ÎίĪĪÎĩĪ",
@@ -124,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": "ÎĪ
ĪÎŽ Ρ δΡÎŧÎŋĪίÎĩĪ
ĪΡ δÎĩÎŊ θι ÎĩÎŧĪÎąÎŊίÎļÎĩĪιΚ ÎēÎŦĪĪ ÎąĪĪ ÎŋĪÎŋΚιδΎĪÎŋĪÎĩ ÎĩĪΚÎēÎĪÎą ÎēιθĪĪ δÎĩÎŊ ÎĩίÎŊιΚ δΡÎŧĪĪΚι. ÎĪÎŊÎŋ ÎŋΚ δΡÎŧĪĪΚÎĩĪ δΡÎŧÎŋĪΚÎĩĪĪÎĩΚĪ ÎŧĪÎŋĪÎŋĪÎŊ ÎŊÎą ÎąÎŊÎąÎļΡĪΡθÎŋĪÎŊ ÎŧÎĩ ÎĩĪΚÎēÎĪÎą.",
@@ -132,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": "ÎĪÎŋÎēÎģÎĩΚĪÎŧĪĪ",
@@ -177,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",
@@ -253,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} θÎĩĪĪΡĪÎąÎŊ ĪĪĪ ίĪĪĪ ÎŊÎą θÎÎģÎĩΚĪ ÎŊÎą ÎĩÎģÎÎŗΞÎĩΚĪ ĪÎĩΚĪÎŋÎēίÎŊΡĪÎą ÎąĪ
ĪÎŦ ĪÎą ιΚĪÎŽÎŧÎąĪÎą ÎąÎēÎŋÎģÎŋĪθΡĪΡĪ.",
@@ -278,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, ÎŧĪÎŋĪÎĩίĪ ÎŊÎą ÎĩÎŊΚĪĪĪĪÎĩΚĪ ÎąĪ
ĪÎŽ ĪΡÎŊ ÎąÎŊÎŦĪĪΡĪΡ ÎŗΚι ÎŊÎą ĪΡ ÎŧÎŋΚĪÎąĪĪÎĩίĪ ÎŧÎĩ ĪÎŋĪ
Ī δΚÎēÎŋĪĪ ĪÎŋĪ
ÎąÎēÎŋÎģÎŋĪθÎŋĪ
Ī.",
@@ -307,6 +324,7 @@
"keyboard_shortcuts.direct": "ÎŗΚι ĪÎŋ ÎŦÎŊÎŋΚÎŗÎŧÎą ĪΡĪ ĪĪÎŽÎģΡĪ ΚδΚĪĪΚÎēĪÎŊ ÎĩĪΚĪΡÎŧÎŦÎŊĪÎĩĪÎŊ",
"keyboard_shortcuts.down": "ÎēίÎŊΡĪΡ ĪĪÎŋĪ ĪÎą ÎēÎŦĪĪ ĪĪΡ ÎģίĪĪÎą",
"keyboard_shortcuts.enter": "ÎÎŧĪÎŦÎŊΚĪΡ ÎąÎŊÎŦĪĪΡĪΡĪ",
+ "keyboard_shortcuts.favourite": "ÎÎŗÎąĪΡÎŧÎÎŊΡ δΡÎŧÎŋĪίÎĩĪ
ĪΡ",
"keyboard_shortcuts.federated": "ÎÎŊÎŋΚÎŗÎŧÎą ĪÎŋÎŽĪ ĪĪ
ÎŊÎąÎģÎģÎąÎŗĪÎŊ",
"keyboard_shortcuts.heading": "ÎŖĪ
ÎŊĪÎŋÎŧÎĩĪĪÎĩΚĪ ĪÎģΡÎēĪĪÎŋÎģÎŋÎŗίÎŋĪ
",
"keyboard_shortcuts.home": "ÎÎŊÎŋΚÎŗÎŧÎą ĪÎŋÎŽĪ ÎąĪĪΚÎēÎŽĪ ĪÎĩÎģÎ¯Î´ÎąĪ",
@@ -351,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": "ÎΚÎŦĪÎēÎĩΚι",
@@ -364,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": "ÎΚĪÎŽÎŧÎąĪÎą ÎąÎēÎŋÎģÎŋĪθΡĪΡĪ",
@@ -373,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": "Î ĪÎŋĪΚÎŧÎŽĪÎĩΚĪ",
@@ -396,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": "ÎÎŧĪÎŦÎŊΚĪΡ ÎŧĪÎŦĪÎąĪ ĪίÎģĪĪÎŋĪ
",
@@ -432,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:",
@@ -440,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!",
@@ -449,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": "ΨΎĪΚĪÎĩ",
@@ -457,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": "Î ÎąĪĪΚÎēÎŽ ĪÎŋĪ
ĪÎŋÎŽ ÎĩĪÎŋΚÎŧÎŦÎļÎĩĪιΚ!",
@@ -482,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": "ΤÎŋ ĪÎĩĪΚÎĩĪĪÎŧÎĩÎŊÎŋ ĪÎąĪιβΚÎŦÎļÎĩΚ ÎÎŊÎąÎŊ ÎŽ ĪÎĩĪΚĪĪĪĪÎĩĪÎŋĪ
Ī ÎēÎąÎŊĪÎŊÎĩĪ δΚιÎēÎŋÎŧΚĪĪÎŽ",
@@ -501,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": "ÎίÎŊιΚ ĪĪÎąÎŧ",
@@ -534,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 ΡÎŧÎĪÎĩĪ (ÎΡÎŊÎšÎąÎ¯Îą ÎÎŊÎĩĪÎŗÎŋί ΧĪÎŽĪĪÎĩĪ)",
@@ -548,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": "ÎÎŊÎŋΚÎŗÎŧÎą ÎąĪ
ĪÎŽĪ ĪΡĪ ÎąÎŊÎŦĪĪΡĪΡĪ ĪÎĩ δΚÎĩĪÎąĪÎŽ ĪĪ
ÎŊĪÎŋÎŊΚĪÎŧÎŋĪ",
@@ -564,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": "ÎĪĪÎēĪĪ
ĪΡ ÎąÎŊÎŦĪĪΡĪΡĪ",
@@ -628,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 7745311be5a..2cf1b4dbaec 100644
--- a/app/javascript/mastodon/locales/en-GB.json
+++ b/app/javascript/mastodon/locales/en-GB.json
@@ -21,6 +21,7 @@
"account.blocked": "Blocked",
"account.browse_more_on_origin_server": "Browse more on the original profile",
"account.cancel_follow_request": "Cancel follow",
+ "account.copy": "Copy link to profile",
"account.direct": "Privately mention @{name}",
"account.disable_notifications": "Stop notifying me when @{name} posts",
"account.domain_blocked": "Domain blocked",
@@ -37,7 +38,6 @@
"account.following": "Following",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "This user doesn't follow anyone yet.",
- "account.follows_you": "Follows you",
"account.go_to_profile": "Go to profile",
"account.hide_reblogs": "Hide boosts from @{name}",
"account.in_memoriam": "In Memoriam.",
@@ -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",
@@ -191,6 +180,7 @@
"conversation.mark_as_read": "Mark as read",
"conversation.open": "View conversation",
"conversation.with": "With {names}",
+ "copy_icon_button.copied": "Copied to clipboard",
"copypaste.copied": "Copied",
"copypaste.copy_to_clipboard": "Copy to clipboard",
"directory.federated": "From known fediverse",
@@ -222,6 +212,7 @@
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places",
+ "empty_column.account_hides_collections": "This user has chosen to not make this information available",
"empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "No posts here!",
"empty_column.account_unavailable": "Profile unavailable",
@@ -404,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",
@@ -478,6 +468,8 @@
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"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": "Personalize your home feed",
+ "onboarding.profile.discoverable": "Make my profile discoverable",
+ "onboarding.profile.discoverable_hint": "When you opt in to discoverability on Mastodon, your posts may appear in search results and trending, and your profile may be suggested to people with similar interests to you.",
"onboarding.profile.display_name": "Display name",
"onboarding.profile.display_name_hint": "Your full name or your fun nameâĻ",
"onboarding.profile.lead": "You can always complete this later in the settings, where even more customisation options are available.",
@@ -520,16 +512,10 @@
"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",
"refresh": "Refresh",
"regeneration_indicator.label": "LoadingâĻ",
"regeneration_indicator.sublabel": "Your home feed is being prepared!",
@@ -600,6 +586,7 @@
"search.quick_action.status_search": "Posts matching {x}",
"search.search_or_paste": "Search or paste URL",
"search_popout.full_text_search_disabled_message": "Unavailable on {domain}.",
+ "search_popout.full_text_search_logged_out_message": "Only available when logged in.",
"search_popout.language_code": "ISO language code",
"search_popout.options": "Search options",
"search_popout.quick_actions": "Quick actions",
@@ -707,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 ddf34eee9a8..5aef561179c 100644
--- a/app/javascript/mastodon/locales/en.json
+++ b/app/javascript/mastodon/locales/en.json
@@ -32,13 +32,13 @@
"account.featured_tags.last_status_never": "No posts",
"account.featured_tags.title": "{name}'s featured hashtags",
"account.follow": "Follow",
+ "account.follow_back": "Follow back",
"account.followers": "Followers",
"account.followers.empty": "No one follows this user yet.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following": "Following",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "This user doesn't follow anyone yet.",
- "account.follows_you": "Follows you",
"account.go_to_profile": "Go to profile",
"account.hide_reblogs": "Hide boosts from @{name}",
"account.in_memoriam": "In Memoriam.",
@@ -53,6 +53,7 @@
"account.mute_notifications_short": "Mute notifications",
"account.mute_short": "Mute",
"account.muted": "Muted",
+ "account.mutual": "Mutual",
"account.no_bio": "No description provided.",
"account.open_original_page": "Open original page",
"account.posts": "Posts",
@@ -88,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.",
@@ -145,22 +145,22 @@
"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.add_option": "Add option",
"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.remove_option": "Remove this option",
+ "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",
@@ -407,7 +407,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",
@@ -525,14 +524,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",
@@ -550,7 +550,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",
@@ -714,10 +716,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 537b8d0af14..907a918af08 100644
--- a/app/javascript/mastodon/locales/eo.json
+++ b/app/javascript/mastodon/locales/eo.json
@@ -21,6 +21,7 @@
"account.blocked": "Blokita",
"account.browse_more_on_origin_server": "Foliumi pli Äe la originala profilo",
"account.cancel_follow_request": "Nuligi peton por sekvado",
+ "account.copy": "Kopii ligilon al profilo",
"account.direct": "Private mencii @{name}",
"account.disable_notifications": "Ne plu sciigi min, kiam @{name} mesaÄas",
"account.domain_blocked": "Domajno blokita",
@@ -31,13 +32,13 @@
"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}}",
"account.following": "Sekvatoj",
"account.following_counter": "{count, plural, one {{counter} Sekvato} other {{counter} Sekvatoj}}",
"account.follows.empty": "La uzanto ankoraÅ ne sekvas iun ajn.",
- "account.follows_you": "Sekvas vin",
"account.go_to_profile": "Iri al profilo",
"account.hide_reblogs": "KaÅi diskonigojn de @{name}",
"account.in_memoriam": "Memore.",
@@ -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",
@@ -191,6 +182,7 @@
"conversation.mark_as_read": "Marki legita",
"conversation.open": "Vidi konversacion",
"conversation.with": "Kun {names}",
+ "copy_icon_button.copied": "Kopiis al kliptabulo",
"copypaste.copied": "Kopiita",
"copypaste.copy_to_clipboard": "Kopii al dosierujo",
"directory.federated": "El konata fediverso",
@@ -202,7 +194,9 @@
"dismissable_banner.community_timeline": "Jen la plej novaj publikaj afiÅoj de uzantoj, kies kontojn gastigas {domain}.",
"dismissable_banner.dismiss": "Eksigi",
"dismissable_banner.explore_links": "Tiuj novaÄĩoj estas aktuale priparolataj de uzantoj en tiu Äi kaj aliaj serviloj, sur la malcentrigita reto.",
+ "dismissable_banner.explore_statuses": "Äi tioj estas afiÅoj de socia reto kiu populariÄas hodiau.",
"dismissable_banner.explore_tags": "Äi tiuj kradvostoj populariÄas en Äi tiu kaj aliaj serviloj en la malcentraliza reto nun.",
+ "dismissable_banner.public_timeline": "Äi tioj estas plej lastaj publikaj afiÅoj de personoj Äe socia reto kiu personoj Äe {domain} sekvas.",
"embed.instructions": "Enkorpigu Äi tiun afiÅon en vian retejon per kopio de la suba kodo.",
"embed.preview": "Äi aperos tiel:",
"emoji_button.activity": "Agadoj",
@@ -220,6 +214,7 @@
"emoji_button.search_results": "SerÄaj rezultoj",
"emoji_button.symbols": "Simboloj",
"emoji_button.travel": "VojaÄoj kaj lokoj",
+ "empty_column.account_hides_collections": "Äi tiu uzanto elektis ne disponebligi Äi tiu informon",
"empty_column.account_suspended": "Konto suspendita",
"empty_column.account_timeline": "Neniu afiÅo Äi tie!",
"empty_column.account_unavailable": "Profilo ne disponebla",
@@ -229,6 +224,8 @@
"empty_column.direct": "Vi ankoraÅ ne havas privatan mencion. Kiam vi sendos aÅ ricevos iun, tiu aperos Äi tie.",
"empty_column.domain_blocks": "AnkoraÅ neniu domajno estas blokita.",
"empty_column.explore_statuses": "Nenio tendencas nun. Rekontrolu poste!",
+ "empty_column.favourited_statuses": "Vi ankoraÅ ne havas stelumitan afiÅon.",
+ "empty_column.favourites": "AnkoraÅ neniu stelumis tiun afiÅon.",
"empty_column.follow_requests": "Vi ne ankoraÅ havas iun peton de sekvado. Kiam vi ricevos unu, Äi aperos Äi tie.",
"empty_column.followed_tags": "Vi ankoraÅ ne sekvas iujn kradvortojn. Kiam vi faras, ili aperos Äi tie.",
"empty_column.hashtag": "AnkoraÅ estas nenio per Äi tiu kradvorto.",
@@ -292,19 +289,36 @@
"hashtag.column_settings.tag_mode.any": "Iu ajn",
"hashtag.column_settings.tag_mode.none": "Neniu",
"hashtag.column_settings.tag_toggle": "Aldoni pliajn etikedojn por Äi tiu kolumno",
+ "hashtag.counter_by_accounts": "{count, plural,one {{counter} partoprenanto} other {{counter} partoprenantoj}}",
+ "hashtag.counter_by_uses": "{count, plural,one {{counter} afiÅo} other {{counter} afiÅoj}}",
+ "hashtag.counter_by_uses_today": "{count, plural,one {{counter} afiÅo} other {{counter} afiÅoj}} hodiau",
"hashtag.follow": "Sekvi la kradvorton",
"hashtag.unfollow": "Ne plu sekvi la kradvorton",
+ "hashtags.and_other": "âĻkaj {count, plural,other {# pli}}",
+ "home.actions.go_to_explore": "Vidi kio populariÄas",
"home.actions.go_to_suggestions": "Trovi homojn por sekvi",
"home.column_settings.basic": "Bazaj agordoj",
"home.column_settings.show_reblogs": "Montri diskonigojn",
"home.column_settings.show_replies": "Montri respondojn",
+ "home.explore_prompt.body": "Via hejmafiÅaro havos miksitajn afiÅojn de kradvortoj kiujn vi elektis sekvi, personoj kiujn vi elektis sekvi, kaj afiÅoj kiujn ili suprenigis.",
+ "home.explore_prompt.title": "Äi tio estas via hejma paÄo en Mastodon.",
"home.hide_announcements": "KaÅi la anoncojn",
+ "home.pending_critical_update.body": "Äisdatigu vian servilon de Mastodon kiel eble plej baldau!",
+ "home.pending_critical_update.link": "Vidi Äisdatigojn",
+ "home.pending_critical_update.title": "Kritika sekurÄisdatigo estas disponebla!",
"home.show_announcements": "Montri anoncojn",
+ "interaction_modal.description.favourite": "Per konto Äe Mastodon, vi povas stelumiti Äi tiun afiÅon por sciigi la afiÅanton ke vi aprezigas Åin kaj konservas por la estonteco.",
"interaction_modal.description.follow": "Kun konto Äe Mastodon, vi povos sekvi {name} por vidi ties mesaÄojn en via hejmo.",
"interaction_modal.description.reblog": "Kun konto Äe Mastodon, vi povas diskonigi Äi tiun afiÅon, por ke viaj propraj sekvantoj vidu Äin.",
"interaction_modal.description.reply": "Kun konto Äe Mastodon, vi povos respondi al Äi tiu mesaÄo.",
+ "interaction_modal.login.action": "Prenu min hejmen",
+ "interaction_modal.login.prompt": "Domajno de via hejma servilo, ekz. mastodon.social",
+ "interaction_modal.no_account_yet": "Äu ne estas Äe Mastodon?",
"interaction_modal.on_another_server": "En alia servilo",
"interaction_modal.on_this_server": "En Äi tiu servilo",
+ "interaction_modal.sign_in": "Vi ne estas ensalutita al Äi tiu servilo.",
+ "interaction_modal.sign_in_hint": "Gvideto: Tio estas la retejo kie vi registris. Vi ankau povas tajpi vian plenan uzantonomon!",
+ "interaction_modal.title.favourite": "Stelumi la afiÅon de {name}",
"interaction_modal.title.follow": "Sekvi {name}",
"interaction_modal.title.reblog": "Akceli la afiÅon de {name}",
"interaction_modal.title.reply": "Respondi al la afiÅo de {name}",
@@ -320,6 +334,8 @@
"keyboard_shortcuts.direct": "por malfermi la kolumnon pri privataj mencioj",
"keyboard_shortcuts.down": "iri suben en la listo",
"keyboard_shortcuts.enter": "malfermi mesaÄon",
+ "keyboard_shortcuts.favourite": "Stelumi afiÅon",
+ "keyboard_shortcuts.favourites": "Malfermi la liston de la stelumoj",
"keyboard_shortcuts.federated": "Malfermi la frataran templinion",
"keyboard_shortcuts.heading": "Klavaraj mallongigoj",
"keyboard_shortcuts.home": "Malfermi la hejman templinion",
@@ -366,6 +382,7 @@
"lists.search": "SerÄi inter la homoj, kiujn vi sekvas",
"lists.subheading": "Viaj listoj",
"load_pending": "{count,plural, one {# nova elemento} other {# novaj elementoj}}",
+ "loading_indicator.label": "ÅargadoâĻ",
"media_gallery.toggle_visible": "{number, plural, one {KaÅi la bildon} other {KaÅi la bildojn}}",
"moved_to_account_banner.text": "Via konto {disabledAccount} estas malvalidigita Äar vi movis Äin al {movedToAccount}.",
"mute_modal.duration": "DaÅro",
@@ -380,8 +397,8 @@
"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",
"navigation_bar.follow_requests": "Petoj de sekvado",
"navigation_bar.followed_tags": "Sekvataj kradvortoj",
@@ -389,6 +406,7 @@
"navigation_bar.lists": "Listoj",
"navigation_bar.logout": "AdiaÅi",
"navigation_bar.mutes": "Silentigitaj uzantoj",
+ "navigation_bar.opened_in_classic_interface": "AfiÅoj, kontoj, kaj aliaj specifaj paÄoj kiuj estas malfermititaj defaulta en la klasika reta interfaco.",
"navigation_bar.personal": "Persone",
"navigation_bar.pins": "Alpinglitaj mesaÄoj",
"navigation_bar.preferences": "Preferoj",
@@ -398,6 +416,7 @@
"not_signed_in_indicator.not_signed_in": "Necesas saluti por aliri tiun rimedon.",
"notification.admin.report": "{name} raportis {target}",
"notification.admin.sign_up": "{name} kreis konton",
+ "notification.favourite": "{name} stelumis vian afiÅon",
"notification.follow": "{name} eksekvis vin",
"notification.follow_request": "{name} petis sekvi vin",
"notification.mention": "{name} menciis vin",
@@ -411,6 +430,7 @@
"notifications.column_settings.admin.report": "Novaj raportoj:",
"notifications.column_settings.admin.sign_up": "Novaj registriÄoj:",
"notifications.column_settings.alert": "Sciigoj de la retumilo",
+ "notifications.column_settings.favourite": "Stelumoj:",
"notifications.column_settings.filter_bar.advanced": "Montri Äiujn kategoriojn",
"notifications.column_settings.filter_bar.category": "Rapida filtra breto",
"notifications.column_settings.filter_bar.show_bar": "Montri la breton de filtrilo",
@@ -428,6 +448,7 @@
"notifications.column_settings.update": "Redaktoj:",
"notifications.filter.all": "Äiuj",
"notifications.filter.boosts": "Diskonigoj",
+ "notifications.filter.favourites": "Stelumoj",
"notifications.filter.follows": "Sekvoj",
"notifications.filter.mentions": "Mencioj",
"notifications.filter.polls": "Balotenketaj rezultoj",
@@ -441,14 +462,29 @@
"notifications_permission_banner.enable": "Åalti retumilajn sciigojn",
"notifications_permission_banner.how_to_control": "Por ricevi sciigojn kiam Mastodon ne estas malfermita, ebligu labortablajn sciigojn. Vi povas regi precize kiuj specoj de interagoj generas labortablajn sciigojn per la supra butono {icon} post kiam ili estas ebligitaj.",
"notifications_permission_banner.title": "Neniam preterlasas iun ajn",
+ "onboarding.action.back": "Prenu min reen",
+ "onboarding.actions.back": "Prenu min reen",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
"onboarding.compose.template": "Saluton #Mastodon!",
"onboarding.follows.empty": "BedaÅrinde, neniu rezulto estas montrebla nuntempe. Vi povas provi serÄi aÅ foliumi la esploran paÄon por trovi kontojn por sekvi, aÅ retrovi baldaÅ.",
"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": "Trovebligi mian profilon",
+ "onboarding.profile.discoverable_hint": "Kiam vi aliÄi al trovebleco Äe Mastodon, viaj afiÅoj eble aperos en serÄaj rezultoj kaj populariÄoj, kaj via profilo eble estas sugestota al personoj kun similaj intereseoj al vi.",
+ "onboarding.profile.display_name": "Publika nomo",
+ "onboarding.profile.display_name_hint": "Via plena nomo aÅ via kromnomoâĻ",
+ "onboarding.profile.lead": "Vi Äiam povas plenigi Äi tion poste en la agordoj, kie eÄ pli da personecigagordoj estas disponeblaj.",
+ "onboarding.profile.note": "Sinprezento",
+ "onboarding.profile.note_hint": "Vi povas @mencii aliajn homojn aÅ #kradvortojnâĻ",
"onboarding.profile.save_and_continue": "Konservi kaj daÅrigi",
+ "onboarding.profile.title": "Profila fikso",
+ "onboarding.profile.upload_avatar": "AlÅuti profilbildon",
+ "onboarding.profile.upload_header": "AlÅuti profilkapbildon",
+ "onboarding.share.lead": "Sciigi personojn pri kiel ili povas trovi vin Äe Mastodon!",
"onboarding.share.message": "Mi estas {username} en #Mastodon! Sekvu min Äe {url}",
+ "onboarding.share.next_steps": "Eblaj malantauaj paÅoj:",
+ "onboarding.share.title": "Disvastigi vian profilon",
"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": "Vi atingas Äin!",
@@ -460,6 +496,11 @@
"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",
+ "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",
@@ -473,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!",
@@ -500,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",
@@ -538,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",
@@ -550,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)",
@@ -567,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",
@@ -583,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",
@@ -650,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 4573f4ab9dc..8816f18af64 100644
--- a/app/javascript/mastodon/locales/es-AR.json
+++ b/app/javascript/mastodon/locales/es-AR.json
@@ -32,13 +32,13 @@
"account.featured_tags.last_status_never": "Sin mensajes",
"account.featured_tags.title": "Etiquetas destacadas de {name}",
"account.follow": "Seguir",
+ "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}}",
"account.following": "Siguiendo",
"account.following_counter": "{count, plural, other {Siguiendo a {counter}}}",
"account.follows.empty": "TodavÃa este usuario no sigue a nadie.",
- "account.follows_you": "Te sigue",
"account.go_to_profile": "Ir al perfil",
"account.hide_reblogs": "Ocultar adhesiones de @{name}",
"account.in_memoriam": "Cuenta conmemorativa.",
@@ -53,6 +53,7 @@
"account.mute_notifications_short": "Silenciar notificaciones",
"account.mute_short": "Silenciar",
"account.muted": "Silenciado",
+ "account.mutual": "Seguimiento mutuo",
"account.no_bio": "Sin descripciÃŗn provista.",
"account.open_original_page": "Abrir pÃĄgina original",
"account.posts": "Mensajes",
@@ -88,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.",
@@ -145,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",
@@ -407,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",
@@ -525,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",
@@ -714,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 f7cd1b3305f..fdc57ac6d61 100644
--- a/app/javascript/mastodon/locales/es-MX.json
+++ b/app/javascript/mastodon/locales/es-MX.json
@@ -32,13 +32,13 @@
"account.featured_tags.last_status_never": "Sin publicaciones",
"account.featured_tags.title": "Etiquetas destacadas de {name}",
"account.follow": "Seguir",
+ "account.follow_back": "Seguir tambiÊn",
"account.followers": "Seguidores",
"account.followers.empty": "TodavÃa nadie sigue a este usuario.",
"account.followers_counter": "{count, plural, one {{counter} Seguidor} other {{counter} Seguidores}}",
"account.following": "Siguiendo",
"account.following_counter": "{count, plural, other {{counter} Siguiendo}}",
"account.follows.empty": "Este usuario todavÃa no sigue a nadie.",
- "account.follows_you": "Te sigue",
"account.go_to_profile": "Ir al perfil",
"account.hide_reblogs": "Ocultar retoots de @{name}",
"account.in_memoriam": "En memoria.",
@@ -53,6 +53,7 @@
"account.mute_notifications_short": "Silenciar notificaciones",
"account.mute_short": "Silenciar",
"account.muted": "Silenciado",
+ "account.mutual": "Mutuo",
"account.no_bio": "Sin biografÃa.",
"account.open_original_page": "Abrir pÃĄgina original",
"account.posts": "Publicaciones",
@@ -88,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.",
@@ -145,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",
@@ -407,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",
@@ -525,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",
@@ -550,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",
@@ -606,7 +608,7 @@
"search.quick_action.status_search": "Publicaciones que coinciden con {x}",
"search.search_or_paste": "Buscar o pegar URL",
"search_popout.full_text_search_disabled_message": "No disponible en {domain}.",
- "search_popout.full_text_search_logged_out_message": "Solo disponible si inicias sesiÃŗn.",
+ "search_popout.full_text_search_logged_out_message": "SÃŗlo disponible al iniciar sesiÃŗn.",
"search_popout.language_code": "CÃŗdigo de idioma ISO",
"search_popout.options": "Opciones de bÃēsqueda",
"search_popout.quick_actions": "Acciones rÃĄpidas",
@@ -714,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 bbc8bcc7591..2e4ea93177a 100644
--- a/app/javascript/mastodon/locales/es.json
+++ b/app/javascript/mastodon/locales/es.json
@@ -32,13 +32,13 @@
"account.featured_tags.last_status_never": "Sin publicaciones",
"account.featured_tags.title": "Etiquetas destacadas de {name}",
"account.follow": "Seguir",
+ "account.follow_back": "Seguir tambiÊn",
"account.followers": "Seguidores",
"account.followers.empty": "TodavÃa nadie sigue a este usuario.",
"account.followers_counter": "{count, plural, one {{counter} Seguidor} other {{counter} Seguidores}}",
"account.following": "Siguiendo",
"account.following_counter": "{count, plural, other {Siguiendo a {counter}}}",
"account.follows.empty": "Este usuario todavÃa no sigue a nadie.",
- "account.follows_you": "Te sigue",
"account.go_to_profile": "Ir al perfil",
"account.hide_reblogs": "Ocultar impulsos de @{name}",
"account.in_memoriam": "Cuenta conmemorativa.",
@@ -53,6 +53,7 @@
"account.mute_notifications_short": "Silenciar notificaciones",
"account.mute_short": "Silenciar",
"account.muted": "Silenciado",
+ "account.mutual": "Mutuo",
"account.no_bio": "Sin biografÃa.",
"account.open_original_page": "Abrir pÃĄgina original",
"account.posts": "Publicaciones",
@@ -88,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.",
@@ -145,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",
@@ -407,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",
@@ -525,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",
@@ -714,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 a67aa6feedd..5034c255410 100644
--- a/app/javascript/mastodon/locales/et.json
+++ b/app/javascript/mastodon/locales/et.json
@@ -32,13 +32,13 @@
"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}}",
"account.following": "Jälgib",
"account.following_counter": "{count, plural, one {{counter} jälgitav} other {{counter} jälgitavat}}",
"account.follows.empty": "See kasutaja ei jälgi veel kedagi.",
- "account.follows_you": "Jälgib sind",
"account.go_to_profile": "Mine profiilile",
"account.hide_reblogs": "Peida @{name} jagamised",
"account.in_memoriam": "In Memoriam.",
@@ -53,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",
@@ -88,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.",
@@ -147,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",
@@ -407,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",
@@ -525,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",
@@ -550,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",
@@ -606,6 +607,7 @@
"search.quick_action.status_search": "Sobivad postitused {x}",
"search.search_or_paste": "Otsi vÃĩi kleebi URL",
"search_popout.full_text_search_disabled_message": "Pole saadaval kohas {domain}.",
+ "search_popout.full_text_search_logged_out_message": "Saadaval vaid kui sisse logitud.",
"search_popout.language_code": "Keele ISO-kood",
"search_popout.options": "Otsimisvalikud",
"search_popout.quick_actions": "Kiirtegevused",
@@ -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 26ed7add1ed..cee18e7a513 100644
--- a/app/javascript/mastodon/locales/eu.json
+++ b/app/javascript/mastodon/locales/eu.json
@@ -25,20 +25,20 @@
"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",
"account.featured_tags.last_status_never": "Bidalketarik ez",
"account.featured_tags.title": "{name} erabiltzailearen nabarmendutako traolak",
"account.follow": "Jarraitu",
+ "account.follow_back": "Jarraitu bueltan",
"account.followers": "Jarraitzaileak",
"account.followers.empty": "Ez du inork erabiltzaile hau jarraitzen oraindik.",
"account.followers_counter": "{count, plural, one {Jarraitzaile {counter}} other {{counter} jarraitzaile}}",
"account.following": "Jarraitzen",
"account.following_counter": "{count, plural, one {{counter} jarraitzen} other {{counter} jarraitzen}}",
"account.follows.empty": "Erabiltzaile honek ez du inor jarraitzen oraindik.",
- "account.follows_you": "Jarraitzen dizu",
"account.go_to_profile": "Joan profilera",
"account.hide_reblogs": "Ezkutatu @{name} erabiltzailearen bultzadak",
"account.in_memoriam": "Oroimenezkoa.",
@@ -53,6 +53,7 @@
"account.mute_notifications_short": "Mututu jakinarazpenak",
"account.mute_short": "Mututu",
"account.muted": "Mutututa",
+ "account.mutual": "Elkarrekikoa",
"account.no_bio": "Ez da deskribapenik eman.",
"account.open_original_page": "Ireki jatorrizko orria",
"account.posts": "Bidalketa",
@@ -88,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.",
@@ -145,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",
@@ -407,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",
@@ -525,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",
@@ -550,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",
@@ -714,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 6951d5cb0b9..0b078d1ab3c 100644
--- a/app/javascript/mastodon/locales/fa.json
+++ b/app/javascript/mastodon/locales/fa.json
@@ -1,7 +1,7 @@
{
"about.blocks": "ÚŠØ§ØąØŗØ§Ø˛ŲØ§Û ŲØ¸Ø§ØąØĒ شدŲ",
"about.contact": "ØĒŲ
اØŗ:",
- "about.disclaimer": "Ų
اØŗØĒŲدŲŲ ŲØąŲ
âاŲØ˛Ø§Øą ØĸØ˛Ø§Ø¯ Ų ÛÚŠ Ø´ØąÚŠØĒ ØēÛØą اŲØĒŲØ§ØšÛ ØĸŲŲ
اŲÛ Ø¨Ø§ Ų
ØŗØĻŲŲÛØĒ Ų
ØدŲد اØŗØĒ.",
+ "about.disclaimer": "Ų
اØŗØĒŲدŲŲ ŲØąŲ
âاŲØ˛Ø§Øą ØĸØ˛Ø§Ø¯ Ų ŲشاŲ ØĒØŦØ§ØąÛ ÛÚŠ Ø´ØąÚŠØĒ ØēÛØą اŲØĒŲØ§ØšÛ Ø¨Ø§ Ų
ØŗØĻŲŲÛØĒ Ų
ØدŲد ØĸŲŲ
اŲÛ Ø§ØŗØĒ.",
"about.domain_blocks.no_reason_available": "دŲÛŲÛ Ų
ŲØŦŲد ŲÛØŗØĒ",
"about.domain_blocks.preamble": "Ų
اØŗØĒŲدŲŲ ØšŲ
ŲŲ
اŲ Ų
ÛâÚ¯Ø°Ø§ØąØ¯ Ų
ØØĒŲا ØąØ§ Ø§Ø˛ Ø§Ø˛ ŲØą ÚŠØ§ØąØŗØ§Ø˛ دÛÚ¯ØąÛ Ø¯Øą دŲÛØ§Û Ø´Ø¨ÚŠŲâŲØ§Û Ø§ØŦØĒŲ
Ø§ØšÛ ØēÛØąŲ
ØĒŲ
ØąÚŠØ˛ دÛدŲ Ų با ØĸŲاŲ Ø¨ØąŲŲ
âÚŠŲØ´ داشØĒŲ باشÛد. اÛŲâŲا اØŗØĒØĢŲاŲاÛÛ ŲØŗØĒŲد ÚŠŲ ØąŲÛ Ø§ÛŲ ÚŠØ§ØąØŗØ§Ø˛ ؎اØĩ ŲØļØš شدŲâاŲد.",
"about.domain_blocks.silenced.explanation": "ØšŲ
ŲŲ
اŲ ŲŲ
اÛŲâŲا Ų Ų
ØØĒŲا Ø§Ø˛ اÛŲ ÚŠØ§ØąØŗØ§Ø˛ ØąØ§ ŲŲ
ÛâبÛŲÛØ¯Ø Ų
Ú¯Øą اÛŲ ÚŠŲ بŲ ØˇŲØą ؎اØĩ دŲباŲشاŲ گشØĒŲ Ûا با ŲžÛ Ú¯ÛØąÛØ Ø¯Ø§ŲØˇŲب دÛدŲشاŲ Ø´ŲÛد.",
@@ -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}",
@@ -21,6 +21,7 @@
"account.blocked": "Ų
ØŗدŲد",
"account.browse_more_on_origin_server": "Ų
ØąŲØą بÛØ´âØĒØą ØąŲÛ ŲŲ
اÛŲŲ اØĩŲÛ",
"account.cancel_follow_request": "ØąØ¯ ÚŠØąØ¯Ų Ø¯ØąØŽŲاØŗØĒ ŲžÛâÚ¯ÛØąÛ",
+ "account.copy": "ØąŲŲŲØ´ØĒ Ø§Ø˛ ŲžÛŲŲد بŲ ŲŲ
اÛŲ",
"account.direct": "Ø§Ø´Ø§ØąŲŲ ØŽØĩŲØĩÛ Ø¨Ų âĒ@{name}âŦ",
"account.disable_notifications": "ØĸگاŲ ÚŠØąØ¯Ų Ų
Ų ŲŲگاŲ
ŲØąØŗØĒŲâŲØ§Û â@{name} ØąØ§ Ų
ØĒŲŲŲŲ ÚŠŲ",
"account.domain_blocked": "داŲ
ŲŲ Ų
ØŗدŲد شد",
@@ -31,13 +32,13 @@
"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} ŲžÛâÚ¯ÛØąŲدŲ}}",
"account.following": "ŲžÛ Ų
ÛâÚ¯ÛØąÛد",
"account.following_counter": "{count, plural, one {{counter} ŲžÛâÚ¯ØąŲØĒŲ} other {{counter} ŲžÛâÚ¯ØąŲØĒŲ}}",
"account.follows.empty": "اÛŲ ÚŠØ§ØąØ¨Øą ŲŲŲØ˛ ŲžÛâÚ¯ÛØą ÚŠØŗÛ ŲÛØŗØĒ.",
- "account.follows_you": "ŲžÛâÚ¯ÛØąØĒاŲ اØŗØĒ",
"account.go_to_profile": "ØąŲØĒŲ بŲ ŲŲ
اÛŲ",
"account.hide_reblogs": "ŲŲŲØĒŲ ØĒŲŲÛØĒâŲØ§Û â@{name}",
"account.in_memoriam": "بŲ ÛادبŲد.",
@@ -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": "اŲØŗداد",
@@ -191,6 +192,7 @@
"conversation.mark_as_read": "ØšŲاŲ
ØĒâÚ¯Ø°Ø§ØąÛ Ø¨Ų ØšŲŲاŲ ØŽŲاŲدŲ شدŲ",
"conversation.open": "دÛدŲ Ú¯ŲØĒÚ¯Ų",
"conversation.with": "با {names}",
+ "copy_icon_button.copied": "Ø¯Øą Ø¨ØąÛدŲâداŲ ØąŲŲŲØ´ØĒ شد",
"copypaste.copied": "ØąŲŲŲØ´ØĒ شد",
"copypaste.copy_to_clipboard": "ØąŲŲŲØ´ØĒ بŲ ØĒØŽØĒŲâÚ¯ÛØąŲ",
"directory.federated": "Ø§Ø˛ ÚŠØ§ØąØŗØ§Ø˛ŲØ§Û Ø´Ųا؎ØĒŲâشدŲ",
@@ -405,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": "ŲاÚŲâŲØ§Û ØŽŲ
ŲØ´",
@@ -486,6 +487,8 @@
"onboarding.profile.note_hint": "Ų
ÛâØĒŲاŲÛد اŲØąØ§Ø¯ دÛÚ¯Øą ØąØ§ @ŲاŲ
âØ¨ØąØ¯Ų Ûا #Ø¨ØąÚØŗب Ø¨Ø˛ŲÛدâĻ",
"onboarding.profile.save_and_continue": "Ø°ØŽÛØąŲ ÚŠŲ Ų اداŲ
Ų بدŲ",
"onboarding.profile.title": "ØĒŲظÛŲ
ŲŲ
اÛŲ",
+ "onboarding.profile.upload_avatar": "Ø¨Ø§Ø˛Ú¯Ø°Ø§ØąÛ ØĒØĩŲÛØą ŲŲ
اÛŲ",
+ "onboarding.profile.upload_header": "Ø¨Ø§ØąÚ¯Ø°Ø§ØąÛ ØĒØĩŲÛØą ØŗØąØ¯Øą ŲŲ
اÛŲ",
"onboarding.share.lead": "Ø¨Ú¯Ø°Ø§ØąÛد اŲØąØ§Ø¯ بداŲŲد ÚÚ¯ŲŲŲ Ų
ÛâØĒŲاŲŲد Ø¯Øą Ų
اØŗØĒادŲŲ بÛابŲدØĒاŲ!",
"onboarding.share.message": "Ų
Ų {username} ØąŲÛ #Ų
اØŗØĒŲدŲŲ ŲØŗØĒŲ
! Ų
ØąØ§ Ø¯Øą {url} ŲžÛâبگÛØąÛد",
"onboarding.share.next_steps": "گاŲ
âŲØ§Û Ų
Ų
ÚŠŲ بؚدÛ:",
@@ -519,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": "ŲžÛØ´ŲŲادشدŲ",
@@ -545,6 +548,7 @@
"relative_time.seconds": "{number} ØĢاŲÛŲ",
"relative_time.today": "اŲ
ØąŲØ˛",
"reply_indicator.cancel": "ŲØēŲ",
+ "reply_indicator.poll": "ŲØ¸ØąØŗŲØŦÛ",
"report.block": "اŲØŗداد",
"report.block_explanation": "Ø´Ų
ا ŲØąØŗØĒŲâŲاÛشاŲ ØąØ§ ŲØŽŲاŲÛد دÛد. ØĸŲâŲا ŲŲ
ÛâØĒŲاŲŲد ŲØąØŗØĒŲâŲاÛØĒاŲ ØąØ§ ببÛŲŲد Ûا Ø´Ų
ا ØąØ§ ŲžÛâبگÛØąŲد. ØĸŲŲا Ų
ÛâØĒŲاŲŲد بگŲÛŲد ÚŠŲ Ų
ØŗدŲد شدŲâاŲد.",
"report.categories.legal": "ØŲŲŲÛ",
@@ -600,6 +604,7 @@
"search.quick_action.status_search": "ŲØąØŗØĒŲâŲØ§Û ØŦŲØą با {x}",
"search.search_or_paste": "ØŦØŗØĒâŲØŦŲ Ûا ØŦاÛÚ¯Ø°Ø§ØąÛ ŲشاŲÛ",
"search_popout.full_text_search_disabled_message": "ØąŲÛ {domain} Ų
ŲØŦŲد ŲÛØŗØĒ.",
+ "search_popout.full_text_search_logged_out_message": "ØĒŲŲا Ø˛Ų
اŲÛ ÚŠŲ ŲØ§ØąØ¯ شدŲâاÛد Ø¯ØąØ¯ØŗØĒØąØŗ اØŗØĒ.",
"search_popout.language_code": "ڊد Ø˛Ø¨Ø§Ų اÛØ˛Ų",
"search_popout.options": "Ú¯Ø˛ÛŲŲâŲØ§Û ØŦØŗØĒâŲØŦŲ",
"search_popout.quick_actions": "ÚŠŲØ´âŲØ§Û ØŗØąÛØš",
@@ -707,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 e99de4d03a5..7b98f998363 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",
@@ -32,13 +32,13 @@
"account.featured_tags.last_status_never": "Ei julkaisuja",
"account.featured_tags.title": "Käyttäjän {name} esillä pidettävät aihetunnisteet",
"account.follow": "Seuraa",
+ "account.follow_back": "Seuraa takaisin",
"account.followers": "Seuraajat",
"account.followers.empty": "Kukaan ei seuraa tätä käyttäjää vielä.",
"account.followers_counter": "{count, plural, one {{counter} seuraaja} other {{counter} seuraajaa}}",
"account.following": "Seuratut",
"account.following_counter": "{count, plural, one {{counter} seurattu} other {{counter} seurattua}}",
"account.follows.empty": "Tämä käyttäjä ei vielä seuraa ketään.",
- "account.follows_you": "Seuraa sinua",
"account.go_to_profile": "Avaa profiili",
"account.hide_reblogs": "Piilota käyttäjän @{name} tehostukset",
"account.in_memoriam": "Muistoissamme.",
@@ -53,6 +53,7 @@
"account.mute_notifications_short": "Mykistä ilmoitukset",
"account.mute_short": "Mykistä",
"account.muted": "Mykistetty",
+ "account.mutual": "Seuraatte toisianne",
"account.no_bio": "Kuvausta ei ole annettu.",
"account.open_original_page": "Avaa alkuperäinen sivu",
"account.posts": "Julkaisut",
@@ -88,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.",
@@ -145,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ä",
@@ -192,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",
@@ -407,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",
@@ -482,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",
@@ -525,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",
@@ -550,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",
@@ -606,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",
@@ -714,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/fil.json b/app/javascript/mastodon/locales/fil.json
new file mode 100644
index 00000000000..ec27c8f60e2
--- /dev/null
+++ b/app/javascript/mastodon/locales/fil.json
@@ -0,0 +1,144 @@
+{
+ "about.blocks": "Mga pinatimping server",
+ "about.contact": "Kontak:",
+ "about.disclaimer": "Ang Mastodon ay software na malaya at bukas-na-pinagmulan, at isang tatak-pangkalakal ng Mastodon gGmbH.",
+ "about.domain_blocks.no_reason_available": "Hindi makuha ang dahilan",
+ "about.domain_blocks.silenced.title": "Limitado",
+ "about.domain_blocks.suspended.title": "Suspendido",
+ "about.rules": "Mga alituntunin ng server",
+ "account.account_note_header": "Tala",
+ "account.add_or_remove_from_list": "I-dagdag o tanggalin mula sa mga listahan",
+ "account.badges.bot": "Pakusa",
+ "account.badges.group": "Pangkat",
+ "account.block": "Hadlangan si @{name}",
+ "account.block_domain": "Hadlangan ang domain na {domain}",
+ "account.block_short": "Hadlangan",
+ "account.blocked": "Hinadlangan",
+ "account.browse_more_on_origin_server": "Tingnan pa sa pangunahing profile",
+ "account.cancel_follow_request": "I-kansela ang pagsunod",
+ "account.copy": "I-sipi ang kawing sa profile",
+ "account.direct": "Palihim banggitin si @{name}",
+ "account.disable_notifications": "I-tigil ang pagpapaalam sa akin tuwing nagpopost si @{name}",
+ "account.domain_blocked": "Hinadlangan ang domain",
+ "account.edit_profile": "Baguhin ang profile",
+ "account.enable_notifications": "Ipaalam sa akin kapag nag-post si @{name}",
+ "account.endorse": "I-tampok sa profile",
+ "account.featured_tags.last_status_at": "Huling post noong {date}",
+ "account.featured_tags.last_status_never": "Walang mga post",
+ "account.featured_tags.title": "Nakatampok na hashtag ni {name}",
+ "account.follow": "Sundan",
+ "account.followers": "Mga tagasunod",
+ "account.followers.empty": "Wala pang sumusunod sa tagagamit na ito.",
+ "account.following": "Sinusundan",
+ "account.follows.empty": "Wala pang sinusundan ang tagagamit na ito.",
+ "account.go_to_profile": "Pumunta sa profile",
+ "account.hide_reblogs": "Itago ang mga pagpapalakas mula sa {name}",
+ "account.in_memoriam": "Sa Alaala Ni.",
+ "account.joined_short": "Sumali",
+ "account.languages": "Palitan ang mga nakasumuscribing wika",
+ "account.link_verified_on": "Sinuri ang pagmamay-ari ng kawing ito sa {date}",
+ "account.locked_info": "Nakakandado ang pagsasariling kalagayan ng account na ito. Manomano sinusuri ng may-ari kung sino ang maaaring sumunod sa kanya.",
+ "account.media": "Medya",
+ "account.mention": "Banggitin si @{name}",
+ "account.moved_to": "Ipinahihiwatig ni {name} na ang kanilang bagong account ngayon ay:",
+ "bundle_column_error.error.title": "Naku!",
+ "bundle_column_error.network.body": "Nagkaroon ng kamalian habang sinusubukang i-karga ang pahinang ito. Maaaring dahil ito sa pansamantalang problema ng iyong koneksyon sa internet o ang server na ito.",
+ "bundle_column_error.network.title": "Kamaliang network",
+ "bundle_column_error.retry": "Subukang muli",
+ "bundle_column_error.return": "Bumalik sa tahanan",
+ "bundle_column_error.routing.body": "Hindi mahanap ang hiniling na pahina. Sigurado ka ba na ang URL sa address bar ay tama?",
+ "bundle_column_error.routing.title": "404",
+ "bundle_modal_error.close": "I-sara",
+ "bundle_modal_error.message": "May nangyaring mali habang kinakarga ang bahaging ito.",
+ "bundle_modal_error.retry": "Subukang muli",
+ "closed_registrations.other_server_instructions": "Dahil desentralisado ang Mastodon, pwede kang gumawa ng account sa iba pang server at makipag-ugnayan pa rin dito.",
+ "closed_registrations_modal.description": "Hindi pa pwedeng gumawa ng account sa {domain}, pero tandaan na hindi mo kailangan ng account partikular sa {domain} para gamitin ang Mastodon.",
+ "closed_registrations_modal.find_another_server": "Maghanap ng iba pang server",
+ "closed_registrations_modal.preamble": "Dahil desentralisado ang Mastodon, kahit saan ka pa gumawa ng account, maaari ka pa ring sumunod at makipag-ugnayan sa kahit-sino rito sa server na ito. Pwede mo pang i-host nang pasarili!",
+ "closed_registrations_modal.title": "Pagrerehistro sa Mastodon",
+ "column.about": "Tungkol dito",
+ "column.blocks": "Nakahadlang na mga tagagamit",
+ "column.bookmarks": "Mga bookmark",
+ "column.community": "Lokal na timeline",
+ "column.direct": "Mga palihim na banggit",
+ "column.directory": "Tingnan ang mga profile",
+ "column.domain_blocks": "Nakahadlang na mga domain",
+ "column.favourites": "Mga paborito",
+ "column.firehose": "Mga live feed",
+ "column.follow_requests": "Mga hiling para sundan",
+ "column.home": "Tahanan",
+ "column.lists": "Mga listahan",
+ "column.mutes": "Mga pinatahimik na tagagamit",
+ "column.notifications": "Mga abiso",
+ "column.pins": "Mga nakapaskil na post",
+ "column.public": "Pinagsamang timeline",
+ "column_back_button.label": "Bumalik",
+ "column_header.hide_settings": "I-tago ang mga setting",
+ "column_header.moveLeft_settings": "I-lipat ang hanay pakaliwa",
+ "column_header.moveRight_settings": "I-lipat ang hanay pakanan",
+ "column_header.pin": "I-paskil",
+ "column_header.show_settings": "Ipakita ang mga setting",
+ "column_header.unpin": "Tanggalin sa pagkapaskil",
+ "column_subheading.settings": "Mga setting",
+ "community.column_settings.local_only": "Lokal lamang",
+ "community.column_settings.media_only": "Medya Lamang",
+ "community.column_settings.remote_only": "Liblib lamang",
+ "compose.language.change": "Magpalit ng wika",
+ "compose.language.search": "Maghanap ng mga wika...",
+ "compose.published.body": "Nailathala ang post.",
+ "compose.published.open": "Buksan",
+ "compose.saved.body": "Nai-save ang post.",
+ "compose_form.direct_message_warning_learn_more": "Matuto pa",
+ "compose_form.encryption_warning": "Ang mga post sa Mastodon ay hindi naka-encrypt nang dulo-dulo. Huwag magbahagi ng anumang sensitibong impormasyon sa Mastodon.",
+ "compose_form.hashtag_warning": "Hindi maililista ang post na ito sa anumang hashtag dahil hindi ito nakapubliko. Mga nakapublikong post lamang ang mahahanap ayon sa hashtag.",
+ "copy_icon_button.copied": "Sinipi sa clipboard",
+ "copypaste.copied": "Sinipi",
+ "copypaste.copy_to_clipboard": "I-sipi sa clipboard",
+ "directory.federated": "Mula sa kilalang fediverse",
+ "directory.local": "Mula sa {domain} lamang",
+ "directory.new_arrivals": "Mga bagong dating",
+ "directory.recently_active": "Kamakailang aktibo",
+ "disabled_account_banner.account_settings": "Mga setting ng account",
+ "disabled_account_banner.text": "Ang iyong account na {disabledAccount} ay hindi pinapagana ngayon.",
+ "dismissable_banner.community_timeline": "Ito ang mga pinakamakailang nakapublikong post mula sa mga taong ang mga account hinohost ng {domain}.",
+ "dismissable_banner.dismiss": "Alisin",
+ "dismissable_banner.explore_links": "Ito ang mga balitang kwento na pinaka-binabahagi sa social web ngayon. Ang mga mas bagong balitang kwento na pinost ng mas marami pang mga iba't ibang tao ay tinataasan ng antas.",
+ "dismissable_banner.explore_statuses": "Ito ang mga sumisikat na mga post sa iba't ibang bahagi ng social web ngayon. Ang mga mas bagong post na mas marami ang mga pagpapalakas at paborito ay tinataasan ng antas.",
+ "dismissable_banner.explore_tags": "Ito ang mga sumisikat na mga hashtag sa iba't ibang bahagi ng social web ngayon. Ang mga hashtag ginagamit ng mas maraming mga iba't ibang tao ay tinataasan ng antas.",
+ "dismissable_banner.public_timeline": "Ito ang mga pinakamakailang nakapublikong post mula sa mga taong nasa social web na sinusundan ng mga tao sa {domain}.",
+ "embed.instructions": "I-embed ang post na ito sa iyong pook-sapot sa pamamagitan ng pagsipi ng kodigo sa ilalim.",
+ "embed.preview": "Ito ang magiging itsura:",
+ "emoji_button.activity": "Aktibidad",
+ "emoji_button.clear": "Linisin",
+ "emoji_button.custom": "Pasadya",
+ "emoji_button.flags": "Mga watawat",
+ "emoji_button.food": "Pagkain at Inumin",
+ "emoji_button.label": "Maglagay ng emoji",
+ "emoji_button.nature": "Kalikasan",
+ "emoji_button.not_found": "Walang mahanap na mga tugmang emoji",
+ "emoji_button.objects": "Mga bagay",
+ "emoji_button.people": "Mga tao",
+ "emoji_button.recent": "Madalas na ginagamit",
+ "emoji_button.search": "Maghanap...",
+ "emoji_button.search_results": "Resulta ng paghahanap",
+ "emoji_button.symbols": "Mga tanda",
+ "emoji_button.travel": "Paglakbay at Mga Lugar",
+ "empty_column.account_hides_collections": "Pinili ng tagagamit na ito na hindi makuha ang impormasyong ito",
+ "empty_column.account_suspended": "Sinuspinde ang account",
+ "empty_column.account_timeline": "Walang mga post dito!",
+ "empty_column.account_unavailable": "Hindi makuha ang profile",
+ "empty_column.blocks": "Hindi ka pa naghahadlang ng sinumang tagagamit.",
+ "empty_column.bookmarked_statuses": "Wala ka pang naka-bookmark na post. Kapag nag-bookmark ka ng isa, makikita yun dito.",
+ "empty_column.community": "Walang laman ang lokal na timeline. Magsulat ng anuman papubliko para makaandar tayo!",
+ "empty_column.direct": "Wala ka pang mga palihim na banggit. Kapag nagpadala o tumanggap ka ng isa, makikita yun dito.",
+ "empty_column.domain_blocks": "Wala pang nakahadlang na domain.",
+ "empty_column.explore_statuses": "Wala pang sumisikat sa ngayon. Balik na lang sa muli!",
+ "empty_column.favourited_statuses": "Wala ka pang mga paboritong post. Kapag nag-paborito ka ng isa, makikita yun dito.",
+ "empty_column.favourites": "Wala pang may paborito ng post na ito. Kung may sinumang nagpaborito, makikita sila rito.",
+ "empty_column.follow_requests": "Wala ka pang mga hiling para sundan ka. Kapag nakatanggap ka ng isa, makikita yun dito.",
+ "empty_column.followed_tags": "Wala ka pang sinusunod na hashtag. Kapag may sinundan ka na, makikita sila rito.",
+ "empty_column.hashtag": "Wala pang laman ang hashtag na ito.",
+ "empty_column.home": "Walang laman ang timeline ng tahanan mo! Sumunod sa marami pang tao para mapunan ito.",
+ "empty_column.list": "Wala pang laman ang listahang ito. Kapag naglathala ng mga bagong post ang mga miyembro ng listahang ito, makikita iyon dito.",
+ "empty_column.lists": "Wala ka pang mga listahan. Kapag gumawa ka ng isa, makikita yun dito."
+}
diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json
index 45fafd15dc0..a4c5296086f 100644
--- a/app/javascript/mastodon/locales/fo.json
+++ b/app/javascript/mastodon/locales/fo.json
@@ -32,13 +32,13 @@
"account.featured_tags.last_status_never": "Einki uppslag",
"account.featured_tags.title": "TvÃkrossar hjÃĄ {name}",
"account.follow": "Fylg",
+ "account.follow_back": "Fylg aftur",
"account.followers": "Fylgjarar",
"account.followers.empty": "Ongar fylgjarar enn.",
"account.followers_counter": "{count, plural, one {{counter} Fylgjari} other {{counter} Fylgjarar}}",
"account.following": "Fylgir",
"account.following_counter": "{count, plural, one {{counter} fylgir} other {{counter} fylgja}}",
"account.follows.empty": "Hesin brÃēkari fylgir ongum enn.",
- "account.follows_you": "Fylgir tÃĻr",
"account.go_to_profile": "Far til vanga",
"account.hide_reblogs": "Fjal lyft frÃĄ @{name}",
"account.in_memoriam": "In memoriam.",
@@ -53,6 +53,7 @@
"account.mute_notifications_short": "Sløkk frÃĄboðanir",
"account.mute_short": "Doyv",
"account.muted": "Sløkt/ur",
+ "account.mutual": "SÃnamillum",
"account.no_bio": "LÃŊsing vantar.",
"account.open_original_page": "Opna upprunasÃðuna",
"account.posts": "Uppsløg",
@@ -88,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.",
@@ -147,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",
@@ -392,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",
@@ -406,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ð",
@@ -482,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:",
@@ -515,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",
@@ -540,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",
@@ -704,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 e2067cc4606..66a7da6d151 100644
--- a/app/javascript/mastodon/locales/fr-QC.json
+++ b/app/javascript/mastodon/locales/fr-CA.json
@@ -32,13 +32,13 @@
"account.featured_tags.last_status_never": "Aucune publication",
"account.featured_tags.title": "Hashtags inclus de {name}",
"account.follow": "Suivre",
+ "account.follow_back": "S'abonner en retour",
"account.followers": "abonnÃŠÂˇe¡s",
"account.followers.empty": "Personne ne suit ce compte pour l'instant.",
"account.followers_counter": "{count, plural, one {{counter} AbonnÃŠÂˇe} other {{counter} AbonnÃŠÂˇe¡s}}",
"account.following": "AbonnÃŠÂˇe",
"account.following_counter": "{count, plural, one {{counter} Abonnement} other {{counter} Abonnements}}",
"account.follows.empty": "Ce compte ne suit personne prÊsentement.",
- "account.follows_you": "Vous suit",
"account.go_to_profile": "Voir ce profil",
"account.hide_reblogs": "Masquer les boosts de @{name}",
"account.in_memoriam": "En souvenir de",
@@ -53,6 +53,7 @@
"account.mute_notifications_short": "Rendre les notifications muettes",
"account.mute_short": "Rendre muet",
"account.muted": "MasquÃŠÂˇe",
+ "account.mutual": "Mutuel",
"account.no_bio": "Description manquante.",
"account.open_original_page": "Ouvrir la page d'origine",
"account.posts": "Publications",
@@ -88,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.",
@@ -145,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",
@@ -407,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",
@@ -525,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Ê",
@@ -714,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 03b656cc473..2d0fa3b7ddf 100644
--- a/app/javascript/mastodon/locales/fr.json
+++ b/app/javascript/mastodon/locales/fr.json
@@ -32,13 +32,13 @@
"account.featured_tags.last_status_never": "Aucun message",
"account.featured_tags.title": "Les hashtags en vedette de {name}",
"account.follow": "Suivre",
+ "account.follow_back": "S'abonner en retour",
"account.followers": "AbonnÃŠÂˇe¡s",
"account.followers.empty": "Personne ne suit cet¡te utilisateur¡rice pour lâinstant.",
"account.followers_counter": "{count, plural, one {{counter} AbonnÃŠÂˇe} other {{counter} AbonnÃŠÂˇe¡s}}",
"account.following": "Abonnements",
"account.following_counter": "{count, plural, one {{counter} Abonnement} other {{counter} Abonnements}}",
"account.follows.empty": "Cet¡te utilisateur¡rice ne suit personne pour lâinstant.",
- "account.follows_you": "Vous suit",
"account.go_to_profile": "Aller au profil",
"account.hide_reblogs": "Masquer les partages de @{name}",
"account.in_memoriam": "En mÊmoire de.",
@@ -53,6 +53,7 @@
"account.mute_notifications_short": "DÊsactiver les alertes",
"account.mute_short": "Mettre en sourdine",
"account.muted": "MasquÃŠÂˇe",
+ "account.mutual": "Mutuel",
"account.no_bio": "Aucune description fournie.",
"account.open_original_page": "Ouvrir la page d'origine",
"account.posts": "Messages",
@@ -88,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.",
@@ -145,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",
@@ -407,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",
@@ -525,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Ê",
@@ -702,7 +684,7 @@
"timeline_hint.resources.followers": "Les abonnÊs",
"timeline_hint.resources.follows": "Les abonnements",
"timeline_hint.resources.statuses": "Messages plus anciens",
- "trends.counter_by_accounts": "{count, plural, one {{counter} personne} other {{counter} personnes}} au cours {days, plural, one {des dernières 24h} other {des {days} derniers jours}}",
+ "trends.counter_by_accounts": "{count, plural, one {{counter} pers.} other {{counter} pers.}} sur {days, plural, one {les dernières 24h} other {les {days} derniers jours}}",
"trends.trending_now": "Tendance en ce moment",
"ui.beforeunload": "Votre brouillon sera perdu si vous quittez Mastodon.",
"units.short.billion": "{count}Md",
@@ -714,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 2ec4a53bfd9..d5f22d2ee10 100644
--- a/app/javascript/mastodon/locales/fy.json
+++ b/app/javascript/mastodon/locales/fy.json
@@ -32,13 +32,13 @@
"account.featured_tags.last_status_never": "Gjin berjochten",
"account.featured_tags.title": "Utljochte hashtags fan {name}",
"account.follow": "Folgje",
+ "account.follow_back": "Weromfolgje",
"account.followers": "Folgers",
"account.followers.empty": "Noch net ien folget dizze brÃģker.",
"account.followers_counter": "{count, plural, one {{counter} folger} other {{counter} folgers}}",
"account.following": "Folgjend",
"account.following_counter": "{count, plural, one {{counter} folgjend} other {{counter} folgjend}}",
"account.follows.empty": "Dizze brÃģker folget noch net ien.",
- "account.follows_you": "Folget jo",
"account.go_to_profile": "Gean nei profyl",
"account.hide_reblogs": "Boosts fan @{name} ferstopje",
"account.in_memoriam": "Yn memoriam.",
@@ -53,6 +53,7 @@
"account.mute_notifications_short": "Meldingen negearje",
"account.mute_short": "Negearje",
"account.muted": "Negearre",
+ "account.mutual": "Jimme folgje inoar",
"account.no_bio": "Gjin omskriuwing opjÃģn.",
"account.open_original_page": "Orizjinele side iepenje",
"account.posts": "Berjochten",
@@ -88,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.",
@@ -145,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",
@@ -407,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",
@@ -525,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",
@@ -714,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 ee6b44c8849..855a27d0579 100644
--- a/app/javascript/mastodon/locales/ga.json
+++ b/app/javascript/mastodon/locales/ga.json
@@ -35,7 +35,6 @@
"account.following": "Ag leanÃēint",
"account.following_counter": "{count, plural, one {Ag leanÃēint cÃēntas amhÃĄin} other {Ag leanÃēint {counter} cÃēntas}}",
"account.follows.empty": "NÃ leanann an t-ÃēsÃĄideoir seo duine ar bith fÃŗs.",
- "account.follows_you": "Do do leanÃēint",
"account.go_to_profile": "TÊigh go dtà prÃŗifÃl",
"account.hide_reblogs": "Folaigh moltaà Ãŗ @{name}",
"account.in_memoriam": "CuimhneachÃĄn.",
@@ -77,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Ã.",
@@ -128,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",
@@ -326,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Ã",
@@ -402,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âĻ",
@@ -530,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 91333c1a0a5..0c7ef79cd8b 100644
--- a/app/javascript/mastodon/locales/gd.json
+++ b/app/javascript/mastodon/locales/gd.json
@@ -37,7 +37,6 @@
"account.following": "Aâ leantainn",
"account.following_counter": "{count, plural, one {Aâ leantainn {counter}} two {Aâ leantainn {counter}} few {Aâ leantainn {counter}} other {Aâ leantainn {counter}}}",
"account.follows.empty": "Chan eil an cleachdaiche seo aâ leantainn neach sam bith fhathast.",
- "account.follows_you": "Gad leantainn",
"account.go_to_profile": "Tadhail air aâ phrÃ˛ifil",
"account.hide_reblogs": "Falaich na brosnachaidhean o @{name}",
"account.in_memoriam": "Mar chuimhneachan.",
@@ -87,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.",
@@ -144,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",
@@ -403,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",
@@ -510,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",
@@ -697,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 08d7d49776a..ffd01a547d7 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,13 +32,13 @@
"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}}",
"account.following": "Seguindo",
"account.following_counter": "{count, plural, one {{counter} Seguindo} other {{counter} Seguindo}}",
"account.follows.empty": "Esta usuaria aÃnda non segue a ninguÊn.",
- "account.follows_you": "SÊguete",
"account.go_to_profile": "Ir ao perfil",
"account.hide_reblogs": "Agochar promociÃŗns de @{name}",
"account.in_memoriam": "Lembranzas.",
@@ -53,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",
@@ -88,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.",
@@ -145,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",
@@ -183,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",
@@ -203,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.",
@@ -239,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.",
@@ -345,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",
@@ -382,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",
@@ -407,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",
@@ -479,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",
@@ -493,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!",
@@ -525,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",
@@ -572,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",
@@ -714,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 dda92c5c9a4..d88a8c49c36 100644
--- a/app/javascript/mastodon/locales/he.json
+++ b/app/javascript/mastodon/locales/he.json
@@ -32,13 +32,13 @@
"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 {×ĸ××§× ×××} other {{counter} ×ĸ×ק×××}}",
"account.following": "× ×ĸק×××",
"account.following_counter": "{count, plural,one {×ĸ××§× ×××¨× {counter}}other {×ĸ××§× ×××¨× {counter}}}",
"account.follows.empty": "×׊×Ē×׊ ×× ×ĸ×××× ×× ×ĸ××§× ×××¨× ××Ŗ ×××.",
- "account.follows_you": "×××ĸ×§× ××ר××",
"account.go_to_profile": "××ĸ×ר ×פר×פ××",
"account.hide_reblogs": "××ץ×Ē×ר ×××××××× ×××Ē @{name}",
"account.in_memoriam": "פר×פ×× ××ר××.",
@@ -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,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": "××ץ××",
@@ -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,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": "×××××Ĩ",
@@ -550,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": "××ק×",
@@ -714,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 387941b5e47..42f4ca4efab 100644
--- a/app/javascript/mastodon/locales/hi.json
+++ b/app/javascript/mastodon/locales/hi.json
@@ -37,7 +37,6 @@
"account.following": "ā¤ĢāĨā¤˛āĨā¤ā¤ā¤",
"account.following_counter": "{count, plural, one {{counter} ā¤¨ā¤ŋā¤ŽāĨā¤¨ā¤˛ā¤ŋā¤ā¤ŋā¤¤} other {{counter} ā¤¨ā¤ŋā¤ŽāĨā¤¨ā¤˛ā¤ŋā¤ā¤ŋā¤¤}}",
"account.follows.empty": "ā¤¯ā¤š ā¤¯āĨāĨā¤°āĨ ā¤
ā¤āĨ ā¤¤ā¤ ā¤ā¤ŋā¤¸āĨ ā¤āĨ ā¤ĢāĨā¤˛āĨ ā¤¨ā¤šāĨā¤ ā¤ā¤°ā¤¤ā¤ž ā¤šāĨāĨ¤",
- "account.follows_you": "ā¤ā¤Ēā¤āĨ ā¤ĢāĨā¤˛āĨ ā¤ā¤°ā¤¤ā¤ž ā¤šāĨ",
"account.go_to_profile": "ā¤ĒāĨā¤°āĨā¤Ģā¤žā¤ā¤˛ ā¤ŽāĨā¤ ā¤ā¤žā¤ā¤",
"account.hide_reblogs": "@{name} ā¤āĨ ā¤ŦāĨā¤¸āĨā¤ ā¤āĨā¤Ēā¤žā¤ā¤",
"account.in_memoriam": "ā¤¯ā¤žā¤Ļ ā¤ŽāĨā¤",
@@ -84,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": "ā¤
ā¤¨āĨā¤°āĨā¤§ā¤ŋā¤¤ ā¤ĒāĨā¤ ā¤ĒāĨā¤°ā¤¸āĨā¤¤āĨā¤¤ ā¤¨ā¤šāĨā¤ ā¤ā¤ŋā¤¯ā¤ž ā¤ā¤ž ā¤¸ā¤ā¤žāĨ¤ ā¤¯ā¤š ā¤šā¤Žā¤žā¤°āĨ ā¤āĨā¤Ą ā¤ŽāĨā¤ ā¤Ŧā¤ ā¤¯ā¤ž ā¤ŦāĨā¤°ā¤žā¤ā¤ā¤ŧā¤° ā¤¸ā¤ā¤ā¤¤ā¤¤ā¤ž ā¤¸ā¤Žā¤¸āĨā¤¯ā¤ž ā¤āĨ ā¤ā¤žā¤°ā¤Ŗ ā¤šāĨ ā¤¸ā¤ā¤¤ā¤ž ā¤šāĨāĨ¤",
@@ -139,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": "ā¤ŦāĨā¤˛āĨā¤",
@@ -371,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": "ā¤ĩā¤žā¤°ā¤ŋā¤¤ ā¤ļā¤ŦāĨā¤Ļ",
@@ -387,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": "ā¤Ēā¤¸ā¤ā¤ĻāĨā¤Ļā¤ž:",
@@ -400,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": "ā¤āĨā¤¨ā¤žā¤ĩ ā¤Ēā¤°ā¤ŋā¤Ŗā¤žā¤Ž",
@@ -417,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:",
@@ -436,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 {# ā¤¸āĨā¤ā¤ā¤Ą}} ā¤Ēā¤šā¤˛āĨ",
@@ -455,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",
@@ -481,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} ā¤ā¤ž ā¤ā¤¤āĨā¤¤ā¤° ā¤ĻāĨā¤",
@@ -503,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 6da7d6cd8df..cada365fc86 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,18 +30,20 @@
"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}}",
"account.following": "Pratim",
"account.following_counter": "{count, plural, one {{counter} praÄeni} few{{counter} praÄena} other {{counter} praÄenih}}",
"account.follows.empty": "Korisnik/ca joÅĄ ne prati nikoga.",
- "account.follows_you": "Prati te",
"account.go_to_profile": "Idi na profil",
"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",
@@ -41,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}}",
@@ -55,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.",
@@ -67,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.",
@@ -115,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",
@@ -172,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",
@@ -212,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}",
@@ -319,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",
@@ -388,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",
@@ -534,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 9bef814178b..31bca5652bc 100644
--- a/app/javascript/mastodon/locales/hu.json
+++ b/app/javascript/mastodon/locales/hu.json
@@ -13,7 +13,7 @@
"about.rules": "KiszolgÃĄlÃŗ szabÃĄlyai",
"account.account_note_header": "FeljegyzÊs",
"account.add_or_remove_from_list": "HozzÃĄadÃĄs vagy eltÃĄvolÃtÃĄs a listÃĄkrÃŗl",
- "account.badges.bot": "Bot",
+ "account.badges.bot": "AutomatizÃĄlt",
"account.badges.group": "Csoport",
"account.block": "@{name} letiltÃĄsa",
"account.block_domain": "Domain blokkolÃĄsa: {domain}",
@@ -32,13 +32,13 @@
"account.featured_tags.last_status_never": "Nincs bejegyzÊs",
"account.featured_tags.title": "{name} kiemelt hashtagjei",
"account.follow": "KÃļvetÊs",
+ "account.follow_back": "ViszontkÃļvetÊs",
"account.followers": "KÃļvetÅ",
"account.followers.empty": "Ezt a felhasznÃĄlÃŗt mÊg senki sem kÃļveti.",
"account.followers_counter": "{count, plural, one {{counter} KÃļvetÅ} other {{counter} KÃļvetÅ}}",
"account.following": "KÃļvetve",
"account.following_counter": "{count, plural, one {{counter} KÃļvetett} other {{counter} KÃļvetett}}",
"account.follows.empty": "Ez a felhasznÃĄlÃŗ mÊg senkit sem kÃļvet.",
- "account.follows_you": "KÃļvet tÊged",
"account.go_to_profile": "UgrÃĄs a profilhoz",
"account.hide_reblogs": "@{name} megtolÃĄsainak elrejtÊse",
"account.in_memoriam": "EmlÊkÃŧnkben.",
@@ -53,6 +53,7 @@
"account.mute_notifications_short": "ÃrtesÃtÊsek nÊmÃtÃĄsa",
"account.mute_short": "NÊmÃtÃĄs",
"account.muted": "NÊmÃtva",
+ "account.mutual": "KÃļlcsÃļnÃļs",
"account.no_bio": "LeÃrÃĄs nincs megadva.",
"account.open_original_page": "Eredeti oldal megnyitÃĄsa",
"account.posts": "BejegyzÊsek",
@@ -63,8 +64,8 @@
"account.share": "@{name} profiljÃĄnak megosztÃĄsa",
"account.show_reblogs": "@{name} megtolÃĄsainak mutatÃĄsa",
"account.statuses_counter": "{count, plural, one {{counter} BejegyzÊs} other {{counter} BejegyzÊs}}",
- "account.unblock": "@{name} tiltÃĄsÃĄnak feloldÃĄsa",
- "account.unblock_domain": "{domain} domain tiltÃĄs feloldÃĄsa",
+ "account.unblock": "@{name} letiltÃĄsÃĄnak feloldÃĄsa",
+ "account.unblock_domain": "{domain} domain tiltÃĄsÃĄnak feloldÃĄsa",
"account.unblock_short": "TiltÃĄs feloldÃĄsa",
"account.unendorse": "Ne jelenjen meg a profilodon",
"account.unfollow": "KÃļvetÊs megszÃŧntetÊse",
@@ -88,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.",
@@ -138,29 +138,29 @@
"compose.language.search": "Nyelv keresÊse...",
"compose.published.body": "A bejegyzÊs publikÃĄlÃĄsra kerÃŧlt.",
"compose.published.open": "MegnyitÃĄs",
- "compose.saved.body": "A bejegyzÊs mentÊsre kerÃŧlt.",
+ "compose.saved.body": "A bejegyzÊs mentve.",
"compose_form.direct_message_warning_learn_more": "Tudj meg tÃļbbet",
- "compose_form.encryption_warning": "A bejegyzÊsek Mastodonon nem hasznÃĄlnak vÊgpontok kÃļzÃļtti titkosÃtÃĄst. Ne ossz meg semmilyen ÊrzÊkeny informÃĄciÃŗt Mastodonon.",
+ "compose_form.encryption_warning": "A bejegyzÊsek a Mastodonon nem hasznÃĄlnak vÊgpontok kÃļzti titkosÃtÃĄst. Ne ossz meg semmilyen ÊrzÊkeny informÃĄciÃŗt a Mastodonon.",
"compose_form.hashtag_warning": "Ez a bejegyzÊsed nem fog megjelenni semmilyen hashtag alatt, mivel nem nyilvÃĄnos. Csak a nyilvÃĄnos bejegyzÊsek kereshetÅk hashtaggel.",
"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": "lezÃĄrva",
+ "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 tÃļrlÊse",
+ "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.publish_form": "KÃļzzÊtÊtel",
- "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.poll.type": "StÃlus",
+ "compose_form.publish": "BejegyzÊs",
+ "compose_form.publish_form": "Ãj bejegyzÊs",
+ "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",
@@ -195,13 +195,13 @@
"copy_icon_button.copied": "A szÃļveg a vÃĄgÃŗlapra mÃĄsolva",
"copypaste.copied": "MÃĄsolva",
"copypaste.copy_to_clipboard": "MÃĄsolÃĄs vÃĄgÃŗlapra",
- "directory.federated": "Az ismert fediverzumbÃŗl",
+ "directory.federated": "Az ismert fÃļdiverzumbÃŗl",
"directory.local": "Csak {domain} tartomÃĄnybÃŗl",
"directory.new_arrivals": "Ãj csatlakozÃŗk",
"directory.recently_active": "NemrÊg aktÃv",
"disabled_account_banner.account_settings": "FiÃŗkbeÃĄllÃtÃĄsok",
"disabled_account_banner.text": "A(z) {disabledAccount} fiÃŗkod jelenleg le van tiltva.",
- "dismissable_banner.community_timeline": "Ezek a legfrissebb nyilvÃĄnos bejegyzÊsek, amelyeket {domain} tartomÃĄnyban levÅ kiszolgÃĄlÃŗ fiÃŗkjait hasznÃĄlÃŗ emberek tettek kÃļzzÊ.",
+ "dismissable_banner.community_timeline": "Ezek a legfrissebb nyilvÃĄnos bejegyzÊsek, amelyeket a(z) {domain} kiszolgÃĄlÃŗ fiÃŗkjait hasznÃĄlÃŗ emberek tettÊk kÃļzzÊ.",
"dismissable_banner.dismiss": "ElvetÊs",
"dismissable_banner.explore_links": "Jelenleg ezekrÅl a hÃrekrÅl beszÊlgetnek az ezen Ês a kÃļzpontosÃtÃĄs nÊlkÃŧli hÃĄlÃŗzat tÃļbbi kiszolgÃĄlÃŗjÃĄn lÊvÅ emberek.",
"dismissable_banner.explore_statuses": "Ezek jelenleg nÊpszerÅąvÊ vÃĄlÃŗ bejegyzÊsek a hÃĄlÃŗ kÃŧlÃļnbÃļzÅ szegleteibÅl. Az Ãējabb vagy tÃļbb megtolÃĄssal rendelkezÅ bejegyzÊseket, illetve a kedvencnek jelÃļlÊssel rendelkezÅeket rangsoroljuk elÅrÊbb.",
@@ -216,14 +216,14 @@
"emoji_button.food": "Ãtel Ês Ital",
"emoji_button.label": "Emodzsi beszÃērÃĄsa",
"emoji_button.nature": "TermÊszet",
- "emoji_button.not_found": "Nincsenek emodzsik!! (â¯Â°âĄÂ°īŧâ¯ī¸ĩ âģââģ",
+ "emoji_button.not_found": "Nem talÃĄlhatÃŗk emodzsik",
"emoji_button.objects": "TÃĄrgyak",
"emoji_button.people": "Emberek",
"emoji_button.recent": "Gyakran hasznÃĄlt",
"emoji_button.search": "KeresÊs...",
"emoji_button.search_results": "KeresÊsi talÃĄlatok",
"emoji_button.symbols": "SzimbÃŗlumok",
- "emoji_button.travel": "UtazÃĄs Ês Helyek",
+ "emoji_button.travel": "UtazÃĄs Ês helyek",
"empty_column.account_hides_collections": "Ez a felhasznÃĄlÃŗ Ãēgy dÃļntÃļtt, hogy nem teszi elÊrhetÅvÊ ezt az informÃĄciÃŗt.",
"empty_column.account_suspended": "FiÃŗk felfÃŧggesztve",
"empty_column.account_timeline": "Itt nincs bejegyzÊs!",
@@ -245,7 +245,7 @@
"empty_column.mutes": "MÊg egy felhasznÃĄlÃŗt sem nÊmÃtottÃĄl le.",
"empty_column.notifications": "Jelenleg mÊg nincsenek ÊrtesÃtÊseid. Ha mÃĄsok kapcsolatba lÊpnek veled, ezek itt lesznek lÃĄthatÃŗak.",
"empty_column.public": "Jelenleg itt nincs semmi! Ãrj valamit nyilvÃĄnosan vagy kÃļvess mÃĄs kiszolgÃĄlÃŗn levÅ felhasznÃĄlÃŗkat, hogy megtÃļltsd.",
- "error.unexpected_crash.explanation": "Egy hiba vagy bÃļngÊszÅ inkompatibilitÃĄs miatt ez az oldal nem jelenÃthetÅ meg rendesen.",
+ "error.unexpected_crash.explanation": "Egy kÃŗd- vagy bÃļngÊszÅkompatibilitÃĄsi hiba miatt ez az oldal nem jelenÃthetÅ meg helyesen.",
"error.unexpected_crash.explanation_addons": "Ezt az oldalt nem lehet helyesen megjelenÃteni. Ezt a hibÃĄt valÃŗszÃnÅąleg egy bÃļngÊszÅ kiegÊszÃtÅ vagy egy automatikus fordÃtÃŗ okozza.",
"error.unexpected_crash.next_steps": "PrÃŗbÃĄld frissÃteni az oldalt. Ha ez nem segÃt, egy mÃĄsik bÃļngÊszÅn vagy appon keresztÃŧl mÊg mindig hasznÃĄlhatod a Mastodont.",
"error.unexpected_crash.next_steps_addons": "PrÃŗbÃĄld letiltani Åket Ês frissÃteni az oldalt. Ha ez nem segÃt, egy mÃĄsik bÃļngÊszÅn vagy appon keresztÃŧl mÊg mindig hasznÃĄlhatod a Mastodont.",
@@ -278,13 +278,13 @@
"firehose.remote": "EgyÊb kiszolgÃĄlÃŗk",
"follow_request.authorize": "HitelesÃtÊs",
"follow_request.reject": "ElutasÃtÃĄs",
- "follow_requests.unlocked_explanation": "BÃĄr a fiÃŗkod nincs zÃĄrolva, a(z) {domain} csapata Ãēgy gondolta, hogy talÃĄn kÊzzel szeretnÊd ellenÅrizni a fiÃŗk kÃļvetÊsi kÊrÊseit.",
+ "follow_requests.unlocked_explanation": "BÃĄr a fiÃŗkod nincs zÃĄrolva, a(z) {domain} csapata Ãēgy gondolta, hogy talÃĄn kÊzzel szeretnÊd ellenÅrizni ezen fiÃŗkok kÃļvetÊsi kÊrÊseit.",
"followed_tags": "KÃļvetett hashtagek",
"footer.about": "NÊvjegy",
"footer.directory": "ProfiltÃĄr",
"footer.get_app": "AlkalmazÃĄs beszerzÊse",
"footer.invite": "Emberek meghÃvÃĄsa",
- "footer.keyboard_shortcuts": "BillentyÅąparancsok",
+ "footer.keyboard_shortcuts": "GyorsbillentyÅąk",
"footer.privacy_policy": "AdatvÊdelmi szabÃĄlyzat",
"footer.source_code": "ForrÃĄskÃŗd megtekintÊse",
"footer.status": "Ãllapot",
@@ -347,13 +347,13 @@
"keyboard_shortcuts.favourite": "BejegyzÊs kedvencnek jelÃļlÊse",
"keyboard_shortcuts.favourites": "Kedvencek lista megnyitÃĄsa",
"keyboard_shortcuts.federated": "FÃļderÃĄciÃŗs idÅvonal megnyitÃĄsa",
- "keyboard_shortcuts.heading": "BillentyÅąparancsok",
+ "keyboard_shortcuts.heading": "GyorsbillentyÅąk",
"keyboard_shortcuts.home": "SajÃĄt idÅvonal megnyitÃĄsa",
"keyboard_shortcuts.hotkey": "GyorsbillentyÅą",
"keyboard_shortcuts.legend": "jelmagyarÃĄzat megjelenÃtÊse",
- "keyboard_shortcuts.local": "helyi idÅvonal megnyitÃĄsa",
+ "keyboard_shortcuts.local": "Helyi idÅvonal megnyitÃĄsa",
"keyboard_shortcuts.mention": "SzerzÅ megemlÃtÊse",
- "keyboard_shortcuts.muted": "nÊmÃtott felhasznÃĄlÃŗk listÃĄjÃĄnak megnyitÃĄsa",
+ "keyboard_shortcuts.muted": "NÊmÃtott felhasznÃĄlÃŗk listÃĄjÃĄnak megnyitÃĄsa",
"keyboard_shortcuts.my_profile": "SajÃĄt profil megnyitÃĄsa",
"keyboard_shortcuts.notifications": "ÃrtesÃtÊsek oszlop megnyitÃĄsa",
"keyboard_shortcuts.open_media": "MÊdia megnyitÃĄsa",
@@ -389,7 +389,7 @@
"lists.replies_policy.list": "A lista tagjai",
"lists.replies_policy.none": "Senki",
"lists.replies_policy.title": "Nekik mutassuk a vÃĄlaszokat:",
- "lists.search": "KeresÊs a kÃļvetett szemÊlyek kÃļzÃļtt",
+ "lists.search": "KeresÊs a kÃļvetett emberek kÃļzÃļtt",
"lists.subheading": "SajÃĄt listÃĄk",
"load_pending": "{count, plural, one {# Ãēj elem} other {# Ãēj elem}}",
"loading_indicator.label": "BetÃļltÊsâĻ",
@@ -399,7 +399,7 @@
"mute_modal.hide_notifications": "RejtsÃŧk el a felhasznÃĄlÃŗtÃŗl szÃĄrmazÃŗ ÊrtesÃtÊseket?",
"mute_modal.indefinite": "HatÃĄrozatlan",
"navigation_bar.about": "NÊvjegy",
- "navigation_bar.advanced_interface": "HaladÃŗ webes felÃŧlet engedÊlyezÊse",
+ "navigation_bar.advanced_interface": "MegnyitÃĄs a speciÃĄlis webes felÃŧletben",
"navigation_bar.blocks": "Letiltott felhasznÃĄlÃŗk",
"navigation_bar.bookmarks": "KÃļnyvjelzÅk",
"navigation_bar.community_timeline": "Helyi idÅvonal",
@@ -407,13 +407,12 @@
"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",
- "navigation_bar.follow_requests": "KÃļvetÊsi kÊrelmek",
+ "navigation_bar.follow_requests": "KÃļvetÊsi kÊrÊsek",
"navigation_bar.followed_tags": "KÃļvetett hashtagek",
- "navigation_bar.follows_and_followers": "KÃļvetettek Ês kÃļvetÅk",
+ "navigation_bar.follows_and_followers": "KÃļvetÊsek Ês kÃļvetÅk",
"navigation_bar.lists": "ListÃĄk",
"navigation_bar.logout": "KijelentkezÊs",
"navigation_bar.mutes": "NÊmÃtott felhasznÃĄlÃŗk",
@@ -449,7 +448,7 @@
"notifications.column_settings.follow_request": "Ãj kÃļvetÊsi kÊrelmek:",
"notifications.column_settings.mention": "MegemlÃtÊsek:",
"notifications.column_settings.poll": "SzavazÃĄsi eredmÊnyek:",
- "notifications.column_settings.push": "Push ÊrtesÃtÊsek",
+ "notifications.column_settings.push": "LekÃŧldÊses ÊrtesÃtÊsek",
"notifications.column_settings.reblog": "MegtolÃĄsok:",
"notifications.column_settings.show": "MegjelenÃtÊs az oszlopban",
"notifications.column_settings.sound": "Hang lejÃĄtszÃĄsa",
@@ -479,8 +478,8 @@
"onboarding.actions.go_to_home": "UgrÃĄs a sajÃĄt hÃrfolyamra",
"onboarding.compose.template": "ÃdvÃļzlet, #Mastodon!",
"onboarding.follows.empty": "Sajnos jelenleg nem jelenÃthetÅ meg eredmÊny. KiprÃŗbÃĄlhatod a keresÊst vagy bÃļngÊszheted a felfedezÅ oldalon a kÃļvetni kÃvÃĄnt szemÊlyeket, vagy prÃŗbÃĄld meg kÊsÅbb.",
- "onboarding.follows.lead": "A sajÃĄt hÃrfolyamod az elsÅdleges tapasztalÃĄs a Mastodonon. MinÊl tÃļbb embert kÃļvetsz, annÃĄl aktÃvabb Ês Êrdekesebb a dolog. Az indulÃĄshoz itt van nÊhÃĄny javaslat:",
- "onboarding.follows.title": "NÊpszerÅą a Mastodonon",
+ "onboarding.follows.lead": "A kezdÅlapod a Mastodon hasznÃĄlatÃĄnak elsÅdleges mÃŗdja. MinÊl tÃļbb embert kÃļvetsz, annÃĄl aktÃvabbak Ês Êrdekesebbek lesznek a dolgok. Az indulÃĄshoz itt van nÊhÃĄny javaslat:",
+ "onboarding.follows.title": "Szabd szemÊlyre a kezdÅlapodat",
"onboarding.profile.discoverable": "SajÃĄt profil beÃĄllÃtÃĄsa felfedezhetÅkÊnt",
"onboarding.profile.discoverable_hint": "A Mastodonon a felfedezhetÅsÊg vÃĄlasztÃĄsa esetÊn a sajÃĄt bejegyzÊseid megjelenhetnek a keresÊsi eredmÊnyek Ês a felkapott tartalmak kÃļzÃļtt, valamint a profilod a hozzÃĄd hasonlÃŗ ÊrdeklÅdÊsi kÃļrrel rendelkezÅ embereknÊl is ajÃĄnlÃĄsra kerÃŧlhet.",
"onboarding.profile.display_name": "MegjelenÃtett nÊv",
@@ -499,14 +498,14 @@
"onboarding.start.lead": "Az Ãēj Mastodon-fiÃŗk hasznÃĄlatra kÊsz. Ãgy hozhatod ki belÅle a legtÃļbbet:",
"onboarding.start.skip": "SzeretnÊl elÅreugrani?",
"onboarding.start.title": "Ez sikerÃŧlt!",
- "onboarding.steps.follow_people.body": "Te ÃĄllÃtod Ãļssze a sajÃĄt hÃrfolyamodat. TÃļltsd meg Êrdekes emberekkel.",
+ "onboarding.steps.follow_people.body": "A Mastodon az Êrdekes emberek kÃļvetÊsÊrÅl szÃŗl.",
"onboarding.steps.follow_people.title": "{count, plural, one {egy ember} other {# ember}} kÃļvetÊse",
"onboarding.steps.publish_status.body": "ÃdvÃļzÃļljÃŧk a vilÃĄgot.",
"onboarding.steps.publish_status.title": "Az elsÅ bejegyzÊs lÊtrehozÃĄsa",
"onboarding.steps.setup_profile.body": "MÃĄsok nagyobb valÃŗszÃnÅąsÊggel lÊpnek kapcsolatba veled egy kitÃļltÃļtt profil esetÊn.",
"onboarding.steps.setup_profile.title": "Profilod testreszabÃĄsa",
- "onboarding.steps.share_profile.body": "Tudasd az ismerÅseiddel, hogyan talÃĄlhatnak meg a Mastodonon!",
- "onboarding.steps.share_profile.title": "Profilod megosztÃĄsa",
+ "onboarding.steps.share_profile.body": "Tudasd az ismerÅseiddel, hogyan talÃĄlhatnak meg a Mastodonon",
+ "onboarding.steps.share_profile.title": "Oszd meg a Mastodon profilodat",
"onboarding.tips.2fa": "
Tudtad? A fiÃŗkod biztonsÃĄgossÃĄ teheted, ha a fiÃŗk beÃĄllÃtÃĄsaiban beÃĄllÃtod a kÊtlÊpcsÅs hitelesÃtÊst. BÃĄrmilyen vÃĄlasztott TOTP alkalmazÃĄssal mÅąkÃļdik, nincs szÃŧksÊg telefonszÃĄmra!",
"onboarding.tips.accounts_from_other_servers": "
Tudtad? Mivel a Mastodon decentralizÃĄlt, egyes profilok, amelyekkel talÃĄlkozol, mÃĄs kiszolgÃĄlÃŗkon lesznek tÃĄrolva. Ãs mÊgis zÃļkkenÅmentesen kommunikÃĄlhatsz velÃŧk! A kiszolgÃĄlÃŗ a felhasznÃĄlÃŗnevÃŧk mÃĄsodik felÊben talÃĄlhatÃŗ!",
"onboarding.tips.migration": "
Tudtad? Ha Ãēgy Êrzed, hogy a {domain} mÃĄr nem jÃŗ kiszolgÃĄlÃŗ a szÃĄmodra, ÃĄtkÃļltÃļzhetsz egy mÃĄsik Mastodon kiszolgÃĄlÃŗra anÊlkÃŧl, hogy elveszÃtenÊd a kÃļvetÅidet. AkÃĄr sajÃĄt kiszolgÃĄlÃŗt is Ãŧzemeltethetsz!",
@@ -525,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",
@@ -550,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",
@@ -714,13 +716,11 @@
"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ÃĄs",
+ "upload_modal.apply": "Alkalmaz",
"upload_modal.applying": "AlkalmazÃĄsâĻ",
"upload_modal.choose_image": "KÊp kivÃĄlasztÃĄsa",
"upload_modal.description_placeholder": "A gyors, barna rÃŗka ÃĄtugrik a lusta kutya fÃļlÃļtt",
diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json
index f2548c7d3a9..6ddcfcdb217 100644
--- a/app/javascript/mastodon/locales/hy.json
+++ b/app/javascript/mastodon/locales/hy.json
@@ -32,7 +32,6 @@
"account.following": "ÕÕĨÕŋÕĨÖÕĄÕŽ",
"account.following_counter": "{count, plural, one {{counter} ÕÕĨÕŋÕĨÖÕĄÕŽ} other {{counter} ÕÕĨÕŋÕĨÖÕĄÕŽ}}",
"account.follows.empty": "ÔąÕĩÕŊ Ö
ÕŖÕŋÕĄÕŋÕ§ÖÕ¨ Õ¤ÕĨÕŧ Õ¸Õš Õ´Õ§Õ¯ÕĢ ÕšÕĢ Õ°ÕĨÕŋÕĨÖÕ¸ÖÕ´Ö",
- "account.follows_you": "ÕÕĨÕŋÕĨÖÕ¸ÖÕ´ Õ§ ÖÕĨÕĻ",
"account.go_to_profile": "ÔŗÕļÕĄÕŦ ÕĄÕļÕąÕļÕĄÕ¯ÕĄÕļ Õ°ÕĄÕˇÕĢÖ",
"account.hide_reblogs": "ÔšÕĄÖÖÕļÕĨÕŦ @{name}ÖÕĢ ÕŋÕĄÖÕĄÕŽÕĄÕŽÕļÕĨÖÕ¨",
"account.joined_short": "ÕÕĢÕĄÖÕĨÕŦ Õ§",
@@ -71,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": "ÕÕĄÕļÖÕĢ ÕŊÕÕĄÕŦ",
@@ -118,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": "ÔąÖÕŖÕĨÕŦÕĄÖÕĄÕ¯ÕĨÕŦ",
@@ -326,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": "ÔŧÕŧÕĨÖÕ¸ÖÕĄÕŽ ÕĸÕĄÕŧÕĨÖ",
@@ -415,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": "ÔšÕĄÖÕ´ÕĄÖÕļÕĨÕŦ",
@@ -557,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
new file mode 100644
index 00000000000..14b75a17f43
--- /dev/null
+++ b/app/javascript/mastodon/locales/ia.json
@@ -0,0 +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",
+ "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 8ecf36125d8..1670d616fb2 100644
--- a/app/javascript/mastodon/locales/id.json
+++ b/app/javascript/mastodon/locales/id.json
@@ -37,7 +37,6 @@
"account.following": "Mengikuti",
"account.following_counter": "{count, plural, other {{counter} Mengikuti}}",
"account.follows.empty": "Pengguna ini belum mengikuti siapa pun.",
- "account.follows_you": "Mengikuti Anda",
"account.go_to_profile": "Buka profil",
"account.hide_reblogs": "Sembunyikan boosts dari @{name}",
"account.in_memoriam": "Mengenang.",
@@ -83,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.",
@@ -135,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",
@@ -365,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",
@@ -455,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",
@@ -616,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
new file mode 100644
index 00000000000..5188d137e3b
--- /dev/null
+++ b/app/javascript/mastodon/locales/ie.json
@@ -0,0 +1,738 @@
+{
+ "about.blocks": "Moderat servitores",
+ "about.contact": "Contacter:",
+ "about.disclaimer": "Mastodon es programmatura lÃber e con fonte apert, e un marca de fabrica de Mastodon dGmbH.",
+ "about.domain_blocks.no_reason_available": "Rason ne disponibil",
+ "about.domain_blocks.preamble": "Mastodon generalmen possibilisa regardar li contenete de, e li interaction con usatores de quelcunc altri servitor in li fediverse. Ci trova se li exceptiones fat de ti-ci particulari servitor.",
+ "about.domain_blocks.silenced.explanation": "Generalmen, li profiles e contenete de ti-ci servitor ne va aparir, except si on sercha les explicitmen o optionalisa it per sequer.",
+ "about.domain_blocks.silenced.title": "Limitat",
+ "about.domain_blocks.suspended.explanation": "Necun data de ti-ci servitor va esser tractat, inmagasinat o exchangeat, quel inpossibilisa li interaction o comunication de usatores de ti-ci servitor.",
+ "about.domain_blocks.suspended.title": "Suspendet",
+ "about.not_available": "On ne ha disponibilisat ti-ci information sur ti-ci servitor.",
+ "about.powered_by": "Decentralisat social medie disponibilisat de {mastodon}",
+ "about.rules": "Regules del servitor",
+ "account.account_note_header": "Nota",
+ "account.add_or_remove_from_list": "Adjunter o remover de listes",
+ "account.badges.bot": "Automatisat",
+ "account.badges.group": "Gruppe",
+ "account.block": "Bloccar @{name}",
+ "account.block_domain": "Bloccar dominia {domain}",
+ "account.block_short": "Bloccar",
+ "account.blocked": "Bloccat",
+ "account.browse_more_on_origin_server": "Navigar plu sur li profil original",
+ "account.cancel_follow_request": "Anullar sequer",
+ "account.copy": "Copiar ligament al profil",
+ "account.direct": "Privatmen mentionar @{name}",
+ "account.disable_notifications": "Cessa notificar me quande @{name} posta",
+ "account.domain_blocked": "Dominia bloccat",
+ "account.edit_profile": "Redacter profil",
+ "account.enable_notifications": "Notificar me quande @{name} posta",
+ "account.endorse": "Recomandar sur profil",
+ "account.featured_tags.last_status_at": "Ultim posta ye {date}",
+ "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}}",
+ "account.following": "Sequent",
+ "account.following_counter": "{count, plural, one {{counter} Sequent} other {{counter} Sequent}}",
+ "account.follows.empty": "Ti-ci usator ancor ne seque quemcunc.",
+ "account.go_to_profile": "Ear a profil",
+ "account.hide_reblogs": "Celar boosts de @{name}",
+ "account.in_memoriam": "In Memoriam.",
+ "account.joined_short": "Adheret",
+ "account.languages": "Changear lingues de subscrition",
+ "account.link_verified_on": "ProprietÃĄ de ti-ci ligament esset verificat ye {date}",
+ "account.locked_info": "Li statu de confidentialitÃĄ de ti-ci conto es configurat quam cludet. Li proprietario decide manualmen qui posse sequer.",
+ "account.media": "Medie",
+ "account.mention": "Mentionar @{name}",
+ "account.moved_to": "{name} ha indicat que su nov conto es ja:",
+ "account.mute": "Silentiar @{name}",
+ "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",
+ "account.posts_with_replies": "Postas e replicas",
+ "account.report": "Raportar @{name}",
+ "account.requested": "Atendent aprobation. Cliccar por anullar li petition de sequer",
+ "account.requested_follow": "{name} ha petit sequer te",
+ "account.share": "Distribuer li profil de @{name}",
+ "account.show_reblogs": "Monstrar boosts de @{name}",
+ "account.statuses_counter": "{count, plural, one {{counter} Posta} other {{counter} Postas}}",
+ "account.unblock": "Desbloccar @{name}",
+ "account.unblock_domain": "Desbloccar dominia {domain}",
+ "account.unblock_short": "Desbloccar",
+ "account.unendorse": "Ne recomandar sur profil",
+ "account.unfollow": "Dessequer",
+ "account.unmute": "Dessilentiar @{name}",
+ "account.unmute_notifications_short": "Dessilentiar notificationes",
+ "account.unmute_short": "Dessilentiar",
+ "account_note.placeholder": "Clicca por adjunter un nota",
+ "admin.dashboard.daily_retention": "Usator-retention per die pos registration",
+ "admin.dashboard.monthly_retention": "Usator-retention per mensu pos registration",
+ "admin.dashboard.retention.average": "Medial",
+ "admin.dashboard.retention.cohort": "Mensu de registration",
+ "admin.dashboard.retention.cohort_size": "Nov usatores",
+ "admin.impact_report.instance_accounts": "Conto-profiles to-ci vell deleter",
+ "admin.impact_report.instance_followers": "Sequitores queles nor usatores vell perdir",
+ "admin.impact_report.instance_follows": "Sequitores queles lor usatores vell perdir",
+ "admin.impact_report.title": "Resumate de impact",
+ "alert.rate_limited.message": "Ples reprovar pos {retry_time, time, medium}.",
+ "alert.rate_limited.title": "Frequentie limitat",
+ "alert.unexpected.message": "Un Ãnexpectat erra ha evenit.",
+ "alert.unexpected.title": "Ups!",
+ "announcement.announcement": "Proclamation",
+ "attachments_list.unprocessed": "(Ãntractat)",
+ "audio.hide": "Celar audio",
+ "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.",
+ "bundle_column_error.error.title": "O ve!",
+ "bundle_column_error.network.body": "Un erra evenit durant li cargation de ti-ci pÃĄgine, possibilmen pro un temporari problema de tui conexion del internet o de ti-ci servitor.",
+ "bundle_column_error.network.title": "Erra de retage",
+ "bundle_column_error.retry": "Provar denov",
+ "bundle_column_error.return": "Retornar al comense",
+ "bundle_column_error.routing.body": "Li demandat pÃĄgine ne trovat se. Esque tu es cert que li URL in li adresse-barre es corect?",
+ "bundle_column_error.routing.title": "404",
+ "bundle_modal_error.close": "Cluder",
+ "bundle_modal_error.message": "Alquo errat durant li cargation de ti-ci componente.",
+ "bundle_modal_error.retry": "Provar denov",
+ "closed_registrations.other_server_instructions": "Pro que Mastodon es decentralisat, on posse crear un conto che un altri servitor e ancor interacter con ti-ci.",
+ "closed_registrations_modal.description": "Crear un conto che {domain} ne es possibil actualmen, ma ples memorar que on ne besona un conto specificmen che {domain} por usar Mastodon.",
+ "closed_registrations_modal.find_another_server": "Serchar altri servitor",
+ "closed_registrations_modal.preamble": "Mastodon es descentralisat, do on posse ser e interacter con quicunc che ti-ci servitor, sin egarda de u on crea su conto. On mem posse self-albergar it!",
+ "closed_registrations_modal.title": "Registrar sur Mastodon",
+ "column.about": "Information",
+ "column.blocks": "Bloccat usatores",
+ "column.bookmarks": "Marcatores",
+ "column.community": "Local tÊmpor-linea",
+ "column.direct": "Privat mentiones",
+ "column.directory": "Navigar profiles",
+ "column.domain_blocks": "Bloccat dominia",
+ "column.favourites": "Favorites",
+ "column.firehose": "TÊmpor-lineas",
+ "column.follow_requests": "Petitiones de sequer",
+ "column.home": "Comense",
+ "column.lists": "Listes",
+ "column.mutes": "Silentiat usatores",
+ "column.notifications": "Notificationes",
+ "column.pins": "Pinglat postas",
+ "column.public": "Federat tÊmpor-linea",
+ "column_back_button.label": "Retornar",
+ "column_header.hide_settings": "Celar parametres",
+ "column_header.moveLeft_settings": "Mover columne al levul",
+ "column_header.moveRight_settings": "Mover columne al dextri",
+ "column_header.pin": "Pinglar",
+ "column_header.show_settings": "Monstrar parametres",
+ "column_header.unpin": "Despinglar",
+ "column_subheading.settings": "Parametres",
+ "community.column_settings.local_only": "Solmen local",
+ "community.column_settings.media_only": "Solmen medie",
+ "community.column_settings.remote_only": "Solmen external",
+ "compose.language.change": "Changear lingue",
+ "compose.language.search": "Serchar lingues...",
+ "compose.published.body": "Posta publicat.",
+ "compose.published.open": "Aperter",
+ "compose.saved.body": "Posta conservat.",
+ "compose_form.direct_message_warning_learn_more": "Aprender plu",
+ "compose_form.encryption_warning": "Postas in Mastodon ne es inciffrat de comense a fine. Ne posta quelcunc information sensitiv per Mastodon.",
+ "compose_form.hashtag_warning": "Ti-ci posta ne va esser listat sur quelcunc hashtag pro que it ne es public. Solmen public postas posse esser serchat per hashtag.",
+ "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 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.poll.type": "Stil",
+ "compose_form.publish": "Postar",
+ "compose_form.publish_form": "Nov posta",
+ "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",
+ "confirmation_modal.cancel": "Anullar",
+ "confirmations.block.block_and_report": "Bloccar & Raportar",
+ "confirmations.block.confirm": "Bloccar",
+ "confirmations.block.message": "Esque tu vermen vole bloccar {name}?",
+ "confirmations.cancel_follow_request.confirm": "Retraer petition",
+ "confirmations.cancel_follow_request.message": "Esque tu vermen vole retraer tui petition sequer {name}?",
+ "confirmations.delete.confirm": "Deleter",
+ "confirmations.delete.message": "Esque tu vermen vole deleter ti-ci posta?",
+ "confirmations.delete_list.confirm": "Deleter",
+ "confirmations.delete_list.message": "Esque tu vermen vole permanentmen deleter ti-ci liste?",
+ "confirmations.discard_edit_media.confirm": "Forjettar",
+ "confirmations.discard_edit_media.message": "Tu have Ãnconservat changes al descrition de medie o al previse, forjettar les sin egarda?",
+ "confirmations.domain_block.confirm": "Bloccar li tot dominia",
+ "confirmations.domain_block.message": "Esque tu es certissim que tu vole bloccar li tot {domain}? In mult casus, bloccar o silentiar quelc specific contos es suficent e preferibil. Tu ne va vider contenete de ti dominia in quelcunc public tÊmpor-linea o in tui notificationes. Tui sequitores de ti dominia va esser removet.",
+ "confirmations.edit.confirm": "Redacter",
+ "confirmations.edit.message": "Redacter nu va remplazzar li missage quel tu actualmen composi. Esque tu vermen vole proceder?",
+ "confirmations.logout.confirm": "Exear",
+ "confirmations.logout.message": "Esque tu vermen vole exear?",
+ "confirmations.mute.confirm": "Silentiar",
+ "confirmations.mute.explanation": "To-ci va celar postas de ilu e postas mentionant ilu, ma it ancor va permisser ilu vider tui postas e sequer te.",
+ "confirmations.mute.message": "Esque tu vermen vole silentiar {name}?",
+ "confirmations.redraft.confirm": "Deleter & redacter",
+ "confirmations.redraft.message": "Esque tu vermen vole deleter ti-ci posta e redacter it? Favorites e boosts va esser perdit, e responses al posta original va esser orfanat.",
+ "confirmations.reply.confirm": "Responder",
+ "confirmations.reply.message": "Responder nu va remplazzar li missage quel tu actualmen composi. Esque tu vermen vole proceder?",
+ "confirmations.unfollow.confirm": "Dessequer",
+ "confirmations.unfollow.message": "Esque tu vermen vole dessequer {name}?",
+ "conversation.delete": "Deleter conversation",
+ "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",
+ "directory.recently_active": "Recentmen activ",
+ "disabled_account_banner.account_settings": "Parametres del conto",
+ "disabled_account_banner.text": "Tui conto {disabledAccount} es actualmen desactivisat.",
+ "dismissable_banner.community_timeline": "Tis-ci es li postas max recent de gente con contos che {domain}.",
+ "dismissable_banner.dismiss": "Demisser",
+ "dismissable_banner.explore_links": "Tis-ci es li novas max distribuet che li social retage hodie. Novas plu nov, postat de plu diferent persones, es monstrat plu alt.",
+ "dismissable_banner.explore_statuses": "Tis-ci es postas del social retage queles es popular hodie. Nov postas con plu mult boosts e favorites es monstrat plu alt.",
+ "dismissable_banner.explore_tags": "Tis-ci es hashtags queles es popular che li social retage hodie. Hashtags usat de plu mult persones diferent es monstrat plu alt.",
+ "dismissable_banner.public_timeline": "Tis-ci es li max recent public postas de persones che li social retage quem gente che {domain} seque.",
+ "embed.instructions": "Inbedar ti-ci posta per copiar li code in infra.",
+ "embed.preview": "Vi qualmen it va aspecter:",
+ "emoji_button.activity": "ActivitÃĄ",
+ "emoji_button.clear": "Efaciar",
+ "emoji_button.custom": "Custom",
+ "emoji_button.flags": "Flaggas",
+ "emoji_button.food": "Manjage & Trincage",
+ "emoji_button.label": "Inserter emoji",
+ "emoji_button.nature": "Natura",
+ "emoji_button.not_found": "Null acordant emoji trovat",
+ "emoji_button.objects": "Objectes",
+ "emoji_button.people": "Gente",
+ "emoji_button.recent": "Frequentmen usat",
+ "emoji_button.search": "Sercha...",
+ "emoji_button.search_results": "Resultates de sercha",
+ "emoji_button.symbols": "Simboles",
+ "emoji_button.travel": "Viageation & Locos",
+ "empty_column.account_hides_collections": "Ti-ci usator ha selectet ne publicar ti-ci information",
+ "empty_column.account_suspended": "Conto suspendet",
+ "empty_column.account_timeline": "Null postas ci!",
+ "empty_column.account_unavailable": "Profil Ãndisponibil",
+ "empty_column.blocks": "Tu ancor ha bloccat null usatores.",
+ "empty_column.bookmarked_statuses": "Tu ancor have null marcat postas. Quande tu marca un, it va aparir ci.",
+ "empty_column.community": "Li local tÊmpor-linea es vacui. Scri alquo publicmen por initiar la festa!",
+ "empty_column.direct": "Tu ancor have null privat mentiones. Quande tu misse o recive un, it va aparir ci.",
+ "empty_column.domain_blocks": "Ancor hay null bloccat dominias.",
+ "empty_column.explore_statuses": "Nequo es popular actualmen. Retorna plu tarde!",
+ "empty_column.favourited_statuses": "Tu ancor have null favorit postas. Quande tu favoritisa un, it va aparir ci.",
+ "empty_column.favourites": "Ancor nequi ha favoritisat ti-ci posta. Quande alqui fa it, ilu va aparir ci.",
+ "empty_column.follow_requests": "Tu ancor have null petitiones de sequer. Quande tu recive un, it va aparir ci.",
+ "empty_column.followed_tags": "Tu ancor ha sequet null hashtags. Quande tu seque un, it va aparir ci.",
+ "empty_column.hashtag": "Hay nullcos en ti-ci hashtag ancor.",
+ "empty_column.home": "Tui hemal tÊmpor-linea es vacui! Sequer plu gente por plenar it.",
+ "empty_column.list": "Ancor ne hay quocunc in ti-ci liste. Quande membres de ti-ci liste publica nov postas, ili va aparir ci.",
+ "empty_column.lists": "Tu ancor have null listes. Quande tu crea un, it va aparir ci.",
+ "empty_column.mutes": "Tu ancor ha silentiat null usatores.",
+ "empty_column.notifications": "Tu have null notificationes. Quande altri persones interacte con te, tu va vider it ci.",
+ "empty_column.public": "Hay nullcos ci! Scri alquo publicmen, o manualmen seque usatores de altri servitores por plenar to-ci",
+ "error.unexpected_crash.explanation": "Pro un error in nor code o un problema de compatibilitÃĄ in li navigator, ti-ci pÃĄgine ne posset esser monstrat correctmen.",
+ "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",
+ "explore.title": "Explorar",
+ "explore.trending_links": "Novas",
+ "explore.trending_statuses": "Postas",
+ "explore.trending_tags": "Hashtags",
+ "filter_modal.added.context_mismatch_explanation": "Ti-ci filtre-categorie ne aplica al contextu in quel tu ha accessat ti-ci posta. Si tu vole que li posta es filtrat anc in ti-ci contextu, tu deve redacter li filtre.",
+ "filter_modal.added.context_mismatch_title": "Contextu Ãncompatibil!",
+ "filter_modal.added.expired_explanation": "Ti-ci filtre-categorie ha expirat, tu deve changear li date de expiration por far it aplicar.",
+ "filter_modal.added.expired_title": "Expirat filtre!",
+ "filter_modal.added.review_and_configure": "Por reviser e configurar ti-ci filtre-categorie, ea a {settings_link}.",
+ "filter_modal.added.review_and_configure_title": "Parametres pri filtres",
+ "filter_modal.added.settings_link": "pÃĄgine por parametres",
+ "filter_modal.added.short_explanation": "Ti-ci post ha esset adjuntet al sequente filtre-categorie: {title}.",
+ "filter_modal.added.title": "Filtre adjuntet!",
+ "filter_modal.select_filter.context_mismatch": "ne aplica a ti-ci contextu",
+ "filter_modal.select_filter.expired": "expirat",
+ "filter_modal.select_filter.prompt_new": "Nov categorie: {name}",
+ "filter_modal.select_filter.search": "Serchar o crear",
+ "filter_modal.select_filter.subtitle": "Usar un existent categorie o crear nov",
+ "filter_modal.select_filter.title": "Filtrar ti-ci posta",
+ "filter_modal.title.status": "Filtrar un posta",
+ "firehose.all": "Omno",
+ "firehose.local": "Ti-ci servitor",
+ "firehose.remote": "Altri servitores",
+ "follow_request.authorize": "Autorisar",
+ "follow_request.reject": "Rejecter",
+ "follow_requests.unlocked_explanation": "Benque tu conto ne es cludet, li administratores de {domain} pensat que tu fÃŗrsan vell voler tractar seque-petitiones de tis-ci contos manualmen.",
+ "followed_tags": "Sequet hashtags",
+ "footer.about": "Information",
+ "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",
+ "generic.saved": "Conservat",
+ "getting_started.heading": "Qualmen comensar",
+ "hashtag.column_header.tag_mode.all": "e {additional}",
+ "hashtag.column_header.tag_mode.any": "o {additional}",
+ "hashtag.column_header.tag_mode.none": "sin {additional}",
+ "hashtag.column_settings.select.no_options_message": "Null suggestiones trovat",
+ "hashtag.column_settings.select.placeholder": "Inscrir hashtagsâĻ",
+ "hashtag.column_settings.tag_mode.all": "Omni tis",
+ "hashtag.column_settings.tag_mode.any": "Quelcunc de tis",
+ "hashtag.column_settings.tag_mode.none": "Necun de tis",
+ "hashtag.column_settings.tag_toggle": "Include additional hashtags in ti-ci columne",
+ "hashtag.counter_by_accounts": "{count, plural, one {{counter} participante} other {{counter} participantes}}",
+ "hashtag.counter_by_uses": "{count, plural, one {{counter} posta} other {{counter} postas}}",
+ "hashtag.counter_by_uses_today": "{count, plural, one {{counter} posta} other {{counter} postas}} hodie",
+ "hashtag.follow": "Sequer hashtag",
+ "hashtag.unfollow": "Dessequer hashtag",
+ "hashtags.and_other": "âĻe {count, plural, other {# in plu}}",
+ "home.actions.go_to_explore": "Vider lu populari",
+ "home.actions.go_to_suggestions": "Trovar gente por sequer",
+ "home.column_settings.basic": "Basic",
+ "home.column_settings.show_reblogs": "Monstrar boosts",
+ "home.column_settings.show_replies": "Monstrar responses",
+ "home.explore_prompt.body": "Tui hemal tÊmpor-linea have un mixtura del hashtags queles tu selectet sequer, li gente quem tu selectet sequer, e li postas queles ili boosta. Si to sembla tro quiet, tu fÃŗrsan vole:",
+ "home.explore_prompt.title": "To-ci es tui hemal pÃĄgine in Mastodon.",
+ "home.hide_announcements": "Celar proclamationes",
+ "home.pending_critical_update.body": "Ples actualisar tui Mastodon-servitor tam rapid quam es possibil!",
+ "home.pending_critical_update.link": "Vider actualisationes",
+ "home.pending_critical_update.title": "Urgent actualisation de securitÃĄ disponibil!",
+ "home.show_announcements": "Monstrar proclamationes",
+ "interaction_modal.description.favourite": "Con un conto de Mastodon, tu posse favoritisar ti-ci posta por informar li autor pri quant mult tu aprecia it e conservar it por plu tard.",
+ "interaction_modal.description.follow": "Con un conto de Mastodon, tu posse sequer {name} por reciver su postas in tui hemal tÊmpor-linea.",
+ "interaction_modal.description.reblog": "Con un conto de Mastodon, tu posse boostar ti-ci posta por distribuer it a tui propri sequitores.",
+ "interaction_modal.description.reply": "Con un conto de Mastodon, tu posse responder a ti-ci posta.",
+ "interaction_modal.login.action": "Retorna a hem",
+ "interaction_modal.login.prompt": "Dominia de tui hemal servitor, p.ex. mastodon.social",
+ "interaction_modal.no_account_yet": "Ne sur Mastodon?",
+ "interaction_modal.on_another_server": "Sur un servitor diferent",
+ "interaction_modal.on_this_server": "Sur ti-ci servitor",
+ "interaction_modal.sign_in": "Tu ne ha initiat session che ti-ci servitor. U logia tui conto?",
+ "interaction_modal.sign_in_hint": "Nota: To es li websitu u tu adheret. Si tu ne rememora, sercha li benevenit-email in tui inbuxe. Tu anc posse introducter tui plen usator-nÃŗmine! (p.ex. @Mastodon@mastodon.social)",
+ "interaction_modal.title.favourite": "Favoritisar li posta de {name}",
+ "interaction_modal.title.follow": "Sequer {name}",
+ "interaction_modal.title.reblog": "Boostar li posta de {name}",
+ "interaction_modal.title.reply": "Responder al posta de {name}",
+ "intervals.full.days": "{number, plural, one {# die} other {# dies}}",
+ "intervals.full.hours": "{number, plural, one {# hor} other {# hores}}",
+ "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
+ "keyboard_shortcuts.back": "Retroear",
+ "keyboard_shortcuts.blocked": "Aperter li lista de bloccat usatores",
+ "keyboard_shortcuts.boost": "Boostar posta",
+ "keyboard_shortcuts.column": "Infocar columne",
+ "keyboard_shortcuts.compose": "Infocar li text-area de composition",
+ "keyboard_shortcuts.description": "Descrition",
+ "keyboard_shortcuts.direct": "por aperter li columne de privat mentiones",
+ "keyboard_shortcuts.down": "Mover ad-infra in li liste",
+ "keyboard_shortcuts.enter": "Aperter posta",
+ "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",
+ "keyboard_shortcuts.my_profile": "Aperter tui profil",
+ "keyboard_shortcuts.notifications": "Aperter li columne de notificationes",
+ "keyboard_shortcuts.open_media": "Aperter medie",
+ "keyboard_shortcuts.pinned": "Aperter li liste de pinglat postas",
+ "keyboard_shortcuts.profile": "Aperter profil del autor",
+ "keyboard_shortcuts.reply": "Responder al posta",
+ "keyboard_shortcuts.requests": "Aperter liste de seque-petitiones",
+ "keyboard_shortcuts.search": "Infocar sercha-barre",
+ "keyboard_shortcuts.spoilers": "Monstrar/celar CW camp",
+ "keyboard_shortcuts.start": "Aperter \"Qualmen comensar\" columne",
+ "keyboard_shortcuts.toggle_hidden": "Monstrar/celar text detra CW",
+ "keyboard_shortcuts.toggle_sensitivity": "Monstrar/celar medie",
+ "keyboard_shortcuts.toot": "Crear un nov posta",
+ "keyboard_shortcuts.unfocus": "Desinfocar text-area de composition/serchar",
+ "keyboard_shortcuts.up": "Mover ad-supra in li liste",
+ "lightbox.close": "Cluder",
+ "lightbox.compress": "Compresser vise-buxe de image",
+ "lightbox.expand": "Expander vise-buxe de image",
+ "lightbox.next": "Sequent",
+ "lightbox.previous": "Precedent",
+ "limited_account_hint.action": "Monstrar profil totvez",
+ "limited_account_hint.title": "Ti-ci profil ha esset celat del moderatores de {domain}.",
+ "link_preview.author": "De {name}",
+ "lists.account.add": "Adjunter a liste",
+ "lists.account.remove": "Remover de liste",
+ "lists.delete": "Deleter liste",
+ "lists.edit": "Redacter liste",
+ "lists.edit.submit": "Changear titul",
+ "lists.exclusive": "Celar ti-ci postas del hemal tÊmpor-linea",
+ "lists.new.create": "Adjunter liste",
+ "lists.new.title_placeholder": "Titul del nov liste",
+ "lists.replies_policy.followed": "Quelcunc sequet usator",
+ "lists.replies_policy.list": "Membres del liste",
+ "lists.replies_policy.none": "Nequi",
+ "lists.replies_policy.title": "Monstrar responses a:",
+ "lists.search": "Serchar inter li persones quem tu seque",
+ "lists.subheading": "Tui listes",
+ "load_pending": "{count, plural, one {# nov element} other {# nov elementes}}",
+ "loading_indicator.label": "CargantâĻ",
+ "media_gallery.toggle_visible": "{number, plural, one {Celar image} other {Celar images}}",
+ "moved_to_account_banner.text": "Tui conto {disabledAccount} es actualmen desactivisat pro que tu movet te a {movedToAccount}.",
+ "mute_modal.duration": "Duration",
+ "mute_modal.hide_notifications": "Celar notificationes de ti-ci usator?",
+ "mute_modal.indefinite": "Ãndefinit",
+ "navigation_bar.about": "Information",
+ "navigation_bar.advanced_interface": "Aperter in li web-interfacie avansat",
+ "navigation_bar.blocks": "Bloccat usatores",
+ "navigation_bar.bookmarks": "Marcatores",
+ "navigation_bar.community_timeline": "Local tÊmpor-linea",
+ "navigation_bar.compose": "Composir un nov posta",
+ "navigation_bar.direct": "Privat mentiones",
+ "navigation_bar.discover": "Decovrir",
+ "navigation_bar.domain_blocks": "Bloccat dominias",
+ "navigation_bar.explore": "Explorar",
+ "navigation_bar.favourites": "Favorites",
+ "navigation_bar.filters": "Silentiat paroles",
+ "navigation_bar.follow_requests": "Petitiones de sequer",
+ "navigation_bar.followed_tags": "Sequet hashtags",
+ "navigation_bar.follows_and_followers": "Sequetes e sequitores",
+ "navigation_bar.lists": "Listes",
+ "navigation_bar.logout": "Exear",
+ "navigation_bar.mutes": "Silentiat usatores",
+ "navigation_bar.opened_in_classic_interface": "Postas, contos e altri specific pÃĄgines es customalmen apertet in li classic web-interfacie.",
+ "navigation_bar.personal": "Personal",
+ "navigation_bar.pins": "Pinglat postas",
+ "navigation_bar.preferences": "Preferenties",
+ "navigation_bar.public_timeline": "Federat tÊmpor-linea",
+ "navigation_bar.search": "Sercha",
+ "navigation_bar.security": "SecuritÃĄ",
+ "not_signed_in_indicator.not_signed_in": "On deve aperter session por accesser ti-ci ressurse.",
+ "notification.admin.report": "{name} raportat {target}",
+ "notification.admin.sign_up": "{name} adheret",
+ "notification.favourite": "{name} favoritisat tui posta",
+ "notification.follow": "{name} sequet te",
+ "notification.follow_request": "{name} ha petit sequer te",
+ "notification.mention": "{name} mentionat te",
+ "notification.own_poll": "Tui balotation ha finit",
+ "notification.poll": "Un balotation in quel tu votat ha finit",
+ "notification.reblog": "{name} boostat tui posta",
+ "notification.status": "{name} just postat",
+ "notification.update": "{name} modificat un posta",
+ "notifications.clear": "Aclarar notificationes",
+ "notifications.clear_confirmation": "Vole tu vermen permanentmen aclarar omni tui notificationes?",
+ "notifications.column_settings.admin.report": "Nov raportas:",
+ "notifications.column_settings.admin.sign_up": "Nov registrationes:",
+ "notifications.column_settings.alert": "Notificationes sur li computator",
+ "notifications.column_settings.favourite": "Favorites:",
+ "notifications.column_settings.filter_bar.advanced": "Monstrar omni categories",
+ "notifications.column_settings.filter_bar.category": "Rapid filtre-barre",
+ "notifications.column_settings.filter_bar.show_bar": "Monstrar filtre-barre",
+ "notifications.column_settings.follow": "Nov sequitores:",
+ "notifications.column_settings.follow_request": "Nov petitiones de sequer:",
+ "notifications.column_settings.mention": "Mentiones:",
+ "notifications.column_settings.poll": "Resultates del balotation:",
+ "notifications.column_settings.push": "Notificationes push",
+ "notifications.column_settings.reblog": "Boosts:",
+ "notifications.column_settings.show": "Monstrar in columne",
+ "notifications.column_settings.sound": "Far son",
+ "notifications.column_settings.status": "Nov postas:",
+ "notifications.column_settings.unread_notifications.category": "Ãnleet notificationes",
+ "notifications.column_settings.unread_notifications.highlight": "Marcar Ãnleet notificationes",
+ "notifications.column_settings.update": "Redactiones:",
+ "notifications.filter.all": "Omni",
+ "notifications.filter.boosts": "Boosts",
+ "notifications.filter.favourites": "Favorites",
+ "notifications.filter.follows": "Seques",
+ "notifications.filter.mentions": "Mentiones",
+ "notifications.filter.polls": "Resultates del balotation",
+ "notifications.filter.statuses": "Actualisationes de gente quem tu seque",
+ "notifications.grant_permission": "Dar permission.",
+ "notifications.group": "{count} notificationes",
+ "notifications.mark_as_read": "Marcar omni notificationes quam leet",
+ "notifications.permission_denied": "Notificationes sur li computator es Ãndisponibil pro que on ha previamen rejectet un petition por navigator-permissiones",
+ "notifications.permission_denied_alert": "Notificationes sur li computator ne posse esser activisat, pro que navigator-permission ha esset previamen rejectet",
+ "notifications.permission_required": "Notificationes sur li computator es Ãndisponibil pro que li besonat permission ne ha esset dat.",
+ "notifications_permission_banner.enable": "Activisar notificationes sur li computator",
+ "notifications_permission_banner.how_to_control": "Por reciver notificationes quande Mastodon ne es apert, activisa notificationes sur li computator. Tu posse decider precisimen quel species de interactiones genera notificationes per li buton {icon} in-supra quande ili es activisat.",
+ "notifications_permission_banner.title": "Nequande preterlassa quocunc",
+ "onboarding.action.back": "Retroear",
+ "onboarding.actions.back": "Retroear",
+ "onboarding.actions.go_to_explore": "Ear a vider lu populari",
+ "onboarding.actions.go_to_home": "Ear al hemal tÊmpor-linea",
+ "onboarding.compose.template": "Salute #Mastodon!",
+ "onboarding.follows.empty": "Ãnfortunatmen, null resultates posse esser monstrat actualmen. Tu posse provar serchar o usar li \"Explorar\" pÃĄgine por trovar gente por sequer, o prova denov plu tard.",
+ "onboarding.follows.lead": "Tui hemal tÊmpor-linea es li primari maniere de experir Mastodon. Plu persones quem tu seque, plu activ e interessant it va esser. Por auxiliar te comensar, vi quelc suggestiones:",
+ "onboarding.follows.title": "Personalisar tui hemal tÊmpor-linea",
+ "onboarding.profile.discoverable": "Fa mi profil decovribil",
+ "onboarding.profile.discoverable_hint": "Quande tu opta esser decovribil in Mastodon, tui postas posse aparir in resultates de sercha e tendenties, e tui profil posse esser suggestet a persones con interesses simil a tui.",
+ "onboarding.profile.display_name": "NÃŗmine a monstrar",
+ "onboarding.profile.display_name_hint": "Tui complet nÃŗmine o tui amusant nÃŗmineâĻ",
+ "onboarding.profile.lead": "Tu sempre posse completar ti-ci plu tard in li parametres, u mem plu optiones de customisation es disponibil.",
+ "onboarding.profile.note": "Biografie",
+ "onboarding.profile.note_hint": "Tu posse @mentionar altri persones o #hashtagsâĻ",
+ "onboarding.profile.save_and_continue": "Conservar e avansar",
+ "onboarding.profile.title": "Popular tu profil",
+ "onboarding.profile.upload_avatar": "Cargar profil-portrete",
+ "onboarding.profile.upload_header": "Cargar cap-image",
+ "onboarding.share.lead": "Di gente qualmen ili posse trovar te che Mastodon!",
+ "onboarding.share.message": "Yo es {username} che #Mastodon! Veni e seque me a {url}",
+ "onboarding.share.next_steps": "Possibil sequent passus:",
+ "onboarding.share.title": "Partir tui profil",
+ "onboarding.start.lead": "Tu es ja un parte de Mastodon, un unic, decentralisat platform de medie social in quel tuâne un algoritmeâselectiona tui propri experientie. Lass nos departer sur un nov frontiera social:",
+ "onboarding.start.skip": "Auxilie por comensar ne besonat?",
+ "onboarding.start.title": "Tu ha successat!",
+ "onboarding.steps.follow_people.body": "Sequer interessant gente es to quo importa in Mastodon.",
+ "onboarding.steps.follow_people.title": "Personalisar tui hemal tÊmpor-linea",
+ "onboarding.steps.publish_status.body": "Saluta li munde con text, images, videos o balotationes {emoji}",
+ "onboarding.steps.publish_status.title": "Crear tui unesim posta",
+ "onboarding.steps.setup_profile.body": "Ascresce tui interactiones per haver un profil detalliat.",
+ "onboarding.steps.setup_profile.title": "Personalisar tui profil",
+ "onboarding.steps.share_profile.body": "Di tui amics qualmen trovar te che Mastodon",
+ "onboarding.steps.share_profile.title": "Partir tui profil Mastodon",
+ "onboarding.tips.2fa": "
Savet tu? Tu posse securisar tui conto per activisar 2-factor autentication in tui parametres de conto. Ti functiona con quelcunc aplication TOTP quel tu selecte, null nÃēmere de telefon besonat!",
+ "onboarding.tips.accounts_from_other_servers": "
Savet tu? Pro que Mastodon es decentralisat, quelc profiles queles tu trova va esser logiat che servitores altri quam tui. Totvez tu posse interacter con les sin grates! Lor servitores es in li duesim demà de lor usator-nÃŗmines!",
+ "onboarding.tips.migration": "
Savet tu? Si tu senti que {domain} ne es un bonissim servitor por te futurimen, tu posse mover te a un altri Mastodon-servitor sin perdir tui sequitores. Tu posse mem etablisser tui propri servitor!",
+ "onboarding.tips.verification": "
Savet tu? Tu posse verificar tui conto per metter un ligament a tui Mastodon-profil in tui propri websitu e adjunter li websitu a tui profil. Null payament o documentes besonat!",
+ "password_confirmation.exceeds_maxlength": "Confirmation de passa-parol transpassa li maxim longore de passa-paroles",
+ "password_confirmation.mismatching": "Confirmation de passa-parol ne egala",
+ "picture_in_picture.restore": "Restaurar",
+ "poll.closed": "Finit",
+ "poll.refresh": "Recargar",
+ "poll.reveal": "Vider resultates",
+ "poll.total_people": "{count, plural, one {# person} other {# persones}}",
+ "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
+ "poll.vote": "Votar",
+ "poll.voted": "Tu votat por ti-ci option",
+ "poll.votes": "{votes, plural, one {# vote} other {# votes}}",
+ "poll_button.add_poll": "Adjunter un balotation",
+ "poll_button.remove_poll": "Remover balotation",
+ "privacy.change": "Changear li privatie del posta",
+ "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_policy.last_updated": "Ultimmen actualisat ye {date}",
+ "privacy_policy.title": "Politica pri Privatie",
+ "recommended": "Recomandat",
+ "refresh": "Recargar",
+ "regeneration_indicator.label": "CargantâĻ",
+ "regeneration_indicator.sublabel": "On es preparant tui hemal tÊmpor-linea!",
+ "relative_time.days": "{number}d",
+ "relative_time.full.days": "Ante {number, plural, one {# die} other {# dies}}",
+ "relative_time.full.hours": "Ante {number, plural, one {# hor} other {# hores}}",
+ "relative_time.full.just_now": "just nu",
+ "relative_time.full.minutes": "Ante {number, plural, one {# minute} other {# minutes}}",
+ "relative_time.full.seconds": "Ante {number, plural, one {# second} other {# secondes}}",
+ "relative_time.hours": "{number}h",
+ "relative_time.just_now": "nu",
+ "relative_time.minutes": "{number}m",
+ "relative_time.seconds": "{number}s",
+ "relative_time.today": "hodie",
+ "reply_indicator.cancel": "Anullar",
+ "report.block": "Bloccar",
+ "report.block_explanation": "Tu ne va vider su postas. Li usator ni va posser vider tui postas, ni sequer te, ni va posser saver pri li statu de esser bloccat.",
+ "report.categories.legal": "Legal",
+ "report.categories.other": "Altricos",
+ "report.categories.spam": "Spam",
+ "report.categories.violation": "Contenete violant un o pluri regules del servitor",
+ "report.category.subtitle": "Selecte li max bon option",
+ "report.category.title": "Di nos quo passa con ti-ci {type}",
+ "report.category.title_account": "profil",
+ "report.category.title_status": "posta",
+ "report.close": "Finit",
+ "report.comment.title": "Hay alquo plu quel tu pensa que noi deve saver?",
+ "report.forward": "Misser anc a {target}",
+ "report.forward_hint": "Ti-ci conto es de un altri servitor. Misser un anonimisat copie del raporte anc a ta?",
+ "report.mute": "Silentiar",
+ "report.mute_explanation": "Tu ne va vider su postas. Ilu ancor posse sequer te e vider tui postas e ne va saver que ilu es silentiat.",
+ "report.next": "Sequent",
+ "report.placeholder": "Additional comentas",
+ "report.reasons.dislike": "It ne plese me",
+ "report.reasons.dislike_description": "It es alquo quel displese te",
+ "report.reasons.legal": "It es Ãnlegal",
+ "report.reasons.legal_description": "Tu crede que it viola un lege del land de te o de tui servitor",
+ "report.reasons.other": "It es altricos",
+ "report.reasons.other_description": "Li problema ne apartene in li altri categories",
+ "report.reasons.spam": "It es spam",
+ "report.reasons.spam_description": "Maliciosi ligamentes, fals activitÃĄ, o repetitiv responses",
+ "report.reasons.violation": "It viola li regules del servitor",
+ "report.reasons.violation_description": "Tu save que it viola specific regules",
+ "report.rules.subtitle": "Selecte omnes queles aplica",
+ "report.rules.title": "Quel regules es violat?",
+ "report.statuses.subtitle": "Selecte omnes queles aplica",
+ "report.statuses.title": "Hay postas queles posse subtener ti-ci raporte?",
+ "report.submit": "Misser",
+ "report.target": "Raportant {target}",
+ "report.thanks.take_action": "Tis-ci es tui optiones por controlar ti quel tu vide che Mastodon:",
+ "report.thanks.take_action_actionable": "Durante que noi tracta ti-ci, tu posse far lu sequent contra @{name}:",
+ "report.thanks.title": "Vole tu ne vider to?",
+ "report.thanks.title_actionable": "Mersà pro raportar, noi va investigar to.",
+ "report.unfollow": "Dessequer @{name}",
+ "report.unfollow_explanation": "Tu seque ti-ci conto. Por ne vider su postas en tui hemal tÊmpor-linea, dessequer it.",
+ "report_notification.attached_statuses": "{count, plural, one {{count} posta} other {{count} postas}} atachat",
+ "report_notification.categories.legal": "Legal",
+ "report_notification.categories.other": "Altricos",
+ "report_notification.categories.spam": "Spam",
+ "report_notification.categories.violation": "Violation de regul",
+ "report_notification.open": "Aperter raporta",
+ "search.no_recent_searches": "Null recent serchas",
+ "search.placeholder": "Serchar",
+ "search.quick_action.account_search": "Profiles acordant con {x}",
+ "search.quick_action.go_to_account": "Ear al profil {x}",
+ "search.quick_action.go_to_hashtag": "Ear al hashtag {x}",
+ "search.quick_action.open_url": "Aperter URL in Mastodon",
+ "search.quick_action.status_search": "Postas acordant con {x}",
+ "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",
+ "search_popout.specific_date": "specific date",
+ "search_popout.user": "usator",
+ "search_results.accounts": "Profiles",
+ "search_results.all": "Omni",
+ "search_results.hashtags": "Hashtags",
+ "search_results.nothing_found": "Trovat se nullcos por ti tÊrmino de sercha",
+ "search_results.see_all": "Vider omni",
+ "search_results.statuses": "Postas",
+ "search_results.title": "Sercha por {q}",
+ "server_banner.about_active_users": "Gente usant ti-ci servitor durant li ultim 30 dies (Mensual Activ Usatores)",
+ "server_banner.active_users": "activ usatores",
+ "server_banner.administered_by": "Administrat de:",
+ "server_banner.introduction": "{domain} es un part del decentralisat social retage constructet sur {mastodon}.",
+ "server_banner.learn_more": "Aprender plu",
+ "server_banner.server_stats": "Statisticas pri li servitor:",
+ "sign_in_banner.create_account": "Crear un conto",
+ "sign_in_banner.sign_in": "Intrar",
+ "sign_in_banner.sso_redirect": "Intrar o registrar se",
+ "sign_in_banner.text": "Intrar por sequer profiles o hashtags, favoritisar, partir e responder a postas. Tu posse anc interacter per tui conto che un diferent servitor.",
+ "status.admin_account": "Aperter interfacie de moderation por @{name}",
+ "status.admin_domain": "Aperter interfacie de moderation por {domain}",
+ "status.admin_status": "Aperter ti-ci posta in li interfacie de moderation",
+ "status.block": "Bloccar @{name}",
+ "status.bookmark": "Marcar",
+ "status.cancel_reblog_private": "Desboostar",
+ "status.cannot_reblog": "Ti-ci posta ne posse esser boostat",
+ "status.copy": "Copiar ligament al posta",
+ "status.delete": "Deleter",
+ "status.detailed_status": "Detalliat vise de conversation",
+ "status.direct": "Privatmen mentionar @{name}",
+ "status.direct_indicator": "Privat mention",
+ "status.edit": "Modificar",
+ "status.edited": "Modificat ye {date}",
+ "status.edited_x_times": "Modificat {count, plural, one {{count} vez} other {{count} vezes}}",
+ "status.embed": "Inbedar",
+ "status.favourite": "Favoritisar",
+ "status.filter": "Filtrar ti-ci posta",
+ "status.filtered": "Filtrat",
+ "status.hide": "Celar posta",
+ "status.history.created": "creat de {name} ye {date}",
+ "status.history.edited": "modificat de {name} ye {date}",
+ "status.load_more": "Cargar plu",
+ "status.media.open": "Cliccar por aperter",
+ "status.media.show": "Cliccar por monstrar",
+ "status.media_hidden": "Medie celat",
+ "status.mention": "Mentionar @{name}",
+ "status.more": "Plu",
+ "status.mute": "Silentiar @{name}",
+ "status.mute_conversation": "Silentiar conversation",
+ "status.open": "Expander ti-ci posta",
+ "status.pin": "Pinglar sur profil",
+ "status.pinned": "Pinglat posta",
+ "status.read_more": "Leer plu",
+ "status.reblog": "Boostar",
+ "status.reblog_private": "Boostar con li original visibilitÃĄ",
+ "status.reblogged_by": "{name} boostat",
+ "status.reblogs.empty": "Ancor nequi ha boostat ti-ci posta. Quande alqui fa it, ilu va aparir ci.",
+ "status.redraft": "Deleter & redacter",
+ "status.remove_bookmark": "Remover marcator",
+ "status.replied_to": "Respondet a {name}",
+ "status.reply": "Responder",
+ "status.replyAll": "Responder al fil",
+ "status.report": "Raportar @{name}",
+ "status.sensitive_warning": "Sensitiv contenete",
+ "status.share": "Partir",
+ "status.show_filter_reason": "Monstrar totvez",
+ "status.show_less": "Monstrar minu",
+ "status.show_less_all": "Monstrar minu por omno",
+ "status.show_more": "Monstrar plu",
+ "status.show_more_all": "Monstrar plu por omno",
+ "status.show_original": "Monstrar li original",
+ "status.title.with_attachments": "{user} postat {attachmentCount, plural, one {un atachament} other {{attachmentCount} atachamentes}}",
+ "status.translate": "Traducter",
+ "status.translated_from_with": "Traductet de {lang} per {provider}",
+ "status.uncached_media_warning": "Previse ne disponibil",
+ "status.unmute_conversation": "Dessilentiar conversation",
+ "status.unpin": "Despinglar de profil",
+ "subscribed_languages.lead": "Solmen postas in selectet lingues va aparir in tui hemal e listal tÊmpor-lineas pos li change. Selecte null por reciver postas in omni lingues.",
+ "subscribed_languages.save": "Conservar changes",
+ "subscribed_languages.target": "Changear abonnat lingues por {target}",
+ "tabs_bar.home": "Hem",
+ "tabs_bar.notifications": "Notificationes",
+ "time_remaining.days": "{number, plural, one {# die} other {# dies}} resta",
+ "time_remaining.hours": "{number, plural, one {# hor} other {# hores}} resta",
+ "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} resta",
+ "time_remaining.moments": "Momentes resta",
+ "time_remaining.seconds": "{number, plural, one {# second} other {# secondes}} resta",
+ "timeline_hint.remote_resource_not_displayed": "{resource} de altri servitores ne es monstrat.",
+ "timeline_hint.resources.followers": "Sequitores",
+ "timeline_hint.resources.follows": "Sequetes",
+ "timeline_hint.resources.statuses": "Plu old postas",
+ "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} persones}} durant li ultim {days, plural, one {die} other {{days} dies}}",
+ "trends.trending_now": "Actualmen populari",
+ "ui.beforeunload": "Tui Ãncomplet posta va esser perdit si tu lassa Mastodon.",
+ "units.short.billion": "{count}B",
+ "units.short.million": "{count}M",
+ "units.short.thousand": "{count}K",
+ "upload_area.title": "Trenar & lassar cader por cargar",
+ "upload_button.label": "Adjunter images, un video o un audio-file",
+ "upload_error.limit": "LÃmite de medie-cargationes transpassat.",
+ "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.edit": "Redacter",
+ "upload_form.thumbnail": "Changear previsual image",
+ "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",
+ "upload_modal.applying": "AplicantâĻ",
+ "upload_modal.choose_image": "Selecter image",
+ "upload_modal.description_placeholder": "Li Europan lingues es membres del sam familie. Lor separat existentie es un mite",
+ "upload_modal.detect_text": "Detecter text del image",
+ "upload_modal.edit_media": "Redacter medie",
+ "upload_modal.hint": "Clicca o trena li circul por selecter li focal punctu quel va esser sempre visibil in omni previse-images.",
+ "upload_modal.preparing_ocr": "Preparant OCRâĻ",
+ "upload_modal.preview_label": "Previse ({ratio})",
+ "upload_progress.label": "Cargant...",
+ "upload_progress.processing": "TractantâĻ",
+ "username.taken": "Ti usator-nÃŗmine es ja prendet. Trova altri",
+ "video.close": "Cluder video",
+ "video.download": "Descargar file",
+ "video.exit_fullscreen": "Exear plen-ecran",
+ "video.expand": "Expander video",
+ "video.fullscreen": "Plen-ecran",
+ "video.hide": "Celar video",
+ "video.mute": "Silentiar li son",
+ "video.pause": "Pausar",
+ "video.play": "Reproducter",
+ "video.unmute": "Dessilentiar li son"
+}
diff --git a/app/javascript/mastodon/locales/ig.json b/app/javascript/mastodon/locales/ig.json
index c24d28eea90..a4f72684222 100644
--- a/app/javascript/mastodon/locales/ig.json
+++ b/app/javascript/mastodon/locales/ig.json
@@ -6,7 +6,6 @@
"account.follow": "Soro",
"account.followers": "Ndáģ na-eso",
"account.following": "Na-eso",
- "account.follows_you": "Na-eso gáģ",
"account.mute": "Mee ogbi @{name}",
"account.unfollow": "KwáģĨsáģ iso",
"account_note.placeholder": "Click to add a note",
@@ -108,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",
@@ -143,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 552debdb50b..a9dd32c06ca 100644
--- a/app/javascript/mastodon/locales/io.json
+++ b/app/javascript/mastodon/locales/io.json
@@ -20,6 +20,7 @@
"account.blocked": "Blokusita",
"account.browse_more_on_origin_server": "Videz pluse che la originala profilo",
"account.cancel_follow_request": "Desendez sequodemando",
+ "account.copy": "Kopiez ligilo al profilo",
"account.direct": "Private mencionez @{name}",
"account.disable_notifications": "Cesez avizar me kande @{name} postas",
"account.domain_blocked": "Domain hidden",
@@ -36,9 +37,9 @@
"account.following": "Sequata",
"account.following_counter": "{count, plural, one {{counter} Sequas} other {{counter} Sequanti}}",
"account.follows.empty": "Ca uzanto ne sequa irgu til nun.",
- "account.follows_you": "Sequas tu",
"account.go_to_profile": "Irez al profilo",
- "account.hide_reblogs": "Celez busti de @{name}",
+ "account.hide_reblogs": "Celez repeti de @{name}",
+ "account.in_memoriam": "Memorige.",
"account.joined_short": "Juntita",
"account.languages": "Chanjez abonita lingui",
"account.link_verified_on": "Proprieteso di ca ligilo kontrolesis ye {date}",
@@ -58,7 +59,7 @@
"account.requested": "Vartante aprobo",
"account.requested_follow": "{name} demandis sequar tu",
"account.share": "Partigez profilo di @{name}",
- "account.show_reblogs": "Montrez busti de @{name}",
+ "account.show_reblogs": "Montrez repeti de @{name}",
"account.statuses_counter": "{count, plural, one {{counter} Posto} other {{counter} Posti}}",
"account.unblock": "Desblokusar @{name}",
"account.unblock_domain": "Desblokusar {domain}",
@@ -85,8 +86,7 @@
"announcement.announcement": "Anunco",
"attachments_list.unprocessed": "(neprocedita)",
"audio.hide": "Celez audio",
- "autosuggest_hashtag.per_week": "{count} dum singla semano",
- "boost_modal.combo": "Tu povas presar sur {combo} por omisar co en la venonta foyo",
+ "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.",
"bundle_column_error.error.title": "Ach!",
@@ -142,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",
@@ -180,7 +170,7 @@
"confirmations.mute.explanation": "Co celigos posti de oli e posti quo mencionas oli, ma ol ankore permisas oli vidar vua posti e sequar vu.",
"confirmations.mute.message": "Ka vu certe volas silencigar {name}?",
"confirmations.redraft.confirm": "Efacez e riskisez",
- "confirmations.redraft.message": "Ka vu certe volas efacar ca posto e riskisigar ol? Favoriziti e busti esos perdita, e respondi al posto originala esos orfanigita.",
+ "confirmations.redraft.message": "Ka vu certe volas efacar ca posto e riskisigar ol? Favoriziti e repeti esos perdita, e respondi al posto originala esos orfanigita.",
"confirmations.reply.confirm": "Respondez",
"confirmations.reply.message": "Respondar nun remplos mesajo quon vu nun igas. Ka vu certe volas durar?",
"confirmations.unfollow.confirm": "Desequez",
@@ -189,6 +179,7 @@
"conversation.mark_as_read": "Markizez quale lektita",
"conversation.open": "Videz konverso",
"conversation.with": "Kun {names}",
+ "copy_icon_button.copied": "Kopiita",
"copypaste.copied": "Kopiesis",
"copypaste.copy_to_clipboard": "Kopiez",
"directory.federated": "De savita fediverso",
@@ -200,7 +191,7 @@
"dismissable_banner.community_timeline": "Co esas maxim recenta publika posti de personi quo havas konto quo hostigesas da {domain}.",
"dismissable_banner.dismiss": "Ignorez",
"dismissable_banner.explore_links": "Ca nova rakonti parolesas da personi che ca e altra servili di necentraligita situo nun.",
- "dismissable_banner.explore_statuses": "Yen posti del tota reto sociala qui esas populara hodie. Posti plu nova kun plu busti e favoriziti esas rangizita plu alte.",
+ "dismissable_banner.explore_statuses": "Yen posti del tota reto sociala qui esas populara hodie. Posti plu nova kun plu repeti e favoriziti esas rangizita plu alte.",
"dismissable_banner.explore_tags": "Ca hashtagi bezonas plu famoza inter personi che ca e altra servili di la necentraligita situo nun.",
"dismissable_banner.public_timeline": "Yen la posti maxim recenta da personi che la reto sociala quin personi che {domain} sequas.",
"embed.instructions": "Embed this status on your website by copying the code below.",
@@ -220,6 +211,7 @@
"emoji_button.search_results": "Trovuri",
"emoji_button.symbols": "Simboli",
"emoji_button.travel": "Vizito & Plasi",
+ "empty_column.account_hides_collections": "Ca uzanto selektis ne publikigar ca informo",
"empty_column.account_suspended": "Konto restriktesis",
"empty_column.account_timeline": "No toots here!",
"empty_column.account_unavailable": "Profilo esas nedisponebla",
@@ -294,14 +286,18 @@
"hashtag.column_settings.tag_mode.any": "Irga co",
"hashtag.column_settings.tag_mode.none": "Nula co",
"hashtag.column_settings.tag_toggle": "Include additional tags in this column",
+ "hashtag.counter_by_accounts": "{count, plural, one {{counter} partoprenanto} other {{counter} partoprenanti}}",
+ "hashtag.counter_by_uses": "{count, plural, one {{counter} posto} other {{counter} posti}}",
+ "hashtag.counter_by_uses_today": "{count, plural, one {{counter} posto} other {{counter} posti}} hodie",
"hashtag.follow": "Sequez hashtago",
"hashtag.unfollow": "Desequez hashtago",
+ "hashtags.and_other": "âĻe {count, plural, one {# plusa}other {# plusa}}",
"home.actions.go_to_explore": "Videz quo es populara nun",
"home.actions.go_to_suggestions": "Trovez personi por sequar",
"home.column_settings.basic": "Simpla",
"home.column_settings.show_reblogs": "Montrar repeti",
"home.column_settings.show_replies": "Montrar respondi",
- "home.explore_prompt.body": "Vua hemala fluo havos mixuro de la hashtagi quin vu selektis sequar, la personi quin vu selektis sequar, e la posti quin ili bustis. Se to semblas tro tacanta, vu darfas volar:",
+ "home.explore_prompt.body": "Vua hemala fluo havos mixuro de la hashtagi quin vu selektis sequar, la personi quin vu selektis sequar, e la posti quin ili repetis. Se to semblas tro tacanta, vu darfas volar:",
"home.explore_prompt.title": "Co es vua hemo en Mastodon.",
"home.hide_announcements": "Celez anunci",
"home.pending_critical_update.body": "Voluntez aktualigar vua Mastodon-servilo tam balde kam es posibla!",
@@ -310,7 +306,7 @@
"home.show_announcements": "Montrez anunci",
"interaction_modal.description.favourite": "Kun konto che Mastodon, vu povas favorizar ca posto por savigar la autoro ke vu prizas ol e sparar ol por pose.",
"interaction_modal.description.follow": "Per konto che Mastodon, vu povas sequar {name} por ganar ola posti en vua hemniuzeto.",
- "interaction_modal.description.reblog": "Per konto che Mastodon, vu povas bustizar ca posti por partigar kun sua sequanti.",
+ "interaction_modal.description.reblog": "Per konto che Mastodon, vu povas repetar ca posti por dissemar lo a vua propra sequati.",
"interaction_modal.description.reply": "Per konto che Mastodon, vu povas respondar ca posto.",
"interaction_modal.login.action": "Irar a hemo",
"interaction_modal.login.prompt": "Domeno di vua hemala servilo, ex. mastodon.social",
@@ -321,14 +317,14 @@
"interaction_modal.sign_in_hint": "Averto: To es la retsituo ube vu kreis konto. Se vu ne rimemoras, serchez vua bonvenanta e-posto. Vu anke povas enpozar vua kompleta uzantnomo! (ex. @Mastodon@mastodon.social)",
"interaction_modal.title.favourite": "Favorizez ca posto da {name}",
"interaction_modal.title.follow": "Sequez {name}",
- "interaction_modal.title.reblog": "Bustizez posto di {name}",
+ "interaction_modal.title.reblog": "Repetez posto di {name}",
"interaction_modal.title.reply": "Respondez posto di {name}",
"intervals.full.days": "{number, plural, one {# dio} other {# dii}}",
"intervals.full.hours": "{number, plural, one {# horo} other {# hori}}",
"intervals.full.minutes": "{number, plural, one {# minuto} other {# minuti}}",
"keyboard_shortcuts.back": "to navigate back",
"keyboard_shortcuts.blocked": "to open blocked users list",
- "keyboard_shortcuts.boost": "to boost",
+ "keyboard_shortcuts.boost": "Repetez posto",
"keyboard_shortcuts.column": "to focus a status in one of the columns",
"keyboard_shortcuts.compose": "to focus the compose textarea",
"keyboard_shortcuts.description": "Deskripto",
@@ -383,6 +379,7 @@
"lists.search": "Trovez inter personi quon vu sequas",
"lists.subheading": "Vua listi",
"load_pending": "{count, plural, one {# nova kozo} other {# nova kozi}}",
+ "loading_indicator.label": "KarganteâĻ",
"media_gallery.toggle_visible": "Chanjar videbleso",
"moved_to_account_banner.text": "Vua konto {disabledAccount} es nune desaktiva pro ke vu movis a {movedToAccount}.",
"mute_modal.duration": "Durado",
@@ -397,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",
@@ -448,7 +444,7 @@
"notifications.column_settings.unread_notifications.highlight": "Briligez nelektita avizi",
"notifications.column_settings.update": "Modifikati:",
"notifications.filter.all": "Omna",
- "notifications.filter.boosts": "Busti",
+ "notifications.filter.boosts": "Repeti",
"notifications.filter.favourites": "Favoriziti",
"notifications.filter.follows": "Sequati",
"notifications.filter.mentions": "Mencioni",
@@ -471,6 +467,17 @@
"onboarding.follows.empty": "Regretinde, nula rezultajo povas montresar nune. Vu povas esforcar serchar, o irar al explorala pagino por trovar personi sequinda, o esforcar itere pose.",
"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": "Trovebligez mea profilo",
+ "onboarding.profile.discoverable_hint": "Se vu selektas deskovrebleso che Mastodon, vua posti povas aparar en sercho-rezultaji e populari, e vua profilo forsan sugestesos a personi kun interesi simila a vua.",
+ "onboarding.profile.display_name": "Publika nomo",
+ "onboarding.profile.display_name_hint": "Vua tota nomo o vua gaya nomoâĻ",
+ "onboarding.profile.lead": "Vu sempre povas kompletigar co plu tarde en la opcioni, ube mem plua personalizanta opcioni es disponebla.",
+ "onboarding.profile.note": "Biografio",
+ "onboarding.profile.note_hint": "Vu povas @mencionar altra personi o #hashtagiâĻ",
+ "onboarding.profile.save_and_continue": "Preservez e avancez",
+ "onboarding.profile.title": "Kompletigez la profilo",
+ "onboarding.profile.upload_avatar": "Kargez profiloportreto",
+ "onboarding.profile.upload_header": "Kargez profilokapimajo",
"onboarding.share.lead": "Savigez personi quale ili povas trovar vu che Mastodon!",
"onboarding.share.message": "Me esas {username} che #Mastodon! Venez e sequez me ye {url}",
"onboarding.share.next_steps": "Kozi quin vu darfas volar facar sequante:",
@@ -482,7 +489,7 @@
"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": "Facar vua unesma posto",
- "onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
+ "onboarding.steps.setup_profile.body": "Vu interagos plue kun profilo detalizita.",
"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",
@@ -500,16 +507,10 @@
"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",
"refresh": "Rifreshez",
"regeneration_indicator.label": "ChargasâĻ",
"regeneration_indicator.sublabel": "Vua hemniuzeto preparesas!",
@@ -580,6 +581,8 @@
"search.quick_action.status_search": "Posti qui asortas {x}",
"search.search_or_paste": "Serchar o pozar URL",
"search_popout.full_text_search_disabled_message": "Nedisponebla che {domain}.",
+ "search_popout.full_text_search_logged_out_message": "Nur disponebla enirite.",
+ "search_popout.language_code": "ISO linguokodexo",
"search_popout.options": "Opcioni serchala",
"search_popout.quick_actions": "Agi rapida",
"search_popout.recent": "Lasta serchi",
@@ -607,8 +610,8 @@
"status.admin_status": "Open this status in the moderation interface",
"status.block": "Restriktez @{name}",
"status.bookmark": "Libromarko",
- "status.cancel_reblog_private": "Debustez",
- "status.cannot_reblog": "Ca posto ne povas bustesas",
+ "status.cancel_reblog_private": "Desrepetez",
+ "status.cannot_reblog": "Ca posto ne povas repetesar",
"status.copy": "Copy link to status",
"status.delete": "Efacar",
"status.detailed_status": "Detala konversvido",
@@ -636,10 +639,10 @@
"status.pin": "Pinglagez che profilo",
"status.pinned": "Pinned toot",
"status.read_more": "Lektez pluse",
- "status.reblog": "Repetar",
- "status.reblog_private": "Bustez kun originala videbleso",
- "status.reblogged_by": "{name} repetita",
- "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
+ "status.reblog": "Repetez",
+ "status.reblog_private": "Repetez kun originala videbleso",
+ "status.reblogged_by": "{name} repetis",
+ "status.reblogs.empty": "Nulu ja repetis ca posto. Kande ulu facas lo, lu montresos hike.",
"status.redraft": "Efacez e riskisigez",
"status.remove_bookmark": "Efacez libromarko",
"status.replied_to": "Respondis a {name}",
@@ -686,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 0df1a5e7539..dfece102bb2 100644
--- a/app/javascript/mastodon/locales/is.json
+++ b/app/javascript/mastodon/locales/is.json
@@ -32,13 +32,13 @@
"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}}}",
"account.following": "Fylgist með",
"account.following_counter": "{count, plural, one {Fylgist með: {counter}} other {Fylgist með: {counter}}}",
"account.follows.empty": "Ãessi notandi fylgist ennÃžÃĄ ekki með neinum.",
- "account.follows_you": "Fylgir ÞÊr",
"account.go_to_profile": "Fara à notandasnið",
"account.hide_reblogs": "Fela endurbirtingar fyrir @{name}",
"account.in_memoriam": "Minning.",
@@ -53,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",
@@ -88,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.",
@@ -147,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",
@@ -407,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ð",
@@ -525,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ð",
@@ -550,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",
@@ -714,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 fa659506a17..920b80d5a61 100644
--- a/app/javascript/mastodon/locales/it.json
+++ b/app/javascript/mastodon/locales/it.json
@@ -32,13 +32,13 @@
"account.featured_tags.last_status_never": "Nessun post",
"account.featured_tags.title": "Hashtag in evidenza di {name}",
"account.follow": "Segui",
+ "account.follow_back": "Segui a tua volta",
"account.followers": "Follower",
"account.followers.empty": "Ancora nessuno segue questo utente.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Follower}}",
"account.following": "Seguiti",
"account.following_counter": "{count, plural, one {{counter} Seguiti} other {{counter} Seguiti}}",
"account.follows.empty": "Questo utente non segue ancora nessuno.",
- "account.follows_you": "Ti segue",
"account.go_to_profile": "Vai al profilo",
"account.hide_reblogs": "Nascondi potenziamenti da @{name}",
"account.in_memoriam": "In memoria.",
@@ -53,6 +53,7 @@
"account.mute_notifications_short": "Silenzia notifiche",
"account.mute_short": "Silenzia",
"account.muted": "Mutato",
+ "account.mutual": "Reciproco",
"account.no_bio": "Nessuna descrizione fornita.",
"account.open_original_page": "Apri la pagina originale",
"account.posts": "Post",
@@ -88,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.",
@@ -145,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",
@@ -407,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",
@@ -525,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",
@@ -550,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",
@@ -714,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 3cb0565d0e6..e0cc96d571c 100644
--- a/app/javascript/mastodon/locales/ja.json
+++ b/app/javascript/mastodon/locales/ja.json
@@ -21,7 +21,7 @@
"account.blocked": "ãããã¯æ¸ãŋ",
"account.browse_more_on_origin_server": "ãĒãĸãŧãã§čĄ¨į¤ē",
"account.cancel_follow_request": "ããŠããŧãĒã¯ã¨ãšããŽåãæļã",
- "account.copy": "ããããŖãŧãĢãŽãĒãŗã¯ããŗããŧããĻä¸ãã",
+ "account.copy": "ããããŖãŧãĢã¸ãŽãĒãŗã¯ããŗããŧ",
"account.direct": "@{name}ãããĢéå
Ŧéã§ãĄãŗãˇã§ãŗ",
"account.disable_notifications": "@{name}ãããŽæį¨ŋæãŽéįĨãåæĸ",
"account.domain_blocked": "ããĄã¤ãŗãããã¯ä¸",
@@ -32,13 +32,13 @@
"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} ããŠãã¯ãŧ",
"account.following": "ããŠããŧä¸",
"account.following_counter": "{counter} ããŠããŧ",
"account.follows.empty": "ãžã čĒ°ãããŠããŧããĻããžããã",
- "account.follows_you": "ããŠããŧãããĻããžã",
"account.go_to_profile": "ããããŖãŧãĢããŧã¸ã¸",
"account.hide_reblogs": "@{name}ãããããŽããŧãšããé襨į¤ē",
"account.in_memoriam": "æ
äēēãå˛ãã§ã",
@@ -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": "ãĄããŖãĸãé˛čĻ§æŗ¨æãĢãã",
- "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": "ãããã¯",
@@ -192,7 +182,7 @@
"conversation.mark_as_read": "æĸčĒãĢãã",
"conversation.open": "äŧ芹ã襨į¤ē",
"conversation.with": "{names}",
- "copy_icon_button.copied": "ã¯ãĒããããŧããĢãŗããŧããã",
+ "copy_icon_button.copied": "ãŗããŧããžãã",
"copypaste.copied": "ãŗããŧããžãã",
"copypaste.copy_to_clipboard": "ã¯ãĒããããŧããĢãŗããŧ",
"directory.federated": "æĸįĨãŽéŖåãã",
@@ -392,7 +382,7 @@
"lists.search": "ããŠããŧããĻããäēēãŽä¸ããæ¤į´ĸ",
"lists.subheading": "ããĒããŽãĒãšã",
"load_pending": "{count}äģļãŽæ°į",
- "loading_indicator.label": "",
+ "loading_indicator.label": "čĒãŋčžŧãŋä¸âĻ",
"media_gallery.toggle_visible": "{number, plural, one {įģåãéãã} other {įģåãéãã}}",
"moved_to_account_banner.text": "ããĒããŽãĸãĢãĻãŗãã{disabledAccount}ãã¯ã{movedToAccount}ããĢį§ģåããããįžå¨įĄåšãĢãĒãŖãĻããžãã",
"mute_modal.duration": "ããĨãŧãããæé",
@@ -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": "ããŖãĢãŋãŧč¨åŽ",
@@ -481,17 +470,17 @@
"onboarding.follows.empty": "襨į¤ēã§ããįĩæã¯ãããžãããæ¤į´ĸãã¨ã¯ãšãããŧãŠãŧãäŊŋãŖããããģããŽãĸãĢãĻãŗããããŠããŧããããåžã§ããä¸åēĻčŠĻããã ããã",
"onboarding.follows.lead": "ããŧã ãŋã¤ã ãŠã¤ãŗã¯MastodonãŽčģ¸čļŗã¨ãĒãå ´æã§ãããããããŽãĻãŧãļãŧãããŠããŧãããã¨ã§ãããŧã ãŋã¤ã ãŠã¤ãŗã¯ãããĢãããã§ãããããããŽãĢãĒããžããæã¯ãããĢããããããŽãĸãĢãĻãŗãããäŊäēēãããŠããŧããĻãŋãžããã:",
"onboarding.follows.title": "ããŧã ãŋã¤ã ãŠã¤ãŗãåãã",
- "onboarding.profile.discoverable": "čĒåãŽããããŖãŧãĢãįēčĻã§ããĒããããĢãã",
- "onboarding.profile.discoverable_hint": "ããšãããŗãŽčĻã¤ããããããæŠčŊãåäēēæ
å ąãåŠį¨ãããã¨ãĢæŋčĢžããã¨ãããĒããŽæį¨ŋãæ¤į´ĸįĩæãããŦãŗããĢ襨į¤ēããããã¨ããããžãããžããããĒããŽããããŖãŧãĢãããĒãã¨äŧŧãčåŗéĸåŋãæã¤äēēãĢææĄããããã¨ããããžãã",
+ "onboarding.profile.discoverable": "čĒåãŽããããŖãŧãĢãčĻã¤ãããããããĢãã",
+ "onboarding.profile.discoverable_hint": "MastodonãŽãčĻã¤ãããæŠčŊãĢãĒããã¤ãŗããã¨ãããĒããŽæį¨ŋãæ¤į´ĸįĩæãããŦãŗããĢ襨į¤ēããããã¨ããããžãããžããããĒããĢäŧŧãéĸåŋãæã¤äēēãĢããããŖãŧãĢãããããããããã¨ããããžãã",
"onboarding.profile.display_name": "襨į¤ēå",
- "onboarding.profile.display_name_hint": "ããĒããŽããĢããŧã ããžãã¯æĨŊããååâĻ",
- "onboarding.profile.lead": "ããŽãã¨ã¯åžã§ãã¤ã§ãč¨åŽããåŽäēããããã¨ãåēæĨãžãããč¨åŽã§ã¯æ´ãĢå¤ããŽãĢãšãŋãã¤ãēãåŠį¨å¯čŊãĢãĒãŖãĻããžãã",
+ "onboarding.profile.display_name_hint": "ããĢããŧã ããããã¯éĸįŊãååãĒãŠ",
+ "onboarding.profile.lead": "ãã¨ã§ãã¤ã§ãäŋŽæŖã§ããžãããč¨åŽįģéĸãĢã¯ããäģĨå¤ãŽãĢãšãŋãã¤ãēé
įŽããããžãã",
"onboarding.profile.note": "čĒåˇąį´šäģ",
- "onboarding.profile.note_hint": "@ãäŊŋį¨ããĻäģãŽäēēã
ãĢãĄãŗãˇã§ãŗããããã¨ãã§ããžãããžã#ã§ãããˇãĨãŋã°ãäŊŋį¨ã§ããžã",
- "onboarding.profile.save_and_continue": "äŋåããĻããįļčĄããĻä¸ãã",
+ "onboarding.profile.note_hint": "ãģããŽãĻãŧãļãŧã¸ãŽãĄãŗãˇã§ãŗ (@mention) ãã #ãããˇãĨãŋã° ãäŊŋį¨ã§ããžã",
+ "onboarding.profile.save_and_continue": "äŋåããĻįļãã",
"onboarding.profile.title": "ããããŖãŧãĢãŽč¨åŽ",
- "onboarding.profile.upload_avatar": "ããããŖãŧãĢįģåããĸããããŧãããĻãã ãã",
- "onboarding.profile.upload_header": "ããããŖãŧãĢãŽããããŧįģåããĸããããŧãããĻä¸ãã",
+ "onboarding.profile.upload_avatar": "ããããŖãŧãĢįģåããĸããããŧã",
+ "onboarding.profile.upload_header": "ããããŖãŧãĢãŽããããŧįģåããĸããããŧã",
"onboarding.share.lead": "æ°ããMastodonãŽãĸãĢãĻãŗãããŋããĒãĢį´šäģããžãããã",
"onboarding.share.message": "ã{username}ã㧠#Mastodon ã¯ãããžããīŧ {url}",
"onboarding.share.next_steps": "æŦĄãŽãšããããĢé˛ã:",
@@ -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": "ãããã",
@@ -606,6 +588,7 @@
"search.quick_action.status_search": "{x}ãĢ芲åŊããæį¨ŋ",
"search.search_or_paste": "æ¤į´ĸãžãã¯URLãå
Ĩå",
"search_popout.full_text_search_disabled_message": "{domain}ã§ã¯åŠį¨ã§ããžããã",
+ "search_popout.full_text_search_logged_out_message": "ãã°ã¤ãŗæãŽãŋåŠį¨ã§ããžãã",
"search_popout.language_code": "ISOč¨čĒãŗãŧã",
"search_popout.options": "æ¤į´ĸãĒããˇã§ãŗ",
"search_popout.quick_actions": "ã¯ã¤ãã¯æäŊ",
@@ -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/ka.json b/app/javascript/mastodon/locales/ka.json
index 875ac3c195a..8628cb38a22 100644
--- a/app/javascript/mastodon/locales/ka.json
+++ b/app/javascript/mastodon/locales/ka.json
@@ -15,7 +15,6 @@
"account.featured_tags.last_status_never": "áááĄáĸááá áá áá ááĄ",
"account.follow": "ááá§ááá",
"account.followers": "ááááááá ááá",
- "account.follows_you": "áááá§ááááá",
"account.hide_reblogs": "áááááááᥠááŖáĄáĸááá @{name}-áĄááá",
"account.media": "ááááá",
"account.mention": "ááĄááŽáááá @{name}",
@@ -37,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": "áááŽáŖá áá",
@@ -69,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}?",
@@ -172,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": "áĄáááá",
@@ -212,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}ááĻ",
@@ -280,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 e9d4b57de83..d9388c70480 100644
--- a/app/javascript/mastodon/locales/kab.json
+++ b/app/javascript/mastodon/locales/kab.json
@@ -22,7 +22,6 @@
"account.followers_counter": "{count, plural, one {{count} n umeá¸far} other {{count} n imeá¸faren}}",
"account.following_counter": "{count, plural, one {{counter} yettwaá¸faren} other {{counter} yettwaá¸faren}}",
"account.follows.empty": "Ar tura, amseqdac-agi ur yeášášafaáš yiwen.",
- "account.follows_you": "Yeášášafaáš-ik",
"account.hide_reblogs": "Ffer ayen i ibeášášu @{name}",
"account.link_verified_on": "TaÉŖara n useÉŖwen-a tettwasenqed ass n {date}",
"account.locked_info": "Amiá¸an-agi uslig isekweáš. D bab-is kan i izemren ad yeĮ§Į§, s ufus-is, win ara t-iá¸efášen.",
@@ -54,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 !",
@@ -100,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",
@@ -285,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",
@@ -360,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âĻ",
@@ -473,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 189d792e386..1f6cc78a57e 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",
@@ -34,7 +35,6 @@
"account.following": "ĐаСŅĐģŅĐŧ",
"account.following_counter": "{count, plural, one {{counter} ĐļаСŅĐģŅĐŧ} other {{counter} ĐļаСŅĐģŅĐŧ}}",
"account.follows.empty": "ĐŌąĐģ ŌĐžĐģĐ´Đ°ĐŊŅŅŅ ĶĐģŅ ĐĩŅĐēŅĐŧĐŗĐĩ ĐļаСŅĐģĐŧĐ°ŌĐ°ĐŊ.",
- "account.follows_you": "ĐĄŅСĐŗĐĩ ĐļаСŅĐģŌĐ°ĐŊ",
"account.go_to_profile": "ĐŅĐžŅиĐģŅĐŊĐĩ ĶŠŅŅ",
"account.hide_reblogs": "@{name} ĐąŅŅŅĐ°ŅŅĐŊ ĐļĐ°ŅŅŅŅ",
"account.joined_short": "ŌĐžŅŅĐģŌĐ°ĐŊ",
@@ -64,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": "ĐĐ°ĐąŅ",
@@ -99,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": "ĐŌąŌĐ°ŅŅĐ°Ņ",
@@ -250,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": "ĐаСŅĐģŅĐŧĐ´Đ°Ņ ĐļĶĐŊĐĩ ĐžŌŅŅĐŧĐ°ĐŊĐ´Đ°Ņ",
@@ -311,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": "ĐĐĩŅĐŗŅĐģŅĐēŅŅ ĐļĐĩĐģŅ ŌŌąŅŅĐģŅĐ´Đ°!",
@@ -399,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 473690070fc..396aebbdf22 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 46caf32b072..eae7f8faea0 100644
--- a/app/javascript/mastodon/locales/ko.json
+++ b/app/javascript/mastodon/locales/ko.json
@@ -32,13 +32,13 @@
"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} íëĄė",
"account.following": "íëĄė",
"account.following_counter": "{counter} íëĄė",
"account.follows.empty": "ė´ ėŦėŠėë ėė§ ėëŦ´ë íëĄė°íęŗ ėė§ ėėĩëë¤.",
- "account.follows_you": "ëëĨŧ íëĄė°íŠëë¤",
"account.go_to_profile": "íëĄíëĄ ė´ë",
"account.hide_reblogs": "@{name}ė ëļė¤í¸ëĨŧ ė¨ę¸°ę¸°",
"account.in_memoriam": "ęŗ ė¸ė ęŗė ė
ëë¤.",
@@ -53,6 +53,7 @@
"account.mute_notifications_short": "ėëĻŧ 뎤í¸",
"account.mute_short": "뎤í¸",
"account.muted": "뎤í¸ë¨",
+ "account.mutual": "ėí¸ íëĄė°",
"account.no_bio": "ė ęŗĩë ė¤ëĒ
ė´ ėėĩëë¤.",
"account.open_original_page": "ėëŗ¸ íė´ė§ ė´ę¸°",
"account.posts": "ę˛ėëŦŧ",
@@ -67,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": "ëŽ¤í¸ í´ė ",
@@ -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": "ėė˛í íė´ė§ëĨŧ ë ëë§ í ė ėėĩëë¤. ė íŦė ėŊëė ë˛ęˇ¸ę° ėęą°ë, ë¸ëŧė°ė í¸íėą ëŦ¸ė ėŧ ė ėėĩëë¤.",
@@ -147,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": "ė°¨ë¨",
@@ -239,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": "ėė§ ėëŦ´ë 뎤í¸íė§ ėėėĩëë¤.",
@@ -302,8 +302,8 @@
"hashtag.counter_by_accounts": "{count, plural, other {{counter} ëĒ
ė ė°¸ėŦė}}",
"hashtag.counter_by_uses": "{count, plural, other {{counter} ę°ė ę˛ėëŦŧ}}",
"hashtag.counter_by_uses_today": "ė¤ë {count, plural, 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": "íëĄė°í ėŦë ė°žę¸°",
@@ -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": "ë§ė¤í ë ë´ė¸ ëĒ¨ë",
"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": "ėļė˛í¨",
@@ -550,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": "ë˛ė ė¸ ëŦ¸ė ",
@@ -658,7 +660,7 @@
"status.media_hidden": "미ëė´ ė¨ę˛¨ė§",
"status.mention": "@{name} ëėę˛ ëŠė
",
"status.more": "ėė¸í",
- "status.mute": "@{name} ëė 뎤í¸í기",
+ "status.mute": "@{name} 뎤í¸",
"status.mute_conversation": "ė´ ëíëĨŧ 뎤í¸",
"status.open": "ėė¸ ė ëŗ´ íė",
"status.pin": "ęŗ ė ",
@@ -673,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": "꡸ëĨ íėí기",
@@ -682,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": "ë§ëĻŦëŗ´ę¸° íėŠëė§ ėė",
@@ -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/ku.json b/app/javascript/mastodon/locales/ku.json
index b9405426774..4a0fd671db9 100644
--- a/app/javascript/mastodon/locales/ku.json
+++ b/app/javascript/mastodon/locales/ku.json
@@ -36,7 +36,6 @@
"account.following": "DiÅopÃŽne",
"account.following_counter": "{count, plural, one {{counter} DiÅopÃŽne} other {{counter} DiÅopÃŽne}}",
"account.follows.empty": "Ev bikarhÃĒner hin kesekÃŽ heya niha neÅopandiye.",
- "account.follows_you": "Te diÅopÃŽne",
"account.go_to_profile": "Biçe bo profÃŽlÃĒ",
"account.hide_reblogs": "BilindkirinÃĒn ji @{name} veÅÃĒre",
"account.in_memoriam": "Di bÃŽranÃŽnÃĒ de.",
@@ -78,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.",
@@ -130,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",
@@ -352,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ÃĒ",
@@ -438,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",
@@ -609,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 ca08ca836eb..e42f50aeffc 100644
--- a/app/javascript/mastodon/locales/kw.json
+++ b/app/javascript/mastodon/locales/kw.json
@@ -20,7 +20,6 @@
"account.followers_counter": "{count, plural, one {{counter} Holyer} other {{counter} Holyer}}",
"account.following_counter": "{count, plural, one {Ow holya {counter}} other {Ow holya {counter}}}",
"account.follows.empty": "Ny wra'n devnydhyer ma holya nagonan hwath.",
- "account.follows_you": "Y'th hol",
"account.hide_reblogs": "Kudha kenerthow a @{name}",
"account.link_verified_on": "Perghenogeth an kolm ma a veu checkys dhe {date}",
"account.locked_info": "Studh privetter an akont ma yw alhwedhys. An perghen a wra dasweles dre leuv piw a yll aga holya.",
@@ -46,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",
@@ -81,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",
@@ -245,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",
@@ -317,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!",
@@ -408,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 e4bd9365a87..698b3da4c33 100644
--- a/app/javascript/mastodon/locales/la.json
+++ b/app/javascript/mastodon/locales/la.json
@@ -1,6 +1,6 @@
{
"about.contact": "Ratio:",
- "about.domain_blocks.no_reason_available": "ratio abdere est",
+ "about.domain_blocks.no_reason_available": "Ratio abdere est",
"account.account_note_header": "Annotatio",
"account.badges.bot": "Robotum",
"account.badges.group": "Congregatio",
@@ -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",
@@ -49,7 +47,7 @@
"dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.",
"dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.",
"embed.instructions": "Embed this status on your website by copying the code below.",
- "emoji_button.food": "cibus et potus",
+ "emoji_button.food": "Cibus et potus",
"emoji_button.people": "Homines",
"emoji_button.search": "Quaerere...",
"empty_column.account_timeline": "Hic nulla contributa!",
@@ -57,13 +55,13 @@
"empty_column.home": "Your home timeline is empty! Follow more people to fill it up. {suggestions}",
"empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
"explore.trending_statuses": "Contributa",
- "generic.saved": "servavit",
+ "generic.saved": "Servavit",
"hashtag.column_settings.tag_toggle": "Include additional tags in this column",
- "keyboard_shortcuts.back": "to navigate back",
- "keyboard_shortcuts.blocked": "to open blocked users list",
- "keyboard_shortcuts.boost": "to boost",
- "keyboard_shortcuts.column": "to focus a status in one of the columns",
- "keyboard_shortcuts.compose": "to focus the compose textarea",
+ "keyboard_shortcuts.back": "Re navigare",
+ "keyboard_shortcuts.blocked": "Aperire listam usorum obstructorum",
+ "keyboard_shortcuts.boost": "Inlustrare publicatio",
+ "keyboard_shortcuts.column": "Columnam dirigere",
+ "keyboard_shortcuts.compose": "TextArea Compositi Attendere",
"keyboard_shortcuts.description": "Descriptio",
"keyboard_shortcuts.direct": "to open direct messages column",
"keyboard_shortcuts.down": "to move down in the list",
@@ -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
new file mode 100644
index 00000000000..ba99f5cd308
--- /dev/null
+++ b/app/javascript/mastodon/locales/lad.json
@@ -0,0 +1,718 @@
+{
+ "about.blocks": "Sirvidores moderados",
+ "about.contact": "Kontakto:",
+ "about.disclaimer": "Mastodon es un programario libero, kon kodiche avierto i una marka komersiala de Mastodon gGmbH.",
+ "about.domain_blocks.no_reason_available": "Razon no desponivle",
+ "about.domain_blocks.preamble": "Mastodon djeneralmente te permete ver kontenido de i enteraktuar kon utilizadores de kualseker otro sirvidor en el fediverso. Estas son las eksepsiones en este sirvidor en partikolar.",
+ "about.domain_blocks.silenced.explanation": "\"Djeneralmente no veras profiles i kontenido de este sirvidor, salvo ke eksplisitamente lo bushkes o sigas algun kuento de el.",
+ "about.domain_blocks.silenced.title": "Limitado",
+ "about.domain_blocks.suspended.explanation": "Dingunos datos de este sirvidor sera prosesado, magazinado o enterkambiado kon este sirvidor. Enteraksyon o komunikasyon kon sus utilizadores sera imposivle.",
+ "about.domain_blocks.suspended.title": "Suspendido",
+ "about.not_available": "Esta enformasyon no esta desponivle en este sirvidor.",
+ "about.powered_by": "Redes sosyalas desentralizadas kon uzo de {mastodon}",
+ "about.rules": "Reglas del sirvidor",
+ "account.account_note_header": "Nota",
+ "account.add_or_remove_from_list": "Adjusta a o kita de listas",
+ "account.badges.bot": "Bot",
+ "account.badges.group": "Grupo",
+ "account.block": "Bloka @{name}",
+ "account.block_domain": "Bloka el domeno {domain}",
+ "account.block_short": "Bloka",
+ "account.blocked": "Blokado",
+ "account.browse_more_on_origin_server": "Ve mas en el profil orijinal",
+ "account.cancel_follow_request": "Anula solisitud de segir",
+ "account.copy": "Kopia atadijo de profil",
+ "account.direct": "Enmenta a @{name} en privado",
+ "account.disable_notifications": "No me avizes mas sovre publikasyones de @{name}",
+ "account.domain_blocked": "Domeno blokado",
+ "account.edit_profile": "Edita profil",
+ "account.enable_notifications": "Avizame kuando @{name} publike",
+ "account.endorse": "Avalia en profil",
+ "account.featured_tags.last_status_at": "Ultima publikasyon de {date}",
+ "account.featured_tags.last_status_never": "\"No ay publikasyones",
+ "account.featured_tags.title": "Etiketas avaliadas de {name}",
+ "account.follow": "Sige",
+ "account.follow_back": "Sige tamyen",
+ "account.followers": "Suivantes",
+ "account.followers.empty": "Por agora dingun no sige a este utilizador.",
+ "account.followers_counter": "{count, plural, one {{counter} suivante} other {{counter} suivantes}}",
+ "account.following": "Sigiendo",
+ "account.following_counter": "{count, plural, other {Sigiendo a {counter}}}",
+ "account.follows.empty": "Este utilizador ainda no sige a ningun.",
+ "account.go_to_profile": "Va al profil",
+ "account.hide_reblogs": "Eskonde repartajasyones de @{name}",
+ "account.in_memoriam": "De bendicha memoria.",
+ "account.joined_short": "Adjunto",
+ "account.languages": "Troka linguas suskrividas",
+ "account.link_verified_on": "La propriedad de este atadijo fue verifikada el {date}",
+ "account.locked_info": "El estado de privasita de este konto esta konfigurado komo serado. El proprietario reviza manualmente kien le puede segir.",
+ "account.media": "Multimedia",
+ "account.mention": "Enmenta a @{name}",
+ "account.moved_to": "{name} tiene endikado ke su muevo kuento agora es:",
+ "account.mute": "Silensia a @{name}",
+ "account.mute_notifications_short": "Silensia avizos de @{name}",
+ "account.mute_short": "Silensia",
+ "account.muted": "Silensiado",
+ "account.mutual": "Mutual",
+ "account.no_bio": "No ay deskripsion.",
+ "account.open_original_page": "Avre pajina orijnala",
+ "account.posts": "Publikasyones",
+ "account.posts_with_replies": "Kon repuestas",
+ "account.report": "Raporta @{name}",
+ "account.requested": "Asperando achetasion. Klika para anular la solisitud de segimiento",
+ "account.requested_follow": "{name} tiene solisitado segirte",
+ "account.share": "Partaja el profil de @{name}",
+ "account.show_reblogs": "Amostra repartajasyones de @{name}",
+ "account.statuses_counter": "{count, plural, one {{counter} publikasyon} other {{counter} publikasyones}}",
+ "account.unblock": "Dezbloka @{name}",
+ "account.unblock_domain": "Dezbloka domeno {domain}",
+ "account.unblock_short": "Dezbloka",
+ "account.unendorse": "No avalia en profil",
+ "account.unfollow": "Desige",
+ "account.unmute": "Desilensia a @{name}",
+ "account.unmute_notifications_short": "Desilensia avizos",
+ "account.unmute_short": "Desilensia",
+ "account_note.placeholder": "Klika para adjustar nota",
+ "admin.dashboard.daily_retention": "Proporsyon de retensyon de utilizadores por diya dempues de enrejistrasyon",
+ "admin.dashboard.monthly_retention": "Proporsyon de retensyon de utilizadores por mez dempues de enrejistrasyon",
+ "admin.dashboard.retention.average": "Media",
+ "admin.dashboard.retention.cohort": "Mez de enrejistrasyon",
+ "admin.dashboard.retention.cohort_size": "Muevos utilizadores",
+ "admin.impact_report.instance_accounts": "Profiles de kuentos esto efasaria",
+ "admin.impact_report.instance_followers": "Suivantes a los kualos nuestros utilizadores perderian",
+ "admin.impact_report.instance_follows": "Suivantes a los kualos sus utilizadores perderian",
+ "admin.impact_report.title": "Rezumen de impakto",
+ "alert.rate_limited.message": "Por favor aprova dempues de {retry_time, time, medium}.",
+ "alert.rate_limited.title": "Trafiko limitado",
+ "alert.unexpected.message": "Afito un yerro no asperado.",
+ "alert.unexpected.title": "Atyo!",
+ "announcement.announcement": "Pregon",
+ "attachments_list.unprocessed": "(no prosesado)",
+ "audio.hide": "Eskonder audio",
+ "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.",
+ "bundle_column_error.error.title": "Atyo, no!",
+ "bundle_column_error.network.body": "Uvo un yerro kon la prova de eskargar esta pajina. Esto puede ser por un problem temporal kon tu koneksyon a la internet o a este sirvidor.",
+ "bundle_column_error.network.title": "Yerro de red",
+ "bundle_column_error.retry": "Aprova de muevo",
+ "bundle_column_error.return": "Volta a la linya prinsipala",
+ "bundle_column_error.routing.body": "No se pudo trokar la pajina solisitada. Estas siguro ke el adreso URL en la vara de adreso es djusto?",
+ "bundle_column_error.routing.title": "404",
+ "bundle_modal_error.close": "Serra",
+ "bundle_modal_error.message": "Algo negro afito al eskargar este komponente.",
+ "bundle_modal_error.retry": "Aprova de muevo",
+ "closed_registrations.other_server_instructions": "Deke Mastodon es desentralizado, puedes kriyar un kuento en otro sirvidor i ainda enteraktuar kon este.",
+ "closed_registrations_modal.description": "Aktualmente no es posivle kriyar un kuento en {domain}, ama por favor akodrate de ke no ay menester de tener un kuento espesifikamente en {domain} para kulanear Mastodon.",
+ "closed_registrations_modal.find_another_server": "Bushka otro sirvidor",
+ "closed_registrations_modal.preamble": "Mastodon es desentralizado, estonses sin emportansya ande kriyas tu kuento, podras segir i enteraktuar kon kualseker persona en este sirvidor. Tamyen puedes balabayarlo tu mezmo!",
+ "closed_registrations_modal.title": "Enrerjistrate en Mastodon",
+ "column.about": "Sovre mozotros",
+ "column.blocks": "Utilizadores blokados",
+ "column.bookmarks": "Markadores",
+ "column.community": "Linya de tiempo lokala",
+ "column.direct": "Enmentaduras privadas",
+ "column.directory": "Eksplora profiles",
+ "column.domain_blocks": "Domenos blokados",
+ "column.favourites": "Te plazen",
+ "column.firehose": "Linyas en bivo",
+ "column.follow_requests": "Solisitudes de segimiento",
+ "column.home": "Linya prinsipala",
+ "column.lists": "Listas",
+ "column.mutes": "Utilizadores silensiados",
+ "column.notifications": "Avizos",
+ "column.pins": "Publikasyones fiksadas",
+ "column.public": "Linya de tiempo federada",
+ "column_back_button.label": "Atras",
+ "column_header.hide_settings": "Eskonde opsyones",
+ "column_header.moveLeft_settings": "Move kolumna a la siedra",
+ "column_header.moveRight_settings": "Move kolumna a la derecha",
+ "column_header.pin": "Fiksa",
+ "column_header.show_settings": "Amostra opsyones",
+ "column_header.unpin": "Defiksar",
+ "column_subheading.settings": "Opsyones",
+ "community.column_settings.local_only": "Solo lokalas",
+ "community.column_settings.media_only": "Solo multimedia",
+ "community.column_settings.remote_only": "Solo remotas",
+ "compose.language.change": "Troka lingua",
+ "compose.language.search": "Bushka linguas...",
+ "compose.published.body": "Publikasyon publikada.",
+ "compose.published.open": "Avre",
+ "compose.saved.body": "Publikasyon guadrada.",
+ "compose_form.direct_message_warning_learn_more": "Ambezate mas",
+ "compose_form.encryption_warning": "Publikasyones en Mastodon no son shifradas de lado a lado. No partajes dinguna enformasyon sensivle por Mastodon.",
+ "compose_form.hashtag_warning": "Esta publikasyon no sera amostrada debasho de dinguna etiketa si no es publika. Solo publikasyones publikas se pueden bushkar por la etiketa.",
+ "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.duration": "Durasion de anketa",
+ "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_form": "Mueva publikasyon",
+ "compose_form.spoiler.marked": "Kita avertensya de kontenido",
+ "compose_form.spoiler.unmarked": "Adjusta avertensya de kontenido",
+ "confirmation_modal.cancel": "Anula",
+ "confirmations.block.block_and_report": "Bloka i raporta",
+ "confirmations.block.confirm": "Bloka",
+ "confirmations.block.message": "Estas siguro ke keres blokar a {name}?",
+ "confirmations.cancel_follow_request.confirm": "Anula solisitud",
+ "confirmations.cancel_follow_request.message": "Estas siguro ke keres anular tu solisitud de segir a {name}?",
+ "confirmations.delete.confirm": "Efasa",
+ "confirmations.delete.message": "Estas siguro ke keres efasar esta publikasyon?",
+ "confirmations.delete_list.confirm": "Efasa",
+ "confirmations.delete_list.message": "Estas siguro ke keres permanentemente efasar esta lista?",
+ "confirmations.discard_edit_media.confirm": "Anula",
+ "confirmations.discard_edit_media.message": "Tienes trokamientos no guadrados en la deskripsion o vista previa. Keres efasarlos entanto?",
+ "confirmations.domain_block.confirm": "Bloka domeno entero",
+ "confirmations.domain_block.message": "Estas totalmente siguro ke keres blokar todo el domeno {domain}? En djeneral unos kuantos blokos o silensiamientos son sufisientes i preferavles. No veras kontenido de akel domeno en dinguna linya de tiempo publika ni ent tus avizos. Tus suivantes de akel domeno seran kitados.",
+ "confirmations.edit.confirm": "Edita",
+ "confirmations.edit.message": "Editar agora kitara el mesaj kualo estas eskriviendo aktualmente. Estas siguro ke keres fazerlo?",
+ "confirmations.logout.confirm": "Sal",
+ "confirmations.logout.message": "Estas siguro ke keres salir de tu kuento?",
+ "confirmations.mute.confirm": "Silensia",
+ "confirmations.mute.explanation": "Esto eskondera las publikasyones de este kuento i publikasyones ke lo enmentan, pero ainda les permetera segirte.",
+ "confirmations.mute.message": "Estas siguro ke keres silensiar a {name}?",
+ "confirmations.redraft.confirm": "Efasar i reeskrivir",
+ "confirmations.redraft.message": "Estas siguro ke keres efasar esta publikasyon i reeskrivirla? Pedreras todos los favoritos i repartajasyones asosiados kon esta publikasyon i repuestas a eya seran guerfanadas.",
+ "confirmations.reply.confirm": "Arisponde",
+ "confirmations.reply.message": "Arispondir agora kitara el mesaj kualo estas eskriviendo aktualmente. Estas siguro ke keres fazerlo?",
+ "confirmations.unfollow.confirm": "Desige",
+ "confirmations.unfollow.message": "Estas siguro ke keres deshar de segir a {name}?",
+ "conversation.delete": "Efasa konversasyon",
+ "conversation.mark_as_read": "Marka komo meldado",
+ "conversation.open": "Ve konversasyon",
+ "conversation.with": "Kon {names}",
+ "copy_icon_button.copied": "Kopiado al portapapeles",
+ "copypaste.copied": "Kopiado",
+ "copypaste.copy_to_clipboard": "Kopia al portapapeles",
+ "directory.federated": "Dizde el fediverso konesido",
+ "directory.local": "Solo de {domain}",
+ "directory.new_arrivals": "Arivados resientemente",
+ "directory.recently_active": "Aktivos resientemente",
+ "disabled_account_banner.account_settings": "Preferensyas de kuento",
+ "disabled_account_banner.text": "Tu kuento {disabledAccount} esta aktualmente inkapasitado.",
+ "dismissable_banner.community_timeline": "Estas son las publikasyones publikas mas resientes de las personas kualos kuentos estan balabayados en {domain}.",
+ "dismissable_banner.dismiss": "Kita",
+ "dismissable_banner.explore_links": "Estos haberes estan diskutidos agora por djente en este sirvidor i otros de la red desentralizada.",
+ "dismissable_banner.explore_statuses": "Estas publikasyones de este sirvidor i otros de la red desentralizada estan agora popularas. Publikasyones mas muevas, kon mas repartajasiones i favoritadas por mas djente aparesen primero.",
+ "dismissable_banner.explore_tags": "Estas etiketas estan agora popularas en la red sosyala. Etiketas uzadas por mas djente aparesen primero.",
+ "dismissable_banner.public_timeline": "Estas son las publikasyones publikas mas resientes de personas en la red sosyala a las kualas la djente de {domain} sige.",
+ "embed.instructions": "Enkrusta esta publikasyon en tu sitio internetiko kopiando este kodiche.",
+ "embed.preview": "Ansi paresera:",
+ "emoji_button.activity": "Aktivita",
+ "emoji_button.clear": "Alimpia",
+ "emoji_button.custom": "Personalizado",
+ "emoji_button.flags": "Bandieras",
+ "emoji_button.food": "Kumidas i beverajes",
+ "emoji_button.label": "Adjustar emoji",
+ "emoji_button.nature": "Natura",
+ "emoji_button.not_found": "Emojis no topados",
+ "emoji_button.objects": "Objektos",
+ "emoji_button.people": "Djente",
+ "emoji_button.recent": "Uzados frekuentemente",
+ "emoji_button.search": "Bushka...",
+ "emoji_button.search_results": "Rizultados de bushkeda",
+ "emoji_button.symbols": "Simbolos",
+ "emoji_button.travel": "Viajes i lugares",
+ "empty_column.account_hides_collections": "Este utilizador desidio no mostrar esta enformasyon",
+ "empty_column.account_suspended": "Kuento suspendido",
+ "empty_column.account_timeline": "No ay publikasyones aki!",
+ "empty_column.account_unavailable": "Profil no desponivle",
+ "empty_column.blocks": "Ainda no tienes blokado a dingun utilizador.",
+ "empty_column.bookmarked_statuses": "Ainda no tienes dinguna publikasyon kon markador. Kuando adjustes un markador a una, se amostrara aki.",
+ "empty_column.community": "La linya de tiempo lokala esta vaziya. Eskrive algo publikamente para ampesar la fiesta!",
+ "empty_column.direct": "Ainda no tienes enmentaduras privadas. Kuando embies o risives una, se amostra aki.",
+ "empty_column.domain_blocks": "Ainda no ay domenos blokados.",
+ "empty_column.explore_statuses": "No ay dingunos trendes agora. Mira mas tadre!",
+ "empty_column.favourited_statuses": "Ainda no tienes publikasyones favoritas. Kuando indikes ke una te plaze, se amostrara aki.",
+ "empty_column.favourites": "Nadie tiene indikado ke le plaze una de tus publikasyones. Kuando algun lo aga, se amostrara aki.",
+ "empty_column.follow_requests": "No tienes dinguna solisitud de suivante. Kuando risivas una, se amostrara aki.",
+ "empty_column.followed_tags": "Ainda no tienes segido dinguna etiketa. Kuando lo agas, se amostraran aki.",
+ "empty_column.hashtag": "Ainda no ay niente en esta etiketa.",
+ "empty_column.home": "Tu linya de tiempo esta vaziya! Sige a mas personas para inchirla.",
+ "empty_column.list": "Ainda no ay niente en esta lista. Kuando miembros de esta lista publiken muevas publikasyones, se amostraran aki.",
+ "empty_column.lists": "Ainda no tienes dinguna lista. Kuando kriyes una, aperesera aki.",
+ "empty_column.mutes": "Ainda no tienes silensiado a dingun utilizador.",
+ "empty_column.notifications": "Ainda no tienes dingun avizo. Kuando otras personas enteraktuen kontigo, se amostraran aki.",
+ "empty_column.public": "No ay niente aki! Eskrive algo publikamente o manualmente sige utilizadores de otros sirvidores para inchirlo",
+ "error.unexpected_crash.explanation": "Por un yerro en muestro kodiche o un problem de kompatibilita kon el navigador, no se puede amostrar esta pajina djustamente.",
+ "error.unexpected_crash.explanation_addons": "No se puede amostrar esta pajina djustamente. Este yerro probavlemente fue kauzado por un komplimento del navigador o por un enstrumento de traduksion.",
+ "error.unexpected_crash.next_steps": "Aprova arefreskar la pajina. Si esto no ayuda, es posivle ke ainda puedas kulaenar Mastodon kon otro navigador u otra aplikasyon nativa.",
+ "error.unexpected_crash.next_steps_addons": "Aprova inkapasitarlos i arefreskar la pajina. Si esto no ayuda, es posivle ke ainda puedas kulanear Mastodon kon otro navigador u otra aplikasyon nativa.",
+ "errors.unexpected_crash.copy_stacktrace": "Kopiar stacktrace al portapapeles",
+ "errors.unexpected_crash.report_issue": "Raportar problema",
+ "explore.search_results": "Rizultados de bushkeda",
+ "explore.suggested_follows": "Djente",
+ "explore.title": "Eksplorar",
+ "explore.trending_links": "Haberes",
+ "explore.trending_statuses": "Publikasyones",
+ "explore.trending_tags": "Etiketas",
+ "filter_modal.added.context_mismatch_explanation": "Esta kategoria del filtro no se aplika al konteksto en ke tienes aksesido esta publikasyon. Si keres ke la publikasyon sea filtrada en este konteksto tamyen, kale editar el filtro.",
+ "filter_modal.added.context_mismatch_title": "El konteksto no koensida!",
+ "filter_modal.added.expired_explanation": "Esta kategoria de filtros tiene kadukado. Kale ke trokar la data de kadukasion para aplikarla.",
+ "filter_modal.added.expired_title": "Filtro kadukado!",
+ "filter_modal.added.review_and_configure": "Para revizar i konfigurar esta kategoria de filtros, va a {settings_link}.",
+ "filter_modal.added.review_and_configure_title": "Konfigurasyon de filtro",
+ "filter_modal.added.settings_link": "pajina de konfigurasyon",
+ "filter_modal.added.short_explanation": "Esta publikasyon fue adjustada a la sigiente kategoria de filtros: {title}.",
+ "filter_modal.added.title": "Filtro adjustado!",
+ "filter_modal.select_filter.context_mismatch": "no se aplika a este konteksto",
+ "filter_modal.select_filter.expired": "kadukado",
+ "filter_modal.select_filter.prompt_new": "Mueva kategoria: {name}",
+ "filter_modal.select_filter.search": "Bushkar o kriyar",
+ "filter_modal.select_filter.subtitle": "Kulanear una kategoria egzistente o kriya mueva",
+ "filter_modal.select_filter.title": "Filtrar esta publikasyon",
+ "filter_modal.title.status": "Filtrar una publikasyon",
+ "firehose.all": "Todo",
+ "firehose.local": "Este sirvidor",
+ "firehose.remote": "Otros sirvidores",
+ "follow_request.authorize": "Autoriza",
+ "follow_request.reject": "Refuza",
+ "follow_requests.unlocked_explanation": "Aunke tu kuento no esta serrado, la taifa de {domain} kreye ke talvez keres revizar manualmente las solisitudes de segimento de estos kuentos.",
+ "followed_tags": "Etiketas segidas",
+ "footer.about": "Sovre mozotros",
+ "footer.directory": "Katalogo de profiles",
+ "footer.get_app": "Abasha aplikasyon",
+ "footer.invite": "Envitar a djente",
+ "footer.keyboard_shortcuts": "Akortamientos de klavye",
+ "footer.privacy_policy": "Politika de privasita",
+ "footer.source_code": "Ve kodiche fuente",
+ "footer.status": "Estado",
+ "generic.saved": "Guadrado",
+ "getting_started.heading": "Primos pasos",
+ "hashtag.column_header.tag_mode.all": "i {additional}",
+ "hashtag.column_header.tag_mode.any": "o {additional}",
+ "hashtag.column_header.tag_mode.none": "sin {additional}",
+ "hashtag.column_settings.select.no_options_message": "Rekomendasyones no topadas",
+ "hashtag.column_settings.select.placeholder": "Meter etiketasâĻ",
+ "hashtag.column_settings.tag_mode.all": "Todos estos",
+ "hashtag.column_settings.tag_mode.any": "Kualsekera de estos",
+ "hashtag.column_settings.tag_mode.none": "Dinguno de estos",
+ "hashtag.column_settings.tag_toggle": "Inkluir etiketas adisionalas en esta kolumna",
+ "hashtag.counter_by_accounts": "{count, plural, one {{counter} partisipante} other {{counter} partisipantes}}",
+ "hashtag.counter_by_uses": "{count, plural, one {{counter} publikasyon} other {{counter} publikasyones}}",
+ "hashtag.counter_by_uses_today": "{count, plural, one {{counter} publikasyon} other {{counter} publikasyones}} oy",
+ "hashtag.follow": "Segir etiketa",
+ "hashtag.unfollow": "Desegir etiketa",
+ "hashtags.and_other": "âĻi {count, plural, one {}other {# mas}}",
+ "home.actions.go_to_explore": "Ve los trendes",
+ "home.actions.go_to_suggestions": "Topa a djente para segir",
+ "home.column_settings.basic": "Opsyones bazikas",
+ "home.column_settings.show_reblogs": "Amostrar repartajasyones",
+ "home.column_settings.show_replies": "Amostrar repuestas",
+ "home.explore_prompt.body": "Tu linya prinsipala es una mikstura de publikasyones kon etiketas a las kualas eskojites a segir, la djente a la kuala eskojites a segir i las publikasyones ke eyos repartajan. Si esta demaziado trankila, puedes:",
+ "home.explore_prompt.title": "Esta es tu baza prinsipala en Mastodon.",
+ "home.hide_announcements": "Eskonde pregones",
+ "home.pending_critical_update.body": "Por favor aktualiza tu sirvidor de Mastodon pishin!",
+ "home.pending_critical_update.link": "Ve aktualizasyones",
+ "home.pending_critical_update.title": "Aktualizasyon de seguridad kritika esta desponivle!",
+ "home.show_announcements": "Amostra pregones",
+ "interaction_modal.description.favourite": "Kon un kuento en Mastodon, puedes markar esta publikasyon komo favorita para ke el autor sepa ke te plaze i para guadrarla para dempues.",
+ "interaction_modal.description.follow": "Kon un kuento en Mastodon, puedes segir a {name} para risivir sus publikasyones en tu linya temporal prinsipala.",
+ "interaction_modal.description.reblog": "Kon un kuento en Mastodon, puedes repartajar esta publikasyon para amostrarla a tus suivantes.",
+ "interaction_modal.description.reply": "Kon un kuento en Mastodon, puedes arispondir a esta publikasyon.",
+ "interaction_modal.login.action": "Va a tu sirvidor",
+ "interaction_modal.login.prompt": "Domeno del sirvidor de tu kuento, por enshemplo mastodon.social",
+ "interaction_modal.no_account_yet": "No tyenes kuento de Mastodon?",
+ "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}",
+ "interaction_modal.title.reply": "Arisponde a publikasyon de {name}",
+ "intervals.full.days": "{number, plural, one {# diya} other {# diyas}}",
+ "intervals.full.hours": "{number, plural, one {# ora} other {# oras}}",
+ "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}",
+ "keyboard_shortcuts.back": "Volta atras",
+ "keyboard_shortcuts.blocked": "Avre lista de utilizadores blokados",
+ "keyboard_shortcuts.boost": "Repartaja publikasyon",
+ "keyboard_shortcuts.column": "Enfoka en una kolumna",
+ "keyboard_shortcuts.compose": "Enfoka en el area de eskrivir publikasyon",
+ "keyboard_shortcuts.description": "Deskripsyon",
+ "keyboard_shortcuts.direct": "Avre la kolumna de enmentaduras privadas",
+ "keyboard_shortcuts.down": "Move verso abasho en la lista",
+ "keyboard_shortcuts.enter": "Avre publikasyon",
+ "keyboard_shortcuts.favourite": "Endika ke te plaze una publikasyon",
+ "keyboard_shortcuts.favourites": "Avre lista de favoritos",
+ "keyboard_shortcuts.federated": "Avre linya federada",
+ "keyboard_shortcuts.heading": "Akortamientos de klavye",
+ "keyboard_shortcuts.home": "Avre linya prinsipala",
+ "keyboard_shortcuts.hotkey": "Klave rapido",
+ "keyboard_shortcuts.legend": "Amostra esta lejenda",
+ "keyboard_shortcuts.local": "Avre linya lokala",
+ "keyboard_shortcuts.mention": "Enmenta al autor",
+ "keyboard_shortcuts.muted": "Avre lista de utilizadores silensiados",
+ "keyboard_shortcuts.my_profile": "Avre tu profil",
+ "keyboard_shortcuts.notifications": "Avre kolumna de avizos",
+ "keyboard_shortcuts.open_media": "Avre multimedia",
+ "keyboard_shortcuts.pinned": "Avre lista de publikasyones fiksadas",
+ "keyboard_shortcuts.profile": "Avre profil del autor",
+ "keyboard_shortcuts.reply": "Arisponde a publikasyon",
+ "keyboard_shortcuts.requests": "Avre lista de solisitudes de suivantes",
+ "keyboard_shortcuts.search": "Enfoka en la vara de bushkeda",
+ "keyboard_shortcuts.spoilers": "Amostra/eskonde el kampo de avertensya de kontenido (CW)",
+ "keyboard_shortcuts.start": "Avre la kolumna \"para ampesar\"",
+ "keyboard_shortcuts.toggle_hidden": "Amostra/eskonde teksto detras de avertensya de kontenido (CW)",
+ "keyboard_shortcuts.toggle_sensitivity": "Amostra/eskonde multimedia",
+ "keyboard_shortcuts.toot": "Eskrive mueva publikasyon",
+ "keyboard_shortcuts.unfocus": "No enfoka en el area de eskrivir/bushkeda",
+ "keyboard_shortcuts.up": "Move verso arriva en la lista",
+ "lightbox.close": "Serra",
+ "lightbox.compress": "Kompresa kuadro de imaje",
+ "lightbox.expand": "Espande kuadro de imaje",
+ "lightbox.next": "Sigiente",
+ "lightbox.previous": "Anterior",
+ "limited_account_hint.action": "Amostra el profil entanto",
+ "limited_account_hint.title": "Este profil fue eskondido por los moderadores de {domain}.",
+ "link_preview.author": "Publikasyon de {name}",
+ "lists.account.add": "Adjusta a lista",
+ "lists.account.remove": "Kita de lista",
+ "lists.delete": "Efasa lista",
+ "lists.edit": "Edita lista",
+ "lists.edit.submit": "Troka titolo",
+ "lists.exclusive": "Eskonder estas publikasyones de linya prinsipala",
+ "lists.new.create": "Adjusta lista",
+ "lists.new.title_placeholder": "Titolo de mueva lista",
+ "lists.replies_policy.followed": "Kualseker utilizardo segido",
+ "lists.replies_policy.list": "Miembros de la lista",
+ "lists.replies_policy.none": "Dinguno",
+ "lists.replies_policy.title": "Amostra repuestas a:",
+ "lists.search": "Bushka entre personas a las kualas siges",
+ "lists.subheading": "Tus listas",
+ "load_pending": "{count, plural, one {# muevo elemento} other {# muevos elementos}}",
+ "loading_indicator.label": "EskargandoâĻ",
+ "media_gallery.toggle_visible": "{number, plural, one {Eskonde imaje} other {Eskonde imajes}}",
+ "moved_to_account_banner.text": "Tu kuento {disabledAccount} esta aktualmente inkapasitado porke transferates a {movedToAccount}.",
+ "mute_modal.duration": "Durasyon",
+ "mute_modal.hide_notifications": "Eskonder avizos de este utilizador?",
+ "mute_modal.indefinite": "Indefinida",
+ "navigation_bar.about": "Sovre mozotros",
+ "navigation_bar.advanced_interface": "Avre en la enterfaz avanzada",
+ "navigation_bar.blocks": "Utilizadores blokados",
+ "navigation_bar.bookmarks": "Markadores",
+ "navigation_bar.community_timeline": "Linya de tiempo lokala",
+ "navigation_bar.compose": "Eskrivir mueva publikasyon",
+ "navigation_bar.direct": "Enmentaduras privadas",
+ "navigation_bar.discover": "Diskuvre",
+ "navigation_bar.domain_blocks": "Domenos blokados",
+ "navigation_bar.explore": "Eksplorar",
+ "navigation_bar.favourites": "Te plazen",
+ "navigation_bar.filters": "Biervos silensiados",
+ "navigation_bar.follow_requests": "Solisitudes de segimiento",
+ "navigation_bar.followed_tags": "Etiketas segidas",
+ "navigation_bar.follows_and_followers": "Segidos i suivantes",
+ "navigation_bar.lists": "Listas",
+ "navigation_bar.logout": "Salir",
+ "navigation_bar.mutes": "Utilizadores silensiados",
+ "navigation_bar.opened_in_classic_interface": "Publikasyones, kuentos i otras pajinas espesifikas se avren kon preferensyas predeterminadas en la enterfaz web klasika.",
+ "navigation_bar.personal": "Personal",
+ "navigation_bar.pins": "Publikasyones fiksadas",
+ "navigation_bar.preferences": "Preferensyas",
+ "navigation_bar.public_timeline": "Linya de tiempo federada",
+ "navigation_bar.search": "Bushka",
+ "navigation_bar.security": "Segurita",
+ "not_signed_in_indicator.not_signed_in": "Nesesitas konektarse kon tu kuento para akseder este rekurso.",
+ "notification.admin.report": "{name} raporto {target}",
+ "notification.admin.sign_up": "{name} kriyo un konto",
+ "notification.favourite": "A {name} le plaze tu publikasyon",
+ "notification.follow": "{name} te ampeso a segir",
+ "notification.follow_request": "{name} tiene solisitado segirte",
+ "notification.mention": "{name} te enmento",
+ "notification.own_poll": "Tu anketa eskapo",
+ "notification.poll": "Anketa en ke votates eskapo",
+ "notification.reblog": "{name} repartajo tu publikasyon",
+ "notification.status": "{name} publiko algo",
+ "notification.update": "{name} edito una publikasyon",
+ "notifications.clear": "Efasar avizos",
+ "notifications.clear_confirmation": "Estas siguro ke keres permanentemente efasar todos tus avizos?",
+ "notifications.column_settings.admin.report": "Muveos raportos:",
+ "notifications.column_settings.admin.sign_up": "Muevas enrejistrasyones:",
+ "notifications.column_settings.alert": "Avizos de ensimameza",
+ "notifications.column_settings.favourite": "Te plazen:",
+ "notifications.column_settings.filter_bar.advanced": "Amostra todas las kategorias",
+ "notifications.column_settings.filter_bar.category": "Vara de filtrado rapido",
+ "notifications.column_settings.filter_bar.show_bar": "Amostra vara de filtros",
+ "notifications.column_settings.follow": "Muevos suivantes:",
+ "notifications.column_settings.follow_request": "Muevas solisitudes de segimiento:",
+ "notifications.column_settings.mention": "Enmentaduras:",
+ "notifications.column_settings.poll": "Rizultados de anketas:",
+ "notifications.column_settings.push": "Avizos arrepushados",
+ "notifications.column_settings.reblog": "Repartajasyones:",
+ "notifications.column_settings.show": "Amostra en kolumna",
+ "notifications.column_settings.sound": "Reproduzir son",
+ "notifications.column_settings.status": "Publikasyones muevas:",
+ "notifications.column_settings.unread_notifications.category": "Avizos no meldados",
+ "notifications.column_settings.unread_notifications.highlight": "Avaliar avizos no meldados",
+ "notifications.column_settings.update": "Edisyones:",
+ "notifications.filter.all": "Todos",
+ "notifications.filter.boosts": "Repartajasyones",
+ "notifications.filter.favourites": "Te plazen",
+ "notifications.filter.follows": "Segidos",
+ "notifications.filter.mentions": "Enmentaduras",
+ "notifications.filter.polls": "Rizultados de anketa",
+ "notifications.filter.statuses": "Aktualizasyones de personas a las kualas siges",
+ "notifications.grant_permission": "Da permiso.",
+ "notifications.group": "{count} avizos",
+ "notifications.mark_as_read": "Marka todos avizos komo meldados",
+ "notifications.permission_denied": "Avizos de ensimameza no estan desponivles porke ya se tiene refuzado el permiso",
+ "notifications.permission_denied_alert": "\"No se pueden kapasitar los avizos de ensimameza, porke ya se tiene refuzado el permiso de navigador",
+ "notifications.permission_required": "Avizos de ensimameza no estan desponivles porke los nesesarios permisos no tienen sido risividos.",
+ "notifications_permission_banner.enable": "Kapasitar avizos de ensimameza",
+ "notifications_permission_banner.how_to_control": "Para risivir avizos kuando Mastodon no esta avierto, kapasita avizos de ensimameza. Puedes kontrolar presizamente kualos tipos de enteraksiones djeneren avizos de ensimameza kon el boton {icon} arriva kuando esten kapasitadas.",
+ "notifications_permission_banner.title": "Nunka te piedres niente",
+ "onboarding.action.back": "Va atras",
+ "onboarding.actions.back": "Va atras",
+ "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",
+ "onboarding.start.skip": "No nesesitas ayudo para ampesar?",
+ "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",
+ "poll.reveal": "Mira los rezultados",
+ "poll.total_people": "{count, plural, one {# persona} other {# personas}}",
+ "poll.total_votes": "{count, plural, one {# voto} other {# votos}}",
+ "poll.vote": "Vota",
+ "poll.voted": "Votates por esta repuesta",
+ "poll.votes": "{votes, plural, one {# voto} other {# votos}}",
+ "poll_button.add_poll": "Adjusta anketa",
+ "poll_button.remove_poll": "Kita anketa",
+ "privacy.change": "Troka privasita de publikasyon",
+ "privacy.public.short": "Publiko",
+ "privacy_policy.last_updated": "Ultima aktualizasyon: {date}",
+ "privacy_policy.title": "Politika de privasita",
+ "recommended": "Rekomendado",
+ "refresh": "Arefreska",
+ "regeneration_indicator.label": "EskargandoâĻ",
+ "regeneration_indicator.sublabel": "Tu linya de tiempo prinsipala esta preparando!",
+ "relative_time.days": "{number} d",
+ "relative_time.full.days": "antes {number, plural, one {# diya} other {# diyas}}",
+ "relative_time.full.hours": "antes {number, plural, one {# ora} other {# oras}}",
+ "relative_time.full.just_now": "agora",
+ "relative_time.full.minutes": "antes {number, plural, one {# minuto} other {# minutos}}",
+ "relative_time.full.seconds": "antes {number, plural, one {# sigundo} other {# sigundos}}",
+ "relative_time.hours": "{number} o",
+ "relative_time.just_now": "agora",
+ "relative_time.minutes": "{number} m",
+ "relative_time.seconds": "{number} s",
+ "relative_time.today": "oy",
+ "reply_indicator.cancel": "Anula",
+ "report.block": "Bloka",
+ "report.block_explanation": "No veras sus publikasyones. No podra ver tus publikasyones ni segirte. Podra saver ke le blokates.",
+ "report.categories.legal": "Legal",
+ "report.categories.other": "Otros",
+ "report.categories.spam": "Spam",
+ "report.categories.violation": "El kontenido viola una o mas reglas del sirvidor",
+ "report.category.subtitle": "Eskoje la mijor koensidensya",
+ "report.category.title": "Deskrive el problem kon {type}",
+ "report.category.title_account": "profil",
+ "report.category.title_status": "publikasyon",
+ "report.close": "Fecho",
+ "report.comment.title": "Ay algo mas ke deveriamos saver?",
+ "report.forward": "Reembiar a {target}",
+ "report.forward_hint": "Este kuento es de otro sirvidor. Embiar una kopia anonimizada del raporto ayi tamyen?",
+ "report.mute": "Silensia",
+ "report.mute_explanation": "No veras sus publikasyones. Ainda pueden segirte i no va saver ke le silensiates.",
+ "report.next": "Sigiente",
+ "report.placeholder": "Otros komentos",
+ "report.reasons.dislike": "No me plaze",
+ "report.reasons.dislike_description": "\"No es algo ke kero ver",
+ "report.reasons.legal": "Es ilegal",
+ "report.reasons.legal_description": "Kreyes ke esta violando la ley de tu paiz o el paiz del sirvidor",
+ "report.reasons.other": "Es otra koza",
+ "report.reasons.other_description": "El problem no es de las otras kategorias",
+ "report.reasons.spam": "Es spam",
+ "report.reasons.spam_description": "Atadijos malisiozos, enteraksyones falsas o repuestas repetitivas",
+ "report.reasons.violation": "Viola las reglas del sirvidor",
+ "report.reasons.violation_description": "Saves ke viola reglas espesifikas",
+ "report.rules.subtitle": "Eskoje todas ke korespondan",
+ "report.rules.title": "Kualas reglas estan violadas?",
+ "report.statuses.subtitle": "Eskoje todas ke korespondan",
+ "report.statuses.title": "Ay alguna publikasyon ke suporta este raporto?",
+ "report.submit": "Embiar",
+ "report.target": "Raportando a {target}",
+ "report.thanks.take_action": "Aki estan tus opsyones para kontrolar lo ke ves en Mastodon:",
+ "report.thanks.take_action_actionable": "Mientres revizamos esto, puedes tomar aksyones kontra @{name}:",
+ "report.thanks.title": "No keres ver esto?",
+ "report.thanks.title_actionable": "Mersi por raportarlo, vamos revizarlo.",
+ "report.unfollow": "Desegir a @{name}",
+ "report.unfollow_explanation": "Estas sigiendo este kuento. Para no ver sus publikasyones en tu linya de tiempo, puedes deshar de segirlo.",
+ "report_notification.attached_statuses": "{count, plural, one {{count} publikasyon} other {{count} publikasyones}} atadas",
+ "report_notification.categories.legal": "Legal",
+ "report_notification.categories.other": "Otros",
+ "report_notification.categories.spam": "Spam",
+ "report_notification.categories.violation": "Violasion de reglas",
+ "report_notification.open": "Avre raporto",
+ "search.no_recent_searches": "No ay bushkedas resientes",
+ "search.placeholder": "Bushka",
+ "search.quick_action.account_search": "Profiles ke koresponden kon {x}",
+ "search.quick_action.go_to_account": "Va al profil {x}",
+ "search.quick_action.go_to_hashtag": "Va a la etiketa {x}",
+ "search.quick_action.open_url": "Avre URL en Mastodon",
+ "search.quick_action.status_search": "Publikasyones ke koresponden kon {x}",
+ "search.search_or_paste": "Bushka o apega URL",
+ "search_popout.full_text_search_disabled_message": "No desponivle en {domain}.",
+ "search_popout.full_text_search_logged_out_message": "Solo desponivle kuando estas konektado kon tu kuento.",
+ "search_popout.language_code": "kodiche ISO de lingua",
+ "search_popout.options": "Opsyones de bushkeda",
+ "search_popout.quick_actions": "Aksiones rapidas",
+ "search_popout.recent": "Bushkedas resientes",
+ "search_popout.specific_date": "dato espesifiko",
+ "search_popout.user": "utilizador",
+ "search_results.accounts": "Profiles",
+ "search_results.all": "Todos",
+ "search_results.hashtags": "Etiketas",
+ "search_results.nothing_found": "No se pudo topar niente para estos terminos de bushkeda",
+ "search_results.see_all": "Ve todo",
+ "search_results.statuses": "Publikasyones",
+ "search_results.title": "Bushka por {q}",
+ "server_banner.about_active_users": "Utilizadores aktivos en este sirvidor durante los ultimos 30 diyas (utilizadores aktivos mensuales)",
+ "server_banner.active_users": "utilizadores aktivos",
+ "server_banner.administered_by": "Administrado por:",
+ "server_banner.introduction": "{domain} es parte de la red sosyala desentralizada liderada por {mastodon}.",
+ "server_banner.learn_more": "Ambezate mas",
+ "server_banner.server_stats": "Estatistikas del sirvidor:",
+ "sign_in_banner.create_account": "Kriya kuento",
+ "sign_in_banner.sign_in": "Konektate",
+ "sign_in_banner.sso_redirect": "Konektate o enrejistrate",
+ "sign_in_banner.text": "Konektate para segir prefiles o etiketas, partajar publikasyones, arispondir a eyas i markar ke te plazen. Puedes tambyen enteraktuar dizde tu kuento en un sirvidor desferente.",
+ "status.admin_account": "Avre la enterfaz de moderasyon para @{name}",
+ "status.admin_domain": "Avre la enterfaz de moderasyon para @{domain}",
+ "status.admin_status": "Avre esto en la enterfaz de moderasyon",
+ "status.block": "Bloka a @{name}",
+ "status.bookmark": "Marka",
+ "status.cancel_reblog_private": "No repartaja",
+ "status.cannot_reblog": "Esta publikasyon no se puede repartajar",
+ "status.copy": "Kopia atadijo de publikasyon",
+ "status.delete": "Efasa",
+ "status.detailed_status": "Vista de konversasyon detalyada",
+ "status.direct": "Enmenta a @{name} en privado",
+ "status.direct_indicator": "Enmentadura privada",
+ "status.edit": "Edita",
+ "status.edited": "Editado {date}",
+ "status.edited_x_times": "Editado {count, plural, one {{count} vez} other {{count} vezes}}",
+ "status.embed": "Inkrusta",
+ "status.favourite": "Te plaze",
+ "status.filter": "Filtra esta publikasyon",
+ "status.filtered": "Filtrado",
+ "status.hide": "Eskonde publikasyon",
+ "status.history.created": "{name} kriyo {date}",
+ "status.history.edited": "{name} edito {date}",
+ "status.load_more": "Eskarga mas",
+ "status.media.open": "Klika para avrir",
+ "status.media.show": "Klika para amostrar",
+ "status.media_hidden": "Multimedia eskondidos",
+ "status.mention": "Enmenta a @{name}",
+ "status.more": "Mas",
+ "status.mute": "Silensia a @{name}",
+ "status.mute_conversation": "Silensia konversasyon",
+ "status.open": "Espande publikasyon",
+ "status.pin": "Fiksa en profil",
+ "status.pinned": "Publikasyon fiksada",
+ "status.read_more": "Melda mas",
+ "status.reblog": "Repartaja",
+ "status.reblog_private": "Repartaja kon vizibilita orijinala",
+ "status.reblogged_by": "{name} repartajo",
+ "status.reblogs.empty": "Ainda nadie tiene repartajado esta publikasyon. Kuando algien lo aga, se amostrara aki.",
+ "status.redraft": "Efasa i eskrive de muevo",
+ "status.remove_bookmark": "Kita markador",
+ "status.replied_to": "Arispondio a {name}",
+ "status.reply": "Arisponde",
+ "status.replyAll": "Arisponde al filo",
+ "status.report": "Raporta @{name}",
+ "status.sensitive_warning": "Kontenido sensivle",
+ "status.share": "Partaja",
+ "status.show_filter_reason": "Amostra entanto",
+ "status.show_less": "Amostra manko",
+ "status.show_less_all": "Amostra manko para todo",
+ "status.show_more": "Amostra mas",
+ "status.show_more_all": "Amostra mas para todo",
+ "status.show_original": "Amostra orijinal",
+ "status.title.with_attachments": "{user} publiko {attachmentCount, plural, one {un anekso} other {{attachmentCount} aneksos}}",
+ "status.translate": "Trezlada",
+ "status.translated_from_with": "Trezladado dizde {lang} kon {provider}",
+ "status.uncached_media_warning": "Vista previa no desponivle",
+ "status.unmute_conversation": "Desilensiar konversasyon",
+ "status.unpin": "Defiksar del profil",
+ "subscribed_languages.lead": "Solo publikasyones en linguas eskojidas se amostraran en tus linya de tiempo prinsipala i listas dempues del trokamiento. Eskoje dinguna para risivir publikasyones en todas las linguas.",
+ "subscribed_languages.save": "Guadra trokamientos",
+ "subscribed_languages.target": "Troka linguas abonadas para {target}",
+ "tabs_bar.home": "Linya prinsipala",
+ "tabs_bar.notifications": "Avizos",
+ "time_remaining.days": "{number, plural, one {# diya restante} other {# diyas restantes}}",
+ "time_remaining.hours": "{number, plural, one {# ora restante} other {# oras restantes}}",
+ "time_remaining.minutes": "{number, plural, one {# minuto restante} other {# minutos restantes}}",
+ "time_remaining.moments": "Momentos restantes",
+ "time_remaining.seconds": "{number, plural, one {# sigundo restante} other {# sigundos restantes}}",
+ "timeline_hint.remote_resource_not_displayed": "{resource} de otros sirvidores no se amostran.",
+ "timeline_hint.resources.followers": "Suivantes",
+ "timeline_hint.resources.follows": "Segidos",
+ "timeline_hint.resources.statuses": "Publikasyones mas viejas",
+ "trends.counter_by_accounts": "{count, plural, one {{counter} kuento} other {{counter} kuentos}} en los ultimos {days, plural, one {diyas} other {{days} diyas}}",
+ "trends.trending_now": "Trendes",
+ "ui.beforeunload": "La publikasyon ke estas eskriviendo se pedrera si sales de Mastodon.",
+ "units.short.billion": "{count} MM",
+ "units.short.million": "{count} M",
+ "units.short.thousand": "{count} K",
+ "upload_area.title": "Arastra i mete para kargar",
+ "upload_button.label": "Adjusta imajes, un video or una dosya audio",
+ "upload_error.limit": "Limito de dosyas kargadas eksedido.",
+ "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.edit": "Edita",
+ "upload_form.thumbnail": "Troka minyatura",
+ "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",
+ "upload_modal.applying": "AplikandoâĻ",
+ "upload_modal.choose_image": "Eskoje imaje",
+ "upload_modal.description_placeholder": "Lorem ipsum dolor sit amet",
+ "upload_modal.detect_text": "Detektar teksto de la imaje",
+ "upload_modal.edit_media": "Edita multimedia",
+ "upload_modal.hint": "Klika o arrastra el sirkolo en la vista previa para eskojer el punto fokal ke siempre estara en vista en todas las minyaturas.",
+ "upload_modal.preparing_ocr": "Preparando OCRâĻ",
+ "upload_modal.preview_label": "Vista previa ({ratio})",
+ "upload_progress.label": "Kargando...",
+ "upload_progress.processing": "ProsesandoâĻ",
+ "username.taken": "Akel nombre de utilizador ya esta en uzo. Aprova otruno",
+ "video.close": "Serra video",
+ "video.download": "Abasha dosya",
+ "video.exit_fullscreen": "Sal de ekran kompleto",
+ "video.expand": "Espande video",
+ "video.fullscreen": "Ekran kompleto",
+ "video.hide": "Eskonde video",
+ "video.mute": "Silensia son",
+ "video.pause": "Pauza",
+ "video.play": "Reproduze",
+ "video.unmute": "Desilensia son"
+}
diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json
index a976d5907f9..14fa09e973b 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,69 +27,69 @@
"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.follows_you": "Seka tave",
"account.go_to_profile": "Eiti į profilį",
- "account.hide_reblogs": "SlÄpti \"boosts\" iÅĄ @{name}",
+ "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}",
"account.moved_to": "{name} nurodÄ, kad dabar jÅŗ nauja paskyra yra:",
- "account.mute": "UÅžtildyti @{name}",
+ "account.mute": "Nutildyti @{name}",
"account.mute_notifications_short": "Nutildyti praneÅĄimus",
"account.mute_short": "Nutildyti",
- "account.muted": "UÅžtildytas",
+ "account.muted": "Nutildytas",
+ "account.mutual": "Abipusis",
"account.no_bio": "NÄra pateikto apraÅĄymo.",
- "account.open_original_page": "Atidaryti originalinį tinklalapį",
+ "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 \"boosts\" iÅĄ @{name}",
+ "account.show_reblogs": "Rodyti pakÄlimus iÅĄ @{name}",
"account.statuses_counter": "{count, plural, one {{counter} įraÅĄas} few {{counter} įraÅĄai} many {{counter} įraÅĄo} other {{counter} įraÅĄÅŗ}}",
"account.unblock": "Atblokuoti @{name}",
"account.unblock_domain": "Atblokuoti domenÄ
{domain}",
"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": "VartotojÅŗ iÅĄbuvimo 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!",
@@ -103,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",
@@ -115,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.home": "PradÅžia",
+ "column.firehose": "Tiesioginiai srautai",
+ "column.follow_requests": "Sekimo praÅĄymus",
+ "column.home": "Pagrindinis",
"column.lists": "SÄ
raÅĄai",
- "column.mutes": "UÅžtildyti naudotojai",
+ "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Ä",
@@ -141,26 +141,26 @@
"compose.saved.body": "ÄŽraÅĄas iÅĄsaugotas.",
"compose_form.direct_message_warning_learn_more": "SuÅžinoti daugiau",
"compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
- "compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.",
- "compose_form.lock_disclaimer": "JÅĢsÅŗ paskyra nÄra {locked}. Kiekvienas gali jus sekti ir perÅžiÅĢrÄti tik sekÄjams skirtus įraÅĄus.",
+ "compose_form.hashtag_warning": "Å is įraÅĄas nebus įtraukta į jokį saitaÅžodį, nes ji nÄra vieÅĄa. Tik vieÅĄÅŗ įraÅĄÅŗ galima ieÅĄkoti pagal saitaÅžodį.",
+ "compose_form.lock_disclaimer": "Tavo paskyra nÄra {locked}. Bet kas gali sekti tave ir perÅžiÅĢrÄti tik sekÄjams skirtus įraÅĄus.",
"compose_form.lock_disclaimer.lock": "uÅžrakinta",
"compose_form.placeholder": "Kas tavo mintyse?",
"compose_form.poll.add_option": "PridÄti pasirinkimÄ
",
"compose_form.poll.duration": "Apklausos trukmÄ",
- "compose_form.poll.option_placeholder": "Pasirinkimas {number}",
+ "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",
@@ -180,29 +180,71 @@
"confirmations.logout.message": "Ar tikrai nori atsijungti?",
"confirmations.mute.confirm": "Nutildyti",
"confirmations.mute.explanation": "Tai paslÄps jÅŗ įraÅĄus ir įraÅĄus, kuriuose jie menÄmi, taÄiau jie vis tiek galÄs matyti tavo įraÅĄus ir sekti.",
+ "confirmations.mute.message": "Ar tikrai norite nutildyti {name}?",
+ "confirmations.redraft.confirm": "IÅĄtrinti ir perraÅĄyti",
"confirmations.reply.confirm": "Atsakyti",
"confirmations.reply.message": "Atsakant dabar, bus perraÅĄyta metu kuriama ÅžinutÄ. Ar tikrai nori tÄsti?",
"confirmations.unfollow.confirm": "Nebesekti",
+ "confirmations.unfollow.message": "Ar tikrai norite atsisakyti sekimo {name}?",
+ "conversation.delete": "IÅĄtrinti pokalbį",
"conversation.mark_as_read": "ÅŊymÄti kaip skaitytÄ
",
"conversation.open": "PerÅžiÅĢrÄti pokalbį",
"conversation.with": "Su {names}",
"copy_icon_button.copied": "Nukopijuota į iÅĄkarpinÄ",
"copypaste.copied": "Nukopijuota",
"copypaste.copy_to_clipboard": "Kopijuoti į iÅĄkarpinÄ",
+ "directory.local": "IÅĄ {domain} tik",
+ "directory.new_arrivals": "Naujos prekÄs",
+ "directory.recently_active": "Neseniai aktyvus",
"disabled_account_banner.account_settings": "Paskyros nustatymai",
+ "disabled_account_banner.text": "JÅĢsÅŗ paskyra {disabledAccount} ÅĄiuo metu yra iÅĄjungta.",
+ "dismissable_banner.dismiss": "Atmesti",
"dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.",
+ "dismissable_banner.explore_statuses": "Tai įraÅĄai iÅĄ viso socialinio tinklo, kurie ÅĄiandien sulaukia vis daugiau dÄmesio. Naujesni įraÅĄai, turintys daugiau boosts ir mÄgstamiausiÅŗ įraÅĄÅŗ, yra vertinami aukÅĄÄiau.",
"dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.",
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Å tai kaip tai atrodys:",
+ "emoji_button.activity": "Veikla",
+ "emoji_button.clear": "IÅĄvalyti",
+ "emoji_button.custom": "Pasirinktinis",
+ "emoji_button.flags": "VÄliavos",
+ "emoji_button.food": "Maistas ir GÄrimai",
+ "emoji_button.label": "ÄŽterpti veidelius",
+ "emoji_button.nature": "Gamta",
+ "emoji_button.not_found": "Nerasta jokiÅŗ tinkamÅŗ jaustukÅŗ",
"emoji_button.objects": "Objektai",
+ "emoji_button.people": "ÅŊmonÄs",
+ "emoji_button.recent": "DaÅžniausiai naudojama",
"emoji_button.search": "PaieÅĄka...",
+ "emoji_button.search_results": "PaieÅĄkos rezultatai",
+ "emoji_button.symbols": "Simboliai",
+ "emoji_button.travel": "KelionÄs ir Vietos",
"empty_column.account_hides_collections": "Å is naudotojas (-a) pasirinko nepadaryti ÅĄiÄ
informacijÄ
prieinamÄ
",
+ "empty_column.account_suspended": "Paskyra sustabdyta",
"empty_column.account_timeline": "No toots here!",
+ "empty_column.account_unavailable": "Profilis neprieinamas",
+ "empty_column.blocks": "Dar neuÅžblokavote nÄ vieno naudotojo.",
"empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
+ "empty_column.community": "VietinÄ laiko juosta yra tuÅĄÄia. ParaÅĄykite kÄ
nors vieÅĄai, kad pradÄtumÄte veikti!",
+ "empty_column.direct": "Dar neturite jokiÅŗ privaÄiÅŗ paminÄjimÅŗ. Kai iÅĄsiÅŗsite arba gausite tokį praneÅĄimÄ
, jis bus rodomas Äia.",
"empty_column.domain_blocks": "There are no hidden domains yet.",
+ "empty_column.favourited_statuses": "Dar neturite mÄgstamiausiÅŗ įraÅĄÅŗ. Kai vienÄ
iÅĄ jÅŗ pamÄgsite, jis bus rodomas Äia.",
+ "empty_column.follow_requests": "Dar neturite jokiÅŗ sekimo uÅžklausÅŗ. Kai gausite tokį praÅĄymÄ
, jis bus rodomas Äia.",
+ "empty_column.followed_tags": "Dar nesekÄte jokiÅŗ grotaÅžymiÅŗ. Kai tai padarysite, jie bus rodomi Äia.",
"empty_column.hashtag": "NÄra nieko ÅĄiame saitaÅžodyje kol kas.",
"empty_column.home": "Your home timeline is empty! Follow more people to fill it up. {suggestions}",
"empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
+ "empty_column.lists": "Dar neturite jokiÅŗ sÄ
raÅĄÅŗ. Kai jį sukursite, jis bus rodomas Äia.",
+ "empty_column.mutes": "Dar nesate nutildÄ nÄ vieno naudotojo.",
+ "empty_column.notifications": "Dar neturite jokiÅŗ praneÅĄimÅŗ. Kai kiti ÅžmonÄs su jumis bendraus, matysite tai Äia.",
+ "empty_column.public": "Äia nieko nÄra! ParaÅĄykite kÄ
nors vieÅĄai arba rankiniu bÅĢdu sekite naudotojus iÅĄ kitÅŗ serveriÅŗ, kad jį uÅžpildytumÄte",
+ "error.unexpected_crash.explanation": "DÄl mÅĢsÅŗ kodo klaidos arba narÅĄyklÄs suderinamumo problemos ÅĄis puslapis negalÄjo bÅĢti rodomas teisingai.",
+ "error.unexpected_crash.explanation_addons": "Šį puslapį nepavyko teisingai parodyti. Å iÄ
klaidÄ
greiÄiausiai sukÄlÄ narÅĄyklÄs priedas arba automatinio vertimo įrankiai.",
+ "error.unexpected_crash.next_steps": "Pabandykite atnaujinti puslapį. Jei tai nepadeda, galbÅĢt vis dar galÄsite naudotis \"Mastodon\" naudodami kitÄ
narÅĄyklÄ arba vietinÄ programÄlÄ.",
+ "error.unexpected_crash.next_steps_addons": "Pabandykite juos iÅĄjungti ir atnaujinti puslapį. Jei tai nepadeda, galbÅĢt vis dar galÄsite naudotis \"Mastodon\" naudodami kitÄ
narÅĄyklÄ arba vietinÄ programÄlÄ.",
+ "errors.unexpected_crash.report_issue": "PraneÅĄti apie triktį",
+ "explore.search_results": "PaieÅĄkos rezultatai",
+ "explore.suggested_follows": "ÅŊmonÄs",
"explore.title": "NarÅĄyti",
"explore.trending_links": "Naujienos",
"explore.trending_statuses": "ÄŽraÅĄai",
@@ -299,15 +341,21 @@
"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}.",
"mute_modal.duration": "TrukmÄ",
"mute_modal.hide_notifications": "SlÄpti ÅĄio naudotojo praneÅĄimus?",
+ "mute_modal.indefinite": "Neribotas",
+ "navigation_bar.about": "Apie",
+ "navigation_bar.advanced_interface": "Atidarykite iÅĄplÄstinÄ Åžiniatinklio sÄ
sajÄ
",
+ "navigation_bar.blocks": "UÅžblokuoti naudotojai",
+ "navigation_bar.bookmarks": "ÅŊymÄs",
"navigation_bar.compose": "Compose new toot",
+ "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",
@@ -372,6 +420,7 @@
"notifications.permission_required": "Darbalaukio praneÅĄimai nepasiekiami, nes nesuteiktas reikiamas leidimas.",
"notifications_permission_banner.enable": "ÄŽjungti darbalaukio praneÅĄimus",
"notifications_permission_banner.how_to_control": "Jei norite gauti praneÅĄimus, kai \"Mastodon\" nÄra atidarytas, įjunkite darbalaukio praneÅĄimus. ÄŽjungÄ darbalaukio praneÅĄimus, galite tiksliai valdyti, kokiÅŗ tipÅŗ sÄ
veikos generuoja darbalaukio praneÅĄimus, naudodamiesi pirmiau esanÄiu mygtuku {icon}.",
+ "notifications_permission_banner.title": "Niekada nieko nepraleiskite",
"onboarding.action.back": "GraÅžinkite mane atgal",
"onboarding.actions.back": "GraÅžinkite mane atgal",
"onboarding.actions.go_to_explore": "See what's trending",
@@ -394,8 +443,10 @@
"onboarding.share.lead": "PraneÅĄkite ÅžmonÄms, kaip jus rasti \"Mastodon\"!",
"onboarding.share.message": "AÅĄ {username} #Mastodon! Ateik sekti manÄs adresu {url}",
"onboarding.share.next_steps": "Galimi kiti Åžingsniai:",
+ "onboarding.share.title": "Bendrinkite savo profilį",
"onboarding.start.lead": "Dabar esi Mastodon dalis â unikalios decentralizuotos socialinÄs Åžiniasklaidos platformos, kurioje tu, o ne algoritmas, pats nustatai savo patirtį. PradÄkime tavo kelionÄ ÅĄioje naujoje socialinÄje erdvÄje:",
"onboarding.start.skip": "Want to skip right ahead?",
+ "onboarding.start.title": "Jums pavyko!",
"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.",
@@ -404,23 +455,49 @@
"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",
+ "picture_in_picture.restore": "PadÄkite jį atgal",
+ "poll.closed": "UÅždaryti",
+ "poll.refresh": "Atnaujinti",
+ "poll.reveal": "PerÅžiÅĢrÄti rezultatus",
"poll.vote": "Balsuoti",
"poll.voted": "Tu balsavai uÅž ÅĄÄ¯ atsakymÄ
",
"poll.votes": "{votes, plural, one {# balsas} few {# balsai} many {# balso} other {# balsÅŗ}}",
+ "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.unlisted.long": "Matomas visiems, bet atsisakyta atradimo funkcijÅŗ",
- "privacy.unlisted.short": "Neįtrauktas į sÄ
raÅĄÄ
",
+ "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.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",
+ "refresh": "Atnaujinti",
+ "regeneration_indicator.label": "KraunasiâĻ",
+ "relative_time.full.just_now": "kÄ
tik",
"relative_time.hours": "{number} val.",
"relative_time.just_now": "dabar",
"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",
+ "report.categories.spam": "Å lamÅĄtas",
+ "report.categories.violation": "Turinys paÅžeidÅžia vienÄ
ar daugiau serverio taisykliÅŗ",
+ "report.category.subtitle": "Pasirinkite tinkamiausiÄ
variantÄ
",
+ "report.category.title_account": "profilis",
+ "report.category.title_status": "įraÅĄas",
+ "report.close": "Atlikta",
+ "report.comment.title": "Ar yra dar kas nors, kÄ
, jÅĢsÅŗ manymu, turÄtume Åžinoti?",
"report.mute_explanation": "JÅŗ įraÅĄÅŗ nematysi. Jie vis tiek gali tave sekti ir matyti įraÅĄus, bet neÅžinos, kad jie nutildyti.",
"report.next": "TÄsti",
"report.placeholder": "Papildomi komentarai",
@@ -454,6 +531,8 @@
"search_results.hashtags": "SaitaÅžodÅžiai",
"search_results.nothing_found": "Nepavyko rasti nieko pagal ÅĄiuos paieÅĄkos terminus.",
"search_results.statuses": "Toots",
+ "server_banner.about_active_users": "ÅŊmonÄs, kurie naudojosi ÅĄiuo serveriu per pastarÄ
sias 30 dienÅŗ (mÄnesio aktyvÅĢs naudotojai)",
+ "server_banner.active_users": "aktyvÅĢs naudotojai",
"sign_in_banner.sign_in": "Prisijungimas",
"sign_in_banner.text": "Prisijunk, kad galÄtum sekti profilius arba saitaÅžodÅžius, mÄgsti, bendrinti ir atsakyti į įraÅĄus. Taip pat gali bendrauti iÅĄ savo paskyros kitame serveryje.",
"status.admin_status": "Open this status in the moderation interface",
@@ -502,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 63ec6275ba5..b4426b4c45b 100644
--- a/app/javascript/mastodon/locales/lv.json
+++ b/app/javascript/mastodon/locales/lv.json
@@ -37,7 +37,6 @@
"account.following": "Seko",
"account.following_counter": "{count, plural, one {{counter} sekojamais} other {{counter} sekojamie}}",
"account.follows.empty": "Å is lietotÄjs pagaidÄm nevienam neseko.",
- "account.follows_you": "Seko tev",
"account.go_to_profile": "Doties uz profilu",
"account.hide_reblogs": "SlÄpt @{name} izceltas ziÅas",
"account.in_memoriam": "PiemiÅai.",
@@ -87,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.",
@@ -144,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",
@@ -404,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",
@@ -511,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",
@@ -698,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 371218bbfec..f7080842b71 100644
--- a/app/javascript/mastodon/locales/mk.json
+++ b/app/javascript/mastodon/locales/mk.json
@@ -25,7 +25,6 @@
"account.followers": "ĐĄĐģĐĩĐ´ĐąĐĩĐŊиŅи",
"account.followers.empty": "ĐиĐēĐžŅ ĐŊĐĩ ĐŗĐž ŅĐģĐĩди ОвОŅ ĐēĐžŅиŅĐŊиĐē ŅĐĩŅŅŅĐĩ.",
"account.follows.empty": "ĐĐžŅиŅĐŊиĐēĐžŅ ĐŊĐĩ ŅĐģĐĩди ĐŊиĐēĐžŅ ŅĐĩŅŅŅĐĩ.",
- "account.follows_you": "ĐĸĐĩ ŅĐģĐĩди ŅĐĩĐąĐĩ",
"account.hide_reblogs": "ĐĄĐžĐēŅиŅ ĐąŅŅŅ Од @{name}",
"account.link_verified_on": "ĐĄĐžĐŋŅŅĐĩвĐŊĐžŅŅĐ° ĐŊĐ° ОваŅ ĐģиĐŊĐē ĐąĐĩŅĐĩ ĐŋŅОвĐĩŅĐĩĐŊ ĐŊĐ° {date}",
"account.locked_info": "ĐĄŅĐ°ŅŅŅĐžŅ ĐŊĐ° ĐŋŅиваŅĐŊĐžŅŅ ĐŊĐ° ОваŅ ĐēĐžŅиŅĐŊиĐē Đĩ ŅĐĩŅиŅĐ°ĐŊ ĐēĐ°ĐēĐž СаĐēĐģŅŅĐĩĐŊ. ĐĐžŅиŅĐŊиĐēĐžŅ ОдĐģŅŅŅва ĐēĐžŅ ĐŧĐžĐļи Đ´Đ° ĐŗĐž ŅĐģĐĩди ĐŊĐĩĐŗĐž.",
@@ -49,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": "ĐĐ°ŅвОŅи",
@@ -77,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": "ĐŅĐēĐ°Đļи",
@@ -183,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": "ĐĄĐģĐĩĐ´ĐĩŅĐ° и ŅĐģĐĩĐ´ĐąĐĩĐŊиŅи",
@@ -230,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 b00cedc6fcc..0059dd333bb 100644
--- a/app/javascript/mastodon/locales/ml.json
+++ b/app/javascript/mastodon/locales/ml.json
@@ -26,7 +26,6 @@
"account.following": "ā´Ēā´ŋā´¨āĩā´¤āĩā´ā´°āĩā´¨āĩā´¨āĩ",
"account.following_counter": "{count, plural, one {{counter} ā´Ēā´ŋā´¨āĩā´¤āĩā´ā´°āĩā´¨āĩā´¨āĩ} other {{counter} ā´Ēā´ŋā´¨āĩā´¤āĩā´ā´°āĩā´¨āĩā´¨āĩ}}",
"account.follows.empty": "ā´ ā´ā´Ēā´¯āĩā´āĩā´¤ā´žā´ĩāĩ ā´ā´°āĩā´¯āĩā´ ā´ā´¤āĩā´ĩā´°āĩ ā´Ēā´ŋā´¨āĩā´¤āĩā´ā´°āĩā´¨āĩā´¨ā´ŋā´˛āĩā´˛.",
- "account.follows_you": "ā´¨ā´ŋā´āĩā´ā´ŗāĩ ā´Ēā´ŋā´¨āĩā´¤āĩā´ā´°āĩā´¨āĩā´¨āĩ",
"account.go_to_profile": "ā´Ēāĩā´°āĩā´Ģāĩā´˛ā´ŋā´˛āĩā´āĩā´āĩ ā´Ēāĩā´ā´žā´",
"account.hide_reblogs": "@{name} ā´Ŧāĩā´¸āĩā´ąāĩā´ąāĩ ā´āĩā´¯āĩā´¤ā´ĩ ā´Žā´ąā´¯āĩā´āĩā´",
"account.joined_short": "ā´āĩā´¯ā´ŋāĩģ ā´āĩā´¯āĩâā´¤ā´ŋā´°ā´ŋā´āĩā´āĩā´¨āĩā´¨āĩ",
@@ -61,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": "ā´ĩāĩā´Ŗāĩā´āĩā´ ā´ļāĩā´°ā´Žā´ŋā´āĩā´āĩā´",
@@ -103,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": "ā´¤ā´ā´¯āĩā´",
@@ -245,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": "ā´˛āĩā´āĩā´āĩā´āĩ",
@@ -303,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": "ā´˛ā´āĩā´¯ā´Žā´žā´āĩā´āĩā´¨āĩā´¨āĩâĻ",
@@ -373,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 75b75375b71..20231f0bbfd 100644
--- a/app/javascript/mastodon/locales/mr.json
+++ b/app/javascript/mastodon/locales/mr.json
@@ -35,7 +35,6 @@
"account.following": "ā¤
ā¤¨āĨā¤¸ā¤°ā¤Ŗ",
"account.following_counter": "{count, plural, one {{counter} following} other {{counter} following}}",
"account.follows.empty": "ā¤šā¤ž ā¤ĩā¤žā¤Ēā¤°ā¤ā¤°āĨā¤¤ā¤ž ā¤
ā¤āĨā¤¨ā¤Ēā¤°āĨā¤¯ā¤ā¤¤ ā¤āĨā¤Ŗā¤žā¤ā¤ž ā¤
ā¤¨āĨā¤¯ā¤žā¤¯āĨ ā¤¨ā¤žā¤šāĨ.",
- "account.follows_you": "ā¤¤āĨā¤Žā¤ā¤ž ā¤
ā¤¨āĨā¤¯ā¤žā¤¯āĨ ā¤ā¤šāĨ",
"account.go_to_profile": "ā¤ĒāĨā¤°āĨā¤Ģā¤žā¤ā¤˛ ā¤ĩā¤° ā¤ā¤ž",
"account.hide_reblogs": "@{name} ā¤Ēā¤žā¤¸āĨā¤¨ ā¤¸ā¤°āĨā¤ĩ ā¤ŦāĨā¤¸āĨā¤ ā¤˛ā¤Ēā¤ĩā¤ž",
"account.joined_short": "ā¤¸ā¤žā¤ŽāĨā¤˛ ā¤ā¤žā¤˛āĨ",
@@ -74,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": "ā¤šā¤ž ā¤ā¤ā¤ ā¤˛āĨā¤Ą ā¤ā¤°ā¤¤ā¤žā¤ā¤¨ā¤ž ā¤ā¤žā¤šāĨā¤¤ā¤°āĨ ā¤āĨā¤ā¤˛āĨ ā¤ā¤šāĨ.",
@@ -100,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",
@@ -229,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 724e07ae76a..8c1ff633768 100644
--- a/app/javascript/mastodon/locales/ms.json
+++ b/app/javascript/mastodon/locales/ms.json
@@ -37,7 +37,6 @@
"account.following": "Mengikuti",
"account.following_counter": "{count, plural, one {{counter} Diikuti} other {{counter} Diikuti}}",
"account.follows.empty": "Pengguna ini belum mengikuti sesiapa.",
- "account.follows_you": "Mengikuti anda",
"account.go_to_profile": "Pergi ke profil",
"account.hide_reblogs": "Sembunyikan galakan daripada @{name}",
"account.in_memoriam": "Dalam Memoriam.",
@@ -87,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.",
@@ -144,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",
@@ -400,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",
@@ -507,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",
@@ -694,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 4078a4c066f..396a72ac450 100644
--- a/app/javascript/mastodon/locales/my.json
+++ b/app/javascript/mastodon/locales/my.json
@@ -21,6 +21,7 @@
"account.blocked": "áááąáŦáˇááŦá¸áááē",
"account.browse_more_on_origin_server": "áá°áááēá¸áááá¯ááá¯ááēááŊááē ááá¯ááá¯ááŧááˇáēáážá¯ááĢá",
"account.cancel_follow_request": "á
áąáŦááēáˇááŧááēáˇáážá¯ áááēááģááēááŧááēá¸",
+ "account.copy": "áááˇáēááēááᯠáááá¯ááá¯ááēááá¯áˇ áá°á¸áá°ááĢ",
"account.direct": "@{name} ááŽá¸áááēᡠáááážáááá¯ááēáĄáąáŦááē áááēá¸áážááēá¸ááąáĢáēáááē",
"account.disable_notifications": "@{name} ááá¯áˇá
áēáááēáááˇáēáĄááĢ ááģáŊááēá¯ááēááļ áĄááááąá¸ááŧááēḠáááŧá¯áá¯ááēáááēá",
"account.domain_blocked": "ááá¯ááááēḠááááēáááēááŦá¸áá˛áˇáááē",
@@ -37,7 +38,6 @@
"account.following": "á
áąáŦááˇáēááŧááˇáēááąáááē",
"account.following_counter": "{count, plural, one {á
áąáŦááēáˇááŧááēáˇááŦá¸áá° {counter}} other {á
áąáŦááēáˇááŧááēáˇááŦá¸áá°ááģáŦḠ{counter}}}",
"account.follows.empty": "á¤áá°áááē áááēáá°áˇááá¯ááģáž á
áąáŦááˇáēááŧááˇáēááŧááēḠááážáááąá¸ááĢá",
- "account.follows_you": "áááˇáēááᯠá
áąáŦááˇáēááŧááˇáēááąáááē",
"account.go_to_profile": "áááá¯ááá¯ááēá¸ááá¯áˇ ááŊáŦá¸áááē",
"account.hide_reblogs": "@{name} á ááģážááąáážá¯ááᯠáážááēááŦá¸áááē",
"account.in_memoriam": "áĄáážááēáá",
@@ -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": "áááąáŦáˇáááē",
@@ -191,6 +180,7 @@
"conversation.mark_as_read": "áááēááŧáŽá¸ááŦá¸áĄááŧá
áēáážááēááŦá¸ááĢ",
"conversation.open": "Conversation ááá¯ááŧááēáˇáááē",
"conversation.with": "{áĄáááēááģáŦá¸} ááŧááˇáē",
+ "copy_icon_button.copied": "ááá
áēáá¯ááēááá¯áˇ áá°á¸ááĢ",
"copypaste.copied": "áá°áá°ááŧáŽá¸ááĢááŧáŽ",
"copypaste.copy_to_clipboard": "ááá
áēáá¯ááēááá¯áˇ áá°á¸ááĢ",
"directory.federated": "áááē ááááąáŦ áááēááŽááž",
@@ -389,6 +379,7 @@
"lists.search": "ááááááąáŦááá¯á¸ááŦá¸áá°ááģáŦá¸áážáážáŦááŊáąáááē",
"lists.subheading": "áááēáˇáá
áŦáááēá¸ááģáŦá¸",
"load_pending": "{count, plural, one {# new item} other {# new items}}",
+ "loading_indicator.label": "áá¯ááēááąáŦááēááąáááēâĻ",
"media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}",
"moved_to_account_banner.text": "{movedToAccount} áĄááąáŦááˇáēááá¯áˇááŧáąáŦááēá¸áá˛ááŦá¸áááŧááēᡠ{disabledAccount} áĄááąáŦááēáˇáážáŦááááēááŦá¸áááē",
"mute_modal.duration": "ááŧáŦááģáááē",
@@ -403,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": "á
ááŦá¸áá¯áļá¸ááģáŦḠááááēááŦá¸ááĢ",
@@ -477,6 +467,13 @@
"onboarding.follows.empty": "ááá¯áĄááģáááē áááēáááˇáēááááēááá¯ááģáž áááŧáááá¯ááēááĢá áá°ááģáŦá¸ááá¯á
áąáŦááēáˇááŧááˇáēáááēáĄááŊááē Explore á
áŦááģááēáážáŦááᯠáĄáá¯áļá¸ááŧá¯á á
ááēá¸ááŧááˇáēááá¯ááēáááē ááá¯áˇááá¯ááē ááąáŦááēááž áááēá
ááēá¸ááŧááˇáēááĢá",
"onboarding.follows.lead": "áááˇáēááá¯ááēááá¯ááēááá¯áˇá
áēááģáŦḠáááēááá¯ááēáááēá áááēá
áąáŦááēáˇááŧááˇáēáá° ááģáŦá¸ááąááąá á
áááēáááēá
áŦá¸á
ááŦááąáŦááēá¸ááąáŦááá¯áˇá
áēááģáŦḠááŊáąáˇáááąááŧá
áēáááēá á¤áááá¯ááá¯ááēááģáŦá¸áážáŦ ááąáŦááēá¸ááŊááēááąáŦáĄá
ááŧá¯áážá¯áá
áēáá¯ááŧá
áēááŧáŽá¸ áááēá¸ááá¯áˇááá¯á
áąáŦááēáˇááŧááēáˇááŧááēá¸áážáááēḠáĄááģáááēáááŊáąá¸ áááēááģááēááá¯ááēááĢáááēá",
"onboarding.follows.title": "Mastodon ááŊááē ááąáááēá¸á
áŦá¸ááŧááēá¸",
+ "onboarding.profile.discoverable": "áááá¯ááá¯ááē áážáŦááŊáąááá¯ááēááĢáááē",
+ "onboarding.profile.display_name": "ááąáŦáēááŧáááēáˇáĄáááē",
+ "onboarding.profile.display_name_hint": "áááēáˇáĄáááēáĄááŧááˇáēáĄá
á¯áļ ááá¯áˇááá¯ááē áááēáˇáĄáááēááŧáąáŦááēá",
+ "onboarding.profile.note": "ááá¯ááēááąá¸áĄááģááēá¸",
+ "onboarding.profile.save_and_continue": "ááááēá¸ááŧáŽá¸ áááēáá¯ááēááĢ",
+ "onboarding.profile.title": "áááá¯ááá¯ááēá
áá
áē áááˇáēááŊááēá¸ááŧááēá¸",
+ "onboarding.profile.upload_avatar": "áááá¯ááá¯ááēáá¯áļ áĄááēáá¯ááēáá¯ááēááĢ",
"onboarding.share.lead": "Mastodon ááŊááē áááˇáēáĄáŦḠáááēááá¯áˇáážáŦááŊáąáˇááá¯ááēáááēááᯠáĄááááąá¸ááĢá",
"onboarding.share.message": "Mastodon áážá ááģáŊááēá¯ááēááĄáááēáážáŦ {username} ááŧá
áēáááēá ááģáŊááēá¯ááēááᯠ{url} ááŊááē á
áąáŦááˇáēááŧááˇáēááá¯ááēááĢáááē",
"onboarding.share.next_steps": "ááŧá
áēááá¯ááēááģáąáážáááąáŦ ááąáŦááēáĄáááˇáēááģáŦḠ-",
@@ -510,16 +507,10 @@
"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": "áĄááŧáļááŧá¯áááē",
"refresh": "ááŧááēáááēá
áááēááĢ",
"regeneration_indicator.label": "áá¯ááēááąáŦááēááąáááēâĻ",
"regeneration_indicator.sublabel": "áááˇáēáááēáá
áŦááģááēáážáŦááᯠááŧááēáááēááąááĢáááēá",
@@ -590,6 +581,7 @@
"search.quick_action.status_search": "{x} áážááˇáē ááá¯ááēááŽááąáŦ ááá¯áˇá
áēááģáŦá¸",
"search.search_or_paste": "URL ááá¯ááēáááˇáēááĢ ááá¯áˇááá¯ááē áážáŦááŊáąááĢ",
"search_popout.full_text_search_disabled_message": "{domain} ááŊááē ááááá¯ááēááĢá",
+ "search_popout.full_text_search_logged_out_message": "áĄááąáŦááˇáēáááēááŦá¸áážááŦ áááá¯ááēáááēá",
"search_popout.language_code": "ISO ááŦááŦá
ááŦá¸áá¯ááē",
"search_popout.options": "ááŊáąá¸ááģááēááŦá¸áááēááģáŦḠáážáŦááŊáąáááē",
"search_popout.quick_actions": "áĄááŧááēáá¯ááēááąáŦááēáážá¯ááģáŦá¸",
@@ -697,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
new file mode 100644
index 00000000000..86e24a15fb1
--- /dev/null
+++ b/app/javascript/mastodon/locales/ne.json
@@ -0,0 +1,73 @@
+{
+ "about.contact": "ā¤¸ā¤ŽāĨā¤Ēā¤°āĨā¤:",
+ "about.disclaimer": "Mastodon ā¤¨ā¤ŋ:ā¤ļāĨā¤˛āĨā¤, ā¤āĨā¤˛ā¤ž ā¤¸āĨā¤°āĨā¤¤ ā¤¸ā¤ĢāĨā¤ā¤ĩāĨā¤¯ā¤°, ā¤° Mastodon gGmbH ā¤āĨ ā¤āĨā¤°āĨā¤Ąā¤Žā¤žā¤°āĨā¤ ā¤šāĨāĨ¤",
+ "about.domain_blocks.no_reason_available": "ā¤ā¤žā¤°ā¤Ŗ ā¤ā¤Ēā¤˛ā¤ŦāĨā¤§ ā¤āĨā¤¨",
+ "about.domain_blocks.preamble": "Mastodon ā¤˛āĨ ā¤¤ā¤Ēā¤žā¤ā¤ā¤˛ā¤žā¤ ā¤¸ā¤žā¤Žā¤žā¤¨āĨā¤¯ā¤¤ā¤¯ā¤ž ā¤ĢāĨā¤Ąā¤ŋā¤ā¤°āĨā¤¸ā¤Žā¤ž ā¤āĨā¤¨āĨ ā¤Ēā¤¨ā¤ŋ ā¤
ā¤¨āĨā¤¯ ā¤¸ā¤°āĨā¤ā¤°ā¤ā¤ž ā¤¸ā¤žā¤Žā¤āĨā¤°āĨ ā¤šāĨā¤°āĨā¤¨ ā¤° ā¤ĒāĨā¤°ā¤¯āĨā¤ā¤ā¤°āĨā¤¤ā¤žā¤šā¤°āĨā¤¸ā¤ā¤ ā¤
ā¤¨āĨā¤¤ā¤°ā¤āĨā¤°ā¤ŋā¤¯ā¤ž ā¤ā¤°āĨā¤¨ ā¤Ļā¤ŋā¤¨āĨā¤āĨ¤ ā¤¯āĨ ā¤
ā¤Ēā¤ĩā¤žā¤Ļā¤šā¤°āĨ ā¤šāĨā¤¨āĨ ā¤āĨā¤¨ ā¤¯ā¤¸ ā¤ĩā¤ŋā¤ļāĨā¤ˇ ā¤¸ā¤°āĨā¤ā¤°ā¤Žā¤ž ā¤Ŧā¤¨ā¤žā¤ā¤ā¤ā¤ž ā¤ā¤¨āĨāĨ¤",
+ "about.domain_blocks.silenced.title": "ā¤¸āĨā¤Žā¤ŋā¤¤",
+ "about.domain_blocks.suspended.explanation": "ā¤¯ā¤¸ ā¤¸ā¤°āĨā¤ā¤°ā¤Ŧā¤žā¤ ā¤āĨā¤¨āĨ ā¤Ēā¤¨ā¤ŋ ā¤ĄāĨā¤ā¤ž ā¤ĒāĨā¤°ā¤ļāĨā¤§ā¤¨, ā¤ā¤ŖāĨā¤Ąā¤žā¤°ā¤Ŗ ā¤ĩā¤ž ā¤ā¤Ļā¤žā¤¨ā¤ĒāĨā¤°ā¤Ļā¤žā¤¨ ā¤ā¤°ā¤ŋā¤¨āĨ ā¤āĨā¤¨, ā¤ā¤¸ā¤˛āĨ ā¤¯ā¤¸ ā¤¸ā¤°āĨā¤ā¤°ā¤ā¤ž ā¤ĒāĨā¤°ā¤¯āĨā¤ā¤ā¤°āĨā¤¤ā¤žā¤šā¤°āĨā¤¸ā¤ā¤ ā¤āĨā¤¨āĨ ā¤Ēā¤¨ā¤ŋ ā¤
ā¤¨āĨā¤¤ā¤°ā¤āĨā¤°ā¤ŋā¤¯ā¤ž ā¤ĩā¤ž ā¤¸ā¤āĨā¤ā¤žā¤°ā¤˛ā¤žā¤ ā¤
ā¤¸ā¤ŽāĨā¤ā¤ĩ ā¤Ŧā¤¨ā¤žā¤ā¤ā¤āĨ¤",
+ "about.domain_blocks.suspended.title": "ā¤¨ā¤ŋā¤˛ā¤ŽāĨā¤Ŧā¤ŋā¤¤",
+ "about.not_available": "ā¤¯āĨ ā¤ā¤žā¤¨ā¤ā¤žā¤°āĨ ā¤¯ā¤¸ ā¤¸ā¤°āĨā¤ā¤°ā¤Žā¤ž ā¤ā¤Ēā¤˛ā¤ŦāĨā¤§ ā¤ā¤°ā¤žā¤ā¤ā¤āĨ ā¤āĨā¤¨āĨ¤",
+ "about.powered_by": "{mastodon} ā¤ĻāĨā¤ĩā¤žā¤°ā¤ž ā¤¸ā¤ā¤ā¤žā¤˛ā¤ŋā¤¤ ā¤ĩā¤ŋā¤āĨā¤¨āĨā¤ĻāĨā¤°āĨā¤āĨā¤¤ ā¤¸ā¤žā¤Žā¤žā¤ā¤ŋā¤ ā¤Žā¤ŋā¤Ąā¤ŋā¤¯ā¤ž",
+ "about.rules": "ā¤¸ā¤°āĨā¤ā¤° ā¤¨ā¤ŋā¤¯ā¤Žā¤šā¤°āĨ",
+ "account.add_or_remove_from_list": "ā¤¸āĨā¤āĨā¤Ŧā¤žā¤ ā¤Ĩā¤ĒāĨā¤¨āĨā¤šāĨā¤¸āĨ ā¤ĩā¤ž ā¤šā¤ā¤žā¤ā¤¨āĨā¤šāĨā¤¸āĨ",
+ "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": "ā¤ĄāĨā¤ŽāĨā¤¨ ā¤ŦāĨā¤˛ā¤ ā¤ā¤°ā¤ŋā¤ā¤āĨ ā¤",
+ "account.edit_profile": "ā¤ĒāĨā¤°āĨā¤Ģā¤žā¤ā¤˛ ā¤¸ā¤ŽāĨā¤Ēā¤žā¤Ļā¤¨ ā¤ā¤°āĨā¤¨āĨā¤šāĨā¤¸āĨ",
+ "account.enable_notifications": "@{name} ā¤˛āĨ ā¤ĒāĨā¤¸āĨā¤ ā¤ā¤°āĨā¤Ļā¤ž ā¤Žā¤˛ā¤žā¤ ā¤¸āĨā¤ā¤ŋā¤¤ ā¤ā¤°āĨā¤¨āĨā¤šāĨā¤¸āĨ",
+ "account.endorse": "ā¤ĒāĨā¤°āĨā¤Ģā¤žā¤ā¤˛ā¤Žā¤ž ā¤Ģā¤ŋā¤ā¤° ā¤ā¤°āĨā¤¨āĨā¤šāĨā¤¸āĨ",
+ "account.featured_tags.last_status_never": "ā¤āĨā¤¨āĨ ā¤ĒāĨā¤¸āĨā¤ ā¤āĨā¤¨",
+ "account.follow": "ā¤Ģā¤˛āĨ ā¤ā¤°āĨā¤¨āĨā¤šāĨā¤¸",
+ "account.followers.empty": "ā¤¯ā¤¸ ā¤ĒāĨā¤°ā¤¯āĨā¤ā¤ā¤°āĨā¤¤ā¤žā¤˛ā¤žā¤ ā¤
ā¤šā¤ŋā¤˛āĨā¤¸ā¤ŽāĨā¤Ž ā¤ā¤¸āĨā¤˛āĨ ā¤Ģā¤˛āĨ ā¤ā¤°āĨā¤ĻāĨā¤¨āĨ¤",
+ "account.follows.empty": "ā¤¯āĨ ā¤ĒāĨā¤°ā¤¯āĨā¤ā¤ā¤°āĨā¤¤ā¤žā¤˛āĨ ā¤
ā¤šā¤ŋā¤˛āĨā¤¸ā¤ŽāĨā¤Ž ā¤ā¤¸āĨā¤˛ā¤žā¤ ā¤Ģā¤˛āĨ ā¤ā¤°āĨā¤āĨ ā¤āĨā¤¨āĨ¤",
+ "account.go_to_profile": "ā¤ĒāĨā¤°āĨā¤Ģā¤žā¤ā¤˛ā¤Žā¤ž ā¤ā¤žā¤¨āĨā¤šāĨā¤¸āĨ",
+ "account.hide_reblogs": "@{name} ā¤āĨ ā¤ŦāĨā¤¸āĨā¤ā¤šā¤°āĨ ā¤˛āĨā¤ā¤žā¤ā¤¨āĨā¤šāĨā¤¸āĨ",
+ "account.link_verified_on": "ā¤¯ā¤¸ ā¤˛ā¤ŋā¤āĨā¤ā¤āĨ ā¤¸āĨā¤ĩā¤žā¤Žā¤ŋā¤¤āĨā¤ĩ {date} ā¤Žā¤ž ā¤ā¤žā¤ā¤ ā¤ā¤°ā¤ŋā¤ā¤āĨ ā¤Ĩā¤ŋā¤¯āĨ",
+ "account.media": "ā¤Žā¤ŋā¤Ąā¤ŋā¤¯ā¤ž",
+ "account.mention": "@{name} ā¤˛ā¤žā¤ ā¤ā¤˛āĨā¤˛āĨā¤ ā¤ā¤°āĨā¤¨āĨā¤šāĨā¤¸āĨ",
+ "account.no_bio": "ā¤āĨā¤¨āĨ ā¤ĩā¤ŋā¤ĩā¤°ā¤Ŗ ā¤ĒāĨā¤°ā¤Ļā¤žā¤¨ ā¤ā¤°ā¤ŋā¤ā¤āĨ ā¤āĨā¤¨āĨ¤",
+ "account.posts": "ā¤ĒāĨā¤¸āĨā¤ā¤šā¤°āĨ",
+ "account.requested": "ā¤¸āĨā¤ĩāĨā¤āĨā¤¤ā¤ŋā¤āĨ ā¤Ēā¤°āĨā¤ā¤žā¤ā¤Žā¤žāĨ¤ ā¤Ģā¤˛āĨ ā¤
ā¤¨āĨā¤°āĨā¤§ ā¤°ā¤ĻāĨā¤Ļ ā¤ā¤°āĨā¤¨ ā¤āĨā¤˛ā¤ŋā¤ ā¤ā¤°āĨā¤¨āĨā¤šāĨā¤¸āĨ",
+ "account.requested_follow": "{name} ā¤˛āĨ ā¤¤ā¤Ēā¤žā¤ā¤ā¤˛ā¤žā¤ ā¤Ģā¤˛āĨ ā¤ā¤°āĨā¤¨ ā¤
ā¤¨āĨā¤°āĨā¤§ ā¤ā¤°āĨā¤¨āĨā¤ā¤ā¤āĨ ā¤",
+ "account.share": "@{name} ā¤āĨ ā¤ĒāĨā¤°āĨā¤Ģā¤žā¤ā¤˛ ā¤¸āĨā¤¯ā¤° ā¤ā¤°āĨā¤¨āĨā¤šāĨā¤¸āĨ",
+ "account.show_reblogs": "@{name} ā¤āĨ ā¤ŦāĨā¤¸āĨā¤ā¤šā¤°āĨ ā¤ĻāĨā¤ā¤žā¤ā¤¨āĨā¤šāĨā¤¸āĨ",
+ "account.statuses_counter": "{count, plural, one {{counter} ā¤ĒāĨā¤¸āĨā¤} other {{counter} ā¤ĒāĨā¤¸āĨā¤ā¤šā¤°āĨ}}",
+ "account.unblock": "@{name} ā¤˛ā¤žā¤ ā¤
ā¤¨ā¤ŦāĨā¤˛ā¤ ā¤ā¤°āĨā¤¨āĨā¤šāĨā¤¸āĨ",
+ "account.unblock_domain": "{domain} ā¤ĄāĨā¤ŽāĨā¤¨ā¤˛ā¤žā¤ ā¤
ā¤¨ā¤ŦāĨā¤˛ā¤ ā¤ā¤°āĨā¤¨āĨā¤šāĨā¤¸āĨ",
+ "account.unblock_short": "ā¤
ā¤¨ā¤ŦāĨā¤˛ā¤ ā¤ā¤°āĨā¤¨āĨā¤šāĨā¤¸āĨ",
+ "account.unendorse": "ā¤ĒāĨā¤°āĨā¤Ģā¤žā¤ā¤˛ā¤Žā¤ž ā¤Ģā¤ŋā¤ā¤° ā¤¨ā¤ā¤°āĨā¤¨āĨā¤šāĨā¤¸āĨ",
+ "account.unfollow": "ā¤
ā¤¨ā¤Ģā¤˛āĨ ā¤ā¤°āĨā¤¨āĨā¤šāĨā¤¸āĨ",
+ "account_note.placeholder": "ā¤¨āĨā¤ ā¤˛āĨā¤āĨā¤¨ ā¤āĨā¤˛ā¤ŋā¤ ā¤ā¤°āĨā¤¨āĨā¤šāĨā¤¸āĨ",
+ "admin.dashboard.retention.average": "ā¤ā¤¸ā¤¤",
+ "admin.dashboard.retention.cohort_size": "ā¤¨ā¤¯ā¤žā¤ ā¤ĒāĨā¤°ā¤¯āĨā¤ā¤ā¤°āĨā¤¤ā¤žā¤šā¤°āĨ",
+ "alert.rate_limited.message": "ā¤āĨā¤Ēā¤¯ā¤ž {retry_time, time, medium} ā¤Ēā¤ā¤ŋ ā¤ĒāĨā¤¨: ā¤ĒāĨā¤°ā¤¯ā¤žā¤¸ ā¤ā¤°āĨā¤¨āĨā¤šāĨā¤¸āĨāĨ¤",
+ "alert.unexpected.message": "ā¤ā¤ā¤ā¤ž ā¤
ā¤¨ā¤ĒāĨā¤āĨā¤ˇā¤ŋā¤¤ ā¤¤āĨā¤°āĨā¤ā¤ŋ ā¤ā¤¯āĨāĨ¤",
+ "bundle_column_error.retry": "ā¤ĒāĨā¤¨: ā¤ĒāĨā¤°ā¤¯ā¤žā¤¸ ā¤ā¤°āĨā¤¨āĨā¤šāĨā¤¸āĨ",
+ "bundle_modal_error.close": "ā¤Ŧā¤¨āĨā¤Ļ ā¤ā¤°āĨā¤¨āĨā¤šāĨā¤¸āĨ",
+ "bundle_modal_error.message": "ā¤¯āĨ ā¤ā¤ŽāĨā¤ĒāĨā¤¨āĨā¤¨āĨā¤ ā¤˛āĨā¤Ą ā¤ā¤°āĨā¤Ļā¤ž ā¤āĨā¤šāĨ ā¤ā¤Ąā¤Ŧā¤Ą ā¤ā¤¯āĨāĨ¤",
+ "bundle_modal_error.retry": "Try again",
+ "closed_registrations.other_server_instructions": "Mastodon ā¤ĩā¤ŋā¤āĨā¤¨āĨā¤ĻāĨā¤°āĨā¤āĨā¤¤ ā¤ā¤ā¤āĨā¤˛āĨ, ā¤¤ā¤Ēā¤žā¤ā¤ ā¤
ā¤°āĨā¤āĨ ā¤¸ā¤°āĨā¤ā¤°ā¤Žā¤ž ā¤ā¤žā¤¤ā¤ž ā¤āĨā¤˛āĨā¤¨ ā¤¸ā¤āĨā¤¨āĨā¤šāĨā¤¨āĨā¤ ā¤° ā¤Ēā¤¨ā¤ŋ ā¤¯āĨ ā¤¸ā¤°āĨā¤ā¤°ā¤¸ā¤ā¤ ā¤
ā¤¨āĨā¤¤ā¤°ā¤āĨā¤°ā¤ŋā¤¯ā¤ž ā¤ā¤°āĨā¤¨ ā¤¸ā¤āĨā¤¨āĨā¤šāĨā¤¨āĨā¤āĨ¤",
+ "closed_registrations_modal.description": "ā¤šā¤žā¤˛ {domain} ā¤Žā¤ž ā¤ā¤žā¤¤ā¤ž ā¤¸ā¤ŋā¤°āĨā¤ā¤¨ā¤ž ā¤ā¤°āĨā¤¨ ā¤¸ā¤ŽāĨā¤ā¤ĩ ā¤āĨā¤¨, ā¤¤ā¤° ā¤āĨā¤Ēā¤¯ā¤ž ā¤§āĨā¤¯ā¤žā¤¨ ā¤°ā¤žā¤āĨā¤¨āĨā¤šāĨā¤¸āĨ ā¤ā¤ŋ ā¤¤ā¤Ēā¤žā¤ā¤ā¤˛āĨ Mastodon ā¤ĒāĨā¤°ā¤¯āĨā¤ ā¤ā¤°āĨā¤¨ā¤āĨ ā¤˛ā¤žā¤ā¤ŋ {domain} ā¤Žā¤ž ā¤¨āĨ ā¤ā¤žā¤¤ā¤ž ā¤āĨā¤˛āĨā¤¨ ā¤ā¤ĩā¤ļāĨā¤¯ā¤ ā¤āĨā¤¨āĨ¤",
+ "closed_registrations_modal.find_another_server": "ā¤
ā¤°āĨā¤āĨ ā¤¸ā¤°āĨā¤ā¤° ā¤āĨā¤āĨā¤¨āĨā¤šāĨā¤¸āĨ",
+ "closed_registrations_modal.title": "Mastodon ā¤Žā¤ž ā¤¸ā¤žā¤ā¤¨ ā¤
ā¤Ē ā¤ā¤°āĨā¤ĻāĨ",
+ "column.blocks": "ā¤ŦāĨā¤˛ā¤ ā¤ā¤°ā¤ŋā¤ā¤āĨ ā¤ĒāĨā¤°ā¤¯āĨā¤ā¤ā¤°āĨā¤¤ā¤žā¤šā¤°āĨ",
+ "column.directory": "ā¤ĒāĨā¤°āĨā¤Ģā¤žā¤ā¤˛ ā¤ŦāĨā¤°ā¤žā¤ā¤ ā¤ā¤°āĨā¤¨āĨā¤šāĨā¤¸āĨ",
+ "column.domain_blocks": "ā¤ŦāĨā¤˛ā¤ ā¤ā¤°ā¤ŋā¤ā¤āĨ ā¤ĄāĨā¤ŽāĨā¤¨",
+ "column.follow_requests": "ā¤Ģā¤˛āĨ ā¤
ā¤¨āĨā¤°āĨā¤§ā¤šā¤°āĨ",
+ "column.lists": "ā¤¸āĨā¤āĨā¤šā¤°āĨ",
+ "column.notifications": "ā¤¸āĨā¤ā¤¨ā¤žā¤šā¤°āĨ",
+ "column_header.hide_settings": "ā¤¸āĨā¤ā¤ŋā¤āĨā¤šā¤°āĨ ā¤˛āĨā¤ā¤žā¤ā¤¨āĨā¤šāĨā¤¸āĨ",
+ "column_subheading.settings": "ā¤¸āĨā¤ā¤ŋā¤ā¤šā¤°āĨ",
+ "compose.language.change": "ā¤ā¤žā¤ˇā¤ž ā¤Ēā¤°ā¤ŋā¤ĩā¤°āĨā¤¤ā¤¨ ā¤ā¤°āĨā¤¨āĨā¤šāĨā¤¸āĨ",
+ "compose.language.search": "ā¤ā¤žā¤ˇā¤žā¤šā¤°āĨ ā¤āĨā¤āĨā¤¨āĨā¤šāĨā¤¸āĨ...",
+ "compose_form.direct_message_warning_learn_more": "ā¤Ĩā¤Ē ā¤ā¤žā¤¨āĨā¤¨āĨā¤šāĨā¤¸āĨ",
+ "compose_form.publish_form": "ā¤¨ā¤¯ā¤žā¤ ā¤ĒāĨā¤¸āĨā¤"
+}
diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json
index 295b420fd45..e38f8fd0ba1 100644
--- a/app/javascript/mastodon/locales/nl.json
+++ b/app/javascript/mastodon/locales/nl.json
@@ -32,13 +32,13 @@
"account.featured_tags.last_status_never": "Geen berichten",
"account.featured_tags.title": "Uitgelichte hashtags van {name}",
"account.follow": "Volgen",
+ "account.follow_back": "Terugvolgen",
"account.followers": "Volgers",
"account.followers.empty": "Deze gebruiker heeft nog geen volgers of heeft deze verborgen.",
"account.followers_counter": "{count, plural, one {{counter} volger} other {{counter} volgers}}",
"account.following": "Volgend",
"account.following_counter": "{count, plural, one {{counter} volgend} other {{counter} volgend}}",
"account.follows.empty": "Deze gebruiker volgt nog niemand of heeft deze verborgen.",
- "account.follows_you": "Volgt jou",
"account.go_to_profile": "Ga naar profiel",
"account.hide_reblogs": "Boosts van @{name} verbergen",
"account.in_memoriam": "In memoriam.",
@@ -53,6 +53,7 @@
"account.mute_notifications_short": "Meldingen negeren",
"account.mute_short": "Negeren",
"account.muted": "Genegeerd",
+ "account.mutual": "Jullie volgen elkaar",
"account.no_bio": "Geen beschrijving opgegeven.",
"account.open_original_page": "Originele pagina openen",
"account.posts": "Berichten",
@@ -88,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.",
@@ -145,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",
@@ -407,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",
@@ -525,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",
@@ -550,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",
@@ -714,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 4750b1adc33..9bb4f591971 100644
--- a/app/javascript/mastodon/locales/nn.json
+++ b/app/javascript/mastodon/locales/nn.json
@@ -32,13 +32,13 @@
"account.featured_tags.last_status_never": "Ingen innlegg",
"account.featured_tags.title": "{name} sine framheva emneknaggar",
"account.follow": "Fylg",
+ "account.follow_back": "Følg tilbake",
"account.followers": "Fylgjarar",
"account.followers.empty": "Ingen fylgjer denne brukaren enno.",
"account.followers_counter": "{count, plural, one {{counter} fylgjar} other {{counter} fylgjarar}}",
"account.following": "Fylgjer",
"account.following_counter": "{count, plural, one {Fylgjer {counter}} other {Fylgjer {counter}}}",
"account.follows.empty": "Denne brukaren fylgjer ikkje nokon enno.",
- "account.follows_you": "Fylgjer deg",
"account.go_to_profile": "GÃĨ til profil",
"account.hide_reblogs": "Skjul framhevingar frÃĨ @{name}",
"account.in_memoriam": "Til minne om.",
@@ -53,6 +53,7 @@
"account.mute_notifications_short": "Demp varslingar",
"account.mute_short": "Demp",
"account.muted": "MÃĨlbunden",
+ "account.mutual": "Felles",
"account.no_bio": "Inga skildring er gjeven.",
"account.open_original_page": "Opne originalsida",
"account.posts": "Tut",
@@ -88,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.",
@@ -145,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",
@@ -407,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",
@@ -481,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.",
@@ -523,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!",
@@ -547,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",
@@ -603,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",
@@ -710,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 1739d4aa31f..8da9853bee8 100644
--- a/app/javascript/mastodon/locales/no.json
+++ b/app/javascript/mastodon/locales/no.json
@@ -32,13 +32,13 @@
"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}}",
"account.following": "Følger",
"account.following_counter": "{count, plural, one {{counter} som følges} other {{counter} som følges}}",
"account.follows.empty": "Denne brukeren følger ikke noen enda.",
- "account.follows_you": "Følger deg",
"account.go_to_profile": "GÃĨ til profil",
"account.hide_reblogs": "Skjul fremhevinger fra @{name}",
"account.in_memoriam": "Til minne om.",
@@ -53,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",
@@ -67,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",
@@ -88,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.",
@@ -145,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",
@@ -407,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",
@@ -481,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.",
@@ -523,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!",
@@ -547,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",
@@ -603,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",
@@ -710,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 3812057fb04..8660a3bc05a 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,13 +29,13 @@
"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}}",
"account.following": "Abonat",
"account.following_counter": "{count, plural, one {{counter} Abonaments} other {{counter} Abonaments}}",
"account.follows.empty": "Aqueste utilizaire sèc pas degun pel moment.",
- "account.follows_you": "Vos sèc",
"account.go_to_profile": "Anar al perfil",
"account.hide_reblogs": "Rescondre los partatges de @{name}",
"account.in_memoriam": "En MemÃ˛ria.",
@@ -49,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",
@@ -78,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â¯!",
@@ -129,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",
@@ -173,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",
@@ -295,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",
@@ -340,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â¯?",
@@ -353,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",
@@ -372,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",
@@ -424,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?",
@@ -448,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",
@@ -505,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",
@@ -537,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}",
@@ -610,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",
@@ -627,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 7faf279719d..de085cf9856 100644
--- a/app/javascript/mastodon/locales/pa.json
+++ b/app/javascript/mastodon/locales/pa.json
@@ -1,25 +1,38 @@
{
"about.contact": "ā¨¸āŠ°ā¨Ēā¨°ā¨:",
+ "about.domain_blocks.silenced.title": "ā¨¸āŠā¨Žā¨ŋā¨¤",
"about.domain_blocks.suspended.title": "ā¨ŽāŠā¨
āŠąā¨¤ā¨˛ ā¨āŠā¨¤āŠ",
+ "about.rules": "ā¨¸ā¨°ā¨ĩā¨° ā¨¨ā¨ŋā¨¯ā¨Ž",
"account.account_note_header": "ā¨¨āŠā¨",
- "account.badges.bot": "Bot",
+ "account.add_or_remove_from_list": "ā¨¸āŠā¨āŠ ā¨ĩā¨ŋāŠąā¨ ā¨āŠāŠāŠ ā¨ā¨žā¨ ā¨šā¨ā¨žā¨",
+ "account.badges.bot": "ā¨ā¨āŠā¨ŽāŠā¨ ā¨āŠā¨¤ā¨ž",
"account.badges.group": "ā¨ā¨°āŠāŠąā¨Ē",
+ "account.block": "@{name} ā¨āŠąā¨¤āŠ ā¨Ēā¨žā¨ŦāŠ°ā¨ĻāŠ ā¨˛ā¨žā¨",
+ "account.block_domain": "{domain} ā¨ĄāŠā¨ŽāŠā¨¨ ā¨āŠąā¨¤āŠ ā¨Ēā¨žā¨ŦāŠ°ā¨ĻāŠ ā¨˛ā¨žā¨",
+ "account.block_short": "ā¨Ēā¨žā¨ŦāŠ°ā¨ĻāŠ",
"account.blocked": "ā¨Ēā¨žā¨ŦāŠ°ā¨ĻāŠā¨¸ā¨ŧāŠā¨Ļā¨ž",
- "account.cancel_follow_request": "Withdraw follow request",
- "account.follow": "ā¨ĒāŠā¨°ā¨¸ā¨ŧāŠ°ā¨¸ā¨ ā¨Ŧā¨ŖāŠ",
- "account.followers": "ā¨ĒāŠā¨°ā¨¸ā¨ŧāŠ°ā¨¸ā¨",
- "account.following": "ā¨ĒāŠā¨°ā¨¸ā¨ŧāŠ°ā¨¸ā¨ ā¨šā¨žā¨",
+ "account.cancel_follow_request": "ā¨Ģā¨ŧā¨žā¨˛āŠ ā¨ā¨°ā¨¨ ā¨¨āŠāŠ° ā¨°āŠąā¨Ļ ā¨ā¨°āŠ",
+ "account.edit_profile": "ā¨Ēā¨°āŠā¨Ģā¨žā¨ā¨˛ ā¨¨āŠāŠ° ā¨¸āŠā¨§āŠ",
+ "account.follow": "ā¨Ģā¨ŧā¨žā¨˛āŠ",
+ "account.followers": "ā¨Ģā¨ŧā¨žā¨˛āŠā¨
ā¨°",
+ "account.followers.empty": "ā¨ā¨¸ ā¨ĩā¨°ā¨¤āŠā¨ā¨ā¨žā¨° ā¨¨āŠāŠ° ā¨šā¨žā¨˛āŠ ā¨āŠā¨ ā¨Ģā¨ŧā¨žā¨˛āŠ ā¨¨ā¨šāŠā¨ ā¨ā¨°ā¨Ļā¨ž ā¨šāŠāĨ¤",
+ "account.following": "ā¨Ģā¨ŧā¨žā¨˛āŠ ā¨āŠā¨¤ā¨ž",
+ "account.follows.empty": "ā¨ā¨š ā¨ĩā¨°ā¨¤āŠā¨ā¨ā¨žā¨° ā¨šā¨žā¨˛āŠ ā¨ā¨ŋā¨¸āŠ ā¨¨āŠāŠ° ā¨Ģā¨ŧā¨žā¨˛āŠ ā¨¨ā¨šāŠā¨ ā¨ā¨°ā¨Ļā¨ž ā¨šāŠāĨ¤",
"account.media": "ā¨ŽāŠā¨ĄāŠā¨",
"account.muted": "ā¨ŽāŠā¨¨ ā¨āŠā¨¤āŠā¨ā¨",
- "account.posts": "Toots",
- "account.posts_with_replies": "Toots and replies",
- "account.requested": "Awaiting approval",
+ "account.posts": "ā¨ĒāŠā¨¸ā¨ā¨žā¨",
+ "account.posts_with_replies": "ā¨ĒāŠā¨¸ā¨¤ā¨žā¨ ā¨
ā¨¤āŠ ā¨ā¨ĩā¨žā¨Ŧ",
+ "account.requested": "ā¨Žā¨¨āŠāŠā¨°āŠ ā¨āŠā¨¤āŠ ā¨ā¨ž ā¨°ā¨šāŠ ā¨šāŠāĨ¤ ā¨Ģā¨ŧā¨žā¨˛āŠ ā¨ŦāŠā¨¨ā¨¤āŠā¨ā¨ ā¨¨āŠāŠ° ā¨°āŠąā¨Ļ ā¨ā¨°ā¨¨ ā¨˛ā¨ ā¨ā¨˛ā¨ŋāŠąā¨ ā¨ā¨°āŠ",
+ "account.requested_follow": "{name} ā¨¨āŠ ā¨¤āŠā¨šā¨žā¨¨āŠāŠ° ā¨Ģā¨ŧā¨žā¨˛āŠ ā¨ā¨°ā¨¨ ā¨ĻāŠ ā¨ŦāŠā¨¨ā¨¤āŠ ā¨āŠā¨¤āŠ ā¨šāŠ",
"account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
+ "account.unblock": "@{name} ā¨¤āŠā¨ ā¨Ēā¨žā¨ŦāŠ°ā¨ĻāŠ ā¨šā¨ā¨žā¨",
+ "account.unblock_domain": "{domain} ā¨ĄāŠā¨ŽāŠā¨¨ ā¨¤āŠā¨ ā¨Ēā¨žā¨ŦāŠ°ā¨ĻāŠ ā¨šā¨ā¨žā¨",
"account.unblock_short": "ā¨Ēā¨žā¨ŦāŠ°ā¨ĻāŠ ā¨šā¨ā¨žā¨",
- "account.unfollow": "ā¨ĒāŠā¨°ā¨¸ā¨ŧāŠ°ā¨¸ā¨āŠ ā¨°āŠąā¨Ļ ā¨ā¨°āŠ",
+ "account.unfollow": "ā¨
ā¨Ŗ-ā¨Ģā¨ŧā¨žā¨˛āŠ",
"account.unmute_short": "ā¨ŽāŠā¨¨-ā¨°ā¨šā¨ŋā¨¤ ā¨ā¨°āŠ",
"account_note.placeholder": "Click to add a note",
"admin.dashboard.retention.average": "ā¨ā¨¸ā¨¤",
+ "admin.dashboard.retention.cohort_size": "ā¨¨ā¨ĩāŠā¨ ā¨ĩā¨°ā¨¤āŠā¨ā¨ā¨žā¨°",
"alert.unexpected.title": "ā¨ā¨šāŠ!",
"announcement.announcement": "ā¨šāŠā¨ā¨ž",
"bundle_column_error.network.title": "ā¨¨āŠāŠąā¨ā¨ĩā¨°ā¨ ā¨ĻāŠ ā¨¸ā¨ŽāŠąā¨¸ā¨ŋā¨",
@@ -27,35 +40,48 @@
"bundle_modal_error.close": "ā¨ŦāŠ°ā¨Ļ ā¨ā¨°āŠ",
"bundle_modal_error.retry": "ā¨ŽāŠāŠ-ā¨āŠā¨¸ā¨ŧā¨ŋā¨¸ā¨ŧ ā¨ā¨°āŠ",
"column.about": "ā¨¸ā¨žā¨ĄāŠ ā¨Ŧā¨žā¨°āŠ",
+ "column.blocks": "ā¨Ēā¨žā¨ŦāŠ°ā¨ĻāŠ ā¨˛ā¨žā¨ ā¨ĩā¨°ā¨¤āŠā¨ā¨ā¨žā¨°",
"column.bookmarks": "ā¨ŦāŠāŠąā¨ā¨Žā¨žā¨°ā¨",
- "column.home": "ā¨ŽāŠāŠąā¨ ā¨ĒāŠ°ā¨¨ā¨ž",
+ "column.community": "ā¨˛āŠā¨ā¨˛ ā¨¸ā¨Žā¨žā¨-ā¨˛ā¨žā¨ā¨¨",
+ "column.direct": "ā¨¨ā¨ŋāŠąā¨āŠ āŠā¨ŋā¨ā¨°",
+ "column.favourites": "ā¨Žā¨¨ā¨Ēā¨¸āŠ°ā¨Ļ",
+ "column.follow_requests": "ā¨Ģā¨ŧā¨žā¨˛āŠ ā¨ĻāŠā¨ā¨ ā¨ŦāŠā¨¨ā¨¤āŠā¨ā¨",
+ "column.home": "ā¨ŽāŠāŠąā¨ ā¨¸āŠā¨ž",
"column.lists": "ā¨¸āŠā¨āŠā¨ā¨",
"column.notifications": "ā¨¸āŠā¨ā¨¨ā¨žā¨ĩā¨žā¨",
- "column.pins": "Pinned toot",
+ "column.pins": "ā¨āŠ°ā¨āŠā¨ā¨ ā¨ĒāŠā¨¸ā¨ā¨žā¨",
"column_back_button.label": "ā¨Ēā¨ŋāŠąā¨āŠ",
+ "column_header.pin": "ā¨āŠ°ā¨āŠ",
+ "column_header.show_settings": "ā¨¸āŠā¨ā¨ŋāŠ°ā¨ā¨žā¨ ā¨Ļā¨ŋā¨ā¨žā¨",
+ "column_header.unpin": "ā¨˛ā¨žā¨šāŠ",
"column_subheading.settings": "ā¨¸āŠā¨ā¨ŋāŠ°ā¨ā¨žā¨",
- "community.column_settings.media_only": "Media only",
+ "community.column_settings.local_only": "ā¨¸ā¨ŋā¨°ā¨Ģ ā¨˛āŠā¨ā¨˛ ā¨šāŠ",
+ "community.column_settings.media_only": "ā¨¸ā¨ŋā¨°ā¨Ģ ā¨ŽāŠā¨ĄāŠā¨ ā¨šāŠ",
+ "community.column_settings.remote_only": "ā¨¸ā¨ŋā¨°ā¨Ģā¨ŧ ā¨°ā¨ŋā¨ŽāŠā¨ ā¨šāŠ",
+ "compose.language.change": "ā¨ā¨žā¨ļā¨ž ā¨Ŧā¨Ļā¨˛āŠ",
+ "compose.language.search": "ā¨ā¨žā¨¸ā¨ŧā¨žā¨ĩā¨žā¨ ā¨ĻāŠ ā¨āŠā¨...",
+ "compose.published.open": "ā¨āŠā¨˛āŠā¨šāŠ",
+ "compose.saved.body": "ā¨ĒāŠā¨¸ā¨ ā¨¸āŠ°ā¨ā¨žā¨˛āŠ ā¨ā¨āĨ¤",
"compose_form.direct_message_warning_learn_more": "ā¨šāŠā¨° ā¨ā¨žā¨ŖāŠ",
"compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
"compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.",
+ "compose_form.lock_disclaimer.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": "Text is hidden behind warning",
- "compose_form.spoiler.unmarked": "Text is not hidden",
+ "compose_form.spoiler.marked": "ā¨¸ā¨ŽāŠąā¨ā¨°āŠ ā¨āŠā¨¤ā¨žā¨ĩā¨¨āŠ ā¨¨āŠāŠ° ā¨šā¨ā¨žā¨",
+ "compose_form.spoiler.unmarked": "ā¨¸ā¨ŽāŠąā¨ā¨°āŠ ā¨Ŧā¨žā¨°āŠ ā¨āŠā¨¤ā¨žā¨ĩā¨¨āŠ ā¨āŠāŠāŠ",
"confirmation_modal.cancel": "ā¨°āŠąā¨Ļ ā¨ā¨°āŠ",
- "confirmations.block.confirm": "ā¨Ŧā¨˛ā¨žā¨",
- "confirmations.delete.confirm": "ā¨Žā¨ŋā¨ā¨žā¨",
- "confirmations.delete.message": "Are you sure you want to delete this status?",
- "confirmations.delete_list.confirm": "ā¨Žā¨ŋā¨ā¨žā¨",
+ "confirmations.block.confirm": "ā¨Ēā¨žā¨ŦāŠ°ā¨ĻāŠ",
+ "confirmations.delete.confirm": "ā¨šā¨ā¨žā¨",
+ "confirmations.delete.message": "ā¨āŠ ā¨¤āŠā¨¸āŠā¨ ā¨ā¨š ā¨ĒāŠā¨¸ā¨ ā¨¨āŠāŠ° ā¨šā¨ā¨žā¨ā¨Ŗā¨ž ā¨ā¨žā¨šāŠāŠ°ā¨ĻāŠ ā¨šāŠ?",
+ "confirmations.delete_list.confirm": "ā¨šā¨ā¨žā¨",
"confirmations.discard_edit_media.confirm": "ā¨°āŠąā¨Ļ ā¨ā¨°āŠ",
- "confirmations.domain_block.confirm": "Hide entire domain",
+ "confirmations.domain_block.confirm": "ā¨ĒāŠā¨°āŠ ā¨ĄāŠā¨ŽāŠā¨¨ ā¨āŠąā¨¤āŠ ā¨Ēā¨žā¨ŦāŠ°ā¨ĻāŠ ā¨˛ā¨žā¨",
"confirmations.edit.confirm": "ā¨¸āŠā¨§",
"confirmations.logout.confirm": "ā¨Ŧā¨žā¨šā¨° ā¨šāŠā¨ĩāŠ",
"confirmations.mute.confirm": "ā¨ŽāŠā¨¨ ā¨ā¨°āŠ",
"confirmations.reply.confirm": "ā¨ā¨ĩā¨žā¨Ŧ ā¨ĻāŠā¨ĩāŠ",
- "confirmations.unfollow.confirm": "ā¨ĒāŠā¨°ā¨¸ā¨ŧāŠ°ā¨¸ā¨āŠ ā¨°āŠąā¨Ļ ā¨ā¨°āŠ",
+ "confirmations.unfollow.confirm": "ā¨
ā¨Ŗ-ā¨Ģā¨ŧā¨žā¨˛āŠ",
"copypaste.copied": "ā¨ā¨žā¨ĒāŠ ā¨āŠā¨¤ā¨ž",
"copypaste.copy_to_clipboard": "ā¨ā¨˛ā¨ŋāŠąā¨Ēā¨ŦāŠā¨°ā¨Ą 'ā¨¤āŠ ā¨ā¨žā¨ĒāŠ ā¨ā¨°āŠ",
"disabled_account_banner.account_settings": "ā¨ā¨žā¨¤āŠ ā¨ĻāŠā¨ā¨ ā¨¸āŠā¨ā¨ŋāŠ°ā¨ā¨žā¨",
@@ -63,165 +89,248 @@
"dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.",
"dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.",
"embed.instructions": "Embed this status on your website by copying the code below.",
- "emoji_button.activity": "ā¨ā¨¤āŠā¨ĩā¨ŋā¨§āŠā¨ā¨",
- "emoji_button.clear": "ā¨¸ā¨žā¨Ģā¨ŧ ā¨ā¨°āŠ",
+ "emoji_button.activity": "ā¨ā¨¤āŠā¨ĩā¨ŋā¨§āŠ",
+ "emoji_button.clear": "ā¨Žā¨ŋā¨ā¨žā¨",
"emoji_button.custom": "ā¨ā¨¸ā¨ā¨Ž",
"emoji_button.flags": "ā¨āŠ°ā¨ĄāŠā¨ā¨",
"emoji_button.food": "ā¨ā¨žā¨Ŗā¨ž-ā¨ĒāŠā¨Ŗā¨ž",
"emoji_button.nature": "ā¨āŠā¨Ļā¨°ā¨¤",
"emoji_button.objects": "ā¨ā¨ā¨žā¨",
"emoji_button.people": "ā¨˛āŠā¨",
- "empty_column.account_timeline": "No toots here!",
+ "emoji_button.search": "ā¨āŠā¨ ā¨ā¨°āŠ...",
+ "emoji_button.search_results": "ā¨āŠā¨ ā¨¨ā¨¤āŠā¨āŠ",
+ "emoji_button.symbols": "ā¨ā¨ŋāŠ°ā¨¨āŠā¨š",
+ "emoji_button.travel": "ā¨¸āŠā¨° ā¨¸ā¨Ēā¨žā¨ā¨ž ā¨¤āŠ ā¨Ĩā¨žā¨ĩā¨žā¨",
+ "empty_column.account_timeline": "ā¨āŠąā¨ĨāŠ ā¨āŠā¨ ā¨ĒāŠā¨¸ā¨ ā¨¨ā¨šāŠā¨ ā¨šāŠ!",
"empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
- "empty_column.home": "Your home timeline is empty! Follow more people to fill it up. {suggestions}",
+ "empty_column.home": "ā¨¤āŠā¨šā¨žā¨ĄāŠ ā¨ā¨žā¨ā¨Ž-ā¨˛ā¨žā¨ā¨¨ ā¨ā¨žā¨˛āŠ ā¨šāŠ! ā¨ā¨¸ ā¨¨āŠāŠ° ā¨ā¨°ā¨¨ ā¨˛ā¨ ā¨šāŠā¨° ā¨˛āŠā¨ā¨žā¨ ā¨¨āŠāŠ° ā¨Ģā¨ŧā¨žā¨˛āŠ ā¨ā¨°āŠāĨ¤",
"empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
"errors.unexpected_crash.report_issue": "ā¨ŽāŠāŠąā¨ĻāŠ ā¨ĻāŠ ā¨°ā¨ŋā¨ĒāŠā¨°ā¨ ā¨ā¨°āŠ",
"explore.suggested_follows": "ā¨˛āŠā¨",
"explore.title": "ā¨ĒāŠā¨āŠā¨˛ ā¨ā¨°āŠ",
"explore.trending_links": "ā¨ā¨ŧā¨Ŧā¨°ā¨žā¨",
- "explore.trending_statuses": "ā¨¸āŠ°ā¨Ēā¨žā¨Ļā¨¨ā¨žā¨ĩā¨žā¨",
- "follow_request.reject": "ā¨
ā¨¸ā¨ĩāŠā¨ā¨žā¨° ā¨ā¨°āŠ",
+ "explore.trending_statuses": "ā¨ĒāŠā¨¸ā¨ā¨žā¨",
+ "explore.trending_tags": "ā¨šāŠā¨ļā¨āŠā¨",
+ "filter_modal.added.settings_link": "ā¨¸āŠā¨ā¨ŋāŠ°ā¨ā¨žā¨ ā¨¸āŠā¨ž",
+ "firehose.all": "ā¨¸ā¨",
+ "firehose.local": "ā¨ā¨š ā¨¸ā¨°ā¨ĩā¨°",
+ "firehose.remote": "ā¨šāŠā¨° ā¨¸ā¨°ā¨ĩā¨°",
+ "follow_request.reject": "ā¨°āŠąā¨Ļ ā¨ā¨°āŠ",
"footer.about": "ā¨¸ā¨žā¨ĄāŠ ā¨Ŧā¨žā¨°āŠ",
+ "footer.get_app": "ā¨ā¨Ē ā¨˛ā¨ĩāŠ",
+ "footer.invite": "ā¨˛āŠā¨ā¨žā¨ ā¨¨āŠāŠ° ā¨¸āŠąā¨Ļā¨ž ā¨āŠā¨āŠ",
"footer.keyboard_shortcuts": "ā¨āŠā¨ŦāŠā¨°ā¨Ą ā¨ļā¨žā¨°ā¨ā¨āŠąā¨",
+ "footer.privacy_policy": "ā¨Ēā¨°ā¨ĻāŠā¨Ļā¨žā¨°āŠ ā¨¨āŠā¨¤āŠ",
+ "footer.source_code": "ā¨¸ā¨°āŠā¨¤ ā¨āŠā¨Ą ā¨ĩāŠā¨āŠ",
"footer.status": "ā¨šā¨žā¨˛ā¨¤",
"generic.saved": "ā¨¸ā¨žā¨ā¨āŠ ā¨ā¨",
+ "getting_started.heading": "ā¨ļāŠā¨°āŠ ā¨ā¨°āŠā¨",
+ "hashtag.column_header.tag_mode.all": "ā¨
ā¨¤āŠ {additional}",
+ "hashtag.column_header.tag_mode.any": "ā¨ā¨žā¨ {additional}",
+ "hashtag.column_header.tag_mode.none": "{additional} ā¨Ŧā¨ŋā¨¨ā¨žā¨",
+ "hashtag.column_settings.tag_mode.any": "ā¨ā¨šā¨¨ā¨žā¨ ā¨ĩā¨ŋāŠąā¨āŠā¨ ā¨āŠā¨",
+ "hashtag.column_settings.tag_mode.none": "ā¨ā¨šā¨¨ā¨žā¨ ā¨ĩā¨ŋāŠąā¨āŠā¨ ā¨āŠā¨ ā¨¨ā¨šāŠā¨",
"hashtag.column_settings.tag_toggle": "Include additional tags in this column",
+ "hashtag.follow": "ā¨šāŠā¨ļā¨āŠā¨ ā¨¨āŠāŠ° ā¨Ģā¨ŧā¨žā¨˛āŠ ā¨ā¨°āŠ",
+ "hashtag.unfollow": "ā¨šāŠā¨ļā¨āŠā¨ ā¨¨āŠāŠ° ā¨
ā¨Ŗ-ā¨Ģā¨ŧā¨žā¨˛āŠ ā¨ā¨°āŠ",
"home.column_settings.basic": "ā¨ā¨Ž",
- "keyboard_shortcuts.back": "to navigate back",
- "keyboard_shortcuts.blocked": "to open blocked users list",
- "keyboard_shortcuts.boost": "to boost",
- "keyboard_shortcuts.column": "to focus a status in one of the columns",
+ "interaction_modal.title.follow": "{name} ā¨¨āŠāŠ° ā¨Ģā¨ŧā¨žā¨˛āŠ ā¨ā¨°āŠ",
+ "keyboard_shortcuts.back": "ā¨Ēā¨ŋāŠąā¨āŠ ā¨ā¨žā¨",
+ "keyboard_shortcuts.blocked": "ā¨Ēā¨žā¨ŦāŠ°ā¨ĻāŠ ā¨˛ā¨žā¨ ā¨ĩā¨°ā¨¤āŠā¨ā¨ā¨žā¨°ā¨žā¨ ā¨ĻāŠ ā¨¸āŠā¨āŠ ā¨āŠā¨˛āŠā¨šāŠ",
+ "keyboard_shortcuts.boost": "ā¨ĒāŠā¨¸ā¨ ā¨¨āŠāŠ° ā¨ŦāŠā¨¸ā¨ ā¨ā¨°āŠ",
+ "keyboard_shortcuts.column": "ā¨ĢāŠā¨ā¨¸ ā¨ā¨žā¨˛ā¨Ž",
"keyboard_shortcuts.compose": "to focus the compose textarea",
"keyboard_shortcuts.description": "ā¨ĩā¨°ā¨Ŗā¨¨",
"keyboard_shortcuts.direct": "to open direct messages column",
"keyboard_shortcuts.down": "to move down in the list",
"keyboard_shortcuts.enter": "to open status",
"keyboard_shortcuts.federated": "to open federated timeline",
- "keyboard_shortcuts.heading": "Keyboard Shortcuts",
+ "keyboard_shortcuts.heading": "ā¨āŠā¨ŦāŠā¨°ā¨Ą ā¨ļā¨žā¨°ā¨ā¨āŠąā¨",
"keyboard_shortcuts.home": "to open home timeline",
"keyboard_shortcuts.legend": "to display this legend",
"keyboard_shortcuts.local": "to open local timeline",
"keyboard_shortcuts.mention": "to mention author",
"keyboard_shortcuts.muted": "to open muted users list",
"keyboard_shortcuts.my_profile": "to open your profile",
- "keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.notifications": "ā¨¨āŠā¨āŠā¨Ģā¨ŋā¨āŠā¨ļā¨¨ ā¨ā¨žā¨˛ā¨Ž ā¨āŠā¨˛āŠā¨šāŠ",
"keyboard_shortcuts.open_media": "to open media",
"keyboard_shortcuts.pinned": "to open pinned toots list",
- "keyboard_shortcuts.profile": "to open author's profile",
- "keyboard_shortcuts.reply": "to reply",
+ "keyboard_shortcuts.profile": "ā¨˛āŠā¨ā¨ ā¨Ļā¨ž ā¨Ēā¨°āŠā¨Ģā¨žā¨ā¨˛ ā¨āŠā¨˛āŠā¨šāŠ",
+ "keyboard_shortcuts.reply": "ā¨ĒāŠā¨¸ā¨ ā¨¨āŠāŠ° ā¨ā¨ĩā¨žā¨Ŧ ā¨Ļā¨ŋā¨",
"keyboard_shortcuts.requests": "to open follow requests list",
"keyboard_shortcuts.search": "to focus search",
"keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
- "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
- "keyboard_shortcuts.toot": "to start a brand new toot",
+ "keyboard_shortcuts.toggle_sensitivity": "ā¨ŽāŠā¨ĄāŠā¨ ā¨Ļā¨ŋā¨ā¨žā¨ā¨Ŗ/ā¨˛āŠā¨ā¨žā¨ā¨Ŗ ā¨˛ā¨",
+ "keyboard_shortcuts.toot": "ā¨¨ā¨ĩāŠā¨ ā¨ĒāŠā¨¸ā¨ ā¨ļāŠā¨°āŠ ā¨ā¨°āŠ",
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
"keyboard_shortcuts.up": "to move up in the list",
"lightbox.close": "ā¨ŦāŠ°ā¨Ļ ā¨ā¨°āŠ",
"lightbox.next": "ā¨
ā¨ā¨˛āŠ",
"lightbox.previous": "ā¨Ēā¨ŋā¨ā¨˛āŠ",
- "lists.delete": "ā¨¸āŠā¨āŠ ā¨Žā¨ŋā¨ā¨žā¨",
+ "link_preview.author": "{name} ā¨ĩā¨˛āŠā¨",
+ "lists.account.add": "ā¨¸āŠā¨āŠ ā¨ĩā¨ŋāŠąā¨ ā¨āŠāŠāŠ",
+ "lists.account.remove": "ā¨¸āŠā¨āŠ ā¨ĩā¨ŋā¨āŠā¨ ā¨šā¨ā¨žā¨",
+ "lists.delete": "ā¨¸āŠā¨āŠ ā¨šā¨ā¨žā¨",
+ "lists.replies_policy.followed": "ā¨āŠā¨ ā¨ĩāŠ ā¨Ģā¨ŧā¨žā¨˛āŠ ā¨āŠā¨¤ā¨ž ā¨ĩā¨°ā¨¤āŠā¨ā¨ā¨žā¨°",
+ "lists.replies_policy.none": "ā¨āŠā¨ ā¨¨ā¨šāŠā¨",
+ "loading_indicator.label": "ā¨˛āŠā¨Ą ā¨šāŠ ā¨°ā¨ŋā¨šā¨ž ā¨šāŠâĻ",
"mute_modal.duration": "ā¨Žā¨ŋā¨ā¨Ļ",
- "navigation_bar.about": "ā¨¸ā¨žā¨ĄāŠ ā¨Ŧā¨žā¨°āŠ",
+ "navigation_bar.about": "ā¨ā¨¸ ā¨Ŧā¨žā¨°āŠ",
+ "navigation_bar.advanced_interface": "ā¨¤ā¨ā¨¨āŠā¨āŠ ā¨ĩāŠāŠąā¨Ŧ ā¨āŠ°ā¨ā¨°ā¨ĢāŠā¨¸ ā¨ĩā¨ŋāŠąā¨ ā¨āŠā¨˛āŠā¨šāŠ",
+ "navigation_bar.blocks": "ā¨Ēā¨žā¨ŦāŠ°ā¨ĻāŠ ā¨˛ā¨žā¨ ā¨ĩā¨°ā¨¤āŠā¨ā¨ā¨žā¨°",
"navigation_bar.bookmarks": "ā¨ŦāŠāŠąā¨ā¨Žā¨žā¨°ā¨",
- "navigation_bar.compose": "Compose new toot",
+ "navigation_bar.community_timeline": "ā¨˛āŠā¨ā¨˛ ā¨¸ā¨Žā¨žā¨-ā¨˛ā¨žā¨ā¨¨",
+ "navigation_bar.compose": "ā¨¨ā¨ĩāŠā¨ ā¨ĒāŠā¨¸ā¨ ā¨˛ā¨ŋā¨āŠ",
+ "navigation_bar.direct": "ā¨¨ā¨ŋāŠąā¨āŠ āŠā¨ŋā¨ā¨°",
"navigation_bar.discover": "ā¨āŠā¨",
- "navigation_bar.domain_blocks": "Hidden domains",
+ "navigation_bar.domain_blocks": "ā¨Ēā¨žā¨ŦāŠ°ā¨ĻāŠ ā¨˛ā¨žā¨ ā¨ĄāŠā¨ŽāŠā¨¨",
"navigation_bar.explore": "ā¨ĒāŠā¨āŠā¨˛ ā¨ā¨°āŠ",
+ "navigation_bar.favourites": "ā¨Žā¨¨ā¨Ēā¨¸āŠ°ā¨Ļ",
+ "navigation_bar.follow_requests": "ā¨Ģā¨ŧā¨žā¨˛āŠ ā¨ĻāŠā¨ā¨ ā¨ŦāŠā¨¨ā¨¤āŠā¨ā¨",
+ "navigation_bar.followed_tags": "ā¨Ģā¨ŧā¨žā¨˛āŠ ā¨āŠā¨¤āŠ ā¨šāŠā¨ļā¨āŠā¨",
+ "navigation_bar.follows_and_followers": "ā¨Ģā¨ŧā¨žā¨˛āŠ ā¨
ā¨¤āŠ ā¨Ģā¨ŧā¨žā¨˛āŠ ā¨ā¨°ā¨¨ ā¨ĩā¨žā¨˛āŠ",
"navigation_bar.lists": "ā¨¸āŠā¨āŠā¨ā¨",
- "navigation_bar.logout": "ā¨˛ā¨žāŠąā¨ ā¨ā¨ā¨, ā¨Ŧā¨žā¨šā¨° ā¨ā¨ā¨Ŗā¨ž",
+ "navigation_bar.logout": "ā¨˛ā¨žā¨ ā¨ā¨ā¨",
"navigation_bar.personal": "ā¨¨ā¨ŋāŠąā¨āŠ",
- "navigation_bar.pins": "Pinned toots",
- "navigation_bar.preferences": "ā¨¤ā¨°ā¨āŠā¨šā¨žā¨",
+ "navigation_bar.pins": "ā¨āŠ°ā¨āŠā¨ā¨ ā¨ĒāŠā¨¸ā¨ā¨žā¨",
+ "navigation_bar.preferences": "ā¨Ēā¨¸āŠ°ā¨Ļā¨žā¨",
"navigation_bar.search": "ā¨āŠā¨āŠ",
"navigation_bar.security": "ā¨¸āŠā¨°āŠąā¨ā¨ŋā¨",
- "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.",
+ "not_signed_in_indicator.not_signed_in": "ā¨ā¨š ā¨¸ā¨°āŠā¨¤ ā¨ĩā¨°ā¨¤ā¨Ŗ ā¨˛ā¨ ā¨¤āŠā¨šā¨žā¨¨āŠāŠ° ā¨˛ā¨žā¨ā¨ā¨¨ ā¨ā¨°ā¨¨ ā¨ĻāŠ ā¨˛āŠāŠ ā¨šāŠāĨ¤",
+ "notification.follow": "{name} ā¨¨āŠ ā¨¤āŠā¨šā¨žā¨¨āŠāŠ° ā¨Ģā¨ŧā¨žā¨˛āŠ ā¨āŠā¨¤ā¨ž",
+ "notification.follow_request": "{name} ā¨¨āŠ ā¨¤āŠā¨šā¨žā¨¨āŠāŠ° ā¨Ģā¨ŧā¨žā¨˛āŠ ā¨ā¨°ā¨¨ ā¨ĻāŠ ā¨ŦāŠā¨¨ā¨¤āŠ ā¨āŠā¨¤āŠ ā¨šāŠ",
"notification.reblog": "{name} boosted your status",
- "notifications.column_settings.status": "New toots:",
+ "notifications.column_settings.follow": "ā¨¨ā¨ĩāŠā¨ ā¨Ģā¨ŧā¨žā¨˛āŠā¨
ā¨°:",
+ "notifications.column_settings.follow_request": "ā¨¨ā¨ĩāŠā¨ā¨ ā¨Ģā¨ŧā¨žā¨˛āŠ ā¨ŦāŠā¨¨ā¨¤āŠā¨ā¨:",
+ "notifications.column_settings.status": "ā¨¨ā¨ĩāŠā¨ā¨ ā¨ĒāŠā¨¸ā¨ā¨žā¨:",
+ "notifications.column_settings.update": "ā¨¸āŠā¨§:",
"notifications.filter.all": "ā¨¸ā¨",
- "notifications.filter.follows": "ā¨ĒāŠā¨°ā¨¸ā¨ŧāŠ°ā¨¸ā¨ ā¨Ŧā¨Ŗā¨¨ 'ā¨¤āŠ",
- "onboarding.actions.go_to_explore": "See what's trending",
- "onboarding.actions.go_to_home": "Go to your home feed",
- "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",
+ "notifications.filter.boosts": "ā¨ŦāŠā¨¸ā¨",
+ "notifications.filter.favourites": "ā¨Žā¨¨ā¨Ēā¨¸āŠ°ā¨Ļ",
+ "notifications.filter.follows": "ā¨Ģā¨ŧā¨žā¨˛āŠ",
+ "notifications.filter.mentions": "āŠā¨ŋā¨ā¨°",
+ "onboarding.actions.go_to_explore": "ā¨ŽāŠā¨¨āŠāŠ° ā¨°āŠā¨ā¨žā¨¨ ā¨ĩāŠā¨ā¨žā¨",
+ "onboarding.actions.go_to_home": "ā¨ŽāŠā¨°āŠ ā¨ŽāŠāŠąā¨ ā¨ĢāŠā¨Ą ā¨āŠąā¨¤āŠ ā¨˛āŠ ā¨ā¨žā¨",
+ "onboarding.follows.lead": "",
+ "onboarding.follows.title": "ā¨ā¨Ēā¨ŖāŠ ā¨šāŠā¨Ž ā¨ĢāŠā¨Ą ā¨¨āŠāŠ° ā¨¨ā¨ŋāŠąā¨āŠ ā¨Ŧā¨Ŗā¨žā¨",
+ "onboarding.profile.note": "ā¨ā¨žā¨Ŗā¨ā¨žā¨°āŠ",
+ "onboarding.profile.save_and_continue": "ā¨¸āŠ°ā¨ā¨žā¨˛āŠ ā¨
ā¨¤āŠ ā¨ā¨žā¨°āŠ ā¨°āŠąā¨āŠ",
+ "onboarding.profile.title": "ā¨Ēā¨°āŠā¨Ģā¨žā¨ā¨˛ ā¨¸āŠā¨ā¨
āŠąā¨Ē",
+ "onboarding.profile.upload_avatar": "ā¨Ēā¨°āŠā¨Ģā¨žā¨ā¨˛ ā¨¤ā¨¸ā¨ĩāŠā¨° ā¨
āŠąā¨Ēā¨˛āŠā¨Ą ā¨ā¨°āŠ",
+ "onboarding.share.title": "ā¨ā¨Ēā¨Ŗā¨ž ā¨Ēā¨°āŠā¨Ģā¨žā¨ā¨˛ ā¨¸ā¨žā¨ā¨ā¨ž ā¨ā¨°āŠ",
"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.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.start.skip": "ā¨ļāŠā¨°āŠ ā¨ā¨°ā¨¨ ā¨˛ā¨ ā¨Žā¨Ļā¨Ļ ā¨¨ā¨šāŠā¨ ā¨ā¨žā¨šāŠā¨ĻāŠ ā¨šāŠ?",
+ "onboarding.start.title": "ā¨¤āŠā¨¸āŠā¨ ā¨ĒāŠā¨°ā¨ž ā¨ā¨°ā¨¨ ā¨˛ā¨ŋā¨!",
+ "onboarding.steps.follow_people.body": "ā¨Ļā¨ŋā¨˛ā¨ā¨¸ā¨Ē ā¨˛āŠā¨ā¨žā¨ ā¨¨āŠāŠ° ā¨Ģā¨ŧā¨žā¨˛āŠ ā¨ā¨°āŠ, ā¨ā¨š ā¨¤ā¨žā¨ ā¨Žā¨¸ā¨ā¨žā¨ĄāŠā¨¨ ā¨šāŠāĨ¤",
+ "onboarding.steps.follow_people.title": "ā¨ā¨Ēā¨ŖāŠ ā¨šāŠā¨Ž ā¨ĢāŠā¨Ą ā¨¨āŠāŠ° ā¨¨ā¨ŋāŠąā¨āŠ ā¨Ŧā¨Ŗā¨žā¨",
"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!",
- "onboarding.steps.share_profile.title": "Share your profile",
- "poll.closed": "ā¨ŦāŠ°ā¨Ļ ā¨šāŠā¨ā¨",
+ "onboarding.steps.setup_profile.title": "ā¨ā¨Ēā¨ŖāŠ ā¨Ēā¨°āŠā¨Ģā¨žā¨ā¨˛ ā¨¨āŠāŠ° ā¨ā¨Ēā¨Ŗā¨ž ā¨Ŧā¨Ŗā¨žā¨",
+ "onboarding.steps.share_profile.body": "ā¨ā¨Ēā¨ŖāŠ ā¨Žā¨ŋāŠąā¨¤ā¨°ā¨žā¨ ā¨¨āŠāŠ° ā¨ĻāŠąā¨¸āŠ ā¨¤āŠā¨šā¨žā¨¨āŠāŠ° ā¨Žā¨¸ā¨ā¨žā¨ĄāŠā¨¨ ā¨ā¨ŋā¨ĩāŠā¨ ā¨˛āŠąā¨ā¨ŋā¨",
+ "onboarding.steps.share_profile.title": "ā¨ā¨Ēā¨ŖāŠ ā¨Žā¨¸ā¨ā¨žā¨ĄāŠā¨¨ ā¨Ēā¨°āŠā¨Ģā¨žā¨ā¨˛ ā¨¨āŠāŠ° ā¨¸ā¨žā¨ā¨ā¨ž ā¨ā¨°āŠ",
+ "poll.closed": "ā¨ŦāŠ°ā¨Ļ ā¨šāŠ",
"poll.refresh": "ā¨¤ā¨žā¨ā¨ŧā¨ž ā¨ā¨°āŠ",
"poll.vote": "ā¨ĩāŠā¨ ā¨Ēā¨žā¨",
- "privacy.change": "Adjust status privacy",
- "privacy.direct.short": "Direct",
- "privacy.private.short": "Followers-only",
+ "privacy.change": "ā¨ĒāŠā¨¸ā¨ ā¨ĻāŠ ā¨Ēā¨°ā¨ĻāŠā¨Ļā¨žā¨°āŠ ā¨¨āŠāŠ° ā¨Ŧā¨Ļā¨˛āŠ",
"privacy.public.short": "ā¨ā¨¨ā¨¤ā¨",
"privacy_policy.title": "ā¨Ēā¨°ā¨ĻāŠā¨Ļā¨žā¨°āŠ ā¨¨āŠā¨¤āŠ",
"refresh": "ā¨¤ā¨žā¨ā¨ŧā¨ž ā¨ā¨°āŠ",
"regeneration_indicator.label": "ā¨˛āŠā¨Ą ā¨šāŠ ā¨°ā¨ŋā¨šā¨ž ā¨šāŠ...",
"relative_time.full.just_now": "ā¨šāŠā¨ŖāŠ ā¨šāŠ",
+ "relative_time.just_now": "ā¨šāŠā¨ŖāŠ",
+ "relative_time.minutes": "{number}ā¨Žā¨ŋāŠ°",
+ "relative_time.seconds": "{number}ā¨¸",
"relative_time.today": "ā¨
āŠąā¨",
"reply_indicator.cancel": "ā¨°āŠąā¨Ļ ā¨ā¨°āŠ",
"report.block": "ā¨Ŧā¨˛ā¨žā¨",
+ "report.categories.legal": "ā¨ā¨¨āŠāŠ°ā¨¨āŠ",
"report.categories.other": "ā¨Ŧā¨žā¨āŠ",
- "report.categories.spam": "ā¨¸ā¨Ēā¨žā¨Ž",
- "report.category.title_status": "ā¨¸āŠ°ā¨Ēā¨žā¨Ļā¨¨ā¨ž",
+ "report.categories.spam": "ā¨¸ā¨ĒāŠā¨Ž",
+ "report.category.title_account": "ā¨Ēā¨°āŠā¨Ģā¨žā¨ā¨˛",
+ "report.category.title_status": "ā¨ĒāŠā¨¸ā¨",
"report.close": "ā¨ŽāŠā¨āŠ°ā¨Žā¨˛",
"report.mute": "ā¨ŽāŠā¨¨ ā¨ā¨°āŠ",
"report.next": "ā¨
ā¨ā¨˛āŠ",
- "report.placeholder": "Type or paste additional comments",
- "report.submit": "Submit report",
- "report.target": "Report {target}",
+ "report.placeholder": "ā¨ĩā¨§āŠā¨ ā¨ā¨ŋāŠąā¨Ēā¨ŖāŠā¨ā¨",
+ "report.reasons.dislike": "ā¨ŽāŠā¨¨āŠāŠ° ā¨ā¨š ā¨Ēā¨¸āŠ°ā¨Ļ ā¨¨ā¨šāŠā¨ ā¨šāŠ",
+ "report.reasons.spam": "ā¨ā¨š ā¨¸ā¨ĒāŠā¨Ž ā¨šāŠ",
+ "report.submit": "ā¨āŠā¨āŠ",
+ "report.target": "{target} ā¨°ā¨ŋā¨ĒāŠā¨°ā¨",
+ "report.unfollow": "@{name} ā¨¨āŠāŠ° ā¨
ā¨Ŗ-ā¨Ģā¨ŧā¨žā¨˛āŠ ā¨ā¨°āŠ",
"report_notification.attached_statuses": "{count, plural, one {# post} other {# posts}} attached",
"report_notification.categories.other": "ā¨Ŧā¨žā¨āŠ",
- "report_notification.categories.spam": "ā¨¸ā¨Ēā¨žā¨Ž",
+ "report_notification.categories.spam": "ā¨¸ā¨ĒāŠā¨Ž",
+ "report_notification.categories.violation": "ā¨¨ā¨ŋā¨¯ā¨Ž ā¨ĻāŠ ā¨ā¨˛āŠ°ā¨ā¨Ŗā¨ž",
"search.placeholder": "ā¨āŠā¨āŠ",
+ "search_popout.quick_actions": "ā¨ĢāŠā¨°āŠ ā¨ā¨žā¨°ā¨ĩā¨žā¨ā¨ā¨",
+ "search_popout.specific_date": "ā¨ā¨žā¨¸ ā¨¤ā¨žā¨°āŠā¨",
+ "search_popout.user": "ā¨ĩā¨°ā¨¤āŠā¨ā¨ā¨žā¨°",
+ "search_results.accounts": "ā¨Ēā¨°āŠā¨Ģā¨žā¨ā¨˛",
"search_results.all": "ā¨¸ā¨",
- "search_results.statuses": "Toots",
+ "search_results.hashtags": "ā¨šāŠā¨ļā¨āŠā¨",
+ "search_results.statuses": "ā¨ĒāŠā¨¸ā¨ā¨žā¨",
"server_banner.learn_more": "ā¨šāŠā¨° ā¨ā¨žā¨ŖāŠ",
"sign_in_banner.create_account": "ā¨ā¨žā¨¤ā¨ž ā¨Ŧā¨Ŗā¨žā¨",
- "sign_in_banner.sign_in": "Sign in",
- "status.admin_status": "Open this status in the moderation interface",
- "status.copy": "Copy link to status",
- "status.delete": "ā¨Žā¨ŋā¨ā¨žā¨",
+ "sign_in_banner.sign_in": "ā¨˛ā¨žā¨ā¨ā¨¨",
+ "status.admin_status": "",
+ "status.block": "@{name} ā¨āŠąā¨¤āŠ ā¨Ēā¨žā¨ŦāŠ°ā¨ĻāŠ ā¨˛ā¨žā¨",
+ "status.bookmark": "ā¨ŦāŠāŠąā¨ā¨Žā¨žā¨°ā¨",
+ "status.copy": "ā¨ĒāŠā¨¸ā¨ ā¨˛ā¨ ā¨˛ā¨ŋāŠ°ā¨ ā¨ā¨žā¨ĒāŠ ā¨ā¨°āŠ",
+ "status.delete": "ā¨šā¨ā¨žā¨",
"status.edit": "ā¨¸āŠā¨§",
+ "status.edited": "{date} ā¨¨āŠāŠ° ā¨¸āŠā¨§ā¨ŋā¨",
"status.edited_x_times": "Edited {count, plural, one {# time} other {# times}}",
"status.embed": "ā¨ŽāŠāŠā¨šāŠ",
+ "status.favourite": "ā¨Ēā¨¸āŠ°ā¨Ļ",
+ "status.history.created": "{name} ā¨¨āŠ {date} ā¨¨āŠāŠ° ā¨Ŧā¨Ŗā¨žā¨ā¨",
+ "status.history.edited": "{name} ā¨¨āŠ {date} ā¨¨āŠāŠ° ā¨¸āŠā¨§ā¨ŋā¨",
"status.load_more": "ā¨šāŠā¨° ā¨Ļā¨ŋā¨ā¨žā¨",
+ "status.media.open": "ā¨āŠā¨˛āŠā¨šā¨Ŗ ā¨˛ā¨ ā¨ā¨˛ā¨ŋāŠąā¨ ā¨ā¨°āŠ",
+ "status.media.show": "ā¨ĩāŠā¨ā¨žā¨ā¨Ŗ ā¨˛ā¨ ā¨ā¨˛ā¨ŋāŠąā¨ ā¨ā¨°āŠ",
+ "status.mention": "@{name} ā¨Ļā¨ž āŠā¨ŋā¨ā¨°",
"status.more": "ā¨šāŠā¨°",
- "status.open": "Expand this status",
- "status.pinned": "Pinned toot",
+ "status.open": "ā¨ā¨š ā¨ĒāŠā¨¸ā¨ ā¨¨āŠāŠ° ā¨ĢāŠā¨˛ā¨žā¨",
+ "status.pin": "ā¨Ēā¨°āŠā¨Ģā¨žā¨ā¨˛ ā¨āŠąā¨¤āŠ ā¨āŠ°ā¨āŠ",
+ "status.pinned": "ā¨āŠ°ā¨āŠ ā¨šāŠā¨ ā¨ĒāŠā¨¸ā¨",
"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} ā¨¨āŠāŠ° ā¨ā¨ĩā¨žā¨Ŧ ā¨Ļā¨ŋāŠąā¨¤ā¨ž",
"status.reply": "ā¨ā¨ĩā¨žā¨Ŧ ā¨ĻāŠā¨ĩāŠ",
+ "status.replyAll": "ā¨Žā¨žā¨Žā¨˛āŠ ā¨¨āŠāŠ° ā¨ā¨ĩā¨žā¨Ŧ ā¨Ļā¨ŋā¨",
+ "status.report": "@{name} ā¨ĻāŠ ā¨°ā¨ŋā¨ĒāŠā¨°ā¨ ā¨ā¨°āŠ",
+ "status.sensitive_warning": "ā¨¸āŠ°ā¨ĩāŠā¨Ļā¨¨ā¨¸ā¨ŧāŠā¨˛ ā¨¸ā¨ŽāŠąā¨ā¨°āŠ",
"status.share": "ā¨¸ā¨žā¨ā¨ā¨ž ā¨ā¨°āŠ",
+ "status.show_filter_reason": "ā¨ā¨ŋā¨ĩāŠā¨ ā¨ĩāŠ ā¨ĩāŠā¨ā¨žā¨",
"status.show_less": "ā¨āŠąā¨ ā¨Ļā¨ŋā¨ā¨žā¨",
- "status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}",
- "subscribed_languages.save": "ā¨¤ā¨Ŧā¨ĻāŠā¨˛āŠā¨ā¨ ā¨¸ā¨žā¨ā¨āŠ",
- "tabs_bar.home": "ā¨ŽāŠāŠąā¨ ā¨ĒāŠ°ā¨¨ā¨ž",
+ "status.show_more": "ā¨šāŠā¨° ā¨Ļā¨ŋā¨ā¨žā¨",
+ "status.title.with_attachments": "{user} ā¨¨āŠ {attachmentCount, plural,one {ā¨
ā¨āŠā¨ā¨ŽāŠā¨ā¨} other {{attachmentCount}ā¨
ā¨āŠā¨ā¨ŽāŠā¨ā¨ā¨žā¨}} ā¨ĒāŠā¨¸ā¨ ā¨āŠā¨¤āŠā¨ā¨",
+ "status.translate": "ā¨ā¨˛āŠąā¨Ĩā¨ž ā¨ā¨°āŠ",
+ "subscribed_languages.save": "ā¨¤ā¨Ŧā¨ĻāŠā¨˛āŠā¨ā¨ ā¨¸āŠ°ā¨ā¨žā¨˛āŠ",
+ "tabs_bar.home": "ā¨ā¨°",
"tabs_bar.notifications": "ā¨¸āŠā¨ā¨¨ā¨žā¨ĩā¨žā¨",
- "timeline_hint.resources.followers": "ā¨ĒāŠā¨°ā¨¸ā¨ŧāŠ°ā¨¸ā¨",
- "timeline_hint.resources.follows": "ā¨ĒāŠā¨°ā¨¸ā¨ŧāŠ°ā¨¸ā¨ ā¨Ŧā¨Ŗā¨¨ 'ā¨¤āŠ",
- "timeline_hint.resources.statuses": "Older toots",
+ "timeline_hint.resources.followers": "ā¨Ģā¨ŧā¨žā¨˛āŠā¨
ā¨°",
+ "timeline_hint.resources.follows": "ā¨Ģā¨ŧā¨žā¨˛āŠ",
+ "timeline_hint.resources.statuses": "ā¨ĒāŠā¨°ā¨žā¨ŖāŠā¨ā¨ ā¨ĒāŠā¨¸ā¨ā¨žā¨",
"trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {# days}}",
- "upload_form.audio_description": "Describe for people with hearing loss",
- "upload_form.description": "Describe for the visually impaired",
+ "units.short.billion": "{count}ā¨ŋā¨Ŧ",
+ "units.short.million": "{count}ā¨Žā¨ŋ",
+ "units.short.thousand": "{count}ā¨šāŠā¨žā¨°",
+ "upload_form.audio_description": "ā¨ŦāŠā¨˛ā¨ŧāŠ ā¨ā¨žā¨ ā¨¸āŠā¨Ŗā¨¨ ā¨ĩā¨ŋāŠąā¨ ā¨ŽāŠā¨ļā¨ā¨ŋā¨˛ ā¨ĩā¨žā¨˛āŠ ā¨˛āŠā¨ā¨žā¨ ā¨˛ā¨ ā¨ĩāŠā¨°ā¨ĩāŠ",
+ "upload_form.description": "ā¨
āŠ°ā¨¨āŠā¨šāŠ ā¨ā¨žā¨ ā¨ĻāŠā¨ā¨Ŗ ā¨˛ā¨ ā¨ŽāŠā¨ļā¨ā¨˛ ā¨ĩā¨žā¨˛āŠ ā¨˛āŠā¨ā¨žā¨ ā¨˛ā¨ ā¨ĩāŠā¨°ā¨ĩāŠ",
"upload_form.edit": "ā¨¸āŠā¨§",
- "upload_form.undo": "ā¨Žā¨ŋā¨ā¨žā¨",
- "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
+ "upload_form.video_description": "ā¨ŦāŠā¨˛ā¨ŧāŠ, ā¨¸āŠā¨Ŗā¨¨ ā¨ĩā¨ŋāŠąā¨ ā¨ŽāŠā¨ļā¨ā¨ŋā¨˛, ā¨
āŠ°ā¨¨āŠā¨šāŠ ā¨ā¨žā¨ ā¨āŠąā¨ ā¨¨ā¨ŋā¨āŠā¨šā¨ž ā¨ĩā¨žā¨˛āŠ ā¨˛āŠā¨ā¨žā¨ ā¨˛ā¨ ā¨ĩāŠā¨°ā¨ĩā¨ž",
"upload_modal.apply": "ā¨˛ā¨žā¨āŠ ā¨ā¨°āŠ",
+ "upload_modal.applying": "ā¨˛ā¨žā¨āŠ ā¨āŠā¨¤ā¨ž ā¨ā¨ž ā¨°ā¨ŋā¨šā¨ž ā¨šāŠâĻ",
"upload_modal.choose_image": "ā¨¤ā¨¸ā¨ĩāŠā¨° ā¨āŠā¨ŖāŠ",
"upload_modal.edit_media": "ā¨ŽāŠā¨ĄāŠā¨ ā¨¸āŠā¨§āŠ",
- "upload_progress.label": "UploadingâĻ",
- "upload_progress.processing": "ā¨ā¨žā¨°ā¨ ā¨
ā¨§āŠā¨¨ ā¨šāŠâĻ",
+ "upload_progress.label": "ā¨
āŠąā¨Ēā¨˛āŠā¨Ą ā¨āŠā¨¤ā¨ž ā¨ā¨ž ā¨°ā¨ŋā¨šā¨ž ā¨šāŠ...",
+ "upload_progress.processing": "ā¨ā¨žā¨°ā¨ĩā¨žā¨ ā¨āŠąā¨˛ ā¨°ā¨šāŠ ā¨šāŠâĻ",
"video.exit_fullscreen": "ā¨ĒāŠā¨°āŠ ā¨¸ā¨ā¨°āŠā¨¨ ā¨ĩā¨ŋāŠąā¨āŠā¨ ā¨Ŧā¨žā¨šā¨° ā¨¨ā¨ŋā¨ā¨˛āŠ",
"video.fullscreen": "ā¨ĒāŠā¨°āŠ ā¨¸ā¨ā¨°āŠā¨¨",
- "video.pause": "ā¨°ā¨šā¨žā¨",
+ "video.pause": "ā¨ ā¨šā¨ŋā¨°āŠ",
"video.play": "ā¨ā¨˛ā¨žā¨"
}
diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json
index dc77f8f4e02..2eaeeaab55d 100644
--- a/app/javascript/mastodon/locales/pl.json
+++ b/app/javascript/mastodon/locales/pl.json
@@ -32,17 +32,17 @@
"account.featured_tags.last_status_never": "Brak postÃŗw",
"account.featured_tags.title": "Polecane hasztagi {name}",
"account.follow": "Obserwuj",
+ "account.follow_back": "Obserwuj wzajemnie",
"account.followers": "ObserwujÄ
cy",
"account.followers.empty": "Nikt jeszcze nie obserwuje tego uÅŧytkownika.",
"account.followers_counter": "{count, plural, one {{counter} obserwujÄ
cy} few {{counter} obserwujÄ
cych} many {{counter} obserwujÄ
cych} other {{counter} obserwujÄ
cych}}",
"account.following": "Obserwowani",
"account.following_counter": "{count, plural, one {{counter} obserwowany} few {{counter} obserwowanych} many {{counter} obserwowanych} other {{counter} obserwowanych}}",
"account.follows.empty": "Ten uÅŧytkownik nie obserwuje jeszcze nikogo.",
- "account.follows_you": "Obserwuje CiÄ",
"account.go_to_profile": "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Ä.",
@@ -53,6 +53,7 @@
"account.mute_notifications_short": "Wycisz powiadomienia",
"account.mute_short": "Wycisz",
"account.muted": "Wyciszony",
+ "account.mutual": "Przyjaciele",
"account.no_bio": "Brak opisu.",
"account.open_original_page": "OtwÃŗrz stronÄ oryginalnÄ
",
"account.posts": "Wpisy",
@@ -88,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.",
@@ -147,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",
@@ -407,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",
@@ -491,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:",
@@ -525,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",
@@ -714,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 e7975dd76e4..bb009239d42 100644
--- a/app/javascript/mastodon/locales/pt-BR.json
+++ b/app/javascript/mastodon/locales/pt-BR.json
@@ -32,13 +32,13 @@
"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}}",
"account.following": "Seguindo",
"account.following_counter": "{count, plural, one {segue {counter}} other {segue {counter}}}",
"account.follows.empty": "Nada aqui.",
- "account.follows_you": "te segue",
"account.go_to_profile": "Ir ao perfil",
"account.hide_reblogs": "Ocultar boosts de @{name}",
"account.in_memoriam": "Em memÃŗria.",
@@ -53,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",
@@ -88,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.",
@@ -147,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",
@@ -407,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",
@@ -525,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",
@@ -551,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",
@@ -714,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 2d1616960a1..22bb1bbfd26 100644
--- a/app/javascript/mastodon/locales/pt-PT.json
+++ b/app/javascript/mastodon/locales/pt-PT.json
@@ -7,7 +7,7 @@
"about.domain_blocks.silenced.explanation": "Normalmente nÃŖo verÃĄ perfis e conteÃēdo deste servidor, a menos que os procure explicitamente ou opte por os seguir.",
"about.domain_blocks.silenced.title": "Limitados",
"about.domain_blocks.suspended.explanation": "Nenhum dado deste servidor serÃĄ processado, armazenado ou trocado, impossibilitando qualquer interaçÃŖo ou comunicaçÃŖo com os utilizadores dessas instÃĸncias.",
- "about.domain_blocks.suspended.title": "Supensos",
+ "about.domain_blocks.suspended.title": "Suspensos",
"about.not_available": "Esta informaçÃŖo nÃŖo foi disponibilizada neste servidor.",
"about.powered_by": "Rede social descentralizada baseada no {mastodon}",
"about.rules": "Regras do servidor",
@@ -32,13 +32,13 @@
"account.featured_tags.last_status_never": "Sem publicaçÃĩes",
"account.featured_tags.title": "#Etiquetas destacadas por {name}",
"account.follow": "Seguir",
+ "account.follow_back": "Seguir de volta",
"account.followers": "Seguidores",
"account.followers.empty": "Ainda ninguÊm segue este utilizador.",
"account.followers_counter": "{count, plural, one {{counter} seguidor} other {{counter} seguidores}}",
"account.following": "A seguir",
"account.following_counter": "{count, plural, other {A seguir {counter}}}",
"account.follows.empty": "Este utilizador ainda nÃŖo segue ninguÊm.",
- "account.follows_you": "Segue-te",
"account.go_to_profile": "Ir para o perfil",
"account.hide_reblogs": "Esconder partilhas de @{name}",
"account.in_memoriam": "Em MemÃŗria.",
@@ -53,6 +53,7 @@
"account.mute_notifications_short": "Silenciar notificaçÃĩes",
"account.mute_short": "Silenciar",
"account.muted": "Silenciada",
+ "account.mutual": "MÃētuo",
"account.no_bio": "Nenhuma descriçÃŖo fornecida.",
"account.open_original_page": "Abrir a pÃĄgina original",
"account.posts": "PublicaçÃĩes",
@@ -88,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.",
@@ -145,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",
@@ -407,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",
@@ -525,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",
@@ -550,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",
@@ -714,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 5355f9935ae..e6d881a986f 100644
--- a/app/javascript/mastodon/locales/ro.json
+++ b/app/javascript/mastodon/locales/ro.json
@@ -36,7 +36,6 @@
"account.following": "UrmÄriČi",
"account.following_counter": "{count, plural, one {Un abonament} few {{counter} abonamente} other {{counter} de abonamente}}",
"account.follows.empty": "Momentan acest utilizator nu are niciun abonament.",
- "account.follows_you": "Este abonat la tine",
"account.go_to_profile": "Mergi la profil",
"account.hide_reblogs": "Ascunde distribuirile de la @{name}",
"account.joined_short": "Ãnscris",
@@ -77,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.",
@@ -132,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Ä",
@@ -366,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",
@@ -462,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Ä",
@@ -642,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 f0c48236b91..eefa9c72987 100644
--- a/app/javascript/mastodon/locales/ru.json
+++ b/app/javascript/mastodon/locales/ru.json
@@ -32,13 +32,13 @@
"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} ĐŋОдĐŋиŅŅиĐēĐ°}}",
"account.following": "ĐОдĐŋиŅĐēи",
"account.following_counter": "{count, plural, one {{counter} ĐŋОдĐŋиŅĐēĐ°} many {{counter} ĐŋОдĐŋиŅĐžĐē} other {{counter} ĐŋОдĐŋиŅĐēи}}",
"account.follows.empty": "ĐŅĐžŅ ĐŋĐžĐģŅСОваŅĐĩĐģŅ ĐŋĐžĐēĐ° ĐŊи ĐŊĐ° ĐēĐžĐŗĐž ĐŊĐĩ ĐŋОдĐŋиŅĐ°ĐģŅŅ.",
- "account.follows_you": "ĐОдĐŋиŅĐ°ĐŊ(Đ°) ĐŊĐ° ваŅ",
"account.go_to_profile": "ĐĐĩŅĐĩĐšŅи Đē ĐŋŅĐžŅиĐģŅ",
"account.hide_reblogs": "ĐĄĐēŅŅŅŅ ĐŋŅОдвиĐļĐĩĐŊиŅ ĐžŅ @{name}",
"account.in_memoriam": "Đ ĐĐ°ĐŧŅŅи.",
@@ -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, 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": "ĐĐ°ĐąĐģĐžĐēиŅОваŅŅ",
@@ -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/ry.json b/app/javascript/mastodon/locales/ry.json
new file mode 100644
index 00000000000..0967ef424bc
--- /dev/null
+++ b/app/javascript/mastodon/locales/ry.json
@@ -0,0 +1 @@
+{}
diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json
index 59379343b9c..469930c3ed1 100644
--- a/app/javascript/mastodon/locales/sa.json
+++ b/app/javascript/mastodon/locales/sa.json
@@ -36,7 +36,6 @@
"account.following": "ā¤
ā¤¨āĨā¤¸ā¤°ā¤¤ā¤ŋ",
"account.following_counter": "{count, plural, one {{counter} ā¤
ā¤¨āĨā¤¸āĨā¤¤ā¤} two {{counter} ā¤
ā¤¨āĨā¤¸āĨā¤¤āĨ} other {{counter} ā¤
ā¤¨āĨā¤¸āĨā¤¤ā¤žā¤}}",
"account.follows.empty": "ā¤¨ ā¤āĨā¤Ŋā¤ĒāĨā¤¯ā¤¨āĨā¤¸āĨā¤¤āĨ ā¤ĩā¤°āĨā¤¤ā¤¤āĨ",
- "account.follows_you": "ā¤¤āĨā¤ĩā¤žā¤Žā¤¨āĨā¤¸ā¤°ā¤¤ā¤ŋ",
"account.go_to_profile": "ā¤ĒāĨā¤°āĨā¤Ģā¤žā¤¯ā¤ŋā¤˛ā¤ ā¤ā¤āĨā¤",
"account.hide_reblogs": "@{name} ā¤Žā¤ŋā¤¤āĨā¤°ā¤¸āĨā¤¯ ā¤ĒāĨā¤°ā¤ā¤žā¤ļā¤¨ā¤žā¤¨ā¤ŋ ā¤ā¤ŋā¤ĻāĨā¤¯ā¤¨āĨā¤¤ā¤žā¤ŽāĨ",
"account.in_memoriam": "ā¤¸āĨā¤ŽāĨā¤¤āĨā¤¯ā¤žā¤ŽāĨ",
@@ -78,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": "ā¤
ā¤¨āĨā¤°āĨā¤§ā¤ŋā¤¤ā¤ ā¤ĒāĨā¤ˇāĨā¤ ā¤ ā¤ĒāĨā¤°ā¤¤ā¤ŋā¤Ēā¤žā¤Ļā¤¯ā¤ŋā¤¤āĨā¤ ā¤¨ ā¤ļā¤āĨā¤¯ā¤¤āĨāĨ¤ ā¤
ā¤¸āĨā¤Žā¤žā¤ā¤ ā¤āĨā¤Ąā¤ŋ ā¤ĻāĨā¤ˇā¤¸āĨā¤¯ ā¤ā¤žā¤°ā¤ŖāĨā¤¨, ā¤
ā¤Ĩā¤ĩā¤ž ā¤ŦāĨā¤°ā¤žā¤ā¤ā¤°āĨ ā¤¸ā¤ā¤ā¤¤ā¤¤ā¤žā¤¯ā¤žā¤¸āĨā¤¸ā¤Žā¤¸āĨā¤¯ā¤žā¤¯ā¤žā¤ ā¤ā¤žā¤°ā¤ŖāĨā¤¨ ā¤ā¤ĩā¤ŋā¤¤āĨā¤Žā¤°āĨā¤šā¤¤ā¤ŋāĨ¤",
@@ -130,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": "ā¤¨ā¤ŋā¤ˇāĨā¤§ā¤",
@@ -358,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": "ā¤
ā¤¨āĨā¤¸ā¤°ā¤Ŗā¤žā¤¨āĨā¤°āĨā¤§ā¤žā¤",
@@ -454,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": "ā¤¨ā¤ĩāĨā¤āĨā¤°āĨ",
@@ -573,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 59c834b950c..90b663aea79 100644
--- a/app/javascript/mastodon/locales/sc.json
+++ b/app/javascript/mastodon/locales/sc.json
@@ -14,6 +14,7 @@
"account.badges.group": "Grupu",
"account.block": "Bloca @{name}",
"account.block_domain": "Bloca su domÃŦniu {domain}",
+ "account.block_short": "Bloca",
"account.blocked": "Blocadu",
"account.browse_more_on_origin_server": "Esplora de prus in su profilu originale",
"account.cancel_follow_request": "Withdraw follow request",
@@ -29,19 +30,21 @@
"account.following": "Sighende",
"account.following_counter": "{count, plural, one {Sighende a {counter}} other {Sighende a {counter}}}",
"account.follows.empty": "Custa persone non sighit ancora a nemos.",
- "account.follows_you": "Ti sighit",
"account.hide_reblogs": "Cua is cumpartziduras de @{name}",
+ "account.in_memoriam": "In memoriam.",
"account.joined_short": "At aderidu",
"account.link_verified_on": "Sa propiedade de custu ligÃ˛ngiu est istada controllada su {date}",
"account.locked_info": "S'istadu de riservadesa de custu contu est istadu cunfiguradu comente blocadu. Sa persone chi tenet sa propiedade revisionat a manu chie dda podet sighire.",
"account.media": "Cuntenutu multimediale",
"account.mention": "Mèntova a @{name}",
"account.mute": "Pone a @{name} a sa muda",
+ "account.mute_short": "A sa muda",
"account.muted": "A sa muda",
"account.posts": "Publicatziones",
"account.posts_with_replies": "Publicatziones e rispostas",
"account.report": "Signala @{name}",
"account.requested": "Abetende s'aprovatzione. Incarca pro annullare sa rechesta de sighidura",
+ "account.requested_follow": "{name} at dimandadu de ti sighire",
"account.share": "Cumpartzi su profilu de @{name}",
"account.show_reblogs": "Ammustra is cumpartziduras de @{name}",
"account.statuses_counter": "{count, plural, one {{counter} publicatzione} other {{counter} publicatziones}}",
@@ -57,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",
@@ -97,21 +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.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",
@@ -122,6 +115,7 @@
"confirmations.delete_list.message": "Seguru chi boles cantzellare custa lista in manera permanente?",
"confirmations.domain_block.confirm": "Bloca totu su domÃŦniu",
"confirmations.domain_block.message": "Boles de seguru, ma a beru a beru, blocare {domain}? In sa parte manna de is casos, pagos blocos o silentziamentos de persones sunt sufitzientes e preferÃŦbiles. No as a bÃŦdere cuntenutos dae custu domÃŦniu in peruna lÃŦnia de tempus pÚblica o in is notÃŦficas tuas. Sa gente chi ti sighit dae cussu domÃŦniu at a èssere bogada.",
+ "confirmations.edit.confirm": "ModÃŦfica",
"confirmations.logout.confirm": "Essi¡nche",
"confirmations.logout.message": "Seguru chi boles essire?",
"confirmations.mute.confirm": "A sa muda",
@@ -140,6 +134,7 @@
"directory.local": "Isceti dae {domain}",
"directory.new_arrivals": "Arribos noos",
"directory.recently_active": "Cun atividade dae pagu",
+ "disabled_account_banner.account_settings": "Cunfiguratziones de su contu",
"dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.",
"dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.",
"embed.instructions": "Inserta custa publicatzione in su situ web tuo copiende su cÃ˛dighe de suta.",
@@ -180,13 +175,19 @@
"errors.unexpected_crash.copy_stacktrace": "CÃ˛pia stacktrace in punta de billete",
"errors.unexpected_crash.report_issue": "Sinnala unu problema",
"explore.search_results": "Resurtados de sa chirca",
+ "explore.suggested_follows": "Gente",
+ "explore.trending_statuses": "Publicatziones",
+ "explore.trending_tags": "Etichetas",
"filter_modal.select_filter.expired": "iscadidu",
+ "firehose.all": "Totus",
"follow_request.authorize": "Autoriza",
"follow_request.reject": "Refuda",
"follow_requests.unlocked_explanation": "Fintzas si su contu tuo no est blocadu, su personale de {domain} at pensadu chi forsis bolias revisionare a manu is rechestas de custos contos.",
"footer.about": "Informatziones",
"footer.invite": "Invita gente",
+ "footer.keyboard_shortcuts": "Incurtzaduras de tecladu",
"footer.privacy_policy": "PolÃŦtica de riservadesa",
+ "footer.status": "Istadu",
"generic.saved": "Sarvadu",
"getting_started.heading": "Comente cumintzare",
"hashtag.column_header.tag_mode.all": "e {additional}",
@@ -263,6 +264,7 @@
"lists.search": "Chirca intre sa gente chi ses sighende",
"lists.subheading": "Is listas tuas",
"load_pending": "{count, plural, one {# elementu nou} other {# elementos noos}}",
+ "loading_indicator.label": "CarrighendeâĻ",
"media_gallery.toggle_visible": "Cua {number, plural, one {immà gine} other {immà gines}}",
"mute_modal.duration": "Durada",
"mute_modal.hide_notifications": "Boles cuare is notÃŦficas de custa persone?",
@@ -274,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",
@@ -288,6 +289,7 @@
"navigation_bar.search": "Chirca",
"navigation_bar.security": "Seguresa",
"not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.",
+ "notification.favourite": "{name} at marcadu comente a preferidu s'istadu tuo",
"notification.follow": "{name} ti sighit",
"notification.follow_request": "{name} at dimandadu de ti sighire",
"notification.mention": "{name} t'at mentovadu",
@@ -328,6 +330,8 @@
"onboarding.actions.go_to_home": "Go to your home feed",
"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": "NÃ˛mine visÃŦbile",
+ "onboarding.profile.note": "Biografia",
"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.steps.follow_people.body": "You curate your own feed. Lets fill it with interesting people.",
@@ -344,34 +348,46 @@
"poll.total_votes": "{count, plural, one {# votu} other {# votos}}",
"poll.vote": "Vota",
"poll.voted": "As votadu custa risposta",
+ "poll.votes": "{votes, plural, one {# votu} other {# votos}}",
"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âĻ",
"regeneration_indicator.sublabel": "Preparende sa lÃŦnia de tempus printzipale tua.",
"relative_time.days": "{number} dies a oe",
+ "relative_time.full.just_now": "immoe etotu",
"relative_time.hours": "{number} oras a immoe",
"relative_time.just_now": "immoe",
"relative_time.minutes": "{number} minutos a immoe",
"relative_time.seconds": "{number} segundos a immoe",
"relative_time.today": "oe",
"reply_indicator.cancel": "Annulla",
+ "report.block": "Bloca",
+ "report.categories.other": "Ãteru",
+ "report.category.title_account": "profilu",
+ "report.category.title_status": "publicatzione",
+ "report.close": "Fatu",
"report.forward": "Torra a imbiare a {target}",
"report.forward_hint": "Custu contu est de un'à teru serbidore. Ddi boles imbiare puru una cÃ˛pia anÃ˛nima de custu informe?",
+ "report.mute": "A sa muda",
+ "report.next": "Imbeniente",
"report.placeholder": "Cummentos additzionales",
"report.submit": "Imbia",
"report.target": "Informende de {target}",
"report_notification.attached_statuses": "{count, plural, one {# post} other {# posts}} attached",
+ "report_notification.categories.other": "Ãteru",
"search.placeholder": "Chirca",
+ "search_popout.user": "utente",
+ "search_results.accounts": "Profilos",
+ "search_results.all": "Totus",
"search_results.hashtags": "Etichetas",
"search_results.statuses": "Publicatziones",
+ "server_banner.administered_by": "Amministradu dae:",
+ "server_banner.learn_more": "Ãteras informatziones",
+ "server_banner.server_stats": "IstatÃŦsticas de su serbidore:",
"sign_in_banner.sign_in": "Sign in",
"status.admin_account": "Aberi s'interfache de moderatzione pro @{name}",
"status.admin_status": "Aberi custa publicatzione in s'interfache de moderatzione",
@@ -382,6 +398,7 @@
"status.copy": "CÃ˛pia su ligÃ˛ngiu a sa publicatzione tua",
"status.delete": "Cantzella",
"status.detailed_status": "Visualizatzione de detà lliu de arresonada",
+ "status.edit": "ModÃŦfica",
"status.edited_x_times": "Edited {count, plural, one {# time} other {# times}}",
"status.embed": "Afissa",
"status.filtered": "Filtradu",
@@ -413,6 +430,7 @@
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}",
"status.unmute_conversation": "Torra a ativare s'arresonada",
"status.unpin": "Boga dae pitzu de su profilu",
+ "subscribed_languages.save": "Sarva is modÃŦficas",
"tabs_bar.home": "Printzipale",
"tabs_bar.notifications": "NotÃŦficas",
"time_remaining.days": "{number, plural, one {abarrat # die} other {abarrant # dies}}",
@@ -438,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 28dac9c2a28..b7563022a93 100644
--- a/app/javascript/mastodon/locales/sco.json
+++ b/app/javascript/mastodon/locales/sco.json
@@ -35,7 +35,6 @@
"account.following": "Follaein",
"account.following_counter": "{count, plural, one {{counter} Follaein} other {{counter} Follaein}}",
"account.follows.empty": "This uiser disnae follae oniebody yit.",
- "account.follows_you": "Follaes ye",
"account.go_to_profile": "Gang tae profile",
"account.hide_reblogs": "Dinnae shaw heezes fae @{name}",
"account.joined_short": "Jynt",
@@ -75,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.",
@@ -126,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",
@@ -342,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",
@@ -426,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",
@@ -584,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 835f699b82c..1b2eb17633e 100644
--- a/app/javascript/mastodon/locales/si.json
+++ b/app/javascript/mastodon/locales/si.json
@@ -26,7 +26,6 @@
"account.following": "āļ
āļąāˇāļāļ¸āļą",
"account.following_counter": "{count, plural, one {āļ
āļąāˇāļāļ¸āļą {counter}} other {āļ
āļąāˇāļāļ¸āļą {counter}}}",
"account.follows.empty": "āļāˇāļ¸āļāˇ āļāˇāˇāˇāˇāˇāļāˇ āļ
āļąāˇāļāļ¸āļąāļē āļąāˇāļāļģāļēāˇ.",
- "account.follows_you": "āļāļļāˇ āļ
āļąāˇāļāļ¸āļąāļē āļāļģāļēāˇ",
"account.go_to_profile": "āļ´āˇāļāˇāļāļŠāļ§ āļēāļąāˇāļą",
"account.joined_short": "āļāļāˇ āˇāˇ āļ¯āˇāļąāļē",
"account.link_verified_on": "āļ¸āˇāļ¸ āˇāļļāˇāļŗāˇāļēāˇ āļ
āļēāˇāļāˇāļē {date} āļ¯āˇ āļ´āļģāˇāļāˇâāˇāˇ āļāˇāļģāˇāļĢāˇ",
@@ -54,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": "āļ
āļ´āˇāļēāˇ!",
@@ -103,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": "āļ
āˇāˇāˇāļģ",
@@ -270,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": "āļąāˇāˇāļŦ āļāˇ
āˇāļ āļą",
@@ -336,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": "āļąāˇāˇāˇāļ¸āˇ āļāļģāļąāˇāļą",
@@ -482,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 9115695d871..5b1203aeeaa 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,13 +32,13 @@
"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}}",
"account.following": "Sledujem",
"account.following_counter": "{count, plural, one {{counter} SledovanÃŊch} other {{counter} SledujÃēcich}}",
"account.follows.empty": "Tento pouÅžÃvateÄž eÅĄte nikoho nesleduje.",
- "account.follows_you": "Sleduje ÅĨa",
"account.go_to_profile": "Prejdi na profil",
"account.hide_reblogs": "Skry zdieÄžania od @{name}",
"account.in_memoriam": "In Memoriam.",
@@ -53,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",
@@ -88,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.",
@@ -145,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",
@@ -224,6 +214,7 @@
"emoji_button.search_results": "VÃŊsledky hÄžadania",
"emoji_button.symbols": "Symboly",
"emoji_button.travel": "Cestovanie a miesta",
+ "empty_column.account_hides_collections": "Tento uÅžÃvateÄž si zvolil nesprÃstupniÅĨ tÃēto informÃĄciu",
"empty_column.account_suspended": "ÃÄet bol pozastavenÃŊ",
"empty_column.account_timeline": "Nie sÃē tu Åžiadne prÃspevky!",
"empty_column.account_unavailable": "Profil nedostupnÃŊ",
@@ -391,6 +382,7 @@
"lists.search": "VyhÄžadÃĄvaj medzi uÅžÃvateÄžmi, ktorÃŊch sledujeÅĄ",
"lists.subheading": "Tvoje zoznamy",
"load_pending": "{count, plural, one {# novÃĄ poloÅžka} other {# novÃŊch poloÅžiek}}",
+ "loading_indicator.label": "NaÄÃtamâĻ",
"media_gallery.toggle_visible": "Zapni/Vypni viditeÄžnosÅĨ",
"moved_to_account_banner.text": "VaÅĄe konto {disabledAccount} je momentÃĄlne zablokovanÊ, pretoÅže ste sa presunuli na {movedToAccount}.",
"mute_modal.duration": "Trvanie",
@@ -405,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ÃĄ",
@@ -480,6 +471,15 @@
"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": "Urob môj profil objaviteÄžnÃŊ",
+ "onboarding.profile.display_name": "ZobrazovanÊ meno",
+ "onboarding.profile.display_name_hint": "Tvoje plnÊ meno, alebo tvoje zÃĄbavnÊ menoâĻ",
+ "onboarding.profile.lead": "Toto môŞeÅĄ vÅždy dokonÄiÅĨ neskôr v nastaveniach, kde je dostupnÃŊch eÅĄte viac volieb na prispôsobenie.",
+ "onboarding.profile.note": "O tebe",
+ "onboarding.profile.note_hint": "MôŞeÅĄ @spomenÃēÅĨ inÃŊch ÄžudÃ, alebo #haÅĄtagyâĻ",
+ "onboarding.profile.save_and_continue": "UloÅž a pokraÄuj",
+ "onboarding.profile.title": "Nastavenie profilu",
+ "onboarding.profile.upload_avatar": "Nahraj profilovÃŊ obrÃĄzok",
+ "onboarding.profile.upload_header": "Nahraj profilovÊ zÃĄhlavie",
"onboarding.share.lead": "Daj Äžudom vedieÅĨ, ako ÅĨa môŞu na Mastodone nÃĄjsÅĨ!",
"onboarding.share.message": "Na Mastodone som {username}. PrÃÄ ma nasledovaÅĨ na {url}",
"onboarding.share.next_steps": "ÄalÅĄie moÅžnÊ kroky:",
@@ -513,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Ê",
@@ -594,6 +587,7 @@
"search.quick_action.status_search": "PrÃspevky zodpovedajÃēce {x}",
"search.search_or_paste": "HÄžadaj, alebo vloÅž URL adresu",
"search_popout.full_text_search_disabled_message": "Nie je k dispozÃcii v domÊne {domain}.",
+ "search_popout.full_text_search_logged_out_message": "DostupnÊ iba keÄ si prihlÃĄsenÃŊ/ÃĄ.",
"search_popout.language_code": "ISO kÃŗd jazyka",
"search_popout.options": "MoÅžnosti vyhÄžadÃĄvania",
"search_popout.quick_actions": "RÃŊchle akcie",
@@ -701,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 4ef2681f9a8..559b05db72e 100644
--- a/app/javascript/mastodon/locales/sl.json
+++ b/app/javascript/mastodon/locales/sl.json
@@ -32,13 +32,13 @@
"account.featured_tags.last_status_never": "Ni objav",
"account.featured_tags.title": "Izpostavljeni kljuÄniki {name}",
"account.follow": "Sledi",
+ "account.follow_back": "Sledi nazaj",
"account.followers": "Sledilci",
"account.followers.empty": "NihÄe ne sledi temu uporabniku.",
"account.followers_counter": "{count, plural, one {ima {counter} sledilca} two {ima {counter} sledilca} few {ima {counter} sledilce} other {ima {counter} sledilcev}}",
"account.following": "Sledim",
"account.following_counter": "{count, plural, one {sledi {count} osebi} two {sledi {count} osebama} few {sledi {count} osebam} other {sledi {count} osebam}}",
"account.follows.empty": "Ta uporabnik ÅĄe ne sledi nikomur.",
- "account.follows_you": "Vam sledi",
"account.go_to_profile": "Pojdi na profil",
"account.hide_reblogs": "Skrij izpostavitve od @{name}",
"account.in_memoriam": "V spomin.",
@@ -53,6 +53,7 @@
"account.mute_notifications_short": "UtiÅĄaj obvestila",
"account.mute_short": "UtiÅĄaj",
"account.muted": "UtiÅĄan",
+ "account.mutual": "Vzajemno",
"account.no_bio": "Ni opisa.",
"account.open_original_page": "Odpri izvirno stran",
"account.posts": "Objave",
@@ -88,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.",
@@ -145,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",
@@ -407,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",
@@ -525,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",
@@ -714,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 86042a91e5e..bfc674248bd 100644
--- a/app/javascript/mastodon/locales/sq.json
+++ b/app/javascript/mastodon/locales/sq.json
@@ -32,13 +32,13 @@
"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}}",
"account.following": "Ndjekje",
"account.following_counter": "{count, plural, one {{counter} i Ndjekur} other {{counter} tÃĢ Ndjekur}}",
"account.follows.empty": "Ky pÃĢrdorues ende sândjek kÃĢnd.",
- "account.follows_you": "Ju ndjek",
"account.go_to_profile": "Kalo te profili",
"account.hide_reblogs": "Fshih pÃĢrforcime nga @{name}",
"account.in_memoriam": "In Memoriam.",
@@ -53,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",
@@ -88,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.",
@@ -145,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",
@@ -407,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",
@@ -525,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",
@@ -550,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",
@@ -606,6 +608,7 @@
"search.quick_action.status_search": "Postime me pÃĢrputhje me {x}",
"search.search_or_paste": "KÃĢrkoni, ose hidhni njÃĢ URL",
"search_popout.full_text_search_disabled_message": "Jo i passhÃĢm nÃĢ {domain}.",
+ "search_popout.full_text_search_logged_out_message": "E pÃĢrdorshme vetÃĢm kur keni bÃĢrÃĢ hyrjen nÃĢ llogari.",
"search_popout.language_code": "Kod ISO gjuhe",
"search_popout.options": "MundÃĢsi kÃĢrkimi",
"search_popout.quick_actions": "Veprime tÃĢ shpejta",
@@ -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 35bb8f99297..b0348748a67 100644
--- a/app/javascript/mastodon/locales/sr-Latn.json
+++ b/app/javascript/mastodon/locales/sr-Latn.json
@@ -32,13 +32,13 @@
"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}}",
"account.following": "Prati",
"account.following_counter": "{count, plural, one {{counter} prati} few {{counter} prati} other {{counter} prati}}",
"account.follows.empty": "Ovaj korisnik joÅĄ uvek nikog ne prati.",
- "account.follows_you": "Prati vas",
"account.go_to_profile": "Idi na profil",
"account.hide_reblogs": "Sakrij podrÅžavanja @{name}",
"account.in_memoriam": "U znak seÄanja na.",
@@ -53,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",
@@ -88,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.",
@@ -145,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",
@@ -407,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",
@@ -525,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",
@@ -714,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 552c04d13f6..4e4956e1a2a 100644
--- a/app/javascript/mastodon/locales/sr.json
+++ b/app/javascript/mastodon/locales/sr.json
@@ -32,13 +32,13 @@
"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} ĐŋŅĐ°ŅиĐģĐ°ŅĐ°}}",
"account.following": "ĐŅĐ°Ņи",
"account.following_counter": "{count, plural, one {{counter} ĐŋŅĐ°Ņи} few {{counter} ĐŋŅĐ°Ņи} other {{counter} ĐŋŅĐ°Ņи}}",
"account.follows.empty": "ĐваŅ ĐēĐžŅиŅĐŊиĐē ŅĐžŅ ŅвĐĩĐē ĐŊиĐēĐžĐŗ ĐŊĐĩ ĐŋŅĐ°Ņи.",
- "account.follows_you": "ĐŅĐ°Ņи ваŅ",
"account.go_to_profile": "Đди ĐŊĐ° ĐŋŅĐžŅиĐģ",
"account.hide_reblogs": "ĐĄĐ°ĐēŅиŅ ĐŋОдŅĐļаваŅĐ° Од @{name}",
"account.in_memoriam": "ĐŖ СĐŊĐ°Đē ŅĐĩŅĐ°ŅĐ° ĐŊĐ°.",
@@ -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,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 8a07da72d8e..d6e6555b530 100644
--- a/app/javascript/mastodon/locales/sv.json
+++ b/app/javascript/mastodon/locales/sv.json
@@ -32,13 +32,13 @@
"account.featured_tags.last_status_never": "Inga inlägg",
"account.featured_tags.title": "{name}s utvalda hashtaggar",
"account.follow": "FÃļlj",
+ "account.follow_back": "FÃļlj tillbaka",
"account.followers": "FÃļljare",
"account.followers.empty": "Ingen fÃļljer denna användare än.",
"account.followers_counter": "{count, plural, one {{counter} fÃļljare} other {{counter} fÃļljare}}",
"account.following": "FÃļljer",
"account.following_counter": "{count, plural, one {{counter} fÃļljd} other {{counter} fÃļljda}}",
"account.follows.empty": "Denna användare fÃļljer inte nÃĨgon än.",
- "account.follows_you": "FÃļljer dig",
"account.go_to_profile": "GÃĨ till profilen",
"account.hide_reblogs": "DÃļlj boostar frÃĨn @{name}",
"account.in_memoriam": "Till minne av.",
@@ -53,6 +53,7 @@
"account.mute_notifications_short": "Stäng av aviseringsljud",
"account.mute_short": "Tysta",
"account.muted": "Tystad",
+ "account.mutual": "Ãmsesidig",
"account.no_bio": "Ingen beskrivning angiven.",
"account.open_original_page": "Ãppna den ursprungliga sidan",
"account.posts": "Inlägg",
@@ -88,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.",
@@ -145,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",
@@ -407,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",
@@ -523,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",
@@ -549,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",
@@ -712,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 abbdf9b7daa..42164f656b1 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 ce9042e62b9..6210c3d0b11 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,21 +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.follows_you": "āŽāŽā¯āŽāŽŗā¯āŽĒā¯ āŽĒāŽŋāŽŠā¯āŽ¤ā¯āŽāŽ°ā¯āŽāŽŋāŽąāŽžāŽ°ā¯",
+ "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} -āŽāŽĒā¯ āŽĒā¯āŽāŽžāŽ°āŽŗāŽŋ",
@@ -60,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": "āŽĒāŽā¯āŽāŽŋāŽ¯āŽ˛ā¯āŽāŽŗā¯",
@@ -91,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": "āŽ¤āŽā¯",
@@ -181,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} āŽāŽ´āŽŋāŽ¯āŽ°ā¯ āŽāŽŖā¯āŽŖā¯āŽāŽŋāŽąāŽžāŽ°ā¯.",
@@ -256,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": "āŽĒāŽŋāŽŠā¯āŽĒāŽąā¯āŽąāŽ˛ā¯āŽāŽŗā¯ āŽŽāŽąā¯āŽąā¯āŽŽā¯ āŽĒāŽŋāŽŠā¯āŽĒāŽąā¯āŽąā¯āŽĒāŽĩāŽ°ā¯āŽāŽŗā¯",
@@ -317,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": "āŽāŽā¯āŽāŽŗā¯ āŽĩā¯āŽā¯āŽā¯ āŽāŽā¯āŽāŽŽā¯ āŽ¤āŽ¯āŽžāŽ°ā¯ āŽā¯āŽ¯ā¯āŽ¯āŽĒā¯āŽĒāŽā¯āŽāŽŋāŽąāŽ¤ā¯!",
@@ -405,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 7c1956d95b9..b1a242c751d 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 f21c0ef57ad..24a67247c03 100644
--- a/app/javascript/mastodon/locales/te.json
+++ b/app/javascript/mastodon/locales/te.json
@@ -12,7 +12,6 @@
"account.followers": "ā°
ā°¨āąā°ā°°āąā°˛āą",
"account.followers.empty": "ā° ā°ĩā°ŋā°¨ā°ŋā°¯āąā°ā°Ļā°žā°°āąā°Ąā°ŋā°¨ā°ŋ ā°ā°ā°ā°ž ā°ā°ĩā°°āą ā°
ā°¨āąā°¸ā°°ā°ŋā°ā°ā°Ąā°ā°˛āąā°Ļāą.",
"account.follows.empty": "ā° ā°ĩā°ŋā°¨ā°ŋā°¯āąā°ā°Ļā°žā°°ā°ŋ ā°ā°ā°ā°ž ā°ā°ĩā°°ā°ŋā°¨āą ā°
ā°¨āąā°¸ā°°ā°ŋā°ā°ā°Ąā°ā°˛āąā°Ļāą.",
- "account.follows_you": "ā°Žā°ŋā°Žāąā°Žā°˛āąā°¨ā°ŋ ā°
ā°¨āąā°¸ā°°ā°ŋā°¸āąā°¤āąā°¨āąā°¨ā°žā°°āą",
"account.hide_reblogs": "@{name} ā°¨āąā°ā°ā°ŋ ā°Ŧāąā°¸āąā°āą ā°˛ā°¨āą ā°Ļā°žā°ā°ŋā°Ēāąā°āąā°āą",
"account.link_verified_on": "ā° ā°˛ā°ā°āą ā°¯āąā°āąā° ā°¯ā°žā°ā°Žā°žā°¨āąā°¯ā° {date}ā°¨ ā°Ēā°°āąā°āąā°ˇā°ŋā°ā°ā°Ŧā°Ąā°ŋā°ā°Ļā°ŋ",
"account.locked_info": "ā° ā°ā°žā°¤ā°ž ā°¯āąā°āąā° ā°āąā°Ēāąā°¯ā°¤ ā°¸āąā°Ĩā°ŋā°¤ā°ŋ ā°˛ā°žā°āą ā°āąā°¯ā°Ŧā°Ąā°ŋ ā°ĩāąā°ā°Ļā°ŋ. ā° ā°ā°žā°¤ā°žā°¨āą ā°ā°ĩā°°āą ā°
ā°¨āąā°¸ā°°ā°ŋā°ā°ā°ĩā°āąā°āą ā°¯ā°ā°Žā°žā°¨āą ā°¨ā°ŋā°°āąā°Ŗā°¯ā° ā°¤āąā°¸āąā°āąā°ā°ā°žā°°āą.",
@@ -65,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}ā°¨ā°ŋ ā°Ŧāąā°˛ā°žā°āą ā°āąā°¯ā°žā°˛ā°¨āąā°āąā°ā°āąā°¨āąā°¨ā°žā°°ā°ž?",
@@ -187,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": "ā°ā°žā°Ŧā°ŋā°¤ā°žā°˛āą",
@@ -241,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": "ā°ā°Ēāąā°Ēāąā°Ąāą",
@@ -309,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 c020dc3625b..4437afa78c5 100644
--- a/app/javascript/mastodon/locales/th.json
+++ b/app/javascript/mastodon/locales/th.json
@@ -32,13 +32,13 @@
"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, other {{counter} ā¸ā¸šāšā¸ā¸´ā¸ā¸ā¸˛ā¸Ą}}",
"account.following": "ā¸ā¸ŗā¸Ĩā¸ąā¸ā¸ā¸´ā¸ā¸ā¸˛ā¸Ą",
"account.following_counter": "{count, plural, other {{counter} ā¸ā¸ŗā¸Ĩā¸ąā¸ā¸ā¸´ā¸ā¸ā¸˛ā¸Ą}}",
"account.follows.empty": "ā¸ā¸šāšāšā¸āšā¸ā¸ĩāšā¸ĸā¸ąā¸āšā¸Ąāšāšā¸āšā¸ā¸´ā¸ā¸ā¸˛ā¸Ąāšā¸ā¸Ŗ",
- "account.follows_you": "ā¸ā¸´ā¸ā¸ā¸˛ā¸Ąā¸ā¸¸ā¸",
"account.go_to_profile": "āšā¸ā¸ĸā¸ąā¸āšā¸ā¸Ŗāšā¸ā¸Ĩāš",
"account.hide_reblogs": "ā¸āšā¸ā¸ā¸ā¸˛ā¸Ŗā¸ā¸ąā¸ā¸ā¸˛ā¸ @{name}",
"account.in_memoriam": "āšā¸ā¸ˇāšā¸ā¸Ŗā¸°ā¸Ĩā¸ļā¸ā¸ā¸ļā¸",
@@ -53,6 +53,7 @@
"account.mute_notifications_short": "ā¸āšā¸ā¸ā¸ā¸˛ā¸Ŗāšā¸āšā¸āšā¸ā¸ˇā¸ā¸",
"account.mute_short": "ā¸āšā¸ā¸",
"account.muted": "ā¸āšā¸ā¸ā¸ā¸ĸā¸šāš",
+ "account.mutual": "ā¸ā¸ā¸ā¸ĩāšā¸Ąā¸ĩā¸Ŗāšā¸§ā¸Ąā¸ā¸ąā¸",
"account.no_bio": "āšā¸Ąāšāšā¸āšāšā¸Ģāšā¸ā¸ŗā¸ā¸ā¸´ā¸ā¸˛ā¸ĸ",
"account.open_original_page": "āšā¸ā¸´ā¸ā¸Ģā¸āšā¸˛ā¸ā¸ąāšā¸āšā¸ā¸´ā¸Ą",
"account.posts": "āšā¸ā¸Ēā¸āš",
@@ -60,7 +61,7 @@
"account.report": "ā¸Ŗā¸˛ā¸ĸā¸ā¸˛ā¸ @{name}",
"account.requested": "ā¸ā¸ŗā¸Ĩā¸ąā¸ā¸Ŗā¸ā¸ā¸˛ā¸Ŗā¸ā¸ā¸¸ā¸Ąā¸ąā¸ā¸´ ā¸ā¸Ĩā¸´ā¸āšā¸ā¸ˇāšā¸ā¸ĸā¸āšā¸Ĩā¸´ā¸ā¸ā¸ŗā¸ā¸ā¸ā¸´ā¸ā¸ā¸˛ā¸Ą",
"account.requested_follow": "{name} āšā¸āšā¸ā¸ā¸ā¸´ā¸ā¸ā¸˛ā¸Ąā¸ā¸¸ā¸",
- "account.share": "āšā¸āšā¸ā¸ā¸ąā¸āšā¸ā¸Ŗāšā¸ā¸Ĩāšā¸ā¸ā¸ @{name}",
+ "account.share": "āšā¸ā¸Ŗāšāšā¸ā¸Ŗāšā¸ā¸Ĩāšā¸ā¸ā¸ @{name}",
"account.show_reblogs": "āšā¸Ēā¸ā¸ā¸ā¸˛ā¸Ŗā¸ā¸ąā¸ā¸ā¸˛ā¸ @{name}",
"account.statuses_counter": "{count, plural, other {{counter} āšā¸ā¸Ēā¸āš}}",
"account.unblock": "āšā¸Ĩā¸´ā¸ā¸ā¸´ā¸ā¸ā¸ąāšā¸ @{name}",
@@ -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,13 +303,13 @@
"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": "āšā¸Ēā¸ā¸ā¸ā¸Ŗā¸°ā¸ā¸˛ā¸¨",
"interaction_modal.description.favourite": "ā¸āšā¸§ā¸ĸā¸ā¸ąā¸ā¸ā¸ĩāšā¸ Mastodon ā¸ā¸¸ā¸ā¸Ēā¸˛ā¸Ąā¸˛ā¸Ŗā¸ā¸ā¸ˇāšā¸ā¸ā¸ā¸āšā¸ā¸Ēā¸āšā¸ā¸ĩāšāšā¸ā¸ˇāšā¸āšā¸āšā¸āšā¸Ģāšā¸ā¸šāšā¸Ēā¸Ŗāšā¸˛ā¸ā¸ā¸Ŗā¸˛ā¸ā¸§āšā¸˛ā¸ā¸¸ā¸ā¸ā¸ˇāšā¸ā¸ā¸Ąāšā¸ā¸Ēā¸āšāšā¸Ĩā¸°ā¸ā¸ąā¸ā¸ā¸ļā¸āšā¸ā¸Ēā¸āšāšā¸§āšā¸Ēā¸ŗā¸Ģā¸Ŗā¸ąā¸ā¸ ā¸˛ā¸ĸā¸Ģā¸Ĩā¸ąā¸",
"interaction_modal.description.follow": "ā¸āšā¸§ā¸ĸā¸ā¸ąā¸ā¸ā¸ĩāšā¸ Mastodon ā¸ā¸¸ā¸ā¸Ēā¸˛ā¸Ąā¸˛ā¸Ŗā¸ā¸ā¸´ā¸ā¸ā¸˛ā¸Ą {name} āšā¸ā¸ˇāšā¸ā¸Ŗā¸ąā¸āšā¸ā¸Ēā¸āšā¸ā¸ā¸āšā¸ā¸˛āšā¸ā¸ā¸ĩā¸ā¸Ģā¸āšā¸˛āšā¸Ŗā¸ā¸ā¸ā¸ā¸ā¸¸ā¸",
- "interaction_modal.description.reblog": "ā¸āšā¸§ā¸ĸā¸ā¸ąā¸ā¸ā¸ĩāšā¸ Mastodon ā¸ā¸¸ā¸ā¸Ēā¸˛ā¸Ąā¸˛ā¸Ŗā¸ā¸ā¸ąā¸āšā¸ā¸Ēā¸āšā¸ā¸ĩāšāšā¸ā¸ˇāšā¸āšā¸āšā¸ā¸ā¸ąā¸āšā¸ā¸Ēā¸āšā¸ā¸ąā¸ā¸ā¸šāšā¸ā¸´ā¸ā¸ā¸˛ā¸Ąā¸ā¸ā¸ā¸ā¸¸ā¸āšā¸ā¸",
+ "interaction_modal.description.reblog": "ā¸āšā¸§ā¸ĸā¸ā¸ąā¸ā¸ā¸ĩāšā¸ Mastodon ā¸ā¸¸ā¸ā¸Ēā¸˛ā¸Ąā¸˛ā¸Ŗā¸ā¸ā¸ąā¸āšā¸ā¸Ēā¸āšā¸ā¸ĩāšāšā¸ā¸ˇāšā¸āšā¸ā¸Ŗāšāšā¸ā¸Ēā¸āšā¸ā¸ąā¸ā¸ā¸šāšā¸ā¸´ā¸ā¸ā¸˛ā¸Ąā¸ā¸ā¸ā¸ā¸¸ā¸āšā¸ā¸",
"interaction_modal.description.reply": "ā¸āšā¸§ā¸ĸā¸ā¸ąā¸ā¸ā¸ĩāšā¸ Mastodon ā¸ā¸¸ā¸ā¸Ēā¸˛ā¸Ąā¸˛ā¸Ŗā¸ā¸ā¸ā¸ā¸ā¸Ĩā¸ąā¸āšā¸ā¸Ēā¸āšā¸ā¸ĩāš",
"interaction_modal.login.action": "ā¸ā¸ŗā¸ā¸ąā¸ā¸ā¸Ĩā¸ąā¸ā¸āšā¸˛ā¸",
"interaction_modal.login.prompt": "āšā¸āšā¸Ąā¸ā¸ā¸ā¸āšā¸ā¸´ā¸Ŗāšā¸āšā¸§ā¸ā¸Ŗāšā¸āšā¸˛ā¸ā¸ā¸ā¸ā¸ā¸¸ā¸ āšā¸āšā¸ mastodon.social",
@@ -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": "ā¸ā¸ŗā¸ā¸ĩāšā¸āšā¸ā¸ā¸ā¸ĸā¸šāš",
@@ -495,8 +484,8 @@
"onboarding.share.lead": "āšā¸āšā¸āšā¸Ģāšā¸ā¸šāšā¸ā¸ā¸ā¸Ŗā¸˛ā¸ā¸§ā¸´ā¸ā¸ĩā¸ā¸ĩāšāšā¸ā¸˛ā¸Ēā¸˛ā¸Ąā¸˛ā¸Ŗā¸ā¸āšā¸ā¸Ģā¸˛ā¸ā¸¸ā¸āšā¸ Mastodon!",
"onboarding.share.message": "ā¸ā¸ąā¸ā¸ā¸ˇā¸ {username} āšā¸ #Mastodon! ā¸Ąā¸˛ā¸ā¸´ā¸ā¸ā¸˛ā¸Ąā¸ā¸ąā¸ā¸ā¸ĩāš {url}",
"onboarding.share.next_steps": "ā¸ā¸ąāšā¸ā¸ā¸ā¸ā¸ā¸ąā¸āšā¸ā¸ā¸ĩāšāšā¸āšā¸āšā¸āšā¸āš:",
- "onboarding.share.title": "āšā¸āšā¸ā¸ā¸ąā¸āšā¸ā¸Ŗāšā¸ā¸Ĩāšā¸ā¸ā¸ā¸ā¸¸ā¸",
- "onboarding.start.lead": "ā¸ā¸ā¸ā¸ā¸ĩāšā¸ā¸¸ā¸āšā¸āšā¸ā¸Ēāšā¸§ā¸ā¸Ģā¸ā¸ļāšā¸ā¸ā¸ā¸ Mastodon āšā¸ā¸Ĩā¸ā¸ā¸ā¸Ŗāšā¸Ąā¸Ēā¸ˇāšā¸ā¸Ēā¸ąā¸ā¸ā¸Ąā¸ā¸ĩāšā¸Ąā¸ĩāšā¸ā¸ā¸Ĩā¸ąā¸ā¸Šā¸āšāšā¸ā¸ā¸˛ā¸°ā¸ā¸ąā¸§ ā¸ā¸Ŗā¸°ā¸ā¸˛ā¸ĸā¸¨ā¸šā¸ā¸ĸāš ā¸ā¸ĩāšā¸ā¸ļāšā¸ā¸ā¸¸ā¸âāšā¸Ąāšāšā¸āšā¸ā¸ąā¸Ĩā¸ā¸ā¸Ŗā¸´ā¸ā¸ļā¸Ąâāšā¸Ŗā¸ĩā¸ĸā¸āšā¸Ŗā¸ĩā¸ĸā¸ā¸ā¸Ŗā¸°ā¸Ēā¸ā¸ā¸˛ā¸Ŗā¸āšā¸ā¸ā¸ā¸ā¸¸ā¸āšā¸ā¸ ā¸Ąā¸˛ā¸āšā¸§ā¸ĸāšā¸Ģāšā¸ā¸¸ā¸āšā¸Ŗā¸´āšā¸Ąā¸āšā¸āšā¸āšā¸ā¸˛ā¸ā¸ā¸Ŗā¸Ąāšā¸ā¸ā¸ā¸˛ā¸ā¸Ēā¸ąā¸ā¸ā¸Ąāšā¸Ģā¸Ąāšā¸ā¸ĩāšā¸ā¸ąā¸āšā¸Ĩā¸ĸ:",
+ "onboarding.share.title": "āšā¸ā¸Ŗāšāšā¸ā¸Ŗāšā¸ā¸Ĩāšā¸ā¸ā¸ā¸ā¸¸ā¸",
+ "onboarding.start.lead": "ā¸ā¸ā¸ā¸ā¸ĩāšā¸ā¸¸ā¸āšā¸āšā¸ā¸Ēāšā¸§ā¸ā¸Ģā¸ā¸ļāšā¸ā¸ā¸ā¸ Mastodon āšā¸ā¸Ĩā¸ā¸ā¸ā¸Ŗāšā¸Ąā¸Ēā¸ˇāšā¸ā¸Ēā¸ąā¸ā¸ā¸Ąāšā¸ā¸ā¸ā¸Ŗā¸°ā¸ā¸˛ā¸ĸā¸¨ā¸šā¸ā¸ĸāšā¸ā¸ĩāšā¸Ąā¸ĩāšā¸ā¸ā¸Ĩā¸ąā¸ā¸Šā¸āšāšā¸ā¸ā¸˛ā¸°ā¸ā¸ąā¸§ ā¸ā¸ĩāšā¸ā¸ļāšā¸ā¸ā¸¸ā¸ āšā¸Ąāšāšā¸āšā¸ā¸ąā¸Ĩā¸ā¸ā¸Ŗā¸´ā¸ā¸ļā¸Ą āšā¸Ŗā¸ĩā¸ĸā¸āšā¸Ŗā¸ĩā¸ĸā¸ā¸ā¸Ŗā¸°ā¸Ēā¸ā¸ā¸˛ā¸Ŗā¸āšā¸ā¸ā¸ā¸ā¸¸ā¸āšā¸ā¸ ā¸Ąā¸˛ā¸āšā¸§ā¸ĸāšā¸Ģāšā¸ā¸¸ā¸āšā¸Ŗā¸´āšā¸Ąā¸āšā¸āšā¸āšā¸ā¸˛ā¸ā¸ā¸Ŗā¸Ąāšā¸ā¸ā¸ā¸˛ā¸ā¸Ēā¸ąā¸ā¸ā¸Ąāšā¸Ģā¸Ąāšā¸ā¸ĩāšā¸ā¸ąā¸āšā¸Ĩā¸ĸ:",
"onboarding.start.skip": "āšā¸Ąāšā¸āšā¸ā¸ā¸ā¸˛ā¸Ŗā¸ā¸§ā¸˛ā¸Ąā¸āšā¸§ā¸ĸāšā¸Ģā¸Ĩā¸ˇā¸āšā¸ā¸ā¸˛ā¸Ŗāšā¸Ŗā¸´āšā¸Ąā¸āšā¸āšā¸āšā¸ā¸˛ā¸?",
"onboarding.start.title": "ā¸ā¸¸ā¸ā¸ā¸ŗā¸Ēā¸ŗāšā¸Ŗāšā¸āšā¸Ĩāšā¸§!",
"onboarding.steps.follow_people.body": "ā¸ā¸˛ā¸Ŗā¸ā¸´ā¸ā¸ā¸˛ā¸Ąā¸ā¸šāšā¸ā¸ā¸ā¸ĩāšā¸āšā¸˛ā¸Ēā¸āšā¸ā¸ā¸ˇā¸ā¸Ēā¸´āšā¸ā¸ā¸ĩāš Mastodon āšā¸Ģāšā¸ā¸§ā¸˛ā¸Ąā¸Ēā¸ŗā¸ā¸ąā¸",
@@ -506,7 +495,7 @@
"onboarding.steps.setup_profile.body": "āšā¸ā¸´āšā¸Ąā¸ā¸˛ā¸Ŗāšā¸āšā¸ā¸ā¸ā¸ā¸ā¸ā¸ā¸¸ā¸āšā¸ā¸ĸā¸ā¸˛ā¸Ŗā¸Ąā¸ĩāšā¸ā¸Ŗāšā¸ā¸Ĩāšā¸ā¸ĩāšā¸ā¸Ŗā¸ā¸ā¸ā¸Ĩā¸¸ā¸Ą",
"onboarding.steps.setup_profile.title": "ā¸ā¸Ŗā¸ąā¸āšā¸āšā¸āšā¸ā¸Ŗāšā¸ā¸Ĩāšā¸ā¸ā¸ā¸ā¸¸ā¸",
"onboarding.steps.share_profile.body": "āšā¸āšā¸āšā¸Ģāšāšā¸ā¸ˇāšā¸ā¸ āš ā¸ā¸ā¸ā¸ā¸¸ā¸ā¸ā¸Ŗā¸˛ā¸ā¸§ā¸´ā¸ā¸ĩā¸āšā¸ā¸Ģā¸˛ā¸ā¸¸ā¸āšā¸ Mastodon",
- "onboarding.steps.share_profile.title": "āšā¸āšā¸ā¸ā¸ąā¸āšā¸ā¸Ŗāšā¸ā¸Ĩāš Mastodon ā¸ā¸ā¸ā¸ā¸¸ā¸",
+ "onboarding.steps.share_profile.title": "āšā¸ā¸Ŗāšāšā¸ā¸Ŗāšā¸ā¸Ĩāš Mastodon ā¸ā¸ā¸ā¸ā¸¸ā¸",
"onboarding.tips.2fa": "
ā¸ā¸¸ā¸ā¸ā¸Ŗā¸˛ā¸ā¸Ģā¸Ŗā¸ˇā¸āšā¸Ąāš? ā¸ā¸¸ā¸ā¸Ēā¸˛ā¸Ąā¸˛ā¸Ŗā¸ā¸Ŗā¸ąā¸ā¸Šā¸˛ā¸ā¸§ā¸˛ā¸Ąā¸ā¸Ĩā¸ā¸ā¸ ā¸ąā¸ĸā¸ā¸ąā¸ā¸ā¸ĩā¸ā¸ā¸ā¸ā¸¸ā¸āšā¸āšāšā¸ā¸ĸā¸ā¸ąāšā¸ā¸āšā¸˛ā¸ā¸˛ā¸Ŗā¸Ŗā¸ąā¸ā¸Ŗā¸ā¸ā¸ā¸§ā¸˛ā¸Ąā¸ā¸šā¸ā¸āšā¸ā¸ā¸āšā¸§ā¸ĸā¸Ēā¸ā¸ā¸ā¸ąā¸ā¸ā¸ąā¸ĸāšā¸ā¸ā¸˛ā¸Ŗā¸ā¸ąāšā¸ā¸āšā¸˛ā¸ā¸ąā¸ā¸ā¸ĩā¸ā¸ā¸ā¸ā¸¸ā¸ ā¸ā¸˛ā¸Ŗā¸Ŗā¸ąā¸ā¸Ŗā¸ā¸ā¸ā¸§ā¸˛ā¸Ąā¸ā¸šā¸ā¸āšā¸ā¸ā¸āšā¸§ā¸ĸā¸Ēā¸ā¸ā¸ā¸ąā¸ā¸ā¸ąā¸ĸā¸ā¸ŗā¸ā¸˛ā¸ā¸Ŗāšā¸§ā¸Ąā¸ā¸ąā¸āšā¸ā¸ TOTP āšā¸ āš ā¸ā¸ĩāšā¸ā¸¸ā¸āšā¸Ĩā¸ˇā¸ā¸ āšā¸Ąāšā¸ā¸ŗāšā¸āšā¸ā¸āšā¸ā¸ā¸Ąā¸ĩā¸Ģā¸Ąā¸˛ā¸ĸāšā¸Ĩā¸āšā¸ā¸Ŗā¸¨ā¸ąā¸ā¸āš!",
"onboarding.tips.accounts_from_other_servers": "
ā¸ā¸¸ā¸ā¸ā¸Ŗā¸˛ā¸ā¸Ģā¸Ŗā¸ˇā¸āšā¸Ąāš? āšā¸ā¸ˇāšā¸ā¸ā¸ā¸˛ā¸ Mastodon āšā¸āšā¸āšā¸ā¸ā¸ā¸Ŗā¸°ā¸ā¸˛ā¸ĸā¸¨ā¸šā¸ā¸ĸāš āšā¸ā¸Ŗāšā¸ā¸Ĩāšā¸ā¸˛ā¸ā¸Ēāšā¸§ā¸ā¸ā¸ĩāšā¸ā¸¸ā¸āšā¸ā¸ā¸ā¸°āšā¸āšā¸Ŗā¸ąā¸ā¸ā¸˛ā¸Ŗāšā¸Žā¸Ēā¸āšāšā¸āšā¸ā¸´ā¸Ŗāšā¸āšā¸§ā¸ā¸Ŗāšā¸ā¸ˇāšā¸ āš ā¸ā¸ĩāšāšā¸Ąāšāšā¸āšā¸ā¸ā¸ā¸ā¸¸ā¸ āšā¸Ĩā¸°ā¸ā¸¸ā¸ā¸ĸā¸ąā¸ā¸Ēā¸˛ā¸Ąā¸˛ā¸Ŗā¸āšā¸āšā¸ā¸ā¸ā¸ā¸ąā¸āšā¸ā¸˛āšā¸āšā¸ā¸ĸāšā¸˛ā¸āšā¸Ŗāšā¸Ŗā¸ā¸ĸā¸āšā¸! āšā¸ā¸´ā¸Ŗāšā¸āšā¸§ā¸ā¸Ŗāšā¸ā¸ā¸āšā¸ā¸˛ā¸ā¸ĸā¸šāšāšā¸ā¸ā¸Ŗā¸ļāšā¸ā¸Ģā¸Ĩā¸ąā¸ā¸ā¸ā¸ā¸ā¸ˇāšā¸ā¸ā¸šāšāšā¸āšā¸ā¸ā¸āšā¸ā¸˛!",
"onboarding.tips.migration": "
ā¸ā¸¸ā¸ā¸ā¸Ŗā¸˛ā¸ā¸Ģā¸Ŗā¸ˇā¸āšā¸Ąāš? ā¸Ģā¸˛ā¸ā¸ā¸¸ā¸ā¸Ŗā¸šāšā¸Ēā¸ļā¸ā¸§āšā¸˛ {domain} āšā¸Ąāšāšā¸āšā¸ā¸ąā¸§āšā¸Ĩā¸ˇā¸ā¸āšā¸ā¸´ā¸Ŗāšā¸āšā¸§ā¸ā¸Ŗāšā¸ā¸ĩāšā¸ĸā¸ā¸āšā¸ĸā¸ĩāšā¸ĸā¸Ąā¸Ēā¸ŗā¸Ģā¸Ŗā¸ąā¸ā¸ā¸¸ā¸āšā¸ā¸ā¸ā¸˛ā¸ā¸ ā¸ā¸¸ā¸ā¸Ēā¸˛ā¸Ąā¸˛ā¸Ŗā¸ā¸ĸāšā¸˛ā¸ĸāšā¸ā¸ĸā¸ąā¸āšā¸ā¸´ā¸Ŗāšā¸āšā¸§ā¸ā¸Ŗāš Mastodon ā¸ā¸ˇāšā¸āšā¸āšāšā¸ā¸ĸāšā¸Ąāšā¸Ēā¸šā¸āšā¸Ēā¸ĩā¸ĸā¸ā¸šāšā¸ā¸´ā¸ā¸ā¸˛ā¸Ąā¸ā¸ā¸ā¸ā¸¸ā¸ ā¸ā¸¸ā¸ā¸ĸā¸ąā¸ā¸Ēā¸˛ā¸Ąā¸˛ā¸Ŗā¸āšā¸Žā¸Ēā¸āšāšā¸ā¸´ā¸Ŗāšā¸āšā¸§ā¸ā¸Ŗāšā¸ā¸ā¸ā¸ā¸¸ā¸āšā¸ā¸!",
@@ -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": "āšā¸ā¸°ā¸ā¸ŗ",
@@ -558,7 +540,7 @@
"report.categories.spam": "ā¸Ēāšā¸ā¸Ą",
"report.categories.violation": "āšā¸ā¸ˇāšā¸ā¸Ģā¸˛ā¸Ĩā¸°āšā¸Ąā¸´ā¸ā¸ā¸ā¸ā¸ā¸āšā¸ā¸´ā¸Ŗāšā¸āšā¸§ā¸ā¸Ŗāšā¸ā¸ŗā¸ā¸§ā¸ā¸Ģā¸ā¸ļāšā¸ā¸Ģā¸Ŗā¸ˇā¸ā¸Ąā¸˛ā¸ā¸ā¸§āšā¸˛",
"report.category.subtitle": "āšā¸Ĩā¸ˇā¸ā¸ā¸ā¸ĩāšā¸ā¸Ŗā¸ā¸ā¸ąā¸ā¸ā¸ĩāšā¸Ēā¸¸ā¸",
- "report.category.title": "ā¸ā¸ā¸āšā¸Ŗā¸˛ā¸ā¸ļā¸ā¸Ēā¸´āšā¸ā¸ā¸ĩāšā¸ā¸ŗā¸Ĩā¸ąā¸āšā¸ā¸´ā¸ā¸ā¸ļāšā¸ā¸ā¸ąā¸ {type} ā¸ā¸ĩāš",
+ "report.category.title": "ā¸ā¸ā¸āšā¸Ŗā¸˛ā¸ā¸ļā¸ā¸Ēā¸´āšā¸ā¸ā¸ĩāšā¸ā¸ŗā¸Ĩā¸ąā¸āšā¸ā¸´ā¸ā¸ā¸ļāšā¸ā¸ā¸ąā¸{type}ā¸ā¸ĩāš",
"report.category.title_account": "āšā¸ā¸Ŗāšā¸ā¸Ĩāš",
"report.category.title_status": "āšā¸ā¸Ēā¸āš",
"report.close": "āšā¸Ēā¸Ŗāšā¸ā¸Ēā¸´āšā¸",
@@ -629,7 +611,7 @@
"sign_in_banner.create_account": "ā¸Ēā¸Ŗāšā¸˛ā¸ā¸ā¸ąā¸ā¸ā¸ĩ",
"sign_in_banner.sign_in": "āšā¸āšā¸˛ā¸Ēā¸šāšā¸Ŗā¸°ā¸ā¸",
"sign_in_banner.sso_redirect": "āšā¸āšā¸˛ā¸Ēā¸šāšā¸Ŗā¸°ā¸ā¸ā¸Ģā¸Ŗā¸ˇā¸ā¸Ĩā¸ā¸ā¸°āšā¸ā¸ĩā¸ĸā¸",
- "sign_in_banner.text": "āšā¸āšā¸˛ā¸Ēā¸šāšā¸Ŗā¸°ā¸ā¸āšā¸ā¸ˇāšā¸ā¸ā¸´ā¸ā¸ā¸˛ā¸Ąāšā¸ā¸Ŗāšā¸ā¸Ĩāšā¸Ģā¸Ŗā¸ˇā¸āšā¸Žā¸āšā¸āšā¸ ā¸ā¸ˇāšā¸ā¸ā¸ā¸ āšā¸āšā¸ā¸ā¸ąā¸ āšā¸Ĩā¸°ā¸ā¸ā¸ā¸ā¸Ĩā¸ąā¸āšā¸ā¸Ēā¸āš ā¸ā¸¸ā¸ā¸ĸā¸ąā¸ā¸Ēā¸˛ā¸Ąā¸˛ā¸Ŗā¸āšā¸āšā¸ā¸ā¸ā¸ā¸˛ā¸ā¸ā¸ąā¸ā¸ā¸ĩā¸ā¸ā¸ā¸ā¸¸ā¸āšā¸āšā¸ā¸´ā¸Ŗāšā¸āšā¸§ā¸ā¸Ŗāšā¸ā¸ˇāšā¸",
+ "sign_in_banner.text": "āšā¸āšā¸˛ā¸Ēā¸šāšā¸Ŗā¸°ā¸ā¸āšā¸ā¸ˇāšā¸ā¸ā¸´ā¸ā¸ā¸˛ā¸Ąāšā¸ā¸Ŗāšā¸ā¸Ĩāšā¸Ģā¸Ŗā¸ˇā¸āšā¸Žā¸āšā¸āšā¸ ā¸ā¸ˇāšā¸ā¸ā¸ā¸ āšā¸ā¸Ŗāš āšā¸Ĩā¸°ā¸ā¸ā¸ā¸ā¸Ĩā¸ąā¸āšā¸ā¸Ēā¸āš ā¸ā¸¸ā¸ā¸ĸā¸ąā¸ā¸Ēā¸˛ā¸Ąā¸˛ā¸Ŗā¸āšā¸āšā¸ā¸ā¸ā¸ā¸˛ā¸ā¸ā¸ąā¸ā¸ā¸ĩā¸ā¸ā¸ā¸ā¸¸ā¸āšā¸āšā¸ā¸´ā¸Ŗāšā¸āšā¸§ā¸ā¸Ŗāšā¸ā¸ˇāšā¸",
"status.admin_account": "āšā¸ā¸´ā¸ā¸Ēāšā¸§ā¸ā¸ā¸´ā¸ā¸āšā¸ā¸ā¸˛ā¸Ŗā¸ā¸§ā¸ā¸ā¸¸ā¸Ąā¸Ēā¸ŗā¸Ģā¸Ŗā¸ąā¸ @{name}",
"status.admin_domain": "āšā¸ā¸´ā¸ā¸Ēāšā¸§ā¸ā¸ā¸´ā¸ā¸āšā¸ā¸ā¸˛ā¸Ŗā¸ā¸§ā¸ā¸ā¸¸ā¸Ąā¸Ēā¸ŗā¸Ģā¸Ŗā¸ąā¸ {domain}",
"status.admin_status": "āšā¸ā¸´ā¸āšā¸ā¸Ēā¸āšā¸ā¸ĩāšāšā¸ā¸Ēāšā¸§ā¸ā¸ā¸´ā¸ā¸āšā¸ā¸ā¸˛ā¸Ŗā¸ā¸§ā¸ā¸ā¸¸ā¸Ą",
@@ -675,7 +657,7 @@
"status.replyAll": "ā¸ā¸ā¸ā¸ā¸Ĩā¸ąā¸ā¸ā¸Ŗā¸°ā¸ā¸šāš",
"status.report": "ā¸Ŗā¸˛ā¸ĸā¸ā¸˛ā¸ @{name}",
"status.sensitive_warning": "āšā¸ā¸ˇāšā¸ā¸Ģā¸˛ā¸ā¸ĩāšā¸Ĩā¸°āšā¸ā¸ĩā¸ĸā¸ā¸āšā¸ā¸",
- "status.share": "āšā¸āšā¸ā¸ā¸ąā¸",
+ "status.share": "āšā¸ā¸Ŗāš",
"status.show_filter_reason": "āšā¸Ēā¸ā¸ā¸āšā¸āšā¸",
"status.show_less": "āšā¸Ēā¸ā¸ā¸āšā¸ā¸ĸā¸Ĩā¸",
"status.show_less_all": "āšā¸Ēā¸ā¸ā¸āšā¸ā¸ĸā¸Ĩā¸ā¸ā¸ąāšā¸ā¸Ģā¸Ąā¸",
@@ -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/tlh.json b/app/javascript/mastodon/locales/tlh.json
new file mode 100644
index 00000000000..0967ef424bc
--- /dev/null
+++ b/app/javascript/mastodon/locales/tlh.json
@@ -0,0 +1 @@
+{}
diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json
index 8eb09bb7cbd..6811c158d45 100644
--- a/app/javascript/mastodon/locales/tr.json
+++ b/app/javascript/mastodon/locales/tr.json
@@ -32,20 +32,20 @@
"account.featured_tags.last_status_never": "GÃļnderi yok",
"account.featured_tags.title": "{name} kiÅisinin Ãļne Ã§Äąkan etiketleri",
"account.follow": "Takip et",
+ "account.follow_back": "Geri takip et",
"account.followers": "Takipçi",
"account.followers.empty": "HenÃŧz kimse bu kullanÄącÄąyÄą takip etmiyor.",
"account.followers_counter": "{count, plural, one {{counter} Takipçi} other {{counter} Takipçi}}",
"account.following": "Takip Ediliyor",
"account.following_counter": "{count, plural, one {{counter} Takip Edilen} other {{counter} Takip Edilen}}",
"account.follows.empty": "Bu kullanÄącÄą henÃŧz kimseyi takip etmiyor.",
- "account.follows_you": "Seni takip ediyor",
"account.go_to_profile": "Profile git",
"account.hide_reblogs": "@{name} kiÅisinin boostlarÄąnÄą gizle",
"account.in_memoriam": "HatÄąrasÄąna.",
"account.joined_short": "KatÄąldÄą",
"account.languages": "Abone olunan dilleri deÄiÅtir",
"account.link_verified_on": "Bu baÄlantÄąnÄąn sahipliÄi {date} tarihinde denetlendi",
- "account.locked_info": "Bu hesabÄąn gizlilik durumu gizli olarak ayarlanmÄąÅ. Sahibi, onu kimin takip edebileceÄini manuel olarak onaylÄąyor.",
+ "account.locked_info": "Bu hesabÄąn gizlilik durumu gizli olarak ayarlanmÄąÅ. Sahibi, onu kimin takip edebileceÄini elle onaylÄąyor.",
"account.media": "Medya",
"account.mention": "@{name} kiÅisinden bahset",
"account.moved_to": "{name} yeni hesabÄąnÄąn artÄąk Åu olduÄunu belirtti:",
@@ -53,6 +53,7 @@
"account.mute_notifications_short": "Bildirimleri sessize al",
"account.mute_short": "Sessize al",
"account.muted": "Susturuldu",
+ "account.mutual": "KarÅÄąlÄąklÄą",
"account.no_bio": "Herhangi bir aÃ§Äąklama belirtilmedi.",
"account.open_original_page": "AsÄąl sayfayÄą aç",
"account.posts": "GÃļnderiler",
@@ -88,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.",
@@ -145,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",
@@ -345,7 +335,7 @@
"keyboard_shortcuts.down": "Listede aÅaÄÄąya inmek için",
"keyboard_shortcuts.enter": "gÃļnderiyi aç",
"keyboard_shortcuts.favourite": "GÃļnderiyi favorilerine ekle",
- "keyboard_shortcuts.favourites": "Favoriler listeni aç",
+ "keyboard_shortcuts.favourites": "GÃļzde listeni aç",
"keyboard_shortcuts.federated": "Federe akÄąÅÄą aç",
"keyboard_shortcuts.heading": "Klavye kÄąsayollarÄą",
"keyboard_shortcuts.home": "Ana akÄąÅÄą aç",
@@ -407,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",
@@ -525,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",
@@ -714,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 6727f3e59ab..17de9884e79 100644
--- a/app/javascript/mastodon/locales/tt.json
+++ b/app/javascript/mastodon/locales/tt.json
@@ -35,7 +35,6 @@
"account.following": "Đ¯ĐˇŅĐģŅĐģĐ°Ņ",
"account.following_counter": "{count, plural, one {{counter} ŅСŅĐģŅ} other {{counter} ŅСŅĐģŅ}}",
"account.follows.empty": "ĐĐĩŅĐēĐĩĐŧĐŗĶ Đ´Ķ ŅСŅĐģĐŧĐ°ĐŗĐ°ĐŊ ĶĐģĐĩ.",
- "account.follows_you": "ĐĄĐĩСĐŗĶ ŅСŅĐģĐŗĐ°ĐŊ",
"account.go_to_profile": "ĐŅĐžŅиĐģŅĐŗĶ ĐēŌ¯ŅŌ¯",
"account.hide_reblogs": "ĐĄĐēŅŅваŅŅ ĐēĶŠŅĐĩĐŊ ĐŊŅĐĩ @{name}",
"account.in_memoriam": "ĐŅŅĶĐģĐĩĐŗĐĩĐŊĶ.",
@@ -77,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": "ĐĄĐžŅĐ°ĐģĐŗĐ°ĐŊ йиŅ ĐēŌ¯ŅŅĶŅĐĩĐģĶ Đ°ĐģĐŧŅĐš. ĐŅ ĐąĐĩСĐŊĐĩŌŖ ĐēОдŅĐ°ĐŗŅ Ņ
Đ°ŅĐ° ŅĐēи ĐąŅĐ°ŅСĐĩŅĐŗĐ° ŅŅŅŅ ĐēиĐģŌ¯ ĐŋŅОйĐģĐĩĐŧĐ°ŅŅ Đ°ŅĐēĐ°ŅŅĐŊĐ´Đ° ĐąŅĐģŅŅĐŗĐ° ĐŧĶŠĐŧĐēиĐŊ.",
@@ -129,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": "ĐĐģĐžĐēĐģĐ°Ņ",
@@ -323,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": "ЧŅĐŗŅ",
@@ -377,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": "ĐĨĐžŅŅŅŅĐšĐģŅĐē ĐĄĶŅŅĶŅĐĩ",
@@ -479,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 4d2452e12d8..9dc3b5c1f98 100644
--- a/app/javascript/mastodon/locales/ug.json
+++ b/app/javascript/mastodon/locales/ug.json
@@ -1,4 +1,6 @@
{
+ "about.blocks": "ØĻŲØĒØĒÛØąØ§ÚžØ§Ų Ų
ÛŲØ§Ø˛ŲŲ
ÛØĒŲØą",
+ "about.contact": "ØĻاŲاŲŲŲاشŲÛÚŲ:",
"account.badges.bot": "Bot",
"account.cancel_follow_request": "Withdraw follow request",
"account.posts": "Toots",
@@ -74,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 58a14c0ed22..38e5f9cfbdf 100644
--- a/app/javascript/mastodon/locales/uk.json
+++ b/app/javascript/mastodon/locales/uk.json
@@ -32,13 +32,13 @@
"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} ĐŋŅĐ´ĐŋиŅĐŊиĐēи}}",
"account.following": "Đи ŅŅĐĩĐļиŅĐĩ",
"account.following_counter": "{count, plural, one {{counter} ĐŋŅĐ´ĐŋиŅĐēĐ°} few {{counter} ĐŋŅĐ´ĐŋиŅĐēи} many {{counter} ĐŋŅĐ´ĐŋиŅĐžĐē} other {{counter} ĐŋŅĐ´ĐŋиŅĐēи}}",
"account.follows.empty": "ĐĻĐĩĐš ĐēĐžŅиŅŅŅваŅ ŅĐĩ ĐŊŅ ĐŊĐ° ĐēĐžĐŗĐž ĐŊĐĩ ĐŋŅĐ´ĐŋиŅавŅŅ.",
- "account.follows_you": "ĐŅĐ´ĐŋиŅŅŅŅŅŅŅ ĐŊĐ° ваŅ",
"account.go_to_profile": "ĐĐĩŅĐĩĐšŅи Đ´Đž ĐŋŅĐžŅŅĐģŅ",
"account.hide_reblogs": "ĐĄŅ
ОваŅи ĐŋĐžŅиŅĐĩĐŊĐŊŅ вŅĐ´ @{name}",
"account.in_memoriam": "ĐĐ°Đŧ'ŅŅĐŊиĐē.",
@@ -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,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 8fc3aff030e..fee2cc3a981 100644
--- a/app/javascript/mastodon/locales/ur.json
+++ b/app/javascript/mastodon/locales/ur.json
@@ -32,7 +32,6 @@
"account.following": "ŲاŲŲ ÚŠØą ØąÛÛ ÛÛÚē",
"account.following_counter": "{count, plural, one {{counter} ŲžÛØąŲÛ ÚŠØą ØąÛÛ ÛÛÚē} other {{counter} ŲžÛØąŲÛ ÚŠØą ØąÛÛ ÛÛÚē}}",
"account.follows.empty": "\"ÛÛ ØĩØ§ØąŲ ÛŲŲØ˛ ÚŠØŗÛ ÚŠÛ ŲžÛØąŲÛ ŲÛÛÚē ÚŠØąØĒا ÛÛ\".",
- "account.follows_you": "ØĸŲž ڊا ŲžÛØąŲÚŠØ§Øą ÛÛ",
"account.go_to_profile": "ŲžØąŲŲاØĻŲ ŲžØą ØŦاØĻÛÚē",
"account.hide_reblogs": "@{name} ØŗÛ ŲØąŲØē ÚÚžŲžØ§ØĻÛÚē",
"account.in_memoriam": "ÛØ§Ø¯Ú¯Ø§Øą Ų
ÛÚēÛ",
@@ -73,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": "ŲÛŲš ŲØąÚŠ ÚŠÛ ØŽØąØ§Ø¨Û",
@@ -116,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": "بŲاڊ",
@@ -243,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": "ŲžÛØąŲÛ ÚŠØąØ¯Û Ø§ŲØą ŲžÛØąŲÚŠØ§Øą",
@@ -282,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 026cc115c1c..8f231c8c77a 100644
--- a/app/javascript/mastodon/locales/uz.json
+++ b/app/javascript/mastodon/locales/uz.json
@@ -35,7 +35,6 @@
"account.following": "Kuzatish",
"account.following_counter": "{count, plural, one {{counter} ga Muxlis} other {{counter} larga muxlis}}",
"account.follows.empty": "Bu foydalanuvchi hali hech kimni kuzatmagan.",
- "account.follows_you": "Sizga obuna",
"account.go_to_profile": "Profilga o'tish",
"account.hide_reblogs": "@{name} dan boostlarni yashirish",
"account.joined_short": "Qo'shilgan",
@@ -76,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.",
@@ -127,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",
@@ -337,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",
@@ -369,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 9ac90b407e1..73a11b95736 100644
--- a/app/javascript/mastodon/locales/vi.json
+++ b/app/javascript/mastodon/locales/vi.json
@@ -32,13 +32,13 @@
"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}}",
"account.following": "Äang theo dÃĩi",
"account.following_counter": "{count, plural, one {{counter} Theo dÃĩi} other {{counter} Theo dÃĩi}}",
"account.follows.empty": "NgÆ°áģi nà y chÆ°a theo dÃĩi ai.",
- "account.follows_you": "Äang theo dÃĩi báēĄn",
"account.go_to_profile": "Xem háģ sÆĄ",
"account.hide_reblogs": "áē¨n tÃēt @{name} ÄÄng láēĄi",
"account.in_memoriam": "TÆ°áģng Niáģm.",
@@ -53,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",
@@ -88,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.",
@@ -145,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",
@@ -239,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.",
@@ -335,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",
@@ -403,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áģ¯",
@@ -435,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:",
@@ -476,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 ÃŊ:",
@@ -500,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.",
@@ -525,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áģ}}",
@@ -590,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",
@@ -691,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áģ}}",
@@ -714,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 5896a25b022..a585838cd22 100644
--- a/app/javascript/mastodon/locales/zgh.json
+++ b/app/javascript/mastodon/locales/zgh.json
@@ -12,7 +12,6 @@
"account.edit_profile": "âĩâĩâ´ŧâĩ âĩâ´ŧâĩâĩ",
"account.follow": "â´šâ´ŧâĩ",
"account.followers": "âĩâĩâ´šâ´ŧâ´°âĩâĩ",
- "account.follows_you": "â´šâ´ŧâĩâĩ â´Ŋâĩ¯âĩ",
"account.media": "â´°âĩâĩâĩâĩâĩâĩ",
"account.mute": "âĩĨâĩĨâĩâĩĨâĩ @{name}",
"account.muted": "âĩâĩâĩâĩâĩĨâĩâĩĨâĩ",
@@ -23,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": "â´°âĩâĩ â´°âĩâĩ",
@@ -45,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": "âĩâĩ",
@@ -130,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": "â´ŧâ´ŧâĩ",
@@ -162,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}â´°âĩ",
@@ -212,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 1678fd72937..9b55e51b1f9 100644
--- a/app/javascript/mastodon/locales/zh-CN.json
+++ b/app/javascript/mastodon/locales/zh-CN.json
@@ -32,13 +32,13 @@
"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} äēēå
ŗæŗ¨",
"account.following": "æŖå¨å
ŗæŗ¨",
"account.following_counter": "æŖå¨å
ŗæŗ¨ {counter} äēē",
"account.follows.empty": "æ¤į¨æˇįŽåæĒå
ŗæŗ¨äģģäŊäēēã",
- "account.follows_you": "å
ŗæŗ¨äēäŊ ",
"account.go_to_profile": "ååžä¸ĒäēēčĩæéĄĩ",
"account.hide_reblogs": "éčæĨčĒ @{name} įčŊŦå",
"account.in_memoriam": "č°¨æ¤æŧåŋĩã",
@@ -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": "č¯ˇæąįéĄĩéĸæ æŗæ¸˛æīŧå¯čŊæ¯äģŖį åēį°éč¯¯ææĩč§å¨åå¨å
ŧ厚æ§éŽéĸã",
@@ -147,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": "åąčŊ",
@@ -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": "åŋŊįĨįå
ŗéŽč¯",
@@ -445,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": "æįĨ¨įģæīŧ",
@@ -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, other {# ä¸Ēéäģļ}}",
"reply_indicator.cancel": "åæļ",
+ "reply_indicator.poll": "æįĨ¨",
"report.block": "åąčŊ",
"report.block_explanation": "äŊ å°æ æŗįå°äģäģŦįåæãäģäģŦäšå°æ æŗįå°äŊ įåææå
ŗæŗ¨äŊ ãäģäģŦå°čŊå¤å¤æåēäģäģŦčĸĢåąčŊäēã",
"report.categories.legal": "æŗåžäšåĄ",
@@ -699,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} äēē}}莨čŽē",
@@ -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/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json
index 263c707993e..5890c4df4b5 100644
--- a/app/javascript/mastodon/locales/zh-HK.json
+++ b/app/javascript/mastodon/locales/zh-HK.json
@@ -32,13 +32,13 @@
"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} å}}čŋŊ蚤č
",
"account.following": "æŖå¨čŋŊ蚤",
"account.following_counter": "æŖå¨čŋŊ蚤 {count, plural,one {{counter}}other {{counter} äēē}}",
"account.follows.empty": "éäŊäŊŋį¨č
å°æĒčŋŊ蚤äģģäŊäēēã",
- "account.follows_you": "čŋŊ蚤äŊ ",
"account.go_to_profile": "ååžåäēēæĒæĄ",
"account.hide_reblogs": "éąč @{name} įčŊæ¨",
"account.in_memoriam": "čŦšæ¤æŧåŋĩã",
@@ -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,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": "å°é",
@@ -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 {# éäģļ} 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/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json
index 7ba66ae8c35..c365e67e070 100644
--- a/app/javascript/mastodon/locales/zh-TW.json
+++ b/app/javascript/mastodon/locales/zh-TW.json
@@ -32,13 +32,13 @@
"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} äēē}}čˇé¨",
+ "account.followers_counter": "čĸĢ {count, plural, other {{counter} äēē}}čˇé¨",
"account.following": "čˇé¨ä¸",
- "account.following_counter": "æŖå¨čˇé¨ {count, plural, one {{counter} äēē} other {{counter} äēē}}",
+ "account.following_counter": "æŖå¨čˇé¨ {count,plural,other {{counter} äēē}}",
"account.follows.empty": "éäŊäŊŋį¨č
å°æĒčˇé¨äģģäŊäēēã",
- "account.follows_you": "čˇé¨äēæ¨",
"account.go_to_profile": "ååžåäēēæĒæĄ",
"account.hide_reblogs": "éąčäžčĒ @{name} įčŊå",
"account.in_memoriam": "čŦšæ¤æŧåŋĩã",
@@ -48,17 +48,18 @@
"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": "ééŗ",
"account.muted": "åˇ˛ééŗ",
+ "account.mutual": "äēį¸čˇé¨",
"account.no_bio": "įĄåäēēæĒæĄæčŋ°",
"account.open_original_page": "æĒĸčĻåå§é éĸ",
"account.posts": "åæ",
"account.posts_with_replies": "åæčåčĻ",
"account.report": "æĒĸč @{name}",
- "account.requested": "æŖå¨įåž
æ ¸åãæä¸ä¸äģĨåæļčˇé¨čĢæą",
+ "account.requested": "æŖå¨įåå¯Šæ ¸ãæä¸ä¸äģĨåæļčˇé¨čĢæą",
"account.requested_follow": "{name} čĻæąčˇé¨æ¨",
"account.share": "åäēĢ @{name} įåäēēæĒæĄ",
"account.show_reblogs": "éĄ¯į¤ēäžčĒ @{name} įåæ",
@@ -72,8 +73,8 @@
"account.unmute_notifications_short": "åæļééŗæ¨æéįĨ",
"account.unmute_short": "č§Ŗé¤ééŗ",
"account_note.placeholder": "ææ¤æ°åĸåč¨ģ",
- "admin.dashboard.daily_retention": "č¨ģååžäŊŋį¨č
åįį(æĨ)",
- "admin.dashboard.monthly_retention": "č¨ģååžäŊŋį¨č
åįį(æ)",
+ "admin.dashboard.daily_retention": "č¨ģååžäŊŋį¨č
åįįīŧæĨīŧ",
+ "admin.dashboard.monthly_retention": "č¨ģååžäŊŋį¨č
åįįīŧæīŧ",
"admin.dashboard.retention.average": "åšŗå",
"admin.dashboard.retention.cohort": "č¨ģåæäģŊ",
"admin.dashboard.retention.cohort_size": "æ°äŊŋį¨č
",
@@ -83,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": "įĄæŗįšĒčŖŊčĢæąįé éĸãéå¯čŊæ¯å įēæåį¨åŧįĸŧä¸įčč˛ææ¯įčĻŊå¨įį¸åŽšåéĄã",
@@ -103,9 +103,9 @@
"bundle_modal_error.message": "čŧå
Ĩæ¤å
äģļæįŧįé¯čĒ¤ã",
"bundle_modal_error.retry": "éčŠĻ",
"closed_registrations.other_server_instructions": "å įē Mastodon æ¯åģä¸åŋåįīŧæäģĨæ¨äščŊæŧå
ļäģäŧēæå¨ä¸åģēįĢå¸ŗčīŧä¸Ļäģįļčéåäŧēæå¨äēåã",
- "closed_registrations_modal.description": "įŽåįĄæŗæŧ {domain} åģēįĢæ°å¸ŗčīŧäŊäščĢåĨåŋäēīŧæ¨ä¸Ļä¸ä¸åŽéčĻæ {domain} äŧēæå¨įå¸ŗčīŧäščŊäŊŋį¨ Mastodon ã",
+ "closed_registrations_modal.description": "įŽåįĄæŗæŧ {domain} åģēįĢæ°å¸ŗčīŧäŊäščĢåĨåŋäēīŧæ¨ä¸Ļä¸ä¸åŽéčĻæ {domain} äŧēæå¨įå¸ŗčīŧäščŊäŊŋį¨ Mastodonã",
"closed_registrations_modal.find_another_server": "å°æžåĻä¸åäŧēæå¨",
- "closed_registrations_modal.preamble": "Mastodon æ¯åģä¸åŋåįīŧæäģĨįĄčĢæ¨æŧåĒåäŧēæå¨æ°åĸå¸ŗčīŧéŊå¯äģĨčæ¤äŧēæå¨ä¸įäģģäŊäēēčˇé¨åäēåãæ¨įčŗčŊčĒčĄæļä¸åčĒåˇąįäŧēæå¨īŧ",
+ "closed_registrations_modal.preamble": "Mastodon æ¯åģä¸åŋåįīŧæäģĨįĄčĢæ¨æŧåĒåäŧēæå¨æ°åĸå¸ŗčīŧéŊå¯äģĨčæ¤äŧēæå¨ä¸įäģģäŊäēēčˇé¨åäēåãæ¨įčŗčŊčĒčĄæļč¨ä¸åčĒåˇąįäŧēæå¨īŧ",
"closed_registrations_modal.title": "č¨ģå Mastodon",
"column.about": "éæŧ",
"column.blocks": "åˇ˛å°éįäŊŋį¨č
",
@@ -147,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": "æ¨č¨åĒéĢįēææå
§åŽš",
- "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 +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": "æ¨éæ˛ææļå°äģģäŊéįĨīŧįļæ¨čåĨäēēéå§äēåæīŧåŽå°æŧæ¤éĄ¯į¤ēã",
@@ -302,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": "å°æžä¸äēäēēäžčˇé¨",
@@ -376,7 +376,7 @@
"lightbox.previous": "ä¸ä¸æĨ",
"limited_account_hint.action": "ä¸åžéĄ¯į¤ēåäēēæĒæĄ",
"limited_account_hint.title": "æ¤åäēēæĒæĄåˇ˛čĸĢ {domain} įįŽĄįåĄéąčã",
- "link_preview.author": "įą {name} æäž",
+ "link_preview.author": "äžčĒ {name}",
"lists.account.add": "æ°åĸčŗå襨",
"lists.account.remove": "čĒå襨ä¸į§ģé¤",
"lists.delete": "åĒé¤å襨",
@@ -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": "åˇ˛ééŗįééĩå",
@@ -452,7 +451,7 @@
"notifications.column_settings.push": "æ¨æéįĨ",
"notifications.column_settings.reblog": "čŊåīŧ",
"notifications.column_settings.show": "æŧæŦäŊä¸éĄ¯į¤ē",
- "notifications.column_settings.sound": "ææžč˛éŗ",
+ "notifications.column_settings.sound": "ææžéŗæ",
"notifications.column_settings.status": "æ°åæīŧ",
"notifications.column_settings.unread_notifications.category": "æĒčŽéįĨ",
"notifications.column_settings.unread_notifications.highlight": "įĒéĄ¯æĒčŽéįĨ",
@@ -525,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": "éąį§æŦæŋį",
@@ -540,7 +540,7 @@
"regeneration_indicator.label": "čŧå
Ĩä¸âĻ",
"regeneration_indicator.sublabel": "æ¨įéĻé æéčģ¸æŖå¨æēåä¸īŧ",
"relative_time.days": "{number} 夊",
- "relative_time.full.days": "{number, plural, one {# 夊} other {# 夊}}å",
+ "relative_time.full.days": "{number, plural, other {# 夊}}å",
"relative_time.full.hours": "{number, plural, one {# å°æ} other {# å°æ}}å",
"relative_time.full.just_now": "åå",
"relative_time.full.minutes": "{number, plural, one {# åé} other {# åé}}å",
@@ -550,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": "åæŗæ§",
@@ -620,7 +622,7 @@
"search_results.see_all": "æĒĸčĻå
¨é¨",
"search_results.statuses": "åæ",
"search_results.title": "æå°īŧ{q}",
- "server_banner.about_active_users": "æčŋä¸åæĨå
§äŊŋį¨æ¤äŧēæå¨įäēē (ææ´ģčēäŊŋį¨č
)",
+ "server_banner.about_active_users": "æčŋä¸åæĨå
§äŊŋį¨æ¤äŧēæå¨įäēēīŧææ´ģčēäŊŋį¨č
īŧ",
"server_banner.active_users": "æ´ģčēäŊŋį¨č
",
"server_banner.administered_by": "įŽĄįč
īŧ",
"server_banner.introduction": "{domain} æ¯įą {mastodon} æäžäšåģä¸åŋåį¤žįž¤įļ˛čˇ¯ä¸é¨åã",
@@ -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/reducers/accounts.ts b/app/javascript/mastodon/reducers/accounts.ts
index f7270eb60a5..5a9cc7220c7 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 d5ecad7dbfa..9053dcc9c05 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 e6b2509f66d..f57bbb77b87 100644
--- a/app/javascript/mastodon/reducers/compose.js
+++ b/app/javascript/mastodon/reducers/compose.js
@@ -40,9 +40,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,
@@ -282,6 +280,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:
@@ -518,12 +528,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/media_attachments.js b/app/javascript/mastodon/reducers/media_attachments.js
index f145e1dcaac..cbb4933bc7e 100644
--- a/app/javascript/mastodon/reducers/media_attachments.js
+++ b/app/javascript/mastodon/reducers/media_attachments.js
@@ -2,13 +2,6 @@ import { Map as ImmutableMap } from 'immutable';
import { STORE_HYDRATE } from '../actions/store';
-export let currentMedia = null;
-
-export function setCurrentMedia(value) {
- currentMedia = value;
-}
-
-
const initialState = ImmutableMap({
accept_content_types: [],
});
diff --git a/app/javascript/mastodon/reducers/modal.ts b/app/javascript/mastodon/reducers/modal.ts
index 73a2afb916c..368f26542c0 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 2ba61839c7b..dcca11b2032 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/selectors/accounts.ts b/app/javascript/mastodon/selectors/accounts.ts
index 66193136c45..cee3a87bca0 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 8a07ba774d8..b1c60403e9f 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 9f28f5ff53f..e11aa781782 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 5fe8000731a..d259be899b1 100644
--- a/app/javascript/mastodon/store/middlewares/loading_bar.ts
+++ b/app/javascript/mastodon/store/middlewares/loading_bar.ts
@@ -1,5 +1,13 @@
+import {
+ isAsyncThunkAction,
+ 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 '..';
@@ -13,33 +21,65 @@ 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) => {
- if (action.type && !action.skipLoading) {
+ (action) => {
+ let isPending = false;
+ let isFulfilled = false;
+ let isRejected = false;
+
+ if (
+ isAsyncThunkAction(action)
+ // TODO: once we get the first use-case for it, add a check for skipLoading
+ ) {
+ if (isThunkActionPending(action)) isPending = true;
+ else if (isThunkActionFulfilled(action)) isFulfilled = true;
+ else if (isThunkActionRejected(action)) isRejected = true;
+ } else if (
+ isActionWithSkipLoading(action) &&
+ !action.skipLoading &&
+ typeof action.type === 'string'
+ ) {
const [PENDING, FULFILLED, REJECTED] = promiseTypeSuffixes;
- const isPending = new RegExp(`${PENDING}$`, 'g');
- const isFulfilled = new RegExp(`${FULFILLED}$`, 'g');
- const isRejected = new RegExp(`${REJECTED}$`, 'g');
+ const isPendingRegexp = new RegExp(`${PENDING}$`, 'g');
+ const isFulfilledRegexp = new RegExp(`${FULFILLED}$`, 'g');
+ const isRejectedRegexp = new RegExp(`${REJECTED}$`, 'g');
- if (typeof action.type === 'string') {
- if (action.type.match(isPending)) {
- dispatch(showLoading());
- } else if (
- action.type.match(isFulfilled) ??
- action.type.match(isRejected)
- ) {
- dispatch(hideLoading());
- }
+ if (action.type.match(isPendingRegexp)) {
+ isPending = true;
+ } else if (action.type.match(isFulfilledRegexp)) {
+ isFulfilled = true;
+ } else if (action.type.match(isRejectedRegexp)) {
+ isRejected = true;
}
}
+ if (isPending) {
+ dispatch(showLoading());
+ } else if (isFulfilled || isRejected) {
+ dispatch(hideLoading());
+ }
+
return next(action);
};
};
diff --git a/app/javascript/mastodon/store/middlewares/sounds.ts b/app/javascript/mastodon/store/middlewares/sounds.ts
index 09ade7d7532..51839f427ae 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 f1e71385a88..4859b82651e 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 00000000000..1bf9d57a31a
--- /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 00000000000..ce59194be0b
--- /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 00000000000..f8bc9309ceb
--- /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 00000000000..f8bc9309ceb
--- /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 00000000000..deb3f8e0d97
--- /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 00000000000..0ae8ad841cf
--- /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 00000000000..7648cf9755e
--- /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 00000000000..7648cf9755e
--- /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 00000000000..cba0c8b2a8d
--- /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 00000000000..cba0c8b2a8d
--- /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 00000000000..48c72546df1
--- /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 00000000000..48c72546df1
--- /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 00000000000..4bf73bb6daf
--- /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 00000000000..4bf73bb6daf
--- /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 00000000000..63215a3e094
--- /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 00000000000..63215a3e094
--- /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 00000000000..20e9889ae80
--- /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 00000000000..20e9889ae80
--- /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 00000000000..3a7b4d2e8b3
--- /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 00000000000..a8226a6d87b
--- /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 00000000000..f5231f925a2
--- /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 00000000000..67dffd6857f
--- /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 00000000000..3df7275bf69
--- /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 00000000000..a6d893fed46
--- /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 00000000000..f7d476f2537
--- /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 00000000000..8504fbfdad0
--- /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 00000000000..8e8e6a1ee62
--- /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 00000000000..c0da419cd06
--- /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 00000000000..1655d12bf37
--- /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 00000000000..1655d12bf37
--- /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 00000000000..3f7df315a50
--- /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 00000000000..3f7df315a50
--- /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 00000000000..53783746ae6
--- /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 00000000000..53783746ae6
--- /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 00000000000..41004673651
--- /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 00000000000..41004673651
--- /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 00000000000..5a60c58e77b
--- /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 00000000000..5a60c58e77b
--- /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 00000000000..dabf0945034
--- /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 00000000000..d875c84491f
--- /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 00000000000..59d1abb8bcd
--- /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 00000000000..560d174b9b0
--- /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 00000000000..40fe4497f51
--- /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 00000000000..763f517d1d8
--- /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 00000000000..07998b29d61
--- /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 00000000000..309a4f5b382
--- /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 00000000000..1655d12bf37
--- /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 00000000000..1655d12bf37
--- /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 00000000000..8f05228c40a
--- /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 00000000000..8f05228c40a
--- /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 00000000000..6a171ea8226
--- /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 00000000000..6a171ea8226
--- /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 00000000000..278e79978e7
--- /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 00000000000..cb81b113026
--- /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 00000000000..b18db1df8ea
--- /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 00000000000..cf7e98405ad
--- /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 00000000000..0c8f2735960
--- /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 00000000000..0c8f2735960
--- /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 00000000000..146f838a278
--- /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 00000000000..f21c2786cab
--- /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 00000000000..e44a94d90bc
--- /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 00000000000..cb4c810e08a
--- /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/fullscreen-fill.svg b/app/javascript/material-icons/400-24px/fullscreen-fill.svg
new file mode 100644
index 00000000000..940c878a7d3
--- /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 00000000000..940c878a7d3
--- /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 00000000000..d9d45a6c6ac
--- /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 00000000000..d9d45a6c6ac
--- /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 00000000000..c0d6cef5c55
--- /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 00000000000..dbc2c937e4c
--- /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 00000000000..e2544163804
--- /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 00000000000..d700ddea7ba
--- /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 00000000000..0232e17ad0a
--- /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 00000000000..05606f4e59e
--- /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 00000000000..12d137ca893
--- /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 00000000000..4f2a10be597
--- /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 00000000000..319a0681c4f
--- /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 00000000000..319a0681c4f
--- /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 00000000000..6aa8b508236
--- /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 00000000000..cca8ab19555
--- /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 00000000000..0815d784181
--- /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 00000000000..20b9e3984ec
--- /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 00000000000..60309dce5e7
--- /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 00000000000..824c70b7c45
--- /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 00000000000..48814535016
--- /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 00000000000..48814535016
--- /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 00000000000..2f427e91c89
--- /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 00000000000..2f427e91c89
--- /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 00000000000..9480d0fb92a
--- /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 00000000000..46cafa76808
--- /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 00000000000..e777154892a
--- /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 00000000000..e777154892a
--- /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 00000000000..b10ad1921ad
--- /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 00000000000..b10ad1921ad
--- /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/notifications-fill.svg b/app/javascript/material-icons/400-24px/notifications-fill.svg
new file mode 100644
index 00000000000..0730efefca1
--- /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 00000000000..dbfe0e04091
--- /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 00000000000..856a0ed8a5e
--- /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 00000000000..1389a10e0ac
--- /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 00000000000..42895ffd137
--- /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 00000000000..42895ffd137
--- /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 00000000000..fc9a8074de0
--- /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 00000000000..95bc792fc33
--- /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 00000000000..73ef1efc104
--- /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 00000000000..a3f6b246c83
--- /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 00000000000..3fa7f65288b
--- /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 00000000000..39b592bf04e
--- /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 00000000000..e68aec8321f
--- /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 00000000000..3b22224b832
--- /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 00000000000..6465b902223
--- /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 00000000000..52f0fcc9c4c
--- /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 00000000000..1e9e79de4db
--- /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 00000000000..1e9e79de4db
--- /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 00000000000..6095ba77eeb
--- /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 00000000000..e1abd900a7d
--- /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 00000000000..aed5740db3d
--- /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 00000000000..552da6658df
--- /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 00000000000..64b038f2685
--- /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 00000000000..ada92f2cf55
--- /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 00000000000..a7a6bc801bd
--- /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 00000000000..a7a6bc801bd
--- /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 00000000000..c1b09d80262
--- /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 00000000000..c1b09d80262
--- /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 00000000000..eb661f2823a
--- /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 00000000000..eb661f2823a
--- /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 00000000000..74c9573eaf7
--- /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 00000000000..74c9573eaf7
--- /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 00000000000..ef0d0521eb0
--- /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 00000000000..ef0d0521eb0
--- /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 00000000000..f1334795028
--- /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 00000000000..817c782f059
--- /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 00000000000..5a6b0d0a8dd
--- /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 00000000000..6876cd42dad
--- /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 00000000000..df417f5ff7c
--- /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 00000000000..b84efc73b18
--- /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 00000000000..cb2231e6343
--- /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 00000000000..1736e085d06
--- /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 00000000000..ce76d537b32
--- /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 00000000000..ce76d537b32
--- /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 00000000000..ecaaf37f1ee
--- /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 00000000000..ecaaf37f1ee
--- /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 00000000000..887f8bd498a
--- /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 00000000000..887f8bd498a
--- /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 00000000000..639d77af369
--- /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 00000000000..40ce5b65e5c
--- /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 00000000000..44b5f4c6061
--- /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 00000000000..8fe45d09af6
--- /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 00000000000..e21fbd88dfe
--- /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 00000000000..d98cf8d942c
--- /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 00000000000..b3d12d4d98c
--- /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 00000000000..a0acf63747a
--- /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 00000000000..dd5771215e0
--- /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 00000000000..fd9006a6d27
--- /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 00000000000..c3727d3f57a
--- /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 00000000000..238299e6064
--- /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 00000000000..d6456956733
--- /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 00000000000..1479cb22552
--- /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 00000000000..7c04a97fafd
--- /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 0f3b84549dc..7b5723091c8 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 1c2386f02d2..ae607f484a8 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 00000000000..bb4899b701e
--- /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 54e10616d2e..a60045d7be8 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 92d00cae8b1..a2cbb494b4a 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 3777fccbfb8..3c75854d9b0 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,30 @@ 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%);
+}
diff --git a/app/javascript/styles/mastodon-light/variables.scss b/app/javascript/styles/mastodon-light/variables.scss
index ac8a8312154..3cf5561ca3b 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 dcfab6bd015..d7f8586dd29 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 a65f35e7b13..3f538d08d64 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 6714b24268f..28dad81da54 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 2106b529d6c..5b89e7f25d8 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,269 +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;
- .compose-form__publish-button-wrapper {
- padding-top: 15px;
+ .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;
}
}
@@ -744,11 +882,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;
}
}
@@ -794,41 +935,6 @@ body > [data-popper-placement] {
}
}
-.reply-indicator {
- border-radius: 4px;
- margin-bottom: 10px;
- background: $ui-primary-color;
- padding: 10px;
- min-height: 23px;
- overflow-y: auto;
- flex: 0 2 auto;
-}
-
-.reply-indicator__header {
- margin-bottom: 5px;
- overflow: hidden;
-}
-
-.reply-indicator__cancel {
- float: right;
- line-height: 24px;
-}
-
-.reply-indicator__display-name {
- color: $inverted-text-color;
- display: block;
- max-width: 100%;
- line-height: 24px;
- overflow: hidden;
- padding-inline-end: 25px;
- text-decoration: none;
-}
-
-.reply-indicator__display-avatar {
- float: left;
- margin-inline-end: 5px;
-}
-
.status__content--with-action {
cursor: pointer;
}
@@ -838,14 +944,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;
@@ -930,6 +1037,174 @@ body > [data-popper-placement] {
}
}
+.reply-indicator {
+ display: grid;
+ grid-template-columns: 46px minmax(0, 1fr);
+ grid-template-rows: 46px max-content;
+ gap: 0 10px;
+
+ .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;
@@ -1398,8 +1673,7 @@ body > [data-popper-placement] {
.icon {
width: 15px;
height: 15px;
- position: relative;
- top: 0.145em;
+ vertical-align: middle;
}
}
@@ -1459,15 +1733,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%);
@@ -1678,7 +1943,6 @@ a .account__avatar {
}
.status__display-name,
-.reply-indicator__display-name,
.detailed-status__display-name,
a.account__display-name {
&:hover .display-name strong {
@@ -1936,57 +2200,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 {
@@ -2164,6 +2416,7 @@ a.account__display-name {
&__panels {
display: flex;
justify-content: center;
+ gap: 16px;
width: 100%;
height: 100%;
min-height: 100vh;
@@ -2196,7 +2449,6 @@ a.account__display-name {
flex-direction: column;
@media screen and (min-width: $no-gap-breakpoint) {
- padding: 0 10px;
max-width: 600px;
}
}
@@ -2322,7 +2574,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;
@@ -2446,6 +2698,7 @@ $ui-header-height: 55px;
.columns-area__panels {
min-height: calc(100vh - $ui-header-height);
+ gap: 0;
}
.columns-area__panels__pane--navigational {
@@ -2845,21 +3098,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;
@@ -2888,32 +3126,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;
}
}
@@ -2933,6 +3148,10 @@ $ui-header-height: 55px;
height: 30px;
width: auto;
}
+
+ &__logo {
+ margin-bottom: 12px;
+ }
}
.navigation-panel,
@@ -2964,7 +3183,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;
@@ -2980,7 +3199,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;
@@ -3002,24 +3221,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;
}
}
@@ -3205,7 +3420,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;
@@ -3229,7 +3444,7 @@ $ui-header-height: 55px;
&--transparent {
background: transparent;
- color: $ui-secondary-color;
+ color: $secondary-text-color;
&:hover,
&:focus,
@@ -3804,7 +4019,7 @@ a.status-card {
gap: 5px;
margin: 0;
border: 0;
- padding: 15px;
+ padding: 13px;
padding-inline-end: 0;
color: inherit;
background: transparent;
@@ -4398,11 +4613,6 @@ a.status-card {
align-items: center;
justify-content: center;
- @supports (display: grid) {
- // hack to fix Chrome <57
- contain: strict;
- }
-
& > span {
max-width: 500px;
}
@@ -4539,10 +4749,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;
@@ -4565,11 +4772,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 {
@@ -4582,7 +4790,7 @@ a.status-card {
&:hover,
&:focus,
&:active {
- background: rgba($ui-secondary-color, 0.4);
+ background: var(--dropdown-border-color);
}
}
@@ -4651,15 +4859,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 {
@@ -4678,7 +4888,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;
}
@@ -4732,12 +4942,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%;
@@ -4758,28 +4972,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;
}
}
@@ -4787,17 +5014,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}) {
@@ -4809,64 +5035,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;
}
}
}
@@ -4875,9 +5115,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;
@@ -4886,6 +5130,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;
@@ -4894,7 +5139,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;
@@ -4902,6 +5147,7 @@ a.status-card {
.icon-button {
padding: 0;
+ color: $darker-text-color;
}
.icon {
@@ -4917,7 +5163,7 @@ a.status-card {
}
&__message {
- color: $dark-text-color;
+ color: $darker-text-color;
padding: 0 10px;
}
@@ -4973,6 +5219,10 @@ a.status-card {
}
&.active {
+ .search__input {
+ border-radius: 4px 4px 0 0;
+ }
+
.search__popout {
display: block;
}
@@ -4983,14 +5233,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;
@@ -5001,10 +5246,6 @@ a.status-card {
&:active {
outline: 0 !important;
}
-
- &:focus {
- background: lighten($ui-base-color, 4%);
- }
}
.search__icon {
@@ -5019,21 +5260,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;
}
}
@@ -5048,16 +5289,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%);
}
}
}
@@ -5549,6 +5784,10 @@ a.status-card {
padding-inline-end: 10px;
}
+ .icon {
+ vertical-align: middle;
+ }
+
.button {
flex: 0 0 auto;
}
@@ -5660,6 +5899,11 @@ a.status-card {
}
}
+ .dialog-option {
+ align-items: center;
+ gap: 12px;
+ }
+
.dialog-option .poll__input {
border-color: $inverted-text-color;
color: $ui-secondary-color;
@@ -5668,8 +5912,8 @@ a.status-card {
justify-content: center;
svg {
- width: 8px;
- height: auto;
+ width: 15px;
+ height: 15px;
}
&:active,
@@ -6099,6 +6343,7 @@ a.status-card {
gap: 2px;
}
+.media-gallery__alt__label,
.media-gallery__gifv__label {
display: flex;
align-items: center;
@@ -6175,6 +6420,7 @@ a.status-card {
.icon {
color: $dark-text-color;
+ vertical-align: middle;
}
}
}
@@ -6865,90 +7111,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;
@@ -7420,6 +7582,13 @@ noscript {
span {
user-select: all;
}
+
+ .icon-lock {
+ height: 16px;
+ width: 16px;
+ position: relative;
+ top: 3px;
+ }
}
}
}
@@ -8903,11 +9072,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;
diff --git a/app/javascript/styles/mastodon/containers.scss b/app/javascript/styles/mastodon/containers.scss
index 3d646da2391..8a472d75b13 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 c7247c3a572..fec0c10ddb9 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 0b7220b21d1..60e7d622458 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 8a26e611ca8..939fca3364a 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 00000000000..a5bbb8fc4f5
--- /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 00000000000..cf2a05c84e5
--- /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 07d19295556..8a08eca9f6e 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/create.rb b/app/lib/activitypub/activity/create.rb
index fedfa39deec..85195f4c395 100644
--- a/app/lib/activitypub/activity/create.rb
+++ b/app/lib/activitypub/activity/create.rb
@@ -108,7 +108,9 @@ 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)
@params = {
uri: @status_parser.uri,
@@ -125,7 +127,8 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
visibility: @status_parser.visibility,
thread: replied_to_status,
conversation: conversation_from_uri(@object['conversation']),
- media_attachment_ids: process_attachments.take(4).map(&:id),
+ media_attachment_ids: attachment_ids,
+ ordered_media_attachment_ids: attachment_ids,
poll: process_poll,
}
end
@@ -280,6 +283,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
@@ -316,7 +320,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
@@ -402,7 +406,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/parser/status_parser.rb b/app/lib/activitypub/parser/status_parser.rb
index 45f5fc5bf2d..cfc2b8788b1 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 1df05b120ea..2ddc8e8b07e 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 00000000000..cf4297f2a45
--- /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 00000000000..ea9ef366df7
--- /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 00000000000..af5e854c222
--- /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 00000000000..e3e8a7c90b1
--- /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 00000000000..85ff1ff86e1
--- /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 00000000000..9fe4698ee5d
--- /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 00000000000..1ccb622676f
--- /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 00000000000..a144bac0d15
--- /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 00000000000..488dacb1b45
--- /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 00000000000..112e5591ce2
--- /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 00000000000..fc12a6f1f4b
--- /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 13a9da828f5..32ccb0b13c1 100644
--- a/app/lib/attachment_batch.rb
+++ b/app/lib/attachment_batch.rb
@@ -4,7 +4,8 @@ class AttachmentBatch
# Maximum amount of objects you can delete in an S3 API call. It's
# important to remember that this does not correspond to the number
# of records in the batch, since records can have multiple attachments
- LIMIT = 1_000
+ LIMIT = ENV.fetch('S3_BATCH_DELETE_LIMIT', 1000).to_i
+ MAX_RETRY = ENV.fetch('S3_BATCH_DELETE_RETRY', 3).to_i
# Attributes generated and maintained by Paperclip (not all of them
# are always used on every class, however)
@@ -36,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
@@ -95,6 +96,7 @@ class AttachmentBatch
# objects can be processed at once, so we have to potentially
# separate them into multiple calls.
+ retries = 0
keys.each_slice(LIMIT) do |keys_slice|
logger.debug { "Deleting #{keys_slice.size} objects" }
@@ -102,6 +104,17 @@ class AttachmentBatch
objects: keys_slice.map { |key| { key: key } },
quiet: true,
})
+ rescue => e
+ retries += 1
+
+ if retries < MAX_RETRY
+ logger.debug "Retry #{retries}/#{MAX_RETRY} after #{e.message}"
+ sleep 2**retries
+ retry
+ else
+ logger.error "Batch deletion from S3 failed after #{e.message}"
+ raise e
+ end
end
end
diff --git a/app/lib/content_security_policy.rb b/app/lib/content_security_policy.rb
index 966e41f03b3..210f37cea0d 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 d9382698292..e17b45d667a 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 15b98dc57e6..2a3683c499f 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 53767486ff8..38a177e6453 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/inline_renderer.rb b/app/lib/inline_renderer.rb
index eda3da2c29b..0aebb13fce4 100644
--- a/app/lib/inline_renderer.rb
+++ b/app/lib/inline_renderer.rb
@@ -37,13 +37,13 @@ class InlineRenderer
private
def preload_associations_for_status
- ActiveRecord::Associations::Preloader.new(records: @object, associations: {
+ ActiveRecord::Associations::Preloader.new(records: [@object], associations: {
active_mentions: :account,
reblog: {
active_mentions: :account,
},
- })
+ }).call
end
def current_user
diff --git a/app/lib/link_details_extractor.rb b/app/lib/link_details_extractor.rb
index a96612cab0d..bb031986d68 100644
--- a/app/lib/link_details_extractor.rb
+++ b/app/lib/link_details_extractor.rb
@@ -37,6 +37,7 @@ class LinkDetailsExtractor
def language
lang = json['inLanguage']
+ lang = lang.first if lang.is_a?(Array)
lang.is_a?(Hash) ? (lang['alternateName'] || lang['name']) : lang
end
diff --git a/app/lib/ostatus/tag_manager.rb b/app/lib/ostatus/tag_manager.rb
index 7d813162272..21b3d3aa584 100644
--- a/app/lib/ostatus/tag_manager.rb
+++ b/app/lib/ostatus/tag_manager.rb
@@ -52,7 +52,7 @@ class OStatus::TagManager
ActivityPub::TagManager.instance.uri_to_local_id(tag)
else
matches = Regexp.new("objectId=([\\d]+):objectType=#{expected_type}").match(tag)
- return matches[1] unless matches.nil?
+ matches[1] unless matches.nil?
end
end
diff --git a/app/lib/permalink_redirector.rb b/app/lib/permalink_redirector.rb
index 0dd37483e23..f551f69db85 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/potential_friendship_tracker.rb b/app/lib/potential_friendship_tracker.rb
deleted file mode 100644
index f5bc2034659..00000000000
--- a/app/lib/potential_friendship_tracker.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-# frozen_string_literal: true
-
-class PotentialFriendshipTracker
- EXPIRE_AFTER = 90.days.seconds
- MAX_ITEMS = 80
-
- WEIGHTS = {
- reply: 1,
- favourite: 10,
- reblog: 20,
- }.freeze
-
- class << self
- include Redisable
-
- def record(account_id, target_account_id, action)
- return if account_id == target_account_id
-
- key = "interactions:#{account_id}"
- weight = WEIGHTS[action]
-
- redis.zincrby(key, weight, target_account_id)
- redis.zremrangebyrank(key, 0, -MAX_ITEMS)
- redis.expire(key, EXPIRE_AFTER)
- end
-
- def remove(account_id, target_account_id)
- redis.zrem("interactions:#{account_id}", target_account_id)
- end
- end
-end
diff --git a/app/lib/request.rb b/app/lib/request.rb
index 5f128af734c..8d4120868d4 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 3ad57cc1ea9..00000000000
--- 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 45b50cb3793..34f6199ec0e 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 36fb0e80fb8..17e42e3ec38 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 1af5188c658..74f49aa5587 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 ab7ea4092fa..e5581952905 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/lib/vacuum/preview_cards_vacuum.rb b/app/lib/vacuum/preview_cards_vacuum.rb
index 14fdeda1ca9..9e34c87c30c 100644
--- a/app/lib/vacuum/preview_cards_vacuum.rb
+++ b/app/lib/vacuum/preview_cards_vacuum.rb
@@ -14,9 +14,8 @@ class Vacuum::PreviewCardsVacuum
private
def vacuum_cached_images!
- preview_cards_past_retention_period.find_each do |preview_card|
- preview_card.image.destroy
- preview_card.save
+ preview_cards_past_retention_period.find_in_batches do |preview_card|
+ AttachmentBatch.new(PreviewCard, preview_card).clear
end
end
diff --git a/app/mailers/application_mailer.rb b/app/mailers/application_mailer.rb
index 35f0b5fee18..3312183d47d 100644
--- a/app/mailers/application_mailer.rb
+++ b/app/mailers/application_mailer.rb
@@ -12,7 +12,7 @@ class ApplicationMailer < ActionMailer::Base
protected
def locale_for_account(account, &block)
- I18n.with_locale(account.user_locale || I18n.default_locale, &block)
+ I18n.with_locale(account.user_locale || I18n.locale || I18n.default_locale, &block)
end
def set_autoreply_headers!
diff --git a/app/mailers/notification_mailer.rb b/app/mailers/notification_mailer.rb
index 5eecfed1040..4eb38ec3406 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 2af2a3a41d2..3b1a085cb88 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
@@ -202,6 +214,6 @@ class UserMailer < Devise::Mailer
end
def locale
- @resource.locale.presence || I18n.default_locale
+ @resource.locale.presence || I18n.locale || I18n.default_locale
end
end
diff --git a/app/models/account.rb b/app/models/account.rb
index 4119944e598..05e1f943cae 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?
@@ -457,8 +467,8 @@ class Account < ApplicationRecord
end
def inverse_alias(key, original_key)
- define_method("#{key}=") do |value|
- public_send("#{original_key}=", !ActiveModel::Type::Boolean.new.cast(value))
+ define_method(:"#{key}=") do |value|
+ public_send(:"#{original_key}=", !ActiveModel::Type::Boolean.new.cast(value))
end
define_method(key) do
@@ -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_domain_block.rb b/app/models/account_domain_block.rb
index af1e6a68dc4..753935d6af6 100644
--- a/app/models/account_domain_block.rb
+++ b/app/models/account_domain_block.rb
@@ -18,16 +18,17 @@ class AccountDomainBlock < ApplicationRecord
belongs_to :account
validates :domain, presence: true, uniqueness: { scope: :account_id }, domain: true
- after_commit :remove_blocking_cache
- after_commit :remove_relationship_cache
+ after_commit :invalidate_domain_blocking_cache
+ after_commit :invalidate_follow_recommendations_cache
private
- def remove_blocking_cache
+ def invalidate_domain_blocking_cache
Rails.cache.delete("exclude_domains_for:#{account_id}")
+ Rails.cache.delete(['exclude_domains', account_id, domain])
end
- def remove_relationship_cache
- Rails.cache.delete_matched("relationship:#{account_id}:*")
+ def invalidate_follow_recommendations_cache
+ Rails.cache.delete("follow_recommendations/#{account_id}")
end
end
diff --git a/app/models/account_filter.rb b/app/models/account_filter.rb
index 55d34e85c31..42b1c49538b 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 d1774e62fae..25c8b04d50f 100644
--- a/app/models/account_suggestions.rb
+++ b/app/models/account_suggestions.rb
@@ -1,28 +1,48 @@
# frozen_string_literal: true
class AccountSuggestions
+ include DatabaseHelper
+
SOURCES = [
AccountSuggestions::SettingSource,
- AccountSuggestions::PastInteractionsSource,
+ AccountSuggestions::FriendsOfFriendsSource,
+ AccountSuggestions::SimilarProfilesSource,
AccountSuggestions::GlobalSource,
].freeze
- def self.get(account, limit)
- SOURCES.each_with_object([]) do |source_class, suggestions|
- source_suggestions = source_class.new.get(
- account,
- skip_account_ids: suggestions.map(&:account_id),
- limit: limit - suggestions.size
- )
+ BATCH_SIZE = 40
- suggestions.concat(source_suggestions)
+ def initialize(account)
+ @account = account
+ end
+
+ def get(limit, offset = 0)
+ with_read_replica do
+ account_ids_with_sources = Rails.cache.fetch("follow_recommendations/#{@account.id}", expires_in: 15.minutes) do
+ SOURCES.flat_map { |klass| klass.new.get(@account, limit: BATCH_SIZE) }.each_with_object({}) do |(account_id, source), h|
+ (h[account_id] ||= []).concat(Array(source).map(&:to_sym))
+ end.to_a.shuffle
+ end
+
+ # The sources deliver accounts that haven't yet been followed, are not blocked,
+ # and so on. Since we reset the cache on follows, blocks, and so on, we don't need
+ # 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, :user).index_by(&:id)
+
+ account_ids.filter_map do |(account_id, source)|
+ next unless accounts_map.key?(account_id)
+
+ AccountSuggestions::Suggestion.new(
+ account: accounts_map[account_id],
+ source: source
+ )
+ end
end
end
- def self.remove(account, target_account_id)
- SOURCES.each do |source_class|
- source = source_class.new
- source.remove(account, target_account_id)
- end
+ def remove(target_account_id)
+ FollowRecommendationMute.create(account_id: @account.id, target_account_id: target_account_id)
end
end
diff --git a/app/models/account_suggestions/friends_of_friends_source.rb b/app/models/account_suggestions/friends_of_friends_source.rb
new file mode 100644
index 00000000000..28d0ab99b3b
--- /dev/null
+++ b/app/models/account_suggestions/friends_of_friends_source.rb
@@ -0,0 +1,37 @@
+# frozen_string_literal: true
+
+class AccountSuggestions::FriendsOfFriendsSource < AccountSuggestions::Source
+ def get(account, limit: 10)
+ Account.find_by_sql([<<~SQL.squish, { id: account.id, limit: limit }]).map { |row| [row.id, key] }
+ WITH first_degree AS (
+ SELECT target_account_id
+ FROM follows
+ JOIN accounts AS target_accounts ON follows.target_account_id = target_accounts.id
+ WHERE account_id = :id
+ AND NOT target_accounts.hide_collections
+ )
+ SELECT accounts.id, COUNT(*) AS frequency
+ FROM accounts
+ JOIN follows ON follows.target_account_id = accounts.id
+ JOIN account_stats ON account_stats.account_id = accounts.id
+ LEFT OUTER JOIN follow_recommendation_mutes ON follow_recommendation_mutes.target_account_id = accounts.id AND follow_recommendation_mutes.account_id = :id
+ WHERE follows.account_id IN (SELECT * FROM first_degree)
+ AND NOT EXISTS (SELECT 1 FROM follows f WHERE f.target_account_id = follows.target_account_id AND f.account_id = :id)
+ AND follows.target_account_id <> :id
+ AND accounts.discoverable
+ AND accounts.suspended_at IS NULL
+ AND accounts.silenced_at IS NULL
+ AND accounts.moved_to_account_id IS NULL
+ AND follow_recommendation_mutes.target_account_id IS NULL
+ GROUP BY accounts.id, account_stats.id
+ ORDER BY frequency DESC, account_stats.followers_count ASC
+ LIMIT :limit
+ SQL
+ end
+
+ private
+
+ def key
+ :friends_of_friends
+ end
+end
diff --git a/app/models/account_suggestions/global_source.rb b/app/models/account_suggestions/global_source.rb
index 651041d6751..d68f285e4f4 100644
--- a/app/models/account_suggestions/global_source.rb
+++ b/app/models/account_suggestions/global_source.rb
@@ -1,39 +1,13 @@
# frozen_string_literal: true
class AccountSuggestions::GlobalSource < AccountSuggestions::Source
- include Redisable
-
- def key
- :global
- end
-
- def get(account, skip_account_ids: [], limit: 40)
- account_ids = account_ids_for_locale(I18n.locale.to_s.split(/[_-]/).first) - [account.id] - skip_account_ids
-
- as_ordered_suggestions(
- scope(account).where(id: account_ids),
- account_ids
- ).take(limit)
- end
-
- def remove(_account, _target_account_id)
- nil
+ def get(account, limit: 10)
+ FollowRecommendation.localized(content_locale).joins(:account).merge(base_account_scope(account)).order(rank: :desc).limit(limit).pluck(:account_id, :reason)
end
private
- def scope(account)
- Account.searchable
- .followable_by(account)
- .not_excluded_by_account(account)
- .not_domain_blocked_by_account(account)
- end
-
- def account_ids_for_locale(locale)
- redis.zrevrange("follow_recommendations:#{locale}", 0, -1).map(&:to_i)
- end
-
- def to_ordered_list_key(account)
- account.id
+ def content_locale
+ I18n.locale.to_s.split(/[_-]/).first
end
end
diff --git a/app/models/account_suggestions/past_interactions_source.rb b/app/models/account_suggestions/past_interactions_source.rb
deleted file mode 100644
index d169394f11a..00000000000
--- a/app/models/account_suggestions/past_interactions_source.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-# frozen_string_literal: true
-
-class AccountSuggestions::PastInteractionsSource < AccountSuggestions::Source
- include Redisable
-
- def key
- :past_interactions
- end
-
- def get(account, skip_account_ids: [], limit: 40)
- account_ids = account_ids_for_account(account.id, limit + skip_account_ids.size) - skip_account_ids
-
- as_ordered_suggestions(
- scope.where(id: account_ids),
- account_ids
- ).take(limit)
- end
-
- def remove(account, target_account_id)
- redis.zrem("interactions:#{account.id}", target_account_id)
- end
-
- private
-
- def scope
- Account.searchable
- end
-
- def account_ids_for_account(account_id, limit)
- redis.zrevrange("interactions:#{account_id}", 0, limit).map(&:to_i)
- end
-
- def to_ordered_list_key(account)
- account.id
- end
-end
diff --git a/app/models/account_suggestions/setting_source.rb b/app/models/account_suggestions/setting_source.rb
index 6185732b4bc..4b7275bf7ad 100644
--- a/app/models/account_suggestions/setting_source.rb
+++ b/app/models/account_suggestions/setting_source.rb
@@ -1,32 +1,18 @@
# frozen_string_literal: true
class AccountSuggestions::SettingSource < AccountSuggestions::Source
- def key
- :staff
- end
-
- def get(account, skip_account_ids: [], limit: 40)
- return [] unless setting_enabled?
-
- as_ordered_suggestions(
- scope(account).where(setting_to_where_condition).where.not(id: skip_account_ids),
- usernames_and_domains
- ).take(limit)
- end
-
- def remove(_account, _target_account_id)
- nil
+ def get(account, limit: 10)
+ if setting_enabled?
+ base_account_scope(account).where(setting_to_where_condition).limit(limit).pluck(:id).zip([key].cycle)
+ else
+ []
+ end
end
private
- def scope(account)
- Account.searchable
- .followable_by(account)
- .not_excluded_by_account(account)
- .not_domain_blocked_by_account(account)
- .where(locked: false)
- .where.not(id: account.id)
+ def key
+ :featured
end
def usernames_and_domains
@@ -61,8 +47,4 @@ class AccountSuggestions::SettingSource < AccountSuggestions::Source
def setting
Setting.bootstrap_timeline_accounts
end
-
- def to_ordered_list_key(account)
- [account.username.downcase, account.domain&.downcase]
- end
end
diff --git a/app/models/account_suggestions/similar_profiles_source.rb b/app/models/account_suggestions/similar_profiles_source.rb
new file mode 100644
index 00000000000..733c5f0bbcd
--- /dev/null
+++ b/app/models/account_suggestions/similar_profiles_source.rb
@@ -0,0 +1,67 @@
+# frozen_string_literal: true
+
+class AccountSuggestions::SimilarProfilesSource < AccountSuggestions::Source
+ class QueryBuilder < AccountSearchService::QueryBuilder
+ def must_clauses
+ [
+ {
+ more_like_this: {
+ fields: %w(text text.stemmed),
+ like: @query.map { |id| { _index: 'accounts', _id: id } },
+ },
+ },
+
+ {
+ term: {
+ properties: 'discoverable',
+ },
+ },
+ ]
+ end
+
+ def must_not_clauses
+ [
+ {
+ terms: {
+ id: following_ids,
+ },
+ },
+
+ {
+ term: {
+ properties: 'bot',
+ },
+ },
+ ]
+ end
+
+ def should_clauses
+ {
+ term: {
+ properties: {
+ value: 'verified',
+ boost: 2,
+ },
+ },
+ }
+ end
+ end
+
+ def get(account, limit: 10)
+ recently_followed_account_ids = account.active_relationships.recent.limit(5).pluck(:target_account_id)
+
+ if Chewy.enabled? && !recently_followed_account_ids.empty?
+ QueryBuilder.new(recently_followed_account_ids, account).build.limit(limit).hits.pluck('_id').map(&:to_i).zip([key].cycle)
+ else
+ []
+ end
+ rescue Faraday::ConnectionFailed
+ []
+ end
+
+ private
+
+ def key
+ :similar_to_recently_followed
+ end
+end
diff --git a/app/models/account_suggestions/source.rb b/app/models/account_suggestions/source.rb
index 504d26a8bd6..d83f5e3773c 100644
--- a/app/models/account_suggestions/source.rb
+++ b/app/models/account_suggestions/source.rb
@@ -1,34 +1,38 @@
# frozen_string_literal: true
class AccountSuggestions::Source
- def key
- raise NotImplementedError
- end
-
def get(_account, **kwargs)
raise NotImplementedError
end
- def remove(_account, target_account_id)
- raise NotImplementedError
- end
-
protected
- def as_ordered_suggestions(scope, ordered_list)
- return [] if ordered_list.empty?
-
- map = scope.index_by { |account| to_ordered_list_key(account) }
-
- ordered_list.filter_map { |ordered_list_key| map[ordered_list_key] }.map do |account|
- AccountSuggestions::Suggestion.new(
- account: account,
- source: key
- )
- end
+ def base_account_scope(account)
+ 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 to_ordered_list_key(_account)
- raise NotImplementedError
+ 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 0d8835b83c6..2a21d09a8ba 100644
--- a/app/models/account_summary.rb
+++ b/app/models/account_summary.rb
@@ -12,9 +12,11 @@
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 :filtered, -> { where.missing(:follow_recommendation_suppressions) }
def self.refresh
Scenic.database.refresh_materialized_view(table_name, concurrently: false, cascade: false)
diff --git a/app/models/admin/action_log_filter.rb b/app/models/admin/action_log_filter.rb
index d413cb386d4..f581af74e8b 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 c5d6dd62e19..e630570020e 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
+ ).to_a.tap do |records|
+ ActiveRecord::Associations::Preloader.new(records: records, associations: :custom_emoji).call
end
-
- ActiveRecord::Associations::Preloader.new(records: records, associations: :custom_emoji)
- records
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 f1290ad01a5..395056b76f5 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/block.rb b/app/models/block.rb
index 11156ebab31..5476542a5ab 100644
--- a/app/models/block.rb
+++ b/app/models/block.rb
@@ -26,15 +26,20 @@ class Block < ApplicationRecord
end
before_validation :set_uri, only: :create
- after_commit :remove_blocking_cache
+ after_commit :invalidate_blocking_cache
+ after_commit :invalidate_follow_recommendations_cache
private
- def remove_blocking_cache
+ def invalidate_blocking_cache
Rails.cache.delete("exclude_account_ids_for:#{account_id}")
Rails.cache.delete("exclude_account_ids_for:#{target_account_id}")
end
+ def invalidate_follow_recommendations_cache
+ Rails.cache.delete("follow_recommendations/#{account_id}")
+ end
+
def set_uri
self.uri = ActivityPub::TagManager.instance.generate_uri_for(self) if uri.nil?
end
diff --git a/app/models/bulk_import.rb b/app/models/bulk_import.rb
index 810e4718492..406fb2aba26 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/associations.rb b/app/models/concerns/account/associations.rb
index 31902ae21a8..2bb6fed5ad0 100644
--- a/app/models/concerns/account/associations.rb
+++ b/app/models/concerns/account/associations.rb
@@ -64,6 +64,7 @@ module Account::Associations
has_one :deletion_request, class_name: 'AccountDeletionRequest', inverse_of: :account, dependent: :destroy
# Follow recommendations
+ has_one :follow_recommendation, inverse_of: :account, dependent: nil
has_one :follow_recommendation_suppression, inverse_of: :account, dependent: :destroy
# Account statuses cleanup policy
diff --git a/app/models/concerns/account/interactions.rb b/app/models/concerns/account/interactions.rb
index 0ea26e628d8..5b05c31e03f 100644
--- a/app/models/concerns/account/interactions.rb
+++ b/app/models/concerns/account/interactions.rb
@@ -60,12 +60,6 @@ module Account::Interactions
end
end
- def domain_blocking_map(target_account_ids, account_id)
- accounts_map = Account.where(id: target_account_ids).select('id, domain').each_with_object({}) { |a, h| h[a.id] = a.domain }
- blocked_domains = domain_blocking_map_by_domain(accounts_map.values.compact, account_id)
- accounts_map.reduce({}) { |h, (id, domain)| h.merge(id => blocked_domains[domain]) }
- end
-
def domain_blocking_map_by_domain(target_domains, account_id)
follow_mapping(AccountDomainBlock.where(account_id: account_id, domain: target_domains), :domain)
end
@@ -122,8 +116,6 @@ module Account::Interactions
rel.save! if rel.changed?
- remove_potential_friendship(other_account)
-
rel
end
@@ -137,13 +129,10 @@ module Account::Interactions
rel.save! if rel.changed?
- remove_potential_friendship(other_account)
-
rel
end
def block!(other_account, uri: nil)
- remove_potential_friendship(other_account)
block_relationships.create_with(uri: uri)
.find_or_create_by!(target_account: other_account)
end
@@ -154,8 +143,6 @@ module Account::Interactions
mute.expires_in = duration.zero? ? nil : duration
mute.save!
- remove_potential_friendship(other_account)
-
# When toggling a mute between hiding and allowing notifications, the mute will already exist, so the find_or_create_by! call will return the existing Mute without updating the hide_notifications attribute. Therefore, we check that hide_notifications? is what we want and set it if it isn't.
mute.update!(hide_notifications: notifications) if mute.hide_notifications? != notifications
@@ -196,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?
@@ -212,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)
@@ -313,10 +300,4 @@ module Account::Interactions
domain_blocking_by_domain: Account.domain_blocking_map_by_domain(domains, id),
})
end
-
- private
-
- def remove_potential_friendship(other_account)
- PotentialFriendshipTracker.remove(id, other_account.id)
- end
end
diff --git a/app/models/concerns/account/search.rb b/app/models/concerns/account/search.rb
index b02b9bd4611..077e5d57b18 100644
--- a/app/models/concerns/account/search.rb
+++ b/app/models/concerns/account/search.rb
@@ -116,6 +116,7 @@ module Account::Search
[].tap do |properties|
properties << 'bot' if bot?
properties << 'verified' if fields.any?(&:verified?)
+ properties << 'discoverable' if discoverable?
end
end
@@ -124,7 +125,7 @@ module Account::Search
tsquery = generate_query_for_search(terms)
find_by_sql([BASIC_SEARCH_SQL, { limit: limit, offset: offset, tsquery: tsquery }]).tap do |records|
- ActiveRecord::Associations::Preloader.new(records: records, associations: :account_stat)
+ ActiveRecord::Associations::Preloader.new(records: records, associations: [:account_stat, { user: :role }]).call
end
end
@@ -133,7 +134,7 @@ module Account::Search
sql_template = following ? ADVANCED_SEARCH_WITH_FOLLOWING : ADVANCED_SEARCH_WITHOUT_FOLLOWING
find_by_sql([sql_template, { id: account.id, limit: limit, offset: offset, tsquery: tsquery }]).tap do |records|
- ActiveRecord::Associations::Preloader.new(records: records, associations: :account_stat)
+ ActiveRecord::Associations::Preloader.new(records: records, associations: [:account_stat, { user: :role }]).call
end
end
diff --git a/app/models/concerns/attachmentable.rb b/app/models/concerns/attachmentable.rb
index 4cdbdeb4738..3b7db1fcef3 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/relationship_cacheable.rb b/app/models/concerns/relationship_cacheable.rb
index 0d9359f7e7b..c32a8d62c6f 100644
--- a/app/models/concerns/relationship_cacheable.rb
+++ b/app/models/concerns/relationship_cacheable.rb
@@ -10,7 +10,7 @@ module RelationshipCacheable
private
def remove_relationship_cache
- Rails.cache.delete("relationship:#{account_id}:#{target_account_id}")
- Rails.cache.delete("relationship:#{target_account_id}:#{account_id}")
+ Rails.cache.delete(['relationship', account_id, target_account_id])
+ Rails.cache.delete(['relationship', target_account_id, account_id])
end
end
diff --git a/app/models/concerns/remotable.rb b/app/models/concerns/remotable.rb
index bd8b6f4eb9a..8382c915996 100644
--- a/app/models/concerns/remotable.rb
+++ b/app/models/concerns/remotable.rb
@@ -7,7 +7,7 @@ module Remotable
def remotable_attachment(attachment_name, limit, suppress_errors: true, download_on_assign: true, attribute_name: nil)
attribute_name ||= :"#{attachment_name}_remote_url"
- define_method("download_#{attachment_name}!") do |url = nil|
+ define_method(:"download_#{attachment_name}!") do |url = nil|
url ||= self[attribute_name]
return if url.blank?
@@ -24,29 +24,29 @@ module Remotable
Request.new(:get, url).perform do |response|
raise Mastodon::UnexpectedResponseError, response unless (200...300).cover?(response.code)
- public_send("#{attachment_name}=", ResponseWithLimit.new(response, limit))
+ public_send(:"#{attachment_name}=", ResponseWithLimit.new(response, limit))
end
rescue Mastodon::UnexpectedResponseError, HTTP::TimeoutError, HTTP::ConnectionError, OpenSSL::SSL::SSLError => e
Rails.logger.debug { "Error fetching remote #{attachment_name}: #{e}" }
- public_send("#{attachment_name}=", nil) if public_send("#{attachment_name}_file_name").present?
+ public_send(:"#{attachment_name}=", nil) if public_send(:"#{attachment_name}_file_name").present?
raise e unless suppress_errors
rescue Paperclip::Errors::NotIdentifiedByImageMagickError, Addressable::URI::InvalidURIError, Mastodon::HostValidationError, Mastodon::LengthValidationError, Paperclip::Error, Mastodon::DimensionsValidationError, Mastodon::StreamValidationError => e
Rails.logger.debug { "Error fetching remote #{attachment_name}: #{e}" }
- public_send("#{attachment_name}=", nil) if public_send("#{attachment_name}_file_name").present?
+ public_send(:"#{attachment_name}=", nil) if public_send(:"#{attachment_name}_file_name").present?
end
nil
end
- define_method("#{attribute_name}=") do |url|
- return if self[attribute_name] == url && public_send("#{attachment_name}_file_name").present?
+ define_method(:"#{attribute_name}=") do |url|
+ return if self[attribute_name] == url && public_send(:"#{attachment_name}_file_name").present?
self[attribute_name] = url if has_attribute?(attribute_name)
- public_send("download_#{attachment_name}!", url) if download_on_assign
+ 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 6d1d1b8cc3f..113bfda2304 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 97b1c63bf37..1c9b443959a 100644
--- a/app/models/custom_emoji.rb
+++ b/app/models/custom_emoji.rb
@@ -41,7 +41,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 }
@@ -86,7 +86,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
@@ -95,8 +95,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 ed7a8dda15c..870cc71974e 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 0f4fd78cbff..c8120c23954 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
@@ -91,7 +82,7 @@ class CustomFilter < ApplicationRecord
filters_hash.values.map { |cache| [cache.delete(:filter), cache] }
end.to_a
- active_filters.select { |custom_filter, _| !custom_filter.expired? }
+ active_filters.reject { |custom_filter, _| custom_filter.expired? }
end
def self.apply_cached_filters(cached_filters, status)
@@ -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 3158b3b79a0..979d0b822e6 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 ce9597b4d15..47ada7ac232 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 ff23f8fcc46..a05db099a8d 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 60e90208dbe..40be59420ae 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 7c36aa8b0bc..ea8aa4787c4 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.rb b/app/models/follow.rb
index 108f5c5d515..4d1598dcad6 100644
--- a/app/models/follow.rb
+++ b/app/models/follow.rb
@@ -44,10 +44,10 @@ class Follow < ApplicationRecord
before_validation :set_uri, only: :create
after_create :increment_cache_counters
- after_create :invalidate_hash_cache
after_destroy :remove_endorsements
after_destroy :decrement_cache_counters
- after_destroy :invalidate_hash_cache
+ after_commit :invalidate_follow_recommendations_cache
+ after_commit :invalidate_hash_cache
private
@@ -74,4 +74,8 @@ class Follow < ApplicationRecord
Rails.cache.delete("followers_hash:#{target_account_id}:#{account.synchronization_uri_prefix}")
end
+
+ def invalidate_follow_recommendations_cache
+ Rails.cache.delete("follow_recommendations/#{account_id}")
+ end
end
diff --git a/app/models/follow_recommendation_filter.rb b/app/models/follow_recommendation_filter.rb
index 2fab9756988..62a02eba5ae 100644
--- a/app/models/follow_recommendation_filter.rb
+++ b/app/models/follow_recommendation_filter.rb
@@ -17,12 +17,9 @@ class FollowRecommendationFilter
def results
if params['status'] == 'suppressed'
- Account.joins(:follow_recommendation_suppression).order(FollowRecommendationSuppression.arel_table[:id].desc).to_a
+ Account.includes(:account_stat).joins(:follow_recommendation_suppression).order(FollowRecommendationSuppression.arel_table[:id].desc)
else
- account_ids = redis.zrevrange("follow_recommendations:#{@language}", 0, -1).map(&:to_i)
- accounts = Account.where(id: account_ids).index_by(&:id)
-
- account_ids.filter_map { |id| accounts[id] }
+ Account.includes(:account_stat).joins(:follow_recommendation).merge(FollowRecommendation.localized(@language).order(rank: :desc))
end
end
end
diff --git a/app/models/follow_recommendation_mute.rb b/app/models/follow_recommendation_mute.rb
new file mode 100644
index 00000000000..d166d0a6206
--- /dev/null
+++ b/app/models/follow_recommendation_mute.rb
@@ -0,0 +1,26 @@
+# frozen_string_literal: true
+
+# == Schema Information
+#
+# Table name: follow_recommendation_mutes
+#
+# id :bigint(8) not null, primary key
+# account_id :bigint(8) not null
+# target_account_id :bigint(8) not null
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+class FollowRecommendationMute < ApplicationRecord
+ belongs_to :account
+ belongs_to :target_account, class_name: 'Account'
+
+ validates :target_account, uniqueness: { scope: :account_id }
+
+ after_commit :invalidate_follow_recommendations_cache
+
+ private
+
+ def invalidate_follow_recommendations_cache
+ Rails.cache.delete("follow_recommendations/#{account_id}")
+ end
+end
diff --git a/app/models/follow_recommendation_suppression.rb b/app/models/follow_recommendation_suppression.rb
index e261a2fe359..59e94dc6b3a 100644
--- a/app/models/follow_recommendation_suppression.rb
+++ b/app/models/follow_recommendation_suppression.rb
@@ -11,19 +11,5 @@
#
class FollowRecommendationSuppression < ApplicationRecord
- include Redisable
-
belongs_to :account
-
- after_commit :remove_follow_recommendations, on: :create
-
- private
-
- def remove_follow_recommendations
- redis.pipelined do |pipeline|
- I18n.available_locales.each do |locale|
- pipeline.zrem("follow_recommendations:#{locale}", account_id)
- end
- end
- end
end
diff --git a/app/models/follow_request.rb b/app/models/follow_request.rb
index a5c23e09d47..c13cc718d8f 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
@@ -45,10 +45,15 @@ class FollowRequest < ApplicationRecord
end
before_validation :set_uri, only: :create
+ after_commit :invalidate_follow_recommendations_cache
private
def set_uri
self.uri = ActivityPub::TagManager.instance.generate_uri_for(self) if uri.nil?
end
+
+ def invalidate_follow_recommendations_cache
+ Rails.cache.delete("follow_recommendations/#{account_id}")
+ end
end
diff --git a/app/models/form/admin_settings.rb b/app/models/form/admin_settings.rb
index 7be026d85ff..cb37a522174 100644
--- a/app/models/form/admin_settings.rb
+++ b/app/models/form/admin_settings.rb
@@ -84,7 +84,7 @@ class Form::AdminSettings
KEYS.each do |key|
define_method(key) do
- return instance_variable_get("@#{key}") if instance_variable_defined?("@#{key}")
+ return instance_variable_get(:"@#{key}") if instance_variable_defined?(:"@#{key}")
stored_value = if UPLOAD_KEYS.include?(key)
SiteUpload.where(var: key).first_or_initialize(var: key)
@@ -94,12 +94,12 @@ class Form::AdminSettings
Setting.public_send(key)
end
- instance_variable_set("@#{key}", stored_value)
+ instance_variable_set(:"@#{key}", stored_value)
end
end
UPLOAD_KEYS.each do |key|
- define_method("#{key}=") do |file|
+ define_method(:"#{key}=") do |file|
value = public_send(key)
value.file = file
rescue Mastodon::DimensionsValidationError => e
@@ -114,13 +114,13 @@ class Form::AdminSettings
return false unless errors.empty? && valid?
KEYS.each do |key|
- next unless instance_variable_defined?("@#{key}")
+ next unless instance_variable_defined?(:"@#{key}")
if UPLOAD_KEYS.include?(key)
public_send(key).save
else
setting = Setting.where(var: key).first_or_initialize(var: key)
- setting.update(value: typecast_value(key, instance_variable_get("@#{key}")))
+ setting.update(value: typecast_value(key, instance_variable_get(:"@#{key}")))
end
end
end
@@ -139,9 +139,9 @@ class Form::AdminSettings
def validate_site_uploads
UPLOAD_KEYS.each do |key|
- next unless instance_variable_defined?("@#{key}")
+ next unless instance_variable_defined?(:"@#{key}")
- upload = instance_variable_get("@#{key}")
+ upload = instance_variable_get(:"@#{key}")
next if upload.valid?
upload.errors.each do |error|
diff --git a/app/models/form/import.rb b/app/models/form/import.rb
index 29a2975c7be..fc83d9c58c1 100644
--- a/app/models/form/import.rb
+++ b/app/models/form/import.rb
@@ -43,14 +43,19 @@ class Form::Import
validate :validate_data
def guessed_type
- return :muting if csv_headers_match?('Hide notifications')
- return :following if csv_headers_match?('Show boosts') || csv_headers_match?('Notify on new posts') || csv_headers_match?('Languages')
- return :following if file_name_matches?('follows') || file_name_matches?('following_accounts')
- return :blocking if file_name_matches?('blocks') || file_name_matches?('blocked_accounts')
- return :muting if file_name_matches?('mutes') || file_name_matches?('muted_accounts')
- return :domain_blocking if file_name_matches?('domain_blocks') || file_name_matches?('blocked_domains')
- return :bookmarks if file_name_matches?('bookmarks')
- return :lists if file_name_matches?('lists')
+ if csv_headers_match?('Hide notifications') || file_name_matches?('mutes') || file_name_matches?('muted_accounts')
+ :muting
+ elsif csv_headers_match?('Show boosts') || csv_headers_match?('Notify on new posts') || csv_headers_match?('Languages') || file_name_matches?('follows') || file_name_matches?('following_accounts')
+ :following
+ elsif file_name_matches?('blocks') || file_name_matches?('blocked_accounts')
+ :blocking
+ elsif file_name_matches?('domain_blocks') || file_name_matches?('blocked_domains')
+ :domain_blocking
+ elsif file_name_matches?('bookmarks')
+ :bookmarks
+ elsif file_name_matches?('lists')
+ :lists
+ end
end
# Whether the uploaded CSV file seems to correspond to a different import type than the one selected
@@ -64,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 00000000000..43c97d7108b
--- /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 17ee0cbb1e0..0fd31c8097c 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 1f40e5725eb..7ff6a15f5dc 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/mute.rb b/app/models/mute.rb
index 8fc5422624a..1d18b30eea9 100644
--- a/app/models/mute.rb
+++ b/app/models/mute.rb
@@ -23,11 +23,16 @@ class Mute < ApplicationRecord
validates :account_id, uniqueness: { scope: :target_account_id }
- after_commit :remove_blocking_cache
+ after_commit :invalidate_blocking_cache
+ after_commit :invalidate_follow_recommendations_cache
private
- def remove_blocking_cache
+ def invalidate_blocking_cache
Rails.cache.delete("exclude_account_ids_for:#{account_id}")
end
+
+ def invalidate_follow_recommendations_cache
+ Rails.cache.delete("follow_recommendations/#{account_id}")
+ end
end
diff --git a/app/models/notification.rb b/app/models/notification.rb
index 60f834a6333..54212d675f1 100644
--- a/app/models/notification.rb
+++ b/app/models/notification.rb
@@ -111,7 +111,7 @@ class Notification < ApplicationRecord
# Instead of using the usual `includes`, manually preload each type.
# If polymorphic associations are loaded with the usual `includes`, other types of associations will be loaded more.
- ActiveRecord::Associations::Preloader.new(records: grouped_notifications, associations: associations)
+ ActiveRecord::Associations::Preloader.new(records: grouped_notifications, associations: associations).call
end
unique_target_statuses = notifications.filter_map(&:target_status).uniq
diff --git a/app/models/poll.rb b/app/models/poll.rb
index 72f04f00a72..cc4184f80a4 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/preview_cards_status.rb b/app/models/preview_cards_status.rb
index 341771e4d30..5ff63520554 100644
--- a/app/models/preview_cards_status.rb
+++ b/app/models/preview_cards_status.rb
@@ -4,14 +4,12 @@
#
# Table name: preview_cards_statuses
#
-# preview_card_id :bigint(8) not null
-# status_id :bigint(8) not null
+# preview_card_id :bigint(8) not null, primary key
+# status_id :bigint(8) not null, primary key
# url :string
#
class PreviewCardsStatus < ApplicationRecord
- # Composite primary keys are not properly supported in Rails. However,
- # we shouldn't need this anyway...
- self.primary_key = nil
+ self.primary_key = [:preview_card_id, :status_id]
belongs_to :preview_card
belongs_to :status
diff --git a/app/models/privacy_policy.rb b/app/models/privacy_policy.rb
index 36cbf188228..c0d6e1b76d9 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 c565362cc64..38da26d7b75 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 7f5f0d9a9a1..c67180d3baf 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 3bdc6ffb40c..6af7a98c6df 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 eb7159dc61e..e3d41ccedaf 100644
--- a/app/models/status.rb
+++ b/app/models/status.rb
@@ -59,8 +59,10 @@ 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
+ 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
+ end
has_many :favourites, inverse_of: :status, dependent: :destroy
has_many :bookmarks, inverse_of: :status, dependent: :destroy
@@ -82,8 +84,7 @@ class Status < ApplicationRecord
has_and_belongs_to_many :tags
- # Because of a composite primary key, the `dependent` option cannot be used on this association
- has_one :preview_cards_status, inverse_of: :status # rubocop:disable Rails/HasManyOrHasOneDependent
+ has_one :preview_cards_status, inverse_of: :status, dependent: :delete
has_one :notification, as: :activity, dependent: :destroy
has_one :status_stat, inverse_of: :status, dependent: nil
@@ -109,8 +110,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|
@@ -146,7 +145,6 @@ class Status < ApplicationRecord
# The `prepend: true` option below ensures this runs before
# the `dependent: destroy` callbacks remove relevant records
before_destroy :unlink_from_conversations!, prepend: true
- before_destroy :reset_preview_card!
cache_associated :application,
:media_attachments,
@@ -265,7 +263,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
@@ -279,7 +277,9 @@ class Status < ApplicationRecord
def ordered_media_attachments
if ordered_media_attachment_ids.nil?
- media_attachments
+ # NOTE: sort Ruby-side to avoid hitting the database when the status is
+ # not persisted to database yet
+ media_attachments.sort_by(&:id)
else
map = media_attachments.index_by(&:id)
ordered_media_attachment_ids.filter_map { |media_attachment_id| map[media_attachment_id] }
diff --git a/app/models/tag.rb b/app/models/tag.rb
index 46e55d74f9d..f2168ae9047 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 a1574c02ad8..70c24336f35 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 322d3aec5cd..540e266427f 100644
--- a/app/policies/status_policy.rb
+++ b/app/policies/status_policy.rb
@@ -57,7 +57,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/account_relationships_presenter.rb b/app/presenters/account_relationships_presenter.rb
index 5d2b5435dd2..8482ef54da4 100644
--- a/app/presenters/account_relationships_presenter.rb
+++ b/app/presenters/account_relationships_presenter.rb
@@ -5,8 +5,9 @@ class AccountRelationshipsPresenter
:muting, :requested, :requested_by, :domain_blocking,
:endorsed, :account_note
- def initialize(account_ids, current_account_id, **options)
- @account_ids = account_ids.map { |a| a.is_a?(Account) ? a.id : a.to_i }
+ def initialize(accounts, current_account_id, **options)
+ @accounts = accounts.to_a
+ @account_ids = @accounts.pluck(:id)
@current_account_id = current_account_id
@following = cached[:following].merge(Account.following_map(@uncached_account_ids, @current_account_id))
@@ -16,10 +17,11 @@ class AccountRelationshipsPresenter
@muting = cached[:muting].merge(Account.muting_map(@uncached_account_ids, @current_account_id))
@requested = cached[:requested].merge(Account.requested_map(@uncached_account_ids, @current_account_id))
@requested_by = cached[:requested_by].merge(Account.requested_by_map(@uncached_account_ids, @current_account_id))
- @domain_blocking = cached[:domain_blocking].merge(Account.domain_blocking_map(@uncached_account_ids, @current_account_id))
@endorsed = cached[:endorsed].merge(Account.endorsed_map(@uncached_account_ids, @current_account_id))
@account_note = cached[:account_note].merge(Account.account_note_map(@uncached_account_ids, @current_account_id))
+ @domain_blocking = domain_blocking_map
+
cache_uncached!
@following.merge!(options[:following_map] || {})
@@ -36,6 +38,31 @@ class AccountRelationshipsPresenter
private
+ def domain_blocking_map
+ target_domains = @accounts.pluck(:domain).compact.uniq
+ blocks_by_domain = {}
+
+ # Fetch from cache
+ cache_keys = target_domains.map { |domain| domain_cache_key(domain) }
+ Rails.cache.read_multi(*cache_keys).each do |key, blocking|
+ blocks_by_domain[key.last] = blocking
+ end
+
+ uncached_domains = target_domains - blocks_by_domain.keys
+
+ # Read uncached values from database
+ AccountDomainBlock.where(account_id: @current_account_id, domain: uncached_domains).pluck(:domain).each do |domain|
+ blocks_by_domain[domain] = true
+ end
+
+ # Write database reads to cache
+ to_cache = uncached_domains.to_h { |domain| [domain_cache_key(domain), blocks_by_domain[domain]] }
+ Rails.cache.write_multi(to_cache, expires_in: 1.day)
+
+ # Return formatted value
+ @accounts.each_with_object({}) { |account, h| h[account.id] = blocks_by_domain[account.domain] }
+ end
+
def cached
return @cached if defined?(@cached)
@@ -47,28 +74,23 @@ class AccountRelationshipsPresenter
muting: {},
requested: {},
requested_by: {},
- domain_blocking: {},
endorsed: {},
account_note: {},
}
- @uncached_account_ids = []
+ @uncached_account_ids = @account_ids.uniq
- @account_ids.each do |account_id|
- maps_for_account = Rails.cache.read("relationship:#{@current_account_id}:#{account_id}")
-
- if maps_for_account.is_a?(Hash)
- @cached.deep_merge!(maps_for_account)
- else
- @uncached_account_ids << account_id
- end
+ cache_ids = @account_ids.map { |account_id| relationship_cache_key(account_id) }
+ Rails.cache.read_multi(*cache_ids).each do |key, maps_for_account|
+ @cached.deep_merge!(maps_for_account)
+ @uncached_account_ids.delete(key.last)
end
@cached
end
def cache_uncached!
- @uncached_account_ids.each do |account_id|
+ to_cache = @uncached_account_ids.to_h do |account_id|
maps_for_account = {
following: { account_id => following[account_id] },
followed_by: { account_id => followed_by[account_id] },
@@ -77,12 +99,21 @@ class AccountRelationshipsPresenter
muting: { account_id => muting[account_id] },
requested: { account_id => requested[account_id] },
requested_by: { account_id => requested_by[account_id] },
- domain_blocking: { account_id => domain_blocking[account_id] },
endorsed: { account_id => endorsed[account_id] },
account_note: { account_id => account_note[account_id] },
}
- Rails.cache.write("relationship:#{@current_account_id}:#{account_id}", maps_for_account, expires_in: 1.day)
+ [relationship_cache_key(account_id), maps_for_account]
end
+
+ Rails.cache.write_multi(to_cache, expires_in: 1.day)
+ end
+
+ def domain_cache_key(domain)
+ ['exclude_domains', @current_account_id, domain]
+ end
+
+ def relationship_cache_key(account_id)
+ ['relationship', @current_account_id, account_id]
end
end
diff --git a/app/presenters/annual_reports_presenter.rb b/app/presenters/annual_reports_presenter.rb
new file mode 100644
index 00000000000..001e1d37b06
--- /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/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb
index a8af45990f5..9f7921461d7 100644
--- a/app/serializers/initial_state_serializer.rb
+++ b/app/serializers/initial_state_serializer.rb
@@ -13,29 +13,7 @@ class InitialStateSerializer < ActiveModel::Serializer
has_one :role, serializer: REST::RoleSerializer
def meta
- store = {
- streaming_api_base_url: Rails.configuration.x.streaming_api_base_url,
- access_token: object.token,
- locale: I18n.locale,
- domain: Addressable::IDNA.to_unicode(instance_presenter.domain),
- title: instance_presenter.title,
- admin: object.admin&.id&.to_s,
- search_enabled: Chewy.enabled?,
- repository: Mastodon::Version.repository,
- source_url: instance_presenter.source_url,
- version: instance_presenter.version,
- limited_federation_mode: Rails.configuration.x.limited_federation_mode,
- mascot: instance_presenter.mascot&.file&.url,
- profile_directory: Setting.profile_directory,
- trends_enabled: Setting.trends,
- registrations_open: Setting.registrations_mode != 'none' && !Rails.configuration.x.single_user_mode,
- timeline_preview: Setting.timeline_preview,
- activity_api_enabled: Setting.activity_api_enabled,
- single_user_mode: Rails.configuration.x.single_user_mode,
- trends_as_landing_page: Setting.trends_as_landing_page,
- status_page_url: Setting.status_page_url,
- sso_redirect: sso_redirect,
- }
+ store = default_meta_store
if object.current_account
store[:me] = object.current_account.id.to_s
@@ -86,8 +64,8 @@ class InitialStateSerializer < ActiveModel::Serializer
ActiveRecord::Associations::Preloader.new(
records: [object.current_account, object.admin, object.owner, object.disabled_account, object.moved_to_account].compact,
- associations: [:account_stat, :user, { moved_to_account: [:account_stat, :user] }]
- )
+ associations: [:account_stat, { user: :role, moved_to_account: [:account_stat, { user: :role }] }]
+ ).call
store[object.current_account.id.to_s] = serialized_account(object.current_account) if object.current_account
store[object.admin.id.to_s] = serialized_account(object.admin) if object.admin
@@ -108,6 +86,32 @@ class InitialStateSerializer < ActiveModel::Serializer
private
+ def default_meta_store
+ {
+ access_token: object.token,
+ activity_api_enabled: Setting.activity_api_enabled,
+ admin: object.admin&.id&.to_s,
+ domain: Addressable::IDNA.to_unicode(instance_presenter.domain),
+ limited_federation_mode: Rails.configuration.x.limited_federation_mode,
+ locale: I18n.locale,
+ mascot: instance_presenter.mascot&.file&.url,
+ profile_directory: Setting.profile_directory,
+ registrations_open: Setting.registrations_mode != 'none' && !Rails.configuration.x.single_user_mode,
+ repository: Mastodon::Version.repository,
+ search_enabled: Chewy.enabled?,
+ single_user_mode: Rails.configuration.x.single_user_mode,
+ source_url: instance_presenter.source_url,
+ sso_redirect: sso_redirect,
+ status_page_url: Setting.status_page_url,
+ streaming_api_base_url: Rails.configuration.x.streaming_api_base_url,
+ timeline_preview: Setting.timeline_preview,
+ title: instance_presenter.title,
+ trends_as_landing_page: Setting.trends_as_landing_page,
+ trends_enabled: Setting.trends,
+ version: instance_presenter.version,
+ }
+ end
+
def object_account_user
object.current_account.user
end
diff --git a/app/serializers/manifest_serializer.rb b/app/serializers/manifest_serializer.rb
index 501bb788e7c..1c1f7d0ad53 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 a026ff680e7..afe7722cb58 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 23b2fa514b9..8cee2712724 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 00000000000..1fb5ddb5c12
--- /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 00000000000..ea9572be1b4
--- /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 d7ed381e16b..fa926cd2872 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 7801e77d1fe..017b572718e 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 99d1b2bd62b..fdf939cfc34 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/account_search_service.rb b/app/services/account_search_service.rb
index b437ff47593..571a0fa57d6 100644
--- a/app/services/account_search_service.rb
+++ b/app/services/account_search_service.rb
@@ -23,6 +23,7 @@ class AccountSearchService < BaseService
query: {
bool: {
must: must_clauses,
+ must_not: must_not_clauses,
},
},
@@ -49,6 +50,10 @@ class AccountSearchService < BaseService
end
end
+ def must_not_clauses
+ []
+ end
+
def should_clauses
if @account && !@options[:following]
[boost_following_query]
@@ -218,7 +223,7 @@ class AccountSearchService < BaseService
records = query_builder.build.limit(limit_for_non_exact_results).offset(offset).objects.compact
- ActiveRecord::Associations::Preloader.new(records: records, associations: :account_stat)
+ ActiveRecord::Associations::Preloader.new(records: records, associations: [:account_stat, { user: :role }]).call
records
rescue Faraday::ConnectionFailed, Parslet::ParseFailed
diff --git a/app/services/activitypub/fetch_featured_collection_service.rb b/app/services/activitypub/fetch_featured_collection_service.rb
index d2bae08a0e4..89c3a1b6c03 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_status_service.rb b/app/services/activitypub/fetch_remote_status_service.rb
index a491b32b26d..e3a9b60b567 100644
--- a/app/services/activitypub/fetch_remote_status_service.rb
+++ b/app/services/activitypub/fetch_remote_status_service.rb
@@ -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}")
diff --git a/app/services/activitypub/fetch_replies_service.rb b/app/services/activitypub/fetch_replies_service.rb
index b5c7759ec5e..e2ecdef1659 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_status_update_service.rb b/app/services/activitypub/process_status_update_service.rb
index 2db0e80e7ce..fb2b33114ed 100644
--- a/app/services/activitypub/process_status_update_service.rb
+++ b/app/services/activitypub/process_status_update_service.rb
@@ -170,9 +170,9 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
as_array(@json['tag']).each do |tag|
if equals_or_includes?(tag['type'], 'Hashtag')
- @raw_tags << tag['name']
+ @raw_tags << tag['name'] if tag['name'].present?
elsif equals_or_includes?(tag['type'], 'Mention')
- @raw_mentions << tag['href']
+ @raw_mentions << tag['href'] if tag['href'].present?
elsif equals_or_includes?(tag['type'], 'Emoji')
@raw_emojis << tag
end
diff --git a/app/services/activitypub/synchronize_followers_service.rb b/app/services/activitypub/synchronize_followers_service.rb
index 7ccc9173094..f51d671a004 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/batched_remove_status_service.rb b/app/services/batched_remove_status_service.rb
index c54cc1d350d..de4ee16e910 100644
--- a/app/services/batched_remove_status_service.rb
+++ b/app/services/batched_remove_status_service.rb
@@ -11,7 +11,7 @@ class BatchedRemoveStatusService < BaseService
ActiveRecord::Associations::Preloader.new(
records: statuses,
associations: options[:skip_side_effects] ? :reblogs : [:account, :tags, reblogs: :account]
- )
+ ).call
statuses_and_reblogs = statuses.flat_map { |status| [status] + status.reblogs }
@@ -23,7 +23,7 @@ class BatchedRemoveStatusService < BaseService
ActiveRecord::Associations::Preloader.new(
records: statuses_with_account_conversations,
associations: [mentions: :account]
- )
+ ).call
statuses_with_account_conversations.each(&:unlink_from_conversations!)
diff --git a/app/services/fan_out_on_write_service.rb b/app/services/fan_out_on_write_service.rb
index f2a79c9fc96..50b414bc52b 100644
--- a/app/services/fan_out_on_write_service.rb
+++ b/app/services/fan_out_on_write_service.rb
@@ -74,6 +74,15 @@ class FanOutOnWriteService < BaseService
LocalNotificationWorker.push_bulk(mentions) do |mention|
[mention.account_id, mention.id, 'Mention', 'mention']
end
+
+ next unless update?
+
+ # This may result in duplicate update payloads, but this ensures clients
+ # are aware of edits to posts only appearing in mention notifications
+ # (e.g. private mentions or mentions by people they do not follow)
+ PushUpdateWorker.push_bulk(mentions.filter { |mention| subscribed_to_streaming_api?(mention.account_id) }) do |mention|
+ [mention.account_id, @status.id, "timeline:#{mention.account_id}:notifications", { 'update' => true }]
+ end
end
end
@@ -162,4 +171,8 @@ class FanOutOnWriteService < BaseService
def broadcastable?
@status.public_visibility? && !@status.reblog? && !@account.silenced?
end
+
+ def subscribed_to_streaming_api?(account_id)
+ redis.exists?("subscribed:timeline:#{account_id}") || redis.exists?("subscribed:timeline:#{account_id}:notifications")
+ end
end
diff --git a/app/services/favourite_service.rb b/app/services/favourite_service.rb
index 6fdc92a1731..ded50187f77 100644
--- a/app/services/favourite_service.rb
+++ b/app/services/favourite_service.rb
@@ -20,7 +20,7 @@ class FavouriteService < BaseService
Trends.statuses.register(status)
create_notification(favourite)
- bump_potential_friendship(account, status)
+ increment_statistics
favourite
end
@@ -37,11 +37,8 @@ class FavouriteService < BaseService
end
end
- def bump_potential_friendship(account, status)
+ def increment_statistics
ActivityTracker.increment('activity:interactions')
- return if account.following?(status.account_id)
-
- PotentialFriendshipTracker.record(account.id, status.account_id, :favourite)
end
def build_json(favourite)
diff --git a/app/services/fetch_oembed_service.rb b/app/services/fetch_oembed_service.rb
index 1ae592238ef..dc84b16b684 100644
--- a/app/services/fetch_oembed_service.rb
+++ b/app/services/fetch_oembed_service.rb
@@ -100,7 +100,7 @@ class FetchOEmbedService
end
def validate(oembed)
- oembed if oembed[:version].to_s == '1.0' && oembed[:type].present?
+ oembed if oembed.present? && oembed[:version].to_s == '1.0' && oembed[:type].present?
end
def html
diff --git a/app/services/keys/query_service.rb b/app/services/keys/query_service.rb
index 14c9d9205bf..33e13293f31 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/post_status_service.rb b/app/services/post_status_service.rb
index ea27f374e70..8aa43ab2452 100644
--- a/app/services/post_status_service.rb
+++ b/app/services/post_status_service.rb
@@ -178,9 +178,6 @@ class PostStatusService < BaseService
return if !@status.reply? || @account.id == @status.in_reply_to_account_id
ActivityTracker.increment('activity:interactions')
- return if @account.following?(@status.in_reply_to_account_id)
-
- PotentialFriendshipTracker.record(@account.id, @status.in_reply_to_account_id, :reply)
end
def status_attributes
diff --git a/app/services/reblog_service.rb b/app/services/reblog_service.rb
index 6ec09447445..cca79eced6a 100644
--- a/app/services/reblog_service.rb
+++ b/app/services/reblog_service.rb
@@ -33,7 +33,7 @@ class ReblogService < BaseService
ActivityPub::DistributionWorker.perform_async(reblog.id)
create_notification(reblog)
- bump_potential_friendship(account, reblog)
+ increment_statistics
reblog
end
@@ -43,19 +43,11 @@ 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 bump_potential_friendship(account, reblog)
+ def increment_statistics
ActivityTracker.increment('activity:interactions')
-
- return if account.following?(reblog.reblog.account_id)
-
- PotentialFriendshipTracker.record(account.id, reblog.reblog.account_id, :reblog)
end
def build_json(reblog)
diff --git a/app/services/update_account_service.rb b/app/services/update_account_service.rb
index 1bbcfce3ea1..78a846e03ea 100644
--- a/app/services/update_account_service.rb
+++ b/app/services/update_account_service.rb
@@ -21,7 +21,7 @@ class UpdateAccountService < BaseService
def authorize_all_follow_requests(account)
follow_requests = FollowRequest.where(target_account: account)
- follow_requests = follow_requests.preload(:account).select { |req| !req.account.silenced? }
+ follow_requests = follow_requests.preload(:account).reject { |req| req.account.silenced? }
AuthorizeFollowWorker.push_bulk(follow_requests, limit: 1_000) do |req|
[req.account_id, req.target_account_id]
end
diff --git a/app/services/vote_service.rb b/app/services/vote_service.rb
index 3e92a1690a6..878350388b8 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 a30a0c820d0..79437789435 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 4ed3376e8ba..89d83de5a2c 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 fa2bd223dc7..e725b4c0b87 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 85bac789f73..5702e4f6d27 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/accounts/_buttons.html.haml b/app/views/admin/accounts/_buttons.html.haml
index 6eb141abc9a..2aaca8962c1 100644
--- a/app/views/admin/accounts/_buttons.html.haml
+++ b/app/views/admin/accounts/_buttons.html.haml
@@ -6,8 +6,8 @@
%p.muted-hint= deletion_request.present? ? t('admin.accounts.suspension_reversible_hint_html', date: content_tag(:strong, l(deletion_request.due_at.to_date))) : t('admin.accounts.suspension_irreversible')
= link_to t('admin.accounts.undo_suspension'), unsuspend_admin_account_path(account.id), method: :post, class: 'button' if can?(:unsuspend, account)
= link_to t('admin.accounts.redownload'), redownload_admin_account_path(account.id), method: :post, class: 'button' if can?(:redownload, account) && account.suspension_origin_remote?
- - if deletion_request.present?
- = link_to t('admin.accounts.delete'), admin_account_path(account.id), method: :delete, class: 'button button--destructive', data: { confirm: t('admin.accounts.are_you_sure') } if can?(:destroy, account)
+ - if deletion_request.present? && can?(:destroy, account)
+ = link_to t('admin.accounts.delete'), admin_account_path(account.id), method: :delete, class: 'button button--destructive', data: { confirm: t('admin.accounts.are_you_sure') }
- else
.action-buttons
%div
@@ -15,8 +15,8 @@
= link_to t('admin.accounts.warn'), new_admin_account_action_path(account.id, type: 'none'), class: 'button' if can?(:warn, account)
- if account.user_disabled?
= link_to t('admin.accounts.enable'), enable_admin_account_path(account.id), method: :post, class: 'button' if can?(:enable, account.user)
- - else
- = link_to t('admin.accounts.disable'), new_admin_account_action_path(account.id, type: 'disable'), class: 'button' if can?(:disable, account.user)
+ - elsif can?(:disable, account.user)
+ = link_to t('admin.accounts.disable'), new_admin_account_action_path(account.id, type: 'disable'), class: 'button'
- if account.sensitized?
= link_to t('admin.accounts.undo_sensitized'), unsensitive_admin_account_path(account.id), method: :post, class: 'button' if can?(:unsensitive, account)
- elsif !account.local? || account.user_approved?
@@ -29,13 +29,13 @@
- if account.user_pending?
= link_to t('admin.accounts.approve'), approve_admin_account_path(account.id), method: :post, data: { confirm: t('admin.accounts.are_you_sure') }, class: 'button' if can?(:approve, account.user)
= link_to t('admin.accounts.reject'), reject_admin_account_path(account.id), method: :post, data: { confirm: t('admin.accounts.are_you_sure') }, class: 'button button--destructive' if can?(:reject, account.user)
- - unless account.user_confirmed?
- = link_to t('admin.accounts.confirm'), admin_account_confirmation_path(account.id), method: :post, class: 'button' if can?(:confirm, account.user)
- - if !account.local? || account.user_approved?
- = link_to t('admin.accounts.perform_full_suspension'), new_admin_account_action_path(account.id, type: 'suspend'), class: 'button' if can?(:suspend, account)
+ - if !account.user_confirmed? && can?(:confirm, account.user)
+ = link_to t('admin.accounts.confirm'), admin_account_confirmation_path(account.id), method: :post, class: 'button'
+ - if (!account.local? || account.user_approved?) && can?(:suspend, account)
+ = link_to t('admin.accounts.perform_full_suspension'), new_admin_account_action_path(account.id, type: 'suspend'), class: 'button'
%div
- if account.local?
- - if !account.memorial? && account.user_approved?
- = link_to t('admin.accounts.memorialize'), memorialize_admin_account_path(account.id), method: :post, data: { confirm: t('admin.accounts.are_you_sure') }, class: 'button button--destructive' if can?(:memorialize, account)
- - else
- = link_to t('admin.accounts.redownload'), redownload_admin_account_path(account.id), method: :post, class: 'button' if can?(:redownload, account)
+ - if !account.memorial? && account.user_approved? && can?(:memorialize, account)
+ = link_to t('admin.accounts.memorialize'), memorialize_admin_account_path(account.id), method: :post, data: { confirm: t('admin.accounts.are_you_sure') }, class: 'button button--destructive'
+ - elsif can?(:redownload, account)
+ = link_to t('admin.accounts.redownload'), redownload_admin_account_path(account.id), method: :post, class: 'button'
diff --git a/app/views/admin/accounts/_local_account.html.haml b/app/views/admin/accounts/_local_account.html.haml
index 4b361fc8d10..82197cda43d 100644
--- a/app/views/admin/accounts/_local_account.html.haml
+++ b/app/views/admin/accounts/_local_account.html.haml
@@ -47,8 +47,8 @@
- else
= t 'admin.accounts.security_measures.only_password'
%td
- - if account.user&.two_factor_enabled?
- = table_link_to 'unlock', t('admin.accounts.disable_two_factor_authentication'), admin_user_two_factor_authentication_path(account.user.id), method: :delete if can?(:disable_2fa, account.user)
+ - if account.user&.two_factor_enabled? && can?(:disable_2fa, account.user)
+ = table_link_to 'unlock', t('admin.accounts.disable_two_factor_authentication'), admin_user_two_factor_authentication_path(account.user.id), method: :delete
- if can?(:reset_password, account.user)
%tr
%td
diff --git a/app/views/admin/action_logs/_action_log.html.haml b/app/views/admin/action_logs/_action_log.html.haml
index a2fce2d1145..dcc33318092 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 7cb973c4b4e..f6a6e826670 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 fa1d950ad2b..3d31487733e 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/follow_recommendations/show.html.haml b/app/views/admin/follow_recommendations/show.html.haml
index dc65a72135b..9c2063d3c57 100644
--- a/app/views/admin/follow_recommendations/show.html.haml
+++ b/app/views/admin/follow_recommendations/show.html.haml
@@ -38,3 +38,5 @@
= nothing_here 'nothing-here--under-tabs'
- else
= render partial: 'account', collection: @accounts, locals: { f: f }
+
+= paginate @accounts
diff --git a/app/views/admin/reports/_media_attachments.html.haml b/app/views/admin/reports/_media_attachments.html.haml
index 8ecd7444d2a..3c52d691781 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 00000000000..27493f770dc
--- /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 00000000000..61430732eb3
--- /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 00000000000..83072bd36b0
--- /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 00000000000..74403e7678f
--- /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 00000000000..9fc5dc7471b
--- /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 4f21e4af6e7..50dcebb00cf 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 0cb82a1f86a..eaa9d9add09 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 b95a9b676bf..a75dc2d9fb3 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 10ad108eafa..8d5adaf3b98 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 40e7e12968b..19e5746ff63 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 28499a7c91c..2fa7db70c7b 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 f5ef4e97e40..48350f478e8 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 4cac7b51bd0..1e5aac2976a 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 7914e0157fa..89903581a2b 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 8cc2c856103..30e97a68c11 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 97c826d704e..713f77470d3 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 9cd38fb3714..78da809ed6d 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 62695b155e0..5f721388217 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 1244fd5eb36..c7210736703 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