+
{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 b3e9950e93..7d59d616d8 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 3fd8ff127d..6584364609 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 5e71da9d96..272a3cff00 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 36a8f58f8b..3e7ae2add0 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 bef14ea276..89a8ba560a 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 d3cc40c60c..d2ac2f8f27 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 a652272fad..e9d609a1ce 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 979bc9a701..5f2d151fae 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 98f622c293..479c9c9243 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 f94a8b79ff..e069515109 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 f57d868c7a..213ac090a7 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 b6e4fbb965..508caa2f42 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 39cd732419..5e83ab4e6d 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 9b6b49c3d6..c978a8b01f 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 87121b7c52..0d089bf8b8 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 7e96418329..73910f9b7c 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 d4bb2f82ba..9d0b0306c8 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 16bf5020c5..7d91670de0 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 4ecf48735e..3cd090e186 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 04fc43734f..5d6cac69d8 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 cf545e48c1..a6dd098bb2 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 02ce7120a3..068d228906 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 7745311be5..2cf1b4dbae 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 ddf34eee9a..5aef561179 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 537b8d0af1..907a918af0 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 4573f4ab9d..8816f18af6 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 f7cd1b3305..fdc57ac6d6 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 bbc8bcc759..2e4ea93177 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 a67aa6feed..5034c25541 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 26ed7add1e..cee18e7a51 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 6951d5cb0b..0b078d1ab3 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 e99de4d03a..7b98f99836 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 0000000000..ec27c8f60e
--- /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 45fafd15dc..a4c5296086 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 e2067cc460..66a7da6d15 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 03b656cc47..2d0fa3b7dd 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 2ec4a53bfd..d5f22d2ee1 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 ee6b44c884..855a27d057 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 91333c1a0a..0c7ef79cd8 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 08d7d49776..ffd01a547d 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 dda92c5c9a..d88a8c49c3 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 387941b5e4..42f4ca4efa 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 6da7d6cd8d..cada365fc8 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 9bef814178..31bca5652b 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 f2548c7d3a..6ddcfcdb21 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 0000000000..14b75a17f4
--- /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 8ecf36125d..1670d616fb 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 0000000000..5188d137e3
--- /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 c24d28eea9..a4f7268422 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 552debdb50..a9dd32c06c 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 0df1a5e753..dfece102bb 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 fa659506a1..920b80d5a6 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 3cb0565d0e..e0cc96d571 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 875ac3c195..8628cb38a2 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 e9d4b57de8..d9388c7048 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 189d792e38..1f6cc78a57 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 473690070f..396aebbdf2 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 46caf32b07..eae7f8faea 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 b940542677..4a0fd671db 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 ca08ca836e..e42f50aeff 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 e4bd9365a8..698b3da4c3 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 0000000000..ba99f5cd30
--- /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 a976d5907f..14fa09e973 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 63ec6275ba..b4426b4c45 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 371218bbfe..f7080842b7 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 b00cedc6fc..0059dd333b 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 75b75375b7..20231f0bbf 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 724e07ae76..8c1ff63376 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 4078a4c066..396a72ac45 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 0000000000..86e24a15fb
--- /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 295b420fd4..e38f8fd0ba 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 4750b1adc3..9bb4f59197 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 1739d4aa31..8da9853bee 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 3812057fb0..8660a3bc05 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 7faf279719..de085cf985 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 dc77f8f4e0..2eaeeaab55 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 e7975dd76e..bb009239d4 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 2d1616960a..22bb1bbfd2 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 5355f9935a..e6d881a986 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 f0c48236b9..eefa9c7298 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 0000000000..0967ef424b
--- /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 59379343b9..469930c3ed 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 59c834b950..90b663aea7 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 28dac9c2a2..b7563022a9 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 835f699b82..1b2eb17633 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 9115695d87..5b1203aeea 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 4ef2681f9a..559b05db72 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 86042a91e5..bfc674248b 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 35bb8f9929..b0348748a6 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 552c04d13f..4e4956e1a2 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 8a07da72d8..d6e6555b53 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 abbdf9b7da..42164f656b 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 ce9042e62b..6210c3d0b1 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 7c1956d95b..b1a242c751 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 f21c0ef57a..24a67247c0 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 c020dc3625..4437afa78c 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 0000000000..0967ef424b
--- /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 8eb09bb7cb..6811c158d4 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 6727f3e59a..17de9884e7 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 4d2452e12d..9dc3b5c1f9 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 58a14c0ed2..38e5f9cfbd 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 8fc3aff030..fee2cc3a98 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 026cc115c1..8f231c8c77 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 9ac90b407e..73a11b9573 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 5896a25b02..a585838cd2 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 1678fd7293..9b55e51b1f 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 263c707993..5890c4df4b 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 7ba66ae8c3..c365e67e07 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 f7270eb60a..5a9cc7220c 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 d5ecad7dbf..9053dcc9c0 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 e6b2509f66..f57bbb77b8 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 f145e1dcaa..cbb4933bc7 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 73a2afb916..368f26542c 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 2ba61839c7..dcca11b203 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 66193136c4..cee3a87bca 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 8a07ba774d..b1c60403e9 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 9f28f5ff53..e11aa78178 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 5fe8000731..d259be899b 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 09ade7d753..51839f427a 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 f1e71385a8..4859b82651 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 0000000000..1bf9d57a31
--- /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 0000000000..ce59194be0
--- /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 0000000000..f8bc9309ce
--- /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 0000000000..f8bc9309ce
--- /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 0000000000..deb3f8e0d9
--- /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 0000000000..0ae8ad841c
--- /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 0000000000..7648cf9755
--- /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 0000000000..7648cf9755
--- /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 0000000000..cba0c8b2a8
--- /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 0000000000..cba0c8b2a8
--- /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 0000000000..48c72546df
--- /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 0000000000..48c72546df
--- /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 0000000000..4bf73bb6da
--- /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 0000000000..4bf73bb6da
--- /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 0000000000..63215a3e09
--- /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 0000000000..63215a3e09
--- /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 0000000000..20e9889ae8
--- /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 0000000000..20e9889ae8
--- /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 0000000000..3a7b4d2e8b
--- /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 0000000000..a8226a6d87
--- /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 0000000000..f5231f925a
--- /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 0000000000..67dffd6857
--- /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 0000000000..3df7275bf6
--- /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 0000000000..a6d893fed4
--- /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 0000000000..f7d476f253
--- /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 0000000000..8504fbfdad
--- /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 0000000000..8e8e6a1ee6
--- /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 0000000000..c0da419cd0
--- /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 0000000000..1655d12bf3
--- /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 0000000000..1655d12bf3
--- /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 0000000000..3f7df315a5
--- /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 0000000000..3f7df315a5
--- /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 0000000000..53783746ae
--- /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 0000000000..53783746ae
--- /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 0000000000..4100467365
--- /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 0000000000..4100467365
--- /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 0000000000..5a60c58e77
--- /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 0000000000..5a60c58e77
--- /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 0000000000..dabf094503
--- /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 0000000000..d875c84491
--- /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 0000000000..59d1abb8bc
--- /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 0000000000..560d174b9b
--- /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 0000000000..40fe4497f5
--- /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 0000000000..763f517d1d
--- /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 0000000000..07998b29d6
--- /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 0000000000..309a4f5b38
--- /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 0000000000..1655d12bf3
--- /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 0000000000..1655d12bf3
--- /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 0000000000..8f05228c40
--- /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 0000000000..8f05228c40
--- /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 0000000000..6a171ea822
--- /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 0000000000..6a171ea822
--- /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 0000000000..278e79978e
--- /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 0000000000..cb81b11302
--- /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 0000000000..b18db1df8e
--- /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 0000000000..cf7e98405a
--- /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 0000000000..0c8f273596
--- /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 0000000000..0c8f273596
--- /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 0000000000..146f838a27
--- /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 0000000000..f21c2786ca
--- /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 0000000000..e44a94d90b
--- /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 0000000000..cb4c810e08
--- /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 0000000000..940c878a7d
--- /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 0000000000..940c878a7d
--- /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 0000000000..d9d45a6c6a
--- /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 0000000000..d9d45a6c6a
--- /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 0000000000..c0d6cef5c5
--- /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 0000000000..dbc2c937e4
--- /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 0000000000..e254416380
--- /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 0000000000..d700ddea7b
--- /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 0000000000..0232e17ad0
--- /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 0000000000..05606f4e59
--- /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 0000000000..12d137ca89
--- /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 0000000000..4f2a10be59
--- /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 0000000000..319a0681c4
--- /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 0000000000..319a0681c4
--- /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 0000000000..6aa8b50823
--- /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 0000000000..cca8ab1955
--- /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 0000000000..0815d78418
--- /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 0000000000..20b9e3984e
--- /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 0000000000..60309dce5e
--- /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 0000000000..824c70b7c4
--- /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 0000000000..4881453501
--- /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 0000000000..4881453501
--- /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 0000000000..2f427e91c8
--- /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 0000000000..2f427e91c8
--- /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 0000000000..9480d0fb92
--- /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 0000000000..46cafa7680
--- /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 0000000000..e777154892
--- /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 0000000000..e777154892
--- /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 0000000000..b10ad1921a
--- /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 0000000000..b10ad1921a
--- /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 0000000000..0730efefca
--- /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 0000000000..dbfe0e0409
--- /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 0000000000..856a0ed8a5
--- /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 0000000000..1389a10e0a
--- /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 0000000000..42895ffd13
--- /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 0000000000..42895ffd13
--- /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 0000000000..fc9a8074de
--- /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 0000000000..95bc792fc3
--- /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 0000000000..73ef1efc10
--- /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 0000000000..a3f6b246c8
--- /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 0000000000..3fa7f65288
--- /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 0000000000..39b592bf04
--- /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 0000000000..e68aec8321
--- /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 0000000000..3b22224b83
--- /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 0000000000..6465b90222
--- /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 0000000000..52f0fcc9c4
--- /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 0000000000..1e9e79de4d
--- /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 0000000000..1e9e79de4d
--- /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 0000000000..6095ba77ee
--- /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 0000000000..e1abd900a7
--- /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 0000000000..aed5740db3
--- /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 0000000000..552da6658d
--- /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 0000000000..64b038f268
--- /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 0000000000..ada92f2cf5
--- /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 0000000000..a7a6bc801b
--- /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 0000000000..a7a6bc801b
--- /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 0000000000..c1b09d8026
--- /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 0000000000..c1b09d8026
--- /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 0000000000..eb661f2823
--- /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 0000000000..eb661f2823
--- /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 0000000000..74c9573eaf
--- /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 0000000000..74c9573eaf
--- /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 0000000000..ef0d0521eb
--- /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 0000000000..ef0d0521eb
--- /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 0000000000..f133479502
--- /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 0000000000..817c782f05
--- /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 0000000000..5a6b0d0a8d
--- /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 0000000000..6876cd42da
--- /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 0000000000..df417f5ff7
--- /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 0000000000..b84efc73b1
--- /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 0000000000..cb2231e634
--- /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 0000000000..1736e085d0
--- /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 0000000000..ce76d537b3
--- /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 0000000000..ce76d537b3
--- /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 0000000000..ecaaf37f1e
--- /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 0000000000..ecaaf37f1e
--- /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 0000000000..887f8bd498
--- /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 0000000000..887f8bd498
--- /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 0000000000..639d77af36
--- /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 0000000000..40ce5b65e5
--- /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 0000000000..44b5f4c606
--- /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 0000000000..8fe45d09af
--- /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 0000000000..e21fbd88df
--- /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 0000000000..d98cf8d942
--- /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 0000000000..b3d12d4d98
--- /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 0000000000..a0acf63747
--- /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 0000000000..dd5771215e
--- /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 0000000000..fd9006a6d2
--- /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 0000000000..c3727d3f57
--- /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 0000000000..238299e606
--- /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 0000000000..d645695673
--- /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 0000000000..1479cb2255
--- /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 0000000000..7c04a97faf
--- /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 0f3b84549d..7b5723091c 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 1c2386f02d..ae607f484a 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 0000000000..bb4899b701
--- /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 54e10616d2..a60045d7be 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 92d00cae8b..a2cbb494b4 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 3777fccbfb..3c75854d9b 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 ac8a831215..3cf5561ca3 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 dcfab6bd01..d7f8586dd2 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 a65f35e7b1..3f538d08d6 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 6714b24268..28dad81da5 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 2106b529d6..5b89e7f25d 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 3d646da239..8a472d75b1 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 c7247c3a57..fec0c10ddb 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 0b7220b21d..60e7d62245 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 8a26e611ca..939fca3364 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 0000000000..a5bbb8fc4f
--- /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 0000000000..cf2a05c84e
--- /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 07d1929555..8a08eca9f6 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 fedfa39dee..85195f4c39 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 45f5fc5bf2..cfc2b8788b 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 1df05b120e..2ddc8e8b07 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 0000000000..cf4297f2a4
--- /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 0000000000..ea9ef366df
--- /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 0000000000..af5e854c22
--- /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 0000000000..e3e8a7c90b
--- /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 0000000000..85ff1ff86e
--- /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 0000000000..9fe4698ee5
--- /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 0000000000..1ccb622676
--- /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 0000000000..a144bac0d1
--- /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 0000000000..488dacb1b4
--- /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 0000000000..112e5591ce
--- /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 0000000000..fc12a6f1f4
--- /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 13a9da828f..32ccb0b13c 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 966e41f03b..210f37cea0 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 d938269829..e17b45d667 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 15b98dc57e..2a3683c499 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 53767486ff..38a177e645 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 eda3da2c29..0aebb13fce 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 a96612cab0..bb031986d6 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 7d81316227..21b3d3aa58 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 0dd37483e2..f551f69db8 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 f5bc203465..0000000000
--- 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 5f128af734..8d4120868d 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 3ad57cc1ea..0000000000
--- 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 45b50cb379..34f6199ec0 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 36fb0e80fb..17e42e3ec3 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 1af5188c65..74f49aa558 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 ab7ea4092f..e558195290 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 14fdeda1ca..9e34c87c30 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 35f0b5fee1..3312183d47 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 5eecfed104..4eb38ec340 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 2af2a3a41d..3b1a085cb8 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 4119944e59..05e1f943ca 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 af1e6a68dc..753935d6af 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 55d34e85c3..42b1c49538 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 d1774e62fa..25c8b04d50 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 0000000000..28d0ab99b3
--- /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 651041d675..d68f285e4f 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 d169394f11..0000000000
--- 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 6185732b4b..4b7275bf7a 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 0000000000..733c5f0bbc
--- /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 504d26a8bd..d83f5e3773 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 0d8835b83c..2a21d09a8b 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 d413cb386d..f581af74e8 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 c5d6dd62e1..e630570020 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 f1290ad01a..395056b76f 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 11156ebab3..5476542a5a 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 810e471849..406fb2aba2 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 31902ae21a..2bb6fed5ad 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 0ea26e628d..5b05c31e03 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 b02b9bd461..077e5d57b1 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 4cdbdeb473..3b7db1fcef 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 0d9359f7e7..c32a8d62c6 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 bd8b6f4eb9..8382c91599 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 6d1d1b8cc3..113bfda230 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 97b1c63bf3..1c9b443959 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 ed7a8dda15..870cc71974 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 0f4fd78cbf..c8120c2395 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 3158b3b79a..979d0b822e 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 ce9597b4d1..47ada7ac23 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 ff23f8fcc4..a05db099a8 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 60e90208db..40be59420a 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 7c36aa8b0b..ea8aa4787c 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 108f5c5d51..4d1598dcad 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 2fab975698..62a02eba5a 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 0000000000..d166d0a620
--- /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 e261a2fe35..59e94dc6b3 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 a5c23e09d4..c13cc718d8 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 7be026d85f..cb37a52217 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 29a2975c7b..fc83d9c58c 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 0000000000..43c97d7108
--- /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 17ee0cbb1e..0fd31c8097 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 1f40e5725e..7ff6a15f5d 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 8fc5422624..1d18b30eea 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 60f834a633..54212d675f 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 72f04f00a7..cc4184f80a 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 341771e4d3..5ff6352055 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 36cbf18822..c0d6e1b76d 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 c565362cc6..38da26d7b7 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 7f5f0d9a9a..c67180d3ba 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 3bdc6ffb40..6af7a98c6d 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 eb7159dc61..e3d41cceda 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 46e55d74f9..f2168ae904 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 a1574c02ad..70c24336f3 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 322d3aec5c..540e266427 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 5d2b5435dd..8482ef54da 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 0000000000..001e1d37b0
--- /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 a8af45990f..9f7921461d 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 501bb788e7..1c1f7d0ad5 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 a026ff680e..afe7722cb5 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 23b2fa514b..8cee271272 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 0000000000..1fb5ddb5c1
--- /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 0000000000..ea9572be1b
--- /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 d7ed381e16..fa926cd287 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 7801e77d1f..017b572718 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 99d1b2bd62..fdf939cfc3 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 b437ff4759..571a0fa57d 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 d2bae08a0e..89c3a1b6c0 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 a491b32b26..e3a9b60b56 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 b5c7759ec5..e2ecdef165 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 2db0e80e7c..fb2b33114e 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 7ccc917309..f51d671a00 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 c54cc1d350..de4ee16e91 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 f2a79c9fc9..50b414bc52 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 6fdc92a173..ded50187f7 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 1ae592238e..dc84b16b68 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 14c9d9205b..33e13293f3 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 ea27f374e7..8aa43ab245 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 6ec0944744..cca79eced6 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 1bbcfce3ea..78a846e03e 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 3e92a1690a..878350388b 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 a30a0c820d..7943778943 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 4ed3376e8b..89d83de5a2 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 fa2bd223dc..e725b4c0b8 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 85bac789f7..5702e4f6d2 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 6eb141abc9..2aaca8962c 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 4b361fc8d1..82197cda43 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 a2fce2d114..dcc3331809 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 7cb973c4b4..f6a6e82667 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 fa1d950ad2..3d31487733 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 dc65a72135..9c2063d3c5 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 8ecd7444d2..3c52d69178 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 0000000000..27493f770d
--- /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 0000000000..61430732eb
--- /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 0000000000..83072bd36b
--- /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 0000000000..74403e7678
--- /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 0000000000..9fc5dc7471
--- /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 4f21e4af6e..50dcebb00c 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 0cb82a1f86..eaa9d9add0 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 b95a9b676b..a75dc2d9fb 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 10ad108eaf..8d5adaf3b9 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 40e7e12968..19e5746ff6 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 28499a7c91..2fa7db70c7 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 f5ef4e97e4..48350f478e 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 4cac7b51bd..1e5aac2976 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 7914e0157f..89903581a2 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 8cc2c85610..30e97a68c1 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 97c826d704..713f77470d 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 9cd38fb371..78da809ed6 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 62695b155e..5f72138821 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 1244fd5eb3..c721073670 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