- {!showResults && }
+ {!showResults && }
{!showResults && <> · >}
{showResults && !this.props.disabled && <> · >}
{votesCount}
diff --git a/app/javascript/mastodon/components/status_content.jsx b/app/javascript/mastodon/components/status_content.jsx
index 3316be8350603c..4950c896f97e7e 100644
--- a/app/javascript/mastodon/components/status_content.jsx
+++ b/app/javascript/mastodon/components/status_content.jsx
@@ -245,7 +245,7 @@ class StatusContent extends PureComponent {
);
const poll = !!status.get('poll') && (
-
+
);
if (this.props.onClick) {
diff --git a/app/javascript/mastodon/containers/poll_container.js b/app/javascript/mastodon/containers/poll_container.js
index 8482345431673f..db378cba7c2b6a 100644
--- a/app/javascript/mastodon/containers/poll_container.js
+++ b/app/javascript/mastodon/containers/poll_container.js
@@ -2,6 +2,7 @@ import { connect } from 'react-redux';
import { debounce } from 'lodash';
+import { openModal } from 'mastodon/actions/modal';
import { fetchPoll, vote } from 'mastodon/actions/polls';
import Poll from 'mastodon/components/poll';
@@ -17,6 +18,17 @@ const mapDispatchToProps = (dispatch, { pollId }) => ({
onVote (choices) {
dispatch(vote(pollId, choices));
},
+
+ onInteractionModal (type, status) {
+ dispatch(openModal({
+ modalType: 'INTERACTION',
+ modalProps: {
+ type,
+ accountId: status.getIn(['account', 'id']),
+ url: status.get('uri'),
+ },
+ }));
+ }
});
const mapStateToProps = (state, { pollId }) => ({
diff --git a/app/javascript/mastodon/features/interaction_modal/index.jsx b/app/javascript/mastodon/features/interaction_modal/index.jsx
index 723e27ae1c7857..446cc2586a03a2 100644
--- a/app/javascript/mastodon/features/interaction_modal/index.jsx
+++ b/app/javascript/mastodon/features/interaction_modal/index.jsx
@@ -9,6 +9,7 @@ import { connect } from 'react-redux';
import { throttle, escapeRegExp } from 'lodash';
+import InsertChartIcon from '@/material-icons/400-24px/insert_chart.svg?react';
import PersonAddIcon from '@/material-icons/400-24px/person_add.svg?react';
import RepeatIcon from '@/material-icons/400-24px/repeat.svg?react';
import ReplyIcon from '@/material-icons/400-24px/reply.svg?react';
@@ -340,7 +341,7 @@ class InteractionModal extends React.PureComponent {
static propTypes = {
displayNameHtml: PropTypes.string,
url: PropTypes.string,
- type: PropTypes.oneOf(['reply', 'reblog', 'favourite', 'follow']),
+ type: PropTypes.oneOf(['reply', 'reblog', 'favourite', 'follow', 'vote']),
onSignupClick: PropTypes.func.isRequired,
signupUrl: PropTypes.string.isRequired,
};
@@ -377,6 +378,11 @@ class InteractionModal extends React.PureComponent {
title = ;
actionDescription = ;
break;
+ case 'vote':
+ icon = ;
+ title = ;
+ actionDescription = ;
+ break;
}
let signupButton;
diff --git a/app/javascript/mastodon/features/status/components/detailed_status.tsx b/app/javascript/mastodon/features/status/components/detailed_status.tsx
index 0bf1bfda8bf8b2..5811efb1907f99 100644
--- a/app/javascript/mastodon/features/status/components/detailed_status.tsx
+++ b/app/javascript/mastodon/features/status/components/detailed_status.tsx
@@ -152,7 +152,7 @@ export const DetailedStatus: React.FC<{
media = ;
} else if (status.get('media_attachments').size > 0) {
if (
- ['image', 'gifv'].includes(
+ ['image', 'gifv', 'unknown'].includes(
status.getIn(['media_attachments', 0, 'type']) as string,
) ||
status.get('media_attachments').size > 1
diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json
index 6d8290f8a13294..54ed1cb8c85b5a 100644
--- a/app/javascript/mastodon/locales/ar.json
+++ b/app/javascript/mastodon/locales/ar.json
@@ -301,7 +301,6 @@
"filter_modal.select_filter.subtitle": "استخدم فئة موجودة أو قم بإنشاء فئة جديدة",
"filter_modal.select_filter.title": "تصفية هذا المنشور",
"filter_modal.title.status": "تصفية منشور",
- "filter_warning.matches_filter": "يطابق عامل التصفية \"{title}\"",
"filtered_notifications_banner.title": "الإشعارات المصفاة",
"firehose.all": "الكل",
"firehose.local": "هذا الخادم",
diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json
index f2a0c22a771550..e5b1168bea00b2 100644
--- a/app/javascript/mastodon/locales/ast.json
+++ b/app/javascript/mastodon/locales/ast.json
@@ -214,6 +214,7 @@
"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",
+ "hints.threads.replies_may_be_missing": "Ye posible que falten les rempuestes d'otros sirvidores.",
"home.column_settings.show_reblogs": "Amosar los artículos compartíos",
"home.column_settings.show_replies": "Amosar les rempuestes",
"home.pending_critical_update.body": "¡Anueva'l sirvidor de Mastodon namás que puedas!",
diff --git a/app/javascript/mastodon/locales/be.json b/app/javascript/mastodon/locales/be.json
index eb5cd5053dd5a9..97d4dc4b4c9f98 100644
--- a/app/javascript/mastodon/locales/be.json
+++ b/app/javascript/mastodon/locales/be.json
@@ -98,6 +98,8 @@
"block_modal.title": "Заблакіраваць карыстальніка?",
"block_modal.you_wont_see_mentions": "Вы не ўбачыце паведамленняў са згадваннем карыстальніка.",
"boost_modal.combo": "Націсніце {combo}, каб прапусціць наступным разам",
+ "boost_modal.reblog": "Пашырыць допіс?",
+ "boost_modal.undo_reblog": "Прыбраць допіс?",
"bundle_column_error.copy_stacktrace": "Скапіраваць справаздачу пра памылку",
"bundle_column_error.error.body": "Запытаная старонка не можа быць адлюстраваная. Гэта магло стацца праз хібу ў нашым кодзе, або праз памылку сумяшчальнасці з браўзерам.",
"bundle_column_error.error.title": "Халера!",
@@ -156,6 +158,7 @@
"compose_form.poll.duration": "Працягласць апытання",
"compose_form.poll.multiple": "Множны выбар",
"compose_form.poll.option_placeholder": "Варыянт {number}",
+ "compose_form.poll.single": "Адзін варыянт",
"compose_form.poll.switch_to_multiple": "Змяніце апытанне, каб дазволіць некалькі варыянтаў адказу",
"compose_form.poll.switch_to_single": "Змяніце апытанне, каб дазволіць адзіны варыянт адказу",
"compose_form.poll.type": "Стыль",
@@ -194,6 +197,7 @@
"confirmations.unfollow.title": "Адпісацца ад карыстальніка?",
"content_warning.hide": "Схаваць допіс",
"content_warning.show": "Усё адно паказаць",
+ "content_warning.show_more": "Паказаць усё роўна",
"conversation.delete": "Выдаліць размову",
"conversation.mark_as_read": "Адзначыць прачытаным",
"conversation.open": "Прагледзець размову",
@@ -219,6 +223,8 @@
"domain_block_modal.they_cant_follow": "Ніхто з гэтага сервера не зможа падпісацца на вас.",
"domain_block_modal.they_wont_know": "Карыстальнік не будзе ведаць пра блакіроўку.",
"domain_block_modal.title": "Заблакіраваць дамен?",
+ "domain_block_modal.you_will_lose_num_followers": "Вы страціце {followersCount, plural, one {{followersCountDisplay} падпісчыка} other {{followersCountDisplay} падпісчыкаў}} і {followingCount, plural, one {{followingCountDisplay} чалавека, на якога падпісаны} other {{followingCountDisplay} людзей, на якіх падпісаны}}.",
+ "domain_block_modal.you_will_lose_relationships": "Вы страціце ўсех падпісчыкаў і людзей на якіх падпісаны на гэтым.",
"domain_block_modal.you_wont_see_posts": "Вы не ўбачыце допісаў і апавяшчэнняў ад карыстальнікаў з гэтага сервера.",
"domain_pill.activitypub_lets_connect": "Ён дазваляе вам узаемадзейнічаць не толькі з карыстальнікамі Mastodon, але і розных іншых сацыяльных платформ.",
"domain_pill.activitypub_like_language": "ActivityPub — гэта мова, на якой Mastodon размаўляе з іншымі сацыяльнымі сеткамі.",
@@ -300,7 +306,7 @@
"filter_modal.select_filter.subtitle": "Скарыстайцеся існуючай катэгорыяй або стварыце новую",
"filter_modal.select_filter.title": "Фільтраваць гэты допіс",
"filter_modal.title.status": "Фільтраваць допіс",
- "filter_warning.matches_filter": "Адпавядае фільтру \"{title}\"",
+ "filter_warning.matches_filter": "Адпавядае фільтру \"{title}\"",
"filtered_notifications_banner.pending_requests": "Ад {count, plural, =0 {# людзей якіх} one {# чалавека якіх} few {# чалавек якіх} many {# людзей якіх} other {# чалавека якіх}} вы магчыма ведаеце",
"filtered_notifications_banner.title": "Адфільтраваныя апавяшчэнні",
"firehose.all": "Усе",
@@ -350,6 +356,9 @@
"hashtag.follow": "Падпісацца на хэштэг",
"hashtag.unfollow": "Адпісацца ад хэштэга",
"hashtags.and_other": "…і яшчэ {count, plural, other {#}}",
+ "hints.profiles.followers_may_be_missing": "Падпісчыкі гэтага профілю могуць адсутнічаць.",
+ "hints.profiles.follows_may_be_missing": "Падпіскі гэтага профілю могуць адсутнічаць.",
+ "hints.profiles.posts_may_be_missing": "Некаторыя допісы гэтага профілю могуць адсутнічаць.",
"home.column_settings.show_reblogs": "Паказваць пашырэнні",
"home.column_settings.show_replies": "Паказваць адказы",
"home.hide_announcements": "Схаваць аб'явы",
@@ -434,6 +443,7 @@
"lists.subheading": "Вашыя спісы",
"load_pending": "{count, plural, one {# новы элемент} few {# новыя элементы} many {# новых элементаў} other {# новых элементаў}}",
"loading_indicator.label": "Загрузка…",
+ "media_gallery.hide": "Схаваць",
"moved_to_account_banner.text": "Ваш уліковы запіс {disabledAccount} зараз адключаны таму што вы перанесены на {movedToAccount}.",
"mute_modal.hide_from_notifications": "Схаваць з апавяшчэнняў",
"mute_modal.hide_options": "Схаваць опцыі",
@@ -479,11 +489,13 @@
"notification.favourite": "Ваш допіс упадабаны {name}",
"notification.follow": "{name} падпісаўся на вас",
"notification.follow_request": "{name} адправіў запыт на падпіску",
+ "notification.follow_request.name_and_others": "{name} і {count, plural, one {# іншы} many {# іншых} other {# іншых}} запыталіся падпісацца на вас",
"notification.label.mention": "Згадванне",
"notification.label.private_mention": "Асабістае згадванне",
"notification.label.private_reply": "Асабісты адказ",
"notification.label.reply": "Адказ",
"notification.mention": "Згадванне",
+ "notification.mentioned_you": "{name} згадаў вас",
"notification.moderation-warning.learn_more": "Даведацца больш",
"notification.moderation_warning": "Вы атрымалі папярэджанне аб мадэрацыі",
"notification.moderation_warning.action_delete_statuses": "Некаторыя вашыя допісы былі выдаленыя.",
@@ -496,6 +508,7 @@
"notification.own_poll": "Ваша апытанне скончылася",
"notification.poll": "Апытанне, дзе вы прынялі ўдзел, скончылася",
"notification.reblog": "{name} пашырыў ваш допіс",
+ "notification.reblog.name_and_others_with_link": "{name} і {count, plural, one {# іншы} many {# іншых} other {# іншых}} абагулілі ваш допіс",
"notification.relationships_severance_event": "Страціў сувязь з {name}",
"notification.relationships_severance_event.account_suspension": "Адміністратар з {from} прыпыніў працу {target}, што азначае, што вы больш не можаце атрымліваць ад іх абнаўлення ці ўзаемадзейнічаць з імі.",
"notification.relationships_severance_event.domain_block": "Адміністратар з {from} заблакіраваў {target}, у тым ліку {followersCount} вашых падпісчыка(-аў) і {followingCount, plural, one {# уліковы запіс} few {# уліковыя запісы} many {# уліковых запісаў} other {# уліковых запісаў}}.",
@@ -525,6 +538,7 @@
"notifications.column_settings.filter_bar.category": "Панэль хуткай фільтрацыі",
"notifications.column_settings.follow": "Новыя падпісчыкі:",
"notifications.column_settings.follow_request": "Новыя запыты на падпіску:",
+ "notifications.column_settings.group": "Аб'яднаць апавяшчэнні ад падпісчыкаў",
"notifications.column_settings.mention": "Згадванні:",
"notifications.column_settings.poll": "Вынікі апытання:",
"notifications.column_settings.push": "Push-апавяшчэнні",
@@ -743,6 +757,7 @@
"status.edit": "Рэдагаваць",
"status.edited": "Апошняе рэдагаванне {date}",
"status.edited_x_times": "Рэдагавана {count, plural, one {{count} раз} few {{count} разы} many {{count} разоў} other {{count} разу}}",
+ "status.embed": "Атрымаць убудаваны код",
"status.favourite": "Упадабанае",
"status.favourites": "{count, plural, one {# упадабанае} few {# упадабаныя} many {# упадабаных} other {# упадабанага}}",
"status.filter": "Фільтраваць гэты допіс",
diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json
index 1f0c90efcb048b..575bc567241b6a 100644
--- a/app/javascript/mastodon/locales/br.json
+++ b/app/javascript/mastodon/locales/br.json
@@ -171,6 +171,7 @@
"confirmations.reply.message": "Respont bremañ a zilamo ar gemennadenn emaoc'h o skrivañ. Sur e oc'h e fell deoc'h kenderc'hel ganti?",
"confirmations.unfollow.confirm": "Diheuliañ",
"confirmations.unfollow.message": "Ha sur oc'h e fell deoc'h paouez da heuliañ {name} ?",
+ "content_warning.show_more": "Diskouez muioc'h",
"conversation.delete": "Dilemel ar gaozeadenn",
"conversation.mark_as_read": "Merkañ evel lennet",
"conversation.open": "Gwelout ar gaozeadenn",
@@ -249,6 +250,7 @@
"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",
+ "filter_warning.matches_filter": "A glot gant ar sil “{title}”",
"firehose.all": "Pep tra",
"firehose.local": "Ar servijer-mañ",
"firehose.remote": "Servijerioù all",
diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json
index 990a3ef97d373e..e5c8440236b684 100644
--- a/app/javascript/mastodon/locales/ca.json
+++ b/app/javascript/mastodon/locales/ca.json
@@ -158,6 +158,7 @@
"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.single": "Única opció",
"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.poll.type": "Estil",
@@ -196,6 +197,7 @@
"confirmations.unfollow.title": "Deixar de seguir l'usuari?",
"content_warning.hide": "Amaga la publicació",
"content_warning.show": "Mostra-la igualment",
+ "content_warning.show_more": "Mostra'n més",
"conversation.delete": "Elimina la conversa",
"conversation.mark_as_read": "Marca com a llegida",
"conversation.open": "Mostra la conversa",
@@ -304,7 +306,7 @@
"filter_modal.select_filter.subtitle": "Usa una categoria existent o crea'n una de nova",
"filter_modal.select_filter.title": "Filtra aquest tut",
"filter_modal.title.status": "Filtra un tut",
- "filter_warning.matches_filter": "Coincideix amb el filtre “{title}”",
+ "filter_warning.matches_filter": "Coincideix amb el filtre “{title}”",
"filtered_notifications_banner.pending_requests": "{count, plural, =0 {De ningú} one {D'una persona} other {De # persones}} que potser coneixes",
"filtered_notifications_banner.title": "Notificacions filtrades",
"firehose.all": "Tots",
@@ -384,6 +386,7 @@
"interaction_modal.description.follow": "Amb un compte a Mastodon, pots seguir a {name} per a rebre els seus tuts en la teva línia de temps d'Inici.",
"interaction_modal.description.reblog": "Amb un compte a Mastodon, pots impulsar aquest tut per a compartir-lo amb els teus seguidors.",
"interaction_modal.description.reply": "Amb un compte a Mastodon, pots respondre aquest tut.",
+ "interaction_modal.description.vote": "Si teniu compte a Mastodon, podeu votar aquesta enquesta.",
"interaction_modal.login.action": "Torna a l'inici",
"interaction_modal.login.prompt": "Domini del teu servidor domèstic, p.ex. mastodon.social",
"interaction_modal.no_account_yet": "No a Mastodon?",
@@ -395,6 +398,7 @@
"interaction_modal.title.follow": "Segueix {name}",
"interaction_modal.title.reblog": "Impulsa el tut de {name}",
"interaction_modal.title.reply": "Respon al tut de {name}",
+ "interaction_modal.title.vote": "Voteu l'enquesta de {name}",
"intervals.full.days": "{number, plural, one {# dia} other {# dies}}",
"intervals.full.hours": "{number, plural, one {# hora} other {# hores}}",
"intervals.full.minutes": "{number, plural, one {# minut} other {# minuts}}",
@@ -507,6 +511,7 @@
"notification.favourite": "{name} ha afavorit el teu tut",
"notification.favourite.name_and_others_with_link": "{name} i {count, plural, one {# altre} other {# altres}} han afavorit la vostra publicació",
"notification.follow": "{name} et segueix",
+ "notification.follow.name_and_others": "{name} i {count, plural, one {# altre} other {# altres}} us han seguit",
"notification.follow_request": "{name} ha sol·licitat de seguir-te",
"notification.follow_request.name_and_others": "{name} i {count, plural, one {# altre} other {# altres}} han demanat de seguir-vos",
"notification.label.mention": "Menció",
@@ -565,6 +570,7 @@
"notifications.column_settings.filter_bar.category": "Barra ràpida de filtres",
"notifications.column_settings.follow": "Nous seguidors:",
"notifications.column_settings.follow_request": "Noves sol·licituds de seguiment:",
+ "notifications.column_settings.group": "Agrupa",
"notifications.column_settings.mention": "Mencions:",
"notifications.column_settings.poll": "Resultats de l’enquesta:",
"notifications.column_settings.push": "Notificacions push",
diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json
index 723e8ae37d5e62..675f7a203ecbcd 100644
--- a/app/javascript/mastodon/locales/cy.json
+++ b/app/javascript/mastodon/locales/cy.json
@@ -13,7 +13,7 @@
"about.rules": "Rheolau'r gweinydd",
"account.account_note_header": "Nodyn personol",
"account.add_or_remove_from_list": "Ychwanegu neu Ddileu o'r rhestrau",
- "account.badges.bot": "Bot",
+ "account.badges.bot": "Awtomataidd",
"account.badges.group": "Grŵp",
"account.block": "Blocio @{name}",
"account.block_domain": "Blocio parth {domain}",
@@ -36,7 +36,7 @@
"account.followers.empty": "Does neb yn dilyn y defnyddiwr hwn eto.",
"account.followers_counter": "{count, plural, one {{counter} dilynwr} two {{counter} ddilynwr} other {{counter} dilynwyr}}",
"account.following": "Yn dilyn",
- "account.following_counter": "{count, plural, one {Yn dilyn {counter}} other {Yn dilyn {counter}}}",
+ "account.following_counter": "{count, plural, one {Yn dilyn {counter}} other {Yn dilyn {counter} arall}}",
"account.follows.empty": "Nid yw'r defnyddiwr hwn yn dilyn unrhyw un eto.",
"account.go_to_profile": "Mynd i'r proffil",
"account.hide_reblogs": "Cuddio hybiau gan @{name}",
@@ -62,7 +62,7 @@
"account.requested_follow": "Mae {name} wedi gwneud cais i'ch dilyn",
"account.share": "Rhannwch broffil @{name}",
"account.show_reblogs": "Dangos hybiau gan @{name}",
- "account.statuses_counter": "{count, plural, one {{counter} post} two {{counter} bost} few {{counter} phost} many {{counter} post} other {{counter} post}}",
+ "account.statuses_counter": "{count, plural, one {{counter} postiad} two {{counter} bostiad} few {{counter} phostiad} many {{counter} postiad} other {{counter} postiad}}",
"account.unblock": "Dadflocio @{name}",
"account.unblock_domain": "Dadflocio parth {domain}",
"account.unblock_short": "Dadflocio",
@@ -197,6 +197,7 @@
"confirmations.unfollow.title": "Dad-ddilyn defnyddiwr?",
"content_warning.hide": "Cuddio'r postiad",
"content_warning.show": "Dangos beth bynnag",
+ "content_warning.show_more": "Dangos rhagor",
"conversation.delete": "Dileu sgwrs",
"conversation.mark_as_read": "Nodi fel wedi'i ddarllen",
"conversation.open": "Gweld sgwrs",
@@ -305,8 +306,8 @@
"filter_modal.select_filter.subtitle": "Defnyddiwch gategori sy'n bodoli eisoes neu crëu un newydd",
"filter_modal.select_filter.title": "Hidlo'r postiad hwn",
"filter_modal.title.status": "Hidlo postiad",
- "filter_warning.matches_filter": "Yn cydweddu'r hidlydd “{title}”",
- "filtered_notifications_banner.pending_requests": "Gan {count, plural, =0 {no one} one {un person} two {# berson} few {# pherson} other {# person}} efallai eich bod yn eu hadnabod",
+ "filter_warning.matches_filter": "Yn cyd-fynd â'r hidlydd “ {title} ”",
+ "filtered_notifications_banner.pending_requests": "Oddi wrth {count, plural, =0 {no one} one {un person} two {# berson} few {# pherson} other {# person}} efallai eich bod yn eu hadnabod",
"filtered_notifications_banner.title": "Hysbysiadau wedi'u hidlo",
"firehose.all": "Popeth",
"firehose.local": "Gweinydd hwn",
@@ -349,12 +350,12 @@
"hashtag.column_settings.tag_mode.any": "Unrhyw un o'r rhain",
"hashtag.column_settings.tag_mode.none": "Dim o'r rhain",
"hashtag.column_settings.tag_toggle": "Include additional tags in this column",
- "hashtag.counter_by_accounts": "{cyfrif, lluosog, un {{counter} cyfranogwr} arall {{counter} cyfranogwr}}",
+ "hashtag.counter_by_accounts": "{count, plural, one {{counter} cyfranogwr} other {{counter} cyfranogwr}}",
"hashtag.counter_by_uses": "{count, plural, one {postiad {counter}} other {postiad {counter}}}",
- "hashtag.counter_by_uses_today": "{cyfrif, lluosog, un {{counter} postiad} arall {{counter} postiad}} heddiw",
+ "hashtag.counter_by_uses_today": "{count, plural, one {{counter} postiad} other {{counter} postiad}} heddiw",
"hashtag.follow": "Dilyn hashnod",
"hashtag.unfollow": "Dad-ddilyn hashnod",
- "hashtags.and_other": "…a {count, plural, other {# more}}",
+ "hashtags.and_other": "…a {count, plural, other {# arall}}",
"hints.profiles.followers_may_be_missing": "Mae'n bosibl bod dilynwyr y proffil hwn ar goll.",
"hints.profiles.follows_may_be_missing": "Mae'n bosibl bod dilynwyr y proffil hwn ar goll.",
"hints.profiles.posts_may_be_missing": "Mae'n bosibl bod rhai postiadau y proffil hwn ar goll.",
@@ -385,6 +386,7 @@
"interaction_modal.description.follow": "Gyda chyfrif ar Mastodon, gallwch ddilyn {name} i dderbyn eu postiadau yn eich ffrwd gartref.",
"interaction_modal.description.reblog": "Gyda chyfrif ar Mastodon, gallwch hybu'r postiad hwn i'w rannu â'ch dilynwyr.",
"interaction_modal.description.reply": "Gyda chyfrif ar Mastodon, gallwch ymateb i'r postiad hwn.",
+ "interaction_modal.description.vote": "Gyda chyfrif ar Mastodon, gallwch bleidleisio yn y bleidlais hon.",
"interaction_modal.login.action": "Mynd i'm ffrwd gartref",
"interaction_modal.login.prompt": "Parth eich gweinydd cartref, e.e. mastodon.social",
"interaction_modal.no_account_yet": "Dim ar Mastodon?",
@@ -396,6 +398,7 @@
"interaction_modal.title.follow": "Dilyn {name}",
"interaction_modal.title.reblog": "Hybu postiad {name}",
"interaction_modal.title.reply": "Ymateb i bostiad {name}",
+ "interaction_modal.title.vote": "Pleidleisiwch ym mhleidlais {name}",
"intervals.full.days": "{number, plural, one {# diwrnod} two {# ddiwrnod} other {# diwrnod}}",
"intervals.full.hours": "{number, plural, one {# awr} other {# o oriau}}",
"intervals.full.minutes": "{number, plural, one {# funud} other {# o funudau}}",
@@ -442,7 +445,7 @@
"limited_account_hint.title": "Mae'r proffil hwn wedi cael ei guddio gan gymedrolwyr {domain}.",
"link_preview.author": "Gan {name}",
"link_preview.more_from_author": "Mwy gan {name}",
- "link_preview.shares": "{count, plural, one {{counter} ostiad } two {{counter} bostiad } few {{counter} postiad} many {{counter} postiad} other {{counter} postiad}}",
+ "link_preview.shares": "{count, plural, one {{counter} postiad } two {{counter} bostiad } few {{counter} postiad} many {{counter} postiad} other {{counter} postiad}}",
"lists.account.add": "Ychwanegu at restr",
"lists.account.remove": "Tynnu o'r rhestr",
"lists.delete": "Dileu rhestr",
@@ -499,18 +502,18 @@
"navigation_bar.security": "Diogelwch",
"not_signed_in_indicator.not_signed_in": "Rhaid i chi fewngofnodi i weld yr adnodd hwn.",
"notification.admin.report": "Adroddwyd ar {name} {target}",
- "notification.admin.report_account": "{name} reported {count, plural, one {un postiad} other {# postiad}} from {target} for {category}",
- "notification.admin.report_account_other": "Adroddodd {name} {count, plural, one {un postiad} two {# bostiad} few {# phost} other {# postiad}} gan {target}",
+ "notification.admin.report_account": "Adroddodd {name} {count, plural, one {un postiad} other {# postiad}} gan {target} oherwydd {category}",
+ "notification.admin.report_account_other": "Adroddodd {name} {count, plural, one {un postiad} two {# bostiad} few {# postiad} other {# postiad}} gan {target}",
"notification.admin.report_statuses": "Adroddodd {name} {target} ar gyfer {category}",
"notification.admin.report_statuses_other": "Adroddodd {name} {target}",
"notification.admin.sign_up": "Cofrestrodd {name}",
- "notification.admin.sign_up.name_and_others": "Cofrestrodd {name} {count, plural, one {ac # arall} other {a # eraill}}",
+ "notification.admin.sign_up.name_and_others": "Cofrestrodd {name} {count, plural, one {ac # arall} other {a # arall}}",
"notification.favourite": "Ffafriodd {name} eich postiad",
- "notification.favourite.name_and_others_with_link": "Ffafriodd {name} a {count, plural, one {# arall} other {# eraill}} eich postiad",
+ "notification.favourite.name_and_others_with_link": "Ffafriodd {name} a {count, plural, one {# arall} other {# arall}} eich postiad",
"notification.follow": "Dilynodd {name} chi",
- "notification.follow.name_and_others": "Mae {name} a {count, plural, zero {}one {# other} two {# others} few {# others} many {# others} other {# others}} nawr yn eich dilyn chi",
+ "notification.follow.name_and_others": "Mae {name} a {count, plural, zero {}one {# arall} two {# arall} few {# arall} many {# others} other {# arall}} nawr yn eich dilyn chi",
"notification.follow_request": "Mae {name} wedi gwneud cais i'ch dilyn",
- "notification.follow_request.name_and_others": "Mae {name} a{count, plural, one {# other} other {# others}} wedi gofyn i'ch dilyn chi",
+ "notification.follow_request.name_and_others": "Mae {name} a{count, plural, one {# arall} other {# arall}} wedi gofyn i'ch dilyn chi",
"notification.label.mention": "Crybwyll",
"notification.label.private_mention": "Crybwyll preifat",
"notification.label.private_reply": "Ateb preifat",
@@ -529,7 +532,7 @@
"notification.own_poll": "Mae eich pleidlais wedi dod i ben",
"notification.poll": "Mae arolwg y gwnaethoch bleidleisio ynddo wedi dod i ben",
"notification.reblog": "Hybodd {name} eich post",
- "notification.reblog.name_and_others_with_link": "Mae {name} a {count, plural, one {# other} other {# others}} wedi hybu eich postiad",
+ "notification.reblog.name_and_others_with_link": "Mae {name} a {count, plural, one {# arall} other {# arall}} wedi hybu eich postiad",
"notification.relationships_severance_event": "Wedi colli cysylltiad â {name}",
"notification.relationships_severance_event.account_suspension": "Mae gweinyddwr o {from} wedi atal {target}, sy'n golygu na allwch dderbyn diweddariadau ganddynt mwyach na rhyngweithio â nhw.",
"notification.relationships_severance_event.domain_block": "Mae gweinyddwr o {from} wedi blocio {target}, gan gynnwys {followersCount} o'ch dilynwyr a {followingCount, plural, one {# cyfrif} other {# cyfrif}} arall rydych chi'n ei ddilyn.",
@@ -538,9 +541,9 @@
"notification.status": "{name} newydd ei bostio",
"notification.update": "Golygodd {name} bostiad",
"notification_requests.accept": "Derbyn",
- "notification_requests.accept_multiple": "{count, plural, one {Accept # request…} other {Accept # requests…}}",
- "notification_requests.confirm_accept_multiple.button": "{count, plural, one {Accept request} other {Accept requests}}",
- "notification_requests.confirm_accept_multiple.message": "Rydych ar fin derbyn {count, plural, one {one notification request} other {# notification requests}}. Ydych chi'n siŵr eich bod am barhau?",
+ "notification_requests.accept_multiple": "{count, plural, one {Derbyn # cais…} other {Derbyn # cais…}}",
+ "notification_requests.confirm_accept_multiple.button": "{count, plural, one {Derbyn cais} other {Derbyn cais}}",
+ "notification_requests.confirm_accept_multiple.message": "Rydych ar fin derbyn {count, plural, one {un cais hysbysiad} other {# cais hysbysiad}}. Ydych chi'n siŵr eich bod am barhau?",
"notification_requests.confirm_accept_multiple.title": "Derbyn ceisiadau hysbysu?",
"notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Diystyru cais} other {Diystyru ceisiadau}}",
"notification_requests.confirm_dismiss_multiple.message": "Rydych ar fin diystyru {count, plural, one {un cais hysbysu} other {# cais hysbysiad}}. Fyddwch chi ddim yn gallu cyrchu {count, plural, one {it} other {them}} yn hawdd eto. Ydych chi'n yn siŵr eich bod am fwrw ymlaen?",
@@ -689,7 +692,7 @@
"relative_time.minutes": "{number} munud",
"relative_time.seconds": "{number} eiliad",
"relative_time.today": "heddiw",
- "reply_indicator.attachments": "{count, plural, one {# attachment} arall {# attachments}}",
+ "reply_indicator.attachments": "{count, plural, one {# atodiad} other {# atodiad}}",
"reply_indicator.cancel": "Canslo",
"reply_indicator.poll": "Arolwg",
"report.block": "Blocio",
@@ -732,7 +735,7 @@
"report.thanks.title_actionable": "Diolch am adrodd, byddwn yn ymchwilio i hyn.",
"report.unfollow": "Dad-ddilyn @{name}",
"report.unfollow_explanation": "Rydych chi'n dilyn y cyfrif hwn. I beidio â gweld eu postiadau yn eich ffrwd gartref mwyach, dad-ddilynwch nhw.",
- "report_notification.attached_statuses": "{count, plural, one {{count} postiad} arall {{count} postiad}} atodwyd",
+ "report_notification.attached_statuses": "{count, plural, one {{count} postiad} other {{count} postiad}} wedi'i atodi",
"report_notification.categories.legal": "Cyfreithiol",
"report_notification.categories.legal_sentence": "cynnwys anghyfreithlon",
"report_notification.categories.other": "Arall",
@@ -812,7 +815,7 @@
"status.reblog": "Hybu",
"status.reblog_private": "Hybu i'r gynulleidfa wreiddiol",
"status.reblogged_by": "Hybodd {name}",
- "status.reblogs": "{count, plural, one {hwb} other {hwb}}",
+ "status.reblogs": "{count, plural, one {# hwb} other {# hwb}}",
"status.reblogs.empty": "Does neb wedi hybio'r post yma eto. Pan y bydd rhywun yn gwneud, byddent yn ymddangos yma.",
"status.redraft": "Dileu ac ailddrafftio",
"status.remove_bookmark": "Tynnu nod tudalen",
diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json
index 0227702d515d28..55315764479eb8 100644
--- a/app/javascript/mastodon/locales/da.json
+++ b/app/javascript/mastodon/locales/da.json
@@ -196,6 +196,7 @@
"confirmations.unfollow.title": "Følg ikke længere bruger?",
"content_warning.hide": "Skjul indlæg",
"content_warning.show": "Vis alligevel",
+ "content_warning.show_more": "Vis flere",
"conversation.delete": "Slet samtale",
"conversation.mark_as_read": "Markér som læst",
"conversation.open": "Vis samtale",
@@ -304,7 +305,7 @@
"filter_modal.select_filter.subtitle": "Vælg en eksisterende kategori eller opret en ny",
"filter_modal.select_filter.title": "Filtrér dette indlæg",
"filter_modal.title.status": "Filtrér et indlæg",
- "filter_warning.matches_filter": "Matcher filteret “{title}”",
+ "filter_warning.matches_filter": "Matcher filteret “{title}”",
"filtered_notifications_banner.pending_requests": "Fra {count, plural, =0 {ingen} one {én person} other {# personer}}, man måske kender",
"filtered_notifications_banner.title": "Filtrerede notifikationer",
"firehose.all": "Alle",
@@ -384,6 +385,7 @@
"interaction_modal.description.follow": "Med en konto på Mastodon kan du følge {name} for at modtage vedkommendes indlæg i dit hjemmefeed.",
"interaction_modal.description.reblog": "Med en konto på Mastodon kan dette indlæg fremhæves så det deles med egne følgere.",
"interaction_modal.description.reply": "Med en konto på Mastodon kan dette indlæg besvares.",
+ "interaction_modal.description.vote": "Med en konto på Mastodon kan man deltage i denne afstemning.",
"interaction_modal.login.action": "Gå til hjemmeserver",
"interaction_modal.login.prompt": "Hjemmeserverdomænet, f.eks. mastodon.social",
"interaction_modal.no_account_yet": "Ikke på Mastodon?",
@@ -395,6 +397,7 @@
"interaction_modal.title.follow": "Følg {name}",
"interaction_modal.title.reblog": "Boost {name}s indlæg",
"interaction_modal.title.reply": "Besvar {name}s indlæg",
+ "interaction_modal.title.vote": "Deltag i {name}s afstemning",
"intervals.full.days": "{number, plural, one {# dag} other {# dage}}",
"intervals.full.hours": "{number, plural, one {# time} other {# timer}}",
"intervals.full.minutes": "{number, plural, one {# minut} other {# minutter}}",
diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json
index 75672a60d6c378..1d59b1472448af 100644
--- a/app/javascript/mastodon/locales/de.json
+++ b/app/javascript/mastodon/locales/de.json
@@ -197,6 +197,7 @@
"confirmations.unfollow.title": "Profil entfolgen?",
"content_warning.hide": "Beitrag ausblenden",
"content_warning.show": "Trotzdem anzeigen",
+ "content_warning.show_more": "Mehr anzeigen",
"conversation.delete": "Unterhaltung löschen",
"conversation.mark_as_read": "Als gelesen markieren",
"conversation.open": "Unterhaltung anzeigen",
@@ -305,7 +306,7 @@
"filter_modal.select_filter.subtitle": "Einem vorhandenen Filter hinzufügen oder einen neuen erstellen",
"filter_modal.select_filter.title": "Diesen Beitrag filtern",
"filter_modal.title.status": "Beitrag per Filter ausblenden",
- "filter_warning.matches_filter": "Übereinstimmend mit dem Filter „{title}“",
+ "filter_warning.matches_filter": "Übereinstimmend mit dem Filter „{title}“",
"filtered_notifications_banner.pending_requests": "Von {count, plural, =0 {keinem, den} one {einer Person, die} other {# Personen, die}} du möglicherweise kennst",
"filtered_notifications_banner.title": "Gefilterte Benachrichtigungen",
"firehose.all": "Alles",
@@ -385,6 +386,7 @@
"interaction_modal.description.follow": "Mit einem Mastodon-Konto kannst du {name} folgen, um die Beiträge auf deiner Startseite zu sehen.",
"interaction_modal.description.reblog": "Mit einem Mastodon-Konto kannst du die Reichweite dieses Beitrags erhöhen, indem du ihn mit deinen Followern teilst.",
"interaction_modal.description.reply": "Mit einem Mastodon-Konto kannst du auf diesen Beitrag antworten.",
+ "interaction_modal.description.vote": "Mit einem Mastodon-Konto kannst du an dieser Umfrage teilnehmen.",
"interaction_modal.login.action": "Zurück zur Startseite",
"interaction_modal.login.prompt": "Adresse deines Servers, z. B. mastodon.social",
"interaction_modal.no_account_yet": "Nicht auf Mastodon?",
@@ -396,6 +398,7 @@
"interaction_modal.title.follow": "Folge {name}",
"interaction_modal.title.reblog": "Beitrag von {name} teilen",
"interaction_modal.title.reply": "Auf Beitrag von {name} antworten",
+ "interaction_modal.title.vote": "An der Umfrage von {name} teilnehmen",
"intervals.full.days": "{number, plural, one {# Tag} other {# Tage}}",
"intervals.full.hours": "{number, plural, one {# Stunde} other {# Stunden}}",
"intervals.full.minutes": "{number, plural, one {# Minute} other {# Minuten}}",
@@ -598,15 +601,15 @@
"notifications.policy.filter": "Filtern",
"notifications.policy.filter_hint": "An gefilterte Benachrichtigungen im Posteingang senden",
"notifications.policy.filter_limited_accounts_hint": "Durch Server-Moderator*innen eingeschränkt",
- "notifications.policy.filter_limited_accounts_title": "Moderierte Konten",
+ "notifications.policy.filter_limited_accounts_title": "moderierten Konten",
"notifications.policy.filter_new_accounts.hint": "Innerhalb {days, plural, one {des letzten Tages} other {der letzten # Tagen}} erstellt",
- "notifications.policy.filter_new_accounts_title": "Neuen Konten",
+ "notifications.policy.filter_new_accounts_title": "neuen Konten",
"notifications.policy.filter_not_followers_hint": "Einschließlich Profilen, die dir seit weniger als {days, plural, one {einem Tag} other {# Tagen}} folgen",
"notifications.policy.filter_not_followers_title": "Profilen, die mir nicht folgen",
"notifications.policy.filter_not_following_hint": "Bis du sie manuell genehmigst",
"notifications.policy.filter_not_following_title": "Profilen, denen ich nicht folge",
"notifications.policy.filter_private_mentions_hint": "Solange sie keine Antwort auf deine Erwähnung ist oder du dem Profil nicht folgst",
- "notifications.policy.filter_private_mentions_title": "Unerwünschten privaten Erwähnungen",
+ "notifications.policy.filter_private_mentions_title": "unerwünschten privaten Erwähnungen",
"notifications.policy.title": "Benachrichtigungen verwalten von …",
"notifications_permission_banner.enable": "Aktiviere Desktop-Benachrichtigungen",
"notifications_permission_banner.how_to_control": "Um Benachrichtigungen zu erhalten, wenn Mastodon nicht geöffnet ist, aktiviere die Desktop-Benachrichtigungen. Du kannst genau bestimmen, welche Arten von Interaktionen Desktop-Benachrichtigungen über die {icon} -Taste erzeugen, sobald diese aktiviert sind.",
diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json
index e362d9b89bb345..40517f8340901c 100644
--- a/app/javascript/mastodon/locales/el.json
+++ b/app/javascript/mastodon/locales/el.json
@@ -304,7 +304,6 @@
"filter_modal.select_filter.subtitle": "Χρησιμοποιήστε μια υπάρχουσα κατηγορία ή δημιουργήστε μια νέα",
"filter_modal.select_filter.title": "Φιλτράρισμα αυτής της ανάρτησης",
"filter_modal.title.status": "Φιλτράρισμα μιας ανάρτησης",
- "filter_warning.matches_filter": "Ταιριάζει με το φίλτρο “{title}”",
"filtered_notifications_banner.pending_requests": "Από {count, plural, =0 {κανένα} one {ένα άτομο} other {# άτομα}} που μπορεί να ξέρεις",
"filtered_notifications_banner.title": "Φιλτραρισμένες ειδοποιήσεις",
"firehose.all": "Όλα",
diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json
index 728ca89c73260b..d482ec21dd399a 100644
--- a/app/javascript/mastodon/locales/en-GB.json
+++ b/app/javascript/mastodon/locales/en-GB.json
@@ -304,7 +304,6 @@
"filter_modal.select_filter.subtitle": "Use an existing category or create a new one",
"filter_modal.select_filter.title": "Filter this post",
"filter_modal.title.status": "Filter a post",
- "filter_warning.matches_filter": "Matches filter “{title}”",
"filtered_notifications_banner.pending_requests": "From {count, plural, =0 {no one} one {one person} other {# people}} you may know",
"filtered_notifications_banner.title": "Filtered notifications",
"firehose.all": "All",
diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json
index ceac91cd463b55..45b67664d46384 100644
--- a/app/javascript/mastodon/locales/en.json
+++ b/app/javascript/mastodon/locales/en.json
@@ -388,6 +388,7 @@
"interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.",
"interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.",
"interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.",
+ "interaction_modal.description.vote": "With an account on Mastodon, you can vote in this poll.",
"interaction_modal.login.action": "Take me home",
"interaction_modal.login.prompt": "Domain of your home server, e.g. mastodon.social",
"interaction_modal.no_account_yet": "Not on Mastodon?",
@@ -399,6 +400,7 @@
"interaction_modal.title.follow": "Follow {name}",
"interaction_modal.title.reblog": "Boost {name}'s post",
"interaction_modal.title.reply": "Reply to {name}'s post",
+ "interaction_modal.title.vote": "Vote in {name}'s poll",
"intervals.full.days": "{number, plural, one {# day} other {# days}}",
"intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
"intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json
index 6beb5a9716542f..7abe0783c39f43 100644
--- a/app/javascript/mastodon/locales/eo.json
+++ b/app/javascript/mastodon/locales/eo.json
@@ -2,7 +2,7 @@
"about.blocks": "Administritaj serviloj",
"about.contact": "Kontakto:",
"about.disclaimer": "Mastodon estas libera, malfermitkoda programo kaj varmarko de la firmao Mastodon gGmbH.",
- "about.domain_blocks.no_reason_available": "Kialo ne disponebla",
+ "about.domain_blocks.no_reason_available": "Kialo ne disponeblas",
"about.domain_blocks.preamble": "Mastodon ĝenerale rajtigas vidi la enhavojn de uzantoj el aliaj serviloj en la fediverso, kaj komuniki kun ili. Jen la limigoj deciditaj de tiu ĉi servilo mem.",
"about.domain_blocks.silenced.explanation": "Vi ne ĝenerale vidos profilojn kaj enhavojn de ĉi tiu servilo, krom se vi eksplice trovas aŭ estas permesita de via sekvato.",
"about.domain_blocks.silenced.title": "Limigita",
@@ -197,6 +197,7 @@
"confirmations.unfollow.title": "Ĉu ĉesi sekvi uzanton?",
"content_warning.hide": "Kaŝi afiŝon",
"content_warning.show": "Montri ĉiukaze",
+ "content_warning.show_more": "Montri pli",
"conversation.delete": "Forigi konversacion",
"conversation.mark_as_read": "Marku kiel legita",
"conversation.open": "Vidi konversacion",
@@ -305,7 +306,7 @@
"filter_modal.select_filter.subtitle": "Uzu ekzistantan kategorion aŭ kreu novan",
"filter_modal.select_filter.title": "Filtri ĉi tiun afiŝon",
"filter_modal.title.status": "Filtri afiŝon",
- "filter_warning.matches_filter": "Filtrilo de kongruoj “{title}”",
+ "filter_warning.matches_filter": "Filtrilo de kongruoj “{title}”",
"filtered_notifications_banner.pending_requests": "El {count, plural, =0 {neniu} one {unu persono} other {# homoj}} vi eble konas",
"filtered_notifications_banner.title": "Filtritaj sciigoj",
"firehose.all": "Ĉiuj",
@@ -385,6 +386,7 @@
"interaction_modal.description.follow": "Kun konto ĉe Mastodon, vi povas sekvi {name} por ricevi iliajn afiŝojn en via hejma fluo.",
"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 afiŝo.",
+ "interaction_modal.description.vote": "Kun konto ĉe Mastodon, vi povas voĉdoni en ĉi tiu balotenketo.",
"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?",
@@ -396,6 +398,7 @@
"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}",
+ "interaction_modal.title.vote": "Voĉdonu en la balotenketo de {name}",
"intervals.full.days": "{number, plural, one {# tago} other {# tagoj}}",
"intervals.full.hours": "{number, plural, one {# horo} other {# horoj}}",
"intervals.full.minutes": "{number, plural, one {# minuto} other {# minutoj}}",
@@ -526,7 +529,7 @@
"notification.moderation_warning.action_sensitive": "Viaj afiŝoj estos markitaj kiel sentemaj ekde nun.",
"notification.moderation_warning.action_silence": "Via konto estis limigita.",
"notification.moderation_warning.action_suspend": "Via konto estas malakceptita.",
- "notification.own_poll": "Via enketo finiĝis",
+ "notification.own_poll": "Via balotenketo finiĝitis",
"notification.poll": "Balotenketo, en kiu vi voĉdonis, finiĝis",
"notification.reblog": "{name} diskonigis vian afiŝon",
"notification.reblog.name_and_others_with_link": "{name} kaj {count, plural, one {# alia} other {# aliaj}} diskonigis vian afiŝon",
@@ -567,7 +570,7 @@
"notifications.column_settings.filter_bar.category": "Rapida filtrila breto",
"notifications.column_settings.follow": "Novaj sekvantoj:",
"notifications.column_settings.follow_request": "Novaj petoj de sekvado:",
- "notifications.column_settings.group": "Grupo",
+ "notifications.column_settings.group": "Grupigi",
"notifications.column_settings.mention": "Mencioj:",
"notifications.column_settings.poll": "Balotenketaj rezultoj:",
"notifications.column_settings.push": "Puŝsciigoj",
@@ -658,7 +661,7 @@
"poll.total_people": "{count, plural, one {# homo} other {# homoj}}",
"poll.total_votes": "{count, plural, one {# voĉdono} other {# voĉdonoj}}",
"poll.vote": "Voĉdoni",
- "poll.voted": "Vi elektis por ĉi tiu respondo",
+ "poll.voted": "Vi voĉdonis por ĉi tiu respondo",
"poll.votes": "{votes, plural, one {# voĉdono} other {# voĉdonoj}}",
"poll_button.add_poll": "Aldoni balotenketon",
"poll_button.remove_poll": "Forigi balotenketon",
diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json
index 2410c278a6122b..e8302a4c75da44 100644
--- a/app/javascript/mastodon/locales/es-AR.json
+++ b/app/javascript/mastodon/locales/es-AR.json
@@ -197,6 +197,7 @@
"confirmations.unfollow.title": "¿Dejar de seguir al usuario?",
"content_warning.hide": "Ocultar mensaje",
"content_warning.show": "Mostrar de todos modos",
+ "content_warning.show_more": "Mostrar más",
"conversation.delete": "Eliminar conversación",
"conversation.mark_as_read": "Marcar como leída",
"conversation.open": "Ver conversación",
@@ -305,7 +306,7 @@
"filter_modal.select_filter.subtitle": "Usar una categoría existente o crear una nueva",
"filter_modal.select_filter.title": "Filtrar este mensaje",
"filter_modal.title.status": "Filtrar un mensaje",
- "filter_warning.matches_filter": "Coincide con el filtro “{title}”",
+ "filter_warning.matches_filter": "Coincide con el filtro “{title}”",
"filtered_notifications_banner.pending_requests": "De {count, plural, =0 {nadie} one {una persona} other {# personas}} que podrías conocer",
"filtered_notifications_banner.title": "Notificaciones filtradas",
"firehose.all": "Todos",
@@ -385,6 +386,7 @@
"interaction_modal.description.follow": "Con una cuenta en Mastodon, podés seguir a {name} para recibir sus mensajes en tu línea temporal principal.",
"interaction_modal.description.reblog": "Con una cuenta en Mastodon, podés adherir a este mensaje para compartirlo con tus propios seguidores.",
"interaction_modal.description.reply": "Con una cuenta en Mastodon, podés responder a este mensaje.",
+ "interaction_modal.description.vote": "Con una cuenta en Mastodon, podés votar en esta encuesta.",
"interaction_modal.login.action": "Llevame al comienzo",
"interaction_modal.login.prompt": "Dominio de su servidor de inicio, p. ej., mastodon.social",
"interaction_modal.no_account_yet": "¿No tenés cuenta en Mastodon?",
@@ -396,6 +398,7 @@
"interaction_modal.title.follow": "Seguir a {name}",
"interaction_modal.title.reblog": "Adherir al mensaje de {name}",
"interaction_modal.title.reply": "Responder al mensaje de {name}",
+ "interaction_modal.title.vote": "Votá en la encuesta de {name}",
"intervals.full.days": "{number, plural, one {# día} other {# días}}",
"intervals.full.hours": "{number, plural, one {# hora} other {# horas}}",
"intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}",
@@ -856,7 +859,7 @@
"upload_form.description": "Agregá una descripción para personas con dificultades visuales",
"upload_form.drag_and_drop.instructions": "Para recoger un archivo multimedia, pulsá la barra espaciadora o la tecla Enter. Mientras arrastrás, usá las teclas de flecha para mover el archivo multimedia en cualquier dirección. Volvé a pulsar la barra espaciadora o la tecla Enter para soltar el archivo multimedia en su nueva posición, o pulsá la tecla Escape para cancelar.",
"upload_form.drag_and_drop.on_drag_cancel": "Se canceló el arrastre. Se eliminó el archivo adjunto {item}.",
- "upload_form.drag_and_drop.on_drag_end": "El archivo adjunto {item} ha sido eliminado.",
+ "upload_form.drag_and_drop.on_drag_end": "El archivo adjunto {item} fue soltado.",
"upload_form.drag_and_drop.on_drag_over": "El archivo adjunto {item} fue movido.",
"upload_form.drag_and_drop.on_drag_start": "Se ha recogido el archivo adjunto {item}.",
"upload_form.edit": "Editar",
diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json
index 2f9d1feb0139c2..c73a64c4e0bda9 100644
--- a/app/javascript/mastodon/locales/es-MX.json
+++ b/app/javascript/mastodon/locales/es-MX.json
@@ -197,6 +197,7 @@
"confirmations.unfollow.title": "¿Dejar de seguir al usuario?",
"content_warning.hide": "Ocultar publicación",
"content_warning.show": "Mostrar de todos modos",
+ "content_warning.show_more": "Mostrar más",
"conversation.delete": "Borrar conversación",
"conversation.mark_as_read": "Marcar como leído",
"conversation.open": "Ver conversación",
@@ -305,7 +306,7 @@
"filter_modal.select_filter.subtitle": "Usar una categoría existente o crear una nueva",
"filter_modal.select_filter.title": "Filtrar esta publicación",
"filter_modal.title.status": "Filtrar una publicación",
- "filter_warning.matches_filter": "Coincide con el filtro “{title}”",
+ "filter_warning.matches_filter": "Coincide con el filtro “{title}”",
"filtered_notifications_banner.pending_requests": "De {count, plural, =0 {nadie} one {una persona} other {# people}} que puede que tú conozcas",
"filtered_notifications_banner.title": "Notificaciones filtradas",
"firehose.all": "Todas",
@@ -385,6 +386,7 @@
"interaction_modal.description.follow": "Con una cuenta en Mastodon, puedes seguir {name} para recibir sus publicaciones en tu fuente de inicio.",
"interaction_modal.description.reblog": "Con una cuenta en Mastodon, puedes impulsar esta publicación para compartirla con tus propios seguidores.",
"interaction_modal.description.reply": "Con una cuenta en Mastodon, puedes responder a esta publicación.",
+ "interaction_modal.description.vote": "Con una cuenta en Mastodon, puedes votar en esta encuesta.",
"interaction_modal.login.action": "Ir a Inicio",
"interaction_modal.login.prompt": "Dominio de tu servidor, por ejemplo: mastodon.social",
"interaction_modal.no_account_yet": "¿Aún no tienes cuenta en Mastodon?",
@@ -396,6 +398,7 @@
"interaction_modal.title.follow": "Seguir a {name}",
"interaction_modal.title.reblog": "Impulsar la publicación de {name}",
"interaction_modal.title.reply": "Responder la publicación de {name}",
+ "interaction_modal.title.vote": "Votar en la encuesta de {name}",
"intervals.full.days": "{number, plural, one {# día} other {# días}}",
"intervals.full.hours": "{number, plural, one {# hora} other {# horas}}",
"intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}",
diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json
index fa4159abce7710..dea526f8a0c218 100644
--- a/app/javascript/mastodon/locales/es.json
+++ b/app/javascript/mastodon/locales/es.json
@@ -197,6 +197,7 @@
"confirmations.unfollow.title": "¿Dejar de seguir al usuario?",
"content_warning.hide": "Ocultar publicación",
"content_warning.show": "Mostrar de todos modos",
+ "content_warning.show_more": "Mostrar más",
"conversation.delete": "Borrar conversación",
"conversation.mark_as_read": "Marcar como leído",
"conversation.open": "Ver conversación",
@@ -305,7 +306,7 @@
"filter_modal.select_filter.subtitle": "Usar una categoría existente o crear una nueva",
"filter_modal.select_filter.title": "Filtrar esta publicación",
"filter_modal.title.status": "Filtrar una publicación",
- "filter_warning.matches_filter": "Coincide con el filtro “{title}”",
+ "filter_warning.matches_filter": "Coincide con el filtro “{title}”",
"filtered_notifications_banner.pending_requests": "De {count, plural, =0 {nadie} one {una persona} other {# personas}} que puede que conozcas",
"filtered_notifications_banner.title": "Notificaciones filtradas",
"firehose.all": "Todas",
@@ -385,6 +386,7 @@
"interaction_modal.description.follow": "Con una cuenta en Mastodon, puedes seguir {name} para recibir sus publicaciones en tu línea temporal de inicio.",
"interaction_modal.description.reblog": "Con una cuenta en Mastodon, puedes impulsar esta publicación para compartirla con tus propios seguidores.",
"interaction_modal.description.reply": "Con una cuenta en Mastodon, puedes responder a esta publicación.",
+ "interaction_modal.description.vote": "Con una cuenta en Mastodon, puedes votar en esta encuesta.",
"interaction_modal.login.action": "Ir a Inicio",
"interaction_modal.login.prompt": "Dominio de tu servidor, por ejemplo mastodon.social",
"interaction_modal.no_account_yet": "¿Aún no tienes cuenta en Mastodon?",
@@ -396,6 +398,7 @@
"interaction_modal.title.follow": "Seguir a {name}",
"interaction_modal.title.reblog": "Impulsar la publicación de {name}",
"interaction_modal.title.reply": "Responder a la publicación de {name}",
+ "interaction_modal.title.vote": "Vota en la encuesta de {name}",
"intervals.full.days": "{number, plural, one {# día} other {# días}}",
"intervals.full.hours": "{number, plural, one {# hora} other {# horas}}",
"intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}",
@@ -567,7 +570,7 @@
"notifications.column_settings.filter_bar.category": "Barra de filtrado rápido",
"notifications.column_settings.follow": "Nuevos seguidores:",
"notifications.column_settings.follow_request": "Nuevas solicitudes de seguimiento:",
- "notifications.column_settings.group": "Grupo",
+ "notifications.column_settings.group": "Agrupar",
"notifications.column_settings.mention": "Menciones:",
"notifications.column_settings.poll": "Resultados de la votación:",
"notifications.column_settings.push": "Notificaciones push",
diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json
index 3c58548eb77892..83766411798d34 100644
--- a/app/javascript/mastodon/locales/et.json
+++ b/app/javascript/mastodon/locales/et.json
@@ -158,6 +158,7 @@
"compose_form.poll.duration": "Küsitluse kestus",
"compose_form.poll.multiple": "Mitu vastust",
"compose_form.poll.option_placeholder": "Valik {number}",
+ "compose_form.poll.single": "Üks valik",
"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",
@@ -196,6 +197,7 @@
"confirmations.unfollow.title": "Ei jälgi enam kasutajat?",
"content_warning.hide": "Peida postitus",
"content_warning.show": "Näita ikkagi",
+ "content_warning.show_more": "Näita rohkem",
"conversation.delete": "Kustuta vestlus",
"conversation.mark_as_read": "Märgi loetuks",
"conversation.open": "Vaata vestlust",
@@ -304,7 +306,7 @@
"filter_modal.select_filter.subtitle": "Kasuta olemasolevat kategooriat või loo uus",
"filter_modal.select_filter.title": "Filtreeri seda postitust",
"filter_modal.title.status": "Postituse filtreerimine",
- "filter_warning.matches_filter": "Sobib filtriga “{title}”",
+ "filter_warning.matches_filter": "Sobib filtriga “{title}”",
"filtered_notifications_banner.pending_requests": "{count, plural, =0 {Mitte üheltki inimeselt} one {Ühelt inimeselt} other {# inimeselt}}, keda võid teada",
"filtered_notifications_banner.title": "Filtreeritud teavitused",
"firehose.all": "Kõik",
@@ -384,6 +386,7 @@
"interaction_modal.description.follow": "Mastodoni kontoga saad jälgida kasutajat {name}, et tema postitusi oma koduvoos näha.",
"interaction_modal.description.reblog": "Mastodoni kontoga saad seda postitust levitada, jagades seda oma jälgijatele.",
"interaction_modal.description.reply": "Mastodoni kontoga saad sellele postitusele vastata.",
+ "interaction_modal.description.vote": "Mastodoni kontoga saad sellest küsitlusest osa võtta.",
"interaction_modal.login.action": "Vii mind avalehele",
"interaction_modal.login.prompt": "Sinu koduserveri domeen, näiteks mastodon.social",
"interaction_modal.no_account_yet": "Pole Mastodonis?",
@@ -395,6 +398,7 @@
"interaction_modal.title.follow": "Jälgi kontot {name}",
"interaction_modal.title.reblog": "Jaga {name} postitust",
"interaction_modal.title.reply": "Vasta kasutaja {name} postitusele",
+ "interaction_modal.title.vote": "Hääleta {name} küsitluses",
"intervals.full.days": "{number, plural, one {# päev} other {# päeva}}",
"intervals.full.hours": "{number, plural, one {# tund} other {# tundi}}",
"intervals.full.minutes": "{number, plural, one {# minut} other {# minutit}}",
@@ -507,6 +511,7 @@
"notification.favourite": "{name} märkis su postituse lemmikuks",
"notification.favourite.name_and_others_with_link": "{name} ja {count, plural, one {# veel} other {# teist}} märkis su postituse lemmikuks",
"notification.follow": "{name} alustas su jälgimist",
+ "notification.follow.name_and_others": "{name} ja veel {count, plural, one {# kasutaja} other {# kasutajat}} hakkas sind jälgima",
"notification.follow_request": "{name} soovib sind jälgida",
"notification.follow_request.name_and_others": "{name} ja {count, plural, one {# veel} other {# teist}} taotles sinu jälgimist",
"notification.label.mention": "Mainimine",
@@ -565,6 +570,7 @@
"notifications.column_settings.filter_bar.category": "Kiirfiltri riba",
"notifications.column_settings.follow": "Uued jälgijad:",
"notifications.column_settings.follow_request": "Uued jälgimistaotlused:",
+ "notifications.column_settings.group": "Grupp",
"notifications.column_settings.mention": "Mainimised:",
"notifications.column_settings.poll": "Küsitluse tulemused:",
"notifications.column_settings.push": "Push teated",
diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json
index cd8fbeefbc44b1..c8349dc6a1a0d8 100644
--- a/app/javascript/mastodon/locales/eu.json
+++ b/app/javascript/mastodon/locales/eu.json
@@ -302,7 +302,6 @@
"filter_modal.select_filter.subtitle": "Hautatu lehendik dagoen kategoria bat edo sortu berria",
"filter_modal.select_filter.title": "Iragazi bidalketa hau",
"filter_modal.title.status": "Iragazi bidalketa bat",
- "filter_warning.matches_filter": "“{title}” iragazkiarekin bat dator",
"filtered_notifications_banner.pending_requests": "Ezagutu dezakezun {count, plural, =0 {inoren} one {pertsona baten} other {# pertsonen}}",
"filtered_notifications_banner.title": "Iragazitako jakinarazpenak",
"firehose.all": "Guztiak",
diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json
index 6afdb537466f96..3bc96cf9f2e4eb 100644
--- a/app/javascript/mastodon/locales/fa.json
+++ b/app/javascript/mastodon/locales/fa.json
@@ -158,6 +158,7 @@
"compose_form.poll.duration": "مدت نظرسنجی",
"compose_form.poll.multiple": "چند گزینهای",
"compose_form.poll.option_placeholder": "گزینهٔ {number}",
+ "compose_form.poll.single": "تک گزینهای",
"compose_form.poll.switch_to_multiple": "تغییر نظرسنجی برای اجازه به چندین گزینه",
"compose_form.poll.switch_to_single": "تبدیل به نظرسنجی تکگزینهای",
"compose_form.poll.type": "سبک",
@@ -195,7 +196,7 @@
"confirmations.unfollow.message": "مطمئنید که میخواهید به پیگیری از {name} پایان دهید؟",
"confirmations.unfollow.title": "ناپیگیری کاربر؟",
"content_warning.hide": "نهفتن فرسته",
- "content_warning.show": "نمایش به هر روی",
+ "content_warning.show": "در هر صورت نشان داده شود",
"conversation.delete": "حذف گفتگو",
"conversation.mark_as_read": "علامتگذاری به عنوان خوانده شده",
"conversation.open": "دیدن گفتگو",
@@ -221,6 +222,7 @@
"domain_block_modal.they_cant_follow": "هیچکسی از این کارساز نمیتواند پیتان بگیرد.",
"domain_block_modal.they_wont_know": "نخواهند دانست که مسدود شدهاند.",
"domain_block_modal.title": "انسداد دامنه؟",
+ "domain_block_modal.you_will_lose_num_followers": "تعداد {followersCount, plural,other {{followersCount}}} پیگیرنده و {followingCount, plural,other {{followingCount}}} شخص پیگرفته شده را از دست خواهید داد.",
"domain_block_modal.you_will_lose_relationships": "شما تمام پیگیرکنندگان و افرادی که از این کارساز پیگیری میکنید را از دست خواهید داد.",
"domain_block_modal.you_wont_see_posts": "فرستهها یا آگاهیها از کاربران روی این کارساز را نخواهید دید.",
"domain_pill.activitypub_lets_connect": "این به شما اجازه میدهد تا نه تنها در ماستودون، بلکه در برنامههای اجتماعی مختلف نیز با افراد ارتباط برقرار کرده و تعامل داشته باشید.",
@@ -302,7 +304,6 @@
"filter_modal.select_filter.subtitle": "استفاده از یک دستهً موجود یا ایجاد دستهای جدید",
"filter_modal.select_filter.title": "پالایش این فرسته",
"filter_modal.title.status": "پالایش یک فرسته",
- "filter_warning.matches_filter": "مطابق با پالایهٔ «{title}»",
"filtered_notifications_banner.pending_requests": "از {count, plural, =0 {هیچکسی} one {فردی} other {# نفر}} که ممکن است بشناسید",
"filtered_notifications_banner.title": "آگاهیهای پالوده",
"firehose.all": "همه",
@@ -367,6 +368,7 @@
"home.pending_critical_update.link": "دیدن بهروز رسانیها",
"home.pending_critical_update.title": "بهروز رسانی امنیتی بحرانی موجود است!",
"home.show_announcements": "نمایش اعلامیهها",
+ "ignore_notifications_modal.filter_instead": "به جایش پالوده شود",
"ignore_notifications_modal.ignore": "چشمپوشی از آگاهیها",
"ignore_notifications_modal.limited_accounts_title": "چشمپوشی از آگاهیهای حسابهای نظارت شده؟",
"ignore_notifications_modal.new_accounts_title": "چشمپوشی از آگاهیهای حسابهای جدید؟",
@@ -428,6 +430,8 @@
"lightbox.close": "بستن",
"lightbox.next": "بعدی",
"lightbox.previous": "قبلی",
+ "lightbox.zoom_in": "بزرگنمایی به اندازهٔ اصلی",
+ "lightbox.zoom_out": "بزرگ نمایی برای برازش",
"limited_account_hint.action": "به هر روی نمایه نشان داده شود",
"limited_account_hint.title": "این نمایه از سوی ناظمهای {domain} پنهان شده.",
"link_preview.author": "از {name}",
@@ -455,6 +459,7 @@
"mute_modal.hide_options": "گزینههای نهفتن",
"mute_modal.indefinite": "تا وقتی ناخموشش کنم",
"mute_modal.show_options": "نمایش گزینهها",
+ "mute_modal.they_can_mention_and_follow": "میتوانند به شما اشاره کرده و پیتان بگیرند، ولی نخواهید دیدشان.",
"mute_modal.they_wont_know": "نخواهند دانست که خموش شدهاند.",
"mute_modal.title": "خموشی کاربر؟",
"mute_modal.you_wont_see_mentions": "فرستههایی که به او اشاره کردهاند را نخواهید دید.",
@@ -494,6 +499,7 @@
"notification.favourite": "{name} فرستهتان را برگزید",
"notification.favourite.name_and_others_with_link": "{name} و {count, plural, one {# نفر دیگر} other {# نفر دیگر}} فرستهتان را برگزیدند",
"notification.follow": "{name} پیگیرتان شد",
+ "notification.follow.name_and_others": "{name} و {count, plural, other {#}} نفر دیگر پیتان گرفتند",
"notification.follow_request": "{name} درخواست پیگیریتان را داد",
"notification.follow_request.name_and_others": "{name} و {count, plural, one {# نفر دیگر} other {# نفر دیگر}} درخواست پیگیریتان را دادند",
"notification.label.mention": "اشاره",
@@ -501,6 +507,7 @@
"notification.label.private_reply": "پاسخ خصوصی",
"notification.label.reply": "پاسخ",
"notification.mention": "اشاره",
+ "notification.mentioned_you": "{name} از شما نام برد",
"notification.moderation-warning.learn_more": "بیشتر بدانید",
"notification.moderation_warning": "هشداری مدیریتی گرفتهاید",
"notification.moderation_warning.action_delete_statuses": "برخی از فرستههایتان برداشته شدند.",
@@ -519,7 +526,10 @@
"notification.status": "{name} چیزی فرستاد",
"notification.update": "{name} فرستهای را ویرایش کرد",
"notification_requests.accept": "پذیرش",
+ "notification_requests.confirm_accept_multiple.button": "پذیرش {count, plural,one {درخواست} other {درخواستها}}",
+ "notification_requests.confirm_accept_multiple.message": "در حال پذیرش {count, plural,one {یک}other {#}} درخواست آگاهی هستید. مطمئنید که میخواهید ادامه دهید؟",
"notification_requests.confirm_accept_multiple.title": "پذیرش درخواستهای آگاهی؟",
+ "notification_requests.confirm_dismiss_multiple.button": "رد {count, plural,one {درخواست} other {درخواستها}}",
"notification_requests.confirm_dismiss_multiple.title": "رد کردن درخواستهای آگاهی؟",
"notification_requests.dismiss": "دورانداختن",
"notification_requests.edit_selection": "ویرایش",
@@ -540,6 +550,7 @@
"notifications.column_settings.filter_bar.category": "نوار پالایش سریع",
"notifications.column_settings.follow": "پیگیرندگان جدید:",
"notifications.column_settings.follow_request": "درخواستهای جدید پیگیری:",
+ "notifications.column_settings.group": "گروه",
"notifications.column_settings.mention": "اشارهها:",
"notifications.column_settings.poll": "نتایج نظرسنجی:",
"notifications.column_settings.push": "آگاهیهای ارسالی",
@@ -595,7 +606,7 @@
"onboarding.profile.discoverable_hint": "خواستهاید روی ماستودون کشف شوید. ممکن است فرستههایتان در نتیحهٔ جستوجوها و فرستههای داغ ظاهر شده و نمایهتان به افرادی با علایق مشابهتان پیشنهاد شود.",
"onboarding.profile.display_name": "نام نمایشی",
"onboarding.profile.display_name_hint": "نام کامل یا نام باحالتان…",
- "onboarding.profile.lead": "همواره میتوانید این مورد را در تنظیمات که گزینهّای شخصی سازی بیشتری نیز دارد کامل کنید.",
+ "onboarding.profile.lead": "همواره میتوانید این مورد را در تنظیمات که گزینههای شخصی سازی بیشتری نیز دارد کامل کنید.",
"onboarding.profile.note": "درباره شما",
"onboarding.profile.note_hint": "میتوانید افراد دیگر را @نامبردن یا #برچسب بزنید…",
"onboarding.profile.save_and_continue": "ذخیره کن و ادامه بده",
@@ -760,6 +771,7 @@
"status.edit": "ویرایش",
"status.edited": "آخرین ویرایش {date}",
"status.edited_x_times": "{count, plural, one {{count} مرتبه} other {{count} مرتبه}} ویرایش شد",
+ "status.embed": "گرفتن کد تعبیه",
"status.favourite": "برگزیده",
"status.favourites": "{count, plural, one {برگزیده} other {برگزیده}}",
"status.filter": "پالایش این فرسته",
diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json
index 717ea78559d713..2222e6038c08a5 100644
--- a/app/javascript/mastodon/locales/fi.json
+++ b/app/javascript/mastodon/locales/fi.json
@@ -158,7 +158,7 @@
"compose_form.poll.duration": "Äänestyksen kesto",
"compose_form.poll.multiple": "Monivalinta",
"compose_form.poll.option_placeholder": "Vaihtoehto {number}",
- "compose_form.poll.single": "Yksittäisvalinta",
+ "compose_form.poll.single": "Yksi vaihtoehto",
"compose_form.poll.switch_to_multiple": "Muuta äänestys monivalinnaksi",
"compose_form.poll.switch_to_single": "Muuta äänestys yksittäisvalinnaksi",
"compose_form.poll.type": "Tyyli",
@@ -197,6 +197,7 @@
"confirmations.unfollow.title": "Lopetetaanko käyttäjän seuraaminen?",
"content_warning.hide": "Piilota julkaisu",
"content_warning.show": "Näytä kuitenkin",
+ "content_warning.show_more": "Näytä lisää",
"conversation.delete": "Poista keskustelu",
"conversation.mark_as_read": "Merkitse luetuksi",
"conversation.open": "Näytä keskustelu",
@@ -305,7 +306,7 @@
"filter_modal.select_filter.subtitle": "Käytä olemassa olevaa luokkaa tai luo uusi",
"filter_modal.select_filter.title": "Suodata tämä julkaisu",
"filter_modal.title.status": "Suodata julkaisu",
- "filter_warning.matches_filter": "Vastaa suodatinta ”{title}”",
+ "filter_warning.matches_filter": "Vastaa suodatinta ”{title}”",
"filtered_notifications_banner.pending_requests": "{count, plural, =0 {Ei keneltäkään, jonka} one {Yhdeltä käyttäjältä, jonka} other {# käyttäjältä, jotka}} saatat tuntea",
"filtered_notifications_banner.title": "Suodatetut ilmoitukset",
"firehose.all": "Kaikki",
@@ -385,6 +386,7 @@
"interaction_modal.description.follow": "Mastodon-tilillä voit seurata käyttäjää {name} saadaksesi hänen julkaisunsa kotisyötteeseesi.",
"interaction_modal.description.reblog": "Mastodon-tilillä voit tehostaa tätä julkaisua jakaaksesi sen seuraajiesi kanssa.",
"interaction_modal.description.reply": "Mastodon-tilillä voit vastata tähän julkaisuun.",
+ "interaction_modal.description.vote": "Osallistuminen äänestykseen onnistuu Mastodon-tilillä.",
"interaction_modal.login.action": "Siirry kotiin",
"interaction_modal.login.prompt": "Kotipalvelimesi verkkotunnus, kuten mastodon.social",
"interaction_modal.no_account_yet": "Etkö ole vielä Mastodonissa?",
@@ -396,6 +398,7 @@
"interaction_modal.title.follow": "Seuraa käyttäjää {name}",
"interaction_modal.title.reblog": "Tehosta käyttäjän {name} julkaisua",
"interaction_modal.title.reply": "Vastaa käyttäjän {name} julkaisuun",
+ "interaction_modal.title.vote": "Osallistu käyttäjän {name} äänestykseen",
"intervals.full.days": "{number, plural, one {# päivä} other {# päivää}}",
"intervals.full.hours": "{number, plural, one {# tunti} other {# tuntia}}",
"intervals.full.minutes": "{number, plural, one {# minuutti} other {# minuuttia}}",
@@ -436,8 +439,8 @@
"lightbox.close": "Sulje",
"lightbox.next": "Seuraava",
"lightbox.previous": "Edellinen",
- "lightbox.zoom_in": "Zoomaa todelliseen kokoon",
- "lightbox.zoom_out": "Zoomaa mahtumaan",
+ "lightbox.zoom_in": "Näytä todellisen kokoisena",
+ "lightbox.zoom_out": "Näytä sovitettuna",
"limited_account_hint.action": "Näytä profiili joka tapauksessa",
"limited_account_hint.title": "Palvelimen {domain} moderaattorit ovat piilottaneet tämän profiilin.",
"link_preview.author": "Tehnyt {name}",
diff --git a/app/javascript/mastodon/locales/fil.json b/app/javascript/mastodon/locales/fil.json
index 3822fbcf858e02..14c7b70bd299c5 100644
--- a/app/javascript/mastodon/locales/fil.json
+++ b/app/javascript/mastodon/locales/fil.json
@@ -129,6 +129,7 @@
"confirmations.discard_edit_media.confirm": "Ipagpaliban",
"confirmations.edit.confirm": "Baguhin",
"confirmations.reply.confirm": "Tumugon",
+ "content_warning.show_more": "Magpakita ng higit pa",
"conversation.mark_as_read": "Markahan bilang nabasa na",
"conversation.open": "Tingnan ang pag-uusap",
"copy_icon_button.copied": "Sinipi sa clipboard",
@@ -190,6 +191,7 @@
"explore.title": "Tuklasin",
"explore.trending_links": "Mga balita",
"filter_modal.select_filter.search": "Hanapin o gumawa",
+ "filter_warning.matches_filter": "Tinutugma ang pangsala \"{title}\"",
"firehose.all": "Lahat",
"firehose.local": "Itong serbiro",
"firehose.remote": "Ibang mga serbiro",
@@ -218,6 +220,7 @@
"interaction_modal.on_another_server": "Sa ibang serbiro",
"interaction_modal.on_this_server": "Sa serbirong ito",
"interaction_modal.title.follow": "Sundan si {name}",
+ "interaction_modal.title.vote": "Bumoto sa botohan ni {name}",
"intervals.full.days": "{number, plural, one {# araw} other {# na araw}}",
"intervals.full.hours": "{number, plural, one {# oras} other {# na oras}}",
"intervals.full.minutes": "{number, plural, one {# minuto} other {# na minuto}}",
@@ -256,6 +259,7 @@
"navigation_bar.search": "Maghanap",
"notification.admin.report": "Iniulat ni {name} si {target}",
"notification.follow": "Sinundan ka ni {name}",
+ "notification.follow.name_and_others": "Sinundan ka ng/nina {name} at {count, plural, one {# iba pa} other {# na iba pa}}",
"notification.follow_request": "Hinihiling ni {name} na sundan ka",
"notification.label.private_mention": "Palihim na banggit",
"notification.mentioned_you": "Binanggit ka ni {name}",
@@ -270,6 +274,7 @@
"notifications.column_settings.alert": "Mga abiso sa Desktop",
"notifications.column_settings.favourite": "Mga paborito:",
"notifications.column_settings.follow": "Mga bagong tagasunod:",
+ "notifications.column_settings.group": "Pangkat",
"notifications.column_settings.poll": "Resulta ng botohan:",
"notifications.column_settings.unread_notifications.category": "Hindi Nabasang mga Abiso",
"notifications.column_settings.update": "Mga pagbago:",
diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json
index 0e2bc88136921b..e15385725a0097 100644
--- a/app/javascript/mastodon/locales/fo.json
+++ b/app/javascript/mastodon/locales/fo.json
@@ -197,6 +197,7 @@
"confirmations.unfollow.title": "Gevst at fylgja brúkara?",
"content_warning.hide": "Fjal post",
"content_warning.show": "Vís kortini",
+ "content_warning.show_more": "Vís meiri",
"conversation.delete": "Strika samrøðu",
"conversation.mark_as_read": "Merk sum lisið",
"conversation.open": "Vís samrøðu",
@@ -305,7 +306,7 @@
"filter_modal.select_filter.subtitle": "Brúka ein verandi bólk ella skapa ein nýggjan",
"filter_modal.select_filter.title": "Filtrera hendan postin",
"filter_modal.title.status": "Filtrera ein post",
- "filter_warning.matches_filter": "Samsvarar við filtrið “{title}”",
+ "filter_warning.matches_filter": "Samsvarar við filtrið “{title}”",
"filtered_notifications_banner.pending_requests": "Frá {count, plural, =0 {ongum} one {einum persóni} other {# persónum}}, sum tú kanska kennir",
"filtered_notifications_banner.title": "Filtreraðar fráboðanir",
"firehose.all": "Allar",
@@ -385,6 +386,7 @@
"interaction_modal.description.follow": "Við eini kontu á Mastodon kanst tú fylgja {name} fyri at síggja teirra postar á tíni heimarás.",
"interaction_modal.description.reblog": "Við eini kontu á Mastodon kanst tú stimbra hendan postin og soleiðis deila hann við tínar fylgjarar.",
"interaction_modal.description.reply": "Við eini kontu á Mastodon, so kanst tú svara hesum posti.",
+ "interaction_modal.description.vote": "Við eini kontu á Mastodon, so kanst tú atkvøða í hesi spurnarkanningini.",
"interaction_modal.login.action": "Tak meg heim",
"interaction_modal.login.prompt": "Navnaøki hjá tínum heimaambætara, t.d. mastodon.social",
"interaction_modal.no_account_yet": "Ikki á Mastodon?",
@@ -396,6 +398,7 @@
"interaction_modal.title.follow": "Fylg {name}",
"interaction_modal.title.reblog": "Stimbra postin hjá {name}",
"interaction_modal.title.reply": "Svara postinum hjá {name}",
+ "interaction_modal.title.vote": "Atkvøði í spurnarkanningini hjá {name}",
"intervals.full.days": "{number, plural, one {# dagur} other {# dagar}}",
"intervals.full.hours": "{number, plural, one {# tími} other {# tímar}}",
"intervals.full.minutes": "{number, plural, one {# minuttur} other {# minuttir}}",
diff --git a/app/javascript/mastodon/locales/fr-CA.json b/app/javascript/mastodon/locales/fr-CA.json
index e73a3249cbd949..65bbc25c211b8e 100644
--- a/app/javascript/mastodon/locales/fr-CA.json
+++ b/app/javascript/mastodon/locales/fr-CA.json
@@ -305,7 +305,6 @@
"filter_modal.select_filter.subtitle": "Utilisez une catégorie existante ou en créer une nouvelle",
"filter_modal.select_filter.title": "Filtrer cette publication",
"filter_modal.title.status": "Filtrer une publication",
- "filter_warning.matches_filter": "Correspond au filtre « {title} »",
"filtered_notifications_banner.pending_requests": "De la part {count, plural, =0 {d’aucune personne} one {d'une personne} other {de # personnes}} que vous pourriez connaître",
"filtered_notifications_banner.title": "Notifications filtrées",
"firehose.all": "Tout",
@@ -856,6 +855,7 @@
"upload_form.description": "Décrire pour les malvoyants",
"upload_form.drag_and_drop.instructions": "Pour choisir un média joint, appuyez sur la touche espace ou entrée. Tout en faisant glisser, utilisez les touches fléchées pour déplacer le fichier média dans une direction donnée. Appuyez à nouveau sur la touche espace ou entrée pour déposer le fichier média dans sa nouvelle position, ou appuyez sur la touche Echap pour annuler.",
"upload_form.drag_and_drop.on_drag_cancel": "Le glissement a été annulé. La pièce jointe {item} n'a pas été ajoutée.",
+ "upload_form.drag_and_drop.on_drag_over": "La pièce jointe du média {item} a été déplacée.",
"upload_form.edit": "Modifier",
"upload_form.thumbnail": "Changer la vignette",
"upload_form.video_description": "Décrire pour les personnes ayant des problèmes de vue ou d'audition",
diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json
index 319316272be590..ed751c244b50a3 100644
--- a/app/javascript/mastodon/locales/fr.json
+++ b/app/javascript/mastodon/locales/fr.json
@@ -305,7 +305,6 @@
"filter_modal.select_filter.subtitle": "Utilisez une catégorie existante ou créez-en une nouvelle",
"filter_modal.select_filter.title": "Filtrer ce message",
"filter_modal.title.status": "Filtrer un message",
- "filter_warning.matches_filter": "Correspond au filtre « {title} »",
"filtered_notifications_banner.pending_requests": "De la part {count, plural, =0 {d’aucune personne} one {d'une personne} other {de # personnes}} que vous pourriez connaître",
"filtered_notifications_banner.title": "Notifications filtrées",
"firehose.all": "Tout",
@@ -856,6 +855,7 @@
"upload_form.description": "Décrire pour les malvoyant·e·s",
"upload_form.drag_and_drop.instructions": "Pour choisir un média joint, appuyez sur la touche espace ou entrée. Tout en faisant glisser, utilisez les touches fléchées pour déplacer le fichier média dans une direction donnée. Appuyez à nouveau sur la touche espace ou entrée pour déposer le fichier média dans sa nouvelle position, ou appuyez sur la touche Echap pour annuler.",
"upload_form.drag_and_drop.on_drag_cancel": "Le glissement a été annulé. La pièce jointe {item} n'a pas été ajoutée.",
+ "upload_form.drag_and_drop.on_drag_over": "La pièce jointe du média {item} a été déplacée.",
"upload_form.edit": "Modifier",
"upload_form.thumbnail": "Changer la vignette",
"upload_form.video_description": "Décrire pour les personnes ayant des problèmes de vue ou d'audition",
diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json
index 0790a0dc574fd5..e1c090cb0cb8cb 100644
--- a/app/javascript/mastodon/locales/fy.json
+++ b/app/javascript/mastodon/locales/fy.json
@@ -304,7 +304,6 @@
"filter_modal.select_filter.subtitle": "In besteande kategory brûke of in nije oanmeitsje",
"filter_modal.select_filter.title": "Dit berjocht filterje",
"filter_modal.title.status": "In berjocht filterje",
- "filter_warning.matches_filter": "Komt oerien mei filter ‘{title}’",
"filtered_notifications_banner.pending_requests": "Fan {count, plural, =0 {net ien} one {ien persoan} other {# persoanen}} dy’t jo mooglik kinne",
"filtered_notifications_banner.title": "Filtere meldingen",
"firehose.all": "Alles",
diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json
index 81b93816ea08a3..aa7892163bcd54 100644
--- a/app/javascript/mastodon/locales/ga.json
+++ b/app/javascript/mastodon/locales/ga.json
@@ -197,6 +197,7 @@
"confirmations.unfollow.title": "Dílean an t-úsáideoir?",
"content_warning.hide": "Folaigh postáil",
"content_warning.show": "Taispeáin ar aon nós",
+ "content_warning.show_more": "Taispeáin níos mó",
"conversation.delete": "Scrios comhrá",
"conversation.mark_as_read": "Marcáil mar léite",
"conversation.open": "Féach ar comhrá",
@@ -305,7 +306,7 @@
"filter_modal.select_filter.subtitle": "Bain úsáid as catagóir reatha nó cruthaigh ceann nua",
"filter_modal.select_filter.title": "Déan scagadh ar an bpostáil seo",
"filter_modal.title.status": "Déan scagadh ar phostáil",
- "filter_warning.matches_filter": "Meaitseálann an scagaire “{title}”",
+ "filter_warning.matches_filter": "Meaitseálann an scagaire “{title}”",
"filtered_notifications_banner.pending_requests": "Ó {count, plural, =0 {duine ar bith} one {duine amháin} two {# daoine} few {# daoine} many {# daoine} other {# daoine}} b’fhéidir go bhfuil aithne agat orthu",
"filtered_notifications_banner.title": "Fógraí scagtha",
"firehose.all": "Gach",
diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json
index a9da2cd5ec4b55..4f68737b145db1 100644
--- a/app/javascript/mastodon/locales/gd.json
+++ b/app/javascript/mastodon/locales/gd.json
@@ -158,6 +158,7 @@
"compose_form.poll.duration": "Faide a’ chunntais",
"compose_form.poll.multiple": "Iomadh-roghainn",
"compose_form.poll.option_placeholder": "Roghainn {number}",
+ "compose_form.poll.single": "Aon taghadh",
"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.poll.type": "Stoidhle",
@@ -196,6 +197,7 @@
"confirmations.unfollow.title": "A bheil thu airson sgur de leantainn a chleachdaiche?",
"content_warning.hide": "Falaich am post",
"content_warning.show": "Seall e co-dhiù",
+ "content_warning.show_more": "Seall barrachd dheth",
"conversation.delete": "Sguab às an còmhradh",
"conversation.mark_as_read": "Cuir comharra gun deach a leughadh",
"conversation.open": "Seall an còmhradh",
@@ -304,7 +306,7 @@
"filter_modal.select_filter.subtitle": "Cleachd roinn-seòrsa a tha ann no cruthaich tè ùr",
"filter_modal.select_filter.title": "Criathraich am post seo",
"filter_modal.title.status": "Criathraich post",
- "filter_warning.matches_filter": "A’ maidseadh na criathraige “{title}”",
+ "filter_warning.matches_filter": "A’ maidseadh na criathraige “{title}”",
"filtered_notifications_banner.pending_requests": "{count, plural, =0 {Chan eil gin ann} one {O # neach} two {O # neach} few {O # daoine} other {O # duine}} air a bheil thu eòlach ’s dòcha",
"filtered_notifications_banner.title": "Brathan criathraichte",
"firehose.all": "Na h-uile",
@@ -384,6 +386,7 @@
"interaction_modal.description.follow": "Le cunntas air Mastodon, ’s urrainn dhut {name} a leantainn ach am faigh thu na postaichean aca nad dhachaigh.",
"interaction_modal.description.reblog": "Le cunntas air Mastodon, ’s urrainn dhut am post seo a bhrosnachadh gus a cho-roinneadh leis an luchd-leantainn agad fhèin.",
"interaction_modal.description.reply": "Le cunntas air Mastodon, ’s urrainn dhut freagairt a chur dhan phost seo.",
+ "interaction_modal.description.vote": "Le cunntas air Mastodon, ’s urrainn dhut bhòtadh sa chunntas-bheachd seo.",
"interaction_modal.login.action": "Thoir dhachaigh mi",
"interaction_modal.login.prompt": "Àrainn-lìn an fhrithealaiche dachaigh agad, can ailbhean.co-shaoghal.net",
"interaction_modal.no_account_yet": "Nach eil thu air Mastodon?",
@@ -395,6 +398,7 @@
"interaction_modal.title.follow": "Lean {name}",
"interaction_modal.title.reblog": "Brosnaich am post aig {name}",
"interaction_modal.title.reply": "Freagair dhan phost aig {name}",
+ "interaction_modal.title.vote": "Bhòt sa chunntas-bheachd aig {name}",
"intervals.full.days": "{number, plural, one {# latha} two {# latha} few {# làithean} other {# latha}}",
"intervals.full.hours": "{number, plural, one {# uair a thìde} two {# uair a thìde} few {# uairean a thìde} other {# uair a thìde}}",
"intervals.full.minutes": "{number, plural, one {# mhionaid} two {# mhionaid} few {# mionaidean} other {# mionaid}}",
@@ -461,7 +465,7 @@
"media_gallery.hide": "Falaich",
"moved_to_account_banner.text": "Tha an cunntas {disabledAccount} agad à comas on a rinn thu imrich gu {movedToAccount}.",
"mute_modal.hide_from_notifications": "Falaich o na brathan",
- "mute_modal.hide_options": "Roghainnean falaich",
+ "mute_modal.hide_options": "Falaich na roghainnean",
"mute_modal.indefinite": "Gus an dì-mhùch mi iad",
"mute_modal.show_options": "Seall na roghainnean",
"mute_modal.they_can_mention_and_follow": "’S urrainn dhaibh iomradh a thoirt ort agus do leantainn ach chan fhaic thu iad-san.",
@@ -507,6 +511,7 @@
"notification.favourite": "Is annsa le {name} am post agad",
"notification.favourite.name_and_others_with_link": "Is annsa le {name} ’s {count, plural, one {# eile} two {# eile} few {# eile} other {# eile}} am post agad",
"notification.follow": "Tha {name} ’gad leantainn a-nis",
+ "notification.follow.name_and_others": "Lean {name} ’s {count, plural, one {# eile} two {# eile} few {# eile} other {# eile}} thu",
"notification.follow_request": "Dh’iarr {name} ’gad leantainn",
"notification.follow_request.name_and_others": "Dh’iarr {name} ’s {count, plural, one {# eile} two {# eile} few {# eile} other {# eile}} ’gad leantainn",
"notification.label.mention": "Iomradh",
@@ -565,6 +570,7 @@
"notifications.column_settings.filter_bar.category": "Bàr-criathraidh luath",
"notifications.column_settings.follow": "Luchd-leantainn ùr:",
"notifications.column_settings.follow_request": "Iarrtasan leantainn ùra:",
+ "notifications.column_settings.group": "Buidheann",
"notifications.column_settings.mention": "Iomraidhean:",
"notifications.column_settings.poll": "Toraidhean cunntais-bheachd:",
"notifications.column_settings.push": "Brathan putaidh",
diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json
index 5e40b0e4290769..e89d386c853f55 100644
--- a/app/javascript/mastodon/locales/gl.json
+++ b/app/javascript/mastodon/locales/gl.json
@@ -197,6 +197,7 @@
"confirmations.unfollow.title": "Deixar de seguir á usuaria?",
"content_warning.hide": "Agochar publicación",
"content_warning.show": "Mostrar igualmente",
+ "content_warning.show_more": "Mostrar máis",
"conversation.delete": "Eliminar conversa",
"conversation.mark_as_read": "Marcar como lido",
"conversation.open": "Ver conversa",
@@ -305,7 +306,7 @@
"filter_modal.select_filter.subtitle": "Usar unha categoría existente ou crear unha nova",
"filter_modal.select_filter.title": "Filtrar esta publicación",
"filter_modal.title.status": "Filtrar unha publicación",
- "filter_warning.matches_filter": "Debido ao filtro “{title}”",
+ "filter_warning.matches_filter": "Concorda co filtro «{title}»",
"filtered_notifications_banner.pending_requests": "De {count, plural, =0 {ninguén} one {unha persoa} other {# persoas}} que igual coñeces",
"filtered_notifications_banner.title": "Notificacións filtradas",
"firehose.all": "Todo",
@@ -385,6 +386,7 @@
"interaction_modal.description.follow": "Cunha conta en Mastodon, poderás seguir a {name} e recibir as súas publicacións na túa cronoloxía de inicio.",
"interaction_modal.description.reblog": "Cunha conta en Mastodon, poderás promover esta publicación para compartila con quen te siga.",
"interaction_modal.description.reply": "Cunha conta en Mastodon, poderás responder a esta publicación.",
+ "interaction_modal.description.vote": "Podes votar nesta enquisa se tes unha conta en Mastodon.",
"interaction_modal.login.action": "Lévame ao inicio",
"interaction_modal.login.prompt": "Dominio do teu servidor de inicio, ex. mastodon.social",
"interaction_modal.no_account_yet": "Aínda non tes unha conta?",
@@ -396,6 +398,7 @@
"interaction_modal.title.follow": "Seguir a {name}",
"interaction_modal.title.reblog": "Promover a publicación de {name}",
"interaction_modal.title.reply": "Responder á publicación de {name}",
+ "interaction_modal.title.vote": "Vota na enquisa de {name}",
"intervals.full.days": "{number, plural,one {# día} other {# días}}",
"intervals.full.hours": "{number, plural, one {# hora} other {# horas}}",
"intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}",
@@ -451,7 +454,7 @@
"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",
+ "lists.replies_policy.followed": "Calquera usuaria que siga",
"lists.replies_policy.list": "Membros da lista",
"lists.replies_policy.none": "Ninguén",
"lists.replies_policy.title": "Mostrar respostas a:",
diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json
index be1dde65280554..ed08a9aba3e570 100644
--- a/app/javascript/mastodon/locales/he.json
+++ b/app/javascript/mastodon/locales/he.json
@@ -197,6 +197,7 @@
"confirmations.unfollow.title": "לבטל מעקב אחר המשתמש.ת?",
"content_warning.hide": "הסתרת חיצרוץ",
"content_warning.show": "להציג בכל זאת",
+ "content_warning.show_more": "הצג עוד",
"conversation.delete": "מחיקת שיחה",
"conversation.mark_as_read": "סמן כנקרא",
"conversation.open": "צפו בשיחה",
@@ -305,7 +306,7 @@
"filter_modal.select_filter.subtitle": "שימוש בקטגורייה קיימת או יצירת אחת חדשה",
"filter_modal.select_filter.title": "סינון ההודעה הזו",
"filter_modal.title.status": "סנן הודעה",
- "filter_warning.matches_filter": "תואם לסנן “{title}”",
+ "filter_warning.matches_filter": "תואם לסנן “{title}”",
"filtered_notifications_banner.pending_requests": "{count, plural,=0 {אין בקשות ממשתמשים }one {בקשה אחת ממישהו/מישהי }two {יש בקשותיים ממשתמשים }other {יש # בקשות ממשתמשים }}שאולי מוכרים לך",
"filtered_notifications_banner.title": "התראות מסוננות",
"firehose.all": "הכל",
@@ -385,6 +386,7 @@
"interaction_modal.description.follow": "עם חשבון מסטודון, ניתן לעקוב אחרי {name} כדי לקבל את הפוסטים שלו/ה בפיד הבית.",
"interaction_modal.description.reblog": "עם חשבון מסטודון, ניתן להדהד את החצרוץ ולשתף עם עוקבים.",
"interaction_modal.description.reply": "עם חשבון מסטודון, ניתן לענות לחצרוץ.",
+ "interaction_modal.description.vote": "עם חשבון מסטודון, ניתן להצביע בסקר.",
"interaction_modal.login.action": "קח אותי לדף הבית",
"interaction_modal.login.prompt": "שם השרת שלך, למשל mastodon.social",
"interaction_modal.no_account_yet": "עדיין לא במסטודון?",
@@ -396,6 +398,7 @@
"interaction_modal.title.follow": "לעקוב אחרי {name}",
"interaction_modal.title.reblog": "להדהד את החצרוץ של {name}",
"interaction_modal.title.reply": "תשובה לחצרוץ של {name}",
+ "interaction_modal.title.vote": "הצביעו בסקר של {name}",
"intervals.full.days": "{number, plural, one {# יום} other {# ימים}}",
"intervals.full.hours": "{number, plural, one {# שעה} other {# שעות}}",
"intervals.full.minutes": "{number, plural, one {# דקה} other {# דקות}}",
diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json
index a6bd621a485f22..0933a7c25655d1 100644
--- a/app/javascript/mastodon/locales/hu.json
+++ b/app/javascript/mastodon/locales/hu.json
@@ -197,6 +197,7 @@
"confirmations.unfollow.title": "Megszünteted a felhasználó követését?",
"content_warning.hide": "Bejegyzés elrejtése",
"content_warning.show": "Megjelenítés mindenképp",
+ "content_warning.show_more": "Több megjelenítése",
"conversation.delete": "Beszélgetés törlése",
"conversation.mark_as_read": "Megjelölés olvasottként",
"conversation.open": "Beszélgetés megtekintése",
@@ -305,7 +306,7 @@
"filter_modal.select_filter.subtitle": "Válassz egy meglévő kategóriát, vagy hozz létre egy újat",
"filter_modal.select_filter.title": "E bejegyzés szűrése",
"filter_modal.title.status": "Egy bejegyzés szűrése",
- "filter_warning.matches_filter": "Megfelel a szűrőnek: „{title}”",
+ "filter_warning.matches_filter": "Megfelel a szűrőnek: „{title}”",
"filtered_notifications_banner.pending_requests": "{count, plural, =0 {senkitől} one {egy valószínűleg ismerős személytől} other {# valószínűleg ismerős személytől}}",
"filtered_notifications_banner.title": "Szűrt értesítések",
"firehose.all": "Összes",
@@ -385,6 +386,7 @@
"interaction_modal.description.follow": "Egy Mastodon-fiókkal követheted {name} fiókját, hogy lásd a bejegyzéseit a kezdőlapodon.",
"interaction_modal.description.reblog": "Egy Mastodon fiókkal megtolhatod ezt a bejegyzést, hogy megoszd a saját követőiddel.",
"interaction_modal.description.reply": "Egy Mastodon fiókkal válaszolhatsz erre a bejegyzésre.",
+ "interaction_modal.description.vote": "Egy Mastodon fiókkal szavazhatsz ebben a szavazásban.",
"interaction_modal.login.action": "Vigyen haza",
"interaction_modal.login.prompt": "A saját kiszolgálód tartományneve, pl.: mastodon.social",
"interaction_modal.no_account_yet": "Nem vagy Mastodonon?",
@@ -396,6 +398,7 @@
"interaction_modal.title.follow": "{name} követése",
"interaction_modal.title.reblog": "{name} bejegyzésének megtolása",
"interaction_modal.title.reply": "Válasz {name} bejegyzésére",
+ "interaction_modal.title.vote": "Szavazz {name} szavazásában",
"intervals.full.days": "{number, plural, one {# nap} other {# nap}}",
"intervals.full.hours": "{number, plural, one {# óra} other {# óra}}",
"intervals.full.minutes": "{number, plural, one {# perc} other {# perc}}",
diff --git a/app/javascript/mastodon/locales/ia.json b/app/javascript/mastodon/locales/ia.json
index 58e978cd146ec7..e41d390a3f123d 100644
--- a/app/javascript/mastodon/locales/ia.json
+++ b/app/javascript/mastodon/locales/ia.json
@@ -304,7 +304,6 @@
"filter_modal.select_filter.subtitle": "Usa un categoria existente o crea un nove",
"filter_modal.select_filter.title": "Filtrar iste message",
"filter_modal.title.status": "Filtrar un message",
- "filter_warning.matches_filter": "Corresponde al filtro “{title}”",
"filtered_notifications_banner.pending_requests": "De {count, plural, =0 {nemo} one {un persona} other {# personas}} que tu pote cognoscer",
"filtered_notifications_banner.title": "Notificationes filtrate",
"firehose.all": "Toto",
diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json
index 085705714e3ebb..4b4336396036b3 100644
--- a/app/javascript/mastodon/locales/id.json
+++ b/app/javascript/mastodon/locales/id.json
@@ -85,6 +85,7 @@
"alert.rate_limited.title": "Jumlah akses dibatasi",
"alert.unexpected.message": "Terjadi kesalahan yang tidak terduga.",
"alert.unexpected.title": "Ups!",
+ "alt_text_badge.title": "Teks Alternatif",
"announcement.announcement": "Pengumuman",
"attachments_list.unprocessed": "(tidak diproses)",
"audio.hide": "Sembunyikan audio",
@@ -97,6 +98,8 @@
"block_modal.title": "Blokir pengguna?",
"block_modal.you_wont_see_mentions": "Anda tidak akan melihat kiriman yang menyebutkan mereka.",
"boost_modal.combo": "Anda dapat menekan {combo} untuk melewati ini",
+ "boost_modal.reblog": "Pacu kiriman?",
+ "boost_modal.undo_reblog": "Jangan pacu kiriman?",
"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.",
"bundle_column_error.error.title": "Oh, tidak!",
@@ -155,6 +158,7 @@
"compose_form.poll.duration": "Durasi japat",
"compose_form.poll.multiple": "Pilihan ganda",
"compose_form.poll.option_placeholder": "Opsi {number}",
+ "compose_form.poll.single": "Pilihan tunggal",
"compose_form.poll.switch_to_multiple": "Ubah japat menjadi pilihan ganda",
"compose_form.poll.switch_to_single": "Ubah japat menjadi pilihan tunggal",
"compose_form.poll.type": "Gaya",
@@ -218,6 +222,7 @@
"domain_block_modal.they_cant_follow": "Tidak ada seorangpun dari server ini yang dapat mengikuti anda.",
"domain_block_modal.they_wont_know": "Mereka tidak akan tahu bahwa mereka diblokir.",
"domain_block_modal.title": "Blokir domain?",
+ "domain_block_modal.you_will_lose_relationships": "Kamu akan kehilangan semua pengikut dan orang yang kamu ikuti dari server ini.",
"domain_block_modal.you_wont_see_posts": "Anda tidak akan melihat postingan atau notifikasi dari pengguna di server ini.",
"domain_pill.activitypub_lets_connect": "Ini memungkinkan anda terhubung dan berinteraksi dengan orang-orang tidak hanya di Mastodon, tetapi juga di berbagai aplikasi sosial.",
"domain_pill.activitypub_like_language": "ActivityPub seperti bahasa yang digunakan Mastodon dengan jejaring sosial lainnya.",
@@ -231,6 +236,7 @@
"domain_pill.who_you_are": ".",
"domain_pill.your_handle": "Nama pengguna anda:",
"domain_pill.your_server": "Your digital home, where all of your posts live. Don’t like this one? Transfer servers at any time and bring your followers, too.",
+ "domain_pill.your_username": "Pengenal unik anda di server ini. Itu memungkinkan dapat mencari pengguna dengan nama yang sama di server lain.",
"embed.instructions": "Sematkan kiriman ini di situs web Anda dengan menyalin kode di bawah ini.",
"embed.preview": "Tampilan akan seperti ini nantinya:",
"emoji_button.activity": "Aktivitas",
@@ -293,6 +299,7 @@
"filter_modal.select_filter.subtitle": "Gunakan kategori yang sudah ada atau buat yang baru",
"filter_modal.select_filter.title": "Saring kiriman ini",
"filter_modal.title.status": "Saring sebuah kiriman",
+ "filtered_notifications_banner.title": "Notifikasi yang disaring",
"firehose.all": "Semua",
"firehose.local": "Server Ini",
"firehose.remote": "Server Lain",
@@ -301,6 +308,7 @@
"follow_requests.unlocked_explanation": "Meskipun akun Anda tidak dikunci, staf {domain} menyarankan Anda untuk meninjau permintaan mengikuti dari akun-akun ini secara manual.",
"follow_suggestions.curated_suggestion": "Pilihan staf",
"follow_suggestions.dismiss": "Jangan tampilkan lagi",
+ "follow_suggestions.friends_of_friends_longer": "Populer di antara orang yang anda ikuti",
"follow_suggestions.hints.featured": "Profil ini telah dipilih sendiri oleh tim {domain}.",
"follow_suggestions.hints.friends_of_friends": "Profil ini populer di kalangan orang yang anda ikuti.",
"follow_suggestions.personalized_suggestion": "Saran yang dipersonalisasi",
@@ -308,6 +316,7 @@
"follow_suggestions.popular_suggestion_longer": "Populer di {domain}",
"follow_suggestions.similar_to_recently_followed_longer": "Serupa dengan profil yang baru Anda ikuti",
"follow_suggestions.view_all": "Lihat semua",
+ "follow_suggestions.who_to_follow": "Siapa yang harus diikuti",
"followed_tags": "Tagar yang diikuti",
"footer.about": "Tentang",
"footer.directory": "Direktori profil",
diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json
index 21a8a084e75f3b..f9173b65f9f90b 100644
--- a/app/javascript/mastodon/locales/io.json
+++ b/app/javascript/mastodon/locales/io.json
@@ -304,7 +304,6 @@
"filter_modal.select_filter.subtitle": "Usez disponebla grupo o kreez novajo",
"filter_modal.select_filter.title": "Filtragez ca posto",
"filter_modal.title.status": "Filtragez posto",
- "filter_warning.matches_filter": "Sama kam filtrilo \"{title}\"",
"filtered_notifications_banner.pending_requests": "De {count, plural,=0 {nulu} one {1 persono} other {# personi}} quan vu forsan konocas",
"filtered_notifications_banner.title": "Filtrilita savigi",
"firehose.all": "Omno",
diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json
index a6f85304cdf1a5..8c87298910597d 100644
--- a/app/javascript/mastodon/locales/is.json
+++ b/app/javascript/mastodon/locales/is.json
@@ -197,6 +197,7 @@
"confirmations.unfollow.title": "Hætta að fylgjast með viðkomandi?",
"content_warning.hide": "Fela færslu",
"content_warning.show": "Birta samt",
+ "content_warning.show_more": "Sýna meira",
"conversation.delete": "Eyða samtali",
"conversation.mark_as_read": "Merkja sem lesið",
"conversation.open": "Skoða samtal",
@@ -305,7 +306,7 @@
"filter_modal.select_filter.subtitle": "Notaðu fyrirliggjandi flokk eða útbúðu nýjan",
"filter_modal.select_filter.title": "Sía þessa færslu",
"filter_modal.title.status": "Sía færslu",
- "filter_warning.matches_filter": "Samsvarar síunni“{title}”",
+ "filter_warning.matches_filter": "Samsvarar síunni “{title}”",
"filtered_notifications_banner.pending_requests": "Frá {count, plural, =0 {engum} one {einum aðila} other {# manns}} sem þú gætir þekkt",
"filtered_notifications_banner.title": "Síaðar tilkynningar",
"firehose.all": "Allt",
@@ -385,6 +386,7 @@
"interaction_modal.description.follow": "Með notandaaðgangi á Mastodon geturðu fylgst með {name} og fengið færslur frá viðkomandi í heimastreymið þitt.",
"interaction_modal.description.reblog": "Með notandaaðgangi á Mastodon geturðu endurbirt þessa færslu til að deila henni með þeim sem fylgjast með þér.",
"interaction_modal.description.reply": "Með notandaaðgangi á Mastodon geturðu svarað þessari færslu.",
+ "interaction_modal.description.vote": "Þú getur greitt atkvæði í þessari könnun ef þú ert með aðgang á Mastodon.",
"interaction_modal.login.action": "Fara á heimastreymið mitt",
"interaction_modal.login.prompt": "Lén heimanetþjónsins þíns, t.d. mastodon.social",
"interaction_modal.no_account_yet": "Ekki á Mastodon?",
@@ -396,6 +398,7 @@
"interaction_modal.title.follow": "Fylgjast með {name}",
"interaction_modal.title.reblog": "Endurbirta færsluna frá {name}",
"interaction_modal.title.reply": "Svara færslunni frá {name}",
+ "interaction_modal.title.vote": "Greiða atkvæði í könnun á vegum {name}",
"intervals.full.days": "{number, plural, one {# dagur} other {# dagar}}",
"intervals.full.hours": "{number, plural, one {# klukkustund} other {# klukkustundir}}",
"intervals.full.minutes": "{number, plural, one {# mínúta} other {# mínútur}}",
diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json
index 44040cc716a7fb..a692fb7fd33836 100644
--- a/app/javascript/mastodon/locales/it.json
+++ b/app/javascript/mastodon/locales/it.json
@@ -197,6 +197,7 @@
"confirmations.unfollow.title": "Smettere di seguire l'utente?",
"content_warning.hide": "Nascondi post",
"content_warning.show": "Mostra comunque",
+ "content_warning.show_more": "Mostra di più",
"conversation.delete": "Elimina conversazione",
"conversation.mark_as_read": "Segna come letto",
"conversation.open": "Visualizza conversazione",
@@ -305,7 +306,7 @@
"filter_modal.select_filter.subtitle": "Usa una categoria esistente o creane una nuova",
"filter_modal.select_filter.title": "Filtra questo post",
"filter_modal.title.status": "Filtra un post",
- "filter_warning.matches_filter": "Corrisponde al filtro \"{title}\"",
+ "filter_warning.matches_filter": "Corrisponde al filtro “{title}”",
"filtered_notifications_banner.pending_requests": "Da {count, plural, =0 {nessuno} one {una persona} other {# persone}} che potresti conoscere",
"filtered_notifications_banner.title": "Notifiche filtrate",
"firehose.all": "Tutto",
@@ -385,6 +386,7 @@
"interaction_modal.description.follow": "Con un profilo di Mastodon, puoi seguire {name} per ricevere i suoi post nel feed della tua home.",
"interaction_modal.description.reblog": "Con un profilo di Mastodon, puoi rebloggare questo post per condividerlo con i tuoi seguaci.",
"interaction_modal.description.reply": "Con un profilo di Mastodon, puoi rispondere a questo post.",
+ "interaction_modal.description.vote": "Con un account su Mastodon puoi votare in questo sondaggio.",
"interaction_modal.login.action": "Portami alla pagina iniziale",
"interaction_modal.login.prompt": "Dominio del tuo server principale, ad esempio mastodon.social",
"interaction_modal.no_account_yet": "Non su Mastodon?",
@@ -396,6 +398,7 @@
"interaction_modal.title.follow": "Segui {name}",
"interaction_modal.title.reblog": "Reblogga il post di {name}",
"interaction_modal.title.reply": "Rispondi al post di {name}",
+ "interaction_modal.title.vote": "Vota nel sondaggio di {name}",
"intervals.full.days": "{number, plural, one {# giorno} other {# giorni}}",
"intervals.full.hours": "{number, plural, one {# ora} other {# ore}}",
"intervals.full.minutes": "{number, plural, one {# minuto} other {# minuti}}",
diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json
index 556350fd9837a0..553967a3413fa8 100644
--- a/app/javascript/mastodon/locales/ja.json
+++ b/app/javascript/mastodon/locales/ja.json
@@ -162,6 +162,7 @@
"compose_form.poll.duration": "アンケート期間",
"compose_form.poll.multiple": "複数選択",
"compose_form.poll.option_placeholder": "項目{number}",
+ "compose_form.poll.single": "単一選択",
"compose_form.poll.switch_to_multiple": "複数選択に変更",
"compose_form.poll.switch_to_single": "単一選択に変更",
"compose_form.poll.type": "スタイル",
@@ -199,7 +200,8 @@
"confirmations.unfollow.message": "本当に{name}さんのフォローを解除しますか?",
"confirmations.unfollow.title": "フォローを解除しようとしています",
"content_warning.hide": "内容を隠す",
- "content_warning.show": "承知の上で表示",
+ "content_warning.show": "承知して表示",
+ "content_warning.show_more": "続きを表示",
"conversation.delete": "会話を削除",
"conversation.mark_as_read": "既読にする",
"conversation.open": "会話を表示",
@@ -308,7 +310,7 @@
"filter_modal.select_filter.subtitle": "既存のカテゴリーを使用するか新規作成します",
"filter_modal.select_filter.title": "この投稿をフィルターする",
"filter_modal.title.status": "投稿をフィルターする",
- "filter_warning.matches_filter": "フィルター「{title}」に一致する投稿です",
+ "filter_warning.matches_filter": "フィルター「{title}」に一致する投稿",
"filtered_notifications_banner.pending_requests": "{count, plural, =0 {すべて完了しました} other {#人の通知がブロックされています}}",
"filtered_notifications_banner.title": "保留中の通知",
"firehose.all": "すべて",
@@ -388,6 +390,7 @@
"interaction_modal.description.follow": "Mastodonのアカウントで{name}さんをフォローしてホームフィードで投稿を受け取れます。",
"interaction_modal.description.reblog": "Mastodonのアカウントでこの投稿をブーストして自分のフォロワーに共有できます。",
"interaction_modal.description.reply": "Mastodonのアカウントでこの投稿に反応できます。",
+ "interaction_modal.description.vote": "Mastodonのアカウントでこのアンケートに票を入れることができます。",
"interaction_modal.login.action": "サーバーに移動",
"interaction_modal.login.prompt": "登録したサーバーのドメイン (例: mastodon.social)",
"interaction_modal.no_account_yet": "Mastodonにアカウントがない場合は",
@@ -399,6 +402,7 @@
"interaction_modal.title.follow": "{name}さんをフォロー",
"interaction_modal.title.reblog": "{name}さんの投稿をブースト",
"interaction_modal.title.reply": "{name}さんの投稿にリプライ",
+ "interaction_modal.title.vote": "{name}さんのアンケートに投票",
"intervals.full.days": "{number}日",
"intervals.full.hours": "{number}時間",
"intervals.full.minutes": "{number}分",
@@ -507,12 +511,13 @@
"notification.admin.report_statuses": "{name}さんが{target}さんを「{category}」として通報しました",
"notification.admin.report_statuses_other": "{name}さんが{target}さんを通報しました",
"notification.admin.sign_up": "{name}さんがサインアップしました",
- "notification.admin.sign_up.name_and_others": "{name}さんほか{count, plural, other {#人}}がサインアップしました",
+ "notification.admin.sign_up.name_and_others": "{name}さんとほか{count, plural, other {#人}}がサインアップしました",
"notification.favourite": "{name}さんがあなたのトゥートを尊いと感じました",
"notification.favourite.name_and_others_with_link": "{name}さんほか{count, plural, other {#人}}が尊いと感じました",
"notification.follow": "{name}さんにフォローされました",
+ "notification.follow.name_and_others": "{name}さんとほか{count, plural, other {#人}}にフォローされました",
"notification.follow_request": "{name}さんがあなたにフォローリクエストしました",
- "notification.follow_request.name_and_others": "{name}さんほか{count, plural, other {#人}}があなたにフォローリクエストしました",
+ "notification.follow_request.name_and_others": "{name}さんとほか{count, plural, other {#人}}があなたにフォローリクエストしました",
"notification.label.mention": "メンション",
"notification.label.private_mention": "非公開の返信 (メンション)",
"notification.label.private_reply": "非公開の返信",
@@ -569,6 +574,7 @@
"notifications.column_settings.filter_bar.category": "クイックフィルターバー:",
"notifications.column_settings.follow": "新しいフォロワー:",
"notifications.column_settings.follow_request": "新しいフォローリクエスト:",
+ "notifications.column_settings.group": "グループ",
"notifications.column_settings.mention": "返信:",
"notifications.column_settings.poll": "アンケート結果:",
"notifications.column_settings.push": "プッシュ通知",
diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json
index 6b1dc6b365dda1..3462675e3e0e1e 100644
--- a/app/javascript/mastodon/locales/ko.json
+++ b/app/javascript/mastodon/locales/ko.json
@@ -197,6 +197,7 @@
"confirmations.unfollow.title": "사용자를 언팔로우 할까요?",
"content_warning.hide": "게시물 숨기기",
"content_warning.show": "무시하고 보기",
+ "content_warning.show_more": "더 보기",
"conversation.delete": "대화 삭제",
"conversation.mark_as_read": "읽은 상태로 표시",
"conversation.open": "대화 보기",
@@ -305,7 +306,7 @@
"filter_modal.select_filter.subtitle": "기존의 카테고리를 사용하거나 새로 하나를 만듧니다",
"filter_modal.select_filter.title": "이 게시물을 필터",
"filter_modal.title.status": "게시물 필터",
- "filter_warning.matches_filter": "\"{title}\" 필터에 걸림",
+ "filter_warning.matches_filter": "\"{title}\" 필터에 걸림",
"filtered_notifications_banner.pending_requests": "알 수도 있는 {count, plural, =0 {0 명} one {한 명} other {# 명}}의 사람들로부터",
"filtered_notifications_banner.title": "걸러진 알림",
"firehose.all": "모두",
@@ -351,7 +352,7 @@
"hashtag.column_settings.tag_toggle": "추가 해시태그를 이 컬럼에 추가합니다",
"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.counter_by_uses_today": "오늘 {count, plural, other {{counter} 개의 게시물}}",
"hashtag.follow": "해시태그 팔로우",
"hashtag.unfollow": "해시태그 팔로우 해제",
"hashtags.and_other": "…및 {count, plural,other {#개}}",
diff --git a/app/javascript/mastodon/locales/la.json b/app/javascript/mastodon/locales/la.json
index ac95b590e3b307..55678dbdf83655 100644
--- a/app/javascript/mastodon/locales/la.json
+++ b/app/javascript/mastodon/locales/la.json
@@ -13,6 +13,8 @@
"account.edit_profile": "Recolere notionem",
"account.featured_tags.last_status_never": "Nulla contributa",
"account.featured_tags.title": "Hashtag notātī {name}",
+ "account.followers_counter": "{count, plural, one {{counter} sectator} other {{counter} sectatores}}",
+ "account.following_counter": "{count, plural, one {{counter} sectans} other {{counter} sectans}}",
"account.moved_to": "{name} significavit eum suam rationem novam nunc esse:",
"account.muted": "Confutatus",
"account.requested_follow": "{name} postulavit ut te sequeretur",
@@ -230,6 +232,7 @@
"search_results.all": "Omnis",
"server_banner.active_users": "Usūrāriī āctīvī",
"server_banner.administered_by": "Administratur:",
+ "server_banner.is_one_of_many": "{domain} est unum ex multis independentibus servientibus Mastodon quos adhibere potes ut participes in fediverso.",
"sign_in_banner.sign_in": "Sign in",
"status.admin_status": "Open this status in the moderation interface",
"status.block": "Impedire @{name}",
diff --git a/app/javascript/mastodon/locales/lad.json b/app/javascript/mastodon/locales/lad.json
index 147546c9773146..563eb3b190af38 100644
--- a/app/javascript/mastodon/locales/lad.json
+++ b/app/javascript/mastodon/locales/lad.json
@@ -191,6 +191,7 @@
"confirmations.unfollow.title": "Desige utilizador?",
"content_warning.hide": "Eskonde puvlikasyon",
"content_warning.show": "Amostra entanto",
+ "content_warning.show_more": "Amostra mas",
"conversation.delete": "Efasa konversasyon",
"conversation.mark_as_read": "Marka komo meldado",
"conversation.open": "Ve konversasyon",
diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json
index 60d0acf7a1007e..7d53c2702fc99e 100644
--- a/app/javascript/mastodon/locales/lt.json
+++ b/app/javascript/mastodon/locales/lt.json
@@ -158,6 +158,7 @@
"compose_form.poll.duration": "Apklausos trukmė",
"compose_form.poll.multiple": "Keli pasirinkimai",
"compose_form.poll.option_placeholder": "{number} parinktis",
+ "compose_form.poll.single": "Vienas pasirinkimas",
"compose_form.poll.switch_to_multiple": "Keisti apklausą, kad būtų leidžiama pasirinkti kelis pasirinkimus",
"compose_form.poll.switch_to_single": "Keisti apklausą, kad būtų leidžiama pasirinkti vieną pasirinkimą",
"compose_form.poll.type": "Stilius",
@@ -196,6 +197,7 @@
"confirmations.unfollow.title": "Nebesekti naudotoją?",
"content_warning.hide": "Slėpti įrašą",
"content_warning.show": "Rodyti vis tiek",
+ "content_warning.show_more": "Rodyti daugiau",
"conversation.delete": "Ištrinti pokalbį",
"conversation.mark_as_read": "Žymėti kaip skaitytą",
"conversation.open": "Peržiūrėti pokalbį",
@@ -304,7 +306,7 @@
"filter_modal.select_filter.subtitle": "Naudok esamą kategoriją arba sukurk naują.",
"filter_modal.select_filter.title": "Filtruoti šį įrašą",
"filter_modal.title.status": "Filtruoti įrašą",
- "filter_warning.matches_filter": "Atitinka filtrą „{title}“",
+ "filter_warning.matches_filter": "Atitinka filtrą „{title}“",
"filtered_notifications_banner.pending_requests": "Iš {count, plural, =0 {nė vieno} one {žmogaus} few {# žmonių} many {# žmonių} other {# žmonių}}, kuriuos galbūt pažįsti",
"filtered_notifications_banner.title": "Filtruojami pranešimai",
"firehose.all": "Visi",
@@ -384,6 +386,7 @@
"interaction_modal.description.follow": "Su Mastodon paskyra gali sekti {name}, kad gautum jų įrašus į pagrindinį srautą.",
"interaction_modal.description.reblog": "Su Mastodon paskyra gali pakelti šią įrašą ir pasidalyti juo su savo sekėjais.",
"interaction_modal.description.reply": "Su Mastodon paskyra gali atsakyti į šį įrašą.",
+ "interaction_modal.description.vote": "Su „Mastodon“ paskyra galite balsuoti šioje apklausoje.",
"interaction_modal.login.action": "Į pagrindinį puslapį",
"interaction_modal.login.prompt": "Tavo pagrindinio serverio domenas, pvz., mastodon.social.",
"interaction_modal.no_account_yet": "Nesi Mastodon?",
@@ -395,6 +398,7 @@
"interaction_modal.title.follow": "Sekti {name}",
"interaction_modal.title.reblog": "Pakelti {name} įrašą",
"interaction_modal.title.reply": "Atsakyti į {name} įrašą",
+ "interaction_modal.title.vote": "Balsuoti {name} apklausoje",
"intervals.full.days": "{number, plural, one {# diena} few {# dienos} many {# dienos} other {# dienų}}",
"intervals.full.hours": "{number, plural, one {# valanda} few {# valandos} many {# valandos} other {# valandų}}",
"intervals.full.minutes": "{number, plural, one {# minutė} few {# minutes} many {# minutės} other {# minučių}}",
diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json
index 7d325c057d3d32..d7507ee8843dcd 100644
--- a/app/javascript/mastodon/locales/lv.json
+++ b/app/javascript/mastodon/locales/lv.json
@@ -146,7 +146,7 @@
"compose.saved.body": "Ziņa saglabāta.",
"compose_form.direct_message_warning_learn_more": "Uzzināt vairāk",
"compose_form.encryption_warning": "Mastodon ieraksti nav pilnībā šifrēti. Nedalies ar jebkādu jutīgu informāciju caur Mastodon!",
- "compose_form.hashtag_warning": "Šī ziņa netiks norādīta zem nevienas atsauces, jo tā nav publiska. Tikai publiskās ziņās var meklēt pēc atsauces.",
+ "compose_form.hashtag_warning": "Šis ieraksts netiks uzrādīts nevienā tēmturī, jo tas nav redzams visiem. Tikai visiem redzamos ierakstus var meklēt pēc tēmtura.",
"compose_form.lock_disclaimer": "Tavs konts nav {locked}. Ikviens var Tev sekot, lai redzētu tikai sekotājiem paredzētos ierakstus.",
"compose_form.lock_disclaimer.lock": "slēgts",
"compose_form.placeholder": "Kas Tev padomā?",
@@ -208,7 +208,7 @@
"dismissable_banner.dismiss": "Atcelt",
"dismissable_banner.explore_links": "Par šiem jaunumiem šobrīd runā cilvēki šajā un citos decentralizētā tīkla serveros.",
"dismissable_banner.explore_statuses": "Šie ir ieraksti, kas šodien gūst arvien lielāku ievērību visā sociālajā tīklā. Augstāk tiek kārtoti jaunāki ieraksti, kuri tiek vairāk pastiprināti un ievietoti izlasēs.",
- "dismissable_banner.explore_tags": "Šie tēmturi šobrīd kļūst arvien populārāki cilvēku vidū šajā un citos decentralizētā tīkla serveros.",
+ "dismissable_banner.explore_tags": "Šie ir tēmturi, kas šodien gūst uzmanību sabiedriskajā tīmeklī. Tēmturi, kurus izmanto vairāk dažādu cilvēku, tiek vērtēti augstāk.",
"dismissable_banner.public_timeline": "Šie ir jaunākie publiskie ieraksti no lietotājiem sociālajā tīmeklī, kuriem {domain} seko cilvēki.",
"domain_block_modal.block": "Bloķēt serveri",
"domain_block_modal.they_cant_follow": "Neviens šajā serverī nevar Tev sekot.",
@@ -246,7 +246,7 @@
"empty_column.favourited_statuses": "Tev vēl nav iecienītāko ierakstu. Kad pievienosi kādu izlasei, tas tiks parādīts šeit.",
"empty_column.favourites": "Šo ziņu neviens vēl nav pievienojis izlasei. Kad kāds to izdarīs, tas parādīsies šeit.",
"empty_column.follow_requests": "Šobrīd Tev nav sekošanas pieprasījumu. Kad saņemsi kādu, tas parādīsies šeit.",
- "empty_column.followed_tags": "Tu vēl neesi sekojis nevienam tēmturim. Kad to izdarīsi, tie tiks parādīti šeit.",
+ "empty_column.followed_tags": "Tu vēl neseko nevienam tēmturim. Kad to izdarīsi, tie tiks parādīti šeit.",
"empty_column.hashtag": "Ar šo tēmturi nekas nav atrodams.",
"empty_column.home": "Tava mājas laikjosla ir tukša. Seko vairāk cilvēkiem, lai to piepildītu!",
"empty_column.list": "Pagaidām šajā sarakstā nekā nav. Kad šī saraksta dalībnieki ievietos jaunus ierakstus, tie parādīsies šeit.",
@@ -282,7 +282,6 @@
"filter_modal.select_filter.subtitle": "Izmanto esošu kategoriju vai izveido jaunu",
"filter_modal.select_filter.title": "Filtrēt šo ziņu",
"filter_modal.title.status": "Filtrēt ziņu",
- "filter_warning.matches_filter": "Atbilst filtram “{title}”",
"firehose.all": "Visi",
"firehose.local": "Šis serveris",
"firehose.remote": "Citi serveri",
@@ -315,8 +314,8 @@
"hashtag.column_settings.tag_mode.all": "Visi no šiem",
"hashtag.column_settings.tag_mode.any": "Kāds no šiem",
"hashtag.column_settings.tag_mode.none": "Neviens no šiem",
- "hashtag.column_settings.tag_toggle": "Pievienot kolonnai papildu tēmturus",
- "hashtag.counter_by_accounts": "{count, plural, one {{counter} dalībnieks} other {{counter} dalībnieki}}",
+ "hashtag.column_settings.tag_toggle": "Iekļaut šajā kolonnā papildu birkas",
+ "hashtag.counter_by_accounts": "{count, plural, zero{{counter} dalībnieku} one {{counter} dalībnieks} other {{counter} dalībnieki}}",
"hashtag.counter_by_uses": "{count, plural, zero {{counter} ierakstu} one {{counter} ieraksts} other {{counter} ieraksti}}",
"hashtag.counter_by_uses_today": "{count, plural, zero {{counter} ierakstu} one {{counter} ieraksts} other {{counter} ieraksti}} šodien",
"hashtag.follow": "Sekot tēmturim",
@@ -412,6 +411,7 @@
"mute_modal.show_options": "Parādīt iespējas",
"mute_modal.title": "Apklusināt lietotāju?",
"navigation_bar.about": "Par",
+ "navigation_bar.administration": "Pārvaldība",
"navigation_bar.advanced_interface": "Atvērt paplašinātā tīmekļa saskarnē",
"navigation_bar.blocks": "Bloķētie lietotāji",
"navigation_bar.bookmarks": "Grāmatzīmes",
@@ -428,6 +428,7 @@
"navigation_bar.follows_and_followers": "Sekojamie un sekotāji",
"navigation_bar.lists": "Saraksti",
"navigation_bar.logout": "Iziet",
+ "navigation_bar.moderation": "Satura pārraudzība",
"navigation_bar.mutes": "Apklusinātie lietotāji",
"navigation_bar.opened_in_classic_interface": "Ieraksti, konti un citas noteiktas lapas pēc noklusējuma tiek atvērtas klasiskajā tīmekļa saskarnē.",
"navigation_bar.personal": "Personīgie",
@@ -443,9 +444,11 @@
"notification.follow": "{name} uzsāka Tev sekot",
"notification.follow_request": "{name} nosūtīja Tev sekošanas pieprasījumu",
"notification.moderation-warning.learn_more": "Uzzināt vairāk",
+ "notification.moderation_warning": "Ir saņemts satura pārraudzības brīdinājums",
"notification.moderation_warning.action_delete_statuses": "Daži no Taviem ierakstiem tika noņemti.",
"notification.moderation_warning.action_disable": "Tavs konts tika atspējots.",
"notification.moderation_warning.action_mark_statuses_as_sensitive": "Daži no Taviem ierakstiem tika atzīmēti kā jutīgi.",
+ "notification.moderation_warning.action_none": "Konts ir saņēmis satura pārraudzības brīdinājumu.",
"notification.moderation_warning.action_sensitive": "Tavi ieraksti turpmāk tiks atzīmēti kā jutīgi.",
"notification.moderation_warning.action_silence": "Tavs konts tika ierobežots.",
"notification.moderation_warning.action_suspend": "Tava konta darbība tika apturēta.",
@@ -554,7 +557,8 @@
"privacy.private.long": "Tikai Tavi sekotāji",
"privacy.private.short": "Sekotāji",
"privacy.public.long": "Jebkurš Mastodon un ārpus tā",
- "privacy.public.short": "Publiska",
+ "privacy.public.short": "Redzams visiem",
+ "privacy.unlisted.additional": "Šis uzvedas tieši kā publisks, izņemot to, ka ieraksts neparādīsies tiešraides barotnēs vai tēmturos, izpētē vai Mastodon meklēšanā, pat ja esi to norādījis visa konta ietvaros.",
"privacy.unlisted.long": "Mazāk algoritmisku fanfaru",
"privacy_policy.last_updated": "Pēdējo reizi atjaunināta {date}",
"privacy_policy.title": "Privātuma politika",
@@ -652,9 +656,9 @@
"sign_in_banner.create_account": "Izveidot kontu",
"sign_in_banner.sign_in": "Pieteikties",
"sign_in_banner.sso_redirect": "Piesakies vai Reģistrējies",
- "status.admin_account": "Atvērt @{name} moderēšanas saskarni",
- "status.admin_domain": "Atvērt {domain} moderēšanas saskarni",
- "status.admin_status": "Atvērt šo ziņu moderācijas saskarnē",
+ "status.admin_account": "Atvērt @{name} satura pārraudzības saskarni",
+ "status.admin_domain": "Atvērt {domain} satura pārraudzības saskarni",
+ "status.admin_status": "Atvērt šo ziņu satura pārraudzības saskarnē",
"status.block": "Bloķēt @{name}",
"status.bookmark": "Grāmatzīme",
"status.cancel_reblog_private": "Nepastiprināt",
diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json
index 8df1fc4d1f6f68..9f265782e111b3 100644
--- a/app/javascript/mastodon/locales/nl.json
+++ b/app/javascript/mastodon/locales/nl.json
@@ -197,6 +197,7 @@
"confirmations.unfollow.title": "Gebruiker ontvolgen?",
"content_warning.hide": "Bericht verbergen",
"content_warning.show": "Alsnog tonen",
+ "content_warning.show_more": "Meer tonen",
"conversation.delete": "Gesprek verwijderen",
"conversation.mark_as_read": "Als gelezen markeren",
"conversation.open": "Gesprek tonen",
@@ -305,7 +306,7 @@
"filter_modal.select_filter.subtitle": "Een bestaande categorie gebruiken of een nieuwe aanmaken",
"filter_modal.select_filter.title": "Dit bericht filteren",
"filter_modal.title.status": "Een bericht filteren",
- "filter_warning.matches_filter": "Komt overeen met filter “{title}”",
+ "filter_warning.matches_filter": "Komt overeen met filter \"{title}\"",
"filtered_notifications_banner.pending_requests": "Van {count, plural, =0 {niemand} one {een persoon} other {# personen}} die je mogelijk kent",
"filtered_notifications_banner.title": "Gefilterde meldingen",
"firehose.all": "Alles",
@@ -385,6 +386,7 @@
"interaction_modal.description.follow": "Je kunt met een Mastodon-account {name} volgen, om zo diens berichten op jouw starttijdlijn te ontvangen.",
"interaction_modal.description.reblog": "Je kunt met een Mastodon-account dit bericht boosten, om het zo met jouw volgers te delen.",
"interaction_modal.description.reply": "Je kunt met een Mastodon-account op dit bericht reageren.",
+ "interaction_modal.description.vote": "Met een Mastodon-account kun je stemmen in deze peiling.",
"interaction_modal.login.action": "Ga naar start",
"interaction_modal.login.prompt": "Domein van jouw server, bv. mastodon.social",
"interaction_modal.no_account_yet": "Niet op Mastodon?",
@@ -396,6 +398,7 @@
"interaction_modal.title.follow": "{name} volgen",
"interaction_modal.title.reblog": "Bericht van {name} boosten",
"interaction_modal.title.reply": "Op het bericht van {name} reageren",
+ "interaction_modal.title.vote": "Stemmen in {name}'s peiling",
"intervals.full.days": "{number, plural, one {# dag} other {# dagen}}",
"intervals.full.hours": "{number, plural, one {# uur} other {# uur}}",
"intervals.full.minutes": "{number, plural, one {# minuut} other {# minuten}}",
diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json
index e2a6ac9c26fe0e..cc567541934544 100644
--- a/app/javascript/mastodon/locales/nn.json
+++ b/app/javascript/mastodon/locales/nn.json
@@ -305,7 +305,6 @@
"filter_modal.select_filter.subtitle": "Bruk ein eksisterande kategori eller opprett ein ny",
"filter_modal.select_filter.title": "Filtrer dette innlegget",
"filter_modal.title.status": "Filtrer eit innlegg",
- "filter_warning.matches_filter": "Passar med filteret «{title}»",
"filtered_notifications_banner.pending_requests": "Frå {count, plural, =0 {ingen} one {éin person} other {# personar}} du kanskje kjenner",
"filtered_notifications_banner.title": "Filtrerte varslingar",
"firehose.all": "Alle",
@@ -385,6 +384,7 @@
"interaction_modal.description.follow": "Med ein konto på Mastodon kan du fylgja {name} for å sjå innlegga deira i din heimestraum.",
"interaction_modal.description.reblog": "Med ein konto på Mastodon kan du framheva dette innlegget for å dela det med dine eigne fylgjarar.",
"interaction_modal.description.reply": "Med ein konto på Mastodon kan du svara på dette innlegget.",
+ "interaction_modal.description.vote": "Med ein konto på Mastodon kan du røyste i denne avrøystinga.",
"interaction_modal.login.action": "Ta meg heim",
"interaction_modal.login.prompt": "Domenenamnet til din heime-tenar. t.d. mastodon.social",
"interaction_modal.no_account_yet": "Ikkje på Mastodon?",
@@ -396,6 +396,7 @@
"interaction_modal.title.follow": "Fylg {name}",
"interaction_modal.title.reblog": "Framhev {name} sitt innlegg",
"interaction_modal.title.reply": "Svar på innlegge til {name}",
+ "interaction_modal.title.vote": "Røyst i {name} si avrøysting",
"intervals.full.days": "{number, plural, one {# dag} other {# dagar}}",
"intervals.full.hours": "{number, plural, one {# time} other {# timar}}",
"intervals.full.minutes": "{number, plural, one {# minutt} other {# minutt}}",
diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json
index b709fbea5e21a6..9a5f37979701ad 100644
--- a/app/javascript/mastodon/locales/no.json
+++ b/app/javascript/mastodon/locales/no.json
@@ -301,7 +301,6 @@
"filter_modal.select_filter.subtitle": "Bruk en eksisterende kategori eller opprett en ny",
"filter_modal.select_filter.title": "Filtrer dette innlegget",
"filter_modal.title.status": "Filtrer et innlegg",
- "filter_warning.matches_filter": "Passer med filteret «{title}»",
"filtered_notifications_banner.pending_requests": "Fra {count, plural, =0 {ingen} one {en person} other {# folk}} du kanskje kjenner",
"filtered_notifications_banner.title": "Filtrerte varsler",
"firehose.all": "Alt",
diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json
index 21a1c365f02002..c521fabf390515 100644
--- a/app/javascript/mastodon/locales/pl.json
+++ b/app/javascript/mastodon/locales/pl.json
@@ -197,6 +197,7 @@
"confirmations.unfollow.title": "Przestać obserwować?",
"content_warning.hide": "Ukryj wpis",
"content_warning.show": "Pokaż mimo to",
+ "content_warning.show_more": "Rozwiń",
"conversation.delete": "Usuń konwersację",
"conversation.mark_as_read": "Oznacz jako przeczytane",
"conversation.open": "Zobacz konwersację",
@@ -305,7 +306,7 @@
"filter_modal.select_filter.subtitle": "Użyj istniejącej kategorii lub utwórz nową",
"filter_modal.select_filter.title": "Filtruj ten wpis",
"filter_modal.title.status": "Filtruj wpis",
- "filter_warning.matches_filter": "Pasuje do filtra \"{title}\"",
+ "filter_warning.matches_filter": "Pasuje do filtra \"{title}\"",
"filtered_notifications_banner.pending_requests": "Od {count, plural, =0 {żadnej osoby którą możesz znać} one {# osoby którą możesz znać} other {# osób które możesz znać}}",
"filtered_notifications_banner.title": "Powiadomienia filtrowane",
"firehose.all": "Wszystko",
@@ -385,6 +386,7 @@
"interaction_modal.description.follow": "Mając konto na Mastodonie, możesz śledzić {name} by widzieć jego wpisy na swojej głównej osi czasu.",
"interaction_modal.description.reblog": "Mając konto na Mastodonie, możesz podbić ten wpis i udostępnić go Twoim obserwującym.",
"interaction_modal.description.reply": "Mając konto na Mastodonie, możesz odpowiedzieć na ten wpis.",
+ "interaction_modal.description.vote": "Mając konto na Mastodonie, możesz wziąć udział w tym głosowaniu.",
"interaction_modal.login.action": "Wróć na stronę główną",
"interaction_modal.login.prompt": "Domena twojego serwera domowego, np. \"mastodon.social\"",
"interaction_modal.no_account_yet": "Nie masz konta na Mastodonie?",
@@ -396,6 +398,7 @@
"interaction_modal.title.follow": "Śledź {name}",
"interaction_modal.title.reblog": "Podbij wpis {name}",
"interaction_modal.title.reply": "Odpowiedz na post {name}",
+ "interaction_modal.title.vote": "Weź udział w głosowaniu {name}",
"intervals.full.days": "{number, plural, one {# dzień} few {# dni} many {# dni} other {# dni}}",
"intervals.full.hours": "{number, plural, one {# godzina} few {# godziny} many {# godzin} other {# godzin}}",
"intervals.full.minutes": "{number, plural, one {# minuta} few {# minuty} many {# minut} other {# minut}}",
diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json
index f5b6481a837e36..c620933abe2ae3 100644
--- a/app/javascript/mastodon/locales/pt-BR.json
+++ b/app/javascript/mastodon/locales/pt-BR.json
@@ -197,6 +197,7 @@
"confirmations.unfollow.title": "Deixar de seguir o usuário?",
"content_warning.hide": "Ocultar post",
"content_warning.show": "Mostrar mesmo assim",
+ "content_warning.show_more": "Mostrar mais",
"conversation.delete": "Excluir conversa",
"conversation.mark_as_read": "Marcar como lida",
"conversation.open": "Ver conversa",
@@ -305,7 +306,7 @@
"filter_modal.select_filter.subtitle": "Use uma categoria existente ou crie uma nova",
"filter_modal.select_filter.title": "Filtrar esta publicação",
"filter_modal.title.status": "Filtrar uma publicação",
- "filter_warning.matches_filter": "Correspondente ao filtro “{title}”",
+ "filter_warning.matches_filter": "Corresponder filtro “{title}”",
"filtered_notifications_banner.pending_requests": "Por {count, plural, =0 {no one} one {one person} other {# people}} que você talvez conheça",
"filtered_notifications_banner.title": "Notificações filtradas",
"firehose.all": "Tudo",
@@ -385,6 +386,7 @@
"interaction_modal.description.follow": "Com uma conta no Mastodon, você pode seguir {name} para receber publicações na sua página inicial.",
"interaction_modal.description.reblog": "Com uma conta no Mastodon, você pode impulsionar esta publicação para compartilhá-lo com seus próprios seguidores.",
"interaction_modal.description.reply": "Com uma conta no Mastodon, você pode responder a esta publicação.",
+ "interaction_modal.description.vote": "Com uma conta no Mastodon, você pode votar nesta enquete.",
"interaction_modal.login.action": "Leve-me para casa",
"interaction_modal.login.prompt": "Domínio do seu servidor hospedeiro; por exemplo, mastodon.social",
"interaction_modal.no_account_yet": "Ainda não está no Mastodon?",
@@ -396,6 +398,7 @@
"interaction_modal.title.follow": "Seguir {name}",
"interaction_modal.title.reblog": "Impulsionar publicação de {name}",
"interaction_modal.title.reply": "Responder à publicação de {name}",
+ "interaction_modal.title.vote": "Votar na enquete de {name}",
"intervals.full.days": "{number, plural, one {# dia} other {# dias}}",
"intervals.full.hours": "{number, plural, one {# hora} other {# horas}}",
"intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}",
diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json
index fe18444ce10dc4..a4f2e274013f1a 100644
--- a/app/javascript/mastodon/locales/pt-PT.json
+++ b/app/javascript/mastodon/locales/pt-PT.json
@@ -301,7 +301,6 @@
"filter_modal.select_filter.subtitle": "Utilize uma categoria existente ou crie uma nova",
"filter_modal.select_filter.title": "Filtrar esta publicação",
"filter_modal.title.status": "Filtrar uma publicação",
- "filter_warning.matches_filter": "Corresponde ao filtro “{title}”",
"filtered_notifications_banner.pending_requests": "De {count, plural, =0 {ninguém} one {uma pessoa} other {# pessoas}} que pode conhecer",
"filtered_notifications_banner.title": "Notificações filtradas",
"firehose.all": "Todas",
@@ -773,7 +772,7 @@
"status.bookmark": "Guardar nos marcadores",
"status.cancel_reblog_private": "Deixar de reforçar",
"status.cannot_reblog": "Não é possível partilhar esta publicação",
- "status.continued_thread": "Continuação da conserva",
+ "status.continued_thread": "Continuação da conversa",
"status.copy": "Copiar hiperligação para a publicação",
"status.delete": "Eliminar",
"status.detailed_status": "Vista pormenorizada da conversa",
diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json
index 46463be76f5f4b..2a985a1f848221 100644
--- a/app/javascript/mastodon/locales/ru.json
+++ b/app/javascript/mastodon/locales/ru.json
@@ -36,7 +36,7 @@
"account.followers.empty": "На этого пользователя пока никто не подписан.",
"account.followers_counter": "{count, plural, one {{counter} подписчик} few {{counter} подписчика} other {{counter} подписчиков}}",
"account.following": "Подписки",
- "account.following_counter": "{count, plural, one {{counter} последующий} other {{counter} последующие}}",
+ "account.following_counter": "{count, plural, one {# подписка} many {# подписок} other {# подписки}}",
"account.follows.empty": "Этот пользователь пока ни на кого не подписался.",
"account.go_to_profile": "Перейти к профилю",
"account.hide_reblogs": "Скрыть продвижения от @{name}",
@@ -303,8 +303,7 @@
"filter_modal.select_filter.subtitle": "Используйте существующую категорию или создайте новую",
"filter_modal.select_filter.title": "Фильтровать этот пост",
"filter_modal.title.status": "Фильтровать пост",
- "filter_warning.matches_filter": "Соответствует фильтру \"{title}\"",
- "filtered_notifications_banner.pending_requests": "Вы можете знать {count, plural, =0 {ни один} one {один человек} other {# люди}}",
+ "filtered_notifications_banner.pending_requests": "Вы можете знать {count, plural, =0 {ни одного человека} one {одного человека} other {# человек}}",
"filtered_notifications_banner.title": "Отфильтрованные уведомления",
"firehose.all": "Все",
"firehose.local": "Текущий сервер",
diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json
index ffca0914e580a6..a1bcdb9ff9fd0c 100644
--- a/app/javascript/mastodon/locales/sk.json
+++ b/app/javascript/mastodon/locales/sk.json
@@ -155,6 +155,7 @@
"compose_form.poll.duration": "Trvanie ankety",
"compose_form.poll.multiple": "Viacero možností",
"compose_form.poll.option_placeholder": "Možnosť {number}",
+ "compose_form.poll.single": "Jediná voľba",
"compose_form.poll.switch_to_multiple": "Zmeniť anketu a povoliť viaceré možnosti",
"compose_form.poll.switch_to_single": "Zmeniť anketu na jediný povolený výber",
"compose_form.poll.type": "Typ",
@@ -290,7 +291,6 @@
"filter_modal.select_filter.subtitle": "Použite existujúcu kategóriu alebo vytvorte novú",
"filter_modal.select_filter.title": "Filtrovanie tohto príspevku",
"filter_modal.title.status": "Filtrovanie príspevku",
- "filter_warning.matches_filter": "Zhody triedenia “{title}”",
"filtered_notifications_banner.title": "Filtrované oznámenia",
"firehose.all": "Všetko",
"firehose.local": "Tento server",
@@ -404,6 +404,7 @@
"limited_account_hint.title": "Tento profil bol skrytý správcami servera {domain}.",
"link_preview.author": "Autor: {name}",
"link_preview.more_from_author": "Viac od {name}",
+ "link_preview.shares": "{count, plural, one {{counter} príspevok} other {{counter} príspevkov}}",
"lists.account.add": "Pridať do zoznamu",
"lists.account.remove": "Odstrániť zo zoznamu",
"lists.delete": "Vymazať zoznam",
diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json
index e38ea796f60d02..410d7c2ef3dd2f 100644
--- a/app/javascript/mastodon/locales/sq.json
+++ b/app/javascript/mastodon/locales/sq.json
@@ -197,6 +197,7 @@
"confirmations.unfollow.title": "Të ndalet ndjekja e përdoruesit?",
"content_warning.hide": "Fshihe postimin",
"content_warning.show": "Shfaqe, sido qoftë",
+ "content_warning.show_more": "Shfaq më tepër",
"conversation.delete": "Fshije bisedën",
"conversation.mark_as_read": "Vëri shenjë si të lexuar",
"conversation.open": "Shfaq bisedën",
@@ -305,7 +306,7 @@
"filter_modal.select_filter.subtitle": "Përdorni një kategori ekzistuese, ose krijoni një të re",
"filter_modal.select_filter.title": "Filtroje këtë postim",
"filter_modal.title.status": "Filtroni një postim",
- "filter_warning.matches_filter": "Ka përkim me filtrin “{title}”",
+ "filter_warning.matches_filter": "Ka përkim me filtrin “{title}”",
"filtered_notifications_banner.pending_requests": "Nga {count, plural, =0 {askush} one {një person} other {# vetë}} që mund të njihni",
"filtered_notifications_banner.title": "Njoftime të filtruar",
"firehose.all": "Krejt",
@@ -385,6 +386,7 @@
"interaction_modal.description.follow": "Me një llogari në Mastodon, mund ta ndiqni {name} për të marrë postimet e tyre në prurjen tuaj të kreut.",
"interaction_modal.description.reblog": "Me një llogari në Mastodon, mund ta përforconi këtë postim për ta ndarë me ndjekësit tuaj.",
"interaction_modal.description.reply": "Me një llogari në Mastodon, mund t’i përgjigjeni këtij postimi.",
+ "interaction_modal.description.vote": "Me një llogari në Mastodon, mund të votoni në këtë pyetësor.",
"interaction_modal.login.action": "Shpjemëni në shtëpi",
"interaction_modal.login.prompt": "Përkatësia e shërbyesit tuaj vatër, p.sh. mastodon.social",
"interaction_modal.no_account_yet": "S’gjendeni në Mastodon?",
@@ -396,6 +398,7 @@
"interaction_modal.title.follow": "Ndiq {name}",
"interaction_modal.title.reblog": "Përforconi postimin e {name}",
"interaction_modal.title.reply": "Përgjigjuni postimit të {name}",
+ "interaction_modal.title.vote": "Votoni te pyetësori nga {name}",
"intervals.full.days": "{number, plural, one {# ditë} other {# ditë}}",
"intervals.full.hours": "{number, plural, one {# orë} other {# orë}}",
"intervals.full.minutes": "{number, plural, one {# minutë} other {# minuta}}",
diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json
index d9d4da4ad0a8c7..7824d076295713 100644
--- a/app/javascript/mastodon/locales/sv.json
+++ b/app/javascript/mastodon/locales/sv.json
@@ -22,7 +22,7 @@
"account.cancel_follow_request": "Återkalla din begäran om att få följa",
"account.copy": "Kopiera länk till profil",
"account.direct": "Nämn @{name} privat",
- "account.disable_notifications": "Sluta notifiera mig när @{name} gör inlägg",
+ "account.disable_notifications": "Sluta meddela mig när @{name} skriver ett inlägg",
"account.domain_blocked": "Domän blockerad",
"account.edit_profile": "Redigera profil",
"account.enable_notifications": "Notifiera mig när @{name} gör inlägg",
@@ -44,7 +44,7 @@
"account.joined_short": "Gick med",
"account.languages": "Ändra vilka språk du helst vill se i ditt flöde",
"account.link_verified_on": "Ägarskap för denna länk kontrollerades den {date}",
- "account.locked_info": "För detta konto har ägaren valt att manuellt godkänna vem som kan följa hen.",
+ "account.locked_info": "Detta konto har låst integritetsstatus. Ägaren väljer manuellt vem som kan följa det.",
"account.media": "Media",
"account.mention": "Nämn @{name}",
"account.moved_to": "{name} har indikerat att hen har ett nytt konto:",
@@ -197,6 +197,7 @@
"confirmations.unfollow.title": "Avfölj %s?",
"content_warning.hide": "Dölj inlägg",
"content_warning.show": "Visa ändå",
+ "content_warning.show_more": "Visa mer",
"conversation.delete": "Radera konversation",
"conversation.mark_as_read": "Markera som läst",
"conversation.open": "Visa konversation",
@@ -305,7 +306,7 @@
"filter_modal.select_filter.subtitle": "Använd en befintlig kategori eller skapa en ny",
"filter_modal.select_filter.title": "Filtrera detta inlägg",
"filter_modal.title.status": "Filtrera ett inlägg",
- "filter_warning.matches_filter": "Matchar filtret \"{title}\"",
+ "filter_warning.matches_filter": "Matchar filtret \"{title}\"",
"filtered_notifications_banner.pending_requests": "Från {count, plural, =0 {ingen} one {en person} other {# personer}} du kanske känner",
"filtered_notifications_banner.title": "Filtrerade aviseringar",
"firehose.all": "Allt",
@@ -385,6 +386,7 @@
"interaction_modal.description.follow": "Med ett Mastodon-konto kan du följa {name} för att se hens inlägg i ditt hemflöde.",
"interaction_modal.description.reblog": "Med ett Mastodon-konto kan du boosta detta inlägg för att dela den med dina egna följare.",
"interaction_modal.description.reply": "Med ett Mastodon-konto kan du svara på detta inlägg.",
+ "interaction_modal.description.vote": "Med ett konto på Mastodon kan du delta i denna omröstning.",
"interaction_modal.login.action": "Ta hem mig",
"interaction_modal.login.prompt": "Domän för din hemserver, t.ex. mastodon.social",
"interaction_modal.no_account_yet": "Inte på Mastodon?",
@@ -396,6 +398,7 @@
"interaction_modal.title.follow": "Följ {name}",
"interaction_modal.title.reblog": "Boosta {name}s inlägg",
"interaction_modal.title.reply": "Svara på {name}s inlägg",
+ "interaction_modal.title.vote": "Rösta i {name}s enkät",
"intervals.full.days": "{number, plural, one {# dag} other {# dagar}}",
"intervals.full.hours": "{number, plural, one {# timme} other {# timmar}}",
"intervals.full.minutes": "{number, plural, one {# minut} other {# minuter}}",
@@ -508,6 +511,7 @@
"notification.favourite": "{name} favoritmarkerade ditt inlägg",
"notification.favourite.name_and_others_with_link": "{name} och {count, plural, one {# annan} other {# andra}} har favoritmarkerat ditt inlägg",
"notification.follow": "{name} följer dig",
+ "notification.follow.name_and_others": "{name} och {count, plural, one {# annan} other {# andra}} följer dig",
"notification.follow_request": "{name} har begärt att följa dig",
"notification.follow_request.name_and_others": "{name} och {count, plural, one {# en annan} other {# andra}} har bett att följa dig",
"notification.label.mention": "Nämn",
@@ -566,6 +570,7 @@
"notifications.column_settings.filter_bar.category": "Snabbfilter",
"notifications.column_settings.follow": "Nya följare:",
"notifications.column_settings.follow_request": "Ny följ-förfrågan:",
+ "notifications.column_settings.group": "Gruppera",
"notifications.column_settings.mention": "Omnämningar:",
"notifications.column_settings.poll": "Omröstningsresultat:",
"notifications.column_settings.push": "Push-aviseringar",
diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json
index d05840aa83e4ac..b0ad6e1c66e1cf 100644
--- a/app/javascript/mastodon/locales/th.json
+++ b/app/javascript/mastodon/locales/th.json
@@ -44,7 +44,7 @@
"account.joined_short": "เข้าร่วมเมื่อ",
"account.languages": "เปลี่ยนภาษาที่บอกรับ",
"account.link_verified_on": "ตรวจสอบความเป็นเจ้าของของลิงก์นี้เมื่อ {date}",
- "account.locked_info": "มีการตั้งสถานะความเป็นส่วนตัวของบัญชีนี้เป็นล็อคอยู่ เจ้าของตรวจทานผู้ที่สามารถติดตามเขาด้วยตนเอง",
+ "account.locked_info": "สถานะความเป็นส่วนตัวของบัญชีนี้ถูกตั้งค่าเป็นล็อค เจ้าของตรวจสอบด้วยตนเองว่าใครสามารถติดตามพวกเขาได้",
"account.media": "สื่อ",
"account.mention": "กล่าวถึง @{name}",
"account.moved_to": "{name} ได้ระบุว่าบัญชีใหม่ของเขาในตอนนี้คือ:",
@@ -158,6 +158,7 @@
"compose_form.poll.duration": "ระยะเวลาการสำรวจความคิดเห็น",
"compose_form.poll.multiple": "หลายตัวเลือก",
"compose_form.poll.option_placeholder": "ตัวเลือก {number}",
+ "compose_form.poll.single": "ตัวเลือกเดียว",
"compose_form.poll.switch_to_multiple": "เปลี่ยนการสำรวจความคิดเห็นเป็นอนุญาตหลายตัวเลือก",
"compose_form.poll.switch_to_single": "เปลี่ยนการสำรวจความคิดเห็นเป็นอนุญาตตัวเลือกเดียว",
"compose_form.poll.type": "ลักษณะ",
@@ -196,6 +197,7 @@
"confirmations.unfollow.title": "เลิกติดตามผู้ใช้?",
"content_warning.hide": "ซ่อนโพสต์",
"content_warning.show": "แสดงต่อไป",
+ "content_warning.show_more": "แสดงเพิ่มเติม",
"conversation.delete": "ลบการสนทนา",
"conversation.mark_as_read": "ทำเครื่องหมายว่าอ่านแล้ว",
"conversation.open": "ดูการสนทนา",
@@ -304,7 +306,7 @@
"filter_modal.select_filter.subtitle": "ใช้หมวดหมู่ที่มีอยู่หรือสร้างหมวดหมู่ใหม่",
"filter_modal.select_filter.title": "กรองโพสต์นี้",
"filter_modal.title.status": "กรองโพสต์",
- "filter_warning.matches_filter": "ตรงกับตัวกรอง “{title}”",
+ "filter_warning.matches_filter": "ตรงกับตัวกรอง “{title}”",
"filtered_notifications_banner.pending_requests": "จาก {count, plural, =0 {ไม่มีใคร} other {# คน}} ที่คุณอาจรู้จัก",
"filtered_notifications_banner.title": "การแจ้งเตือนที่กรองอยู่",
"firehose.all": "ทั้งหมด",
@@ -507,6 +509,7 @@
"notification.favourite": "{name} ได้ชื่นชอบโพสต์ของคุณ",
"notification.favourite.name_and_others_with_link": "{name} และ {count, plural, other {# อื่น ๆ}} ได้ชื่นชอบโพสต์ของคุณ",
"notification.follow": "{name} ได้ติดตามคุณ",
+ "notification.follow.name_and_others": "{name} และ {count, plural, other {# อื่น ๆ}} ได้ติดตามคุณ",
"notification.follow_request": "{name} ได้ขอติดตามคุณ",
"notification.follow_request.name_and_others": "{name} และ {count, plural, other {# อื่น ๆ}} ได้ขอติดตามคุณ",
"notification.label.mention": "การกล่าวถึง",
@@ -565,6 +568,7 @@
"notifications.column_settings.filter_bar.category": "แถบตัวกรองด่วน",
"notifications.column_settings.follow": "ผู้ติดตามใหม่:",
"notifications.column_settings.follow_request": "คำขอติดตามใหม่:",
+ "notifications.column_settings.group": "จัดกลุ่ม",
"notifications.column_settings.mention": "การกล่าวถึง:",
"notifications.column_settings.poll": "ผลลัพธ์การสำรวจความคิดเห็น:",
"notifications.column_settings.push": "การแจ้งเตือนแบบผลัก",
@@ -851,6 +855,11 @@
"upload_error.poll": "ไม่อนุญาตการอัปโหลดไฟล์โดยมีการสำรวจความคิดเห็น",
"upload_form.audio_description": "อธิบายสำหรับผู้ที่สูญเสียการได้ยิน",
"upload_form.description": "อธิบายสำหรับผู้คนที่พิการทางการมองเห็นหรือมีสายตาเลือนราง",
+ "upload_form.drag_and_drop.instructions": "หากต้องการเลือกไฟล์สื่อ ให้กดปุ่มที Space หรือ Enter บนแป้นพิมพ์ เมื่อเลือกไฟล์ได้แล้ว ก็สามารถใช้ปุ่มลูกศรเพื่อเลื่อนไฟล์ไปในทิศทางที่ต้องการได้ เมื่อต้องการวางไฟล์ในตำแหน่งใหม่ ให้กดปุ่ม Space หรือ Enter ดูอีกครั้ง หรือหากต้องการยกเลิกการเลือก ให้กดปุ่ม Esc ได้",
+ "upload_form.drag_and_drop.on_drag_cancel": "การลากไฟล์นั้นหยุดชะงัก ไฟล์ที่กำลังแนบมาถูกยกเลิก {item} ได้ถูกลบทิ้งแล้ว",
+ "upload_form.drag_and_drop.on_drag_end": "ไฟล์แนบ {item} ได้ถูกยกเลิกแล้ว",
+ "upload_form.drag_and_drop.on_drag_over": "ไฟล์แนบ {item} ได้ถูกย้ายไปแล้ว",
+ "upload_form.drag_and_drop.on_drag_start": "ได้รับไฟล์แนบเรียบร้อยแล้ว {item}.",
"upload_form.edit": "แก้ไข",
"upload_form.thumbnail": "เปลี่ยนภาพขนาดย่อ",
"upload_form.video_description": "อธิบายสำหรับผู้คนที่พิการทางการได้ยิน ได้ยินไม่ชัด พิการทางการมองเห็น หรือมีสายตาเลือนราง",
diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json
index dae573370a637f..5ac5a3368b4c5d 100644
--- a/app/javascript/mastodon/locales/tr.json
+++ b/app/javascript/mastodon/locales/tr.json
@@ -197,6 +197,7 @@
"confirmations.unfollow.title": "Kullanıcıyı takipten çık?",
"content_warning.hide": "Gönderiyi gizle",
"content_warning.show": "Yine de göster",
+ "content_warning.show_more": "Daha fazla göster",
"conversation.delete": "Sohbeti sil",
"conversation.mark_as_read": "Okundu olarak işaretle",
"conversation.open": "Sohbeti görüntüle",
@@ -305,7 +306,7 @@
"filter_modal.select_filter.subtitle": "Mevcut bir kategoriyi kullan veya yeni bir tane oluştur",
"filter_modal.select_filter.title": "Bu gönderiyi süzgeçle",
"filter_modal.title.status": "Bir gönderi süzgeçle",
- "filter_warning.matches_filter": "“{title}” filtresiyle eşleşiyor",
+ "filter_warning.matches_filter": "“{title}” filtresiyle eşleşiyor",
"filtered_notifications_banner.pending_requests": "Bildiğiniz {count, plural, =0 {hiç kimseden} one {bir kişiden} other {# kişiden}}",
"filtered_notifications_banner.title": "Filtrelenmiş bildirimler",
"firehose.all": "Tümü",
@@ -385,6 +386,7 @@
"interaction_modal.description.follow": "Mastodon'daki bir hesapla, {name} kişisini, ana akışınızdaki gönderilerini görmek üzere takip edebilirsiniz.",
"interaction_modal.description.reblog": "Mastodon'daki bir hesapla, bu gönderiyi takipçilerinizle paylaşmak için tuşlayabilirsiniz.",
"interaction_modal.description.reply": "Mastodon'daki bir hesapla, bu gönderiye yanıt verebilirsiniz.",
+ "interaction_modal.description.vote": "Mastodon'daki bir hesapla, bu ankette oy kullanabilirsiniz.",
"interaction_modal.login.action": "Anasayfaya geri dön",
"interaction_modal.login.prompt": "Ev sunucunuzun etki alanı, örneğin mastodon.social",
"interaction_modal.no_account_yet": "Mastodon açık değil?",
@@ -396,6 +398,7 @@
"interaction_modal.title.follow": "{name} kişisini takip et",
"interaction_modal.title.reblog": "{name} kişisinin gönderisini yeniden paylaş",
"interaction_modal.title.reply": "{name} kişisinin gönderisine yanıt ver",
+ "interaction_modal.title.vote": "{name} kullanıcısının anketinde oy kullan",
"intervals.full.days": "{number, plural, one {# gün} other {# gün}}",
"intervals.full.hours": "{number, plural, one {# saat} other {# saat}}",
"intervals.full.minutes": "{number, plural, one {# dakika} other {# dakika}}",
diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json
index 66392afd79fcb3..fc396aa9339cca 100644
--- a/app/javascript/mastodon/locales/uk.json
+++ b/app/javascript/mastodon/locales/uk.json
@@ -158,6 +158,7 @@
"compose_form.poll.duration": "Тривалість опитування",
"compose_form.poll.multiple": "Кілька варіантів",
"compose_form.poll.option_placeholder": "Варіант {number}",
+ "compose_form.poll.single": "Один вибір",
"compose_form.poll.switch_to_multiple": "Дозволити вибір декількох відповідей",
"compose_form.poll.switch_to_single": "Перемкнути у режим вибору однієї відповіді",
"compose_form.poll.type": "Стиль",
@@ -196,6 +197,7 @@
"confirmations.unfollow.title": "Відписатися від користувача?",
"content_warning.hide": "Сховати допис",
"content_warning.show": "Усе одно показати",
+ "content_warning.show_more": "Показати більше",
"conversation.delete": "Видалити бесіду",
"conversation.mark_as_read": "Позначити як прочитане",
"conversation.open": "Переглянути бесіду",
@@ -304,7 +306,7 @@
"filter_modal.select_filter.subtitle": "Використати наявну категорію або створити нову",
"filter_modal.select_filter.title": "Фільтрувати цей допис",
"filter_modal.title.status": "Фільтрувати допис",
- "filter_warning.matches_filter": "Збігається з фільтром “{title}”",
+ "filter_warning.matches_filter": "Збігається з фільтром “{title}”",
"filtered_notifications_banner.pending_requests": "Від {count, plural, =0 {жодної особи} one {однієї особи} few {# осіб} many {# осіб} other {# особи}}, котрих ви можете знати",
"filtered_notifications_banner.title": "Відфільтровані сповіщення",
"firehose.all": "Всі",
@@ -384,6 +386,7 @@
"interaction_modal.description.follow": "Маючи обліковий запис на Mastodon, ви можете підписатися на {name}, щоб отримувати дописи цього користувача у свою стрічку.",
"interaction_modal.description.reblog": "Маючи обліковий запис на Mastodon, ви можете поширити цей допис, щоб поділитися ним зі своїми підписниками.",
"interaction_modal.description.reply": "Маючи обліковий запис на Mastodon, ви можете відповісти на цей допис.",
+ "interaction_modal.description.vote": "Маючи обліковий запис на Mastodon, ви можете проголосувати в цьому опитуванні.",
"interaction_modal.login.action": "На домашню сторінку",
"interaction_modal.login.prompt": "Домен вашого домашнього сервера, наприклад, mastodon.social",
"interaction_modal.no_account_yet": "Не зареєстровані в Mastodon?",
@@ -395,6 +398,7 @@
"interaction_modal.title.follow": "Підписатися на {name}",
"interaction_modal.title.reblog": "Поширити допис {name}",
"interaction_modal.title.reply": "Відповісти на допис {name}",
+ "interaction_modal.title.vote": "Проголосувати в опитуванні {name}",
"intervals.full.days": "{number, plural, one {# день} few {# дні} other {# днів}}",
"intervals.full.hours": "{number, plural, one {# година} few {# години} other {# годин}}",
"intervals.full.minutes": "{number, plural, one {# хвилина} few {# хвилини} other {# хвилин}}",
@@ -507,6 +511,7 @@
"notification.favourite": "Ваш допис сподобався {name}",
"notification.favourite.name_and_others_with_link": "{name} та {count, plural, one {# інший} few {# інших} many {# інших} other {# інший}} вподобали ваш допис",
"notification.follow": "{name} підписалися на вас",
+ "notification.follow.name_and_others": "{name} та {count, plural, one {# інший} few {# інших} many {# інших} other {# інший}} стежать за вами",
"notification.follow_request": "{name} відправили запит на підписку",
"notification.follow_request.name_and_others": "{name} та {count, plural, one {# інший} few {# інших} many {# інших} other {# інший}} надсилають вам запит на стеження",
"notification.label.mention": "Згадка",
@@ -565,7 +570,7 @@
"notifications.column_settings.filter_bar.category": "Панель швидкого фільтра",
"notifications.column_settings.follow": "Нові підписники:",
"notifications.column_settings.follow_request": "Нові запити на підписку:",
- "notifications.column_settings.group": "Група",
+ "notifications.column_settings.group": "Групувати",
"notifications.column_settings.mention": "Згадки:",
"notifications.column_settings.poll": "Результати опитування:",
"notifications.column_settings.push": "Push-сповіщення",
diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json
index 1daeada1a28986..7ae955c1b0ca6f 100644
--- a/app/javascript/mastodon/locales/vi.json
+++ b/app/javascript/mastodon/locales/vi.json
@@ -197,6 +197,7 @@
"confirmations.unfollow.title": "Bỏ theo dõi",
"content_warning.hide": "Ẩn lại",
"content_warning.show": "Nhấn để xem",
+ "content_warning.show_more": "Hiện thêm",
"conversation.delete": "Xóa tin nhắn này",
"conversation.mark_as_read": "Đánh dấu là đã đọc",
"conversation.open": "Xem toàn bộ tin nhắn",
@@ -305,7 +306,7 @@
"filter_modal.select_filter.subtitle": "Sử dụng một danh mục hiện có hoặc tạo một danh mục mới",
"filter_modal.select_filter.title": "Lọc tút này",
"filter_modal.title.status": "Lọc một tút",
- "filter_warning.matches_filter": "Khớp bộ lọc “{title}”",
+ "filter_warning.matches_filter": "Khớp bộ lọc “{title}”",
"filtered_notifications_banner.pending_requests": "Từ {count, plural, =0 {không ai} other {# người}} bạn có thể biết",
"filtered_notifications_banner.title": "Thông báo đã lọc",
"firehose.all": "Toàn bộ",
@@ -385,6 +386,7 @@
"interaction_modal.description.follow": "Với tài khoản Mastodon, bạn có thể theo dõi {name} để tút của họ hiện trên bảng tin của mình.",
"interaction_modal.description.reblog": "Với tài khoản Mastodon, bạn có thể đăng lại tút này để chia sẻ nó với những người đang theo dõi bạn.",
"interaction_modal.description.reply": "Với tài khoản Mastodon, bạn có thể trả lời tút này.",
+ "interaction_modal.description.vote": "Với tài khoản Mastodon, bạn có thể tham gia bình chọn.",
"interaction_modal.login.action": "Đăng nhập ngay",
"interaction_modal.login.prompt": "Địa chỉ máy chủ của bạn, vd: mastodon.social",
"interaction_modal.no_account_yet": "Chưa có tài khoản Mastodon?",
@@ -396,6 +398,7 @@
"interaction_modal.title.follow": "Theo dõi {name}",
"interaction_modal.title.reblog": "Đăng lại tút của {name}",
"interaction_modal.title.reply": "Trả lời tút của {name}",
+ "interaction_modal.title.vote": "Bình chọn cùng {name}",
"intervals.full.days": "{number, plural, other {# ngày}}",
"intervals.full.hours": "{number, plural, other {# giờ}}",
"intervals.full.minutes": "{number, plural, other {# phút}}",
diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json
index 3b1e6b813de9e0..603ec5d791a6a7 100644
--- a/app/javascript/mastodon/locales/zh-CN.json
+++ b/app/javascript/mastodon/locales/zh-CN.json
@@ -197,6 +197,7 @@
"confirmations.unfollow.title": "是否取消关注用户?",
"content_warning.hide": "隐藏嘟文",
"content_warning.show": "仍然显示",
+ "content_warning.show_more": "显示更多",
"conversation.delete": "删除对话",
"conversation.mark_as_read": "标记为已读",
"conversation.open": "查看对话",
@@ -305,7 +306,7 @@
"filter_modal.select_filter.subtitle": "使用一个已存在类别,或创建一个新类别",
"filter_modal.select_filter.title": "过滤此嘟文",
"filter_modal.title.status": "过滤一条嘟文",
- "filter_warning.matches_filter": "命中过滤规则 “{title}”",
+ "filter_warning.matches_filter": "命中过滤规则 “{title}”",
"filtered_notifications_banner.pending_requests": "来自你可能认识的 {count, plural, =0 {0 个人} other {# 个人}}",
"filtered_notifications_banner.title": "通知(已过滤)",
"firehose.all": "全部",
@@ -382,9 +383,10 @@
"ignore_notifications_modal.not_following_title": "是否忽略你未关注的人的通知?",
"ignore_notifications_modal.private_mentions_title": "是否忽略不请自来的私下提及?",
"interaction_modal.description.favourite": "只需一个 Mastodon 账号,即可喜欢这条嘟文,对嘟文的作者展示您欣赏的态度,并保存嘟文以供日后使用。",
- "interaction_modal.description.follow": "拥有一个 Mastodon 账号,你可以关注 {name} 并在自己的主页上接收对方的新嘟文。",
- "interaction_modal.description.reblog": "拥有一个 Mastodon 账号,你可以向自己的关注者们转发此嘟文。",
- "interaction_modal.description.reply": "拥有一个 Mastodon 账号,你可以回复此嘟文。",
+ "interaction_modal.description.follow": "拥有一个 Mastodon 账号,你就可以关注 {name} 并在自己的主页上接收对方的新嘟文。",
+ "interaction_modal.description.reblog": "拥有一个 Mastodon 账号,你就可以向自己的关注者们转发此嘟文。",
+ "interaction_modal.description.reply": "拥有一个 Mastodon 账号,你就可以回复此嘟文。",
+ "interaction_modal.description.vote": "拥有一个 Mastodon 账号,你就可以参与此投票。",
"interaction_modal.login.action": "转到主页",
"interaction_modal.login.prompt": "您所入驻的服务器域名,如:mastodon.social",
"interaction_modal.no_account_yet": "不在 Mastodon 上?",
@@ -396,6 +398,7 @@
"interaction_modal.title.follow": "关注 {name}",
"interaction_modal.title.reblog": "转发 {name} 的嘟文",
"interaction_modal.title.reply": "回复 {name} 的嘟文",
+ "interaction_modal.title.vote": "参与 {name} 的投票",
"intervals.full.days": "{number} 天",
"intervals.full.hours": "{number} 小时",
"intervals.full.minutes": "{number} 分钟",
diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json
index 62a43fa7e4b723..8acd6df078ebb6 100644
--- a/app/javascript/mastodon/locales/zh-HK.json
+++ b/app/javascript/mastodon/locales/zh-HK.json
@@ -11,6 +11,7 @@
"about.not_available": "本伺服器尚未提供這資訊。",
"about.powered_by": "由 {mastodon} 提供之去中心化社交媒體",
"about.rules": "伺服器規則",
+ "account.account_note_header": "個人筆記",
"account.add_or_remove_from_list": "從列表中新增或移除",
"account.badges.bot": "機械人",
"account.badges.group": "群組",
@@ -33,6 +34,7 @@
"account.follow_back": "追蹤對方",
"account.followers": "追蹤者",
"account.followers.empty": "尚未有人追蹤這位使用者。",
+ "account.followers_counter": "{count, plural, other {{counter} 個追蹤者}}",
"account.following": "正在追蹤",
"account.follows.empty": "這位使用者尚未追蹤任何人。",
"account.go_to_profile": "前往個人檔案",
@@ -81,6 +83,7 @@
"alert.rate_limited.title": "已限速",
"alert.unexpected.message": "發生意外錯誤。",
"alert.unexpected.title": "失敗!",
+ "alt_text_badge.title": "替代文字",
"announcement.announcement": "公告",
"attachments_list.unprocessed": "(未處理)",
"audio.hide": "隱藏音訊",
@@ -151,6 +154,7 @@
"compose_form.poll.duration": "投票期限",
"compose_form.poll.multiple": "多選",
"compose_form.poll.option_placeholder": "選項 {number}",
+ "compose_form.poll.single": "單一選擇",
"compose_form.poll.switch_to_multiple": "變更投票為允許多個選項",
"compose_form.poll.switch_to_single": "變更投票為限定單一選項",
"compose_form.poll.type": "風格",
@@ -168,6 +172,7 @@
"confirmations.delete.title": "刪除帖文?",
"confirmations.delete_list.confirm": "刪除",
"confirmations.delete_list.message": "你確定要永久刪除這列表嗎?",
+ "confirmations.delete_list.title": "刪除列表?",
"confirmations.discard_edit_media.confirm": "捨棄",
"confirmations.discard_edit_media.message": "您在媒體描述或預覽有尚未儲存的變更。確定要捨棄它們嗎?",
"confirmations.edit.confirm": "編輯",
@@ -182,6 +187,9 @@
"confirmations.reply.message": "現在回覆將蓋掉您目前正在撰寫的訊息。是否仍要回覆?",
"confirmations.unfollow.confirm": "取消追蹤",
"confirmations.unfollow.message": "真的不要繼續追蹤 {name} 了嗎?",
+ "confirmations.unfollow.title": "取消追蹤使用者?",
+ "content_warning.hide": "隱藏嘟文",
+ "content_warning.show": "仍要顯示",
"conversation.delete": "刪除對話",
"conversation.mark_as_read": "標為已讀",
"conversation.open": "檢視對話",
@@ -343,6 +351,7 @@
"home.pending_critical_update.link": "查看更新",
"home.pending_critical_update.title": "有重要的安全更新!",
"home.show_announcements": "顯示公告",
+ "ignore_notifications_modal.ignore": "忽略推播通知",
"interaction_modal.description.favourite": "有了 Mastodon 的帳號,你便可以把這篇帖文加入最愛,讓作者知道你欣賞他的作品,並可以稍後再閱讀。",
"interaction_modal.description.follow": "在 Mastodon 上有個帳號的話,您可以追蹤 {name} 以於首頁時間軸接收他們的帖文。",
"interaction_modal.description.reblog": "在 Mastodon 上有個帳號的話,您可以向自己的追縱者們轉發此帖文。",
@@ -417,6 +426,7 @@
"lists.subheading": "列表",
"load_pending": "{count, plural, other {# 個新項目}}",
"loading_indicator.label": "載入中…",
+ "media_gallery.hide": "隱藏",
"moved_to_account_banner.text": "您的帳號 {disabledAccount} 目前已停用,因為您已搬家至 {movedToAccount}。",
"mute_modal.hide_from_notifications": "隱藏通知",
"mute_modal.hide_options": "隱藏選項",
diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json
index 388e09fc98ac03..a3de26ffc40dca 100644
--- a/app/javascript/mastodon/locales/zh-TW.json
+++ b/app/javascript/mastodon/locales/zh-TW.json
@@ -1,7 +1,7 @@
{
"about.blocks": "被限制的伺服器",
"about.contact": "聯絡我們:",
- "about.disclaimer": "Mastodon 是一個自由的開源軟體,是 Mastodon gGmbH 的註冊商標。",
+ "about.disclaimer": "Mastodon 是一個自由的開源軟體,是 Mastodon gGmbH 之註冊商標。",
"about.domain_blocks.no_reason_available": "無法存取的原因",
"about.domain_blocks.preamble": "Mastodon 基本上允許您瀏覽聯邦宇宙中任何伺服器的內容並與使用者互動。以下是在本伺服器上設定的例外。",
"about.domain_blocks.silenced.explanation": "一般來說您不會看到來自這個伺服器的個人檔案和內容,除非您明確搜尋或主動跟隨對方。",
@@ -197,6 +197,7 @@
"confirmations.unfollow.title": "是否取消跟隨該使用者?",
"content_warning.hide": "隱藏嘟文",
"content_warning.show": "仍要顯示",
+ "content_warning.show_more": "顯示更多",
"conversation.delete": "刪除對話",
"conversation.mark_as_read": "標記為已讀",
"conversation.open": "檢視對話",
@@ -305,7 +306,7 @@
"filter_modal.select_filter.subtitle": "使用既有的類別或是新增",
"filter_modal.select_filter.title": "過濾此嘟文",
"filter_modal.title.status": "過濾一則嘟文",
- "filter_warning.matches_filter": "匹配過濾器「{title}」",
+ "filter_warning.matches_filter": "符合過濾器「{title}」",
"filtered_notifications_banner.pending_requests": "來自您可能認識的 {count, plural, =0 {0 人} other {# 人}}",
"filtered_notifications_banner.title": "已過濾之推播通知",
"firehose.all": "全部",
@@ -385,6 +386,7 @@
"interaction_modal.description.follow": "若於 Mastodon 上有個帳號,您可以跟隨 {name} 以於首頁時間軸接收他們的嘟文。",
"interaction_modal.description.reblog": "若於 Mastodon 上有個帳號,您可以轉嘟此嘟文以向您的跟隨者們分享。",
"interaction_modal.description.reply": "若於 Mastodon 上有個帳號,您可以回覆此嘟文。",
+ "interaction_modal.description.vote": "若於 Mastodon 上有個帳號,您可以參與此投票。",
"interaction_modal.login.action": "返回首頁",
"interaction_modal.login.prompt": "您帳號所屬伺服器之網域,例如:mastodon.social",
"interaction_modal.no_account_yet": "還沒有 Mastodon 帳號嗎?",
@@ -396,9 +398,10 @@
"interaction_modal.title.follow": "跟隨 {name}",
"interaction_modal.title.reblog": "轉嘟 {name} 的嘟文",
"interaction_modal.title.reply": "回覆 {name} 的嘟文",
- "intervals.full.days": "{number, plural, one {# 天} other {# 天}}",
- "intervals.full.hours": "{number, plural, one {# 小時} other {# 小時}}",
- "intervals.full.minutes": "{number, plural, one {# 分鐘} other {# 分鐘}}",
+ "interaction_modal.title.vote": "參與 {name} 之投票",
+ "intervals.full.days": "{number, plural, other {# 天}}",
+ "intervals.full.hours": "{number, plural, other {# 小時}}",
+ "intervals.full.minutes": "{number, plural, other {# 分鐘}}",
"keyboard_shortcuts.back": "上一頁",
"keyboard_shortcuts.blocked": "開啟「封鎖使用者」列表",
"keyboard_shortcuts.boost": "轉嘟",
@@ -457,7 +460,7 @@
"lists.replies_policy.title": "顯示回覆:",
"lists.search": "搜尋您跟隨之使用者",
"lists.subheading": "您的列表",
- "load_pending": "{count, plural, one {# 個新項目} other {# 個新項目}}",
+ "load_pending": "{count, plural, other {# 個新項目}}",
"loading_indicator.label": "正在載入...",
"media_gallery.hide": "隱藏",
"moved_to_account_banner.text": "您的帳號 {disabledAccount} 目前已停用,因為您已搬家至 {movedToAccount}。",
@@ -499,8 +502,8 @@
"navigation_bar.security": "安全性",
"not_signed_in_indicator.not_signed_in": "您需要登入才能存取此資源。",
"notification.admin.report": "{name} 已檢舉 {target}",
- "notification.admin.report_account": "{name} 已檢舉來自 {target} 關於 {category} 之 {count, plural, other {# 則嘟文}} ",
- "notification.admin.report_account_other": "{name} 已檢舉來自 {target} 之 {count, plural, other {# 則嘟文}} ",
+ "notification.admin.report_account": "{name} 已檢舉來自 {target} 關於 {category} 之 {count, plural, other {# 則嘟文}}",
+ "notification.admin.report_account_other": "{name} 已檢舉來自 {target} 之 {count, plural, other {# 則嘟文}}",
"notification.admin.report_statuses": "{name} 已檢舉 {target} 關於 {category}",
"notification.admin.report_statuses_other": "{name} 已檢舉 {target}",
"notification.admin.sign_up": "{name} 已經註冊",
@@ -655,11 +658,11 @@
"poll.closed": "已關閉",
"poll.refresh": "重新整理",
"poll.reveal": "檢視結果",
- "poll.total_people": "{count, plural, one {# 個投票} other {# 個投票}}",
- "poll.total_votes": "{count, plural, one {# 個投票} other {# 個投票}}",
+ "poll.total_people": "{count, plural, other {# 個人}}",
+ "poll.total_votes": "{count, plural, other {# 張票}}",
"poll.vote": "投票",
"poll.voted": "您已對此問題投票",
- "poll.votes": "{votes, plural, one {# 張票} other {# 張票}}",
+ "poll.votes": "{votes, plural, other {# 張票}}",
"poll_button.add_poll": "新增投票",
"poll_button.remove_poll": "移除投票",
"privacy.change": "調整嘟文隱私狀態",
@@ -680,10 +683,10 @@
"regeneration_indicator.sublabel": "您的首頁時間軸正在準備中!",
"relative_time.days": "{number} 天",
"relative_time.full.days": "{number, plural, other {# 天}}前",
- "relative_time.full.hours": "{number, plural, one {# 小時} other {# 小時}}前",
+ "relative_time.full.hours": "{number, plural, other {# 小時}}前",
"relative_time.full.just_now": "剛剛",
- "relative_time.full.minutes": "{number, plural, one {# 分鐘} other {# 分鐘}}前",
- "relative_time.full.seconds": "{number, plural, one {# 秒} other {# 秒}}前",
+ "relative_time.full.minutes": "{number, plural, other {# 分鐘}}前",
+ "relative_time.full.seconds": "{number, plural, other {# 秒}}前",
"relative_time.hours": "{number} 小時前",
"relative_time.just_now": "剛剛",
"relative_time.minutes": "{number} 分鐘前",
@@ -793,7 +796,7 @@
"status.edited_x_times": "已編輯 {count, plural, one {{count} 次} other {{count} 次}}",
"status.embed": "取得嵌入程式碼",
"status.favourite": "最愛",
- "status.favourites": "{count, plural, other {# 則最愛}}",
+ "status.favourites": "{count, plural, other {則最愛}}",
"status.filter": "過濾此嘟文",
"status.history.created": "{name} 於 {date} 建立",
"status.history.edited": "{name} 於 {date} 修改",
@@ -812,7 +815,7 @@
"status.reblog": "轉嘟",
"status.reblog_private": "依照原嘟可見性轉嘟",
"status.reblogged_by": "{name} 已轉嘟",
- "status.reblogs": "{count, plural, other {# 則轉嘟}}",
+ "status.reblogs": "{count, plural, other {則轉嘟}}",
"status.reblogs.empty": "還沒有人轉嘟過這則嘟文。當有人轉嘟時,它將於此顯示。",
"status.redraft": "刪除並重新編輯",
"status.remove_bookmark": "移除書籤",
@@ -837,11 +840,11 @@
"subscribed_languages.target": "變更 {target} 的訂閱語言",
"tabs_bar.home": "首頁",
"tabs_bar.notifications": "通知",
- "time_remaining.days": "剩餘 {number, plural, one {# 天} other {# 天}}",
- "time_remaining.hours": "剩餘 {number, plural, one {# 小時} other {# 小時}}",
- "time_remaining.minutes": "剩餘 {number, plural, one {# 分鐘} other {# 分鐘}}",
+ "time_remaining.days": "剩餘 {number, plural, other {# 天}}",
+ "time_remaining.hours": "剩餘{number, plural, other {# 小時}}",
+ "time_remaining.minutes": "剩餘{number, plural, other {# 分鐘}}",
"time_remaining.moments": "剩餘時間",
- "time_remaining.seconds": "剩餘 {number, plural, one {# 秒} other {# 秒}}",
+ "time_remaining.seconds": "剩餘{number, plural, other {# 秒}}",
"trends.counter_by_accounts": "{count, plural, one {{counter} 人} other {{counter} 人}}於過去 {days, plural, one {日} other {{days} 日}} 之間",
"trends.trending_now": "現正熱門趨勢",
"ui.beforeunload": "如果離開 Mastodon,您的草稿將會不見。",
diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss
index 420d0abca08e34..1e7cb4c63b28f5 100644
--- a/app/javascript/styles/mastodon/components.scss
+++ b/app/javascript/styles/mastodon/components.scss
@@ -2769,6 +2769,7 @@ a.account__display-name {
flex: 0 1 auto;
display: flex;
flex-direction: column;
+ contain: inline-size layout paint style;
@media screen and (min-width: $no-gap-breakpoint) {
max-width: 600px;
@@ -4042,6 +4043,7 @@ $ui-header-logo-wordmark-width: 99px;
overflow: hidden;
border: 1px solid var(--background-border-color);
border-radius: 8px;
+ contain: inline-size layout paint style;
&.bottomless {
border-radius: 8px 8px 0 0;
@@ -5819,6 +5821,7 @@ a.status-card {
pointer-events: auto;
user-select: text;
display: flex;
+ max-width: 100vw;
@media screen and (width <= $mobile-breakpoint) {
margin-top: auto;
diff --git a/app/lib/activitypub/activity.rb b/app/lib/activitypub/activity.rb
index 322f3e27adb604..29411774a1be3c 100644
--- a/app/lib/activitypub/activity.rb
+++ b/app/lib/activitypub/activity.rb
@@ -20,9 +20,9 @@ def perform
end
class << self
- def factory(json, account, **options)
+ def factory(json, account, **)
@json = json
- klass&.new(json, account, **options)
+ klass&.new(json, account, **)
end
private
diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb
index 9009c66cf21784..a451dd2528be96 100644
--- a/app/lib/activitypub/activity/create.rb
+++ b/app/lib/activitypub/activity/create.rb
@@ -2,7 +2,7 @@
class ActivityPub::Activity::Create < ActivityPub::Activity
include FormattingHelper
- prepend Mastodon::Spam::Activity::Rejecter
+ prepend Mastodon::Spam::Activity::Rejecter if ENV['SPAM_ACTIVITY_REJECTER_ENABLED']
def perform
@account.schedule_refresh_if_stale!
@@ -54,6 +54,7 @@ def process_status
ApplicationRecord.transaction do
@status = Status.create!(@params)
attach_tags(@status)
+ attach_counts(@status)
end
resolve_thread(@status)
@@ -167,6 +168,18 @@ def attach_tags(status)
end
end
+ def attach_counts(status)
+ likes = @status_parser.favourites_count
+ shares = @status_parser.reblogs_count
+ return if likes.nil? && shares.nil?
+
+ status.status_stat.tap do |status_stat|
+ status_stat.untrusted_reblogs_count = shares unless shares.nil?
+ status_stat.untrusted_favourites_count = likes unless likes.nil?
+ status_stat.save if status_stat.changed?
+ end
+ end
+
def process_tags
return if @object['tag'].nil?
diff --git a/app/lib/activitypub/parser/status_parser.rb b/app/lib/activitypub/parser/status_parser.rb
index 2940aea44b7b95..3d2be3c66cc922 100644
--- a/app/lib/activitypub/parser/status_parser.rb
+++ b/app/lib/activitypub/parser/status_parser.rb
@@ -93,6 +93,14 @@ def language
lang.presence && NORMALIZED_LOCALE_NAMES.fetch(lang.downcase.to_sym, lang)
end
+ def favourites_count
+ @object.dig(:likes, :totalItems)
+ end
+
+ def reblogs_count
+ @object.dig(:shares, :totalItems)
+ end
+
private
def raw_language_code
diff --git a/app/lib/annual_report/commonly_interacted_with_accounts.rb b/app/lib/annual_report/commonly_interacted_with_accounts.rb
index e7482f0d52a792..30ab671d8a821c 100644
--- a/app/lib/annual_report/commonly_interacted_with_accounts.rb
+++ b/app/lib/annual_report/commonly_interacted_with_accounts.rb
@@ -7,7 +7,7 @@ def generate
{
commonly_interacted_with_accounts: commonly_interacted_with_accounts.map do |(account_id, count)|
{
- account_id: account_id,
+ account_id: account_id.to_s,
count: count,
}
end,
diff --git a/app/lib/annual_report/most_reblogged_accounts.rb b/app/lib/annual_report/most_reblogged_accounts.rb
index 39ed3868ea06ad..cfc4022ca79019 100644
--- a/app/lib/annual_report/most_reblogged_accounts.rb
+++ b/app/lib/annual_report/most_reblogged_accounts.rb
@@ -7,7 +7,7 @@ def generate
{
most_reblogged_accounts: most_reblogged_accounts.map do |(account_id, count)|
{
- account_id: account_id,
+ account_id: account_id.to_s,
count: count,
}
end,
diff --git a/app/lib/annual_report/top_statuses.rb b/app/lib/annual_report/top_statuses.rb
index c5abeaa58d81d2..74b129595ac1a3 100644
--- a/app/lib/annual_report/top_statuses.rb
+++ b/app/lib/annual_report/top_statuses.rb
@@ -8,9 +8,9 @@ def generate
{
top_statuses: {
- by_reblogs: top_reblogs,
- by_favourites: top_favourites,
- by_replies: top_replies,
+ by_reblogs: top_reblogs&.to_s,
+ by_favourites: top_favourites&.to_s,
+ by_replies: top_replies&.to_s,
},
}
end
diff --git a/app/lib/attachment_batch.rb b/app/lib/attachment_batch.rb
index 32ccb0b13c1fb1..374abfac49038d 100644
--- a/app/lib/attachment_batch.rb
+++ b/app/lib/attachment_batch.rb
@@ -77,10 +77,22 @@ def remove_files
when :fog
logger.debug { "Deleting #{attachment.path(style)}" }
+ retries = 0
begin
attachment.send(:directory).files.new(key: attachment.path(style)).destroy
- rescue Fog::Storage::OpenStack::NotFound
- # Ignore failure to delete a file that has already been deleted
+ rescue Fog::OpenStack::Storage::NotFound
+ logger.debug "Will ignore because file is not found #{attachment.path(style)}"
+ 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 fog failed after #{e.message}"
+ raise e
+ end
end
when :azure
logger.debug { "Deleting #{attachment.path(style)}" }
diff --git a/app/lib/rss/element.rb b/app/lib/rss/element.rb
index 7142fa03965bdc..073fad12341d58 100644
--- a/app/lib/rss/element.rb
+++ b/app/lib/rss/element.rb
@@ -1,8 +1,8 @@
# frozen_string_literal: true
class RSS::Element
- def self.with(*args, &block)
- new(*args).tap(&block).to_element
+ def self.with(*, &block)
+ new(*).tap(&block).to_element
end
def create_element(name, content = nil)
diff --git a/app/lib/text_formatter.rb b/app/lib/text_formatter.rb
index 2b3febc219bac4..5e8e73a2173f40 100644
--- a/app/lib/text_formatter.rb
+++ b/app/lib/text_formatter.rb
@@ -33,17 +33,24 @@ def entities
def to_s
return ''.html_safe if text.blank?
- html = rewrite do |entity|
- if entity[:url]
- link_to_url(entity)
- elsif entity[:hashtag]
- link_to_hashtag(entity)
- elsif entity[:screen_name]
- link_to_mention(entity)
+ html = nil
+ MastodonOTELTracer.in_span('TextFormatter#to_s extract_and_rewrite') do
+ html = rewrite do |entity|
+ if entity[:url]
+ link_to_url(entity)
+ elsif entity[:hashtag]
+ link_to_hashtag(entity)
+ elsif entity[:screen_name]
+ link_to_mention(entity)
+ end
end
end
- html = simple_format(html, {}, sanitize: false).delete("\n") if multiline?
+ if multiline?
+ MastodonOTELTracer.in_span('TextFormatter#to_s simple_format') do
+ html = simple_format(html, {}, sanitize: false).delete("\n")
+ end
+ end
html.html_safe # rubocop:disable Rails/OutputSafety
end
@@ -93,48 +100,54 @@ def rewrite
end
def link_to_url(entity)
- TextFormatter.shortened_link(entity[:url], rel_me: with_rel_me?)
+ MastodonOTELTracer.in_span('TextFormatter#link_to_url') do
+ TextFormatter.shortened_link(entity[:url], rel_me: with_rel_me?)
+ end
end
def link_to_hashtag(entity)
- hashtag = entity[:hashtag]
- url = tag_url(hashtag)
+ MastodonOTELTracer.in_span('TextFormatter#link_to_hashtag') do
+ hashtag = entity[:hashtag]
+ url = tag_url(hashtag)
- <<~HTML.squish
- ##{h(hashtag)}
- HTML
+ <<~HTML.squish
+ ##{h(hashtag)}
+ HTML
+ end
end
def link_to_mention(entity)
- username, domain = entity[:screen_name].split('@')
- domain = nil if local_domain?(domain)
- account = nil
-
- if preloaded_accounts?
- same_username_hits = 0
-
- preloaded_accounts.each do |other_account|
- same_username = other_account.username.casecmp(username).zero?
- same_domain = other_account.domain.nil? ? domain.nil? : other_account.domain.casecmp(domain)&.zero?
-
- if same_username && !same_domain
- same_username_hits += 1
- elsif same_username && same_domain
- account = other_account
+ MastodonOTELTracer.in_span('TextFormatter#link_to_mention') do
+ username, domain = entity[:screen_name].split('@')
+ domain = nil if local_domain?(domain)
+ account = nil
+
+ if preloaded_accounts?
+ same_username_hits = 0
+
+ preloaded_accounts.each do |other_account|
+ same_username = other_account.username.casecmp(username).zero?
+ same_domain = other_account.domain.nil? ? domain.nil? : other_account.domain.casecmp(domain)&.zero?
+
+ if same_username && !same_domain
+ same_username_hits += 1
+ elsif same_username && same_domain
+ account = other_account
+ end
end
+ else
+ account = entity_cache.mention(username, domain)
end
- else
- account = entity_cache.mention(username, domain)
- end
- return "@#{h(entity[:screen_name])}" if account.nil?
+ return "@#{h(entity[:screen_name])}" if account.nil?
- url = ActivityPub::TagManager.instance.url_for(account)
- display_username = same_username_hits&.positive? || with_domains? ? account.pretty_acct : account.username
+ url = ActivityPub::TagManager.instance.url_for(account)
+ display_username = same_username_hits&.positive? || with_domains? ? account.pretty_acct : account.username
- <<~HTML.squish
- @#{h(display_username)}
- HTML
+ <<~HTML.squish
+ @#{h(display_username)}
+ HTML
+ end
end
def entity_cache
diff --git a/app/lib/translation_service/deepl.rb b/app/lib/translation_service/deepl.rb
index 925a1cf1723c15..7761dbe626d5f6 100644
--- a/app/lib/translation_service/deepl.rb
+++ b/app/lib/translation_service/deepl.rb
@@ -42,8 +42,8 @@ def normalize_language(language)
subtags.join('-')
end
- def request(verb, path, **options)
- req = Request.new(verb, "#{base_url}#{path}", **options)
+ def request(verb, path, **)
+ req = Request.new(verb, "#{base_url}#{path}", **)
req.add_headers(Authorization: "DeepL-Auth-Key #{@api_key}")
req.perform do |res|
case res.code
diff --git a/app/lib/translation_service/libre_translate.rb b/app/lib/translation_service/libre_translate.rb
index de43d7c88c0606..0df8590f870939 100644
--- a/app/lib/translation_service/libre_translate.rb
+++ b/app/lib/translation_service/libre_translate.rb
@@ -27,8 +27,8 @@ def languages
private
- def request(verb, path, **options)
- req = Request.new(verb, "#{@base_url}#{path}", allow_local: true, **options)
+ def request(verb, path, **)
+ req = Request.new(verb, "#{@base_url}#{path}", allow_local: true, **)
req.add_headers('Content-Type': 'application/json')
req.perform do |res|
case res.code
diff --git a/app/models/concerns/ranked_trend.rb b/app/models/concerns/ranked_trend.rb
index add36afb0c2829..e707fe0bad9f87 100644
--- a/app/models/concerns/ranked_trend.rb
+++ b/app/models/concerns/ranked_trend.rb
@@ -9,6 +9,10 @@ module RankedTrend
end
class_methods do
+ def locales
+ distinct.pluck(:language)
+ end
+
def recalculate_ordered_rank
connection
.exec_update(<<~SQL.squish)
diff --git a/app/models/concerns/status/snapshot_concern.rb b/app/models/concerns/status/snapshot_concern.rb
index f790e9de98de8d..64dbde357980f2 100644
--- a/app/models/concerns/status/snapshot_concern.rb
+++ b/app/models/concerns/status/snapshot_concern.rb
@@ -29,7 +29,7 @@ def build_snapshot(account_id: nil, at_time: nil, rate_limit: true)
)
end
- def snapshot!(**options)
- build_snapshot(**options).save!
+ def snapshot!(**)
+ build_snapshot(**).save!
end
end
diff --git a/app/models/session_activation.rb b/app/models/session_activation.rb
index 8b8e533d30c980..31f18fd7ef09be 100644
--- a/app/models/session_activation.rb
+++ b/app/models/session_activation.rb
@@ -35,8 +35,8 @@ def active?(id)
id && exists?(session_id: id)
end
- def activate(**options)
- activation = create!(**options)
+ def activate(**)
+ activation = create!(**)
purge_old
activation
end
diff --git a/app/models/status.rb b/app/models/status.rb
index 6e4b8244a80733..999b3f750325e8 100644
--- a/app/models/status.rb
+++ b/app/models/status.rb
@@ -303,12 +303,34 @@ def favourites_count
status_stat&.favourites_count || 0
end
+ # Reblogs count received from an external instance
+ def untrusted_reblogs_count
+ status_stat&.untrusted_reblogs_count unless local?
+ end
+
+ # Favourites count received from an external instance
+ def untrusted_favourites_count
+ status_stat&.untrusted_favourites_count unless local?
+ end
+
def increment_count!(key)
- update_status_stat!(key => public_send(key) + 1)
+ if key == :favourites_count && !untrusted_favourites_count.nil?
+ update_status_stat!(favourites_count: favourites_count + 1, untrusted_favourites_count: untrusted_favourites_count + 1)
+ elsif key == :reblogs_count && !untrusted_reblogs_count.nil?
+ update_status_stat!(reblogs_count: reblogs_count + 1, untrusted_reblogs_count: untrusted_reblogs_count + 1)
+ else
+ update_status_stat!(key => public_send(key) + 1)
+ end
end
def decrement_count!(key)
- update_status_stat!(key => [public_send(key) - 1, 0].max)
+ if key == :favourites_count && !untrusted_favourites_count.nil?
+ update_status_stat!(favourites_count: [favourites_count - 1, 0].max, untrusted_favourites_count: [untrusted_favourites_count - 1, 0].max)
+ elsif key == :reblogs_count && !untrusted_reblogs_count.nil?
+ update_status_stat!(reblogs_count: [reblogs_count - 1, 0].max, untrusted_reblogs_count: [untrusted_reblogs_count - 1, 0].max)
+ else
+ update_status_stat!(key => [public_send(key) - 1, 0].max)
+ end
end
def trendable?
diff --git a/app/models/status_pin.rb b/app/models/status_pin.rb
index dae4a5b4e6ba7f..83711dde42da93 100644
--- a/app/models/status_pin.rb
+++ b/app/models/status_pin.rb
@@ -17,11 +17,17 @@ class StatusPin < ApplicationRecord
validates_with StatusPinValidator
- after_destroy :invalidate_cleanup_info
+ after_destroy :invalidate_cleanup_info, if: %i(account_matches_status_account? account_local?)
- def invalidate_cleanup_info
- return unless status&.account_id == account_id && account.local?
+ delegate :local?, to: :account, prefix: true
+
+ private
+ def invalidate_cleanup_info
account.statuses_cleanup_policy&.invalidate_last_inspected(status, :unpin)
end
+
+ def account_matches_status_account?
+ status&.account_id == account_id
+ end
end
diff --git a/app/models/status_stat.rb b/app/models/status_stat.rb
index 47aa1447775abd..14a02071a7b74c 100644
--- a/app/models/status_stat.rb
+++ b/app/models/status_stat.rb
@@ -4,18 +4,24 @@
#
# Table name: status_stats
#
-# id :bigint(8) not null, primary key
-# status_id :bigint(8) not null
-# replies_count :bigint(8) default(0), not null
-# reblogs_count :bigint(8) default(0), not null
-# favourites_count :bigint(8) default(0), not null
-# created_at :datetime not null
-# updated_at :datetime not null
+# id :bigint(8) not null, primary key
+# status_id :bigint(8) not null
+# replies_count :bigint(8) default(0), not null
+# reblogs_count :bigint(8) default(0), not null
+# favourites_count :bigint(8) default(0), not null
+# created_at :datetime not null
+# updated_at :datetime not null
+# untrusted_favourites_count :bigint(8)
+# untrusted_reblogs_count :bigint(8)
#
class StatusStat < ApplicationRecord
belongs_to :status, inverse_of: :status_stat
+ before_validation :clamp_untrusted_counts
+
+ MAX_UNTRUSTED_COUNT = 100_000_000
+
def replies_count
[attributes['replies_count'], 0].max
end
@@ -27,4 +33,11 @@ def reblogs_count
def favourites_count
[attributes['favourites_count'], 0].max
end
+
+ private
+
+ def clamp_untrusted_counts
+ self.untrusted_favourites_count = untrusted_favourites_count.to_i.clamp(0, MAX_UNTRUSTED_COUNT) if untrusted_favourites_count.present?
+ self.untrusted_reblogs_count = untrusted_reblogs_count.to_i.clamp(0, MAX_UNTRUSTED_COUNT) if untrusted_reblogs_count.present?
+ end
end
diff --git a/app/models/tombstone.rb b/app/models/tombstone.rb
index bf666c43ac1993..92eddfc626855f 100644
--- a/app/models/tombstone.rb
+++ b/app/models/tombstone.rb
@@ -14,4 +14,6 @@
class Tombstone < ApplicationRecord
belongs_to :account
+
+ validates :uri, presence: true
end
diff --git a/app/models/trends/links.rb b/app/models/trends/links.rb
index 0650c4109de8ac..9d721d25f818ce 100644
--- a/app/models/trends/links.rb
+++ b/app/models/trends/links.rb
@@ -85,7 +85,7 @@ def refresh(at_time = Time.now.utc)
end
def request_review
- PreviewCardTrend.pluck('distinct language').flat_map do |language|
+ PreviewCardTrend.locales.flat_map do |language|
score_at_threshold = PreviewCardTrend.where(language: language).allowed.by_rank.ranked_below(options[:review_threshold]).first&.score || 0
preview_card_trends = PreviewCardTrend.where(language: language).not_allowed.joins(:preview_card)
diff --git a/app/models/trends/statuses.rb b/app/models/trends/statuses.rb
index 9be6eb13a5c272..8757e5aa9c3b6c 100644
--- a/app/models/trends/statuses.rb
+++ b/app/models/trends/statuses.rb
@@ -78,7 +78,7 @@ def refresh(at_time = Time.now.utc)
end
def request_review
- StatusTrend.pluck('distinct language').flat_map do |language|
+ StatusTrend.locales.flat_map do |language|
score_at_threshold = StatusTrend.where(language: language, allowed: true).by_rank.ranked_below(options[:review_threshold]).first&.score || 0
status_trends = StatusTrend.where(language: language, allowed: false).joins(:status).includes(status: :account)
diff --git a/app/models/user.rb b/app/models/user.rb
index c32a575edff71a..69c5a01569774a 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -405,8 +405,8 @@ def pending_devise_notifications
@pending_devise_notifications ||= []
end
- def render_and_send_devise_message(notification, *args, **kwargs)
- devise_mailer.send(notification, self, *args, **kwargs).deliver_later
+ def render_and_send_devise_message(notification, *, **)
+ devise_mailer.send(notification, self, *, **).deliver_later
end
def set_approved
diff --git a/app/presenters/oauth_metadata_presenter.rb b/app/presenters/oauth_metadata_presenter.rb
index 1e4d25165c7118..7d75e8498a5421 100644
--- a/app/presenters/oauth_metadata_presenter.rb
+++ b/app/presenters/oauth_metadata_presenter.rb
@@ -26,6 +26,10 @@ def token_endpoint
oauth_token_url
end
+ def userinfo_endpoint
+ oauth_userinfo_url
+ end
+
# As the api_v1_apps route doesn't technically conform to the specification
# for OAuth 2.0 Dynamic Client Registration defined in RFC 7591 we use a
# non-standard property for now to indicate the mastodon specific registration
diff --git a/app/serializers/oauth_metadata_serializer.rb b/app/serializers/oauth_metadata_serializer.rb
index 2afb4208fbc5ae..9c5f7365a4ceb0 100644
--- a/app/serializers/oauth_metadata_serializer.rb
+++ b/app/serializers/oauth_metadata_serializer.rb
@@ -2,7 +2,7 @@
class OauthMetadataSerializer < ActiveModel::Serializer
attributes :issuer, :authorization_endpoint, :token_endpoint,
- :revocation_endpoint, :scopes_supported,
+ :revocation_endpoint, :userinfo_endpoint, :scopes_supported,
:response_types_supported, :response_modes_supported,
:grant_types_supported, :token_endpoint_auth_methods_supported,
:code_challenge_methods_supported,
diff --git a/app/serializers/oauth_userinfo_serializer.rb b/app/serializers/oauth_userinfo_serializer.rb
new file mode 100644
index 00000000000000..e2f37ae02e5e98
--- /dev/null
+++ b/app/serializers/oauth_userinfo_serializer.rb
@@ -0,0 +1,31 @@
+# frozen_string_literal: true
+
+class OauthUserinfoSerializer < ActiveModel::Serializer
+ include RoutingHelper
+
+ attributes :iss, :sub, :name, :preferred_username, :profile, :picture
+
+ def iss
+ root_url
+ end
+
+ def sub
+ ActivityPub::TagManager.instance.uri_for(object)
+ end
+
+ def name
+ object.display_name
+ end
+
+ def preferred_username
+ object.username
+ end
+
+ def profile
+ ActivityPub::TagManager.instance.url_for(object)
+ end
+
+ def picture
+ full_asset_url(object.avatar_original_url)
+ end
+end
diff --git a/app/serializers/rest/status_serializer.rb b/app/serializers/rest/status_serializer.rb
index e17e8c823e76fa..e108c789c7a8dc 100644
--- a/app/serializers/rest/status_serializer.rb
+++ b/app/serializers/rest/status_serializer.rb
@@ -84,11 +84,11 @@ def url
end
def reblogs_count
- relationships&.attributes_map&.dig(object.id, :reblogs_count) || object.reblogs_count
+ object.untrusted_reblogs_count || relationships&.attributes_map&.dig(object.id, :reblogs_count) || object.reblogs_count
end
def favourites_count
- relationships&.attributes_map&.dig(object.id, :favourites_count) || object.favourites_count
+ object.untrusted_favourites_count || relationships&.attributes_map&.dig(object.id, :favourites_count) || object.favourites_count
end
def favourited
diff --git a/app/services/activitypub/process_status_update_service.rb b/app/services/activitypub/process_status_update_service.rb
index 141ad24e92716a..1c7584b7696267 100644
--- a/app/services/activitypub/process_status_update_service.rb
+++ b/app/services/activitypub/process_status_update_service.rb
@@ -43,6 +43,7 @@ def handle_explicit_update!
update_poll!
update_immediate_attributes!
update_metadata!
+ update_counts!
create_edits!
end
@@ -62,6 +63,7 @@ def handle_implicit_update!
with_redis_lock("create:#{@uri}") do
update_poll!(allow_significant_changes: false)
queue_poll_notifications!
+ update_counts!
end
end
@@ -239,6 +241,19 @@ def update_emojis!
end
end
+ def update_counts!
+ likes = @status_parser.favourites_count
+ shares = @status_parser.reblogs_count
+ return if likes.nil? && shares.nil?
+
+ @status.status_stat.tap do |status_stat|
+ status_stat.untrusted_reblogs_count = shares unless shares.nil?
+ status_stat.untrusted_favourites_count = likes unless likes.nil?
+
+ status_stat.save if status_stat.changed?
+ end
+ end
+
def expected_type?
equals_or_includes_any?(@json['type'], %w(Note Question))
end
diff --git a/app/views/application/mailer/_heading.html.haml b/app/views/application/mailer/_heading.html.haml
index 9fc5dc7471b5e4..8b1f3f9ffc9659 100644
--- a/app/views/application/mailer/_heading.html.haml
+++ b/app/views/application/mailer/_heading.html.haml
@@ -1,13 +1,13 @@
+-# locals: (title:, image_url: nil, subtitle: nil)
%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)
+ - if image_url
%td.email-header-heading-img-td
- = image_tag heading_image_url, alt: '', width: 56, height: 56
+ = image_tag 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
+ %h1= title
+ - if subtitle
+ %p= subtitle
diff --git a/app/views/notification_mailer/favourite.html.haml b/app/views/notification_mailer/favourite.html.haml
index 62c0a39abe14f0..ec2a048ba7f97d 100644
--- a/app/views/notification_mailer/favourite.html.haml
+++ b/app/views/notification_mailer/favourite.html.haml
@@ -1,5 +1,8 @@
= content_for :heading do
- = render 'application/mailer/heading', heading_title: t('notification_mailer.favourite.title'), heading_subtitle: t('notification_mailer.favourite.body', name: @account.pretty_acct), heading_image_url: frontend_asset_url('images/mailer-new/heading/favorite.png')
+ = render 'application/mailer/heading',
+ image_url: frontend_asset_url('images/mailer-new/heading/favorite.png'),
+ subtitle: t('notification_mailer.favourite.body', name: @account.pretty_acct),
+ title: t('notification_mailer.favourite.title')
%table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
%tr
%td.email-body-padding-td
diff --git a/app/views/notification_mailer/follow.html.haml b/app/views/notification_mailer/follow.html.haml
index 8247aa5b448d21..4e23f7fae71b38 100644
--- a/app/views/notification_mailer/follow.html.haml
+++ b/app/views/notification_mailer/follow.html.haml
@@ -1,5 +1,8 @@
= content_for :heading do
- = render 'application/mailer/heading', heading_title: t('notification_mailer.follow.title'), heading_subtitle: t('notification_mailer.follow.body', name: @account.pretty_acct), heading_image_url: frontend_asset_url('images/mailer-new/heading/user.png')
+ = render 'application/mailer/heading',
+ image_url: frontend_asset_url('images/mailer-new/heading/user.png'),
+ subtitle: t('notification_mailer.follow.body', name: @account.pretty_acct),
+ title: t('notification_mailer.follow.title')
%table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
%tr
%td.email-body-padding-td
diff --git a/app/views/notification_mailer/follow_request.html.haml b/app/views/notification_mailer/follow_request.html.haml
index 9344ef7eb38031..13a5cf87e8ef84 100644
--- a/app/views/notification_mailer/follow_request.html.haml
+++ b/app/views/notification_mailer/follow_request.html.haml
@@ -1,5 +1,8 @@
= content_for :heading do
- = render 'application/mailer/heading', heading_title: t('notification_mailer.follow_request.title'), heading_subtitle: t('notification_mailer.follow_request.body', name: @account.pretty_acct), heading_image_url: frontend_asset_url('images/mailer-new/heading/follow.png')
+ = render 'application/mailer/heading',
+ image_url: frontend_asset_url('images/mailer-new/heading/follow.png'),
+ subtitle: t('notification_mailer.follow_request.body', name: @account.pretty_acct),
+ title: t('notification_mailer.follow_request.title')
%table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
%tr
%td.email-body-padding-td
diff --git a/app/views/notification_mailer/mention.html.haml b/app/views/notification_mailer/mention.html.haml
index 83fa5086a6b252..419d0b76eaa018 100644
--- a/app/views/notification_mailer/mention.html.haml
+++ b/app/views/notification_mailer/mention.html.haml
@@ -1,5 +1,8 @@
= content_for :heading do
- = render 'application/mailer/heading', heading_title: t('notification_mailer.mention.title'), heading_subtitle: t('notification_mailer.mention.body', name: @status.account.pretty_acct), heading_image_url: frontend_asset_url('images/mailer-new/heading/mention.png')
+ = render 'application/mailer/heading',
+ image_url: frontend_asset_url('images/mailer-new/heading/mention.png'),
+ subtitle: t('notification_mailer.mention.body', name: @status.account.pretty_acct),
+ title: t('notification_mailer.mention.title')
%table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
%tr
%td.email-body-padding-td
diff --git a/app/views/notification_mailer/reblog.html.haml b/app/views/notification_mailer/reblog.html.haml
index f91c678cf535f2..f097211bc5aa70 100644
--- a/app/views/notification_mailer/reblog.html.haml
+++ b/app/views/notification_mailer/reblog.html.haml
@@ -1,5 +1,8 @@
= content_for :heading do
- = render 'application/mailer/heading', heading_title: t('notification_mailer.reblog.title'), heading_subtitle: t('notification_mailer.reblog.body', name: @account.pretty_acct), heading_image_url: frontend_asset_url('images/mailer-new/heading/boost.png')
+ = render 'application/mailer/heading',
+ image_url: frontend_asset_url('images/mailer-new/heading/boost.png'),
+ subtitle: t('notification_mailer.reblog.body', name: @account.pretty_acct),
+ title: t('notification_mailer.reblog.title')
%table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
%tr
%td.email-body-padding-td
diff --git a/app/views/user_mailer/appeal_approved.html.haml b/app/views/user_mailer/appeal_approved.html.haml
index 54e9a94a544c16..2da3e0d3eb6c24 100644
--- a/app/views/user_mailer/appeal_approved.html.haml
+++ b/app/views/user_mailer/appeal_approved.html.haml
@@ -1,5 +1,8 @@
= content_for :heading do
- = render 'application/mailer/heading', heading_title: t('user_mailer.appeal_approved.title'), heading_subtitle: t('user_mailer.appeal_approved.subtitle'), heading_image_url: frontend_asset_url('images/mailer-new/heading/appeal-approved.png')
+ = render 'application/mailer/heading',
+ image_url: frontend_asset_url('images/mailer-new/heading/appeal-approved.png'),
+ subtitle: t('user_mailer.appeal_approved.subtitle'),
+ title: t('user_mailer.appeal_approved.title')
%table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
%tr
%td.email-body-padding-td
diff --git a/app/views/user_mailer/appeal_rejected.html.haml b/app/views/user_mailer/appeal_rejected.html.haml
index b493712b05cf56..6f9282507b34b9 100644
--- a/app/views/user_mailer/appeal_rejected.html.haml
+++ b/app/views/user_mailer/appeal_rejected.html.haml
@@ -1,5 +1,8 @@
= content_for :heading do
- = render 'application/mailer/heading', heading_title: t('user_mailer.appeal_rejected.title'), heading_subtitle: t('user_mailer.appeal_rejected.subtitle'), heading_image_url: frontend_asset_url('images/mailer-new/heading/appeal-rejected.png')
+ = render 'application/mailer/heading',
+ image_url: frontend_asset_url('images/mailer-new/heading/appeal-rejected.png'),
+ subtitle: t('user_mailer.appeal_rejected.subtitle'),
+ title: t('user_mailer.appeal_rejected.title')
%table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
%tr
%td.email-body-padding-td
diff --git a/app/views/user_mailer/backup_ready.html.haml b/app/views/user_mailer/backup_ready.html.haml
index 99a48e7fdb4a3d..c25f0b45ddd860 100644
--- a/app/views/user_mailer/backup_ready.html.haml
+++ b/app/views/user_mailer/backup_ready.html.haml
@@ -1,5 +1,8 @@
= content_for :heading do
- = render 'application/mailer/heading', heading_title: t('user_mailer.backup_ready.title'), heading_subtitle: t('user_mailer.backup_ready.explanation'), heading_image_url: frontend_asset_url('images/mailer-new/heading/archive.png')
+ = render 'application/mailer/heading',
+ image_url: frontend_asset_url('images/mailer-new/heading/archive.png'),
+ subtitle: t('user_mailer.backup_ready.explanation'),
+ title: t('user_mailer.backup_ready.title')
%table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
%tr
%td.email-body-padding-td
diff --git a/app/views/user_mailer/confirmation_instructions.html.haml b/app/views/user_mailer/confirmation_instructions.html.haml
index 13e68c722b2fc8..d3e3e8f9305102 100644
--- a/app/views/user_mailer/confirmation_instructions.html.haml
+++ b/app/views/user_mailer/confirmation_instructions.html.haml
@@ -1,5 +1,7 @@
= content_for :heading do
- = render 'application/mailer/heading', heading_title: t('devise.mailer.confirmation_instructions.title'), heading_image_url: frontend_asset_url('images/mailer-new/heading/email.png')
+ = render 'application/mailer/heading',
+ image_url: frontend_asset_url('images/mailer-new/heading/email.png'),
+ title: t('devise.mailer.confirmation_instructions.title')
%table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
%tr
%td.email-body-padding-td
diff --git a/app/views/user_mailer/email_changed.html.haml b/app/views/user_mailer/email_changed.html.haml
index 71678ad029aead..33e35a314b6c1d 100644
--- a/app/views/user_mailer/email_changed.html.haml
+++ b/app/views/user_mailer/email_changed.html.haml
@@ -1,5 +1,8 @@
= content_for :heading do
- = render 'application/mailer/heading', heading_title: t('devise.mailer.email_changed.title'), heading_subtitle: t('devise.mailer.email_changed.explanation'), heading_image_url: frontend_asset_url('images/mailer-new/heading/email.png')
+ = render 'application/mailer/heading',
+ image_url: frontend_asset_url('images/mailer-new/heading/email.png'),
+ subtitle: t('devise.mailer.email_changed.explanation'),
+ title: t('devise.mailer.email_changed.title')
%table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
%tr
%td.email-body-padding-td
diff --git a/app/views/user_mailer/failed_2fa.html.haml b/app/views/user_mailer/failed_2fa.html.haml
index e1da35ce062c21..edac8ef63b67e3 100644
--- a/app/views/user_mailer/failed_2fa.html.haml
+++ b/app/views/user_mailer/failed_2fa.html.haml
@@ -1,5 +1,8 @@
= content_for :heading do
- = render 'application/mailer/heading', heading_title: t('user_mailer.failed_2fa.title'), heading_subtitle: t('user_mailer.failed_2fa.explanation'), heading_image_url: frontend_asset_url('images/mailer-new/heading/login.png')
+ = render 'application/mailer/heading',
+ image_url: frontend_asset_url('images/mailer-new/heading/login.png'),
+ subtitle: t('user_mailer.failed_2fa.explanation'),
+ title: t('user_mailer.failed_2fa.title')
%table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
%tr
%td.email-body-padding-td
diff --git a/app/views/user_mailer/password_change.html.haml b/app/views/user_mailer/password_change.html.haml
index 44c8c0dcafb9b7..350f5bd996727a 100644
--- a/app/views/user_mailer/password_change.html.haml
+++ b/app/views/user_mailer/password_change.html.haml
@@ -1,5 +1,8 @@
= content_for :heading do
- = render 'application/mailer/heading', heading_title: t('devise.mailer.password_change.title'), heading_subtitle: t('devise.mailer.password_change.explanation'), heading_image_url: frontend_asset_url('images/mailer-new/heading/password.png')
+ = render 'application/mailer/heading',
+ image_url: frontend_asset_url('images/mailer-new/heading/password.png'),
+ subtitle: t('devise.mailer.password_change.explanation'),
+ title: t('devise.mailer.password_change.title')
%table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
%tr
%td.email-body-padding-td
diff --git a/app/views/user_mailer/reconfirmation_instructions.html.haml b/app/views/user_mailer/reconfirmation_instructions.html.haml
index 854887a7e01ba0..6f6954f705ab1a 100644
--- a/app/views/user_mailer/reconfirmation_instructions.html.haml
+++ b/app/views/user_mailer/reconfirmation_instructions.html.haml
@@ -1,5 +1,7 @@
= content_for :heading do
- = render 'application/mailer/heading', heading_title: t('devise.mailer.reconfirmation_instructions.title'), heading_image_url: frontend_asset_url('images/mailer-new/heading/email.png')
+ = render 'application/mailer/heading',
+ image_url: frontend_asset_url('images/mailer-new/heading/email.png'),
+ title: t('devise.mailer.reconfirmation_instructions.title')
%table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
%tr
%td.email-body-padding-td
diff --git a/app/views/user_mailer/reset_password_instructions.html.haml b/app/views/user_mailer/reset_password_instructions.html.haml
index a1384fcc270a6d..5a1480867c97c3 100644
--- a/app/views/user_mailer/reset_password_instructions.html.haml
+++ b/app/views/user_mailer/reset_password_instructions.html.haml
@@ -1,5 +1,8 @@
= content_for :heading do
- = render 'application/mailer/heading', heading_title: t('devise.mailer.reset_password_instructions.title'), heading_subtitle: t('devise.mailer.reset_password_instructions.explanation'), heading_image_url: frontend_asset_url('images/mailer-new/heading/password.png')
+ = render 'application/mailer/heading',
+ image_url: frontend_asset_url('images/mailer-new/heading/password.png'),
+ subtitle: t('devise.mailer.reset_password_instructions.explanation'),
+ title: t('devise.mailer.reset_password_instructions.title')
%table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
%tr
%td.email-body-padding-td
diff --git a/app/views/user_mailer/suspicious_sign_in.html.haml b/app/views/user_mailer/suspicious_sign_in.html.haml
index deee7a1ce16db1..890d883c44008b 100644
--- a/app/views/user_mailer/suspicious_sign_in.html.haml
+++ b/app/views/user_mailer/suspicious_sign_in.html.haml
@@ -1,5 +1,8 @@
= content_for :heading do
- = render 'application/mailer/heading', heading_title: t('user_mailer.suspicious_sign_in.title'), heading_subtitle: t('user_mailer.suspicious_sign_in.explanation'), heading_image_url: frontend_asset_url('images/mailer-new/heading/login.png')
+ = render 'application/mailer/heading',
+ image_url: frontend_asset_url('images/mailer-new/heading/login.png'),
+ subtitle: t('user_mailer.suspicious_sign_in.explanation'),
+ title: t('user_mailer.suspicious_sign_in.title')
%table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
%tr
%td.email-body-padding-td
diff --git a/app/views/user_mailer/two_factor_disabled.html.haml b/app/views/user_mailer/two_factor_disabled.html.haml
index 28f6ca66007bc8..4f1559d86cd72b 100644
--- a/app/views/user_mailer/two_factor_disabled.html.haml
+++ b/app/views/user_mailer/two_factor_disabled.html.haml
@@ -1,5 +1,8 @@
= content_for :heading do
- = render 'application/mailer/heading', heading_title: t('devise.mailer.two_factor_disabled.title'), heading_subtitle: t('devise.mailer.two_factor_disabled.subtitle'), heading_image_url: frontend_asset_url('images/mailer-new/heading/2fa-disabled.png')
+ = render 'application/mailer/heading',
+ image_url: frontend_asset_url('images/mailer-new/heading/2fa-disabled.png'),
+ subtitle: t('devise.mailer.two_factor_disabled.subtitle'),
+ title: t('devise.mailer.two_factor_disabled.title')
%table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
%tr
%td.email-body-padding-td
diff --git a/app/views/user_mailer/two_factor_enabled.html.haml b/app/views/user_mailer/two_factor_enabled.html.haml
index 691dc661a09c5d..0ed57ea32b7691 100644
--- a/app/views/user_mailer/two_factor_enabled.html.haml
+++ b/app/views/user_mailer/two_factor_enabled.html.haml
@@ -1,5 +1,8 @@
= content_for :heading do
- = render 'application/mailer/heading', heading_title: t('devise.mailer.two_factor_enabled.title'), heading_subtitle: t('devise.mailer.two_factor_enabled.subtitle'), heading_image_url: frontend_asset_url('images/mailer-new/heading/2fa-enabled.png')
+ = render 'application/mailer/heading',
+ image_url: frontend_asset_url('images/mailer-new/heading/2fa-enabled.png'),
+ subtitle: t('devise.mailer.two_factor_enabled.subtitle'),
+ title: t('devise.mailer.two_factor_enabled.title')
%table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
%tr
%td.email-body-padding-td
diff --git a/app/views/user_mailer/two_factor_recovery_codes_changed.html.haml b/app/views/user_mailer/two_factor_recovery_codes_changed.html.haml
index 2d063e4c76919e..cc4c21b83b77f1 100644
--- a/app/views/user_mailer/two_factor_recovery_codes_changed.html.haml
+++ b/app/views/user_mailer/two_factor_recovery_codes_changed.html.haml
@@ -1,5 +1,8 @@
= content_for :heading do
- = render 'application/mailer/heading', heading_title: t('devise.mailer.two_factor_recovery_codes_changed.title'), heading_subtitle: t('devise.mailer.two_factor_recovery_codes_changed.subtitle'), heading_image_url: frontend_asset_url('images/mailer-new/heading/2fa-recovery.png')
+ = render 'application/mailer/heading',
+ image_url: frontend_asset_url('images/mailer-new/heading/2fa-recovery.png'),
+ subtitle: t('devise.mailer.two_factor_recovery_codes_changed.subtitle'),
+ title: t('devise.mailer.two_factor_recovery_codes_changed.title')
%table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
%tr
%td.email-body-padding-td
diff --git a/app/views/user_mailer/warning.html.haml b/app/views/user_mailer/warning.html.haml
index 837cde550e5a4d..fe8db974ee93f5 100644
--- a/app/views/user_mailer/warning.html.haml
+++ b/app/views/user_mailer/warning.html.haml
@@ -1,5 +1,7 @@
= content_for :heading do
- = render 'application/mailer/heading', heading_title: t("user_mailer.warning.title.#{@warning.action}"), heading_image_url: frontend_asset_url('images/mailer-new/heading/warning.png')
+ = render 'application/mailer/heading',
+ image_url: frontend_asset_url('images/mailer-new/heading/warning.png'),
+ title: t("user_mailer.warning.title.#{@warning.action}")
%table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
%tr
%td.email-body-padding-td
diff --git a/app/views/user_mailer/webauthn_credential_added.html.haml b/app/views/user_mailer/webauthn_credential_added.html.haml
index 3e167662380884..9c5cbdd6762f1b 100644
--- a/app/views/user_mailer/webauthn_credential_added.html.haml
+++ b/app/views/user_mailer/webauthn_credential_added.html.haml
@@ -1,5 +1,8 @@
= content_for :heading do
- = render 'application/mailer/heading', heading_title: t('devise.mailer.webauthn_credential.added.title'), heading_subtitle: t('devise.mailer.webauthn_credential.added.explanation'), heading_image_url: frontend_asset_url('images/mailer-new/heading/key-added.png')
+ = render 'application/mailer/heading',
+ image_url: frontend_asset_url('images/mailer-new/heading/key-added.png'),
+ subtitle: t('devise.mailer.webauthn_credential.added.explanation'),
+ title: t('devise.mailer.webauthn_credential.added.title')
%table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
%tr
%td.email-body-padding-td
diff --git a/app/views/user_mailer/webauthn_credential_deleted.html.haml b/app/views/user_mailer/webauthn_credential_deleted.html.haml
index 59dcb75d3a812e..decfc02c227108 100644
--- a/app/views/user_mailer/webauthn_credential_deleted.html.haml
+++ b/app/views/user_mailer/webauthn_credential_deleted.html.haml
@@ -1,5 +1,8 @@
= content_for :heading do
- = render 'application/mailer/heading', heading_title: t('devise.mailer.webauthn_credential.deleted.title'), heading_subtitle: t('devise.mailer.webauthn_credential.deleted.explanation'), heading_image_url: frontend_asset_url('images/mailer-new/heading/key-deleted.png')
+ = render 'application/mailer/heading',
+ image_url: frontend_asset_url('images/mailer-new/heading/key-deleted.png'),
+ subtitle: t('devise.mailer.webauthn_credential.deleted.explanation'),
+ title: t('devise.mailer.webauthn_credential.deleted.title')
%table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
%tr
%td.email-body-padding-td
diff --git a/app/views/user_mailer/webauthn_disabled.html.haml b/app/views/user_mailer/webauthn_disabled.html.haml
index 0f7c534bc4505e..232c9519157db3 100644
--- a/app/views/user_mailer/webauthn_disabled.html.haml
+++ b/app/views/user_mailer/webauthn_disabled.html.haml
@@ -1,5 +1,8 @@
= content_for :heading do
- = render 'application/mailer/heading', heading_title: t('devise.mailer.webauthn_disabled.title'), heading_subtitle: t('devise.mailer.webauthn_disabled.explanation'), heading_image_url: frontend_asset_url('images/mailer-new/heading/key-disabled.png')
+ = render 'application/mailer/heading',
+ image_url: frontend_asset_url('images/mailer-new/heading/key-disabled.png'),
+ subtitle: t('devise.mailer.webauthn_disabled.explanation'),
+ title: t('devise.mailer.webauthn_disabled.title')
%table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
%tr
%td.email-body-padding-td
diff --git a/app/views/user_mailer/webauthn_enabled.html.haml b/app/views/user_mailer/webauthn_enabled.html.haml
index cd11aa5a40fe97..955a557de4a07b 100644
--- a/app/views/user_mailer/webauthn_enabled.html.haml
+++ b/app/views/user_mailer/webauthn_enabled.html.haml
@@ -1,5 +1,8 @@
= content_for :heading do
- = render 'application/mailer/heading', heading_title: t('devise.mailer.webauthn_enabled.title'), heading_subtitle: t('devise.mailer.webauthn_enabled.explanation'), heading_image_url: frontend_asset_url('images/mailer-new/heading/key-enabled.png')
+ = render 'application/mailer/heading',
+ image_url: frontend_asset_url('images/mailer-new/heading/key-enabled.png'),
+ subtitle: t('devise.mailer.webauthn_enabled.explanation'),
+ title: t('devise.mailer.webauthn_enabled.title')
%table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
%tr
%td.email-body-padding-td
diff --git a/app/views/user_mailer/welcome.html.haml b/app/views/user_mailer/welcome.html.haml
index efc6cad3934526..c37104da799d34 100644
--- a/app/views/user_mailer/welcome.html.haml
+++ b/app/views/user_mailer/welcome.html.haml
@@ -1,7 +1,9 @@
= content_for :heading do
.email-desktop-flex
.email-header-left
- = render 'application/mailer/heading', heading_title: t('user_mailer.welcome.title', name: @resource.account.username), heading_subtitle: t('user_mailer.welcome.explanation')
+ = render 'application/mailer/heading',
+ subtitle: t('user_mailer.welcome.explanation'),
+ title: t('user_mailer.welcome.title', name: @resource.account.username)
.email-header-right
.email-header-card
%table.email-header-card-table{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
diff --git a/config/initializers/cors.rb b/config/initializers/cors.rb
index c530693a3f3a41..476f1fb07a507a 100644
--- a/config/initializers/cors.rb
+++ b/config/initializers/cors.rb
@@ -23,6 +23,7 @@
methods: %i(post put delete get patch options)
resource '/oauth/token', methods: [:post]
resource '/oauth/revoke', methods: [:post]
+ resource '/oauth/userinfo', methods: [:get, :post]
end
end
end
diff --git a/config/locales/activerecord.fa.yml b/config/locales/activerecord.fa.yml
index 3d1e8012bfc305..81e54ed3a95f39 100644
--- a/config/locales/activerecord.fa.yml
+++ b/config/locales/activerecord.fa.yml
@@ -15,6 +15,12 @@ fa:
user/invite_request:
text: دلیل
errors:
+ attributes:
+ domain:
+ invalid: نام دامنهٔ معتبری نیست
+ messages:
+ invalid_domain_on_line: "%{value} نام دامنهٔ معتبری نیست"
+ too_many_lines: بیش از کران %{limit} خط است
models:
account:
attributes:
diff --git a/config/locales/devise.eo.yml b/config/locales/devise.eo.yml
index 88514ab5e2824f..754fa015504295 100644
--- a/config/locales/devise.eo.yml
+++ b/config/locales/devise.eo.yml
@@ -53,12 +53,14 @@ eo:
subtitle: Dupaŝa aŭtentigo por via konto estas malŝaltita.
title: 2FA estas malŝaltita
two_factor_enabled:
+ explanation: Tokeno generita de la parigita TOTP-aplikaĵo estos necesa por ensaluti.
subject: 'Mastodon: Dufaktora aŭtentigo ebligita'
subtitle: Dupaŝa aŭtentigo por via konto estas ŝaltita.
title: 2FA aktivigita
two_factor_recovery_codes_changed:
explanation: La antaŭaj reakiraj kodoj estis nuligitaj kaj novaj estis generitaj.
subject: 'Mastodon: Reakiraj kodoj de dufaktora aŭtentigo rekreitaj'
+ subtitle: La antaŭaj restarigaj kodoj estis malvalidigitaj kaj novaj estis generitaj.
title: Reakiraj kodoj de 2FA estas ŝanĝitaj
unlock_instructions:
subject: 'Mastodon: Instrukcioj por malŝlosi'
diff --git a/config/locales/doorkeeper.eo.yml b/config/locales/doorkeeper.eo.yml
index 12e120f8befa67..36a5ed19746b13 100644
--- a/config/locales/doorkeeper.eo.yml
+++ b/config/locales/doorkeeper.eo.yml
@@ -60,6 +60,7 @@ eo:
error:
title: Eraro okazis
new:
+ prompt_html: "%{client_name} ŝatus permeson aliri vian konton. Nur aprobu ĉi tiun peton se vi rekonas kaj fidas ĉi tiun fonton."
review_permissions: Revizu permesojn
title: Rajtigo bezonata
show:
@@ -82,6 +83,7 @@ eo:
access_denied: La posedanto de la rimedo aŭ de la rajtiga servilo rifuzis vian peton.
credential_flow_not_configured: La sendado de la identigiloj de la posedanto de la rimedo malsukcesis ĉar Doorkeeper.configure.resource_owner_from_credentials ne estis agordita.
invalid_client: Klienta aŭtentigo malsukcesa pro nekonata kliento, neniu klienta aŭtentigo inkluzivita, aŭ nesubtenata aŭtentiga metodo.
+ invalid_code_challenge_method: La koda defia metodo devas esti S256, ebenaĵo estas nesubtenata.
invalid_grant: La rajtiga konsento ne estas valida, ne plu estas valida, estis forigita, ne kongruas kun la plusenda URI uzita en la aŭtentiga peto, aŭ estis sendita al alia kliento.
invalid_redirect_uri: La plusenda URI uzita ne estas valida.
invalid_request:
@@ -134,6 +136,7 @@ eo:
media: Plurmediaj aldonaĵoj
mutes: Silentigitaj
notifications: Sciigoj
+ profile: Via Mastodon-profilo
push: Puŝsciigoj
reports: Raportoj
search: Serĉi
@@ -164,6 +167,7 @@ eo:
admin:write:reports: plenumi agojn de kontrolo sur signaloj
crypto: uzi fin-al-finan ĉifradon
follow: ŝanĝi rilatojn al aliaj kontoj
+ profile: legu nur la profilinformojn de via konto
push: ricevi viajn puŝ-sciigojn
read: legi ĉiujn datumojn de via konto
read:accounts: vidi la informojn de la kontoj
diff --git a/config/locales/doorkeeper.lv.yml b/config/locales/doorkeeper.lv.yml
index 55e288a9d67aa4..af892d79faae51 100644
--- a/config/locales/doorkeeper.lv.yml
+++ b/config/locales/doorkeeper.lv.yml
@@ -60,6 +60,7 @@ lv:
error:
title: Radās kļūda
new:
+ prompt_html: "%{client_name} vēlas atļauju piekļūt Tavam kontam. Apstiprini šo pieprasījumu tikai tad, ja atpazīsti un uzticies šim avotam!"
review_permissions: Pārskatīt atļaujas
title: Nepieciešama autorizācija
show:
@@ -119,9 +120,9 @@ lv:
write: Tikai rakstīšanas piekļuve
title:
accounts: Konti
- admin/accounts: Kontu administrēšana
+ admin/accounts: Kontu pārvaldīšana
admin/all: Visas administrēšanas funkcijas
- admin/reports: Ziņojumu administrēšana
+ admin/reports: Ziņojumu pārvaldīšana
all: Pilna piekļuve tavam Mastodon kontam
blocks: Bloķētie
bookmarks: Grāmatzīmes
@@ -157,13 +158,13 @@ lv:
admin:read:ip_blocks: lasīt sensitīvu informāciju par visiem IP blokiem
admin:read:reports: lasīt sensitīvu informāciju no visiem pārskatiem un kontiem, par kuriem ziņots
admin:write: modificēt visus datus uz servera
- admin:write:accounts: veikt moderācijas darbības kontos
- admin:write:canonical_email_blocks: veikt regulēšanas darbības kanoniskajos e-pasta blokos
- admin:write:domain_allows: veikt moderēšanas darbības domēna atļaujā
- admin:write:domain_blocks: veikt moderēšanas darbības domēna blokos
- admin:write:email_domain_blocks: veikt moderēšanas darbības e-pasta domēna blokos
- admin:write:ip_blocks: veikt moderēšanas darbības IP blokos
- admin:write:reports: veikt moderācijas darbības pārskatos
+ admin:write:accounts: veikt satura pārraudzības darbības kontos
+ admin:write:canonical_email_blocks: veikt satura pārraudzības darbības kanoniskajos e-pasta blokos
+ admin:write:domain_allows: veikt satura pārraudzības darbības domēna atļaujā
+ admin:write:domain_blocks: veikt satura pārraudzības darbības domēna blokos
+ admin:write:email_domain_blocks: veikt satura pārraudzības darbības e-pasta domēna blokos
+ admin:write:ip_blocks: veikt satura pārraudzības darbības IP blokos
+ admin:write:reports: veikt satura pārraudzības darbības pārskatos
crypto: lieto pilnīgu šifrēšanu
follow: mainīt konta attiecības
profile: lasīt tikai Tava konta profila informāciju
diff --git a/config/locales/doorkeeper.th.yml b/config/locales/doorkeeper.th.yml
index e7ed0ba8a3bdb5..2dfc72cd6ccc9b 100644
--- a/config/locales/doorkeeper.th.yml
+++ b/config/locales/doorkeeper.th.yml
@@ -60,6 +60,7 @@ th:
error:
title: เกิดข้อผิดพลาด
new:
+ prompt_html: "%{client_name} ร้องขอสิทธิ์ในการเข้าถึงข้อมูลในบัญชีของคุณ อนุมัติคำขอนี้ได้ก็ต่อเมื่อคุณมั่นใจและเชื่อถือในแหล่งที่มาของข้อมูลนี้"
review_permissions: ตรวจทานสิทธิอนุญาต
title: ต้องการการอนุญาต
show:
diff --git a/config/locales/eo.yml b/config/locales/eo.yml
index 3d63ecd01d6604..12cae075f0176a 100644
--- a/config/locales/eo.yml
+++ b/config/locales/eo.yml
@@ -239,6 +239,7 @@ eo:
confirm_user_html: "%{name} konfirmis retadreson de uzanto %{target}"
create_account_warning_html: "%{name} sendis averton al %{target}"
create_announcement_html: "%{name} kreis novan anoncon %{target}"
+ create_canonical_email_block_html: "%{name} blokis retpoŝtadreson per krado %{target}"
create_custom_emoji_html: "%{name} alŝutis novan emoĝion %{target}"
create_domain_allow_html: "%{name} aldonis domajnon %{target} al la blanka listo"
create_domain_block_html: "%{name} blokis domajnon %{target}"
@@ -248,6 +249,7 @@ eo:
create_user_role_html: "%{name} kreis rolon de %{target}"
demote_user_html: "%{name} degradis uzanton %{target}"
destroy_announcement_html: "%{name} forigis anoncon %{target}"
+ destroy_canonical_email_block_html: "%{name} malblokis retpoŝtadreson per krado %{target}"
destroy_custom_emoji_html: "%{name} forigis emoĝion %{target}"
destroy_domain_allow_html: "%{name} forigis domajnon %{target} el la blanka listo"
destroy_domain_block_html: "%{name} malblokis domajnon %{target}"
@@ -282,6 +284,7 @@ eo:
update_custom_emoji_html: "%{name} ĝisdatigis la emoĝion %{target}"
update_domain_block_html: "%{name} ĝisdatigis domajnblokon por %{target}"
update_ip_block_html: "%{name} ŝanĝis regulon por IP %{target}"
+ update_report_html: "%{name} ĝisdatigis la raporton %{target}"
update_status_html: "%{name} ĝisdatigis afiŝon de %{target}"
update_user_role_html: "%{name} ŝanĝis la rolon %{target}"
deleted_account: forigita konto
@@ -531,6 +534,7 @@ eo:
total_reported: Signaloj pri ili
total_storage: Aŭdovidaj kunsendaĵoj
totals_time_period_hint_html: Sumo montritas malsupre inkluzivas datumo ekde komenco.
+ unknown_instance: Nuntempe ne ekzistas registro pri ĉi tiu domajno sur ĉi tiu servilo.
invites:
deactivate_all: Malaktivigi ĉion
filter:
@@ -763,6 +767,7 @@ eo:
disabled: Al neniu
users: Al salutintaj lokaj uzantoj
registrations:
+ moderation_recommandation: Bonvolu certigi, ke vi havas taŭgan kaj reaktivan moderigan teamon antaŭ ol vi malfermas registriĝojn al ĉiuj!
preamble: Regi kiu povas krei konton ĉe via servilo.
title: Registriĝoj
registrations_mode:
@@ -772,6 +777,7 @@ eo:
open: Iu povas aliĝi
security:
authorized_fetch: Devigi aŭtentigon de frataraj serviloj
+ authorized_fetch_overridden_hint: Vi nuntempe ne povas ŝanĝi ĉi tiun agordon ĉar ĝi estas anstataŭita de mediovariablo.
title: Agordoj de la servilo
site_uploads:
delete: Forigi elŝutitan dosieron
@@ -785,6 +791,7 @@ eo:
types:
major: Ĉefa eldono
minor: Neĉefa eldono
+ patch: Eldono de flikaĵo — korektoj de eraroj kaj facile apliki ŝanĝojn
version: Versio
statuses:
account: Skribanto
@@ -856,7 +863,12 @@ eo:
message_html: "Via objektostokado estas misagordita. La privateco de viaj uzantoj estas en risko."
tags:
moderation:
+ not_usable: Ne uzebla
+ review_requested: Revizio petita
+ reviewed: Reviziita
title: Stato
+ unreviewed: Nereviziita
+ usable: Uzebla
name: Nomo
newest: Plej novaj
oldest: Plej malnovaj
@@ -1039,6 +1051,7 @@ eo:
hint_html: Nur unu plia afero! Ni devas konfirmi, ke vi estas homo (tio estas por ke ni povu konservi la spamon ekstere!). Solvu la CAPTCHA sube kaj alklaku "Daŭrigu".
title: Sekureckontrolo
confirmations:
+ awaiting_review_title: Via registriĝo estas reviziita
clicking_this_link: alklakante ĉi tiun ligilon
login_link: ensaluti
registration_complete: Via registriĝo sur %{domain} nun finiĝis!
@@ -1097,6 +1110,7 @@ eo:
title: Ni pretigu vin ĉe %{domain}.
status:
account_status: Statuso de la konto
+ confirming: Atendante ke retpoŝta konfirmo estos kompletigita.
functional: Via konto estas tute funkcia.
redirecting_to: Via konto estas neaktiva ĉar ĝi nun alidirektas al %{acct}.
view_strikes: Vidi antauaj admonoj kontra via konto
@@ -1104,8 +1118,11 @@ eo:
use_security_key: Uzi sekurecan ŝlosilon
author_attribution:
example_title: Ekzempla teksto
+ hint_html: Ĉu vi skribas novaĵojn aŭ blogartikolojn ekster Mastodon? Kontrolu kiel vi estas kreditita kiam ili estas kunhavataj ĉe Mastodon.
+ instructions: 'Certigu, ke ĉi tiu kodo estas en la HTML de via artikolo:'
more_from_html: Pli de %{name}
s_blog: Blogo de %{name}
+ then_instructions: Poste, aldonu la domajnan nomon de la publikigado en la suba kampo.
title: Atribuo de aŭtoro
challenge:
confirm: Daŭrigi
@@ -1143,6 +1160,8 @@ eo:
before: 'Antau ol dauri, legu ĉi tiujn notojn zorgeme:'
caches: Enhavo kiu kaŝmemorigitas de aliaj serviloj eble restas
data_removal: Viaj afiŝoj kaj aliaj informoj estos forigita por eterne
+ email_change_html: Vi povas ŝanĝi vian retadreson sen forigi vian konton
+ email_contact_html: Se ĝi ankoraŭ ne alvenas, vi povas retpoŝti al %{email} por helpo
irreversible: Vi ne povas regajni au reaktivigi vian konton
more_details_html: Por pli da detaloj, vidi la privatecan politikon.
username_available: Via uzantnomo iĝos denove disponebla
@@ -1504,6 +1523,7 @@ eo:
unrecognized_emoji: ne estas rekonita emoĝio
redirects:
prompt: Se vi fidas ĉi tiun ligon, alklaku ĝin por daŭrigi.
+ title: Vi foriras %{instance}.
relationships:
activity: Konta aktiveco
confirm_follow_selected_followers: Ĉu vi certas ke vi volas sekvi la elektitajn sekvantojn?
@@ -1699,6 +1719,7 @@ eo:
contrast: Mastodon (Forta kontrasto)
default: Mastodon (Malhela)
mastodon-light: Mastodon (Hela)
+ system: Aŭtomata (uzu sisteman temon)
time:
formats:
default: "%Y.%b.%d, %H:%M"
@@ -1737,6 +1758,10 @@ eo:
extra: Estas nun preta por elŝuto!
subject: Via arkivo estas preta por elŝutado
title: Arkiva elŝuto
+ failed_2fa:
+ explanation: Iu provis ensaluti al via konto sed provizis nevalidan duan aŭtentikigfaktoron.
+ further_actions_html: Se ĉi tio ne estis vi, ni rekomendas ke vi %{action} tuj ĉar ĝi povas esti endanĝerigita.
+ subject: Malsukceso dum la dua aŭtentikigfaktoro
suspicious_sign_in:
change_password: ŝanĝi vian pasvorton
details: 'Ĉi-sube estas detaloj pri la saluto:'
@@ -1776,6 +1801,8 @@ eo:
silence: Konto limigita
suspend: Konto suspendita
welcome:
+ apps_android_action: Akiru ĝin ĉe Google Play
+ apps_ios_action: Elŝutu ĉe la App Store
apps_step: Elŝutu niajn oficialajn aplikaĵojn.
apps_title: Aplikaĵoj de Mastodon
edit_profile_action: Agordi
@@ -1783,9 +1810,14 @@ eo:
explanation: Jen kelkaj konsiloj por helpi vin komenci
feature_action: Lerni pli
follow_action: Sekvi
+ follow_step: Sekvi interesajn homojn estas pri kio Mastodon temas.
+ follows_subtitle: Sekvu konatajn kontojn
+ follows_title: Kiun sekvi
+ follows_view_more: Rigardu pli da homoj por sekvi
hashtags_recent_count:
one: "%{people} homo en la pasintaj 2 tagoj"
other: "%{people} homoj en la pasintaj 2 tagoj"
+ hashtags_subtitle: Esploru kio estas tendenco ekde la pasintaj 2 tagoj
hashtags_title: Popularaj kradvortoj
hashtags_view_more: Vidi pli da popularaj kradvortoj
post_action: Redakti
@@ -1811,6 +1843,7 @@ eo:
instructions_html: Kopiu kaj algluu la jenan kodon en la HTML de via retejo. Poste aldonu la adreson de via retejo en unu el la kromaj kampoj de via profilo en la langeto "Redakti profilon" kaj konservu la ŝanĝojn.
verification: Kontrolo
verified_links: Via kontrolitaj ligiloj
+ website_verification: Reteja konfirmo
webauthn_credentials:
add: Aldoni novan sekurecan ŝlosilon
create:
diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml
index a27ba1a5484448..79bfdfbdbf7050 100644
--- a/config/locales/es-AR.yml
+++ b/config/locales/es-AR.yml
@@ -1166,11 +1166,11 @@ es-AR:
use_security_key: Usar la llave de seguridad
author_attribution:
example_title: Texto de ejemplo
- hint_html: "¿Escribes noticias o artículos de blog fuera de Mastodon? Controla cómo se te acredita cuando se comparten en Mastodon."
- instructions: 'Asegúrate de que este código está en el HTML de tu artículo:'
+ hint_html: "¿Escribís artículos de noticias o de blog fuera de Mastodon? Controlá cómo se te acredita cuando se comparten en Mastodon."
+ instructions: 'Asegurate de que este código está en el HTML de tu artículo:'
more_from_html: Más de %{name}
s_blog: Blog de %{name}
- then_instructions: A continuación, añade el nombre de dominio de la publicación en el campo inferior.
+ then_instructions: Luego, agregá el nombre de dominio de la publicación en el campo de abajo.
title: Atribución del autor
challenge:
confirm: Continuar
diff --git a/config/locales/et.yml b/config/locales/et.yml
index 1a679af87f1f87..3be9add91ce76a 100644
--- a/config/locales/et.yml
+++ b/config/locales/et.yml
@@ -1166,8 +1166,11 @@ et:
use_security_key: Kasuta turvavõtit
author_attribution:
example_title: Näidistekst
+ hint_html: Kirjutad uudiseid või blogisid Mastodonist väljapool? Määra, kuidas sinule viidatakse, kui neid lehti jagatakse Mastodonis.
+ instructions: 'Vaata, et artikli HTML sisus oleks see kood sees:'
more_from_html: Rohkem kasutajalt %{name}
s_blog: Kasutaja %{name} blogi
+ then_instructions: Siis lisa avaldaja domeeninimi allolevasse välja.
title: Autori tunnustamine
challenge:
confirm: Jätka
diff --git a/config/locales/fa.yml b/config/locales/fa.yml
index 3083bc13cbcdd9..603cfe8de18491 100644
--- a/config/locales/fa.yml
+++ b/config/locales/fa.yml
@@ -190,9 +190,11 @@ fa:
create_user_role: ایجاد نقش
demote_user: تنزل کاربر
destroy_announcement: حذف اعلامیه
+ destroy_canonical_email_block: حذف انسداد رایانامه
destroy_custom_emoji: حذف اموجی سفارشی
destroy_domain_allow: حذف اجازهٔ دامنه
destroy_domain_block: حذف انسداد دامنه
+ destroy_email_domain_block: حذف انسداد دامنهٔ رایانامه
destroy_instance: پاکسازی دامنه
destroy_ip_block: حذف قاعدهٔ آیپی
destroy_status: حذف وضعیت
@@ -200,8 +202,10 @@ fa:
destroy_user_role: نابودی نقش
disable_2fa_user: از کار انداختن ورود دومرحلهای
disable_custom_emoji: از کار انداختن اموجی سفارشی
+ disable_sign_in_token_auth_user: از کار انداختن تأیید هویت ژتون رایانامهای برای کاربر
disable_user: از کار انداختن کاربر
enable_custom_emoji: به کار انداختن اموجی سفارشی
+ enable_sign_in_token_auth_user: به کار انداختن تأیید هویت ژتون رایانامهای برای کاربر
enable_user: به کار انداختن کاربر
memorialize_account: یادسپاری حساب
promote_user: ترفیع کاربر
@@ -231,20 +235,26 @@ fa:
approve_appeal_html: "%{name} درخواست تجدیدنظر تصمیم مدیر را از %{target} پذیرفت"
approve_user_html: "%{name} ثبت نام %{target} را تایید کرد"
assigned_to_self_report_html: "%{name} رسیدگی به گزارش %{target} را به عهده گرفت"
+ change_email_user_html: "%{name} نشانی رایانامهٔ کاربر %{target} را عوض کرد"
change_role_user_html: "%{name} نقش %{target} را تغییر داد"
+ confirm_user_html: "%{name} نشانی رایانامهٔ کاربر %{target} را تأیید کرد"
create_account_warning_html: "%{name} هشداری برای %{target} فرستاد"
create_announcement_html: "%{name} اعلامیهای جدید ایجاد کرد %{target}"
+ create_canonical_email_block_html: "%{name} رایانامه با درهمریزی %{target} را مسدود کرد"
create_custom_emoji_html: "%{name} اموجی تازهٔ %{target} را بارگذاشت"
create_domain_allow_html: "%{name} دامنهٔ %{target} را مجاز کرد"
create_domain_block_html: "%{name} دامنهٔ %{target} را مسدود کرد"
+ create_email_domain_block_html: "%{name} دامنهٔ رایانامهٔ %{target} را مسدود کرد"
create_ip_block_html: "%{name} برای آیپی %{target} قانونی ایجاد کرد"
create_unavailable_domain_html: "%{name} تحویل محتوا به دامنه %{target} را متوقف کرد"
create_user_role_html: "%{name} نقش %{target} را ایجاد کرد"
demote_user_html: "%{name} کاربر %{target} را تنزل داد"
destroy_announcement_html: "%{name} اعلامیهٔ %{target} را حذف کرد"
+ destroy_canonical_email_block_html: "%{name} رایانامه با درهمریزی %{target} را نامسدود کرد"
destroy_custom_emoji_html: "%{name} شکلک %{target} را حذف کرد"
destroy_domain_allow_html: "%{name} دامنهٔ %{target} را از فهرست مجاز برداشت"
destroy_domain_block_html: "%{name} انسداد دامنهٔ %{target} را رفع کرد"
+ destroy_email_domain_block_html: "%{name} انسداد دامنهٔ رایانامهٔ %{target} را برداشت"
destroy_instance_html: "%{name} دامنه %{target} را پاکسازی کرد"
destroy_ip_block_html: "%{name} قاعدهٔ آیپی %{target} را حذف کرد"
destroy_status_html: "%{name} وضعیت %{target} را برداشت"
@@ -252,8 +262,10 @@ fa:
destroy_user_role_html: "%{name} نقش %{target} را حذف کرد"
disable_2fa_user_html: "%{name} ضرورت ورود دو مرحلهای را برای کاربر %{target} غیر فعال کرد"
disable_custom_emoji_html: "%{name} شکلک %{target} را غیرفعال کرد"
+ disable_sign_in_token_auth_user_html: "%{name}، احراز هویت با توکن رایانامه را برای %{target} غیرفعال کرد"
disable_user_html: "%{name} ورود را برای کاربر %{target} غیرفعال کرد"
enable_custom_emoji_html: "%{name} شکلک %{target} را فعال کرد"
+ enable_sign_in_token_auth_user_html: "%{name}، احراز هویت با توکن رایانامه را برای %{target} فعال کرد"
enable_user_html: "%{name} ورود را برای کاربر %{target} فعال کرد"
memorialize_account_html: "%{name} حساب %{target} را تبدیل به صفحهٔ یادمان کرد"
promote_user_html: "%{name} کاربر %{target} را ترفیع داد"
@@ -478,6 +490,7 @@ fa:
instance_followers_measure: پیگیرندگانمان در آنجا
instance_follows_measure: پیگیرندگانشان در اینجا
instance_languages_dimension: زبانهای برتر
+ instance_media_attachments_measure: پیوستهای رسانهای ذخیره شده
instance_reports_measure: گزارشها دربارهشان
instance_statuses_measure: فرستههای ذخیره شده
delivery:
@@ -565,6 +578,9 @@ fa:
other_description_html: دیدن انتخاب های بیشتر برای کنترل رفتار حساب و سفارشی سازی ارتباط با حساب گزارش شده.
resolve_description_html: هیچ کنشی علیه حساب گزارش شده انجام نخواهد شد. هیچ شکایتی ضبط نشده و گزارش بسته خواهد شد.
add_to_report: افزودن بیشتر به گزارش
+ already_suspended_badges:
+ local: از پیش روی این کارساز معلّق شده
+ remote: از پیش روی کارسازشان معلّق شده
are_you_sure: مطمئنید؟
assign_to_self: به عهدهٔ من بگذار
assigned: مدیر عهدهدار
@@ -574,6 +590,7 @@ fa:
comment:
none: هیچ
confirm: تأیید
+ confirm_action: تأیید کنش مدیریتی برای @%{acct}
created_at: گزارششده
delete_and_resolve: حذف فرستهها
forwarded: هدایت شده
@@ -594,6 +611,7 @@ fa:
report: 'گزارش #%{id}'
reported_account: حساب گزارششده
reported_by: گزارش از طرف
+ reported_with_application: گزارش شده با برنامه
resolved: حلشده
resolved_msg: گزارش با موفقیت حل شد!
skip_to_actions: پرش به کنشها
@@ -665,6 +683,8 @@ fa:
title: ظاهر
branding:
title: ویژندگی
+ content_retention:
+ danger_zone: منطقهٔ خطر
default_noindex:
title: درخواست خروج از اندیسگذاری پیشگزیدهٔ موتور جستوجو
discovery:
@@ -752,6 +772,9 @@ fa:
message_html: هیچ قانون کارسازی تعریف نکردهاید.
sidekiq_process_check:
message_html: صف(های) %{value} فاقد هیچونه فرایند Sidekiq هستند. لطفا تنظیمات Sidekiq خود را بازبینی کنید
+ software_version_check:
+ action: دیدن بهروز رسانیهای موجود
+ message_html: بهروز رسانی ماستودون موجود است.
software_version_critical_check:
action: مشاهده بهروزرسانیهای موجود
message_html: یک بهروزرسانی حیاتی ماستودون موجود است، لطفا در اسرع وقت بهروزرسانی کنید.
@@ -775,16 +798,27 @@ fa:
trendable: قابل داغ شدن
unreviewed: بررسی نشده
usable: قابل استفاده
+ name: نام
+ newest: جدیدترین
+ oldest: قدیمیترین
+ open: دیدن عمومی
+ reset: بازنشانی
review: وضعیت بازبینی
+ search: جستوجو
+ title: برچسبها
updated_msg: تنظیمات برچسبها با موفقیت بهروز شد
title: مدیریت
trends:
allow: اجازه
approved: تأیید شده
+ confirm_allow: مطمئنید که میخواهید برچسبهای گزیده را مجاز کنید؟
+ confirm_disallow: مطمئنید که میخواهید برچسبهای گزیده را ممنوع کنید؟
disallow: اجازه ندادن
links:
allow: اجازه به پیوند
allow_provider: اجازه به ناشر
+ confirm_allow: مطمئنید که میخواهید پیوندهای گزیده را مجاز کنید؟
+ confirm_allow_provider: مطمئنید که میخواهید فراهمکنندههای گزیده را مجاز کنید؟
confirm_disallow: مطمئنید که می خواهید پیوندهای گزیده را ممنوع کنید؟
confirm_disallow_provider: مطمئنید که می خواهید فراهم کنندههای گزیده را ممنوع کنید؟
disallow: اجازه ندادن به پیوند
@@ -792,18 +826,32 @@ fa:
no_link_selected: هیچ پیوندی تغییر نکرد زیرا هیچکدام از آنها انتخاب نشده بودند
publishers:
no_publisher_selected: هیچ ناشری تغییر نکرد زیرا هیچکدام از آنها انتخاب نشده بودند
+ shared_by_over_week:
+ one: همرسانده به دست یک نفر در هفتهٔ گذشته
+ other: همرسانده به دست %{count} نفر در هفتهٔ گذشته
title: پیوندهای داغ
+ usage_comparison: امروز %{today} بار همرسانی شده. در مقایسه با %{yesterday} بار دیروز
not_allowed_to_trend: اجازهٔ داغ شدن ندارد
+ only_allowed: فقط مجازها
pending_review: بازبینی منتظر
preview_card_providers:
+ allowed: پیوندها از این ناشر میتوانند داغ شوند
+ rejected: پیوندها از این ناشر داغ نخواهند شد
title: ناشران
rejected: رد شده
statuses:
allow: اجازه به فرسته
allow_account: اجازه به نگارنده
+ confirm_allow: مطمئنید که میخواهید وضعیتهای گزیده را مجاز کنید؟
+ confirm_allow_account: مطمئنید که میخواهید حسابهای گزیده را مجاز کنید؟
+ confirm_disallow: مطمئنید که میخواهید وضعیتهای گزیده را ممنوع کنید؟
+ confirm_disallow_account: مطمئنید که میخواهید حسابهای گزیده را ممنوع کنید؟
disallow: ممنوع کردن فرسته
disallow_account: ممنوع کردن نگارنده
no_status_selected: هیچ فرستهٔ داغی تغییری نکرد زیرا هیچکدام از آنها انتخاب نشده بودند
+ shared_by:
+ one: یک بار برگزیده یا همرسانی شده
+ other: "%{friendly_count} بار برگزیده یا همرسانی شده"
title: فرستههای داغ
tags:
current_score: امتیاز کنونی %{score}
@@ -812,8 +860,9 @@ fa:
tag_languages_dimension: زبانهای برتر
tag_servers_dimension: کارسازهای برتر
tag_servers_measure: کارسازهای گوناگون
- tag_uses_measure: کل استفادهّا
+ tag_uses_measure: کل استفادهها
listable: میتواند پیشنهاد شود
+ no_tag_selected: هیچ برچسبی تغییر نکرد زیرا هیچکدام گزیده نبودند
not_listable: پیشنهاد نخواهد شد
not_usable: غیر قابل استفاده
title: برچسبهای پرطرفدار
@@ -908,7 +957,9 @@ fa:
title: بررسی های امنیتی
confirmations:
awaiting_review_title: ثبتنامتان دارد بررسی میشود
+ clicking_this_link: زدن این پیوند
login_link: ورود
+ proceed_to_login_html: میتوانید به %{login_link} ادامه دهید.
welcome_title: خوش آمدید، %{name}!
delete_account: پاککردن حساب
delete_account_html: اگر میخواهید حساب خود را پاک کنید، از اینجا پیش بروید. از شما درخواست تأیید خواهد شد.
@@ -930,6 +981,7 @@ fa:
or_log_in_with: یا ورود به وسیلهٔ
privacy_policy_agreement_html: سیاست محرمانگی را خوانده و پذیرفتهام
progress:
+ confirm: تأیید رایانامه
details: جزئیات شما
review: بررسی ما
rules: پذیرش قوانین
@@ -943,6 +995,7 @@ fa:
rules:
accept: پذیرفتن
back: بازگشت
+ invited_by: 'با سپاس از دعوتی از این فرد دریافت کردهاید میتوانید به %{domain} بپیوندید:'
title_invited: شما دعوت شده اید.
security: امنیت
set_new_password: تعین گذرواژه جدید
@@ -952,17 +1005,23 @@ fa:
title: صندوق ورودیتان را بررسی کنید
sign_in:
title: ورود به %{domain}
+ sign_up:
+ title: بیایید روی %{domain} برپایتان کنیم.
status:
account_status: وضعیت حساب
+ confirming: منتظر کامل شدن تأیید رایانامه.
functional: حسابتان کاملاً قابل استفاده است.
+ pending: درخواستتان منتظر بازبینی مسئولان است. ممکن است کمی طول بکشد. اگر درخواستتان پذیرفته شود رایانامهای خواهید گرفت.
redirecting_to: حساب شما غیرفعال است زیرا هماکنون به %{acct} منتقل شده است.
view_strikes: دیدن شکایتهای گذشته از حسابتان
too_fast: فرم با سرعت بسیار زیادی فرستاده شد، دوباره تلاش کنید.
use_security_key: استفاده از کلید امنیتی
author_attribution:
example_title: متن نمونه
+ instructions: 'مطمئن شوید این کد در HTML مقالهتان وجود دارد:'
more_from_html: بیشتر از %{name}
s_blog: بلاگ %{name}
+ then_instructions: سپس نام دامنهٔ مقاله را در زمینهٔ زیر بیفزایید.
title: اعتباردهی به نگارنده
challenge:
confirm: ادامه
@@ -1000,6 +1059,9 @@ fa:
before: 'پیش از ادامه، لطفاً نکتههای زیر را به دقت بخوانید:'
caches: ممکن است محتواهایی که دیگر کارسازها ذخیره کردهاند، همچنان باقی بماند
data_removal: نوشتهها و دادههای شما برای همیشه پاک خواهند شد
+ email_change_html: میتوانید بدون حذف حسابتان نشانی رایانامهتان را تغییر دهید
+ email_contact_html: اگر هنوز نرسیده، میتوانید برای راهنمایی به %{email} رایانامه دهید
+ email_reconfirmation_html: اگر رایانامهٔ تأیید را نگرفتهاید، میتوانید دوباره درخواستش دهید
irreversible: شما نخواهید توانست حساب خود را بازیابی یا فعالسازی کنید
more_details_html: برای اطلاعات بیشتر سیاست رازداری را ببینید.
username_available: نام کاربری شما دوباره در دسترس خواهد بود
@@ -1092,8 +1154,10 @@ fa:
deprecated_api_multiple_keywords: این پارامترها نمیتوانند از این برنامه تغییر یابند؛ چرا که به بیش از یک کلیدواژهٔ پالایه اعمال میشود. از برنامهای جدیدتر یا میانای وب استفاده کنید.
invalid_context: زمینهای موجود نیست یا نامعتبر است
index:
+ contexts: پالایهها در %{contexts}
delete: پاککردن
empty: هیچ پالایهای ندارید.
+ expires_in: در %{distance} منقضی می شود
expires_on: در %{date} منقضی می شود
keywords:
one: "%{count} کلیدواژه"
@@ -1116,6 +1180,9 @@ fa:
title: فرستههای پالوده
generic:
all: همه
+ all_items_on_page_selected_html:
+ one: "%{count} مورد در این صفحه گزیده شده."
+ other: همهٔ %{count} مورد این صفحه گزیده شدهاند.
all_matching_items_selected_html:
one: "%{count} مورد مطابق با جستوجویتان گزیده شده."
other: "%{count} مورد مطابق با جستوجویتان گزیده شدند."
@@ -1137,6 +1204,9 @@ fa:
other: یک چیزی هنوز درست نیست! لطفاً %{count} خطای زیر را ببینید
imports:
errors:
+ empty: پروندهٔ خالی CSV
+ incompatible_type: ناسازگار با گونهٔ درونریزی گزیده
+ invalid_csv_file: 'پروندهٔ CSV نامعتبر. خطا: %{error}'
over_rows_processing_limit: دارای بیش از %{count} ردیف
too_large: حجم فایل خیلی بزرگ است
failures: شکستها
@@ -1214,7 +1284,15 @@ fa:
title: تاریخچهٔ تأیید هویت
mail_subscriptions:
unsubscribe:
+ action: بله. لغو اشتراک
complete: لغو اشتراک شد
+ emails:
+ notification_emails:
+ favourite: رایانامههای آگاهی برگزیدن
+ follow: رایانامههای آگاهی پیگیری
+ follow_request: رایانامههای درخواست پیگیری
+ mention: رایانامههای آگاهی اشاره
+ reblog: رایانامههای آگاهی تقویت
title: لغو اشتراک
media_attachments:
validations:
@@ -1295,6 +1373,7 @@ fa:
update:
subject: "%{name} فرستهای را ویرایست"
notifications:
+ administration_emails: آگاهیهای رایانامهای مدیر
email_events: رویدادها برای آگاهیهای رایانامهای
email_events_hint: 'گزینش رویدادهایی که میخواهید برایشان آگاهی دریافت کنید:'
number:
@@ -1352,12 +1431,16 @@ fa:
errors:
limit_reached: تجاوز از کران واکنشهای مختلف
unrecognized_emoji: شکلک شناختهشدهای نیست
+ redirects:
+ prompt: اگر به این پویند اطمینان دارید برای ادامه بزنید.
+ title: دارید %{instance} را ترک میکنید.
relationships:
activity: فعالیت حساب
confirm_follow_selected_followers: آیا مطمئنید که می خواهید دنبال کننده های انتخابی را دنبال کنید؟
confirm_remove_selected_followers: آیا شما واقعا می خواهید دنبال کننده های انتخابی را حذف کنید؟
confirm_remove_selected_follows: آیا شما واقعا می خواهید دنبال شده های انتخابی را حذف کنید؟
dormant: غیرفعال
+ follow_failure: نتوانست برخی از حسابهای گزیده را پی بگیرد.
follow_selected_followers: پیگیری پیگیران انتخاب شده
followers: پیگیران
following: پی میگیرد
@@ -1462,7 +1545,7 @@ fa:
domain_block: تعلیق کارساز (%{target_name})
user_domain_block: "%{target_name} را مسدود کردید"
lost_followers: پیگیرندگان از دست رفته
- lost_follows: پیگرفتهّای از دست رفته
+ lost_follows: پیگرفتههای از دست رفته
preamble: وقتی دامنهای را مسدود کرده یا ناظرانتان تصمیم به تعلیق کارسازی دوردست میگیرند، ممکن است پیگیران و پیگرفتههایتان را از دست بدهید. با این حال قادرید سیاهههایی از ارتباطهای قطع شده را برای بررسی و درونریزی احتمالی روی کارسازی دیگر بار بگیرید.
purged: اطّلاعات دربارهٔ این کارساز به دست مدیران کارسازتان پاک سازی شده.
type: رویداد
@@ -1571,16 +1654,23 @@ fa:
webauthn: کلیدهای امنیتی
user_mailer:
appeal_approved:
+ action: تنظیمات حساب
explanation: درخواست تجدیدنظر اخطار علیه حساب شما در %{strike_date} که در %{appeal_date} ارسال کردهاید، پذیرفته شده است. حساب شما بار دیگر در وضعیت خوبی قرار دارد.
subject: درخواست تجدیدنظر شما در %{date} پذیرفته شد
+ subtitle: حسابتان دوباره در وضعیت مناسب است.
title: درخواست تجدیدنظر پذیرفته شد
appeal_rejected:
explanation: درخواست تجدیدنظر اخطار علیه حساب شما در %{strike_date} که در %{appeal_date} ارسال کردهاید، رد شده است.
subject: درخواست تجدیدنظر شما در %{date} رد شده است
+ subtitle: درخواست تجدیدنظرتان رد شد.
title: درخواست تجدیدنظر رد شد
backup_ready:
+ explanation: درخواست پشتیبانی کامل از حساب ماستودونتان کردید.
+ extra: اکنون آمادهٔ بارگیری است!
subject: بایگانی شما آمادهٔ دریافت است
title: گرفتن بایگانی
+ failed_2fa:
+ details: 'جزییات تلاشها برای ورد:'
suspicious_sign_in:
change_password: تغییر گذرواژهتان
details: 'جزییات ورود:'
@@ -1592,8 +1682,11 @@ fa:
spam: هرزنامه
reason: 'دلیل:'
subject:
+ delete_statuses: فرستههایتان روی %{acct} برداشته شدهاند
disable: حساب %{acct} شما متوقف شده است
+ mark_statuses_as_sensitive: فرستههایتان روی %{acct} به عنوان حسّاس علامت خوردهاند
none: هشدار برای %{acct}
+ sensitive: فرستههایتان روی %{acct} از اکنون به عنوان حسّاس علامت خواهند خورد
silence: حساب %{acct} شما محدود شده است
suspend: حساب %{acct} شما معلق شده است
title:
@@ -1609,11 +1702,39 @@ fa:
apps_ios_action: بارگیری روی فروشگاه کاره
apps_step: بارگیری کارهٔ رسمیمان.
apps_title: کارههای ماستودون
+ checklist_subtitle: 'بیایید روی این مرز اجتماعی جدید راهتان بیندازیم:'
+ checklist_title: سیاههٔ بررسی خوشآمد
edit_profile_action: شخصی سازی
+ edit_profile_step: تقویت تعاملهایتان با داشتن نمایهای جامع.
+ edit_profile_title: شخصی سازی نمایهتان
explanation: نکتههایی که برای آغاز کار به شما کمک میکنند
+ feature_action: دانشتن بیشتر
+ feature_audience: ماستودون بدون حضور فرد میانی، فرصتی منحصربهفرد برای مدیریت مخاطبان ارائه میکند. ماستودونی که روی زیرساخت خودتان استقرار یافته باشد، میگذارد بدون بودن زیر واپایش کسی غیر از خودتان، دیگر کارسازهای برخط ماستودون را دنبال کرده و به دست آنها دنبال شوید.
+ feature_audience_title: مخاطبانتان را با اطمینان بسازید
+ feature_control: شما بهتر از هر کسی دیگری میدونید که چه میخواهید ببینید. هیچ الگوریتم یا تبلیغی وقت شما را تلف نمیکند. تنها با یک حساب، هر کسی را روی هر کارساز ماستودون دیگری دنبال کرده و فرستههایشان را به ترتیب زمانی دریافت کنید. گوشهٔ دنج اینترنتی خودتان را بیشتر شبیه خودتان کنید.
+ feature_control_title: کنترل خط زمانیتان را به دست بگیرید
+ feature_creativity: ماستودون از فرستههای تصویری، ویدئویی و شنیداری، توضیحات دسترسپذیری، نظرسنجی، هشدار محتوا، تصاویر نمایهٔ پویا، شکلکهای سفارشی، کنترل برش تصاویر بندانگشتی و بسیاری موارد دیگر پشتیبانی میکند تا به شما برای ابزار کردن خود در فضای برخط کمک کند. چه بخواهید یک اثر هنری، موسیقی یا پادکست منتشر کنید، ماستودون در خدمت شماست.
+ feature_creativity_title: خلاقیت بیهمتا
+ feature_moderation: ماستودن، تصمیمگیری را به شما باز میگرداند. هر کارساز قوانین و شرایط استفاده خاص خودش را وضع میکند که فقط به صورت محلی اعمال میشود و نه به صورت از بالا به پایین در سکوهای اجتماعی شرکتی. این موضوع باعث افزایش انعطاف در پاسخگویی به نیازهای گروههای مختلف میشود. به کارسازی با قوانین مورد پسندتان بپیوندید، و یا نمونه خود را میزبانی کنید.
+ feature_moderation_title: نظارت به شکلی که باید باشد
follow_action: پیگیری
+ follow_step: You curate your own feed. Lets fill it with interesting people.
+ follow_title: شخصی سازی خوراک خانگیتان
+ follows_subtitle: پی گرفتن حسابهای شناخته شده
+ follows_title: افرادی برای پیگیری
+ follows_view_more: دیدن افرادی بیشتر برای پیگیری
+ hashtags_recent_count:
+ one: "%{people} نفر در ۲ روز اخیر"
+ other: "%{people} نفر در ۲ روز اخیر"
+ hashtags_subtitle: کشف گرایهها در ۲ روز گذشته
+ hashtags_title: برچسبهای داغ
+ hashtags_view_more: دیدن برچسبهای داغ بیشتر
post_action: ایجاد
+ post_step: سلام کردن به جهان با متن، عکس، ویدیو یا نظرسنجی.
+ post_title: ساخت نخستین نظرسنجیتان
share_action: همرسانی
+ share_step: بگذارید دوستانتان بدانند چگونه روی ماستودون بیابندتان.
+ share_title: همرسانی نمایهٔ ماستودونتان
sign_in_action: ورود
subject: به ماستودون خوش آمدید
title: خوش آمدید، کاربر %{name}!
@@ -1622,6 +1743,8 @@ fa:
go_to_sso_account_settings: به تنظیمات حساب فراهمگر هوبتتان بروید
invalid_otp_token: کد ورود دومرحلهای نامعتبر است
otp_lost_help_html: اگر شما دسترسی به هیچکدامشان ندارید، باید با ایمیل %{email} تماس بگیرید
+ rate_limited: تلاش ّای هویتسنجی بیش از حد. لطفاً بعداً دوباره تلاش کنید.
+ seamless_external_login: با خدمتی خارجی وارد شدهاید، برای همین تنظیمات رایانامه و گذرواژه در دسترس نیستند.
signed_in_as: 'واردشده به نام:'
verification:
extra_instructions_html: نکته: پیوند روی پایگاه وبتان میتواند نامرئی باشد. بخش مهم rel="me" است که از جعل هویت روی پایگاههایی با محتوای تولید شده به دست کاربر جلوگیری میکند. حتا میتوانید به جای برچسب a از برچسب link در سرایند صفحه استفاده کنید؛ ولی HTML باید بدون اجرای جاوااسکریپت در دسترس باشد.
diff --git a/config/locales/ga.yml b/config/locales/ga.yml
index 0657f827d1b293..5e5ecb238e3e6d 100644
--- a/config/locales/ga.yml
+++ b/config/locales/ga.yml
@@ -1220,8 +1220,11 @@ ga:
use_security_key: Úsáid eochair shlándála
author_attribution:
example_title: Téacs samplach
+ hint_html: An bhfuil tú ag scríobh altanna nuachta nó blag lasmuigh de Mastodon? Rialú conas a gheobhaidh tú creidmheas nuair a roinntear iad ar Mastodon.
+ instructions: 'Cinntigh go bhfuil an cód seo i HTML d''alt:'
more_from_html: Tuilleadh ó %{name}
s_blog: Blag %{name}
+ then_instructions: Ansin, cuir ainm fearainn an fhoilseacháin sa réimse thíos.
title: Leithdháil an údair
challenge:
confirm: Lean ar aghaidh
diff --git a/config/locales/gd.yml b/config/locales/gd.yml
index 3495a070ecfe57..a05ce6ed3cd435 100644
--- a/config/locales/gd.yml
+++ b/config/locales/gd.yml
@@ -1202,8 +1202,11 @@ gd:
use_security_key: Cleachd iuchair tèarainteachd
author_attribution:
example_title: Ball-sampaill teacsa
+ hint_html: An sgrìobh thu naidheachdan no bloga taobh a-muigh Mhastodon? Stiùirich mar a thèid iomradh a thoirt ort nuair a bhios na h-artaigilean agad ’gan co-roinneadh air Mastodon.
+ instructions: 'Dèan cinnteach gu bheil an còd seo am broinn HTML an artaigil agad:'
more_from_html: Barrachd o %{name}
s_blog: Bloga aig %{name}
+ then_instructions: An uair sin, cuir ainm àrainn an fhoillseachaidh ris an raon gu h-ìosal.
title: Aithris air an ùghdar
challenge:
confirm: Lean air adhart
diff --git a/config/locales/hu.yml b/config/locales/hu.yml
index 4f18e3b4d4861d..47bd24fccf2767 100644
--- a/config/locales/hu.yml
+++ b/config/locales/hu.yml
@@ -1166,8 +1166,11 @@ hu:
use_security_key: Biztonsági kulcs használata
author_attribution:
example_title: Mintaszöveg
+ hint_html: Mastodonon kívül írsz híreket vagy blogbejegyzéseket? Szabályozd, hogyan tüntethetnek fel szerzőként, amikor Mastodonon osztják meg őket.
+ instructions: 'Győződj meg róla, hogy ez a kód a cikked HTML-jében van:'
more_from_html: 'Több tőle: %{name}'
s_blog: "%{name} blogja"
+ then_instructions: Aztán add meg a publikáció domain-nevét az alábbi mezőben.
title: Szerző forrásmegjelölése
challenge:
confirm: Folytatás
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
index 4462cb1fb16aa7..15d0e2e6a4c593 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -1148,8 +1148,11 @@ ja:
use_security_key: セキュリティキーを使用
author_attribution:
example_title: サンプルテキスト
+ hint_html: Mastodonの外でニュースやブログなどを執筆しているユーザーは、Mastodonで自分の記事が共有されたときに著者情報を表示させることができます。
+ instructions: 以下のコードを自分の記事のHTMLに貼り付けます。
more_from_html: "%{name} のその他の情報"
s_blog: "%{name} のブログ"
+ then_instructions: その後、記事の公開に使用しているドメイン名を以下の入力欄に追加してください。
title: 著者の帰属
challenge:
confirm: 続ける
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index 43944fe0f651cc..6bff1703e68d97 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -1150,8 +1150,11 @@ ko:
use_security_key: 보안 키 사용
author_attribution:
example_title: 예시 텍스트
+ hint_html: 마스토돈 밖에서 뉴스나 블로그 글을 쓰시나요? 마스토돈에 공유되었을 때 어떻게 표시될지를 제어하세요.
+ instructions: '이 코드가 글의 HTML 안에 포함되는지 확인하세요:'
more_from_html: "%{name}의 게시물 더 보기"
s_blog: "%{name}의 블로그"
+ then_instructions: 그리고 발행처의 도메인 네임을 아래 입력란에 추가하세요.
title: 작성자 기여
challenge:
confirm: 계속
diff --git a/config/locales/lv.yml b/config/locales/lv.yml
index 908b15e851bc09..9e9515511045eb 100644
--- a/config/locales/lv.yml
+++ b/config/locales/lv.yml
@@ -29,11 +29,11 @@ lv:
action: Veikt darbību
already_silenced: Šis konts jau ir ierobežots.
already_suspended: Šis konts jau ir aizturēts.
- title: Veikt moderācijas darbību %{acct}
+ title: Veikt satura pārraudzības darbību %{acct}
account_moderation_notes:
create: Atstāt piezīmi
- created_msg: Moderācijas piezīme ir veiksmīgi izveidota!
- destroyed_msg: Moderācijas piezīme ir veiksmīgi iznīcināta!
+ created_msg: Satura pārraudzības piezīme ir veiksmīgi izveidota.
+ destroyed_msg: Satura pārraudzības piezīme ir veiksmīgi iznīcināta.
accounts:
add_email_domain_block: Liegt e-pasta domēnu
approve: Apstiprināt
@@ -96,12 +96,12 @@ lv:
moderation:
active: Aktīvie
all: Visi
- disabled: Atspējots
+ disabled: Atspējota
pending: Gaida
- silenced: Ierobežotie
- suspended: Apturētie
- title: Moderācija
- moderation_notes: Moderācijas piezīmes
+ silenced: Ierobežoti
+ suspended: Apturēti
+ title: Satura pārraudzība
+ moderation_notes: Satura pārraudzības piezīmes
most_recent_activity: Pati pēdējā darbība
most_recent_ip: Pati pēdējā IP
no_account_selected: Neviens konts netika mainīts, jo neviens netika atlasīts
@@ -236,7 +236,7 @@ lv:
update_status: Atjaunināt ziņu
update_user_role: Atjaunināt lomu
actions:
- approve_appeal_html: "%{name} apstiprināja moderācijas lēmuma apelāciju no %{target}"
+ approve_appeal_html: "%{name} apstiprināja satura pārraudzības lēmuma iebildumu no %{target}"
approve_user_html: "%{name} apstiprināja reģistrēšanos no %{target}"
assigned_to_self_report_html: "%{name} piešķīra pārskatu %{target} sev"
change_email_user_html: "%{name} nomainīja lietotāja %{target} e-pasta adresi"
@@ -267,7 +267,7 @@ lv:
enable_user_html: "%{name} iespējoja pieteikšanos lietotājam %{target}"
memorialize_account_html: "%{name} pārvērta %{target} kontu par atmiņas lapu"
promote_user_html: "%{name} paaugstināja lietotāju %{target}"
- reject_appeal_html: "%{name} noraidīja moderācijas lēmuma apelāciju no %{target}"
+ reject_appeal_html: "%{name} noraidīja satura pārraudzības lēmuma iebildumu no %{target}"
reject_user_html: "%{name} noraidīja reģistrēšanos no %{target}"
remove_avatar_user_html: "%{name} noņēma %{target} profila attēlu"
reopen_report_html: "%{name} atkārtoti atvēra ziņojumu %{target}"
@@ -362,9 +362,9 @@ lv:
other: "%{count}ziņojumi gaida"
zero: "%{count}ziņojumi gaida"
pending_tags_html:
- one: "%{count}tēmturis gaida"
- other: "%{count}tēmturi gaida"
- zero: "%{count}tēmturi gaida"
+ one: "%{count} tēmturis rindā"
+ other: "%{count} tēmturi rindā"
+ zero: "%{count} tēmturu rindā"
pending_users_html:
one: "%{count}lietotājs gaida"
other: "%{count}lietotāji gaida"
@@ -409,7 +409,7 @@ lv:
import: Importēt
new:
create: Izveodot bloku
- hint: Domēna bloķēšana netraucēs izveidot kontu ierakstus datu bāzē, bet ar atpakaļejošu datumu un automātiski tiks piemērotas noteiktas moderēšanas metodes šajos kontos.
+ hint: Domēna aizturēšana netraucēs izveidot kontu ierakstus datubāzē, bet šajos kontos ar atpakaļejošu datumu un automātiski tiks piemērotas noteikti satura pārraudzības veidi.
severity:
desc_html: "Ierobežojums padarīs ziņas no šī domēna kontiem neredzamas ikvienam, kas tiem neseko. Apturēšana no tava servera noņems visu šī domēna kontu saturu, multividi un profila datus. Izmanto Nav, ja vēlies vienkārši noraidīt multivides failus."
noop: Neviens
@@ -532,7 +532,7 @@ lv:
moderation:
all: Visas
limited: Ierobežotās
- title: Moderācija
+ title: Satura pārraudzība
private_comment: Privāts komentārs
public_comment: Publisks komentārs
purge: Iztīrīt
@@ -619,7 +619,7 @@ lv:
none: Neviens
comment_description_html: 'Lai sniegtu vairāk informācijas, %{name} rakstīja:'
confirm: Apstiprināt
- confirm_action: Apstipriniet regulēšanas darbību pret @%{acct}
+ confirm_action: Apstiprināt satura pārraudzības darbību pret @%{acct}
created_at: Ziņoti
delete_and_resolve: Izdzēst rakstus
forwarded: Pārsūtīti
@@ -667,7 +667,7 @@ lv:
delete_data_html: Dzēsiet lietotāja @%{acct} profilu un saturu pēc 30 dienām, ja vien to darbība pa šo laiku netiks atcelta
preview_preamble_html: "@%{acct} saņems brīdinājumu ar šādu saturu:"
record_strike_html: Ierakstiet brīdinājumu pret @%{acct}, lai palīdzētu jums izvērst turpmākus pārkāpumus no šī konta
- warning_placeholder: Izvēles papildu pamatojums regulēšanas darbībai.
+ warning_placeholder: Izvēles papildu pamatojums satura pārraudzības darbībai.
target_origin: Ziņotā konta izcelsme
title: Ziņojumi
unassign: Atsaukt
@@ -682,10 +682,10 @@ lv:
other: "%{count} lietotāji"
zero: "%{count} lietotāju"
categories:
- administration: Administrēšana
+ administration: Pārvaldība
devops: DevOps
invites: Uzaicinājumi
- moderation: Moderācija
+ moderation: Satura pārraudzība
special: Īpašās
delete: Dzēst
description_html: Izmantojot lietotāju lomas, vari pielāgot, kurām Mastodon funkcijām un apgabaliem var piekļūt tavi lietotāji.
@@ -706,7 +706,7 @@ lv:
manage_announcements: Pārvaldīt Paziņojumus
manage_announcements_description: Ļauj lietotājiem pārvaldīt paziņojumus serverī
manage_appeals: Pārvaldīt Pārsūdzības
- manage_appeals_description: Ļauj lietotājiem izskatīt apelācijas pret regulēšanas darbībām
+ manage_appeals_description: Ļauj lietotājiem pārskatīt iebildumus pret satura pārraudzības darbībām
manage_blocks: Pārvaldīt Bloķus
manage_custom_emojis: Pārvaldīt Pielāgotās Emocijzīmes
manage_custom_emojis_description: Ļauj lietotājiem pārvaldīt pielāgotās emocijzīmes serverī
@@ -715,7 +715,7 @@ lv:
manage_invites: Pārvaldīt Uzaicinājumus
manage_invites_description: Ļauj lietotājiem pārlūkot un deaktivizēt uzaicinājuma saites
manage_reports: Pārvaldīt Pārskatus
- manage_reports_description: Ļauj lietotājiem pārskatīt pārskatus un veikt pret tiem regulēšanas darbības
+ manage_reports_description: Ļauj lietotājiem pārskatīt ziņojumus un veikt pret tiem satura pārraudzības darbības
manage_roles: Pārvaldīt Lomas
manage_roles_description: Ļauj lietotājiem pārvaldīt un piešķirt lomas, kas ir zemākas par viņu lomu
manage_rules: Pārvaldīt Noteikumus
@@ -723,10 +723,10 @@ lv:
manage_settings: Pārvaldīt Iestatījumus
manage_settings_description: Ļauj lietotājiem mainīt vietnes iestatījumus
manage_taxonomies: Pārvaldīt Taksonomijas
- manage_taxonomies_description: Ļauj lietotājiem pārskatīt aktuālāko saturu un atjaunināt atsauces iestatījumus
+ manage_taxonomies_description: Ļauj lietotājiem pārskatīt aktuālāko saturu un atjaunināt tēmturu iestatījumus
manage_user_access: Pārvaldīt Lietotāju Piekļuves
manage_users: Pārvaldīt Lietotājus
- manage_users_description: Ļauj lietotājiem skatīt citu lietotāju informāciju un veikt pret viņiem regulēšanas darbības
+ manage_users_description: Ļauj lietotājiem skatīt citu lietotāju informāciju un veikt pret viņiem satura pārraudzības darbības
manage_webhooks: Pārvaldīt Tīmekļa Aizķeres
manage_webhooks_description: Ļauj lietotājiem iestatīt tīmekļa aizķeres administratīviem pasākumiem
view_audit_log: Skatīt Audita Žurnālu
@@ -779,6 +779,7 @@ lv:
disabled: Nevienam
users: Vietējiem reģistrētiem lietotājiem
registrations:
+ moderation_recommandation: Lūgums nodrošināt, ka Tev ir pieņemama un atsaucīga satura pārraudzības komanda, pirms padari reģistrēšanos visiem pieejamu.
preamble: Kontrolē, kurš var izveidot kontu tavā serverī.
title: Reģistrācijas
registrations_mode:
@@ -786,6 +787,7 @@ lv:
approved: Reģistrācijai nepieciešams apstiprinājums
none: Neviens nevar reģistrēties
open: Jebkurš var reģistrēties
+ warning_hint: Mēs iesakām izmantot "Nepieciešams reģistrēšanās apstiprinājums", izņemot, ja esi pārliecināts, ka Tava satura pārraudzības komanda var laicīgi apstrādāt mēstules un ļaunprātīgas reģistrācijas.
security:
authorized_fetch: Pieprasīt autentifikāciju no federētajiem serveriem
authorized_fetch_hint: Pieprasot autentifikāciju no federētajiem serveriem, tiek nodrošināta stingrāka gan lietotāja līmeņa, gan servera līmeņa bloku izpilde. Tomēr tas ir saistīts ar izpildes sodu, samazina tavu atbilžu sasniedzamību un var radīt saderības problēmas ar dažiem federētajiem pakalpojumiem. Turklāt tas netraucēs īpašiem dalībniekiem ienest tavas publiskās ziņas un kontus.
@@ -889,6 +891,8 @@ lv:
review_requested: Pieprasīta pārskatīšana
reviewed: Pārskatīts
title: Stāvoklis
+ unreviewed: Nepārskatīts
+ usable: Izmantojams
name: Nosaukums
newest: Jaunākie
oldest: Vecākie
@@ -897,7 +901,7 @@ lv:
search: Meklēt
title: Tēmturi
updated_msg: Tēmtura iestatījumi ir veiksmīgi atjaunināti
- title: Administrēšana
+ title: Pārvaldība
trends:
allow: Atļaut
approved: Apstiprināts
@@ -1001,9 +1005,9 @@ lv:
sensitive: lai atzīmētu viņu kontu kā sensitīvu
silence: lai ierobežotu viņu kontu
suspend: lai apturētu viņu kontu
- body: "%{target} pārsūdzēja %{action_taken_by} moderēšanas lēmumu no %{date}, kas bija %{type}. Viņi rakstīja:"
- next_steps: Varat apstiprināt apelāciju, lai atsauktu regulēšanas lēmumu, vai ignorēt to.
- subject: "%{username} pārsūdz moderēšanas lēmumu par %{instance}"
+ body: "%{target} iebilst %{action_taken_by} satura pārraudzības lēmumam no %{date}, kas bija %{type}. Viņi rakstīja:"
+ next_steps: Vari apstiprināt iebildumu, lai atsauktu satura pārraudzības lēmumu, vai neņemt to vērā.
+ subject: "%{username} iebilst satura pārraudzības lēmumam par %{instance}"
new_critical_software_updates:
body: Ir izlaistas jaunas Mastodon svarīgās versijas, iespējams, vēlēsies to atjaunināt pēc iespējas ātrāk!
subject: "%{instance} ir pieejami svarīgi Mastodon atjauninājumi!"
@@ -1456,7 +1460,7 @@ lv:
other_data: Nekādi citi dati netiks automātiski pārvietoti
redirect: Tava pašreizējā konta profils tiks atjaunināts ar novirzīšanas paziņojumu un tiks izslēgts no meklēšanas
moderation:
- title: Moderācija
+ title: Satura pārraudzība
move_handler:
carry_blocks_over_text: Šis lietotājs pārcēlās no %{acct}, kuru tu biji bloķējis.
carry_mutes_over_text: Šis lietotājs pārcēlās no %{acct}, kuru tu biji apklusinājis.
@@ -1498,6 +1502,7 @@ lv:
update:
subject: "%{name} laboja ierakstu"
notifications:
+ administration_emails: Pārvaldītāju e-pasta paziņojumi
email_events_hint: 'Atlasi notikumus, par kuriem vēlies saņemt paziņojumus:'
number:
human:
@@ -1546,7 +1551,7 @@ lv:
reach: Sasniedzamība
reach_hint_html: Kontrolē, vai vēlies, lai tevi atklātu un sekotu jauni cilvēki. Vai vēlies, lai tavas ziņas tiktu parādītas ekrānā Izpēte? Vai vēlies, lai citi cilvēki tevi redzētu savos ieteikumos? Vai vēlies automātiski pieņemt visus jaunos sekotājus vai arī tev ir pilnīga kontrole pār katru?
search: Meklēt
- search_hint_html: Kontrolē, kā vēlies tikt atrasts. Vai vēlies, lai cilvēki tevi atrod pēc tā, ko esi publiski publicējis? Vai vēlies, lai cilvēki ārpus Mastodon atrastu tavu profilu, meklējot tīmeklī? Lūdzu, ņem vērā, ka nevar garantēt publiskas informācijas pilnīgu izslēgšanu no visām meklētājprogrammām.
+ search_hint_html: Nosaki, kā vēlies tikt atrasts! Vai vēlies, lai cilvēki Tevi atrod pēc tā, par ko esi veicis visiem redzamus ierakstus? Vai vēlies, lai cilvēki ārpus Mastodon atrastu Tavu profilu, meklējot tīmeklī? Lūdzu, ņem vērā, ka nevar nodrošināt visiem redzamas informācijas pilnīgu izslēgšanu no visām meklētājiem!
title: Privātums un sasniedzamība
privacy_policy:
title: Privātuma Politika
@@ -1583,8 +1588,8 @@ lv:
rss:
content_warning: 'Satura brīdinājums:'
descriptions:
- account: Publiskas ziņas no @%{acct}
- tag: 'Publiskas ziņas ar atzīmi #%{hashtag}'
+ account: Visiem redzami ieraksti no @%{acct}
+ tag: 'Visiem redzami ieraksti ar tēmturi #%{hashtag}'
scheduled_statuses:
over_daily_limit: Tu esi pārsniedzis šodien ieplānoto %{limit} ziņu ierobežojumu
over_total_limit: Tu esi pārsniedzis ieplānoto %{limit} ziņu ierobežojumu
@@ -1658,7 +1663,7 @@ lv:
relationships: Sekojamie un sekotāji
severed_relationships: Pārtrauktās attiecības
statuses_cleanup: Automātiska ziņu dzēšana
- strikes: Moderācijas aizrādījumi
+ strikes: Satura pārraudzības aizrādījumi
two_factor_authentication: Divpakāpju autentifikācija
webauthn_authentication: Drošības atslēgas
severed_relationships:
@@ -1687,7 +1692,7 @@ lv:
disallowed_hashtags:
one: 'saturēja neatļautu tēmturi: %{tags}'
other: 'saturēja neatļautus tēmturus: %{tags}'
- zero: 'neatļauti tēmturi: %{tags}'
+ zero: 'saturēja neatļautus tēmturus: %{tags}'
edited_at_html: Labots %{date}
errors:
in_reply_not_found: Šķiet, ka ziņa, uz kuru tu mēģini atbildēt, nepastāv.
@@ -1705,7 +1710,7 @@ lv:
public: Publisks
public_long: Visi var redzēt
unlisted: Nerindota
- unlisted_long: Redzama visiem, bet nav iekļauta publiskajās ziņu lentās
+ unlisted_long: Redzams visiem, bet nav uzskaitīts visiem pieejamās laika joslās
statuses_cleanup:
enabled: Automātiski dzēst vecās ziņas
enabled_hint: Automātiski izdzēš tavas ziņas, tiklīdz tās sasniedz noteiktu vecuma slieksni, ja vien tās neatbilst kādam no tālāk norādītajiem izņēmumiem
@@ -1838,7 +1843,8 @@ lv:
explanation: Šeit ir daži padomi, kā sākt darbu
feature_action: Uzzināt vairāk
feature_creativity: Mastodon nodrošina skaņas, video un attēlu ierakstus, pieejamības aprakstus, aptaujas, satura brīdinājumus, animētus profila attēlus, pielāgotas emocijzīmes, sīktēlu apgriešanas vadīklas un vēl, lai palīdzētu Tev sevi izpaust tiešsaistē. Vai Tu izplati savu mākslu, mūziku vai aplādes, Mastodon ir šeit ar Tevi.
- feature_moderation_title: Moderēšana, kādai tai būtu jābūt
+ feature_moderation: Mastodon nodod lēmumu pieņemšanu atpakaļ Tavās rokās. Katrs serveris izveido savus noteikumus un nosacījumus, kas tiek nodrošināti vietēji, ne kā lieliem uzņēmumiem piederošos sabiedriskajos medijiem, padarot katru serveri par vispielāgojamāko un visatsaucīgāko dažādu cilvēku kopu vajadzībām. Pievienojies serverim, kura noteikumiem Tu piekrīti, vai izvieto savu!
+ feature_moderation_title: Satura pārraudzība, kādai tai būtu jābūt
follow_action: Sekot
follow_step: Sekošana aizraujošiem cilvēkiem ir viss, par ko ir Mastodon.
follow_title: Pielāgo savu mājas barotni
@@ -1849,7 +1855,7 @@ lv:
one: "%{people} cilvēks pēdējās 2 dienās"
other: "%{people} cilvēki pēdējās 2 dienās"
zero: "%{people} cilvēku pēdējās divās dienās"
- hashtags_subtitle: Izpēti, kas pēdējās divās dienāš ir piesasitījis cilvēku uzmanību
+ hashtags_subtitle: Izpēti, kas pēdējās divās dienās ir piesasitījis cilvēku uzmanību
hashtags_title: Izplatīti tēmturi
hashtags_view_more: Skatīt vairāk izplatītu tēmturu
post_action: Rakstīt
diff --git a/config/locales/nn.yml b/config/locales/nn.yml
index e6edc2c4b2e18d..9ec4f29f42682e 100644
--- a/config/locales/nn.yml
+++ b/config/locales/nn.yml
@@ -1166,8 +1166,11 @@ nn:
use_security_key: Bruk sikkerhetsnøkkel
author_attribution:
example_title: Eksempeltekst
+ hint_html: Skriv du nyhende eller blogginnlegg utanfor Mastodon? Her kan du kontrollera korleis du blir kreditert når artiklane dine blir delte på Mastodon.
+ instructions: 'Sjå til at denne koden er i HTML-koden i artikkelen din:'
more_from_html: Meir frå %{name}
s_blog: Bloggen til %{name}
+ then_instructions: Så legg du til domenenamnet for publikasjonen i feltet under.
title: Forfattarkreditering
challenge:
confirm: Hald fram
@@ -1369,6 +1372,37 @@ nn:
blocking_html:
one: Du skal til å byta ut blokkeringslista di med opp til %{count} brukarkonto frå %{filename}.
other: Du skal til å byta ut blokkeringslista di med opp til %{count} brukarkontoar frå %{filename}.
+ bookmarks_html:
+ one: Du skal til å byta ut bokmerka dine med opp til %{count} innlegg frå %{filename}.
+ other: Du skal til å byta ut bokmerka dine med opp til %{count} innlegg frå %{filename}.
+ domain_blocking_html:
+ one: Du skal til å byta ut domeneblokkeringslista di med opp til %{count} domene frå %{filename}.
+ other: Du skal til å byta ut domeneblokkeringslista di med opp til %{count} domene frå %{filename}.
+ following_html:
+ one: Du skal til å fylgja opp til %{count} brukarkonto frå %{filename} og slutta å fylgja alle andre.
+ other: Du skal til å fylgja opp til %{count} brukarkontoar frå %{filename} og slutta å fylgja alle andre.
+ muting_html:
+ one: Du skal til å byta ut lista di over dempa brukarkontoar med opp til %{count} brukarkonto frå %{filename}.
+ other: Du skal til å byta ut lista di over dempa brukarkontoar med opp til %{count} brukarkontoar frå %{filename}.
+ preambles:
+ blocking_html:
+ one: Du skal til å blokkera opp til %{count} brukarkonto frå %{filename}.
+ other: Du skal til å blokkera opp til %{count} brukarkontoar frå %{filename}.
+ bookmarks_html:
+ one: Du er i ferd med å leggja til opp til %{count} innlegg frå %{filename} til bokmerka dine.
+ other: Du er i ferd med å leggja til opp til %{count} innlegg frå %{filename} til bokmerka dine.
+ domain_blocking_html:
+ one: Du skal til å blokkera opp til %{count} domene frå %{filename}.
+ other: Du skal til å blokkera opp til %{count} domene frå %{filename}.
+ following_html:
+ one: Du er i ferd med å fylgja opp til %{count} brukarkonto frå %{filename}.
+ other: Du er i ferd med å fylgja opp til %{count} brukarkontoar frå %{filename}.
+ lists_html:
+ one: Du er i ferd med å leggja til opptil %{count} konto frå %{filename} til i listene dine. Nye lister vil blir oppretta om ingen lister finst frå før.
+ other: Du er i ferd med å leggja til opptil %{count} kontoar frå %{filename} til i listene dine. Nye lister vil blir oppretta om ingen lister finst frå før.
+ muting_html:
+ one: Du er i ferd med å dempa opp til %{count} brukarkonto frå %{filename}.
+ other: Du er i ferd med å dempa opp til %{count} brukarkontoar frå %{filename}.
preface: Du kan henta inn data som du har eksportert frå ein annan tenar, som t.d. ei liste over folka du fylgjer eller blokkerer.
recent_imports: Siste importar
states:
diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml
index cfb5578f5dba4e..f8a5776835b4cb 100644
--- a/config/locales/simple_form.eo.yml
+++ b/config/locales/simple_form.eo.yml
@@ -3,6 +3,7 @@ eo:
simple_form:
hints:
account:
+ attribution_domains_as_text: Unu por linio. Protektas kontraŭ falsaj atribuoj.
discoverable: Viaj publikaj afiŝoj kaj profilo povas esti prezentitaj aŭ rekomenditaj en diversaj lokoj de Mastodon kaj via profilo povas esti proponita al aliaj uzantoj.
display_name: Via plena nomo aŭ via kromnomo.
fields: Via retpaĝo, pronomoj, aĝo, ĉio, kion vi volas.
@@ -39,12 +40,14 @@ eo:
text: Oni povas apelaci strikin nur unufoje
defaults:
autofollow: Homoj, kiuj registriĝos per la invito aŭtomate sekvos vin
+ avatar: WEBP, PNG, GIF aŭ JPG. Maksimume %{size}. Malgrandiĝos al %{dimensions}px
bot: Tiu konto ĉefe faras aŭtomatajn agojn, kaj povas esti ne kontrolata
context: Unu ol pluraj kuntekstoj kie la filtrilo devus agi
current_password: Pro sekuraj kialoj, bonvolu enigi la pasvorton de la nuna konto
current_username: Por konfirmi, bonvolu enigi la uzantnomon de la nuna konto
digest: Sendita nur post longa tempo de neaktiveco, kaj nur se vi ricevis personan mesaĝon en via foresto
email: Vi ricevos konfirman retpoŝton
+ header: WEBP, PNG, GIF aŭ JPG. Maksimume %{size}. Malgrandiĝos al %{dimensions}px
inbox_url: Kopiu la URL de la ĉefpaĝo de la ripetilo, kiun vi volas uzi
irreversible: La filtritaj mesaĝoj malaperos por eterne, eĉ se la filtrilo poste estas forigita
locale: La lingvo de la fasado, retpoŝtaĵoj, kaj sciigoj
@@ -75,12 +78,15 @@ eo:
warn: Kaŝi la enhavon filtritan malantaŭ averto mencianta la nomon de la filtro
form_admin_settings:
activity_api_enabled: Nombroj de loke publikigitaj afiŝoj, aktivaj uzantoj kaj novaj registradoj en semajnaj siteloj
+ app_icon: WEBP, PNG, GIF aŭ JPG. Anstataŭigas la defaŭltan aplikaĵan bildsimbolon sur porteblaj aparatoj kun propra bildsimbolo.
backups_retention_period: Uzantoj havas la kapablon generi arkivojn de siaj afiŝoj por elŝuti poste. Kiam estas agordita al pozitiva valoro, ĉi tiuj arkivoj estos aŭtomate forigitaj de via stokado post la specifita nombro da tagoj.
bootstrap_timeline_accounts: Ĉi tiuj kontoj pinglitas al la supro de sekvorekomendoj de novaj uzantoj.
closed_registrations_message: Montrita kiam registroj fermitas
+ content_cache_retention_period: Ĉiuj afiŝoj de aliaj serviloj (inkluzive de diskonigoj kaj respondoj) estos forigitaj post la specifita nombro da tagoj, sen konsidero al iu ajn loka uzantinterago kun tiuj afiŝoj. Ĉi tio inkluzivas afiŝojn, kie loka uzanto markis ĝin kiel legosignojn aŭ ŝatatajn. Privataj mencioj inter uzantoj de malsamaj nodoj ankaŭ estos perditaj kaj neeble restaŭreblaj. Uzo de ĉi tiu agordo estas celita por specialcelaj okazoj kaj rompas multajn uzantajn atendojn kiam efektivigita por ĝenerala uzo.
custom_css: Vi povas meti propajn stilojn en la retversio de Mastodon.
favicon: WEBP, PNG, GIF aŭ JPG. Anstataŭigas la defaŭltan Mastodon-favikono kun propra bildsimbolo.
mascot: Anstatauigi la ilustraĵon en la altnivela retinterfaco.
+ media_cache_retention_period: Amaskomunikilaj dosieroj de afiŝoj faritaj de foraj uzantoj estas konservitaj en kaŝmemoro en via servilo. Kiam agordita al pozitiva valoro, amaskomunikilaro estos forigita post la specifita nombro da tagoj. Se la amaskomunikilaro-datumoj estas petitaj post kiam ĝi estas forigita, ĝi estos re-elŝutita, se la fonta enhavo ankoraŭ disponeblas. Pro limigoj pri kiom ofte ligaj antaŭrigardaj kartoj enketas retejojn de ekstera liveranto, oni rekomendas agordi ĉi tiun valoron al almenaŭ 14 tagoj, aŭ ligaj antaŭrigardaj kartoj ne estos ĝisdatigitaj laŭpostule antaŭ tiu tempo.
peers_api_enabled: Listo de domajnaj nomoj kiujn ĉi tiu servilo renkontis en la fediverso. Neniuj datumoj estas inkluditaj ĉi tie pri ĉu vi federacias kun donita servilo, nur ke via servilo scias pri ĝi. Ĉi tio estas uzata de servoj kiuj kolektas statistikojn pri federacio en ĝenerala signifo.
profile_directory: La profilujo listigas ĉiujn uzantojn kiu volonte malkovrebli.
require_invite_text: Kiam registroj bezonas permanan aprobon, igi la "Kial vi volas aliĝi?" tekstoenigon deviga anstau nedeviga
@@ -138,6 +144,7 @@ eo:
url: Kien eventoj sendotas
labels:
account:
+ attribution_domains_as_text: Retejoj permesitaj krediti vin
discoverable: Elstarigi profilon kaj afiŝojn en eltrovantaj algoritmoj
fields:
name: Etikedo
diff --git a/config/locales/simple_form.es-MX.yml b/config/locales/simple_form.es-MX.yml
index 9d7809ef3ab3ea..2b5d22aee83210 100644
--- a/config/locales/simple_form.es-MX.yml
+++ b/config/locales/simple_form.es-MX.yml
@@ -3,7 +3,7 @@ es-MX:
simple_form:
hints:
account:
- attribution_domains_as_text: One per line. Protects from false attributions.
+ attribution_domains_as_text: Uno por línea. Protege contra atribuciones falsas.
discoverable: Tu perfil y las publicaciones públicas pueden ser destacadas o recomendadas en varias áreas de Mastodon y tu perfil puede ser sugerido a otros usuarios.
display_name: Tu nombre completo o tu nick.
fields: Tu página de inicio, pronombres, edad, todo lo que quieras.
diff --git a/config/locales/simple_form.et.yml b/config/locales/simple_form.et.yml
index 4a9245682d4f05..a2ebf63b11c716 100644
--- a/config/locales/simple_form.et.yml
+++ b/config/locales/simple_form.et.yml
@@ -3,6 +3,7 @@ et:
simple_form:
hints:
account:
+ attribution_domains_as_text: Üks rea peal. See kaitseb pahatahtlike viidete eest.
discoverable: Su profiili ja avalikke postitusi võidakse Mastodoni erinevates piirkondades esile tõsta või soovitada ning su profiili soovitada teistele kasutajatele.
display_name: Su täisnimi või naljanimi.
fields: Su koduleht, sugu, vanus. Mistahes, mida soovid.
@@ -143,6 +144,7 @@ et:
url: Kuhu sündmused saadetakse
labels:
account:
+ attribution_domains_as_text: Sinule viidata lubatud veebilehed
discoverable: Tõsta postitused ja profiil avastamise algoritmides esile
fields:
name: Nimetus
diff --git a/config/locales/simple_form.fa.yml b/config/locales/simple_form.fa.yml
index 6121467768445f..f51a4ce8bfe5f9 100644
--- a/config/locales/simple_form.fa.yml
+++ b/config/locales/simple_form.fa.yml
@@ -3,6 +3,7 @@ fa:
simple_form:
hints:
account:
+ attribution_domains_as_text: یکی در هر خط. محافظت از اعتباردهیهای اشتباه.
discoverable: ممکن است نمایه و فرستههای عمومیتان در جاهای مختلف ماستودون نمایانده و توصیه شود و نمایهتان به دیگر کاربران پیشنهاد شود.
display_name: نام کامل یا باحالتان.
fields: صفحهٔ خانگی، تلفّظ، سن و هرچیزی که دوست دارید.
@@ -90,6 +91,7 @@ fa:
site_short_description: شرحی کوتاه برای کمک به شناسایی یکتای کارسازتان. چهکسی میگرداندش و برای چه کسیست؟
site_terms: از سیاست محرمانگی خوتان استفاده کرده یا برای استفاده از سیاست پیشگزیده خالی بگذارید. میتواند در قالب مارکدون باشد.
site_title: چگونه مردم ممکن است به کارساز شما علاوه بر نام دامنه آن مراجعه کنند.
+ theme: زمینهای که بینندگان خارج شده و کاربران جدید میبینند.
form_challenge:
current_password: شما در حال ورود به یک منطقهٔ حفاظتشده هستید
imports:
@@ -122,6 +124,7 @@ fa:
url: جایی که رویدادها فرستاده میشوند
labels:
account:
+ attribution_domains_as_text: پابگاههای وبی که اجازهٔ اعتبار دهی به شما را دارند
discoverable: معرّفی نمایه و فرستهها در الگوریتمهای کشف
fields:
name: برچسب
@@ -227,6 +230,7 @@ fa:
bootstrap_timeline_accounts: پیشنهاد همیشگی این حسابها به کاربران جدید
closed_registrations_message: پیام سفارشی هنگام در دسترس نبودن ثبتنامها
custom_css: سبک CSS سفارشی
+ favicon: نمادک
mascot: نشان سفارشی (قدیمی)
media_cache_retention_period: دورهٔ نگهداری انبارهٔ رسانه
peers_api_enabled: انتشار سیاههٔ کارسازهای کشف شده در API
diff --git a/config/locales/simple_form.ga.yml b/config/locales/simple_form.ga.yml
index 7c125b165a0cd4..f8257a9da9dd10 100644
--- a/config/locales/simple_form.ga.yml
+++ b/config/locales/simple_form.ga.yml
@@ -3,6 +3,7 @@ ga:
simple_form:
hints:
account:
+ attribution_domains_as_text: Ceann in aghaidh an líne. Cosnaíonn sé ó sannadh bréagach.
discoverable: Seans go mbeidh do phostálacha poiblí agus do phróifíl le feiceáil nó molta i réimsí éagsúla de Mastodon agus is féidir do phróifíl a mholadh d’úsáideoirí eile.
display_name: D'ainm iomlán nó d'ainm spraoi.
fields: Do leathanach baile, forainmneacha, aois, rud ar bith is mian leat.
@@ -143,6 +144,7 @@ ga:
url: An áit a seolfar imeachtaí chuig
labels:
account:
+ attribution_domains_as_text: Tá cead ag suíomhanna Gréasáin creidmheas a thabhairt duit
discoverable: Próifíl gné agus postálacha in halgartaim fionnachtana
fields:
name: Lipéad
diff --git a/config/locales/simple_form.gd.yml b/config/locales/simple_form.gd.yml
index 9b6c156de79c94..af1f06a3167eb2 100644
--- a/config/locales/simple_form.gd.yml
+++ b/config/locales/simple_form.gd.yml
@@ -3,6 +3,7 @@ gd:
simple_form:
hints:
account:
+ attribution_domains_as_text: Loidhne fa leth do gach fear. Dìonaidh seo o iomraidhean meallta.
discoverable: Dh’fhaoidte gun dèid na postaichean poblach ’s a’ phròifil agad a bhrosnachadh no a mholadh ann an caochladh roinnean de Mhastodon agus gun dèid a’ phròifil agad a mholadh do chàch.
display_name: D’ ainm slàn no spòrsail.
fields: An duilleag-dhachaigh agad, roimhearan, aois, rud sam bith a thogras tu.
@@ -143,6 +144,7 @@ gd:
url: Far an dèid na tachartasan a chur
labels:
account:
+ attribution_domains_as_text: Na làraichean-lìn a dh’fhaodas iomradh a thoirt ort
discoverable: Brosnaich a’ phròifil is postaichean agad sna h-algairimean rùrachaidh
fields:
name: Leubail
diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml
index 545fd4a8e91fd0..230965fe87f8cc 100644
--- a/config/locales/simple_form.hu.yml
+++ b/config/locales/simple_form.hu.yml
@@ -3,6 +3,7 @@ hu:
simple_form:
hints:
account:
+ attribution_domains_as_text: Megvéd a hamis forrásmegjelölésektől.
discoverable: A nyilvános bejegyzéseid és a profilod kiemelhető vagy ajánlható a Mastodon különböző területein, a profilod más felhasználóknak is javasolható.
display_name: Teljes neved vagy vicces neved.
fields: Weboldalad, megszólításaid, korod, bármi, amit szeretnél.
@@ -143,6 +144,7 @@ hu:
url: Ahová az eseményket küldjük
labels:
account:
+ attribution_domains_as_text: Weboldalak, melyek szerzőként tüntethetnek fel
discoverable: Profil és bejegyzések szerepeltetése a felfedezési algoritmusokban
fields:
name: Címke
diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml
index c90484e45fc266..db0dd9b11a6e23 100644
--- a/config/locales/simple_form.ja.yml
+++ b/config/locales/simple_form.ja.yml
@@ -3,6 +3,7 @@ ja:
simple_form:
hints:
account:
+ attribution_domains_as_text: 1行につき1つずつ入力してください。この設定は関わりのないwebサイトに対して虚偽の帰属表示が行われることを防止する役割があります。
discoverable: プロフィールと公開投稿をMastodonのおすすめやハイライトとしてほかのユーザーに表示することを許可します。
display_name: フルネーム、ハンドルネームなど
fields: ホームページ、代名詞、年齢など何でも構いません。
@@ -143,6 +144,7 @@ ja:
url: イベントの送信先
labels:
account:
+ attribution_domains_as_text: あなたの著者表示を許可するwebサイト
discoverable: アカウントを見つけやすくする
fields:
name: ラベル
diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml
index fee07fa5e0ff66..c40814d61b1593 100644
--- a/config/locales/simple_form.ko.yml
+++ b/config/locales/simple_form.ko.yml
@@ -3,6 +3,7 @@ ko:
simple_form:
hints:
account:
+ attribution_domains_as_text: 한 줄에 하나씩. 가짜 기여로부터 보호합니다.
discoverable: 내 공개 게시물과 프로필이 마스토돈의 다양한 추천 기능에 나타날 수 있고 프로필이 다른 사용자에게 제안될 수 있습니다
display_name: 진짜 이름 또는 재미난 이름.
fields: 홈페이지, 호칭, 나이, 뭐든지 적고 싶은 것들.
@@ -143,6 +144,7 @@ ko:
url: 이벤트가 어디로 전송될 지
labels:
account:
+ attribution_domains_as_text: 나를 기여자로 올릴 수 있도록 허용된 웹사이트들
discoverable: 발견하기 알고리즘에 프로필과 게시물을 추천하기
fields:
name: 라벨
diff --git a/config/locales/simple_form.lv.yml b/config/locales/simple_form.lv.yml
index 4303ba9b41458a..974008b5ebc5e9 100644
--- a/config/locales/simple_form.lv.yml
+++ b/config/locales/simple_form.lv.yml
@@ -3,6 +3,7 @@ lv:
simple_form:
hints:
account:
+ attribution_domains_as_text: Viens katrā līnijā. Aizsargā no nepatiesa attiecinājuma.
discoverable: Tavas publiskās ziņas un profils var tikt piedāvāti vai ieteikti dažādās Mastodon vietās, un tavs profils var tikt ieteikts citiem lietotājiem.
display_name: Tavs pilnais vārds vai tavs joku vārds.
fields: Tava mājas lapa, vietniekvārdi, vecums, viss, ko vēlies.
@@ -18,7 +19,7 @@ lv:
text: Vari izmantot ziņu sintaksi, piemēram, URL, atsauces un pieminējumus
title: Neobligāts. Saņēmējam nav redzams
admin_account_action:
- include_statuses: Lietotājs redzēs, kuras ziņas izraisījušas moderācijas darbību vai brīdinājumu
+ include_statuses: Lietotājs redzēs, kuras ziņas izraisījušas satura pārraudzības darbību vai brīdinājumu
send_email_notification: Lietotājs saņems paskaidrojumu par to, kas notika ar viņa kontu
text_html: Neobligāts. Tu vari lietot ziņu sintaksi. Lai ietaupītu laiku, tu vari pievienot brīdinājuma sākotnējos iestatījumus
type_html: Izvēlies, ko darīt ar %{acct}
@@ -143,6 +144,7 @@ lv:
url: Kur notikumi tiks nosūtīti
labels:
account:
+ attribution_domains_as_text: Tīmekļvietnes, kurām ir tiesības uzskaitīt Tevi
discoverable: Funkcijas profils un ziņas atklāšanas algoritmos
fields:
name: Marķējums
diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml
index afd3624785a5aa..7280ba6d801626 100644
--- a/config/locales/simple_form.nl.yml
+++ b/config/locales/simple_form.nl.yml
@@ -213,7 +213,7 @@ nl:
setting_default_privacy: Zichtbaarheid van nieuwe berichten
setting_default_sensitive: Media altijd als gevoelig markeren
setting_delete_modal: Vraag voor het verwijderen van een bericht een bevestiging
- setting_disable_hover_cards: Profielvoorbeelden door eroverheen te zweven uitschakelen
+ setting_disable_hover_cards: Hover-kaarten met profielvoorbeelden uitschakelen
setting_disable_swiping: Swipebewegingen uitschakelen
setting_display_media: Mediaweergave
setting_display_media_default: Standaard
diff --git a/config/locales/simple_form.nn.yml b/config/locales/simple_form.nn.yml
index f963d3bc72d196..46b7af4bdb08d8 100644
--- a/config/locales/simple_form.nn.yml
+++ b/config/locales/simple_form.nn.yml
@@ -3,6 +3,7 @@ nn:
simple_form:
hints:
account:
+ attribution_domains_as_text: Ein per line. Vernar mot falske krediteringar.
discoverable: Dei offentlege innlegga dine og profilen din kan dukka opp i tilrådingar på ulike stader på Mastodon, og profilen din kan bli føreslegen for andre folk.
display_name: Ditt fulle namn eller ditt tøysenamn.
fields: Heimesida di, pronomen, alder, eller kva du måtte ynskje.
@@ -143,6 +144,7 @@ nn:
url: Kvar hendingar skal sendast
labels:
account:
+ attribution_domains_as_text: Nettstader som har lov å kreditera deg
discoverable: Ta med profilen og innlegga i oppdagingsalgoritmar
fields:
name: Merkelapp
diff --git a/config/locales/simple_form.sq.yml b/config/locales/simple_form.sq.yml
index 3d865572824706..1ca9037e63464c 100644
--- a/config/locales/simple_form.sq.yml
+++ b/config/locales/simple_form.sq.yml
@@ -3,6 +3,7 @@ sq:
simple_form:
hints:
account:
+ attribution_domains_as_text: Një për rresht. Kjo mbron nga atribuime të rreme.
discoverable: Postimet dhe profili juaj publik mund të shfaqen, ose rekomandohen në zona të ndryshme të Mastodon-it dhe profili juaj mund të sugjerohet përdoruesve të tjerë.
display_name: Emri juaj i plotë, ose emri juaj lojcak.
fields: Faqja juaj hyrëse, përemra, moshë, ç’të keni qejf.
@@ -143,6 +144,7 @@ sq:
url: Ku do të dërgohen aktet
labels:
account:
+ attribution_domains_as_text: Sajte të lejuar t’ju japin hakë
discoverable: Profilin dhe postimet bëji objekt të algoritmeve të zbulimit
fields:
name: Etiketë
diff --git a/config/locales/simple_form.sv.yml b/config/locales/simple_form.sv.yml
index 297e96a2bdf125..36d1def01244d4 100644
--- a/config/locales/simple_form.sv.yml
+++ b/config/locales/simple_form.sv.yml
@@ -3,6 +3,7 @@ sv:
simple_form:
hints:
account:
+ attribution_domains_as_text: En per rad. Skyddar mot falska attributioner.
discoverable: Dina offentliga inlägg och din profil kan komma att presenteras eller rekommenderas inom olika områden av Mastodon och din profil kan komma att föreslås till andra användare.
display_name: Ditt fullständiga namn eller ditt roliga namn.
fields: Din hemsida, ditt pronomen, din ålder, vadhelst du vill.
@@ -143,6 +144,7 @@ sv:
url: Dit händelser kommer skickas
labels:
account:
+ attribution_domains_as_text: Webbplatser som får kreditera dig
discoverable: Presentera profil och inlägg med upptäcktsalgoritmer
fields:
name: Etikett
diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml
index 8bd782c1405d32..f8f4d3f11947cf 100644
--- a/config/locales/simple_form.th.yml
+++ b/config/locales/simple_form.th.yml
@@ -3,6 +3,7 @@ th:
simple_form:
hints:
account:
+ attribution_domains_as_text: หนึ่งรายการต่อบรรทัด ปกป้องจากการระบุแหล่งที่มาที่ผิด
discoverable: อาจแสดงหรือแนะนำโพสต์และโปรไฟล์สาธารณะของคุณในพื้นที่ต่าง ๆ ของ Mastodon และอาจเสนอแนะโปรไฟล์ของคุณให้กับผู้ใช้อื่น ๆ
display_name: ชื่อเต็มของคุณหรือชื่อแบบสนุกสนานของคุณ
fields: หน้าแรก, สรรพนาม, อายุของคุณ สิ่งใดก็ตามที่คุณต้องการ
@@ -143,6 +144,7 @@ th:
url: ที่ซึ่งจะส่งเหตุการณ์ไปยัง
labels:
account:
+ attribution_domains_as_text: เว็บไซต์ที่ได้รับอนุญาตให้ให้เครดิตคุณ
discoverable: แสดงโปรไฟล์และโพสต์ในอัลกอริทึมการค้นพบ
fields:
name: ป้ายชื่อ
diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml
index e2a1562b53499e..74dcd3f9087589 100644
--- a/config/locales/simple_form.uk.yml
+++ b/config/locales/simple_form.uk.yml
@@ -3,6 +3,7 @@ uk:
simple_form:
hints:
account:
+ attribution_domains_as_text: Один на рядок. Захищає від фальшивих атрибутів.
discoverable: Ваші дописи та профіль можуть бути рекомендовані в різних частинах Mastodon і ваш профіль може бути запропонований іншим користувачам.
display_name: Ваше повне ім'я або ваш псевдонім.
fields: Ваша домашня сторінка, займенники, вік, все, що вам заманеться.
@@ -143,6 +144,7 @@ uk:
url: Куди надсилатимуться події
labels:
account:
+ attribution_domains_as_text: Сайти дозволяють вам вказувати ваше авторство
discoverable: Функції профілю та дописів у алгоритмах виявлення
fields:
name: Мітка
diff --git a/config/locales/sk.yml b/config/locales/sk.yml
index 399ecc061af0db..6ef78a8f211407 100644
--- a/config/locales/sk.yml
+++ b/config/locales/sk.yml
@@ -49,6 +49,7 @@ sk:
title: Zmeň email pre %{username}
change_role:
changed_msg: Postavenie úspešne zmenené!
+ edit_roles: Spravuj role užívateľov
label: Zmeň pozíciu
no_role: Žiadna pozícia
title: Zmeň pozíciu pre %{username}
@@ -61,6 +62,7 @@ sk:
demote: Degraduj
destroyed_msg: "%{username} je teraz zaradený do fronty na okamžité vymazanie"
disable: Zablokuj
+ disable_sign_in_token_auth: Vypni overovanie e-mailovým tokenom
disable_two_factor_authentication: Vypni dvoj-faktorové overovanie
disabled: Blokovaný
display_name: Ukáž meno
@@ -69,6 +71,7 @@ sk:
email: Email
email_status: Stav emailu
enable: Povoľ
+ enable_sign_in_token_auth: Povoľ overovania e-mailovým tokenom
enabled: Povolený
enabled_msg: Úspešne rozmrazené konto %{username}
followers: Sledujúci
@@ -822,6 +825,7 @@ sk:
prefix_invited_by_user: "@%{name} ťa pozýva na tento Mastodon server!"
prefix_sign_up: Zaregistruj sa na Mastodone už dnes!
suffix: S účtom budeš môcť nasledovať ľudí, posielať príspevky, a vymieňať si správy s užívateľmi z hocijakého Mastodon servera a viac!
+ didnt_get_confirmation: Neobdržal/a si odkaz na potvrdenie?
dont_have_your_security_key: Nemáš svoj bezpečnostný kľúč?
forgot_password: Zabudnuté heslo?
invalid_reset_password_token: Token na obnovu hesla vypršal. Prosím vypítaj si nový.
@@ -832,6 +836,7 @@ sk:
migrate_account_html: Ak si želáš presmerovať tento účet na nejaký iný, môžeš si to nastaviť tu.
or_log_in_with: Alebo prihlás s
progress:
+ confirm: Potvrď email
details: Tvoje údaje
rules: Súhlas s pravidlami
register: Zaregistruj sa
diff --git a/config/locales/sq.yml b/config/locales/sq.yml
index c113308eea9b70..980eff1aa58eac 100644
--- a/config/locales/sq.yml
+++ b/config/locales/sq.yml
@@ -1159,8 +1159,11 @@ sq:
use_security_key: Përdor kyç sigurie
author_attribution:
example_title: Tekst shembull
+ hint_html: Shkruani lajme, apo artikuj blogu jashtë Mastodon-it? Kontrolloni se si ju jepet hakë, kur ndahen me të tjerët në Mastodon.
+ instructions: 'Sigurohuni që ky kod të jetë në HTML-në e artikullit tuaj:'
more_from_html: Më tepër nga %{name}
s_blog: Blogu i %{name}
+ then_instructions: Mandej, shtoni te fusha më poshtë emrin e përkatësisë së botimit.
title: Atribuim autorësh
challenge:
confirm: Vazhdo
diff --git a/config/locales/sv.yml b/config/locales/sv.yml
index b79820310c76ac..f3ce6443f6d65b 100644
--- a/config/locales/sv.yml
+++ b/config/locales/sv.yml
@@ -542,7 +542,7 @@ sv:
total_followed_by_them: Följs av dem
total_followed_by_us: Följs av oss
total_reported: Rapporter om dem
- total_storage: Media-bilagor
+ total_storage: Mediebilagor
totals_time_period_hint_html: Totalsummorna som visas nedan inkluderar data för all tid.
unknown_instance: Det finns för närvarande inga uppgifter om denna domän på denna server.
invites:
@@ -893,6 +893,7 @@ sv:
message_html: "Din objektlagring är felkonfigurerad. Sekretessen för dina användare är i riskzonen."
tags:
moderation:
+ not_trendable: Kan inte trenda
not_usable: Inte användbar
pending_review: Väntar på granskning
review_requested: Granskning begärd
@@ -904,6 +905,7 @@ sv:
name: Namn
newest: Nyaste
oldest: Äldsta
+ open: Visa offentligt
reset: Återställ
review: Granskningsstatus
search: Sök
@@ -1164,8 +1166,11 @@ sv:
use_security_key: Använd säkerhetsnyckel
author_attribution:
example_title: Exempeltext
+ hint_html: Skriver du nyheter eller bloggartiklar utanför Mastodon? Kontrollera hur du får krediteras när de delas på Mastodon.
+ instructions: 'Se till att den här koden finns i din artikels HTML:'
more_from_html: Mer från %{name}
s_blog: "%{name}s blogg"
+ then_instructions: Lägg sedan till domännamnet för publikationen i fältet nedan.
title: Författarattribution
challenge:
confirm: Fortsätt
@@ -1364,9 +1369,43 @@ sv:
overwrite: Skriv över
overwrite_long: Ersätt de nuvarande uppgifterna med de nya
overwrite_preambles:
+ blocking_html:
+ one: Du är på väg att ersätta din blockeringslista med upp till %{count} konto från %{filename}.
+ other: Du är på väg att ersätta din blockeringslista med upp till %{count} konton från %{filename}.
bookmarks_html:
one: Du är på väg att ersätta din blockeringslista med upp till %{count} inlägg från %{filename}.
other: Du är på väg att ersätta din blockeringslista med upp till %{count} inlägg från %{filename}.
+ domain_blocking_html:
+ one: Du är på väg att ersätta din blockeringslista med upp till %{count} domän från %{filename}.
+ other: Du är på väg att ersätta din blockeringslista med upp till %{count} domäner från %{filename}.
+ following_html:
+ one: Du är på väg till följ upp till %{count} konto från %{filename} och sluta följa någon annan.
+ other: Du är på väg till följ upp till %{count} konton från %{filename} och sluta följa någon annan.
+ lists_html:
+ one: Du är på väg att ersätta dina listor med innehållet i %{filename}. Upp till %{count} konto kommer att läggas till i nya listor.
+ other: Du är på väg att ersätta dina listor med innehållet i %{filename}. Upp till %{count} konton kommer att läggas till i nya listor.
+ muting_html:
+ one: Du är på väg att ersätta din lista med tystade konton med upp till %{count} konto från %{filename}.
+ other: Du är på väg att ersätta din lista med tystade konton med upp till %{count} konton från %{filename}.
+ preambles:
+ blocking_html:
+ one: Du är på väg att blockera med upp till %{count} konto från %{filename}.
+ other: Du är på väg att blockera med upp till %{count} konton från %{filename}.
+ bookmarks_html:
+ one: Du håller på att lägga upp till %{count} inlägg från %{filename} till dina bokmärken.
+ other: Du håller på att lägga upp till %{count} inlägg från %{filename} till dina bokmärken.
+ domain_blocking_html:
+ one: Du är på väg att blockera upp till %{count} domän från %{filename}.
+ other: Du är på väg att blockera upp till %{count} domäner från %{filename}.
+ following_html:
+ one: Du är på väg att följa upp till %{count} konto från %{filename}.
+ other: Du är på väg att följa upp till %{count} konton från %{filename}.
+ lists_html:
+ one: Du håller på att lägga upp till %{count} konto från %{filename} till dina listor. Nya listor kommer att skapas om det inte finns någon lista att lägga till.
+ other: Du håller på att lägga upp till %{count} konton från %{filename} till dina listor. Nya listor kommer att skapas om det inte finns någon lista att lägga till.
+ muting_html:
+ one: Du är på väg att tysta upp till %{count} konto från %{filename}.
+ other: Du är på väg att tysta upp till %{count} konton från %{filename}.
preface: Du kan importera data som du exporterat från en annan instans, till exempel en lista över personer du följer eller blockerar.
recent_imports: Nyligen importerade
states:
diff --git a/config/locales/th.yml b/config/locales/th.yml
index 2c21687a460bd0..cdc56d98ce0f17 100644
--- a/config/locales/th.yml
+++ b/config/locales/th.yml
@@ -1148,8 +1148,11 @@ th:
use_security_key: ใช้กุญแจความปลอดภัย
author_attribution:
example_title: ข้อความตัวอย่าง
+ hint_html: คุณเขียนข่าวหรือลงบทความที่อื่นๆที่นอกจาก Mastodon บ้างไหม? ถ้าหากคุณเขียนอยู่ล่ะก็ คุณสามารถบอกได้นะว่าอยากให้คนอื่นให้เครดิตคุณยังไงเวลาแชร์ไปที่ Mastodon นะ
+ instructions: 'โปรดตรวจสอบให้แน่ใจว่าโค้ดนี้ได้มีอยู่ในบทความของคุณแล้ว HTML:'
more_from_html: เพิ่มเติมจาก %{name}
s_blog: บล็อกของ %{name}
+ then_instructions: จากนั้น ให้เพิ่มใส่ชื่อเว็บไซต์ของสิ่งพิมพ์ลงไปในช่องว่างข้างล่าง
title: การระบุแหล่งที่มาผู้สร้าง
challenge:
confirm: ดำเนินการต่อ
@@ -1340,6 +1343,32 @@ th:
merge_long: เก็บระเบียนที่มีอยู่และเพิ่มระเบียนใหม่
overwrite: เขียนทับ
overwrite_long: แทนที่ระเบียนปัจจุบันด้วยระเบียนใหม่
+ overwrite_preambles:
+ blocking_html:
+ other: คุณกำลังจะ แทนที่รายการการปิดกั้นของคุณ ด้วยมากถึง %{count} บัญชี จาก %{filename}
+ bookmarks_html:
+ other: คุณกำลังจะ แทนที่ที่คั่นหน้าของคุณ ด้วยมากถึง %{count} โพสต์ จาก %{filename}
+ domain_blocking_html:
+ other: คุณกำลังจะ แทนที่รายการการปิดกั้นโดเมนของคุณ ด้วยมากถึง %{count} โดเมน จาก %{filename}
+ following_html:
+ other: คุณกำลังจะ ติดตาม มากถึง %{count} บัญชี จาก %{filename} และ หยุดการติดตามคนอื่นใด
+ lists_html:
+ other: คุณกำลังจะ แทนที่รายการของคุณ ด้วยเนื้อหาของ %{filename} จะเพิ่มมากถึง %{count} บัญชี ไปยังรายการใหม่
+ muting_html:
+ other: คุณกำลังจะ แทนที่รายการบัญชีที่ซ่อนอยู่ของคุณ ด้วยมากถึง %{count} บัญชี จาก %{filename}
+ preambles:
+ blocking_html:
+ other: คุณกำลังจะ ปิดกั้น มากถึง %{count} บัญชี จาก %{filename}
+ bookmarks_html:
+ other: คุณกำลังจะเพิ่มมากถึง %{count} โพสต์ จาก %{filename} ไปยัง ที่คั่นหน้า ของคุณ
+ domain_blocking_html:
+ other: คุณกำลังจะ ปิดกั้น มากถึง %{count} โดเมน จาก %{filename}
+ following_html:
+ other: คุณกำลังจะ ติดตาม มากถึง %{count} บัญชี จาก %{filename}
+ lists_html:
+ other: คุณกำลังจะเพิ่มมากถึง %{count} บัญชี จาก %{filename} ไปยัง รายการ ของคุณ จะสร้างรายการใหม่หากไม่มีรายการที่จะเพิ่มไปยัง
+ muting_html:
+ other: คุณกำลังจะ ซ่อน มากถึง %{count} บัญชี จาก %{filename}
preface: คุณสามารถนำเข้าข้อมูลที่คุณได้ส่งออกจากเซิร์ฟเวอร์อื่น เช่น รายการผู้คนที่คุณกำลังติดตามหรือกำลังปิดกั้น
recent_imports: การนำเข้าล่าสุด
states:
diff --git a/config/locales/uk.yml b/config/locales/uk.yml
index ab50ac4deea134..e6a765267fde81 100644
--- a/config/locales/uk.yml
+++ b/config/locales/uk.yml
@@ -1202,6 +1202,8 @@ uk:
use_security_key: Використовувати ключ безпеки
author_attribution:
example_title: Зразок тексту
+ hint_html: Ви пишете новини чи статті в блозі за межами Mastodon? Контролюйте, як вони підписуються, коли ними діляться на Mastodon.
+ instructions: 'Переконайтесь, що цей код розміщено в HTML-коді вашої статті:'
more_from_html: Більше від %{name}
s_blog: Блог %{name}
then_instructions: Потім додайте доменне ім'я публікації у поле нижче.
diff --git a/config/locales/vi.yml b/config/locales/vi.yml
index 00431ba4250662..172ce55a3d4a44 100644
--- a/config/locales/vi.yml
+++ b/config/locales/vi.yml
@@ -832,8 +832,8 @@ vi:
sensitive: "%{name} đã đánh dấu %{target} là nhạy cảm"
silence: "%{name} đã ẩn %{target}"
suspend: "%{name} đã vô hiệu hóa %{target}"
- appeal_approved: Đã khiếu nại
- appeal_pending: Đang kháng cáo
+ appeal_approved: Khiếu nại được chấp nhận
+ appeal_pending: Đang khiếu nại
appeal_rejected: Khiếu nại bị từ chối
system_checks:
database_schema_check:
@@ -1148,7 +1148,7 @@ vi:
use_security_key: Dùng khóa bảo mật
author_attribution:
example_title: Văn bản mẫu
- hint_html: Bạn là nhà báo hoặc blogger bên ngoài Mastodon? Kiểm soát cách bạn được ghi nhận khi chúng được chia sẻ trên Mastodon.
+ hint_html: Bạn là nhà báo hoặc blogger bên ngoài Mastodon? Kiểm soát cách bài viết của bạn được ghi nhận khi chia sẻ trên Mastodon.
instructions: 'Đặt mã này trong HTML bài viết:'
more_from_html: Viết bởi %{name}
s_blog: "%{name}'s Blog"
diff --git a/config/routes.rb b/config/routes.rb
index 83170fba0f3180..0f4df757da155a 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -64,6 +64,13 @@ def redirect_with_vary(path)
tokens: 'oauth/tokens'
end
+ namespace :oauth do
+ # As this is borrowed from OpenID, the specification says we must also support
+ # POST for the userinfo endpoint:
+ # https://openid.net/specs/openid-connect-core-1_0.html#UserInfo
+ match 'userinfo', via: [:get, :post], to: 'userinfo#show', defaults: { format: 'json' }
+ end
+
scope path: '.well-known' do
scope module: :well_known do
get 'oauth-authorization-server', to: 'oauth_metadata#show', as: :oauth_metadata, defaults: { format: 'json' }
diff --git a/cypress/e2e/visibilty_check_spec.cy.ts b/cypress/e2e/visibilty_check_spec.cy.ts
index 90beb0d608a5be..6cb4c750a7b3a9 100644
--- a/cypress/e2e/visibilty_check_spec.cy.ts
+++ b/cypress/e2e/visibilty_check_spec.cy.ts
@@ -146,6 +146,6 @@ describe('custom theme change test', () => {
).contains('にゃーん');
cy.get(
'[aria-posinset="1"] > [tabindex="-1"] > .status__wrapper > .status',
- ).contains('Show more');
+ ).contains('続きを表示');
});
});
diff --git a/db/migrate/20241022214312_add_untrusted_favourites_count_and_untrusted_reblogs_count_to_status_stat.rb b/db/migrate/20241022214312_add_untrusted_favourites_count_and_untrusted_reblogs_count_to_status_stat.rb
new file mode 100644
index 00000000000000..e34caff24020f8
--- /dev/null
+++ b/db/migrate/20241022214312_add_untrusted_favourites_count_and_untrusted_reblogs_count_to_status_stat.rb
@@ -0,0 +1,8 @@
+# frozen_string_literal: true
+
+class AddUntrustedFavouritesCountAndUntrustedReblogsCountToStatusStat < ActiveRecord::Migration[7.1]
+ def change
+ add_column :status_stats, :untrusted_favourites_count, :bigint, null: true
+ add_column :status_stats, :untrusted_reblogs_count, :bigint, null: true
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index d97d4c75569da8..beb24d7f7d81c5 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema[7.1].define(version: 2024_10_14_010506) do
+ActiveRecord::Schema[7.1].define(version: 2024_10_22_214312) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -1008,6 +1008,8 @@
t.bigint "favourites_count", default: 0, null: false
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
+ t.bigint "untrusted_favourites_count"
+ t.bigint "untrusted_reblogs_count"
t.index ["status_id"], name: "index_status_stats_on_status_id", unique: true
end
diff --git a/lib/mastodon/cli/accounts.rb b/lib/mastodon/cli/accounts.rb
index e76735298f20f5..23c907543f2884 100644
--- a/lib/mastodon/cli/accounts.rb
+++ b/lib/mastodon/cli/accounts.rb
@@ -1,6 +1,5 @@
# frozen_string_literal: true
-require 'set'
require_relative 'base'
module Mastodon::CLI
diff --git a/package.json b/package.json
index c6f2eb04ab65aa..23a744667d6ddd 100644
--- a/package.json
+++ b/package.json
@@ -48,7 +48,7 @@
"@formatjs/intl-pluralrules": "^5.2.2",
"@gamestdio/websocket": "^0.3.2",
"@github/webauthn-json": "^2.1.1",
- "@rails/ujs": "7.1.401",
+ "@rails/ujs": "7.1.402",
"@reduxjs/toolkit": "^2.0.1",
"@svgr/webpack": "^5.5.0",
"arrow-key-navigation": "^1.2.0",
diff --git a/spec/controllers/admin/confirmations_controller_spec.rb b/spec/controllers/admin/confirmations_controller_spec.rb
index 95591607867c8b..59ea0121cacc9b 100644
--- a/spec/controllers/admin/confirmations_controller_spec.rb
+++ b/spec/controllers/admin/confirmations_controller_spec.rb
@@ -11,7 +11,7 @@
describe 'POST #create' do
it 'confirms the user' do
- user = Fabricate(:user, confirmed_at: false)
+ user = Fabricate(:user, confirmed_at: nil)
post :create, params: { account_id: user.account.id }
expect(response).to redirect_to(admin_accounts_path)
diff --git a/spec/controllers/auth/registrations_controller_spec.rb b/spec/controllers/auth/registrations_controller_spec.rb
index 6118edf4e34331..d1542128e7a718 100644
--- a/spec/controllers/auth/registrations_controller_spec.rb
+++ b/spec/controllers/auth/registrations_controller_spec.rb
@@ -233,17 +233,7 @@
Setting.registrations_mode = 'open'
Fabricate(:email_domain_block, allow_with_approval: true, domain: 'mail.example.com')
allow(User).to receive(:skip_mx_check?).and_return(false)
-
- resolver = instance_double(Resolv::DNS, :timeouts= => nil)
-
- allow(resolver).to receive(:getresources)
- .with('example.com', Resolv::DNS::Resource::IN::MX)
- .and_return([instance_double(Resolv::DNS::Resource::MX, exchange: 'mail.example.com')])
- allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::A).and_return([])
- allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::AAAA).and_return([])
- allow(resolver).to receive(:getresources).with('mail.example.com', Resolv::DNS::Resource::IN::A).and_return([instance_double(Resolv::DNS::Resource::IN::A, address: '2.3.4.5')])
- allow(resolver).to receive(:getresources).with('mail.example.com', Resolv::DNS::Resource::IN::AAAA).and_return([instance_double(Resolv::DNS::Resource::IN::AAAA, address: 'fd00::2')])
- allow(Resolv::DNS).to receive(:open).and_yield(resolver)
+ configure_mx(domain: 'example.com', exchange: 'mail.example.com')
end
it 'creates unapproved user and redirects to setup' do
diff --git a/spec/fabricators/preview_card_trend_fabricator.rb b/spec/fabricators/preview_card_trend_fabricator.rb
new file mode 100644
index 00000000000000..14c126cc89f206
--- /dev/null
+++ b/spec/fabricators/preview_card_trend_fabricator.rb
@@ -0,0 +1,5 @@
+# frozen_string_literal: true
+
+Fabricator(:preview_card_trend) do
+ preview_card
+end
diff --git a/spec/fabricators/status_trend_fabricator.rb b/spec/fabricators/status_trend_fabricator.rb
new file mode 100644
index 00000000000000..c775892b1ff61c
--- /dev/null
+++ b/spec/fabricators/status_trend_fabricator.rb
@@ -0,0 +1,6 @@
+# frozen_string_literal: true
+
+Fabricator(:status_trend) do
+ status
+ account
+end
diff --git a/spec/fabricators/tombstone_fabricator.rb b/spec/fabricators/tombstone_fabricator.rb
new file mode 100644
index 00000000000000..b4cab086af0fe1
--- /dev/null
+++ b/spec/fabricators/tombstone_fabricator.rb
@@ -0,0 +1,6 @@
+# frozen_string_literal: true
+
+Fabricator(:tombstone) do
+ account
+ uri { sequence(:uri) { |i| "https://host.example/value/#{i}" } }
+end
diff --git a/spec/lib/activitypub/activity/create_spec.rb b/spec/lib/activitypub/activity/create_spec.rb
index bdc8fd9d519080..9482a309592d4c 100644
--- a/spec/lib/activitypub/activity/create_spec.rb
+++ b/spec/lib/activitypub/activity/create_spec.rb
@@ -928,6 +928,32 @@ def activity_for_object(json)
expect(poll.votes.first).to be_nil
end
end
+
+ context 'with counts' do
+ let(:object_json) do
+ {
+ id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar'].join,
+ type: 'Note',
+ content: 'Lorem ipsum',
+ likes: {
+ id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar', '/likes'].join,
+ type: 'Collection',
+ totalItems: 50,
+ },
+ shares: {
+ id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar', '/shares'].join,
+ type: 'Collection',
+ totalItems: 100,
+ },
+ }
+ end
+
+ it 'uses the counts from the created object' do
+ status = sender.statuses.first
+ expect(status.untrusted_favourites_count).to eq 50
+ expect(status.untrusted_reblogs_count).to eq 100
+ end
+ end
end
context 'when object URI uses bearcaps' do
diff --git a/spec/lib/activitypub/activity/update_spec.rb b/spec/lib/activitypub/activity/update_spec.rb
index 87e96d2d1b12cb..b829f3a5ad6d06 100644
--- a/spec/lib/activitypub/activity/update_spec.rb
+++ b/spec/lib/activitypub/activity/update_spec.rb
@@ -115,5 +115,69 @@
expect(status.edited_at).to be_nil
end
end
+
+ context 'with a Note object' do
+ let(:updated) { nil }
+ let(:favourites) { 50 }
+ let(:reblogs) { 100 }
+
+ let!(:status) { Fabricate(:status, uri: 'https://example.com/statuses/poll', account: sender) }
+ let(:json) do
+ {
+ '@context': 'https://www.w3.org/ns/activitystreams',
+ id: 'foo',
+ type: 'Update',
+ actor: sender.uri,
+ object: {
+ type: 'Note',
+ id: status.uri,
+ content: 'Foo',
+ updated: updated,
+ likes: {
+ id: "#{status.uri}/likes",
+ type: 'Collection',
+ totalItems: favourites,
+ },
+ shares: {
+ id: "#{status.uri}/shares",
+ type: 'Collection',
+ totalItems: reblogs,
+ },
+ },
+ }.with_indifferent_access
+ end
+
+ shared_examples 'updates counts' do
+ it 'updates the reblog count' do
+ expect(status.untrusted_reblogs_count).to eq reblogs
+ end
+
+ it 'updates the favourites count' do
+ expect(status.untrusted_favourites_count).to eq favourites
+ end
+ end
+
+ context 'with an implicit update' do
+ before do
+ status.update!(uri: ActivityPub::TagManager.instance.uri_for(status))
+ subject.perform
+ end
+
+ it_behaves_like 'updates counts'
+ end
+
+ context 'with an explicit update' do
+ let(:favourites) { 150 }
+ let(:reblogs) { 200 }
+ let(:updated) { Time.now.utc.iso8601 }
+
+ before do
+ status.update!(uri: ActivityPub::TagManager.instance.uri_for(status))
+ subject.perform
+ end
+
+ it_behaves_like 'updates counts'
+ end
+ end
end
end
diff --git a/spec/lib/annual_report/commonly_interacted_with_accounts_spec.rb b/spec/lib/annual_report/commonly_interacted_with_accounts_spec.rb
index e99d3cb4a78495..0e31827912b58d 100644
--- a/spec/lib/annual_report/commonly_interacted_with_accounts_spec.rb
+++ b/spec/lib/annual_report/commonly_interacted_with_accounts_spec.rb
@@ -32,7 +32,7 @@
expect(subject.generate)
.to include(
commonly_interacted_with_accounts: contain_exactly(
- include(account_id: other_account.id, count: 2)
+ include(account_id: other_account.id.to_s, count: 2)
)
)
end
diff --git a/spec/lib/annual_report/most_reblogged_accounts_spec.rb b/spec/lib/annual_report/most_reblogged_accounts_spec.rb
index 0280ba19928755..2f04934e47799e 100644
--- a/spec/lib/annual_report/most_reblogged_accounts_spec.rb
+++ b/spec/lib/annual_report/most_reblogged_accounts_spec.rb
@@ -32,7 +32,7 @@
expect(subject.generate)
.to include(
most_reblogged_accounts: contain_exactly(
- include(account_id: other_account.id, count: 2)
+ include(account_id: other_account.id.to_s, count: 2)
)
)
end
diff --git a/spec/lib/annual_report/top_statuses_spec.rb b/spec/lib/annual_report/top_statuses_spec.rb
index b956b039735786..af29df1f651a0b 100644
--- a/spec/lib/annual_report/top_statuses_spec.rb
+++ b/spec/lib/annual_report/top_statuses_spec.rb
@@ -39,9 +39,9 @@
expect(subject.generate)
.to include(
top_statuses: include(
- by_reblogs: reblogged_status.id,
- by_favourites: favourited_status.id,
- by_replies: replied_status.id
+ by_reblogs: reblogged_status.id.to_s,
+ by_favourites: favourited_status.id.to_s,
+ by_replies: replied_status.id.to_s
)
)
end
diff --git a/spec/models/preview_card_trend_spec.rb b/spec/models/preview_card_trend_spec.rb
new file mode 100644
index 00000000000000..6edd24b693826b
--- /dev/null
+++ b/spec/models/preview_card_trend_spec.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe PreviewCardTrend do
+ describe 'Associations' do
+ it { is_expected.to belong_to(:preview_card).required }
+ end
+
+ describe '.locales' do
+ before do
+ Fabricate :preview_card_trend, language: 'en'
+ Fabricate :preview_card_trend, language: 'en'
+ Fabricate :preview_card_trend, language: 'es'
+ end
+
+ it 'returns unique set of languages' do
+ expect(described_class.locales)
+ .to eq(['en', 'es'])
+ end
+ end
+end
diff --git a/spec/models/status_pin_spec.rb b/spec/models/status_pin_spec.rb
index da375009aedd5b..1501d43cc4e430 100644
--- a/spec/models/status_pin_spec.rb
+++ b/spec/models/status_pin_spec.rb
@@ -3,70 +3,100 @@
require 'rails_helper'
RSpec.describe StatusPin do
- describe 'validations' do
- it 'allows pins of own statuses' do
- account = Fabricate(:account)
- status = Fabricate(:status, account: account)
+ describe 'Validations' do
+ subject { Fabricate.build :status_pin }
- expect(described_class.new(account: account, status: status).save).to be true
- end
+ context 'with an account pinning statuses' do
+ subject { Fabricate.build :status_pin, account: account }
- it 'does not allow pins of statuses by someone else' do
- account = Fabricate(:account)
- status = Fabricate(:status)
+ let(:account) { Fabricate(:account) }
- expect(described_class.new(account: account, status: status).save).to be false
- end
+ context 'with a self-owned status' do
+ let(:status) { Fabricate(:status, account: account) }
- it 'does not allow pins of reblogs' do
- account = Fabricate(:account)
- status = Fabricate(:status, account: account)
- reblog = Fabricate(:status, reblog: status)
+ it { is_expected.to allow_value(status).for(:status) }
+ end
- expect(described_class.new(account: account, status: reblog).save).to be false
- end
+ context 'with a status from someone else' do
+ let(:status) { Fabricate(:status) }
- it 'does allow pins of direct statuses' do
- account = Fabricate(:account)
- status = Fabricate(:status, account: account, visibility: :private)
+ it { is_expected.to_not allow_value(status).for(:status).against(:base) }
+ end
- expect(described_class.new(account: account, status: status).save).to be true
- end
+ context 'with a reblog status' do
+ let(:status) { Fabricate(:status, reblog: Fabricate(:status, account: account)) }
- it 'does not allow pins of direct statuses' do
- account = Fabricate(:account)
- status = Fabricate(:status, account: account, visibility: :direct)
+ it { is_expected.to_not allow_value(status).for(:status).against(:base) }
+ end
+
+ context 'with a private status' do
+ let(:status) { Fabricate(:status, account: account, visibility: :private) }
+
+ it { is_expected.to allow_value(status).for(:status).against(:base) }
+ end
+
+ context 'with a direct status' do
+ let(:status) { Fabricate(:status, account: account, visibility: :direct) }
- expect(described_class.new(account: account, status: status).save).to be false
+ it { is_expected.to_not allow_value(status).for(:status).against(:base) }
+ end
end
- context 'with a pin limit' do
+ context 'with a validator pin limit' do
before { stub_const('StatusPinValidator::PIN_LIMIT', 2) }
- it 'does not allow pins above the max' do
- account = Fabricate(:account)
+ context 'with a local account at the limit' do
+ let(:account) { Fabricate :account }
- Fabricate.times(StatusPinValidator::PIN_LIMIT, :status_pin, account: account)
+ before { Fabricate.times(StatusPinValidator::PIN_LIMIT, :status_pin, account: account) }
- pin = described_class.new(account: account, status: Fabricate(:status, account: account))
- expect(pin.save)
- .to be(false)
+ it { is_expected.to_not allow_value(account).for(:account).against(:base).with_message(I18n.t('statuses.pin_errors.limit')) }
+ end
+
+ context 'with a remote account at the limit' do
+ let(:account) { Fabricate :account, domain: 'remote.test' }
+
+ before { Fabricate.times(StatusPinValidator::PIN_LIMIT, :status_pin, account: account) }
- expect(pin.errors[:base])
- .to contain_exactly(I18n.t('statuses.pin_errors.limit'))
+ it { is_expected.to allow_value(account).for(:account) }
end
+ end
+ end
+
+ describe 'Callbacks' do
+ describe 'Invalidating status via policy' do
+ subject { Fabricate :status_pin, status: Fabricate(:status, account: account), account: account }
- it 'allows pins above the max for remote accounts' do
- account = Fabricate(:account, domain: 'remote.test', username: 'bob', url: 'https://remote.test/')
+ context 'with a local account that owns the status and has a policy' do
+ let(:account) { Fabricate :account, domain: nil }
- Fabricate.times(StatusPinValidator::PIN_LIMIT, :status_pin, account: account)
+ before do
+ Fabricate :account_statuses_cleanup_policy, account: account
+ account.statuses_cleanup_policy.record_last_inspected(subject.status.id + 1_024)
+ end
+
+ it 'calls the invalidator on destroy' do
+ expect { subject.destroy }
+ .to change(account.statuses_cleanup_policy, :last_inspected)
+ end
+ end
+
+ context 'with a local account that owns the status and does not have a policy' do
+ let(:account) { Fabricate :account, domain: nil }
+
+ it 'does not call the invalidator on destroy' do
+ expect { subject.destroy }
+ .to_not change(account, :updated_at)
+ end
+ end
- pin = described_class.new(account: account, status: Fabricate(:status, account: account))
- expect(pin.save)
- .to be(true)
+ context 'with a remote account' do
+ let(:account) { Fabricate :account, domain: 'host.example' }
- expect(pin.errors[:base])
- .to be_empty
+ it 'does not call the invalidator on destroy' do
+ expect { subject.destroy }
+ .to_not change(account, :updated_at)
+ end
end
end
end
diff --git a/spec/models/status_spec.rb b/spec/models/status_spec.rb
index 90f5968438644f..36b13df815c94c 100644
--- a/spec/models/status_spec.rb
+++ b/spec/models/status_spec.rb
@@ -164,6 +164,31 @@
end
end
+ describe '#untrusted_reblogs_count' do
+ before do
+ alice.update(domain: 'example.com')
+ subject.status_stat.tap do |status_stat|
+ status_stat.untrusted_reblogs_count = 0
+ status_stat.save
+ end
+ subject.save
+ end
+
+ it 'is incremented by the number of reblogs' do
+ Fabricate(:status, account: bob, reblog: subject)
+ Fabricate(:status, account: alice, reblog: subject)
+
+ expect(subject.untrusted_reblogs_count).to eq 2
+ end
+
+ it 'is decremented when reblog is removed' do
+ reblog = Fabricate(:status, account: bob, reblog: subject)
+ expect(subject.untrusted_reblogs_count).to eq 1
+ reblog.destroy
+ expect(subject.untrusted_reblogs_count).to eq 0
+ end
+ end
+
describe '#replies_count' do
it 'is the number of replies' do
Fabricate(:status, account: bob, thread: subject)
@@ -194,6 +219,31 @@
end
end
+ describe '#untrusted_favourites_count' do
+ before do
+ alice.update(domain: 'example.com')
+ subject.status_stat.tap do |status_stat|
+ status_stat.untrusted_favourites_count = 0
+ status_stat.save
+ end
+ subject.save
+ end
+
+ it 'is incremented by favorites' do
+ Fabricate(:favourite, account: bob, status: subject)
+ Fabricate(:favourite, account: alice, status: subject)
+
+ expect(subject.untrusted_favourites_count).to eq 2
+ end
+
+ it 'is decremented when favourite is removed' do
+ favourite = Fabricate(:favourite, account: bob, status: subject)
+ expect(subject.untrusted_favourites_count).to eq 1
+ favourite.destroy
+ expect(subject.untrusted_favourites_count).to eq 0
+ end
+ end
+
describe '#proper' do
it 'is itself for original statuses' do
expect(subject.proper).to eq subject
diff --git a/spec/models/status_trend_spec.rb b/spec/models/status_trend_spec.rb
new file mode 100644
index 00000000000000..34522493cda3f5
--- /dev/null
+++ b/spec/models/status_trend_spec.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe StatusTrend do
+ describe 'Associations' do
+ it { is_expected.to belong_to(:account).required }
+ it { is_expected.to belong_to(:status).required }
+ end
+
+ describe '.locales' do
+ before do
+ Fabricate :status_trend, language: 'en'
+ Fabricate :status_trend, language: 'en'
+ Fabricate :status_trend, language: 'es'
+ end
+
+ it 'returns unique set of languages' do
+ expect(described_class.locales)
+ .to eq(['en', 'es'])
+ end
+ end
+end
diff --git a/spec/models/tombstone_spec.rb b/spec/models/tombstone_spec.rb
new file mode 100644
index 00000000000000..ba0603fe3dbb15
--- /dev/null
+++ b/spec/models/tombstone_spec.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe Tombstone do
+ describe 'Associations' do
+ it { is_expected.to belong_to(:account).required }
+ end
+
+ describe 'Validations' do
+ subject { Fabricate.build :tombstone }
+
+ it { is_expected.to validate_presence_of(:uri) }
+ end
+end
diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb
index 1a289f8221615b..2a6c3d4569deed 100644
--- a/spec/rails_helper.rb
+++ b/spec/rails_helper.rb
@@ -115,6 +115,7 @@ def sign_in(resource, _deprecated = nil, scope: nil)
config.include ActiveSupport::Testing::TimeHelpers
config.include Chewy::Rspec::Helpers
config.include Redisable
+ config.include DomainHelpers
config.include ThreadingHelpers
config.include SignedRequestHelpers, type: :request
config.include CommandLineHelpers, type: :cli
diff --git a/spec/requests/api/v1/trends/statuses_spec.rb b/spec/requests/api/v1/trends/statuses_spec.rb
index fe00c9c6458564..414d7651b99a98 100644
--- a/spec/requests/api/v1/trends/statuses_spec.rb
+++ b/spec/requests/api/v1/trends/statuses_spec.rb
@@ -39,6 +39,42 @@ def prepare_trends
end
Trends::Statuses.new(threshold: 1, decay_threshold: -1).refresh
end
+
+ context 'with a comically inflated external interactions count' do
+ def prepare_fake_trends
+ fake_remote_account = Fabricate(:account, domain: 'other.com')
+ fake_status = Fabricate(:status, account: fake_remote_account, text: 'I am a big faker', trendable: true, language: 'en')
+ fake_status.status_stat.tap do |status_stat|
+ status_stat.reblogs_count = 0
+ status_stat.favourites_count = 0
+ status_stat.untrusted_reblogs_count = 1_000_000_000
+ status_stat.untrusted_favourites_count = 1_000_000_000
+ status_stat.save
+ end
+ real_remote_account = Fabricate(:account, domain: 'other.com')
+ real_status = Fabricate(:status, account: real_remote_account, text: 'I make real friends online', trendable: true, language: 'en')
+ real_status.status_stat.tap do |status_stat|
+ status_stat.reblogs_count = 10
+ status_stat.favourites_count = 10
+ status_stat.untrusted_reblogs_count = 10
+ status_stat.untrusted_favourites_count = 10
+ status_stat.save
+ end
+ Trends.statuses.add(fake_status, 100)
+ Trends.statuses.add(real_status, 101)
+ Trends::Statuses.new(threshold: 1, decay_threshold: 1).refresh
+ end
+
+ it 'ignores the feeble attempts at deception' do
+ prepare_fake_trends
+ stub_const('Api::BaseController::DEFAULT_STATUSES_LIMIT', 10)
+ get '/api/v1/trends/statuses'
+
+ expect(response).to have_http_status(200)
+ expect(response.parsed_body.length).to eq(1)
+ expect(response.parsed_body[0]['content']).to eq('I make real friends online')
+ end
+ end
end
end
end
diff --git a/spec/requests/api/v2/media_spec.rb b/spec/requests/api/v2/media_spec.rb
index 70e0679f57442c..807e427d3f747f 100644
--- a/spec/requests/api/v2/media_spec.rb
+++ b/spec/requests/api/v2/media_spec.rb
@@ -29,6 +29,22 @@
end
end
+ context 'when media description is too long' do
+ let(:params) do
+ {
+ file: fixture_file_upload('attachment-jpg.123456_abcd', 'image/jpeg'),
+ description: 'aa' * MediaAttachment::MAX_DESCRIPTION_LENGTH,
+ }
+ end
+
+ it 'returns http error' do
+ post '/api/v2/media', headers: headers, params: params
+
+ expect(response).to have_http_status(422)
+ expect(response.body).to include 'Description is too long'
+ end
+ end
+
context 'when large format media attachment has not been processed' do
let(:params) { { file: fixture_file_upload('attachment.webm', 'video/webm') } }
diff --git a/spec/requests/oauth/userinfo_spec.rb b/spec/requests/oauth/userinfo_spec.rb
new file mode 100644
index 00000000000000..7d6226cd412050
--- /dev/null
+++ b/spec/requests/oauth/userinfo_spec.rb
@@ -0,0 +1,51 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Oauth Userinfo Endpoint' do
+ include RoutingHelper
+
+ let(:user) { Fabricate(:user) }
+ let(:account) { user.account }
+ let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
+ let(:scopes) { 'profile' }
+ let(:headers) { { 'Authorization' => "Bearer #{token.token}" } }
+
+ shared_examples 'returns successfully' do
+ it 'returns http success' do
+ subject
+
+ expect(response).to have_http_status(:success)
+ expect(response.content_type).to start_with('application/json')
+ expect(response.parsed_body).to include({
+ iss: root_url,
+ sub: account_url(account),
+ name: account.display_name,
+ preferred_username: account.username,
+ profile: short_account_url(account),
+ picture: full_asset_url(account.avatar_original_url),
+ })
+ end
+ end
+
+ describe 'GET /oauth/userinfo' do
+ subject do
+ get '/oauth/userinfo', headers: headers
+ end
+
+ it_behaves_like 'forbidden for wrong scope', 'read:accounts'
+ it_behaves_like 'returns successfully'
+ end
+
+ # As this is borrowed from OpenID, the specification says we must also support
+ # POST for the userinfo endpoint:
+ # https://openid.net/specs/openid-connect-core-1_0.html#UserInfo
+ describe 'POST /oauth/userinfo' do
+ subject do
+ post '/oauth/userinfo', headers: headers
+ end
+
+ it_behaves_like 'forbidden for wrong scope', 'read:accounts'
+ it_behaves_like 'returns successfully'
+ end
+end
diff --git a/spec/requests/well_known/oauth_metadata_spec.rb b/spec/requests/well_known/oauth_metadata_spec.rb
index 9c86dbedfe7086..01e9146fde63d9 100644
--- a/spec/requests/well_known/oauth_metadata_spec.rb
+++ b/spec/requests/well_known/oauth_metadata_spec.rb
@@ -3,12 +3,6 @@
require 'rails_helper'
RSpec.describe 'The /.well-known/oauth-authorization-server request' do
- let(:protocol) { ENV.fetch('LOCAL_HTTPS', true) ? :https : :http }
-
- before do
- host! Rails.configuration.x.local_domain
- end
-
it 'returns http success with valid JSON response' do
get '/.well-known/oauth-authorization-server'
@@ -22,11 +16,12 @@
grant_types_supported << 'refresh_token' if Doorkeeper.configuration.refresh_token_enabled?
expect(response.parsed_body).to include(
- issuer: root_url(protocol: protocol),
+ issuer: root_url,
service_documentation: 'https://docs.joinmastodon.org/',
- authorization_endpoint: oauth_authorization_url(protocol: protocol),
- token_endpoint: oauth_token_url(protocol: protocol),
- revocation_endpoint: oauth_revoke_url(protocol: protocol),
+ authorization_endpoint: oauth_authorization_url,
+ token_endpoint: oauth_token_url,
+ userinfo_endpoint: oauth_userinfo_url,
+ revocation_endpoint: oauth_revoke_url,
scopes_supported: Doorkeeper.configuration.scopes.map(&:to_s),
response_types_supported: Doorkeeper.configuration.authorization_response_types,
response_modes_supported: Doorkeeper.configuration.authorization_response_flows.flat_map(&:response_mode_matches).uniq,
@@ -34,7 +29,7 @@
grant_types_supported: grant_types_supported,
code_challenge_methods_supported: ['S256'],
# non-standard extension:
- app_registration_endpoint: api_v1_apps_url(protocol: protocol)
+ app_registration_endpoint: api_v1_apps_url
)
end
end
diff --git a/spec/serializers/rest/status_serializer_spec.rb b/spec/serializers/rest/status_serializer_spec.rb
new file mode 100644
index 00000000000000..e96d1fbe67ba52
--- /dev/null
+++ b/spec/serializers/rest/status_serializer_spec.rb
@@ -0,0 +1,55 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe REST::StatusSerializer do
+ subject do
+ serialized_record_json(
+ status,
+ described_class,
+ options: {
+ scope: current_user,
+ scope_name: :current_user,
+ }
+ )
+ end
+
+ let(:current_user) { Fabricate(:user) }
+ let(:alice) { Fabricate(:account, username: 'alice') }
+ let(:bob) { Fabricate(:account, username: 'bob', domain: 'other.com') }
+ let(:status) { Fabricate(:status, account: alice) }
+
+ context 'with a remote status' do
+ let(:status) { Fabricate(:status, account: bob) }
+
+ before do
+ status.status_stat.tap do |status_stat|
+ status_stat.reblogs_count = 10
+ status_stat.favourites_count = 20
+ status_stat.save
+ end
+ end
+
+ context 'with only trusted counts' do
+ it 'shows the trusted counts' do
+ expect(subject['reblogs_count']).to eq(10)
+ expect(subject['favourites_count']).to eq(20)
+ end
+ end
+
+ context 'with untrusted counts' do
+ before do
+ status.status_stat.tap do |status_stat|
+ status_stat.untrusted_reblogs_count = 30
+ status_stat.untrusted_favourites_count = 40
+ status_stat.save
+ end
+ end
+
+ it 'shows the untrusted counts' do
+ expect(subject['reblogs_count']).to eq(30)
+ expect(subject['favourites_count']).to eq(40)
+ end
+ end
+ end
+end
diff --git a/spec/services/app_sign_up_service_spec.rb b/spec/services/app_sign_up_service_spec.rb
index ec7b7516f95372..b78868db49476c 100644
--- a/spec/services/app_sign_up_service_spec.rb
+++ b/spec/services/app_sign_up_service_spec.rb
@@ -53,17 +53,7 @@
Setting.registrations_mode = 'open'
Fabricate(:email_domain_block, allow_with_approval: true, domain: 'smtp.email.com')
allow(User).to receive(:skip_mx_check?).and_return(false)
-
- resolver = instance_double(Resolv::DNS, :timeouts= => nil)
-
- allow(resolver).to receive(:getresources)
- .with('email.com', Resolv::DNS::Resource::IN::MX)
- .and_return([instance_double(Resolv::DNS::Resource::MX, exchange: 'smtp.email.com')])
- allow(resolver).to receive(:getresources).with('email.com', Resolv::DNS::Resource::IN::A).and_return([])
- allow(resolver).to receive(:getresources).with('email.com', Resolv::DNS::Resource::IN::AAAA).and_return([])
- allow(resolver).to receive(:getresources).with('smtp.email.com', Resolv::DNS::Resource::IN::A).and_return([instance_double(Resolv::DNS::Resource::IN::A, address: '2.3.4.5')])
- allow(resolver).to receive(:getresources).with('smtp.email.com', Resolv::DNS::Resource::IN::AAAA).and_return([instance_double(Resolv::DNS::Resource::IN::AAAA, address: 'fd00::2')])
- allow(Resolv::DNS).to receive(:open).and_yield(resolver)
+ configure_mx(domain: 'email.com', exchange: 'smtp.email.com')
end
it 'creates an unapproved user', :aggregate_failures do
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 2a27544407ba26..13683e404e0e8f 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -34,8 +34,8 @@
end
end
-def serialized_record_json(record, serializer, adapter: nil)
- options = { serializer: serializer }
+def serialized_record_json(record, serializer, adapter: nil, options: {})
+ options[:serializer] = serializer
options[:adapter] = adapter if adapter.present?
JSON.parse(
ActiveModelSerializers::SerializableResource.new(
diff --git a/spec/support/command_line_helpers.rb b/spec/support/command_line_helpers.rb
index 6f9d63d9390281..09b2b70ba10261 100644
--- a/spec/support/command_line_helpers.rb
+++ b/spec/support/command_line_helpers.rb
@@ -1,9 +1,9 @@
# frozen_string_literal: true
module CommandLineHelpers
- def output_results(*args)
+ def output_results(*)
output(
- include(*args)
+ include(*)
).to_stdout
end
end
diff --git a/spec/support/domain_helpers.rb b/spec/support/domain_helpers.rb
new file mode 100644
index 00000000000000..9977702099db80
--- /dev/null
+++ b/spec/support/domain_helpers.rb
@@ -0,0 +1,44 @@
+# frozen_string_literal: true
+
+module DomainHelpers
+ def configure_mx(domain:, exchange:, ip_v4_addr: '2.3.4.5', ip_v6_addr: 'fd00::2')
+ resolver = instance_double(Resolv::DNS, :timeouts= => nil)
+
+ allow(resolver).to receive(:getresources)
+ .with(domain, Resolv::DNS::Resource::IN::MX)
+ .and_return([double_mx(exchange)])
+ allow(resolver)
+ .to receive(:getresources)
+ .with(domain, Resolv::DNS::Resource::IN::A)
+ .and_return([])
+ allow(resolver)
+ .to receive(:getresources)
+ .with(domain, Resolv::DNS::Resource::IN::AAAA)
+ .and_return([])
+ allow(resolver)
+ .to receive(:getresources)
+ .with(exchange, Resolv::DNS::Resource::IN::A)
+ .and_return([double_resource_v4(ip_v4_addr)])
+ allow(resolver)
+ .to receive(:getresources)
+ .with(exchange, Resolv::DNS::Resource::IN::AAAA)
+ .and_return([double_resource_v6(ip_v6_addr)])
+ allow(Resolv::DNS)
+ .to receive(:open)
+ .and_yield(resolver)
+ end
+
+ private
+
+ def double_mx(exchange)
+ instance_double(Resolv::DNS::Resource::MX, exchange: exchange)
+ end
+
+ def double_resource_v4(addr)
+ instance_double(Resolv::DNS::Resource::IN::A, address: addr)
+ end
+
+ def double_resource_v6(addr)
+ instance_double(Resolv::DNS::Resource::IN::AAAA, address: addr)
+ end
+end
diff --git a/streaming/Dockerfile b/streaming/Dockerfile
index bed6b637380dac..f94c04e7a2adef 100644
--- a/streaming/Dockerfile
+++ b/streaming/Dockerfile
@@ -9,7 +9,7 @@ ARG BUILDPLATFORM=${BUILDPLATFORM}
# Node version to use in base image, change with [--build-arg NODE_MAJOR_VERSION="20"]
# renovate: datasource=node-version depName=node
-ARG NODE_MAJOR_VERSION="20"
+ARG NODE_MAJOR_VERSION="22"
# Debian image to use for base image, change with [--build-arg DEBIAN_VERSION="bookworm"]
ARG DEBIAN_VERSION="bookworm"
# Node image to use for base image based on combined variables (ex: 20-bookworm-slim)
diff --git a/yarn.lock b/yarn.lock
index 478ebffd2322ce..e97a51d5405e0e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -35,17 +35,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.25.9":
- version: 7.25.9
- resolution: "@babel/code-frame@npm:7.25.9"
- dependencies:
- "@babel/highlight": "npm:^7.25.9"
- picocolors: "npm:^1.0.0"
- checksum: 10c0/88562eba0eeb5960b7004e108790aa00183d90cbbe70ce10dad01c2c48141d2ef54d6dcd0c678cc1e456de770ffeb68e28559f4d222c01a110c79aea8733074b
- languageName: node
- linkType: hard
-
-"@babel/code-frame@npm:^7.26.0":
+"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.0":
version: 7.26.0
resolution: "@babel/code-frame@npm:7.26.0"
dependencies:
@@ -56,37 +46,14 @@ __metadata:
languageName: node
linkType: hard
-"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.25.9":
- version: 7.25.9
- resolution: "@babel/compat-data@npm:7.25.9"
- checksum: 10c0/8d9fc2074311ce61aaf5bccf740a808644d19d4859caf5fa46d8a7186a1ee0b0d8cbbc23f9371f8b397e84a885bdeab58d5f22d6799ddde55973252aac351a27
- languageName: node
- linkType: hard
-
-"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.22.1, @babel/core@npm:^7.24.4, @babel/core@npm:^7.25.0":
- version: 7.25.9
- resolution: "@babel/core@npm:7.25.9"
- dependencies:
- "@ampproject/remapping": "npm:^2.2.0"
- "@babel/code-frame": "npm:^7.25.9"
- "@babel/generator": "npm:^7.25.9"
- "@babel/helper-compilation-targets": "npm:^7.25.9"
- "@babel/helper-module-transforms": "npm:^7.25.9"
- "@babel/helpers": "npm:^7.25.9"
- "@babel/parser": "npm:^7.25.9"
- "@babel/template": "npm:^7.25.9"
- "@babel/traverse": "npm:^7.25.9"
- "@babel/types": "npm:^7.25.9"
- convert-source-map: "npm:^2.0.0"
- debug: "npm:^4.1.0"
- gensync: "npm:^1.0.0-beta.2"
- json5: "npm:^2.2.3"
- semver: "npm:^6.3.1"
- checksum: 10c0/40d3064ebe906f65ed4153a0f4d75c679a19e4d71e425035b7bbe2d292a9167274f1a0d908d4d6c8f484fcddeb10bd91e0c7878fdb3dfad1bb00f6a319ce431d
+"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.25.9, @babel/compat-data@npm:^7.26.0":
+ version: 7.26.0
+ resolution: "@babel/compat-data@npm:7.26.0"
+ checksum: 10c0/6325c9151a3c9b0a3a807e854a26255ef66d989bff331475a935af9bb18f160e0fffe6aed550e4e96b63f91efcd874bfbaab2a1f4a2f8d25645d712a0de590fb
languageName: node
linkType: hard
-"@babel/core@npm:^7.23.9":
+"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.22.1, @babel/core@npm:^7.23.9, @babel/core@npm:^7.24.4, @babel/core@npm:^7.25.0":
version: 7.26.0
resolution: "@babel/core@npm:7.26.0"
dependencies:
@@ -109,19 +76,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/generator@npm:^7.25.9, @babel/generator@npm:^7.7.2":
- version: 7.25.9
- resolution: "@babel/generator@npm:7.25.9"
- dependencies:
- "@babel/types": "npm:^7.25.9"
- "@jridgewell/gen-mapping": "npm:^0.3.5"
- "@jridgewell/trace-mapping": "npm:^0.3.25"
- jsesc: "npm:^3.0.2"
- checksum: 10c0/fca49a1440ac550bb835a73c0e8314849cd493a468a5431ca7f9dbb3d3443e3a1a6dcba2426752e8a97cc2feed4a3b7a0c639e1c45871c4a9dd0c994f08dd25a
- languageName: node
- linkType: hard
-
-"@babel/generator@npm:^7.26.0":
+"@babel/generator@npm:^7.25.9, @babel/generator@npm:^7.26.0, @babel/generator@npm:^7.7.2":
version: 7.26.0
resolution: "@babel/generator@npm:7.26.0"
dependencies:
@@ -241,21 +196,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helper-module-transforms@npm:^7.25.9":
- version: 7.25.9
- resolution: "@babel/helper-module-transforms@npm:7.25.9"
- dependencies:
- "@babel/helper-module-imports": "npm:^7.25.9"
- "@babel/helper-simple-access": "npm:^7.25.9"
- "@babel/helper-validator-identifier": "npm:^7.25.9"
- "@babel/traverse": "npm:^7.25.9"
- peerDependencies:
- "@babel/core": ^7.0.0
- checksum: 10c0/cd005e7585806845d79c5c0ca9e8926f186b430b0a558dad08a3611365eaad3ac587672b0d903530117dec454f48b6bdc3d164b19ea1b71ca1b4eb3be7b452ef
- languageName: node
- linkType: hard
-
-"@babel/helper-module-transforms@npm:^7.26.0":
+"@babel/helper-module-transforms@npm:^7.25.9, @babel/helper-module-transforms@npm:^7.26.0":
version: 7.26.0
resolution: "@babel/helper-module-transforms@npm:7.26.0"
dependencies:
@@ -362,16 +303,6 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helpers@npm:^7.25.9":
- version: 7.25.9
- resolution: "@babel/helpers@npm:7.25.9"
- dependencies:
- "@babel/template": "npm:^7.25.9"
- "@babel/types": "npm:^7.25.9"
- checksum: 10c0/4354fbf050291937d0f127f6f927a0c471b604524e0767516fefb91dc36427f25904dd0d2b2b3bbc66bce1894c680cc37eac9ab46970d70f24bf3e53375612de
- languageName: node
- linkType: hard
-
"@babel/helpers@npm:^7.26.0":
version: 7.26.0
resolution: "@babel/helpers@npm:7.26.0"
@@ -382,30 +313,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/highlight@npm:^7.25.9":
- version: 7.25.9
- resolution: "@babel/highlight@npm:7.25.9"
- dependencies:
- "@babel/helper-validator-identifier": "npm:^7.25.9"
- chalk: "npm:^2.4.2"
- js-tokens: "npm:^4.0.0"
- picocolors: "npm:^1.0.0"
- checksum: 10c0/ae0ed93c151b85a07df42936117fa593ce91563a22dfc8944a90ae7088c9679645c33e00dcd20b081c1979665d65f986241172dae1fc9e5922692fc3ff685a49
- languageName: node
- linkType: hard
-
-"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.25.9":
- version: 7.25.9
- resolution: "@babel/parser@npm:7.25.9"
- dependencies:
- "@babel/types": "npm:^7.25.9"
- bin:
- parser: ./bin/babel-parser.js
- checksum: 10c0/143faff8a72331be5ed94080e0f4645cbeea814fb488cd9210154083735f67cb66fde32f6a4a80efd6c4cdf12c6f8b50995a465846093c7f65c5da8d7829627c
- languageName: node
- linkType: hard
-
-"@babel/parser@npm:^7.23.9, @babel/parser@npm:^7.26.0":
+"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.0":
version: 7.26.1
resolution: "@babel/parser@npm:7.26.1"
dependencies:
@@ -517,25 +425,25 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-syntax-import-assertions@npm:^7.25.9":
- version: 7.25.9
- resolution: "@babel/plugin-syntax-import-assertions@npm:7.25.9"
+"@babel/plugin-syntax-import-assertions@npm:^7.26.0":
+ version: 7.26.0
+ resolution: "@babel/plugin-syntax-import-assertions@npm:7.26.0"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.25.9"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/f5a022b8a7f3585cf1586535224b06ae380983d3c14f7127b82792ef50cd8194047080540c8abec7aa8f8bfe7d774d71a1ee91f4fd3fa0277f7ffe2d3c6c4977
+ checksum: 10c0/525b174e60b210d96c1744c1575fc2ddedcc43a479cba64a5344cf77bd0541754fc58120b5a11ff832ba098437bb05aa80900d1f49bb3d888c5e349a4a3a356e
languageName: node
linkType: hard
-"@babel/plugin-syntax-import-attributes@npm:^7.25.9":
- version: 7.25.9
- resolution: "@babel/plugin-syntax-import-attributes@npm:7.25.9"
+"@babel/plugin-syntax-import-attributes@npm:^7.26.0":
+ version: 7.26.0
+ resolution: "@babel/plugin-syntax-import-attributes@npm:7.26.0"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.25.9"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/bbdf97ba088c3d482492f6c3376422752b1723ce32e3ac11b000faf3c942d68e418c8a911431cb05d5e300d008cc37cd5518e89807a5813c2ac8fdd82d171f8d
+ checksum: 10c0/e594c185b12bfe0bbe7ca78dfeebe870e6d569a12128cac86f3164a075fe0ff70e25ddbd97fd0782906b91f65560c9dc6957716b7b4a68aba2516c9b7455e352
languageName: node
linkType: hard
@@ -743,15 +651,15 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-class-static-block@npm:^7.25.9":
- version: 7.25.9
- resolution: "@babel/plugin-transform-class-static-block@npm:7.25.9"
+"@babel/plugin-transform-class-static-block@npm:^7.26.0":
+ version: 7.26.0
+ resolution: "@babel/plugin-transform-class-static-block@npm:7.26.0"
dependencies:
"@babel/helper-create-class-features-plugin": "npm:^7.25.9"
"@babel/helper-plugin-utils": "npm:^7.25.9"
peerDependencies:
"@babel/core": ^7.12.0
- checksum: 10c0/696a3a8acde79d6fee4f685ee1353bf483c4cd50a38e586a1a044268df72d87f9b1a3b7c473def6cde836aa69931fd5a75560bb9ee3a635ebde8911575ed49ca
+ checksum: 10c0/cdcf5545ae6514ed75fbd73cccfa209c6a5dfdf0c2bb7bb62c0fb4ec334a32281bcf1bc16ace494d9dbe93feb8bdc0bd3cf9d9ccb6316e634a67056fa13b741b
languageName: node
linkType: hard
@@ -1207,6 +1115,18 @@ __metadata:
languageName: node
linkType: hard
+"@babel/plugin-transform-regexp-modifiers@npm:^7.26.0":
+ version: 7.26.0
+ resolution: "@babel/plugin-transform-regexp-modifiers@npm:7.26.0"
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9"
+ "@babel/helper-plugin-utils": "npm:^7.25.9"
+ peerDependencies:
+ "@babel/core": ^7.0.0
+ checksum: 10c0/4abc1db6c964efafc7a927cda814c7275275afa4b530483e0936fd614de23cb5802f7ca43edaa402008a723d4e7eac282b6f5283aa2eeb3b27da6d6c1dd7f8ed
+ languageName: node
+ linkType: hard
+
"@babel/plugin-transform-reserved-words@npm:^7.25.9":
version: 7.25.9
resolution: "@babel/plugin-transform-reserved-words@npm:7.25.9"
@@ -1353,10 +1273,10 @@ __metadata:
linkType: hard
"@babel/preset-env@npm:^7.11.0, @babel/preset-env@npm:^7.12.1, @babel/preset-env@npm:^7.22.4":
- version: 7.25.9
- resolution: "@babel/preset-env@npm:7.25.9"
+ version: 7.26.0
+ resolution: "@babel/preset-env@npm:7.26.0"
dependencies:
- "@babel/compat-data": "npm:^7.25.9"
+ "@babel/compat-data": "npm:^7.26.0"
"@babel/helper-compilation-targets": "npm:^7.25.9"
"@babel/helper-plugin-utils": "npm:^7.25.9"
"@babel/helper-validator-option": "npm:^7.25.9"
@@ -1366,8 +1286,8 @@ __metadata:
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.25.9"
"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.25.9"
"@babel/plugin-proposal-private-property-in-object": "npm:7.21.0-placeholder-for-preset-env.2"
- "@babel/plugin-syntax-import-assertions": "npm:^7.25.9"
- "@babel/plugin-syntax-import-attributes": "npm:^7.25.9"
+ "@babel/plugin-syntax-import-assertions": "npm:^7.26.0"
+ "@babel/plugin-syntax-import-attributes": "npm:^7.26.0"
"@babel/plugin-syntax-unicode-sets-regex": "npm:^7.18.6"
"@babel/plugin-transform-arrow-functions": "npm:^7.25.9"
"@babel/plugin-transform-async-generator-functions": "npm:^7.25.9"
@@ -1375,7 +1295,7 @@ __metadata:
"@babel/plugin-transform-block-scoped-functions": "npm:^7.25.9"
"@babel/plugin-transform-block-scoping": "npm:^7.25.9"
"@babel/plugin-transform-class-properties": "npm:^7.25.9"
- "@babel/plugin-transform-class-static-block": "npm:^7.25.9"
+ "@babel/plugin-transform-class-static-block": "npm:^7.26.0"
"@babel/plugin-transform-classes": "npm:^7.25.9"
"@babel/plugin-transform-computed-properties": "npm:^7.25.9"
"@babel/plugin-transform-destructuring": "npm:^7.25.9"
@@ -1408,6 +1328,7 @@ __metadata:
"@babel/plugin-transform-private-property-in-object": "npm:^7.25.9"
"@babel/plugin-transform-property-literals": "npm:^7.25.9"
"@babel/plugin-transform-regenerator": "npm:^7.25.9"
+ "@babel/plugin-transform-regexp-modifiers": "npm:^7.26.0"
"@babel/plugin-transform-reserved-words": "npm:^7.25.9"
"@babel/plugin-transform-shorthand-properties": "npm:^7.25.9"
"@babel/plugin-transform-spread": "npm:^7.25.9"
@@ -1426,7 +1347,7 @@ __metadata:
semver: "npm:^6.3.1"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/b8b391e3fe69918a2a4f4366034113bd6f57c9748974dbe1b807a728bc41434f1e003cb4204ca63a2a01cbb7c05ba96036261b64756243374374353931d346e6
+ checksum: 10c0/26e19dc407cfa1c5166be638b4c54239d084fe15d8d7e6306d8c6dc7bc1decc51070a8dcf28352c1a2feeefbe52a06d193a12e302327ad5f529583df75fb7a26
languageName: node
linkType: hard
@@ -1460,8 +1381,8 @@ __metadata:
linkType: hard
"@babel/preset-typescript@npm:^7.21.5":
- version: 7.25.9
- resolution: "@babel/preset-typescript@npm:7.25.9"
+ version: 7.26.0
+ resolution: "@babel/preset-typescript@npm:7.26.0"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.25.9"
"@babel/helper-validator-option": "npm:^7.25.9"
@@ -1470,7 +1391,7 @@ __metadata:
"@babel/plugin-transform-typescript": "npm:^7.25.9"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/cbcc5b4bf2891e367627338961113febbe58d361e9a03bd2c8340ede914870f74db35ee367cfd8d0fca0872149bfb58b090d0a4815de7c05d0a8abb3d961eead
+ checksum: 10c0/20d86bc45d2bbfde2f84fc7d7b38746fa6481d4bde6643039ad4b1ff0b804c6d210ee43e6830effd8571f2ff43fa7ffd27369f42f2b3a2518bb92dc86c780c61
languageName: node
linkType: hard
@@ -1484,11 +1405,11 @@ __metadata:
linkType: hard
"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.8, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.2.0, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.22.3, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.3, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2":
- version: 7.25.9
- resolution: "@babel/runtime@npm:7.25.9"
+ version: 7.26.0
+ resolution: "@babel/runtime@npm:7.26.0"
dependencies:
regenerator-runtime: "npm:^0.14.0"
- checksum: 10c0/d1727a47eab67b8a742cbf1ef336a20c3d906fe65d6316d073c72479125addfa4358c44dd7b95d114f241b93409b134fad7cea43f3bf8ca7e2ef344177eb72d8
+ checksum: 10c0/12c01357e0345f89f4f7e8c0e81921f2a3e3e101f06e8eaa18a382b517376520cd2fa8c237726eb094dab25532855df28a7baaf1c26342b52782f6936b07c287
languageName: node
linkType: hard
@@ -1518,17 +1439,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/types@npm:^7.0.0, @babel/types@npm:^7.0.0-beta.49, @babel/types@npm:^7.12.6, @babel/types@npm:^7.20.7, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.9, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4":
- version: 7.25.9
- resolution: "@babel/types@npm:7.25.9"
- dependencies:
- "@babel/helper-string-parser": "npm:^7.25.9"
- "@babel/helper-validator-identifier": "npm:^7.25.9"
- checksum: 10c0/33890d08bcb06b26a3a60e4c6c996cbdf2b8d8a3c212664de659c2775f80b002c5f2bceedaa309c384ff5e99bd579794fe6a7e41de07df70246f43c55016d349
- languageName: node
- linkType: hard
-
-"@babel/types@npm:^7.26.0":
+"@babel/types@npm:^7.0.0, @babel/types@npm:^7.0.0-beta.49, @babel/types@npm:^7.12.6, @babel/types@npm:^7.20.7, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4":
version: 7.26.0
resolution: "@babel/types@npm:7.26.0"
dependencies:
@@ -2331,8 +2242,8 @@ __metadata:
linkType: hard
"@formatjs/cli@npm:^6.1.1":
- version: 6.3.0
- resolution: "@formatjs/cli@npm:6.3.0"
+ version: 6.3.5
+ resolution: "@formatjs/cli@npm:6.3.5"
peerDependencies:
"@glimmer/env": ^0.1.7
"@glimmer/reference": ^0.91.1 || ^0.92.0
@@ -2361,7 +2272,7 @@ __metadata:
optional: true
bin:
formatjs: bin/formatjs
- checksum: 10c0/9a803eacbcf2060c8b3cedcf9eef1300df73722eeadaebf7282ff0e9cc41bdcb98d60cea46c297fb9060a07ccd56d44f70247d659827086a55a1d0787e6bd545
+ checksum: 10c0/f3fd57de6df3ef0cfa668813c49acd7dcbecbf52444f30e8edec4ee7bc2d8c47c2e6fb4b7ce3c9c5b4595bdf8416c37953ebb05b400f99874a7f810943f6265b
languageName: node
linkType: hard
@@ -2948,7 +2859,7 @@ __metadata:
"@formatjs/intl-pluralrules": "npm:^5.2.2"
"@gamestdio/websocket": "npm:^0.3.2"
"@github/webauthn-json": "npm:^2.1.1"
- "@rails/ujs": "npm:7.1.401"
+ "@rails/ujs": "npm:7.1.402"
"@reduxjs/toolkit": "npm:^2.0.1"
"@svgr/webpack": "npm:^5.5.0"
"@testing-library/dom": "npm:^10.2.0"
@@ -3253,10 +3164,10 @@ __metadata:
languageName: node
linkType: hard
-"@rails/ujs@npm:7.1.401":
- version: 7.1.401
- resolution: "@rails/ujs@npm:7.1.401"
- checksum: 10c0/08eae084c80e837e47cc01d0be25a431495f7dea381dcaaa4ce39a3217fac46bf87d169b3dfcf304ae16e0714de7435c2b8c5eb8d5052e3ba70ef3050a72fa3c
+"@rails/ujs@npm:7.1.402":
+ version: 7.1.402
+ resolution: "@rails/ujs@npm:7.1.402"
+ checksum: 10c0/ccab74b8013ed8a8ab8d7497d0fa510a6ec079725b5fcf679936d80c342940e462b60243ad2cb98128f29db5708a094e319767e8f33a18eb63ceb745de63d1e0
languageName: node
linkType: hard
@@ -3858,12 +3769,12 @@ __metadata:
linkType: hard
"@types/jest@npm:^29.5.2":
- version: 29.5.13
- resolution: "@types/jest@npm:29.5.13"
+ version: 29.5.14
+ resolution: "@types/jest@npm:29.5.14"
dependencies:
expect: "npm:^29.0.0"
pretty-format: "npm:^29.0.0"
- checksum: 10c0/9c31af0b155387b9860908830de63c6b79011d7c87c8b61b39da124e26e55423dd51b006749aafe4f0ef3a065016619a1f93ef4b055157d43727f448e67824b7
+ checksum: 10c0/18e0712d818890db8a8dab3d91e9ea9f7f19e3f83c2e50b312f557017dc81466207a71f3ed79cf4428e813ba939954fa26ffa0a9a7f153181ba174581b1c2aed
languageName: node
linkType: hard
@@ -4123,12 +4034,12 @@ __metadata:
linkType: hard
"@types/react@npm:*, @types/react@npm:>=16.9.11, @types/react@npm:^18.2.7, @types/react@npm:^18.3.11":
- version: 18.3.11
- resolution: "@types/react@npm:18.3.11"
+ version: 18.3.12
+ resolution: "@types/react@npm:18.3.12"
dependencies:
"@types/prop-types": "npm:*"
csstype: "npm:^3.0.2"
- checksum: 10c0/ce80512246ca5bda69db85b9f4f1835189334acfb6b2c4f3eda8cabff1ff1a3ea9ce4f3b895bdbc18c94140aa45592331aa3fdeb557f525c1b048de7ce84fc0e
+ checksum: 10c0/8bae8d9a41619804561574792e29112b413044eb0d53746dde2b9720c1f9a59f71c895bbd7987cd8ce9500b00786e53bc032dced38cddf42910458e145675290
languageName: node
linkType: hard
@@ -4275,8 +4186,8 @@ __metadata:
linkType: hard
"@types/webpack@npm:^4.41.33":
- version: 4.41.39
- resolution: "@types/webpack@npm:4.41.39"
+ version: 4.41.40
+ resolution: "@types/webpack@npm:4.41.40"
dependencies:
"@types/node": "npm:*"
"@types/tapable": "npm:^1"
@@ -4284,7 +4195,7 @@ __metadata:
"@types/webpack-sources": "npm:*"
anymatch: "npm:^3.0.0"
source-map: "npm:^0.6.0"
- checksum: 10c0/740420d092abb80b70263b02609bde209801b060d8e6f3a399a129945cb09182c2ce63dc816908bfbcdb123b35dc4c4fb51367aac2b5974537694cac2631db21
+ checksum: 10c0/ecd530e5db4c21ec61795eec538026f96c126323836249a83e72805afd1d0b1141fc781f14d4a59d77f877523384b4c5d79dc391cfb901e7a781a9aa085f8198
languageName: node
linkType: hard
@@ -6685,9 +6596,9 @@ __metadata:
linkType: hard
"core-js@npm:^3.30.2":
- version: 3.38.1
- resolution: "core-js@npm:3.38.1"
- checksum: 10c0/7df063b6f13a54e46515817ac3e235c6c598a4d3de65cd188a061fc250642be313b895fb9fb2f36e1e31890a1bb4ef61d82666a340413f540b7ce3c65689739b
+ version: 3.39.0
+ resolution: "core-js@npm:3.39.0"
+ checksum: 10c0/f7602069b6afb2e3298eec612a5c1e0c3e6a458930fbfc7a4c5f9ac03426507f49ce395eecdd2d9bae9024f820e44582b67ffe16f2272395af26964f174eeb6b
languageName: node
linkType: hard
@@ -15417,8 +15328,8 @@ __metadata:
linkType: hard
"react-select@npm:^5.7.3":
- version: 5.8.1
- resolution: "react-select@npm:5.8.1"
+ version: 5.8.2
+ resolution: "react-select@npm:5.8.2"
dependencies:
"@babel/runtime": "npm:^7.12.0"
"@emotion/cache": "npm:^11.4.0"
@@ -15432,7 +15343,7 @@ __metadata:
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
- checksum: 10c0/0fd73e1e472105f980e09c86f0e6adbdc9f2f5c1befa275b08c71653becdd1829f596155a81b5085cb86f18b20bf4f4cc439ab5fe23e68f326e169dcfe00ccf6
+ checksum: 10c0/3089b8bfb23f556a7b1de07ea654fc5f5976f531a731a0231bbcbc195afb9294c36f49d712712f2deefc13eb6d7ede4aa1d80cb45b80afd3e26fde2f09db35eb
languageName: node
linkType: hard
@@ -19118,28 +19029,28 @@ __metadata:
languageName: node
linkType: hard
-"workbox-background-sync@npm:7.1.0":
- version: 7.1.0
- resolution: "workbox-background-sync@npm:7.1.0"
+"workbox-background-sync@npm:7.3.0":
+ version: 7.3.0
+ resolution: "workbox-background-sync@npm:7.3.0"
dependencies:
idb: "npm:^7.0.1"
- workbox-core: "npm:7.1.0"
- checksum: 10c0/9538c49a377d8eb06acee3848fbca09bac1940a2ca9e904fed765c39aa32f77c20d72c3ba6fa1eb47bee81289b1d527556a1cd3e02728960a4c40400ce6d0e91
+ workbox-core: "npm:7.3.0"
+ checksum: 10c0/cc982d62702847fb16c4ef372a8bd243348a80c2d5da1649a860b0187b45060a799a65582c2d36f1a32e31d5d68dedcb037698c41d3b2f171ea5d54d73453cf1
languageName: node
linkType: hard
-"workbox-broadcast-update@npm:7.1.0":
- version: 7.1.0
- resolution: "workbox-broadcast-update@npm:7.1.0"
+"workbox-broadcast-update@npm:7.3.0":
+ version: 7.3.0
+ resolution: "workbox-broadcast-update@npm:7.3.0"
dependencies:
- workbox-core: "npm:7.1.0"
- checksum: 10c0/4a6e201cedcbc11b9d2f63f63477ba4564a35ce07bd54640198db6ff6a3b8347a65e0b4973c8f8463e8a622fd1ad93d7b3bab42338608811d23c7db01fef475e
+ workbox-core: "npm:7.3.0"
+ checksum: 10c0/25007acd3e845b5ca1f4c9ac9888ce661431723f7419cfa56b3029b6c56cbeca24902dae015c42a2d6f554f956274743e331d03ceeb4b0e3879cb7b908d0e82f
languageName: node
linkType: hard
-"workbox-build@npm:7.1.0":
- version: 7.1.0
- resolution: "workbox-build@npm:7.1.0"
+"workbox-build@npm:7.3.0":
+ version: 7.3.0
+ resolution: "workbox-build@npm:7.3.0"
dependencies:
"@apideck/better-ajv-errors": "npm:^0.3.1"
"@babel/core": "npm:^7.24.4"
@@ -19163,163 +19074,163 @@ __metadata:
strip-comments: "npm:^2.0.1"
tempy: "npm:^0.6.0"
upath: "npm:^1.2.0"
- workbox-background-sync: "npm:7.1.0"
- workbox-broadcast-update: "npm:7.1.0"
- workbox-cacheable-response: "npm:7.1.0"
- workbox-core: "npm:7.1.0"
- workbox-expiration: "npm:7.1.0"
- workbox-google-analytics: "npm:7.1.0"
- workbox-navigation-preload: "npm:7.1.0"
- workbox-precaching: "npm:7.1.0"
- workbox-range-requests: "npm:7.1.0"
- workbox-recipes: "npm:7.1.0"
- workbox-routing: "npm:7.1.0"
- workbox-strategies: "npm:7.1.0"
- workbox-streams: "npm:7.1.0"
- workbox-sw: "npm:7.1.0"
- workbox-window: "npm:7.1.0"
- checksum: 10c0/c482fde713bad582bd7d4861113d7367ab4722eba9c102864c71048815792c623e9117a8f79957e0388d0c08e8303962d1fb23931456da73909e87d06638d101
- languageName: node
- linkType: hard
-
-"workbox-cacheable-response@npm:7.1.0":
- version: 7.1.0
- resolution: "workbox-cacheable-response@npm:7.1.0"
+ workbox-background-sync: "npm:7.3.0"
+ workbox-broadcast-update: "npm:7.3.0"
+ workbox-cacheable-response: "npm:7.3.0"
+ workbox-core: "npm:7.3.0"
+ workbox-expiration: "npm:7.3.0"
+ workbox-google-analytics: "npm:7.3.0"
+ workbox-navigation-preload: "npm:7.3.0"
+ workbox-precaching: "npm:7.3.0"
+ workbox-range-requests: "npm:7.3.0"
+ workbox-recipes: "npm:7.3.0"
+ workbox-routing: "npm:7.3.0"
+ workbox-strategies: "npm:7.3.0"
+ workbox-streams: "npm:7.3.0"
+ workbox-sw: "npm:7.3.0"
+ workbox-window: "npm:7.3.0"
+ checksum: 10c0/cb396f9c2a53429d1e11b4c1da2e21c9e1c98473ce15f20ae53277e47bd7ccbcb3f1f843694e588bb70b12d9332faafd098ca05b93abb0293d373f38a8de3ca8
+ languageName: node
+ linkType: hard
+
+"workbox-cacheable-response@npm:7.3.0":
+ version: 7.3.0
+ resolution: "workbox-cacheable-response@npm:7.3.0"
dependencies:
- workbox-core: "npm:7.1.0"
- checksum: 10c0/52ea73bb184c9ef9280cc8f00a1ab7d103d495e12a7a6378fae02fd0aa1a9b893aac5d8074f14ed8c198527123e4401f4703fbfd2be98e184ca783b9216cb4c5
+ workbox-core: "npm:7.3.0"
+ checksum: 10c0/192c8a8878c53a205c55398bac78f2c32c0f36e55c95cab282d8a716ddf2fa72563afaed690d34d3438cc8df5fb0df4d98dcb2d93cc6d67c69a9ae592f7bf246
languageName: node
linkType: hard
-"workbox-core@npm:7.1.0":
- version: 7.1.0
- resolution: "workbox-core@npm:7.1.0"
- checksum: 10c0/fb0b6e23a52e085da00b7a74b1f1854f06c695eb2bd4c244aa335165f59156a4febb4f116b9893b9fb7e0e8bac092d32eecceb4d00f930a93f64737cb2be9531
+"workbox-core@npm:7.3.0":
+ version: 7.3.0
+ resolution: "workbox-core@npm:7.3.0"
+ checksum: 10c0/b7dce640cd9665ed207f65f5b08a50e2e24e5599790c6ea4fec987539b9d2ef81765d8c5f94acfee3a8a45d5ade8e1a4ebd0b8847a1471302ef75a5b93c7bd04
languageName: node
linkType: hard
-"workbox-expiration@npm:7.1.0, workbox-expiration@npm:^7.0.0":
- version: 7.1.0
- resolution: "workbox-expiration@npm:7.1.0"
+"workbox-expiration@npm:7.3.0, workbox-expiration@npm:^7.0.0":
+ version: 7.3.0
+ resolution: "workbox-expiration@npm:7.3.0"
dependencies:
idb: "npm:^7.0.1"
- workbox-core: "npm:7.1.0"
- checksum: 10c0/669d76f87c1550ce9b425232c3202a26fdea4c4c9bdc1b71c1cee741a5d011423098994452e508576174d3c0b4bec0f4b35012b6d7257e300684c87fdddb7949
+ workbox-core: "npm:7.3.0"
+ checksum: 10c0/6040d72122ece901becfcc59974586e9cc9b6309840b83b652c9f9aafe32ff89783404a431cadf6f888f80e5371252820e425ced499742964d6d68687f6fad1a
languageName: node
linkType: hard
-"workbox-google-analytics@npm:7.1.0":
- version: 7.1.0
- resolution: "workbox-google-analytics@npm:7.1.0"
+"workbox-google-analytics@npm:7.3.0":
+ version: 7.3.0
+ resolution: "workbox-google-analytics@npm:7.3.0"
dependencies:
- workbox-background-sync: "npm:7.1.0"
- workbox-core: "npm:7.1.0"
- workbox-routing: "npm:7.1.0"
- workbox-strategies: "npm:7.1.0"
- checksum: 10c0/4178d94fb7f3f7b789f117c104b2ff33945256dc550418b0e9c81130c1e2c2bcd72ec6a1661d91326c04de360e6592edd505f0e2142e8e1043fe0c45f9c1a3fe
+ workbox-background-sync: "npm:7.3.0"
+ workbox-core: "npm:7.3.0"
+ workbox-routing: "npm:7.3.0"
+ workbox-strategies: "npm:7.3.0"
+ checksum: 10c0/5317a4bcc01f1aa87480f9708d7d382c15fb37d6119e71e0a2909dfd683f6060b5cc4f7b016a81fc67098f51a5d0cfd1cda20e228f2f3778ee3caf649b59996b
languageName: node
linkType: hard
-"workbox-navigation-preload@npm:7.1.0":
- version: 7.1.0
- resolution: "workbox-navigation-preload@npm:7.1.0"
+"workbox-navigation-preload@npm:7.3.0":
+ version: 7.3.0
+ resolution: "workbox-navigation-preload@npm:7.3.0"
dependencies:
- workbox-core: "npm:7.1.0"
- checksum: 10c0/b667a3ba0cae4d43a53a6e211f0f33f6ebc1d9fec6cbb93de83f72a37b81cc39d887b969db9b1cd5c396a1ce34636c89c3b157cc64a5265635d0b274e362db0e
+ workbox-core: "npm:7.3.0"
+ checksum: 10c0/69e4d43c68c06889987e9fa437995378b0632c83bad8c7044b4ed812b05b94b3a4aa8700ea4c26b2ecf68ee6858e94ff41dfa3279815c1bc385ac19c0edfb200
languageName: node
linkType: hard
-"workbox-precaching@npm:7.1.0, workbox-precaching@npm:^7.0.0":
- version: 7.1.0
- resolution: "workbox-precaching@npm:7.1.0"
+"workbox-precaching@npm:7.3.0, workbox-precaching@npm:^7.0.0":
+ version: 7.3.0
+ resolution: "workbox-precaching@npm:7.3.0"
dependencies:
- workbox-core: "npm:7.1.0"
- workbox-routing: "npm:7.1.0"
- workbox-strategies: "npm:7.1.0"
- checksum: 10c0/53b2d0a658109b4d83ee2b1913f884ee1c757a12b8931a7102272bd1e228d29f9430e7d060f328f465bca2aa24bf0719d026eef4f4d21395fa1f678f8d6a3c06
+ workbox-core: "npm:7.3.0"
+ workbox-routing: "npm:7.3.0"
+ workbox-strategies: "npm:7.3.0"
+ checksum: 10c0/15c4c5cf5dfec684711ce3536bbfa6873f7af16b712d02ded81d3ff490ea4097e46602705548f5872c49f06e3516fd69f17e72a7fc60631ff6d68460e48f7648
languageName: node
linkType: hard
-"workbox-range-requests@npm:7.1.0":
- version: 7.1.0
- resolution: "workbox-range-requests@npm:7.1.0"
+"workbox-range-requests@npm:7.3.0":
+ version: 7.3.0
+ resolution: "workbox-range-requests@npm:7.3.0"
dependencies:
- workbox-core: "npm:7.1.0"
- checksum: 10c0/bf4aa597d04cbb533796af64f4006a1f472f8a14ea91f96fe37b2d5e63ffe86dcb944dab9a41317e69d368d83bee20f03ff32b339ae5addef50f325703ad4b77
+ workbox-core: "npm:7.3.0"
+ checksum: 10c0/d48e1484866442864d66b1891c4965b71e997a83a7634f11452ec1a73a30a5e642e6a95d5cff45578bef4dec7a5f57bc598aeedb6189d17ca210e2c5f2898244
languageName: node
linkType: hard
-"workbox-recipes@npm:7.1.0":
- version: 7.1.0
- resolution: "workbox-recipes@npm:7.1.0"
+"workbox-recipes@npm:7.3.0":
+ version: 7.3.0
+ resolution: "workbox-recipes@npm:7.3.0"
dependencies:
- workbox-cacheable-response: "npm:7.1.0"
- workbox-core: "npm:7.1.0"
- workbox-expiration: "npm:7.1.0"
- workbox-precaching: "npm:7.1.0"
- workbox-routing: "npm:7.1.0"
- workbox-strategies: "npm:7.1.0"
- checksum: 10c0/5a8c2444f6338c6092be87cc6fd69c8b0cbb413bfc0a11a8f10961bfb2b8059359c4be0264ffa0c01deff3ab5dba15bbcf61d4dedbc93d8bfe1f8a2841b1657c
+ workbox-cacheable-response: "npm:7.3.0"
+ workbox-core: "npm:7.3.0"
+ workbox-expiration: "npm:7.3.0"
+ workbox-precaching: "npm:7.3.0"
+ workbox-routing: "npm:7.3.0"
+ workbox-strategies: "npm:7.3.0"
+ checksum: 10c0/c8146ece4247cbcbefba36a14f2cb65b5f74b2412f64cfc7955ff75ff653857161a1f1d94c987fbae4812f5b770eedcf99af965e512cc375fbc7fb5421bdc99c
languageName: node
linkType: hard
-"workbox-routing@npm:7.1.0, workbox-routing@npm:^7.0.0":
- version: 7.1.0
- resolution: "workbox-routing@npm:7.1.0"
+"workbox-routing@npm:7.3.0, workbox-routing@npm:^7.0.0":
+ version: 7.3.0
+ resolution: "workbox-routing@npm:7.3.0"
dependencies:
- workbox-core: "npm:7.1.0"
- checksum: 10c0/efd630fff594bd50276770840bce274660972587e79c097a9f1a84e8347351736aac13f11c6d7655ff550b13195d370d5c3b81a075bf452f358fc144ee868ad9
+ workbox-core: "npm:7.3.0"
+ checksum: 10c0/8ac1824211d0fbe0e916ecb2c2427bcb0ef8783f9225d8114fe22e6c326f2d8a040a089bead58064e8b096ec95abe070c04cd7353dd8830dba3ab8d608a053aa
languageName: node
linkType: hard
-"workbox-strategies@npm:7.1.0, workbox-strategies@npm:^7.0.0":
- version: 7.1.0
- resolution: "workbox-strategies@npm:7.1.0"
+"workbox-strategies@npm:7.3.0, workbox-strategies@npm:^7.0.0":
+ version: 7.3.0
+ resolution: "workbox-strategies@npm:7.3.0"
dependencies:
- workbox-core: "npm:7.1.0"
- checksum: 10c0/b08712a69b1b13e354345cc228c29f0c759043f7ca7cf6ce9b82fe79c9d423142bfa4a118f91f1a57054047a730127fa4474d59d9306fb2ed42fe9ef568be01a
+ workbox-core: "npm:7.3.0"
+ checksum: 10c0/50f3c28b46b54885a9461ad6559010d9abb2a7e35e0128d05c268f3ea0a96b1a747934758121d0e821f7af63946d9db8f4d2d7e0146f12555fb05c768e6b82bb
languageName: node
linkType: hard
-"workbox-streams@npm:7.1.0":
- version: 7.1.0
- resolution: "workbox-streams@npm:7.1.0"
+"workbox-streams@npm:7.3.0":
+ version: 7.3.0
+ resolution: "workbox-streams@npm:7.3.0"
dependencies:
- workbox-core: "npm:7.1.0"
- workbox-routing: "npm:7.1.0"
- checksum: 10c0/1d75c046fcb7b25e1cf85457e3610309dd5513f68752ef333529fcf155df2114b72f3d6f416bb68393e51b5396e3f6df7171e8e2889d0e9e1805e315754b771e
+ workbox-core: "npm:7.3.0"
+ workbox-routing: "npm:7.3.0"
+ checksum: 10c0/2ae541343d187eb7a50da2cfd74051f15771d1ddd1cad6856ffd530f7cccdb8eed9a8af94ff7540b710fef73eeec37d652123ae42b0206fbbd0679dc25e66ff4
languageName: node
linkType: hard
-"workbox-sw@npm:7.1.0":
- version: 7.1.0
- resolution: "workbox-sw@npm:7.1.0"
- checksum: 10c0/2084f1b58c8509d7ca53ce8a13d93e57d1f13307e0279fedc87942e83c8cb96bc2e5ed3992a89af6245ad2a66897a92908cb60d0717fb90492056eb6fbf20dc6
+"workbox-sw@npm:7.3.0":
+ version: 7.3.0
+ resolution: "workbox-sw@npm:7.3.0"
+ checksum: 10c0/9ae275e31dd5ec51245773b6d90fda16d0b7f70d59f3a71aec732814b5aedf08aedc7fcce57739e7e89d9e1479ef97e3a202a542a511d732cf5e8b5d1c293870
languageName: node
linkType: hard
"workbox-webpack-plugin@npm:^7.0.0":
- version: 7.1.0
- resolution: "workbox-webpack-plugin@npm:7.1.0"
+ version: 7.3.0
+ resolution: "workbox-webpack-plugin@npm:7.3.0"
dependencies:
fast-json-stable-stringify: "npm:^2.1.0"
pretty-bytes: "npm:^5.4.1"
upath: "npm:^1.2.0"
webpack-sources: "npm:^1.4.3"
- workbox-build: "npm:7.1.0"
+ workbox-build: "npm:7.3.0"
peerDependencies:
webpack: ^4.4.0 || ^5.91.0
- checksum: 10c0/516fa68a6a6958ee1560299dd1146032dda68474a2ab01643cbde78fc65b75a3157aef60cb45dcc1984cc458ce44d4e3090cda08dd7cefd0952351270e963a00
+ checksum: 10c0/dd3625544fe08b099fd2b783584c6c2c5da3f0e0c3096fc1a86a0b96a26df5055dd178d3c60ab4cde4099474ab23d51c292356c6910dfa16a974c8a95f351c93
languageName: node
linkType: hard
-"workbox-window@npm:7.1.0, workbox-window@npm:^7.0.0":
- version: 7.1.0
- resolution: "workbox-window@npm:7.1.0"
+"workbox-window@npm:7.3.0, workbox-window@npm:^7.0.0":
+ version: 7.3.0
+ resolution: "workbox-window@npm:7.3.0"
dependencies:
"@types/trusted-types": "npm:^2.0.2"
- workbox-core: "npm:7.1.0"
- checksum: 10c0/c989a6e3a0488f049eead3892f8249387604fb04898aa79d0cf14cd7b684f0758f1edf1996745f4755bd30c31c449f628803e507d39b2ea91cc9c36f7d5e9c72
+ workbox-core: "npm:7.3.0"
+ checksum: 10c0/dbda33c4761ec40051cfe6e3f1701b2381b4f3b191f7a249c32f683503ea35cf8b42d1f99df5ba3b693fac78705d8ed0c191488bdd178c525d1291d0161ec8ff
languageName: node
linkType: hard