+ >
+ );
+};
diff --git a/app/javascript/mastodon/features/picture_in_picture/components/footer.jsx b/app/javascript/mastodon/features/picture_in_picture/components/footer.jsx
index e6e72383a61e92..dc89c840c708be 100644
--- a/app/javascript/mastodon/features/picture_in_picture/components/footer.jsx
+++ b/app/javascript/mastodon/features/picture_in_picture/components/footer.jsx
@@ -166,7 +166,7 @@ class Footer extends ImmutablePureComponent {
onClose();
}
- history.push(`/@${status.getIn(['account', 'acct'])}/${status.get('id')}`);
+ this.props.history.push(`/@${status.getIn(['account', 'acct'])}/${status.get('id')}`);
};
render () {
diff --git a/app/javascript/mastodon/features/ui/index.jsx b/app/javascript/mastodon/features/ui/index.jsx
index 23c7ccd0081382..fb2d4fecd88d54 100644
--- a/app/javascript/mastodon/features/ui/index.jsx
+++ b/app/javascript/mastodon/features/ui/index.jsx
@@ -229,10 +229,10 @@ class SwitchingColumnsArea extends PureComponent {
-
+
-
+
diff --git a/app/javascript/mastodon/locales/an.json b/app/javascript/mastodon/locales/an.json
index 6243f8d4caf918..a652272fadbe0b 100644
--- a/app/javascript/mastodon/locales/an.json
+++ b/app/javascript/mastodon/locales/an.json
@@ -334,7 +334,6 @@
"lists.search": "Buscar entre la chent a la quala sigues",
"lists.subheading": "Las tuyas listas",
"load_pending": "{count, plural, one {# nuevo elemento} other {# nuevos elementos}}",
- "loading_indicator.label": "Cargando...",
"media_gallery.toggle_visible": "{number, plural, one {Amaga la imachen} other {Amaga las imáchens}}",
"moved_to_account_banner.text": "La tuya cuenta {disabledAccount} ye actualment deshabilitada perque t'has mudau a {movedToAccount}.",
"mute_modal.duration": "Duración",
diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json
index 4a5e047647fafe..979bc9a701f33b 100644
--- a/app/javascript/mastodon/locales/ar.json
+++ b/app/javascript/mastodon/locales/ar.json
@@ -389,7 +389,6 @@
"lists.search": "إبحث في قائمة الحسابات التي تُتابِعها",
"lists.subheading": "قوائمك",
"load_pending": "{count, plural, one {# عنصر جديد} other {# عناصر جديدة}}",
- "loading_indicator.label": "جارٍ التحميل…",
"media_gallery.toggle_visible": "{number, plural, zero {} one {اخف الصورة} two {اخف الصورتين} few {اخف الصور} many {اخف الصور} other {اخف الصور}}",
"moved_to_account_banner.text": "حسابك {disabledAccount} معطل حاليًا لأنك انتقلت إلى {movedToAccount}.",
"mute_modal.duration": "المدة",
diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json
index fed324e2d0ba75..0d49d9a19d424c 100644
--- a/app/javascript/mastodon/locales/ast.json
+++ b/app/javascript/mastodon/locales/ast.json
@@ -272,7 +272,6 @@
"lists.search": "Buscar ente los perfiles que sigues",
"lists.subheading": "Les tos llistes",
"load_pending": "{count, plural, one {# elementu nuevu} other {# elementos nuevos}}",
- "loading_indicator.label": "Cargando…",
"media_gallery.toggle_visible": "{number, plural, one {Anubrir la imaxe} other {Anubrir les imáxenes}}",
"mute_modal.duration": "Duración",
"mute_modal.hide_notifications": "¿Quies anubrir los avisos d'esti perfil?",
diff --git a/app/javascript/mastodon/locales/be.json b/app/javascript/mastodon/locales/be.json
index e8a52ee29c6709..4f5b247b64f360 100644
--- a/app/javascript/mastodon/locales/be.json
+++ b/app/javascript/mastodon/locales/be.json
@@ -390,7 +390,7 @@
"lists.search": "Шукайце сярод людзей, на якіх Вы падпісаны",
"lists.subheading": "Вашыя спісы",
"load_pending": "{count, plural, one {# новы элемент} few {# новыя элементы} many {# новых элементаў} other {# новых элементаў}}",
- "loading_indicator.label": "Загрузка...",
+ "loading_indicator.label": "Загрузка…",
"media_gallery.toggle_visible": "{number, plural, one {Схаваць відарыс} other {Схаваць відарысы}}",
"moved_to_account_banner.text": "Ваш уліковы запіс {disabledAccount} зараз адключаны таму што вы перанесены на {movedToAccount}.",
"mute_modal.duration": "Працягласць",
@@ -479,6 +479,17 @@
"onboarding.follows.empty": "На жаль, зараз немагчыма паказаць вынікі. Вы можаце паспрабаваць выкарыстоўваць пошук і праглядзець старонку агляду, каб знайсці людзей, на якіх можна падпісацца, або паўтарыце спробу пазней.",
"onboarding.follows.lead": "Вы самі ствараеце свой хатні канал. Чым больш людзей вы падпішаце, тым больш актыўна і цікавей гэта будзе. Гэтыя профілі могуць стаць добрай адпраўной кропкай — вы заўсёды можаце адмяніць падпіску на іх пазней!",
"onboarding.follows.title": "Папулярна на Mastodon",
+ "onboarding.profile.discoverable": "Уключыць профіль і допісы ў алгарытмы рэкамендацый",
+ "onboarding.profile.display_name": "Бачнае імя",
+ "onboarding.profile.display_name_hint": "Ваша поўнае імя або ваш псеўданім…",
+ "onboarding.profile.indexable": "Індэксаваць публічныя допісы ў пошукавых сістэмах",
+ "onboarding.profile.lead": "Вы заўсёды можаце выканаць гэта пазней у Наладах, дзе даступна яшчэ больш параметраў.",
+ "onboarding.profile.note": "Біяграфія",
+ "onboarding.profile.note_hint": "Вы можаце @згадаць іншых людзей або выкарыстоўваць #хэштэгі…",
+ "onboarding.profile.save_and_continue": "Захаваць і працягнуць",
+ "onboarding.profile.title": "Налады профілю",
+ "onboarding.profile.upload_avatar": "Загрузіць фота профілю",
+ "onboarding.profile.upload_header": "Загрузіць шапку профілю",
"onboarding.share.lead": "Дайце людзям ведаць, як яны могуць знайсці вас на Mastodon!",
"onboarding.share.message": "Я {username} на #Mastodon! Сачыце за мной на {url}",
"onboarding.share.next_steps": "Магчымыя наступныя крокі:",
diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json
index 83bffd946d7ea5..b30dfecaa601f7 100644
--- a/app/javascript/mastodon/locales/bg.json
+++ b/app/javascript/mastodon/locales/bg.json
@@ -222,6 +222,7 @@
"emoji_button.search_results": "Резултати от търсене",
"emoji_button.symbols": "Символи",
"emoji_button.travel": "Пътуване и места",
+ "empty_column.account_hides_collections": "Този потребител е избрал да не прави това сведение достъпно",
"empty_column.account_suspended": "Спрян акаунт",
"empty_column.account_timeline": "Тук няма публикации!",
"empty_column.account_unavailable": "Профилът не е наличен",
@@ -389,7 +390,7 @@
"lists.search": "Търсене измежду последваните",
"lists.subheading": "Вашите списъци",
"load_pending": "{count, plural, one {# нов елемент} other {# нови елемента}}",
- "loading_indicator.label": "Зареждане...",
+ "loading_indicator.label": "Зареждане…",
"media_gallery.toggle_visible": "Скриване на {number, plural, one {изображение} other {изображения}}",
"moved_to_account_banner.text": "Вашият акаунт {disabledAccount} сега е изключен, защото се преместихте в {movedToAccount}.",
"mute_modal.duration": "Времетраене",
@@ -478,6 +479,17 @@
"onboarding.follows.empty": "За съжаление, в момента не могат да се показват резултати. Може да опитате да употребявате търсене или да прегледате страницата за изследване, за да намерите страница за последване, или да опитате пак по-късно.",
"onboarding.follows.lead": "Може да бъдете куратор на началния си инфоканал. Последвайки повече хора, по-деен и по-интересен ще става. Тези профили може да са добра начална точка, от която винаги по-късно да спрете да следвате!",
"onboarding.follows.title": "Популярно в Mastodon",
+ "onboarding.profile.discoverable": "Включване на профила и публикации в алгоритмите за откриване",
+ "onboarding.profile.display_name": "Името на показ",
+ "onboarding.profile.display_name_hint": "Вашето пълно име или псевдоним…",
+ "onboarding.profile.indexable": "Включване на обществени публикации в резултатите от търсене",
+ "onboarding.profile.lead": "Винаги може да завършите това по-късно в настройките, където дори има повече възможности за настройване.",
+ "onboarding.profile.note": "Биогр.",
+ "onboarding.profile.note_hint": "Може да @споменавате други хора или #хаштагове…",
+ "onboarding.profile.save_and_continue": "Запазване и продължаване",
+ "onboarding.profile.title": "Настройване на профила",
+ "onboarding.profile.upload_avatar": "Качване на снимка на профила",
+ "onboarding.profile.upload_header": "Качване на заглавка на профила",
"onboarding.share.lead": "Позволете на хората да знаят, че могат да ви намерят в Mastodon!",
"onboarding.share.message": "Аз съм {username} в #Mastodon! Елате да ме последвате при {url}",
"onboarding.share.next_steps": "Възможни следващи стъпки:",
diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json
index 85d6f2474a04e5..b6e4fbb965f6f6 100644
--- a/app/javascript/mastodon/locales/bn.json
+++ b/app/javascript/mastodon/locales/bn.json
@@ -314,7 +314,6 @@
"lists.search": "যাদের অনুসরণ করেন তাদের ভেতরে খুঁজুন",
"lists.subheading": "আপনার তালিকা",
"load_pending": "{count, plural, one {# নতুন জিনিস} other {# নতুন জিনিস}}",
- "loading_indicator.label": "আসছে...",
"media_gallery.toggle_visible": "দৃশ্যতার অবস্থা বদলান",
"mute_modal.duration": "সময়কাল",
"mute_modal.hide_notifications": "এই ব্যবহারকারীর প্রজ্ঞাপন বন্ধ করবেন ?",
diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json
index 8449762c2d3aae..39cd73241940ae 100644
--- a/app/javascript/mastodon/locales/br.json
+++ b/app/javascript/mastodon/locales/br.json
@@ -329,7 +329,6 @@
"lists.search": "Klask e-touez tud heuliet ganeoc'h",
"lists.subheading": "Ho listennoù",
"load_pending": "{count, plural, one {# dra nevez} other {# dra nevez}}",
- "loading_indicator.label": "O kargañ...",
"media_gallery.toggle_visible": "{number, plural, one {Kuzhat ar skeudenn} other {Kuzhat ar skeudenn}}",
"mute_modal.duration": "Padelezh",
"mute_modal.hide_notifications": "Kuzhat kemenadennoù eus an implijer-se ?",
diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json
index 99cae584b0eb52..926343f6769320 100644
--- a/app/javascript/mastodon/locales/ca.json
+++ b/app/javascript/mastodon/locales/ca.json
@@ -390,7 +390,6 @@
"lists.search": "Cerca entre les persones que segueixes",
"lists.subheading": "Les teves llistes",
"load_pending": "{count, plural, one {# element nou} other {# elements nous}}",
- "loading_indicator.label": "Es carrega...",
"media_gallery.toggle_visible": "{number, plural, one {Amaga la imatge} other {Amaga les imatges}}",
"moved_to_account_banner.text": "El teu compte {disabledAccount} està desactivat perquè l'has mogut a {movedToAccount}.",
"mute_modal.duration": "Durada",
diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json
index 381eaa5b1695d6..7e964183292d12 100644
--- a/app/javascript/mastodon/locales/ckb.json
+++ b/app/javascript/mastodon/locales/ckb.json
@@ -342,7 +342,6 @@
"lists.search": "بگەڕێ لەناو ئەو کەسانەی کە شوێنیان کەوتویت",
"lists.subheading": "لیستەکانت",
"load_pending": "{count, plural, one {# بەڕگەی نوێ} other {# بەڕگەی نوێ}}",
- "loading_indicator.label": "بارکردن...",
"media_gallery.toggle_visible": "شاردنەوەی {number, plural, one {image} other {images}}",
"moved_to_account_banner.text": "ئەکاونتەکەت {disabledAccount} لە ئێستادا لەکارخراوە چونکە تۆ چوویتە {movedToAccount}.",
"mute_modal.duration": "ماوە",
diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json
index 1d878a0cd866e7..d4bb2f82ba463e 100644
--- a/app/javascript/mastodon/locales/co.json
+++ b/app/javascript/mastodon/locales/co.json
@@ -236,7 +236,6 @@
"lists.search": "Circà indè i vostr'abbunamenti",
"lists.subheading": "E vo liste",
"load_pending": "{count, plural, one {# entrata nova} other {# entrate nove}}",
- "loading_indicator.label": "Caricamentu...",
"media_gallery.toggle_visible": "Piattà {number, plural, one {ritrattu} other {ritratti}}",
"mute_modal.duration": "Durata",
"mute_modal.hide_notifications": "Piattà nutificazione da st'utilizatore?",
diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json
index 33c7c31d9c17d9..20ef4373374d16 100644
--- a/app/javascript/mastodon/locales/cs.json
+++ b/app/javascript/mastodon/locales/cs.json
@@ -222,6 +222,7 @@
"emoji_button.search_results": "Výsledky hledání",
"emoji_button.symbols": "Symboly",
"emoji_button.travel": "Cestování a místa",
+ "empty_column.account_hides_collections": "Tento uživatel se rozhodl nezveřejňovat tuto informaci",
"empty_column.account_suspended": "Účet je pozastaven",
"empty_column.account_timeline": "Nejsou tu žádné příspěvky!",
"empty_column.account_unavailable": "Profil není dostupný",
@@ -385,7 +386,6 @@
"lists.search": "Hledejte mezi lidmi, které sledujete",
"lists.subheading": "Vaše seznamy",
"load_pending": "{count, plural, one {# nová položka} few {# nové položky} many {# nových položek} other {# nových položek}}",
- "loading_indicator.label": "Načítání...",
"media_gallery.toggle_visible": "{number, plural, one {Skrýt obrázek} few {Skrýt obrázky} many {Skrýt obrázky} other {Skrýt obrázky}}",
"moved_to_account_banner.text": "Váš účet {disabledAccount} je momentálně deaktivován, protože jste se přesunul/a na {movedToAccount}.",
"mute_modal.duration": "Trvání",
diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json
index 183ab6955bf25f..dcd5406d05f083 100644
--- a/app/javascript/mastodon/locales/cy.json
+++ b/app/javascript/mastodon/locales/cy.json
@@ -390,7 +390,6 @@
"lists.search": "Chwilio ymysg pobl rydych yn eu dilyn",
"lists.subheading": "Eich rhestrau",
"load_pending": "{count, plural, one {# eitem newydd} other {# eitem newydd}}",
- "loading_indicator.label": "Llwytho...",
"media_gallery.toggle_visible": "{number, plural, one {Cuddio delwedd} other {Cuddio delwedd}}",
"moved_to_account_banner.text": "Ar hyn y bryd, mae eich cyfrif {disabledAccount} wedi ei analluogi am i chi symud i {movedToAccount}.",
"mute_modal.duration": "Hyd",
diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json
index bb8b72bca44bde..33eda6f43667a0 100644
--- a/app/javascript/mastodon/locales/da.json
+++ b/app/javascript/mastodon/locales/da.json
@@ -390,7 +390,7 @@
"lists.search": "Søg blandt personer, som følges",
"lists.subheading": "Dine lister",
"load_pending": "{count, plural, one {# nyt emne} other {# nye emner}}",
- "loading_indicator.label": "Indlæser...",
+ "loading_indicator.label": "Indlæser…",
"media_gallery.toggle_visible": "{number, plural, one {Skjul billede} other {Skjul billeder}}",
"moved_to_account_banner.text": "Din konto {disabledAccount} er pt. deaktiveret, da du flyttede til {movedToAccount}.",
"mute_modal.duration": "Varighed",
@@ -479,6 +479,17 @@
"onboarding.follows.empty": "Ingen resultater tilgængelige pt. Prøv at bruge søgning eller gennemse siden for at finde personer at følge, eller forsøg igen senere.",
"onboarding.follows.lead": "Man kurerer sin eget hjemme-feed. Jo flere personer man følger, des mere aktiv og interessant vil det være. Disse profiler kan være et godt udgangspunkt – de kan altid fjernes senere!",
"onboarding.follows.title": "Populært på Mastodon",
+ "onboarding.profile.discoverable": "Fremhæv profil og indlæg i detekteringsalgoritmer",
+ "onboarding.profile.display_name": "Visningsnavn",
+ "onboarding.profile.display_name_hint": "Fulde navn eller dit sjove navn…",
+ "onboarding.profile.indexable": "Medtag offentlige indlæg i søgeresultater",
+ "onboarding.profile.lead": "Dette kan altid færdiggøres senere i indstillingerne, hvor endnu flere tilpasningsmuligheder forefindes.",
+ "onboarding.profile.note": "Bio",
+ "onboarding.profile.note_hint": "Man kan @omtale andre personer eller #hashtags…",
+ "onboarding.profile.save_and_continue": "Gem og fortsæt",
+ "onboarding.profile.title": "Profilopsætning",
+ "onboarding.profile.upload_avatar": "Upload profilbillede",
+ "onboarding.profile.upload_header": "Upload profiloverskrift",
"onboarding.share.lead": "Lad folk vide, hvordan de kan finde dig på Mastodon!",
"onboarding.share.message": "Jeg er {username} på #Mastodon! Følg mig på {url}",
"onboarding.share.next_steps": "Mulige næste trin:",
diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json
index e4f7fe6cec7aa9..5c1ccf46d91de9 100644
--- a/app/javascript/mastodon/locales/de.json
+++ b/app/javascript/mastodon/locales/de.json
@@ -390,7 +390,7 @@
"lists.search": "Suche nach Leuten, denen du folgst",
"lists.subheading": "Deine Listen",
"load_pending": "{count, plural, one {# neuer Beitrag} other {# neue Beiträge}}",
- "loading_indicator.label": "Wird geladen …",
+ "loading_indicator.label": "Wird geladen …",
"media_gallery.toggle_visible": "{number, plural, one {Medium ausblenden} other {Medien ausblenden}}",
"moved_to_account_banner.text": "Dein Konto {disabledAccount} ist derzeit deaktiviert, weil du zu {movedToAccount} umgezogen bist.",
"mute_modal.duration": "Dauer",
@@ -479,6 +479,17 @@
"onboarding.follows.empty": "Bedauerlicherweise können aktuell keine Ergebnisse angezeigt werden. Du kannst die Suche verwenden oder den Reiter „Entdecken“ auswählen, um neue Leute zum Folgen zu finden – oder du versuchst es später erneut.",
"onboarding.follows.lead": "Deine Startseite ist der primäre Anlaufpunkt, um Mastodon zu erleben. Je mehr Profilen du folgst, umso aktiver und interessanter wird sie. Damit du direkt loslegen kannst, gibt es hier ein paar Vorschläge:",
"onboarding.follows.title": "Personalisiere deine Startseite",
+ "onboarding.profile.discoverable": "Profil und Beiträge in Suchalgorithmen berücksichtigen",
+ "onboarding.profile.display_name": "Anzeigename",
+ "onboarding.profile.display_name_hint": "Dein richtiger Name oder dein Fantasiename …",
+ "onboarding.profile.indexable": "Öffentliche Beiträge in die Suchergebnisse einbeziehen",
+ "onboarding.profile.lead": "Du kannst das später in den Einstellungen vervollständigen, wo noch mehr Anpassungsmöglichkeiten zur Verfügung stehen.",
+ "onboarding.profile.note": "Über mich",
+ "onboarding.profile.note_hint": "Du kannst andere @Profile erwähnen oder #Hashtags verwenden …",
+ "onboarding.profile.save_and_continue": "Speichern und fortsetzen",
+ "onboarding.profile.title": "Profil einrichten",
+ "onboarding.profile.upload_avatar": "Profilbild hochladen",
+ "onboarding.profile.upload_header": "Titelbild hochladen",
"onboarding.share.lead": "Lass die Leute wissen, wie sie dich auf Mastodon finden können!",
"onboarding.share.message": "Ich bin {username} auf #Mastodon! Folge mir auf {url}",
"onboarding.share.next_steps": "Mögliche nächste Schritte:",
diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json
index d3be386b407371..31806bcfb9dbcc 100644
--- a/app/javascript/mastodon/locales/el.json
+++ b/app/javascript/mastodon/locales/el.json
@@ -345,7 +345,6 @@
"lists.search": "Αναζήτησε μεταξύ των ανθρώπων που ακουλουθείς",
"lists.subheading": "Οι λίστες σου",
"load_pending": "{count, plural, one {# νέο στοιχείο} other {# νέα στοιχεία}}",
- "loading_indicator.label": "Φορτώνει...",
"media_gallery.toggle_visible": "{number, plural, one {Απόκρυψη εικόνας} other {Απόκρυψη εικόνων}}",
"moved_to_account_banner.text": "Ο λογαριασμός σου {disabledAccount} είναι προσωρινά απενεργοποιημένος επειδή μεταφέρθηκες στον {movedToAccount}.",
"mute_modal.duration": "Διάρκεια",
diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json
index 20ed8937bc939e..d00782592e9d04 100644
--- a/app/javascript/mastodon/locales/en-GB.json
+++ b/app/javascript/mastodon/locales/en-GB.json
@@ -389,7 +389,7 @@
"lists.search": "Search among people you follow",
"lists.subheading": "Your lists",
"load_pending": "{count, plural, one {# new item} other {# new items}}",
- "loading_indicator.label": "Loading...",
+ "loading_indicator.label": "Loading…",
"media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}",
"moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
"mute_modal.duration": "Duration",
@@ -478,6 +478,17 @@
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Personalize your home feed",
+ "onboarding.profile.discoverable": "Feature profile and posts in discovery algorithms",
+ "onboarding.profile.display_name": "Display name",
+ "onboarding.profile.display_name_hint": "Your full name or your fun name…",
+ "onboarding.profile.indexable": "Include public posts in search results",
+ "onboarding.profile.lead": "You can always complete this later in the settings, where even more customisation options are available.",
+ "onboarding.profile.note": "Bio",
+ "onboarding.profile.note_hint": "You can @mention other people or #hashtags…",
+ "onboarding.profile.save_and_continue": "Save and continue",
+ "onboarding.profile.title": "Profile setup",
+ "onboarding.profile.upload_avatar": "Upload profile picture",
+ "onboarding.profile.upload_header": "Upload profile header",
"onboarding.share.lead": "Let people know how they can find you on Mastodon!",
"onboarding.share.message": "I'm {username} on #Mastodon! Come follow me at {url}",
"onboarding.share.next_steps": "Possible next steps:",
diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json
index 231b85b5bfb2d6..3083a55bb254ec 100644
--- a/app/javascript/mastodon/locales/en.json
+++ b/app/javascript/mastodon/locales/en.json
@@ -28,6 +28,7 @@
"account.blocked": "Blocked",
"account.browse_more_on_origin_server": "Browse more on the original profile",
"account.cancel_follow_request": "Cancel follow",
+ "account.copy": "Copy link to profile",
"account.direct": "Privately mention @{name}",
"account.disable_notifications": "Stop notifying me when @{name} posts",
"account.domain_blocked": "Domain blocked",
@@ -207,6 +208,7 @@
"conversation.mark_as_read": "Mark as read",
"conversation.open": "View conversation",
"conversation.with": "With {names}",
+ "copy_icon_button.copied": "Copied to clipboard",
"copypaste.copied": "Copied",
"copypaste.copy_to_clipboard": "Copy to clipboard",
"directory.federated": "From known fediverse",
@@ -409,7 +411,7 @@
"lists.search": "Search among people you follow",
"lists.subheading": "Your lists",
"load_pending": "{count, plural, one {# new item} other {# new items}}",
- "loading_indicator.label": "Loading...",
+ "loading_indicator.label": "Loading…",
"media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}",
"moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
"mute_modal.duration": "Duration",
@@ -504,6 +506,17 @@
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "Your home feed is the primary way to experience Mastodon. The more people you follow, the more active and interesting it will be. To get you started, here are some suggestions:",
"onboarding.follows.title": "Personalize your home feed",
+ "onboarding.profile.discoverable": "Feature profile and posts in discovery algorithms",
+ "onboarding.profile.display_name": "Display name",
+ "onboarding.profile.display_name_hint": "Your full name or your fun name…",
+ "onboarding.profile.indexable": "Include public posts in search results",
+ "onboarding.profile.lead": "You can always complete this later in the settings, where even more customization options are available.",
+ "onboarding.profile.note": "Bio",
+ "onboarding.profile.note_hint": "You can @mention other people or #hashtags…",
+ "onboarding.profile.save_and_continue": "Save and continue",
+ "onboarding.profile.title": "Profile setup",
+ "onboarding.profile.upload_avatar": "Upload profile picture",
+ "onboarding.profile.upload_header": "Upload profile header",
"onboarding.share.lead": "Let people know how they can find you on Mastodon!",
"onboarding.share.message": "I'm {username} on #Mastodon! Come follow me at {url}",
"onboarding.share.next_steps": "Possible next steps:",
diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json
index 6b4258a6bc8d87..5679d5e41595c4 100644
--- a/app/javascript/mastodon/locales/eo.json
+++ b/app/javascript/mastodon/locales/eo.json
@@ -365,7 +365,6 @@
"lists.search": "Serĉi inter la homoj, kiujn vi sekvas",
"lists.subheading": "Viaj listoj",
"load_pending": "{count,plural, one {# nova elemento} other {# novaj elementoj}}",
- "loading_indicator.label": "Ŝargado…",
"media_gallery.toggle_visible": "{number, plural, one {Kaŝi la bildon} other {Kaŝi la bildojn}}",
"moved_to_account_banner.text": "Via konto {disabledAccount} estas malvalidigita ĉar vi movis ĝin al {movedToAccount}.",
"mute_modal.duration": "Daŭro",
diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json
index 71d6e3119b8778..68033636950bfc 100644
--- a/app/javascript/mastodon/locales/es-AR.json
+++ b/app/javascript/mastodon/locales/es-AR.json
@@ -390,7 +390,7 @@
"lists.search": "Buscar entre la gente que seguís",
"lists.subheading": "Tus listas",
"load_pending": "{count, plural, one {# elemento nuevo} other {# elementos nuevos}}",
- "loading_indicator.label": "Cargando...",
+ "loading_indicator.label": "Cargando…",
"media_gallery.toggle_visible": "Ocultar {number, plural, one {imagen} other {imágenes}}",
"moved_to_account_banner.text": "Tu cuenta {disabledAccount} está actualmente deshabilitada porque te mudaste a {movedToAccount}.",
"mute_modal.duration": "Duración",
@@ -479,6 +479,17 @@
"onboarding.follows.empty": "Desafortunadamente, no se pueden mostrar resultados en este momento. Podés intentar usar la búsqueda o navegar por la página de exploración para encontrar cuentas a las que seguir, o intentarlo de nuevo más tarde.",
"onboarding.follows.lead": "Tu línea temporal de inicio es la forma principal de experimentar Mastodon. Cuanta más cuentas sigás, más activa e interesante será. Para empezar, acá tenés algunas sugerencias:",
"onboarding.follows.title": "Personalizá tu línea de tiempo principal",
+ "onboarding.profile.discoverable": "Destacar perfil y mensajes en algoritmos de descubrimiento",
+ "onboarding.profile.display_name": "Nombre para mostrar",
+ "onboarding.profile.display_name_hint": "Tu nombre completo o tu pseudónimo…",
+ "onboarding.profile.indexable": "Incluir mensajes públicos en resultados de búsqueda",
+ "onboarding.profile.lead": "Siempre podés completar esto más tarde en la configuración, donde hay disponibles más opciones de personalización.",
+ "onboarding.profile.note": "Biografía",
+ "onboarding.profile.note_hint": "Podés @mencionar otras cuentas o usar #etiquetas…",
+ "onboarding.profile.save_and_continue": "Guardar y continuar",
+ "onboarding.profile.title": "Configuración del perfil",
+ "onboarding.profile.upload_avatar": "Subir avatar",
+ "onboarding.profile.upload_header": "Subir cabecera",
"onboarding.share.lead": "¡Decile a la gente cómo te pueden encontrar en Mastodon!",
"onboarding.share.message": "¡En #Mastodon soy «{username}»! Podés seguirme desde {url}",
"onboarding.share.next_steps": "Posibles próximos pasos:",
diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json
index aadc901f99039d..aa8a21edb548fb 100644
--- a/app/javascript/mastodon/locales/es-MX.json
+++ b/app/javascript/mastodon/locales/es-MX.json
@@ -479,6 +479,17 @@
"onboarding.follows.empty": "Desafortunadamente, no se pueden mostrar resultados en este momento. Puedes intentar usar la búsqueda o navegar por la página de exploración para encontrar gente a la que seguir, o inténtalo de nuevo más tarde.",
"onboarding.follows.lead": "Tienes que personalizar tu inicio. Cuantas más personas sigas, más activo e interesante será. Estos perfiles pueden ser un buen punto de partida, ¡pero siempre puedes dejar de seguirlos más adelante!",
"onboarding.follows.title": "Popular en Mastodon",
+ "onboarding.profile.discoverable": "Destacar el perfil y las publicaciones en el algoritmo de descubrimiento",
+ "onboarding.profile.display_name": "Nombre a mostrar",
+ "onboarding.profile.display_name_hint": "Tu nombre completo o tu apodo…",
+ "onboarding.profile.indexable": "Incluir publicaciones públicas en los resultados de búsqueda",
+ "onboarding.profile.lead": "Siempre puedes completar esto más tarde en los ajustes, donde hay aún más opciones de personalización disponibles.",
+ "onboarding.profile.note": "Biografía",
+ "onboarding.profile.note_hint": "Puedes @mencionar a otras personas o #hashtags…",
+ "onboarding.profile.save_and_continue": "Guardar y continuar",
+ "onboarding.profile.title": "Configuración del perfil",
+ "onboarding.profile.upload_avatar": "Subir foto de perfil",
+ "onboarding.profile.upload_header": "Subir foto de cabecera",
"onboarding.share.lead": "¡Dile a la gente cómo te pueden encontrar en Mastodon!",
"onboarding.share.message": "¡Soy {username} en #Mastodon! Ven a seguirme en {url}",
"onboarding.share.next_steps": "Posibles siguientes pasos:",
diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json
index f3735d968552fc..5d1aa004b35a4c 100644
--- a/app/javascript/mastodon/locales/es.json
+++ b/app/javascript/mastodon/locales/es.json
@@ -479,6 +479,7 @@
"onboarding.follows.empty": "Desafortunadamente, no se pueden mostrar resultados en este momento. Puedes intentar usar la búsqueda o navegar por la página de exploración para encontrar personas a las que seguir, o inténtalo de nuevo más tarde.",
"onboarding.follows.lead": "Tu línea de inicio es la forma principal de experimentar Mastodon. Cuanta más personas sigas, más activa e interesante será. Para empezar, aquí hay algunas sugerencias:",
"onboarding.follows.title": "Personaliza tu línea de inicio",
+ "onboarding.profile.display_name": "Nombre para mostrar",
"onboarding.share.lead": "¡Cuéntale a otras personas cómo te pueden encontrar en Mastodon!",
"onboarding.share.message": "¡Soy {username} en #Mastodon! Ven a seguirme en {url}",
"onboarding.share.next_steps": "Posibles siguientes pasos:",
diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json
index c4182a073dcd77..3b6d86a9ddef57 100644
--- a/app/javascript/mastodon/locales/et.json
+++ b/app/javascript/mastodon/locales/et.json
@@ -390,7 +390,6 @@
"lists.search": "Otsi enda jälgitavate inimeste hulgast",
"lists.subheading": "Sinu nimekirjad",
"load_pending": "{count, plural, one {# uus kirje} other {# uut kirjet}}",
- "loading_indicator.label": "Laeb..",
"media_gallery.toggle_visible": "{number, plural, one {Varja pilt} other {Varja pildid}}",
"moved_to_account_banner.text": "Kontot {disabledAccount} ei ole praegu võimalik kasutada, sest kolisid kontole {movedToAccount}.",
"mute_modal.duration": "Kestus",
diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json
index 7f109ea0827fad..88f70cffb0b74f 100644
--- a/app/javascript/mastodon/locales/eu.json
+++ b/app/javascript/mastodon/locales/eu.json
@@ -389,8 +389,8 @@
"lists.replies_policy.title": "Erakutsi erantzunak:",
"lists.search": "Bilatu jarraitzen dituzun pertsonen artean",
"lists.subheading": "Zure zerrendak",
- "load_pending": "{count, plural, one {eleentuberri #} other {# elementu berri}}",
- "loading_indicator.label": "Kargatzen...",
+ "load_pending": "{count, plural, one {elementu berri #} other {# elementu berri}}",
+ "loading_indicator.label": "Kargatzen…",
"media_gallery.toggle_visible": "Txandakatu ikusgaitasuna",
"moved_to_account_banner.text": "Zure {disabledAccount} kontua desgaituta dago une honetan, {movedToAccount} kontura aldatu zinelako.",
"mute_modal.duration": "Iraupena",
@@ -479,6 +479,17 @@
"onboarding.follows.empty": "Zoritxarrez, ezin da emaitzik erakutsi orain. Bilaketa erabil dezakezu edo Arakatu orrian jendea bilatu jarraitzeko, edo saiatu geroago.",
"onboarding.follows.lead": "Hasierako orria zuk pertsonalizatzen duzu. Gero eta jende gehiagori jarraitu, orduan eta aktibo eta interesgarriago izango da. Profil hauek egokiak izan daitezke hasteko, beti ere, geroago jarraitzeari utz diezazkiekezu!",
"onboarding.follows.title": "Mastodonen pil-pilean",
+ "onboarding.profile.discoverable": "Ezagutarazi profila eta bidalketak bilaketa algoritmoetan",
+ "onboarding.profile.display_name": "Bistaratzeko izena",
+ "onboarding.profile.display_name_hint": "Zure izena edo ezizena…",
+ "onboarding.profile.indexable": "Gehitu argitalpen publikoak bilaketa-emaitzetan",
+ "onboarding.profile.lead": "Geroagoago bete daiteke konfigurazioan, non pertsonalizatzeko aukera gehiago dauden.",
+ "onboarding.profile.note": "Biografia",
+ "onboarding.profile.note_hint": "Beste pertsona batzuk @aipa ditzakezu edo #traolak erabili…",
+ "onboarding.profile.save_and_continue": "Gorde eta jarraitu",
+ "onboarding.profile.title": "Profilaren konfigurazioa",
+ "onboarding.profile.upload_avatar": "Igo profilaren irudia",
+ "onboarding.profile.upload_header": "Igo profilaren goiburua",
"onboarding.share.lead": "Esan jendeari nola aurki zaitzaketen Mastodonen!",
"onboarding.share.message": "{username} naiz #Mastodon-en! Jarrai nazazu hemen: {url}",
"onboarding.share.next_steps": "Hurrengo urrats posibleak:",
diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json
index 246f218998e1cb..97dae30d4375d2 100644
--- a/app/javascript/mastodon/locales/fa.json
+++ b/app/javascript/mastodon/locales/fa.json
@@ -390,7 +390,7 @@
"lists.search": "جستوجو بین کسانی که پیگرفتهاید",
"lists.subheading": "سیاهههایتان",
"load_pending": "{count, plural, one {# مورد جدید} other {# مورد جدید}}",
- "loading_indicator.label": "بار کردن…",
+ "loading_indicator.label": "در حال بارگذاری…",
"media_gallery.toggle_visible": "{number, plural, one {نهفتن تصویر} other {نهفتن تصاویر}}",
"moved_to_account_banner.text": "حسابتان {disabledAccount} اکنون از کار افتاده؛ چرا که به {movedToAccount} منتقل شدید.",
"mute_modal.duration": "مدت زمان",
@@ -479,6 +479,13 @@
"onboarding.follows.empty": "متأسفانه هماکنون نتیجهای قابل نمایش نیست. میتوانید استفاده از جستوجو یا مرور صفحهٔ کاوش را برای یافتن افرادی برای پیگیری آزموده یا دوباره تلاش کنید.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
+ "onboarding.profile.discoverable": "معرفی نمایه و فرستهها در الگوریتمهای کشف",
+ "onboarding.profile.display_name": "نام نمایشی",
+ "onboarding.profile.display_name_hint": "نام کامل یا نام باحالتان…",
+ "onboarding.profile.note": "درباره شما",
+ "onboarding.profile.note_hint": "میتوانید افراد دیگر را @نامبردن یا #برچسب بزنید…",
+ "onboarding.profile.save_and_continue": "ذخیره کن و ادامه بده",
+ "onboarding.profile.title": "تنظیم نمایه",
"onboarding.share.lead": "بگذارید افراد بدانند چگونه میتوانند در ماستادون بیابندتان!",
"onboarding.share.message": "من {username} روی #ماستودون هستم! مرا در {url} پیبگیرید",
"onboarding.share.next_steps": "گامهای ممکن بعدی:",
diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json
index 9aa2e7355f4149..849a7f463c717c 100644
--- a/app/javascript/mastodon/locales/fi.json
+++ b/app/javascript/mastodon/locales/fi.json
@@ -390,7 +390,7 @@
"lists.search": "Etsi seuraamistasi henkilöistä",
"lists.subheading": "Omat listasi",
"load_pending": "{count, plural, one {# uusi kohde} other {# uutta kohdetta}}",
- "loading_indicator.label": "Ladataan...",
+ "loading_indicator.label": "Ladataan…",
"media_gallery.toggle_visible": "{number, plural, one {Piilota kuva} other {Piilota kuvat}}",
"moved_to_account_banner.text": "Tilisi {disabledAccount} on tällä hetkellä poissa käytöstä, koska teit siirron tiliin {movedToAccount}.",
"mute_modal.duration": "Kesto",
@@ -479,6 +479,17 @@
"onboarding.follows.empty": "Valitettavasti tuloksia ei voida näyttää juuri nyt. Voit kokeilla hakua tai selata tutustumissivua löytääksesi seurattavaa tai yrittää myöhemmin uudelleen.",
"onboarding.follows.lead": "Kokoat oman kotisyötteesi itse. Mitä enemmän ihmisiä seuraat, sitä aktiivisempi ja kiinnostavampi syöte on. Nämä profiilit voivat olla alkuun hyvä lähtökohta — voit aina lopettaa niiden seuraamisen myöhemmin!",
"onboarding.follows.title": "Mukauta kotisyötettäsi",
+ "onboarding.profile.discoverable": "Pidä profiilia ja julkaisuja esillä löytämisalgoritmeissa",
+ "onboarding.profile.display_name": "Näyttönimi",
+ "onboarding.profile.display_name_hint": "Koko nimesi tai lempinimesi…",
+ "onboarding.profile.indexable": "Sisällytä julkiset julkaisut hakutuloksiin",
+ "onboarding.profile.lead": "Voit viimeistellä tämän milloin tahansa asetuksissa, jossa on saatavilla vielä enemmän mukautusvalintoja.",
+ "onboarding.profile.note": "Elämäkerta",
+ "onboarding.profile.note_hint": "Voit @mainita muita käyttäjiä tai #aihetunnisteita…",
+ "onboarding.profile.save_and_continue": "Tallenna ja jatka",
+ "onboarding.profile.title": "Profiilin määritys",
+ "onboarding.profile.upload_avatar": "Lataa profiilikuva",
+ "onboarding.profile.upload_header": "Lataa profiilin otsakekuva",
"onboarding.share.lead": "Kerro ihmisille, kuinka he voivat löytää sinut Mastodonista!",
"onboarding.share.message": "Olen {username} #Mastodonissa! Seuraa minua osoitteessa {url}",
"onboarding.share.next_steps": "Mahdolliset seuraavat vaiheet:",
diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json
index 42a1317db73ccc..61c1287ea53d62 100644
--- a/app/javascript/mastodon/locales/fo.json
+++ b/app/javascript/mastodon/locales/fo.json
@@ -390,7 +390,6 @@
"lists.search": "Leita millum fólk, sum tú fylgir",
"lists.subheading": "Tínir listar",
"load_pending": "{count, plural, one {# nýtt evni} other {# nýggj evni}}",
- "loading_indicator.label": "Innlesi...",
"media_gallery.toggle_visible": "{number, plural, one {Fjal mynd} other {Fjal myndir}}",
"moved_to_account_banner.text": "Konta tín {disabledAccount} er í løtuni óvirkin, tí tú flutti til {movedToAccount}.",
"mute_modal.duration": "Tíðarbil",
diff --git a/app/javascript/mastodon/locales/fr-QC.json b/app/javascript/mastodon/locales/fr-QC.json
index a6dd91becf99b1..e858882f84f0ce 100644
--- a/app/javascript/mastodon/locales/fr-QC.json
+++ b/app/javascript/mastodon/locales/fr-QC.json
@@ -390,7 +390,6 @@
"lists.search": "Rechercher parmi les gens que vous suivez",
"lists.subheading": "Vos listes",
"load_pending": "{count, plural, one {# nouvel élément} other {# nouveaux éléments}}",
- "loading_indicator.label": "Chargement…",
"media_gallery.toggle_visible": "{number, plural, one {Cacher l’image} other {Cacher les images}}",
"moved_to_account_banner.text": "Votre compte {disabledAccount} est actuellement désactivé parce que vous avez déménagé sur {movedToAccount}.",
"mute_modal.duration": "Durée",
diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json
index 0d2ba2bb9b3f46..a7bb4a12fe608d 100644
--- a/app/javascript/mastodon/locales/fr.json
+++ b/app/javascript/mastodon/locales/fr.json
@@ -390,7 +390,6 @@
"lists.search": "Rechercher parmi les gens que vous suivez",
"lists.subheading": "Vos listes",
"load_pending": "{count, plural, one {# nouvel élément} other {# nouveaux éléments}}",
- "loading_indicator.label": "Chargement…",
"media_gallery.toggle_visible": "{number, plural, one {Cacher l’image} other {Cacher les images}}",
"moved_to_account_banner.text": "Votre compte {disabledAccount} est actuellement désactivé parce que vous l'avez déplacé à {movedToAccount}.",
"mute_modal.duration": "Durée",
diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json
index 9d3b4160689744..2128a045be1171 100644
--- a/app/javascript/mastodon/locales/fy.json
+++ b/app/javascript/mastodon/locales/fy.json
@@ -390,7 +390,6 @@
"lists.search": "Sykje nei minsken dy’t jo folgje",
"lists.subheading": "Jo listen",
"load_pending": "{count, plural, one {# nij item} other {# nije items}}",
- "loading_indicator.label": "Lade…",
"media_gallery.toggle_visible": "{number, plural, one {ôfbylding ferstopje} other {ôfbyldingen ferstopje}}",
"moved_to_account_banner.text": "Omdat jo nei {movedToAccount} ferhuze binne is jo account {disabledAccount} op dit stuit útskeakele.",
"mute_modal.duration": "Doer",
diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json
index 388a557e8d5be4..ee6b44c8849fa9 100644
--- a/app/javascript/mastodon/locales/ga.json
+++ b/app/javascript/mastodon/locales/ga.json
@@ -316,7 +316,6 @@
"lists.replies_policy.title": "Taispeáin freagraí:",
"lists.search": "Cuardaigh i measc daoine atá á leanúint agat",
"lists.subheading": "Do liostaí",
- "loading_indicator.label": "Ag lódáil...",
"mute_modal.duration": "Tréimhse",
"mute_modal.hide_notifications": "Cuir póstalacha ón t-úsáideoir seo i bhfolach?",
"mute_modal.indefinite": "Gan téarma",
diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json
index 4f485cfc55d76d..91333c1a0a5773 100644
--- a/app/javascript/mastodon/locales/gd.json
+++ b/app/javascript/mastodon/locales/gd.json
@@ -389,7 +389,6 @@
"lists.search": "Lorg am measg nan daoine a leanas tu",
"lists.subheading": "Na liostaichean agad",
"load_pending": "{count, plural, one {# nì ùr} two {# nì ùr} few {# nithean ùra} other {# nì ùr}}",
- "loading_indicator.label": "’Ga luchdadh…",
"media_gallery.toggle_visible": "{number, plural, 1 {Falaich an dealbh} one {Falaich na dealbhan} two {Falaich na dealbhan} few {Falaich na dealbhan} other {Falaich na dealbhan}}",
"moved_to_account_banner.text": "Tha an cunntas {disabledAccount} agad à comas on a rinn thu imrich gu {movedToAccount}.",
"mute_modal.duration": "Faide",
diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json
index e79e5492649312..7d2c6dab95113e 100644
--- a/app/javascript/mastodon/locales/gl.json
+++ b/app/javascript/mastodon/locales/gl.json
@@ -390,7 +390,6 @@
"lists.search": "Procurar entre as persoas que segues",
"lists.subheading": "As túas listaxes",
"load_pending": "{count, plural, one {# novo elemento} other {# novos elementos}}",
- "loading_indicator.label": "Estase a cargar...",
"media_gallery.toggle_visible": "Agochar {number, plural, one {imaxe} other {imaxes}}",
"moved_to_account_banner.text": "A túa conta {disabledAccount} está actualmente desactivada porque movéchela a {movedToAccount}.",
"mute_modal.duration": "Duración",
diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json
index 485e8313ada910..2e000917091d0f 100644
--- a/app/javascript/mastodon/locales/he.json
+++ b/app/javascript/mastodon/locales/he.json
@@ -390,7 +390,7 @@
"lists.search": "חיפוש בין אנשים שאני עוקב\\ת אחריהם",
"lists.subheading": "הרשימות שלך",
"load_pending": "{count, plural, one {# פריט חדש} other {# פריטים חדשים}}",
- "loading_indicator.label": "טוען...",
+ "loading_indicator.label": "בטעינה…",
"media_gallery.toggle_visible": "{number, plural, one {להסתיר תמונה} two {להסתיר תמונותיים} many {להסתיר תמונות} other {להסתיר תמונות}}",
"moved_to_account_banner.text": "חשבונך {disabledAccount} אינו פעיל כרגע עקב מעבר ל{movedToAccount}.",
"mute_modal.duration": "משך הזמן",
@@ -479,6 +479,17 @@
"onboarding.follows.empty": "למצער, תוצאות לחיפושך אינן בנמצא. ניתן להשתמש בחיפוש או בדף החקירות לשם מציאת אנשים ולעקבם. אפשר גם לנסות שוב אחר כך.",
"onboarding.follows.lead": "אתם אוצרים את הזרם הבייתי שלכם. ככל שתעקבו אחרי יותר אנשים, הוא יהיה עשיר ופעיל יותר. הנה כמה פרופילים להתחיל בהם - תמיד ניתן להפסיק מעקב אחריהם בהמשך!",
"onboarding.follows.title": "פופולארי על מסטודון",
+ "onboarding.profile.discoverable": "הצגת פרופיל והודעות במסך התגליות",
+ "onboarding.profile.display_name": "שם להצגה",
+ "onboarding.profile.display_name_hint": "שמך המלא או כינוי הכיף שלך…",
+ "onboarding.profile.indexable": "הכללת הודעות ציבוריות בתוצאות החיפוש",
+ "onboarding.profile.lead": "תמיד ניתן להשלים זאת אחר כך בהגדרות, שם יש אפילו עוד אפשרויות להתאמה אישית.",
+ "onboarding.profile.note": "אודות",
+ "onboarding.profile.note_hint": "ניתן @לאזכר משתמשים אחרים או #תגיות…",
+ "onboarding.profile.save_and_continue": "לשמור ולהמשיך",
+ "onboarding.profile.title": "הגדרת פרופיל",
+ "onboarding.profile.upload_avatar": "העלאת תמונת פרופיל",
+ "onboarding.profile.upload_header": "העלאת כותרת פרופיל",
"onboarding.share.lead": "כדאי להודיע לחברים היכן למצוא אותך במסטודון!",
"onboarding.share.message": "אני {username} ברשת #מסטודון! בואו לעקוב אחרי בכתובת {url}",
"onboarding.share.next_steps": "לאיפה להמשיך מכאן:",
@@ -518,7 +529,7 @@
"privacy.private.short": "לעוקבים בלבד",
"privacy.public.long": "גלוי לכל",
"privacy.public.short": "פומבי",
- "privacy.unlisted.long": "גלוי לכל, אבל מוסתר מאמצעי גילוי",
+ "privacy.unlisted.long": "גלוי לכל, אבל מוסתר מאמצעי תגלית",
"privacy.unlisted.short": "לא רשום (לא לפיד הכללי)",
"privacy_policy.last_updated": "עודכן לאחרונה {date}",
"privacy_policy.title": "מדיניות פרטיות",
diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json
index 71694db76a050a..f4473b7169be8c 100644
--- a/app/javascript/mastodon/locales/hi.json
+++ b/app/javascript/mastodon/locales/hi.json
@@ -360,7 +360,6 @@
"lists.replies_policy.none": "कोई नहीं",
"lists.replies_policy.title": "इसके जवाब दिखाएं:",
"lists.subheading": "आपकी सूचियाँ",
- "loading_indicator.label": "लोड हो रहा है...",
"mute_modal.duration": "अवधि",
"mute_modal.hide_notifications": "इस सभ्य की ओरसे आनेवाली सूचनाए शांत करे",
"mute_modal.indefinite": "अनिश्चितकालीन",
diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json
index 16d25e784693de..01524e553ba4e4 100644
--- a/app/javascript/mastodon/locales/hr.json
+++ b/app/javascript/mastodon/locales/hr.json
@@ -306,7 +306,6 @@
"lists.replies_policy.none": "Nitko",
"lists.search": "Traži među praćenim ljudima",
"lists.subheading": "Vaše liste",
- "loading_indicator.label": "Učitavanje...",
"media_gallery.toggle_visible": "Sakrij {number, plural, one {sliku} other {slike}}",
"mute_modal.duration": "Trajanje",
"mute_modal.hide_notifications": "Sakrij obavijesti ovog korisnika?",
diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json
index ca202716193122..96fc720a410d70 100644
--- a/app/javascript/mastodon/locales/hu.json
+++ b/app/javascript/mastodon/locales/hu.json
@@ -390,7 +390,7 @@
"lists.search": "Keresés a követett személyek között",
"lists.subheading": "Saját listák",
"load_pending": "{count, plural, one {# új elem} other {# új elem}}",
- "loading_indicator.label": "Betöltés...",
+ "loading_indicator.label": "Betöltés…",
"media_gallery.toggle_visible": "{number, plural, one {Kép elrejtése} other {Képek elrejtése}}",
"moved_to_account_banner.text": "A(z) {disabledAccount} fiókod jelenleg le van tiltva, mert átköltöztél ide: {movedToAccount}.",
"mute_modal.duration": "Időtartam",
@@ -479,6 +479,17 @@
"onboarding.follows.empty": "Sajnos jelenleg nem jeleníthető meg eredmény. Kipróbálhatod a keresést vagy böngészheted a felfedező oldalon a követni kívánt személyeket, vagy próbáld meg később.",
"onboarding.follows.lead": "A saját hírfolyamod az elsődleges tapasztalás a Mastodonon. Minél több embert követsz, annál aktívabb és érdekesebb a dolog. Az induláshoz itt van néhány javaslat:",
"onboarding.follows.title": "Népszerű a Mastodonon",
+ "onboarding.profile.discoverable": "Profil és bejegyzések szerepeltetése a felfedezési algoritmusokban",
+ "onboarding.profile.display_name": "Megjelenített név",
+ "onboarding.profile.display_name_hint": "Teljes név vagy becenév…",
+ "onboarding.profile.indexable": "Nyilvános bejegyzések is a keresési eredményekben",
+ "onboarding.profile.lead": "Ezt később bármikor elvégezhető a beállításoknál, ahol még több testreszabási lehetőség áll rendelkezésre.",
+ "onboarding.profile.note": "Biográfia",
+ "onboarding.profile.note_hint": "@említhetünk másokat vagy #hashtag elemeket…",
+ "onboarding.profile.save_and_continue": "Mentés és folytatás",
+ "onboarding.profile.title": "Profil beüzemelés",
+ "onboarding.profile.upload_avatar": "Profilkép feltöltése",
+ "onboarding.profile.upload_header": "Profil fejléc feltöltése",
"onboarding.share.lead": "Tudassuk az emberekkel, hogyan találhatnak meg a Mastodonon!",
"onboarding.share.message": "{username} vagyok a #Mastodon hálózaton! Kövess itt: {url}.",
"onboarding.share.next_steps": "Lehetséges következő lépések:",
diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json
index 776991b014d0b1..f2548c7d3a9619 100644
--- a/app/javascript/mastodon/locales/hy.json
+++ b/app/javascript/mastodon/locales/hy.json
@@ -314,7 +314,6 @@
"lists.search": "Փնտրել քո հետեւած մարդկանց մէջ",
"lists.subheading": "Քո ցանկերը",
"load_pending": "{count, plural, one {# նոր նիւթ} other {# նոր նիւթ}}",
- "loading_indicator.label": "Բեռնւում է…",
"media_gallery.toggle_visible": "Ցուցադրել/թաքցնել",
"mute_modal.duration": "Տեւողութիւն",
"mute_modal.hide_notifications": "Թաքցնե՞լ ծանուցումներն այս օգտատիրոջից։",
diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json
index 76542cc52c65dd..8ecf36125d8bd0 100644
--- a/app/javascript/mastodon/locales/id.json
+++ b/app/javascript/mastodon/locales/id.json
@@ -353,7 +353,6 @@
"lists.search": "Cari di antara orang yang Anda ikuti",
"lists.subheading": "Daftar Anda",
"load_pending": "{count, plural, other {# item baru}}",
- "loading_indicator.label": "Tunggu sebentar...",
"media_gallery.toggle_visible": "Tampil/Sembunyikan",
"moved_to_account_banner.text": "Akun {disabledAccount} Anda kini dinonaktifkan karena Anda pindah ke {movedToAccount}.",
"mute_modal.duration": "Durasi",
diff --git a/app/javascript/mastodon/locales/ig.json b/app/javascript/mastodon/locales/ig.json
index 201bebc05f8333..c24d28eea905fb 100644
--- a/app/javascript/mastodon/locales/ig.json
+++ b/app/javascript/mastodon/locales/ig.json
@@ -88,7 +88,6 @@
"lists.delete": "Hichapụ ndepụta",
"lists.edit": "Dezie ndepụta",
"lists.subheading": "Ndepụta gị",
- "loading_indicator.label": "Na-adọnye...",
"navigation_bar.about": "Maka",
"navigation_bar.bookmarks": "Ebenrụtụakā",
"navigation_bar.domain_blocks": "Hidden domains",
diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json
index cfe1b4344520a8..552debdb50bdc9 100644
--- a/app/javascript/mastodon/locales/io.json
+++ b/app/javascript/mastodon/locales/io.json
@@ -383,7 +383,6 @@
"lists.search": "Trovez inter personi quon vu sequas",
"lists.subheading": "Vua listi",
"load_pending": "{count, plural, one {# nova kozo} other {# nova kozi}}",
- "loading_indicator.label": "Kargante...",
"media_gallery.toggle_visible": "Chanjar videbleso",
"moved_to_account_banner.text": "Vua konto {disabledAccount} es nune desaktiva pro ke vu movis a {movedToAccount}.",
"mute_modal.duration": "Durado",
diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json
index 0b6a8012adaa78..54123ae4c7d27d 100644
--- a/app/javascript/mastodon/locales/is.json
+++ b/app/javascript/mastodon/locales/is.json
@@ -390,7 +390,7 @@
"lists.search": "Leita meðal þeirra sem þú fylgist með",
"lists.subheading": "Listarnir þínir",
"load_pending": "{count, plural, one {# nýtt atriði} other {# ný atriði}}",
- "loading_indicator.label": "Hleð inn...",
+ "loading_indicator.label": "Hleð inn…",
"media_gallery.toggle_visible": "Víxla sýnileika",
"moved_to_account_banner.text": "Aðgangurinn þinn {disabledAccount} er óvirkur í augnablikinu vegna þess að þú fluttir þig yfir á {movedToAccount}.",
"mute_modal.duration": "Lengd",
@@ -479,6 +479,17 @@
"onboarding.follows.empty": "Því miður er ekki hægt að birta neinar niðurstöður í augnablikinu. Þú getur reynt að nota leitina eða skoðað könnunarsíðuna til að finna fólk til að fylgjast með, nú eða prófað aftur síðar.",
"onboarding.follows.lead": "Þú ræktar heimastreymið þitt. Því fleira fólki sem þú fylgist með, því virkara og áhugaverðara verður það. Að fylgjast með þessum notendum gæti verið ágætt til að byrja með - þú getur alltaf hætt að fylgjast með þeim síðar!",
"onboarding.follows.title": "Vinsælt á Mastodon",
+ "onboarding.profile.discoverable": "Hafa notandasnið og færslur með í reikniritum leitar",
+ "onboarding.profile.display_name": "Birtingarnafn",
+ "onboarding.profile.display_name_hint": "Fullt nafn þitt eða eitthvað til gamans…",
+ "onboarding.profile.indexable": "Hafa opinberar færslur með í leitarniðurstöðum",
+ "onboarding.profile.lead": "Þú getur alltaf klárað þetta seinna í stillingunum, þar sem enn fleiri möguleikar bjóðast á sérsníðingum.",
+ "onboarding.profile.note": "Æviágrip",
+ "onboarding.profile.note_hint": "Þú getur @minnst á annað fólk eða #myllumerki…",
+ "onboarding.profile.save_and_continue": "Vista og halda áfram",
+ "onboarding.profile.title": "Uppsetning notandasniðs",
+ "onboarding.profile.upload_avatar": "Sendu inn auðkennismynd",
+ "onboarding.profile.upload_header": "Sendu inn bakgrunnsmynd í haus notandasniðs",
"onboarding.share.lead": "Láttu fólk vita hvernig það getur fundið þig á Mastodon!",
"onboarding.share.message": "Ég heiti {username} á #Mastodon! Þú getur fylgst með mér á {url}",
"onboarding.share.next_steps": "Möguleg næstu skref:",
diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json
index 4a2f41ce646e4a..284d7739c013c7 100644
--- a/app/javascript/mastodon/locales/it.json
+++ b/app/javascript/mastodon/locales/it.json
@@ -252,7 +252,7 @@
"explore.search_results": "Risultati della ricerca",
"explore.suggested_follows": "Persone",
"explore.title": "Esplora",
- "explore.trending_links": "Novità",
+ "explore.trending_links": "Notizie",
"explore.trending_statuses": "Post",
"explore.trending_tags": "Hashtag",
"filter_modal.added.context_mismatch_explanation": "La categoria di questo filtro non si applica al contesto in cui hai acceduto a questo post. Se desideri che il post sia filtrato anche in questo contesto, dovrai modificare il filtro.",
@@ -390,7 +390,7 @@
"lists.search": "Cerca tra le persone che segui",
"lists.subheading": "Le tue liste",
"load_pending": "{count, plural, one {# nuovo oggetto} other {# nuovi oggetti}}",
- "loading_indicator.label": "Caricamento...",
+ "loading_indicator.label": "Caricamento…",
"media_gallery.toggle_visible": "{number, plural, one {Nascondi immagine} other {Nascondi immagini}}",
"moved_to_account_banner.text": "Il tuo profilo {disabledAccount} è correntemente disabilitato perché ti sei spostato a {movedToAccount}.",
"mute_modal.duration": "Durata",
@@ -479,6 +479,17 @@
"onboarding.follows.empty": "Sfortunatamente, nessun risultato può essere mostrato in questo momento. Puoi provare a utilizzare la ricerca o sfogliare la pagina di esplorazione per trovare persone da seguire, oppure riprova più tardi.",
"onboarding.follows.lead": "La cronologia della tua home è gestita da te. Più persone segui, più attiva e interessante sarà. Questi profili possono essere un buon punto di partenza; puoi sempre smettere di seguirli in seguito!",
"onboarding.follows.title": "Popolare su Mastodon",
+ "onboarding.profile.discoverable": "Include il profilo e i post negli algoritmi di scoperta",
+ "onboarding.profile.display_name": "Nome da visualizzare",
+ "onboarding.profile.display_name_hint": "Il tuo nome completo o il tuo nome divertente…",
+ "onboarding.profile.indexable": "Includi i post pubblici nei risultati di ricerca",
+ "onboarding.profile.lead": "Puoi sempre completarlo in un secondo momento nelle impostazioni, dove sono disponibili ancora più opzioni di personalizzazione.",
+ "onboarding.profile.note": "Biografia",
+ "onboarding.profile.note_hint": "Puoi @menzionare altre persone o #hashtags…",
+ "onboarding.profile.save_and_continue": "Salva e continua",
+ "onboarding.profile.title": "Configurazione del profilo",
+ "onboarding.profile.upload_avatar": "Carica l'immagine del profilo",
+ "onboarding.profile.upload_header": "Carica l'intestazione del profilo",
"onboarding.share.lead": "Fai sapere alle persone come possono trovarti su Mastodon!",
"onboarding.share.message": "Sono {username} su #Mastodon! Vieni a seguirmi su {url}",
"onboarding.share.next_steps": "Possibili passaggi successivi:",
diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json
index 9c74e624ee547e..e19d755d6d8bbd 100644
--- a/app/javascript/mastodon/locales/ja.json
+++ b/app/javascript/mastodon/locales/ja.json
@@ -484,7 +484,7 @@
"lists.search": "フォローしている人の中から検索",
"lists.subheading": "あなたのリスト",
"load_pending": "{count}件の新着",
- "loading_indicator.label": "読み込み中...",
+ "loading_indicator.label": "",
"media_gallery.toggle_visible": "{number, plural, one {画像を閉じる} other {画像を閉じる}}",
"moved_to_account_banner.text": "あなたのアカウント『{disabledAccount}』は『{movedToAccount}』に移動したため現在無効になっています。",
"mute_modal.duration": "ミュートする期間",
diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json
index 256aa93f4a9fe4..875ac3c195a771 100644
--- a/app/javascript/mastodon/locales/ka.json
+++ b/app/javascript/mastodon/locales/ka.json
@@ -165,7 +165,6 @@
"lists.new.title_placeholder": "ახალი სიის სათაური",
"lists.search": "ძებნა ადამიანებს შორის რომელთაც მიჰყვებით",
"lists.subheading": "თქვენი სიები",
- "loading_indicator.label": "იტვირთება...",
"media_gallery.toggle_visible": "ხილვადობის ჩართვა",
"mute_modal.hide_notifications": "დავმალოთ შეტყობინებები ამ მომხმარებლისგან?",
"navigation_bar.blocks": "დაბლოკილი მომხმარებლები",
diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json
index 8f9576c26377dc..e9d4b57de831e3 100644
--- a/app/javascript/mastodon/locales/kab.json
+++ b/app/javascript/mastodon/locales/kab.json
@@ -274,7 +274,6 @@
"lists.search": "Nadi gar yemdanen i teṭṭafaṛeḍ",
"lists.subheading": "Tibdarin-ik·im",
"load_pending": "{count, plural, one {# n uferdis amaynut} other {# n yiferdisen imaynuten}}",
- "loading_indicator.label": "Yessalay-d…",
"media_gallery.toggle_visible": "Ffer {number, plural, one {tugna} other {tugniwin}}",
"mute_modal.duration": "Tanzagt",
"mute_modal.hide_notifications": "Tebɣiḍ ad teffreḍ talɣutin n umseqdac-a?",
diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json
index 6a4b2161b28e23..189d792e38630e 100644
--- a/app/javascript/mastodon/locales/kk.json
+++ b/app/javascript/mastodon/locales/kk.json
@@ -242,7 +242,6 @@
"lists.search": "Сіз іздеген адамдар арасында іздеу",
"lists.subheading": "Тізімдеріңіз",
"load_pending": "{count, plural, one {# жаңа нәрсе} other {# жаңа нәрсе}}",
- "loading_indicator.label": "Жүктеу...",
"media_gallery.toggle_visible": "Көрінуді қосу",
"mute_modal.hide_notifications": "Бұл қолданушы ескертпелерін жасырамыз ба?",
"navigation_bar.blocks": "Бұғатталғандар",
diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json
index 574d8e211bb62a..1420be8e093d8b 100644
--- a/app/javascript/mastodon/locales/ko.json
+++ b/app/javascript/mastodon/locales/ko.json
@@ -479,6 +479,17 @@
"onboarding.follows.empty": "안타깝지만 아직은 아무 것도 보여드릴 수 없습니다. 검색을 이용하거나 발견하기 페이지에서 팔로우 할 사람을 찾을 수 있습니다. 아니면 잠시 후에 다시 시도하세요.",
"onboarding.follows.lead": "홈 피드는 마스토돈을 경험하는 주된 경로입니다. 더 많은 사람들을 팔로우 할수록 더 활발하고 흥미로워질 것입니다. 여기 시작을 위한 몇몇 추천을 드립니다:",
"onboarding.follows.title": "내게 맞는 홈 피드 꾸미기",
+ "onboarding.profile.discoverable": "발견하기 알고리즘에 프로필과 게시물을 추천하기",
+ "onboarding.profile.display_name": "표시되는 이름",
+ "onboarding.profile.display_name_hint": "진짜 이름 또는 재미난 이름…",
+ "onboarding.profile.indexable": "공개 게시물을 검색 결과에 포함시키기",
+ "onboarding.profile.lead": "언제든지 나중에 설정 메뉴에서 마저 할 수 있고, 그곳에서 더 많은 맞춤 옵션을 고를 수 있습니다.",
+ "onboarding.profile.note": "자기소개",
+ "onboarding.profile.note_hint": "남을 @mention 하거나 #hashtag 태그를 달 수 있습니다…",
+ "onboarding.profile.save_and_continue": "저장 및 계속",
+ "onboarding.profile.title": "프로필 설정",
+ "onboarding.profile.upload_avatar": "프로필 사진 업로드",
+ "onboarding.profile.upload_header": "프로필 헤더 업로드",
"onboarding.share.lead": "여러 사람에게 마스토돈에서 나를 찾을 수 있는 방법을 알려주세요!",
"onboarding.share.message": "#마스토돈 이용하는 {username}입니다! {url} 에서 저를 팔로우 해보세요",
"onboarding.share.next_steps": "할만한 다음 단계:",
diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json
index 8c9aaf3e8c834a..b94054267741c3 100644
--- a/app/javascript/mastodon/locales/ku.json
+++ b/app/javascript/mastodon/locales/ku.json
@@ -339,7 +339,6 @@
"lists.search": "Di navbera kesên ku te dişopînin bigere",
"lists.subheading": "Lîsteyên te",
"load_pending": "{count, plural, one {# hêmaneke nû} other {#hêmaneke nû}}",
- "loading_indicator.label": "Tê barkirin...",
"media_gallery.toggle_visible": "{number, plural, one {Wêneyê veşêre} other {Wêneyan veşêre}}",
"moved_to_account_banner.text": "Ajimêrê te {disabledAccount} niha neçalak e ji ber ku te bar kir bo {movedToAccount}.",
"mute_modal.duration": "Dem",
diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json
index 6b46d823139183..ca08ca836ebbd0 100644
--- a/app/javascript/mastodon/locales/kw.json
+++ b/app/javascript/mastodon/locales/kw.json
@@ -235,7 +235,6 @@
"lists.search": "Hwilas yn-mysk tus a holyewgh",
"lists.subheading": "Agas rolyow",
"load_pending": "{count, plural, one {# daklennowydh} other {# a daklennow nowydh}}",
- "loading_indicator.label": "Ow karga...",
"media_gallery.toggle_visible": "Hide {number, plural, one {aven} other {aven}}",
"mute_modal.duration": "Duryans",
"mute_modal.hide_notifications": "Kudha gwarnyansow a'n devnydhyer ma?",
diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json
index 5cdc575deefe2f..21aa797b47a27c 100644
--- a/app/javascript/mastodon/locales/lt.json
+++ b/app/javascript/mastodon/locales/lt.json
@@ -1,7 +1,7 @@
{
"about.blocks": "Prižiūrimi serveriai",
"about.contact": "Kontaktuoti:",
- "about.disclaimer": "Mastodon – nemokama atvirojo šaltinio programa ir Mastodon gGmbH prekės ženklas.",
+ "about.disclaimer": "Mastodon – nemokama atvirojo kodo programa ir Mastodon gGmbH prekės ženklas.",
"about.domain_blocks.no_reason_available": "Priežastis nežinoma",
"about.domain_blocks.preamble": "Mastodon paprastai leidžia peržiūrėti turinį ir bendrauti su naudotojais iš bet kurio kito fediverse esančio serverio. Šios yra išimtys, kurios buvo padarytos šiame konkrečiame serveryje.",
"about.domain_blocks.silenced.explanation": "Paprastai nematysi profilių ir turinio iš šio serverio, nebent jį aiškiai ieškosi arba pasirinksi jį sekdamas (-a).",
@@ -26,6 +26,7 @@
"account.domain_blocked": "Užblokuotas domenas",
"account.edit_profile": "Redaguoti profilį",
"account.enable_notifications": "Pranešti man, kai @{name} paskelbia",
+ "account.endorse": "Savybė profilyje",
"account.featured_tags.last_status_at": "Paskutinį kartą paskelbta {date}",
"account.featured_tags.last_status_never": "Nėra įrašų",
"account.follow": "Sekti",
@@ -33,28 +34,46 @@
"account.followers.empty": "Šio naudotojo dar niekas neseka.",
"account.followers_counter": "{count, plural, one {{counter} sekėjas (-a)} few {{counter} sekėjai} many {{counter} sekėjo} other {{counter} sekėjų}}",
"account.following": "Seka",
- "account.follows.empty": "Šis naudotojas (-a) dar nieko neseka.",
+ "account.follows.empty": "Šis (-i) naudotojas (-a) dar nieko neseka.",
"account.follows_you": "Seka tave",
"account.go_to_profile": "Eiti į profilį",
"account.in_memoriam": "Atminimui.",
"account.joined_short": "Prisijungė",
"account.languages": "Keisti prenumeruojamas kalbas",
+ "account.link_verified_on": "Šios nuorodos nuosavybė buvo patikrinta {date}",
"account.locked_info": "Šios paskyros privatumo būsena nustatyta kaip užrakinta. Savininkas (-ė) rankiniu būdu peržiūri, kas gali sekti.",
"account.media": "Medija",
"account.mention": "Paminėti @{name}",
"account.moved_to": "{name} nurodė, kad dabar jų nauja paskyra yra:",
"account.mute": "Užtildyti @{name}",
+ "account.mute_notifications_short": "Nutildyti pranešimus",
+ "account.mute_short": "Nutildyti",
"account.muted": "Užtildytas",
- "account.posts": "Toots",
- "account.posts_with_replies": "Toots and replies",
- "account.report": "Pranešti apie @{name}",
- "account.requested": "Awaiting approval",
+ "account.no_bio": "Nėra pateikto aprašymo.",
+ "account.open_original_page": "Atidaryti originalinį tinklalapį",
+ "account.posts": "Įrašai",
+ "account.posts_with_replies": "Įrašai ir atsakymai",
+ "account.report": "Pranešti @{name}",
+ "account.requested": "Laukiama patvirtinimo. Spausk, kad atšaukti sekimo užklausą.",
+ "account.requested_follow": "{name} paprašė tave sekti",
+ "account.share": "Bendrinti @{name} profilį",
"account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
"account.unblock_domain": "Unhide {domain}",
"account.unblock_short": "Atblokuoti",
"account.unfollow": "Nebesekti",
+ "account.unmute": "Atitildyti @{name}",
+ "account.unmute_notifications_short": "Atitildyti pranešimus",
"account.unmute_short": "Atitildyti",
- "account_note.placeholder": "Click to add a note",
+ "account_note.placeholder": "Spausk norėdamas (-a) pridėti pastabą",
+ "admin.dashboard.retention.average": "Vidurkis",
+ "admin.dashboard.retention.cohort": "Registravimo mėnuo",
+ "admin.dashboard.retention.cohort_size": "Nauji naudotojai",
+ "admin.impact_report.instance_accounts": "Paskyrų profiliai, kuriuos tai ištrintų",
+ "admin.impact_report.instance_followers": "Sekėjai, kuriuos prarastų mūsų naudotojai",
+ "admin.impact_report.instance_follows": "Sekėjai, kuriuos prarastų jų naudotojai",
+ "admin.impact_report.title": "Poveikio apibendrinimas",
+ "alert.rate_limited.message": "Pabandyk vėliau po {retry_time, time, medium}.",
+ "alert.rate_limited.title": "Spartos ribojimas",
"alert.unexpected.message": "Įvyko netikėta klaida.",
"alert.unexpected.title": "Ups!",
"announcement.announcement": "Skelbimas",
@@ -65,6 +84,14 @@
"bundle_column_error.copy_stacktrace": "Kopijuoti klaidos ataskaitą",
"bundle_column_error.error.body": "Užklausos puslapio nepavyko atvaizduoti. Tai gali būti dėl mūsų kodo klaidos arba naršyklės suderinamumo problemos.",
"bundle_column_error.error.title": "O, ne!",
+ "bundle_column_error.network.body": "Bandant užkrauti šį puslapį įvyko klaida. Tai galėjo atsitikti dėl laikinos tavo interneto ryšio arba šio serverio problemos.",
+ "bundle_column_error.network.title": "Tinklo klaida",
+ "bundle_column_error.retry": "Bandyti dar kartą",
+ "bundle_column_error.return": "Grįžti į pradžią",
+ "bundle_column_error.routing.body": "Prašyto puslapio nepavyko rasti. Ar esi tikras (-a), kad adreso juostoje nurodytas URL adresas yra teisingas?",
+ "bundle_column_error.routing.title": "404",
+ "bundle_modal_error.close": "Uždaryti",
+ "closed_registrations_modal.find_another_server": "Rasti kitą serverį",
"column.domain_blocks": "Hidden domains",
"column.lists": "Sąrašai",
"column.mutes": "Užtildyti vartotojai",
@@ -81,18 +108,32 @@
"compose.published.body": "Įrašas paskelbtas.",
"compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
"compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.",
- "compose_form.placeholder": "What is on your mind?",
+ "compose_form.placeholder": "Kas tavo mintyse?",
+ "compose_form.poll.add_option": "Pridėti pasirinkimą",
+ "compose_form.poll.duration": "Apklausos trukmė",
+ "compose_form.poll.option_placeholder": "Pasirinkimas {number}",
+ "compose_form.poll.remove_option": "Pašalinti šį pasirinkimą",
+ "compose_form.poll.switch_to_multiple": "Keisti apklausą, kad būtų galima pasirinkti kelis pasirinkimus",
"compose_form.publish_form": "Publish",
"compose_form.sensitive.hide": "{count, plural, one {Žymėti mediją kaip jautrią} few {Žymėti medijas kaip jautrias} many {Žymėti medijos kaip jautrios} other {Žymėti medijų kaip jautrių}}",
"compose_form.sensitive.marked": "{count, plural, one {Medija pažymėta kaip jautri} few {Medijos pažymėtos kaip jautrios} many {Medijos pažymėta kaip jautrios} other {Medijų pažymėtos kaip jautrios}}",
"compose_form.sensitive.unmarked": "{count, plural, one {Medija nepažymėta kaip jautri} few {Medijos nepažymėtos kaip jautrios} many {Medijos nepažymėta kaip jautri} other {Medijų nepažymėta kaip jautrios}}",
"compose_form.spoiler.marked": "Text is hidden behind warning",
- "compose_form.spoiler.unmarked": "Text is not hidden",
+ "compose_form.spoiler.unmarked": "Pridėti turinio įspėjimą",
+ "compose_form.spoiler_placeholder": "Rašyk savo įspėjimą čia",
+ "confirmation_modal.cancel": "Atšaukti",
+ "confirmations.block.block_and_report": "Blokuoti ir pranešti",
+ "confirmations.block.confirm": "Blokuoti",
+ "confirmations.block.message": "Ar tikrai nori užblokuoti {name}?",
"confirmations.delete.confirm": "Ištrinti",
"confirmations.delete.message": "Are you sure you want to delete this status?",
"confirmations.discard_edit_media.confirm": "Atmesti",
"confirmations.discard_edit_media.message": "Turi neišsaugotų medijos aprašymo ar peržiūros pakeitimų, vis tiek juos atmesti?",
"confirmations.domain_block.confirm": "Hide entire domain",
+ "confirmations.logout.confirm": "Atsijungti",
+ "confirmations.logout.message": "Ar tikrai nori atsijungti?",
+ "confirmations.mute.confirm": "Nutildyti",
+ "confirmations.mute.explanation": "Tai paslėps jų įrašus ir įrašus, kuriuose jie menėmi, tačiau jie vis tiek galės matyti tavo įrašus ir sekti.",
"confirmations.reply.confirm": "Atsakyti",
"confirmations.reply.message": "Atsakydamas (-a) dabar perrašysi šiuo metu rašomą žinutę. Ar tikrai nori tęsti?",
"confirmations.unfollow.confirm": "Nebesekti",
@@ -151,6 +192,7 @@
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
"keyboard_shortcuts.up": "to move up in the list",
"lightbox.close": "Uždaryti",
+ "loading_indicator.label": "Kraunama…",
"media_gallery.toggle_visible": "{number, plural, one {Slėpti vaizdą} few {Slėpti vaizdus} many {Slėpti vaizdo} other {Slėpti vaizdų}}",
"navigation_bar.compose": "Compose new toot",
"navigation_bar.domain_blocks": "Hidden domains",
@@ -177,6 +219,16 @@
"onboarding.actions.go_to_home": "Go to your home feed",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
+ "onboarding.profile.display_name": "Rodomas vardas",
+ "onboarding.profile.display_name_hint": "Tavo pilnas vardas arba linksmas vardas…",
+ "onboarding.profile.indexable": "Įtraukti viešus įrašus į paieškos rezultatus",
+ "onboarding.profile.lead": "Gali visada tai užbaigti vėliau nustatymuose, kur yra dar daugiau pritaikymo parinkčių.",
+ "onboarding.profile.note": "Biografija",
+ "onboarding.profile.note_hint": "Gali @paminėti kitus žmones arba #saitažodžius…",
+ "onboarding.profile.save_and_continue": "Išsaugoti ir tęsti",
+ "onboarding.profile.title": "Profilio konfigūravimas",
+ "onboarding.profile.upload_avatar": "Įkelti profilio nuotrauką",
+ "onboarding.profile.upload_header": "Įkelti profilio antraštę",
"onboarding.share.message": "Aš {username} #Mastodon! Ateik sekti manęs adresu {url}",
"onboarding.start.lead": "Dabar esi Mastodon dalis – unikalios decentralizuotos socialinės žiniasklaidos platformos, kurioje tu, o ne algoritmas, pats nustatai savo patirtį. Pradėkime tavo kelionę šioje naujoje socialinėje erdvėje:",
"onboarding.start.skip": "Want to skip right ahead?",
@@ -219,6 +271,8 @@
"trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {# days}}",
"upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Describe for the visually impaired",
+ "upload_form.description_missing": "Nėra pridėto aprašymo",
+ "upload_form.edit": "Redaguoti",
"upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.edit_media": "Redaguoti mediją",
"upload_progress.label": "Uploading…"
diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json
index 5d681b8291d0cb..63ec6275ba539b 100644
--- a/app/javascript/mastodon/locales/lv.json
+++ b/app/javascript/mastodon/locales/lv.json
@@ -390,7 +390,6 @@
"lists.search": "Meklēt starp cilvēkiem, kuriem tu seko",
"lists.subheading": "Tavi saraksti",
"load_pending": "{count, plural, one {# jauna lieta} other {# jaunas lietas}}",
- "loading_indicator.label": "Ielādē...",
"media_gallery.toggle_visible": "{number, plural, one {Slēpt attēlu} other {Slēpt attēlus}}",
"moved_to_account_banner.text": "Tavs konts {disabledAccount} pašlaik ir atspējots, jo pārcēlies uz kontu {movedToAccount}.",
"mute_modal.duration": "Ilgums",
diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json
index 6bf04ce7588542..b00cedc6fcc9d8 100644
--- a/app/javascript/mastodon/locales/ml.json
+++ b/app/javascript/mastodon/locales/ml.json
@@ -237,7 +237,6 @@
"lists.replies_policy.none": "ആരുമില്ല",
"lists.replies_policy.title": "ഇതിനുള്ള മറുപടികൾ കാണിക്കുക:",
"lists.subheading": "എന്റെ പട്ടികകൾ",
- "loading_indicator.label": "ലോഡിംഗ്...",
"mute_modal.duration": "കാലാവധി",
"mute_modal.indefinite": "അനിശ്ചിതകാല",
"navigation_bar.blocks": "തടയപ്പെട്ട ഉപയോക്താക്കൾ",
diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json
index ef0efbdece4380..75b75375b71cd9 100644
--- a/app/javascript/mastodon/locales/mr.json
+++ b/app/javascript/mastodon/locales/mr.json
@@ -196,7 +196,6 @@
"lists.search": "तुम्ही फॉलो करत असलेल्या लोकांमध्ये शोधा",
"lists.subheading": "तुमच्या याद्या",
"load_pending": "{count, plural, one {# new item} other {# new items}}",
- "loading_indicator.label": "लोड करत आहे...",
"navigation_bar.compose": "Compose new toot",
"navigation_bar.domain_blocks": "Hidden domains",
"navigation_bar.pins": "Pinned toots",
diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json
index a3bbd0067d242b..724e07ae76adc3 100644
--- a/app/javascript/mastodon/locales/ms.json
+++ b/app/javascript/mastodon/locales/ms.json
@@ -386,7 +386,6 @@
"lists.search": "Cari dalam kalangan orang yang anda ikuti",
"lists.subheading": "Senarai anda",
"load_pending": "{count, plural, one {# item baharu} other {# item baharu}}",
- "loading_indicator.label": "Memuatkan...",
"media_gallery.toggle_visible": "{number, plural, other {Sembunyikan imej}}",
"moved_to_account_banner.text": "Akaun anda {disabledAccount} kini dinyahdayakan kerana anda berpindah ke {movedToAccount}.",
"mute_modal.duration": "Tempoh",
diff --git a/app/javascript/mastodon/locales/my.json b/app/javascript/mastodon/locales/my.json
index 103f4e0f8d657e..4078a4c066f480 100644
--- a/app/javascript/mastodon/locales/my.json
+++ b/app/javascript/mastodon/locales/my.json
@@ -389,7 +389,6 @@
"lists.search": "မိမိဖောလိုးထားသူများမှရှာဖွေမည်",
"lists.subheading": "သင့်၏စာရင်းများ",
"load_pending": "{count, plural, one {# new item} other {# new items}}",
- "loading_indicator.label": "လုပ်ဆောင်နေသည်…",
"media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}",
"moved_to_account_banner.text": "{movedToAccount} အကောင့်သို့ပြောင်းလဲထားသဖြင့် {disabledAccount} အကောင့်မှာပိတ်ထားသည်",
"mute_modal.duration": "ကြာချိန်",
diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json
index 131d2e4aa013f8..6f941999f6ec7a 100644
--- a/app/javascript/mastodon/locales/nl.json
+++ b/app/javascript/mastodon/locales/nl.json
@@ -479,6 +479,17 @@
"onboarding.follows.empty": "Helaas kunnen op dit moment geen resultaten worden getoond. Je kunt proberen te zoeken of op de verkenningspagina te bladeren om mensen te vinden die je kunt volgen, of probeer het later opnieuw.",
"onboarding.follows.lead": "Jouw starttijdlijn is de belangrijkste manier om Mastodon te ervaren. Hoe meer mensen je volgt, hoe actiever en interessanter het zal zijn. Om te beginnen, zijn hier enkele suggesties:",
"onboarding.follows.title": "Je starttijdlijn aan jouw wensen aanpassen",
+ "onboarding.profile.discoverable": "Profiel en berichten laten uitlichten in ontdekkingsalgoritmes",
+ "onboarding.profile.display_name": "Weergavenaam",
+ "onboarding.profile.display_name_hint": "Jouw volledige naam of een leuke bijnaam…",
+ "onboarding.profile.indexable": "Openbare berichten in zoekresultaten opnemen",
+ "onboarding.profile.lead": "Je kunt dit later altijd aanvullen in de instellingen, waar nog meer aanpassingsopties beschikbaar zijn.",
+ "onboarding.profile.note": "Biografie",
+ "onboarding.profile.note_hint": "Je kunt andere mensen @vermelden of #hashtags gebruiken…",
+ "onboarding.profile.save_and_continue": "Opslaan en doorgaan",
+ "onboarding.profile.title": "Profiel instellen",
+ "onboarding.profile.upload_avatar": "Profielfoto uploaden",
+ "onboarding.profile.upload_header": "Kop voor het profiel uploaden",
"onboarding.share.lead": "Laat mensen weten hoe ze je kunnen vinden op Mastodon!",
"onboarding.share.message": "Ik ben {username} op #Mastodon! Volg mij op {url}",
"onboarding.share.next_steps": "Mogelijke volgende stappen:",
diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json
index aa30aef7d264fc..a3402d66084b50 100644
--- a/app/javascript/mastodon/locales/nn.json
+++ b/app/javascript/mastodon/locales/nn.json
@@ -390,7 +390,7 @@
"lists.search": "Søk blant folk du fylgjer",
"lists.subheading": "Listene dine",
"load_pending": "{count, plural, one {# nytt element} other {# nye element}}",
- "loading_indicator.label": "Lastar...",
+ "loading_indicator.label": "Laster…",
"media_gallery.toggle_visible": "{number, plural, one {Skjul bilete} other {Skjul bilete}}",
"moved_to_account_banner.text": "Kontoen din, {disabledAccount} er for tida deaktivert fordi du har flytta til {movedToAccount}.",
"mute_modal.duration": "Varigheit",
@@ -479,6 +479,17 @@
"onboarding.follows.empty": "Me kan ikkje visa deg nokon resultat no. Du kan prøva å søkja eller bla gjennom utforsk-sida for å finna folk å fylgja, eller du kan prøva att seinare.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
+ "onboarding.profile.discoverable": "Fremhevede profiler og innlegg i oppdagelsealgoritmer",
+ "onboarding.profile.display_name": "Visningsnavn",
+ "onboarding.profile.display_name_hint": "Ditt fulle navn eller ditt morsomme navn…",
+ "onboarding.profile.indexable": "Inkluder offentlige innlegg i søkeresultatene",
+ "onboarding.profile.lead": "Du kan alltid fullføre dette senere i innstillingene, der enda flere tilpasningsalternativer er tilgjengelige.",
+ "onboarding.profile.note": "Om meg",
+ "onboarding.profile.note_hint": "Du kan @nevne andre eller #emneknagger…",
+ "onboarding.profile.save_and_continue": "Lagre og fortsett",
+ "onboarding.profile.title": "Konfigurering av profil",
+ "onboarding.profile.upload_avatar": "Last opp profilbilde",
+ "onboarding.profile.upload_header": "Last opp profiltoppbilde",
"onboarding.share.lead": "La folk vita korleis dei kan finna deg på Mastodon!",
"onboarding.share.message": "Eg er {username} på #Mastodon! Du kan fylgja meg på {url}",
"onboarding.share.next_steps": "Dette kan du gjera no:",
diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json
index 7421c780f52fc9..fe3979f0fec73e 100644
--- a/app/javascript/mastodon/locales/no.json
+++ b/app/javascript/mastodon/locales/no.json
@@ -390,7 +390,7 @@
"lists.search": "Søk blant personer du følger",
"lists.subheading": "Dine lister",
"load_pending": "{count, plural,one {# ny gjenstand} other {# nye gjenstander}}",
- "loading_indicator.label": "Laster...",
+ "loading_indicator.label": "Laster…",
"media_gallery.toggle_visible": "Veksle synlighet",
"moved_to_account_banner.text": "Din konto {disabledAccount} er for øyeblikket deaktivert fordi du flyttet til {movedToAccount}.",
"mute_modal.duration": "Varighet",
@@ -479,6 +479,17 @@
"onboarding.follows.empty": "Dessverre kan ingen resultater vises akkurat nå. Du kan prøve å bruke søk eller bla gjennom utforske-siden for å finne folk å følge, eller prøve igjen senere.",
"onboarding.follows.lead": "Hjem-skjermen din er den viktigste måten å oppleve Mastodon på. Jo flere du følger, jo mer aktiv og interessant blir det. For å komme i gang, er her noen forslag:",
"onboarding.follows.title": "Populært på Mastodon",
+ "onboarding.profile.discoverable": "Fremhevede profiler og innlegg i oppdagelsealgoritmer",
+ "onboarding.profile.display_name": "Visningsnavn",
+ "onboarding.profile.display_name_hint": "Ditt fulle navn eller ditt morsomme navn…",
+ "onboarding.profile.indexable": "Inkluder offentlige innlegg i søkeresultatene",
+ "onboarding.profile.lead": "Du kan alltid fullføre dette senere i innstillingene, der enda flere tilpasningsalternativer er tilgjengelige.",
+ "onboarding.profile.note": "Om meg",
+ "onboarding.profile.note_hint": "Du kan @nevne andre eller #emneknagger…",
+ "onboarding.profile.save_and_continue": "Lagre og fortsett",
+ "onboarding.profile.title": "Konfigurering av profil",
+ "onboarding.profile.upload_avatar": "Last opp profilbilde",
+ "onboarding.profile.upload_header": "Last opp profiltoppbilde",
"onboarding.share.lead": "La folk vite hvordan de kan finne deg på Mastodon!",
"onboarding.share.message": "Jeg er {username} på #Mastodon! Kom og følg meg på {url}",
"onboarding.share.next_steps": "Mulige neste trinn:",
diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json
index 6b82654500fdd4..3812057fb040e9 100644
--- a/app/javascript/mastodon/locales/oc.json
+++ b/app/javascript/mastodon/locales/oc.json
@@ -340,7 +340,6 @@
"lists.search": "Cercar demest lo mond que seguètz",
"lists.subheading": "Vòstras listas",
"load_pending": "{count, plural, one {# nòu element} other {# nòu elements}}",
- "loading_indicator.label": "Cargament…",
"media_gallery.toggle_visible": "Modificar la visibilitat",
"mute_modal.duration": "Durada",
"mute_modal.hide_notifications": "Rescondre las notificacions d’aquesta persona ?",
diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json
index 371f9622d2c8d2..7faf279719dee5 100644
--- a/app/javascript/mastodon/locales/pa.json
+++ b/app/javascript/mastodon/locales/pa.json
@@ -122,7 +122,6 @@
"lightbox.next": "ਅਗਲੀ",
"lightbox.previous": "ਪਿਛਲੀ",
"lists.delete": "ਸੂਚੀ ਮਿਟਾਓ",
- "loading_indicator.label": "ਲੋਡ ਹੋ ਰਿਹਾ ਹੈ...",
"mute_modal.duration": "ਮਿਆਦ",
"navigation_bar.about": "ਸਾਡੇ ਬਾਰੇ",
"navigation_bar.bookmarks": "ਬੁੱਕਮਾਰਕ",
diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json
index 643f78a8841ad9..a1cc0e26e69cfc 100644
--- a/app/javascript/mastodon/locales/pl.json
+++ b/app/javascript/mastodon/locales/pl.json
@@ -479,6 +479,17 @@
"onboarding.follows.empty": "Niestety w tej chwili nie można przedstawić żadnych wyników. Możesz spróbować wyszukać lub przeglądać stronę, aby znaleźć osoby do śledzenia, lub spróbować ponownie później.",
"onboarding.follows.lead": "Zarządasz swoim własnym kanałem. Im więcej ludzi śledzisz, tym bardziej aktywny i ciekawy będzie Twój kanał. Te profile mogą być dobrym punktem wyjścia— możesz przestać je obserwować w dowolnej chwili!",
"onboarding.follows.title": "Popularne na Mastodonie",
+ "onboarding.profile.discoverable": "Udostępniaj profil i wpisy funkcjom odkrywania",
+ "onboarding.profile.display_name": "Nazwa wyświetlana",
+ "onboarding.profile.display_name_hint": "Twoje imię lub pseudonim…",
+ "onboarding.profile.indexable": "Pokaż publiczne wpisy w wynikach wyszukiwania",
+ "onboarding.profile.lead": "Możesz wypełnić te dane później w menu ustawień, gdzie dostępnych jest jeszcze więcej opcji.",
+ "onboarding.profile.note": "O mnie",
+ "onboarding.profile.note_hint": "Możesz @wspomnieć użytkowników albo #hasztagi…",
+ "onboarding.profile.save_and_continue": "Zapisz i kontynuuj",
+ "onboarding.profile.title": "Ustawienia profilu",
+ "onboarding.profile.upload_avatar": "Dodaj zdjęcie profilowe",
+ "onboarding.profile.upload_header": "Dodaj zdjęcie nagłówkowe",
"onboarding.share.lead": "Daj znać ludziom, jak mogą cię znaleźć na Mastodonie!",
"onboarding.share.message": "Jestem {username} na #Mastodon! Śledź mnie tutaj {url}",
"onboarding.share.next_steps": "Możliwe dalsze kroki:",
diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json
index 9c09e2d7199d4f..7ce63e9b1a640d 100644
--- a/app/javascript/mastodon/locales/pt-BR.json
+++ b/app/javascript/mastodon/locales/pt-BR.json
@@ -390,7 +390,6 @@
"lists.search": "Procurar entre as pessoas que segue",
"lists.subheading": "Suas listas",
"load_pending": "{count, plural, one {# novo item} other {# novos items}}",
- "loading_indicator.label": "Carregando...",
"media_gallery.toggle_visible": "{number, plural, one {Ocultar mídia} other {Ocultar mídias}}",
"moved_to_account_banner.text": "Sua conta {disabledAccount} está desativada porque você a moveu para {movedToAccount}.",
"mute_modal.duration": "Duração",
diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json
index 988bec9b03bde4..69e804878bee7c 100644
--- a/app/javascript/mastodon/locales/pt-PT.json
+++ b/app/javascript/mastodon/locales/pt-PT.json
@@ -390,7 +390,7 @@
"lists.search": "Pesquisa entre as pessoas que segues",
"lists.subheading": "As tuas listas",
"load_pending": "{count, plural, one {# novo item} other {# novos itens}}",
- "loading_indicator.label": "A carregar...",
+ "loading_indicator.label": "A carregar…",
"media_gallery.toggle_visible": "Alternar visibilidade",
"moved_to_account_banner.text": "A sua conta {disabledAccount} está, no momento, desativada, porque você migrou para {movedToAccount}.",
"mute_modal.duration": "Duração",
@@ -479,6 +479,17 @@
"onboarding.follows.empty": "Infelizmente, não é possível mostrar resultados neste momento. Pode tentar utilizar a pesquisa ou navegar na página \"Explorar\" para encontrar pessoas para seguir ou tentar novamente mais tarde.",
"onboarding.follows.lead": "Você personaliza a sua própria página inicial. Quanto mais pessoas seguir, mais ativa e interessante ela será. Estes perfis podem ser um bom ponto de partida - pode sempre deixar de os seguir mais tarde!",
"onboarding.follows.title": "Popular no Mastodon",
+ "onboarding.profile.discoverable": "Destacar perfil e publicações nos algoritmos de descoberta",
+ "onboarding.profile.display_name": "Nome a apresentar",
+ "onboarding.profile.display_name_hint": "O seu nome completo ou o seu nome divertido…",
+ "onboarding.profile.indexable": "Incluir publicações públicas nos resultados de pesquisa",
+ "onboarding.profile.lead": "Pode sempre completar isto mais tarde, nas configurações, onde ainda estão disponíveis mais opções de personalização.",
+ "onboarding.profile.note": "Bio",
+ "onboarding.profile.note_hint": "Pode @mencionar outras pessoas ou #hashtags…",
+ "onboarding.profile.save_and_continue": "Guardar e continuar",
+ "onboarding.profile.title": "Configuração do perfil",
+ "onboarding.profile.upload_avatar": "Carregar foto de perfil",
+ "onboarding.profile.upload_header": "Carregar cabeçalho do perfil",
"onboarding.share.lead": "Deixe as pessoas saber como o podem encontrar no Mastodon!",
"onboarding.share.message": "Eu sou {username} no #Mastodon! Venha seguir-me em {url}",
"onboarding.share.next_steps": "Próximos passos possíveis:",
diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json
index f0e84463b212d0..5355f9935aee41 100644
--- a/app/javascript/mastodon/locales/ro.json
+++ b/app/javascript/mastodon/locales/ro.json
@@ -353,7 +353,6 @@
"lists.search": "Caută printre persoanele la care ești abonat",
"lists.subheading": "Listele tale",
"load_pending": "{count, plural, one {# element nou} other {# elemente noi}}",
- "loading_indicator.label": "Se încarcă...",
"media_gallery.toggle_visible": "{number, plural, one {Ascunde imaginea} other {Ascunde imaginile}}",
"moved_to_account_banner.text": "Contul tău {disabledAccount} este în acest moment dezactivat deoarece te-ai mutat la {movedToAccount}.",
"mute_modal.duration": "Durata",
diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json
index 69db89dc86f0b3..5c98d906b623be 100644
--- a/app/javascript/mastodon/locales/ru.json
+++ b/app/javascript/mastodon/locales/ru.json
@@ -389,7 +389,6 @@
"lists.search": "Искать среди подписок",
"lists.subheading": "Ваши списки",
"load_pending": "{count, plural, one {# новый элемент} few {# новых элемента} other {# новых элементов}}",
- "loading_indicator.label": "Загрузка...",
"media_gallery.toggle_visible": "Показать/скрыть {number, plural, =1 {изображение} other {изображения}}",
"moved_to_account_banner.text": "Ваша учетная запись {disabledAccount} в настоящее время заморожена, потому что вы переехали на {movedToAccount}.",
"mute_modal.duration": "Продолжительность",
diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json
index cb92914e50efbc..59379343b9cd59 100644
--- a/app/javascript/mastodon/locales/sa.json
+++ b/app/javascript/mastodon/locales/sa.json
@@ -345,7 +345,6 @@
"lists.search": "त्वया अनुसारितजनेषु अन्विष्य",
"lists.subheading": "तव सूचयः",
"load_pending": "{count, plural, one {# नूतनवस्तु} other {# नूतनवस्तूनि}}",
- "loading_indicator.label": "आरोपयति...",
"media_gallery.toggle_visible": "{number, plural, one {चित्रं प्रच्छादय} other {चित्राणि प्रच्छादय}}",
"moved_to_account_banner.text": "तव एकौण्ट् {disabledAccount} अधुना निष्कृतो यतोहि {movedToAccount} अस्मिन्त्वमसार्षीः।",
"mute_modal.duration": "परिमाणम्",
diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json
index 4528e161b610c4..59c834b950c192 100644
--- a/app/javascript/mastodon/locales/sc.json
+++ b/app/javascript/mastodon/locales/sc.json
@@ -263,7 +263,6 @@
"lists.search": "Chirca intre sa gente chi ses sighende",
"lists.subheading": "Is listas tuas",
"load_pending": "{count, plural, one {# elementu nou} other {# elementos noos}}",
- "loading_indicator.label": "Carrighende...",
"media_gallery.toggle_visible": "Cua {number, plural, one {immàgine} other {immàgines}}",
"mute_modal.duration": "Durada",
"mute_modal.hide_notifications": "Boles cuare is notìficas de custa persone?",
diff --git a/app/javascript/mastodon/locales/sco.json b/app/javascript/mastodon/locales/sco.json
index 9b8e6a215f0aca..28dac9c2a28059 100644
--- a/app/javascript/mastodon/locales/sco.json
+++ b/app/javascript/mastodon/locales/sco.json
@@ -330,7 +330,6 @@
"lists.search": "Seirch amang the fowk ye ken",
"lists.subheading": "Yer lists",
"load_pending": "{count, plural, one {# new item} other {# new items}}",
- "loading_indicator.label": "Loadin...",
"media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}",
"moved_to_account_banner.text": "Yer accoont {disabledAccount} is disabilt the noo acause ye flittit tae {movedToAccount}.",
"mute_modal.duration": "Lenth",
diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json
index 7b26a9b4884755..835f699b82c42f 100644
--- a/app/javascript/mastodon/locales/si.json
+++ b/app/javascript/mastodon/locales/si.json
@@ -261,7 +261,6 @@
"lists.replies_policy.none": "කිසිවෙක් නැත",
"lists.replies_policy.title": "පිළිතුරු පෙන්වන්න:",
"lists.subheading": "ඔබගේ ලැයිස්තු",
- "loading_indicator.label": "පූරණය වෙමින්...",
"mute_modal.duration": "පරාසය",
"mute_modal.hide_notifications": "මෙම පුද්ගලයාගේ දැනුම්දීම් සඟවන්නද?",
"navigation_bar.about": "පිළිබඳව",
diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json
index f2616b31c4c608..24186794bb57a4 100644
--- a/app/javascript/mastodon/locales/sk.json
+++ b/app/javascript/mastodon/locales/sk.json
@@ -389,7 +389,6 @@
"lists.search": "Vyhľadávaj medzi užívateľmi, ktorých sleduješ",
"lists.subheading": "Tvoje zoznamy",
"load_pending": "{count, plural, one {# nová položka} other {# nových položiek}}",
- "loading_indicator.label": "Načítam...",
"media_gallery.toggle_visible": "Zapni/Vypni viditeľnosť",
"moved_to_account_banner.text": "Vaše konto {disabledAccount} je momentálne zablokované, pretože ste sa presunuli na {movedToAccount}.",
"mute_modal.duration": "Trvanie",
diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json
index f16a91d65a85e8..d179a86562f614 100644
--- a/app/javascript/mastodon/locales/sl.json
+++ b/app/javascript/mastodon/locales/sl.json
@@ -390,7 +390,6 @@
"lists.search": "Iščite med ljudmi, katerim sledite",
"lists.subheading": "Vaši seznami",
"load_pending": "{count, plural, one {# nov element} two {# nova elementa} few {# novi elementi} other {# novih elementov}}",
- "loading_indicator.label": "Nalaganje ...",
"media_gallery.toggle_visible": "{number, plural,one {Skrij sliko} two {Skrij sliki} other {Skrij slike}}",
"moved_to_account_banner.text": "Vaš račun {disabledAccount} je trenutno onemogočen, ker ste se prestavili na {movedToAccount}.",
"mute_modal.duration": "Trajanje",
diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json
index 8d54ef41b1c9f5..1417bed5fc567b 100644
--- a/app/javascript/mastodon/locales/sq.json
+++ b/app/javascript/mastodon/locales/sq.json
@@ -479,6 +479,17 @@
"onboarding.follows.empty": "Mjerisht, s’mund të shfaqen përfundime tani. Mund të provoni të përdorni kërkimin, ose të shfletoni faqen e eksplorimit, që të gjeni persona për ndjekje, ose të riprovoni më vonë.",
"onboarding.follows.lead": "Ju kujdeseni për prurjen tuaj. Sa më tepër persona të tjerë të ndiqni, aq më aktive dhe interesante do të bëhet ajo. Këto profile mund të jenë një pikënisje e mirë—mundeni përherë të ndërpritni ndjekjen e tyre më vonë!",
"onboarding.follows.title": "Popullore në Mastodon",
+ "onboarding.profile.discoverable": "Profilin dhe postimet bëji objekt të algoritmeve të zbulimit",
+ "onboarding.profile.display_name": "Emër në ekran",
+ "onboarding.profile.display_name_hint": "Emri juaj i plotë, ose ç’të doni…",
+ "onboarding.profile.indexable": "Përfshi postime publike në përfundime kërkimi",
+ "onboarding.profile.lead": "Këtë mund ta plotësoni përherë më vonë, te rregullimet, ku ka edhe më tepër mundësi përshtatjeje.",
+ "onboarding.profile.note": "Jetëshkrim",
+ "onboarding.profile.note_hint": "Mund të @përmendni persona të tjerë, ose #hashtagë…",
+ "onboarding.profile.save_and_continue": "Ruaje dhe vazhdo",
+ "onboarding.profile.title": "Udjisje profili",
+ "onboarding.profile.upload_avatar": "Ngarkoni foto profili",
+ "onboarding.profile.upload_header": "Ngarkoni krye profili",
"onboarding.share.lead": "Bëjuni të ditur njerëzve se si mund t’ju gjejnë në Mastodon!",
"onboarding.share.message": "Jam {username} në #Mastodon! Ejani dhe ndiqmëni te {url}",
"onboarding.share.next_steps": "Hapa pasues të mundshëm:",
diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json
index aa948b1f0ec4ad..ea6e188cb73451 100644
--- a/app/javascript/mastodon/locales/sr-Latn.json
+++ b/app/javascript/mastodon/locales/sr-Latn.json
@@ -390,7 +390,6 @@
"lists.search": "Pretraži među ljudima koje pratite",
"lists.subheading": "Vaše liste",
"load_pending": "{count, plural, one {# nova stavka} few {# nove stavke} other {# novih stavki}}",
- "loading_indicator.label": "Učitavanje...",
"media_gallery.toggle_visible": "{number, plural, one {Sakrij sliku} few {Sakrij slike} other {Sakrij slike}}",
"moved_to_account_banner.text": "Vaš nalog {disabledAccount} je trenutno onemogućen jer ste prešli na {movedToAccount}.",
"mute_modal.duration": "Trajanje",
diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json
index 9e67169272df3f..b0a76b32ab8aef 100644
--- a/app/javascript/mastodon/locales/sr.json
+++ b/app/javascript/mastodon/locales/sr.json
@@ -390,7 +390,6 @@
"lists.search": "Претражи међу људима које пратите",
"lists.subheading": "Ваше листе",
"load_pending": "{count, plural, one {# нова ставка} few {# нове ставке} other {# нових ставки}}",
- "loading_indicator.label": "Учитавање...",
"media_gallery.toggle_visible": "{number, plural, one {Сакриј слику} few {Сакриј слике} other {Сакриј слике}}",
"moved_to_account_banner.text": "Ваш налог {disabledAccount} је тренутно онемогућен јер сте прешли на {movedToAccount}.",
"mute_modal.duration": "Трајање",
diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json
index edf981e112b91d..6f9f37ea12a4dd 100644
--- a/app/javascript/mastodon/locales/sv.json
+++ b/app/javascript/mastodon/locales/sv.json
@@ -390,7 +390,7 @@
"lists.search": "Sök bland personer du följer",
"lists.subheading": "Dina listor",
"load_pending": "{count, plural, one {# nytt objekt} other {# nya objekt}}",
- "loading_indicator.label": "Laddar...",
+ "loading_indicator.label": "Laddar…",
"media_gallery.toggle_visible": "Växla synlighet",
"moved_to_account_banner.text": "Ditt konto {disabledAccount} är för närvarande inaktiverat eftersom du flyttat till {movedToAccount}.",
"mute_modal.duration": "Varaktighet",
@@ -479,6 +479,14 @@
"onboarding.follows.empty": "Tyvärr kan inga resultat visas just nu. Du kan prova att använda sökfunktionen eller utforska sidan för att hitta personer att följa, eller försök igen senare.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
+ "onboarding.profile.display_name": "Visningsnamn",
+ "onboarding.profile.display_name_hint": "Fullständigt namn eller ditt roliga namn…",
+ "onboarding.profile.indexable": "Inkludera offentliga inlägg i sökresultaten",
+ "onboarding.profile.lead": "Du kan alltid slutföra detta senare i inställningarna, där ännu fler anpassningsalternativ finns tillgängliga.",
+ "onboarding.profile.note": "Bio",
+ "onboarding.profile.note_hint": "Du kan @nämna andra personer eller #hashtags…",
+ "onboarding.profile.save_and_continue": "Spara och fortsätt",
+ "onboarding.profile.upload_avatar": "Ladda upp profilbild",
"onboarding.share.lead": "Låt folk veta hur de kan hitta dig på Mastodon!",
"onboarding.share.message": "Jag är {username} på #Mastodon! Följ mig på {url}",
"onboarding.share.next_steps": "Möjliga nästa steg:",
diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json
index f62088f62633ac..ce9042e62b91c2 100644
--- a/app/javascript/mastodon/locales/ta.json
+++ b/app/javascript/mastodon/locales/ta.json
@@ -248,7 +248,6 @@
"lists.search": "நீங்கள் பின்தொடரும் நபர்கள் மத்தியில் தேடுதல்",
"lists.subheading": "உங்கள் பட்டியல்கள்",
"load_pending": "{count, plural,one {# புதியது}other {# புதியவை}}",
- "loading_indicator.label": "ஏற்றுதல்...",
"media_gallery.toggle_visible": "நிலைமாற்று தெரியும்",
"mute_modal.hide_notifications": "இந்த பயனரின் அறிவிப்புகளை மறைக்கவா?",
"navigation_bar.blocks": "தடுக்கப்பட்ட பயனர்கள்",
diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json
index 6cf735991f59c0..f21c0ef57ad675 100644
--- a/app/javascript/mastodon/locales/te.json
+++ b/app/javascript/mastodon/locales/te.json
@@ -180,7 +180,6 @@
"lists.new.title_placeholder": "కొత్త జాబితా శీర్షిక",
"lists.search": "మీరు అనుసరించే వ్యక్తులలో శోధించండి",
"lists.subheading": "మీ జాబితాలు",
- "loading_indicator.label": "లోడ్ అవుతోంది...",
"media_gallery.toggle_visible": "దృశ్యమానతను టోగుల్ చేయండి",
"mute_modal.hide_notifications": "ఈ వినియోగదారు నుండి నోటిఫికేషన్లను దాచాలా?",
"navigation_bar.blocks": "బ్లాక్ చేయబడిన వినియోగదారులు",
diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json
index 80f862cbe02ce1..2166cd2ddaee8c 100644
--- a/app/javascript/mastodon/locales/th.json
+++ b/app/javascript/mastodon/locales/th.json
@@ -390,7 +390,7 @@
"lists.search": "ค้นหาในหมู่ผู้คนที่คุณติดตาม",
"lists.subheading": "รายการของคุณ",
"load_pending": "{count, plural, other {# รายการใหม่}}",
- "loading_indicator.label": "กำลังโหลด...",
+ "loading_indicator.label": "กำลังโหลด…",
"media_gallery.toggle_visible": "{number, plural, other {ซ่อนภาพ}}",
"moved_to_account_banner.text": "มีการปิดใช้งานบัญชีของคุณ {disabledAccount} ในปัจจุบันเนื่องจากคุณได้ย้ายไปยัง {movedToAccount}",
"mute_modal.duration": "ระยะเวลา",
@@ -479,6 +479,17 @@
"onboarding.follows.empty": "น่าเสียดาย ไม่สามารถแสดงผลลัพธ์ได้ในตอนนี้ คุณสามารถลองใช้การค้นหาหรือเรียกดูหน้าสำรวจเพื่อค้นหาผู้คนที่จะติดตาม หรือลองอีกครั้งในภายหลัง",
"onboarding.follows.lead": "ฟีดหน้าแรกของคุณเป็นวิธีหลักในการสัมผัส Mastodon ยิ่งคุณติดตามผู้คนมากเท่าไร ฟีดหน้าแรกก็จะยิ่งมีการใช้งานและน่าสนใจมากขึ้นเท่านั้น เพื่อช่วยให้คุณเริ่มต้นใช้งาน นี่คือข้อเสนอแนะบางส่วน:",
"onboarding.follows.title": "ปรับแต่งฟีดหน้าแรกของคุณ",
+ "onboarding.profile.discoverable": "แสดงโปรไฟล์และโพสต์ในอัลกอริทึมการค้นพบ",
+ "onboarding.profile.display_name": "ชื่อที่แสดง",
+ "onboarding.profile.display_name_hint": "ชื่อเต็มหรือชื่อแบบสนุกสนานของคุณ",
+ "onboarding.profile.indexable": "รวมโพสต์สาธารณะในผลลัพธ์การค้นหา",
+ "onboarding.profile.lead": "คุณสามารถกลับมาทำต่อได้เสมอในการตั้งค่า ซึ่งจะมีตัวเลือกในการปรับแต่งมากกว่า",
+ "onboarding.profile.note": "ชีวประวัติ",
+ "onboarding.profile.note_hint": "คุณสามารถ @กล่าวถึง ผู้คนอื่น ๆ หรือ #แฮชแท็ก",
+ "onboarding.profile.save_and_continue": "บันทึกและดำเนินการต่อ",
+ "onboarding.profile.title": "การตั้งค่าโปรไฟล์",
+ "onboarding.profile.upload_avatar": "อัปโหลดรูปโปรไฟล์",
+ "onboarding.profile.upload_header": "อัปโหลดรูปส่วนหัวโปรไฟล์",
"onboarding.share.lead": "แจ้งให้ผู้คนทราบวิธีที่เขาสามารถค้นหาคุณใน Mastodon!",
"onboarding.share.message": "ฉันคือ {username} ใน #Mastodon! มาติดตามฉันที่ {url}",
"onboarding.share.next_steps": "ขั้นตอนถัดไปที่เป็นไปได้:",
diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json
index 9ad25949309d7a..505b16f4b0d8b0 100644
--- a/app/javascript/mastodon/locales/tr.json
+++ b/app/javascript/mastodon/locales/tr.json
@@ -390,7 +390,7 @@
"lists.search": "Takip ettiğiniz kişiler arasından arayın",
"lists.subheading": "Listeleriniz",
"load_pending": "{count, plural, one {# yeni öğe} other {# yeni öğe}}",
- "loading_indicator.label": "Yükleniyor...",
+ "loading_indicator.label": "Yükleniyor…",
"media_gallery.toggle_visible": "{number, plural, one {Resmi} other {Resimleri}} gizle",
"moved_to_account_banner.text": "{disabledAccount} hesabınız, {movedToAccount} hesabına taşıdığınız için şu an devre dışı.",
"mute_modal.duration": "Süre",
@@ -479,6 +479,17 @@
"onboarding.follows.empty": "Maalesef şu an bir sonuç gösterilemiyor. Takip edilecek kişileri bulmak için arama veya keşfet sayfasına gözatmayı kullanabilirsiniz veya daha sonra tekrar deneyin.",
"onboarding.follows.lead": "Kendi ana akışınızı siz düzenliyorsunuz. Siz daha fazla insanı takip ettikçe, daha etkin ve ilgi çekici olacaktır. Bu profiller iyi bir başlangıç olabilir, isterseniz izlemeyi daha sonra bırakabilirsiniz:",
"onboarding.follows.title": "Mastodon'da Popüler",
+ "onboarding.profile.discoverable": "Profil ve gönderileri keşif algoritmalarında kullan",
+ "onboarding.profile.display_name": "Görünen isim",
+ "onboarding.profile.display_name_hint": "Tam adınız veya kullanıcı adınız…",
+ "onboarding.profile.indexable": "Herkese açık gönderileri arama sonuçlarına ekle",
+ "onboarding.profile.lead": "Bunu her zaman daha sonra ayarlardan tamamlayabilirsiniz, hatta daha fazla özelleştirme seçeneğine de ulaşabilirsiniz.",
+ "onboarding.profile.note": "Kişisel bilgiler",
+ "onboarding.profile.note_hint": "Diğer insanlara @değinebilir veya #etiketler kullanabilirsiniz…",
+ "onboarding.profile.save_and_continue": "Kaydet ve ilerle",
+ "onboarding.profile.title": "Profilini ayarla",
+ "onboarding.profile.upload_avatar": "Profil resmi yükle",
+ "onboarding.profile.upload_header": "Profil başlığı yükle",
"onboarding.share.lead": "Kullanıcılara Mastodon'da size nasıl ulaşabileceklerini ifade edin!",
"onboarding.share.message": "#Mastodon'da kullanıcı adım {username}! Beni takip etmek için {url} bağlantısını kullanın",
"onboarding.share.next_steps": "Olası sonraki adımlar:",
diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json
index e84bc66cc5d260..6727f3e59abdf4 100644
--- a/app/javascript/mastodon/locales/tt.json
+++ b/app/javascript/mastodon/locales/tt.json
@@ -314,7 +314,6 @@
"lists.replies_policy.none": "Һичкем",
"lists.subheading": "Исемлегегегезләр",
"load_pending": "{count, plural, one {# яңа элемент} other {# яңа элемент}}",
- "loading_indicator.label": "Йөкләү...",
"mute_modal.duration": "Дәвамлык",
"mute_modal.indefinite": "Билгесез",
"navigation_bar.about": "Проект турында",
diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json
index 09fa58fbf9370f..8649d931039cdb 100644
--- a/app/javascript/mastodon/locales/uk.json
+++ b/app/javascript/mastodon/locales/uk.json
@@ -390,7 +390,7 @@
"lists.search": "Шукати серед людей, на яких ви підписані",
"lists.subheading": "Ваші списки",
"load_pending": "{count, plural, one {# новий елемент} other {# нових елементів}}",
- "loading_indicator.label": "Завантаження...",
+ "loading_indicator.label": "Завантаження…",
"media_gallery.toggle_visible": "{number, plural, one {Приховати зображення} other {Приховати зображення}}",
"moved_to_account_banner.text": "Ваш обліковий запис {disabledAccount} наразі вимкнений, оскільки вас перенесено до {movedToAccount}.",
"mute_modal.duration": "Тривалість",
@@ -479,6 +479,17 @@
"onboarding.follows.empty": "На жаль, жоден результат не може бути показаний просто зараз. Ви можете спробувати скористатися пошуком або переглядом сторінки огляду, щоб знайти людей для слідкування або повторіть спробу пізніше.",
"onboarding.follows.lead": "Ваша домашня стрічка - основний спосіб роботи Mastodon. Чим більше людей, які ви підписані, тим активнішою і цікавою. Ось деякі пропозиції на початок:",
"onboarding.follows.title": "Персоналізуйте домашню стрічку",
+ "onboarding.profile.discoverable": "Враховувати профіль та дописи в алгоритмах пошуку",
+ "onboarding.profile.display_name": "Видиме ім'я",
+ "onboarding.profile.display_name_hint": "Ваше повне ім'я або ваш псевдонім…",
+ "onboarding.profile.indexable": "Включити загальнодоступні дописи в результати пошуку",
+ "onboarding.profile.lead": "Ви завжди можете завершити це пізніше в Налаштуваннях, де доступно ще більше опцій налаштування.",
+ "onboarding.profile.note": "Біографія",
+ "onboarding.profile.note_hint": "Ви можете @згадувати інших людей або #гештеґи…",
+ "onboarding.profile.save_and_continue": "Зберегти і продовжити",
+ "onboarding.profile.title": "Налаштування профілю",
+ "onboarding.profile.upload_avatar": "Завантажити зображення профілю",
+ "onboarding.profile.upload_header": "Завантажити заголовок профілю",
"onboarding.share.lead": "Розкажіть людям про те, як вони можуть знайти вас на Mastodon!",
"onboarding.share.message": "Я {username} на #Mastodon! Стежте за мною на {url}",
"onboarding.share.next_steps": "Можливі такі кроки:",
diff --git a/app/javascript/mastodon/locales/uz.json b/app/javascript/mastodon/locales/uz.json
index afb4c4c4c20f70..026cc115c1c905 100644
--- a/app/javascript/mastodon/locales/uz.json
+++ b/app/javascript/mastodon/locales/uz.json
@@ -325,7 +325,6 @@
"lists.search": "Siz kuzatadigan odamlar orasidan qidiring",
"lists.subheading": "Sizning ro'yxatlaringiz",
"load_pending": "{count, plural, one {# yangi element} other {# yangi elementlar}}",
- "loading_indicator.label": "Yuklanmoqda...",
"media_gallery.toggle_visible": "{number, plural, one {Rasmni yashirish} other {Rasmlarni yashirish}}",
"moved_to_account_banner.text": "{movedToAccount} hisobiga koʻchganingiz uchun {disabledAccount} hisobingiz hozirda oʻchirib qoʻyilgan.",
"mute_modal.duration": "Davomiyligi",
diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json
index aa229eceb805d2..c98be2b74656c3 100644
--- a/app/javascript/mastodon/locales/vi.json
+++ b/app/javascript/mastodon/locales/vi.json
@@ -390,7 +390,6 @@
"lists.search": "Tìm kiếm những người mà bạn quan tâm",
"lists.subheading": "Danh sách của bạn",
"load_pending": "{count, plural, one {# tút mới} other {# tút mới}}",
- "loading_indicator.label": "Đang tải...",
"media_gallery.toggle_visible": "{number, plural, other {Ẩn hình ảnh}}",
"moved_to_account_banner.text": "Tài khoản {disabledAccount} của bạn hiện không khả dụng vì bạn đã chuyển sang {movedToAccount}.",
"mute_modal.duration": "Thời hạn",
diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json
index 7b19e0e6a7d933..5896a25b022aed 100644
--- a/app/javascript/mastodon/locales/zgh.json
+++ b/app/javascript/mastodon/locales/zgh.json
@@ -127,7 +127,6 @@
"lists.replies_policy.title": "ⵙⴽⵏ ⵜⵉⵔⴰⵔⵉⵏ ⵉ:",
"lists.subheading": "ⵜⵉⵍⴳⴰⵎⵉⵏ ⵏⵏⴽ",
"load_pending": "{count, plural, one {# ⵓⴼⵔⴷⵉⵙ ⴰⵎⴰⵢⵏⵓ} other {# ⵉⴼⵔⴷⴰⵙ ⵉⵎⴰⵢⵏⵓⵜⵏ}}",
- "loading_indicator.label": "ⴰⵣⴷⴰⵎ...",
"media_gallery.toggle_visible": "ⴼⴼⵔ {number, plural, one {ⵜⴰⵡⵍⴰⴼⵜ} other {ⵜⵉⵡⵍⴰⴼⵉⵏ}}",
"navigation_bar.compose": "Compose new toot",
"navigation_bar.domain_blocks": "Hidden domains",
diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json
index f830aa29853e67..cc6d8994d21739 100644
--- a/app/javascript/mastodon/locales/zh-CN.json
+++ b/app/javascript/mastodon/locales/zh-CN.json
@@ -193,7 +193,7 @@
"conversation.with": "与 {names}",
"copypaste.copied": "已复制",
"copypaste.copy_to_clipboard": "复制到剪贴板",
- "directory.federated": "来自已知联邦宇宙",
+ "directory.federated": "来自已知的联邦宇宙",
"directory.local": "仅来自 {domain}",
"directory.new_arrivals": "新来者",
"directory.recently_active": "最近活跃",
@@ -479,6 +479,17 @@
"onboarding.follows.empty": "很抱歉,现在无法显示任何结果。您可以尝试使用搜索或浏览探索页面来查找要关注的人,或稍后再试。",
"onboarding.follows.lead": "你管理你自己的家庭饲料。你关注的人越多,它将越活跃和有趣。 这些配置文件可能是一个很好的起点——你可以随时取消关注它们!",
"onboarding.follows.title": "定制您的主页动态",
+ "onboarding.profile.discoverable": "在发现算法中展示您的个人资料和嘟文",
+ "onboarding.profile.display_name": "昵称",
+ "onboarding.profile.display_name_hint": "您的全名或昵称…",
+ "onboarding.profile.indexable": "将您的公开嘟文纳入搜索范围",
+ "onboarding.profile.lead": "您可以稍后在设置中完成此操作,设置中有更多的自定义选项。",
+ "onboarding.profile.note": "简介",
+ "onboarding.profile.note_hint": "您可以提及 @其他人 或 #标签…",
+ "onboarding.profile.save_and_continue": "保存并继续",
+ "onboarding.profile.title": "设置个人资料",
+ "onboarding.profile.upload_avatar": "上传头像",
+ "onboarding.profile.upload_header": "上传资料卡头图",
"onboarding.share.lead": "让人们知道他们如何在Mastodon找到你!",
"onboarding.share.message": "我是来自 #Mastodon 的 {username}!请在 {url} 关注我。",
"onboarding.share.next_steps": "可能的下一步:",
diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json
index 7121a7d03e9794..ea932bc5a76590 100644
--- a/app/javascript/mastodon/locales/zh-HK.json
+++ b/app/javascript/mastodon/locales/zh-HK.json
@@ -390,7 +390,7 @@
"lists.search": "從你關注的人搜索",
"lists.subheading": "列表",
"load_pending": "{count, plural, other {# 個新項目}}",
- "loading_indicator.label": "載入中...",
+ "loading_indicator.label": "載入中…",
"media_gallery.toggle_visible": "隱藏圖片",
"moved_to_account_banner.text": "您的帳號 {disabledAccount} 目前已停用,因為您已搬家至 {movedToAccount}。",
"mute_modal.duration": "時間",
@@ -479,6 +479,17 @@
"onboarding.follows.empty": "很遺憾,現在無法顯示任何結果。你可以嘗試搜尋或瀏覽探索頁面來找使用者來追蹤,或者稍後再試。",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
+ "onboarding.profile.discoverable": "在探索的演算法中展示個人檔案和帖文",
+ "onboarding.profile.display_name": "顯示名稱",
+ "onboarding.profile.display_name_hint": "你的全名或暱稱…",
+ "onboarding.profile.indexable": "將公開帖文納入搜尋結果中",
+ "onboarding.profile.lead": "你可以隨時在設定中完成此動作,那裏有更多自訂選項。",
+ "onboarding.profile.note": "簡介",
+ "onboarding.profile.note_hint": "你可以 @提及他人 或使用 #標籤…",
+ "onboarding.profile.save_and_continue": "儲存並繼續",
+ "onboarding.profile.title": "個人檔案設定",
+ "onboarding.profile.upload_avatar": "上載個人檔案頭像",
+ "onboarding.profile.upload_header": "上載個人檔案橫幅圖片",
"onboarding.share.lead": "讓大家知道如何在 Mastodon 上找到你吧!",
"onboarding.share.message": "我在 #Mastodon 的使用者名稱是 {username}!快來追蹤我吧 {url}",
"onboarding.share.next_steps": "接下來你可以:",
diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json
index db4fe4eab2d19f..4c52693cc316e9 100644
--- a/app/javascript/mastodon/locales/zh-TW.json
+++ b/app/javascript/mastodon/locales/zh-TW.json
@@ -12,7 +12,7 @@
"about.powered_by": "由 {mastodon} 提供的去中心化社群媒體",
"about.rules": "伺服器規則",
"account.account_note_header": "備註",
- "account.add_or_remove_from_list": "從列表中新增或移除",
+ "account.add_or_remove_from_list": "自列表中新增或移除",
"account.badges.bot": "機器人",
"account.badges.group": "群組",
"account.block": "封鎖 @{name}",
@@ -26,7 +26,7 @@
"account.domain_blocked": "已封鎖網域",
"account.edit_profile": "編輯個人檔案",
"account.enable_notifications": "當 @{name} 嘟文時通知我",
- "account.endorse": "在個人檔案推薦對方",
+ "account.endorse": "於個人檔案推薦對方",
"account.featured_tags.last_status_at": "上次嘟文於 {date}",
"account.featured_tags.last_status_never": "沒有嘟文",
"account.featured_tags.title": "{name} 的推薦主題標籤",
@@ -65,7 +65,7 @@
"account.unblock": "解除封鎖 @{name}",
"account.unblock_domain": "解除封鎖網域 {domain}",
"account.unblock_short": "解除封鎖",
- "account.unendorse": "取消在個人檔案推薦對方",
+ "account.unendorse": "取消於個人檔案推薦對方",
"account.unfollow": "取消跟隨",
"account.unmute": "解除靜音 @{name}",
"account.unmute_notifications_short": "取消靜音推播通知",
@@ -102,7 +102,7 @@
"bundle_modal_error.message": "載入此元件時發生錯誤。",
"bundle_modal_error.retry": "重試",
"closed_registrations.other_server_instructions": "因為 Mastodon 是去中心化的,所以您也能於其他伺服器上建立帳號,並仍然與這個伺服器互動。",
- "closed_registrations_modal.description": "目前無法在 {domain} 建立新帳號,但也請別忘了,您並不一定需要有 {domain} 伺服器的帳號,也能使用 Mastodon 。",
+ "closed_registrations_modal.description": "目前無法於 {domain} 建立新帳號,但也請別忘了,您並不一定需要有 {domain} 伺服器的帳號,也能使用 Mastodon 。",
"closed_registrations_modal.find_another_server": "尋找另一個伺服器",
"closed_registrations_modal.preamble": "Mastodon 是去中心化的,所以無論您於哪個伺服器新增帳號,都可以與此伺服器上的任何人跟隨及互動。您甚至能自行架一個自己的伺服器!",
"closed_registrations_modal.title": "註冊 Mastodon",
@@ -171,7 +171,7 @@
"confirmations.delete_list.confirm": "刪除",
"confirmations.delete_list.message": "您確定要永久刪除此列表嗎?",
"confirmations.discard_edit_media.confirm": "捨棄",
- "confirmations.discard_edit_media.message": "您在媒體描述或預覽區塊有未儲存的變更。是否要捨棄這些變更?",
+ "confirmations.discard_edit_media.message": "您於媒體描述或預覽區塊有未儲存的變更。是否要捨棄這些變更?",
"confirmations.domain_block.confirm": "封鎖整個網域",
"confirmations.domain_block.message": "您真的非常確定要封鎖整個 {domain} 網域嗎?大部分情況下,封鎖或靜音少數特定的帳號就能滿足需求了。您將不能在任何公開的時間軸及通知中看到來自此網域的內容。您來自該網域的跟隨者也將被移除。",
"confirmations.edit.confirm": "編輯",
@@ -205,7 +205,7 @@
"dismissable_banner.explore_statuses": "這些於此伺服器以及去中心化網路中其他伺服器發出的嘟文正在被此伺服器上的人們熱烈討論著。越多不同人轉嘟及最愛排名更高。",
"dismissable_banner.explore_tags": "這些主題標籤正在被此伺服器以及去中心化網路上的人們熱烈討論著。越多不同人所嘟出的主題標籤排名更高。",
"dismissable_banner.public_timeline": "這些是來自 {domain} 使用者們跟隨中帳號所發表之最新公開嘟文。",
- "embed.instructions": "要在您的網站嵌入此嘟文,請複製以下程式碼。",
+ "embed.instructions": "若您欲於您的網站嵌入此嘟文,請複製以下程式碼。",
"embed.preview": "它將顯示成這樣:",
"emoji_button.activity": "活動",
"emoji_button.clear": "清除",
@@ -218,7 +218,7 @@
"emoji_button.objects": "物件",
"emoji_button.people": "人物",
"emoji_button.recent": "最常使用",
- "emoji_button.search": "搜尋…",
+ "emoji_button.search": "搜尋...",
"emoji_button.search_results": "搜尋結果",
"emoji_button.symbols": "符號",
"emoji_button.travel": "旅遊與地點",
@@ -259,7 +259,7 @@
"filter_modal.added.context_mismatch_title": "不符合情境!",
"filter_modal.added.expired_explanation": "此過濾器類別已失效,您需要更新過期日期以套用。",
"filter_modal.added.expired_title": "過期的過濾器!",
- "filter_modal.added.review_and_configure": "要檢視和進一步設定此過濾器類別,請至 {settings_link}。",
+ "filter_modal.added.review_and_configure": "要檢視與進一步設定此過濾器類別,請至 {settings_link}。",
"filter_modal.added.review_and_configure_title": "過濾器設定",
"filter_modal.added.settings_link": "設定頁面",
"filter_modal.added.short_explanation": "此嘟文已被新增至以下過濾器類別:{title}。",
@@ -362,7 +362,7 @@
"keyboard_shortcuts.search": "將游標移至搜尋框",
"keyboard_shortcuts.spoilers": "顯示或隱藏內容警告之嘟文",
"keyboard_shortcuts.start": "開啟「開始使用」欄位",
- "keyboard_shortcuts.toggle_hidden": "顯示或隱藏在內容警告之後的嘟文",
+ "keyboard_shortcuts.toggle_hidden": "顯示或隱藏於內容警告之後的嘟文",
"keyboard_shortcuts.toggle_sensitivity": "顯示或隱藏媒體",
"keyboard_shortcuts.toot": "發個新嘟文",
"keyboard_shortcuts.unfocus": "跳離文字撰寫區塊或搜尋框",
@@ -376,7 +376,7 @@
"limited_account_hint.title": "此個人檔案已被 {domain} 的管理員隱藏。",
"link_preview.author": "由 {name} 提供",
"lists.account.add": "新增至列表",
- "lists.account.remove": "從列表中移除",
+ "lists.account.remove": "自列表中移除",
"lists.delete": "刪除列表",
"lists.edit": "編輯列表",
"lists.edit.submit": "變更標題",
@@ -390,7 +390,7 @@
"lists.search": "搜尋您跟隨的使用者",
"lists.subheading": "您的列表",
"load_pending": "{count, plural, one {# 個新項目} other {# 個新項目}}",
- "loading_indicator.label": "讀取中...",
+ "loading_indicator.label": "正在載入...",
"media_gallery.toggle_visible": "切換可見性",
"moved_to_account_banner.text": "您的帳號 {disabledAccount} 目前已停用,因為您已搬家至 {movedToAccount}。",
"mute_modal.duration": "持續時間",
@@ -469,7 +469,7 @@
"notifications.permission_denied_alert": "由於之前瀏覽器權限被拒絕,無法啟用桌面通知",
"notifications.permission_required": "由於尚未授予所需的權限,因此無法使用桌面通知。",
"notifications_permission_banner.enable": "啟用桌面通知",
- "notifications_permission_banner.how_to_control": "啟用桌面通知以在 Mastodon 沒有開啟的時候接收通知。在已經啟用桌面通知的時候,您可以透過上面的 {icon} 按鈕準確的控制哪些類型的互動會產生桌面通知。",
+ "notifications_permission_banner.how_to_control": "啟用桌面通知以於 Mastodon 沒有開啟的時候接收通知。啟用桌面通知後,您可以透過上面的 {icon} 按鈕準確的控制哪些類型的互動會產生桌面通知。",
"notifications_permission_banner.title": "不要錯過任何東西!",
"onboarding.action.back": "返回",
"onboarding.actions.back": "返回",
@@ -479,6 +479,17 @@
"onboarding.follows.empty": "很遺憾,目前未能顯示任何結果。您可以嘗試使用搜尋、瀏覽探索頁面以找尋人們跟隨、或稍候再試。",
"onboarding.follows.lead": "您的首頁時間軸是 Mastodon 的核心體驗。若您跟隨更多人的話,它將會變得更活躍有趣。這些個人檔案也許是個好起點,您可以隨時取消跟隨他們!",
"onboarding.follows.title": "客製化您的首頁時間軸",
+ "onboarding.profile.discoverable": "於探索演算法中推薦個人檔案及嘟文",
+ "onboarding.profile.display_name": "顯示名稱",
+ "onboarding.profile.display_name_hint": "完整名稱或暱稱...",
+ "onboarding.profile.indexable": "允許公開嘟文顯示於搜尋結果中",
+ "onboarding.profile.lead": "您隨時可以稍候於設定中完成此操作,將有更多自訂選項可使用。",
+ "onboarding.profile.note": "個人簡介",
+ "onboarding.profile.note_hint": "您可以 @mention 其他人或者使用 #主題標籤...",
+ "onboarding.profile.save_and_continue": "儲存並繼續",
+ "onboarding.profile.title": "個人檔案設定",
+ "onboarding.profile.upload_avatar": "上傳個人檔案大頭貼",
+ "onboarding.profile.upload_header": "上傳個人檔案封面圖片",
"onboarding.share.lead": "讓其他人知道他們如何於 Mastodon 上面找到您!",
"onboarding.share.message": "我是 #Mastodon 上的 {username}!歡迎於 {url} 跟隨我",
"onboarding.share.next_steps": "可能的下一步:",
@@ -490,7 +501,7 @@
"onboarding.steps.follow_people.title": "客製化您的首頁時間軸",
"onboarding.steps.publish_status.body": "向新世界打聲招呼吧。",
"onboarding.steps.publish_status.title": "撰寫您第一則嘟文",
- "onboarding.steps.setup_profile.body": "若您完整填寫個人檔案,其他人比較願意和您互動。",
+ "onboarding.steps.setup_profile.body": "若您完整填寫個人檔案,其他人比較願意與您互動。",
"onboarding.steps.setup_profile.title": "客製化您的個人檔案",
"onboarding.steps.share_profile.body": "讓您的朋友們知道如何於 Mastodon 找到您!",
"onboarding.steps.share_profile.title": "分享您的 Mastodon 個人檔案",
@@ -614,10 +625,10 @@
"sign_in_banner.create_account": "新增帳號",
"sign_in_banner.sign_in": "登入",
"sign_in_banner.sso_redirect": "登入或註冊",
- "sign_in_banner.text": "登入以跟隨個人檔案和主題標籤,或收藏、分享和回覆嘟文。您也可以使用您的帳號在其他伺服器上進行互動。",
+ "sign_in_banner.text": "登入以跟隨個人檔案與主題標籤,或收藏、分享及回覆嘟文。您也可以使用您的帳號於其他伺服器進行互動。",
"status.admin_account": "開啟 @{name} 的管理介面",
"status.admin_domain": "開啟 {domain} 的管理介面",
- "status.admin_status": "在管理介面開啟此嘟文",
+ "status.admin_status": "於管理介面開啟此嘟文",
"status.block": "封鎖 @{name}",
"status.bookmark": "書籤",
"status.cancel_reblog_private": "取消轉嘟",
@@ -672,8 +683,8 @@
"status.translated_from_with": "透過 {provider} 翻譯 {lang}",
"status.uncached_media_warning": "無法預覽",
"status.unmute_conversation": "解除此對話的靜音",
- "status.unpin": "從個人檔案頁面取消釘選",
- "subscribed_languages.lead": "僅選定語言的嘟文才會出現在您的首頁上,並在變更後列出時間軸。選取「無」以接收所有語言的嘟文。",
+ "status.unpin": "自個人檔案頁面取消釘選",
+ "subscribed_languages.lead": "僅選定語言的嘟文才會出現於您的首頁上,並於變更後列出時間軸。選取「無」以接收所有語言的嘟文。",
"subscribed_languages.save": "儲存變更",
"subscribed_languages.target": "變更 {target} 的訂閱語言",
"tabs_bar.home": "首頁",
@@ -696,7 +707,7 @@
"upload_area.title": "拖放來上傳",
"upload_button.label": "上傳圖片、影片、或者音樂檔案",
"upload_error.limit": "已達到檔案上傳限制。",
- "upload_error.poll": "不允許在投票中上傳檔案。",
+ "upload_error.poll": "不允許於投票時上傳檔案。",
"upload_form.audio_description": "為聽障人士增加文字說明",
"upload_form.description": "為視障人士增加文字說明",
"upload_form.description_missing": "沒有任何描述",
@@ -706,7 +717,7 @@
"upload_form.video_description": "為聽障或視障人士增加文字說明",
"upload_modal.analyzing_picture": "正在分析圖片…",
"upload_modal.apply": "套用",
- "upload_modal.applying": "正在套用⋯⋯",
+ "upload_modal.applying": "正在套用...",
"upload_modal.choose_image": "選擇圖片",
"upload_modal.description_placeholder": "我能吞下玻璃而不傷身體",
"upload_modal.detect_text": "從圖片中偵測文字",
diff --git a/app/javascript/mastodon/models/account.ts b/app/javascript/mastodon/models/account.ts
index d188a06efc0f49..d65a2794b91b5a 100644
--- a/app/javascript/mastodon/models/account.ts
+++ b/app/javascript/mastodon/models/account.ts
@@ -86,6 +86,7 @@ export const accountDefaultValues: AccountShape = {
bot: false,
created_at: '',
discoverable: false,
+ indexable: false,
display_name: '',
display_name_html: '',
emojis: List(),
diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss
index b51bfb4411d581..54e314f5421c82 100644
--- a/app/javascript/styles/mastodon/components.scss
+++ b/app/javascript/styles/mastodon/components.scss
@@ -286,6 +286,17 @@
font-size: 12px;
font-weight: 500;
}
+
+ &.copyable {
+ transition: all 300ms linear;
+ }
+
+ &.copied {
+ border-color: $valid-value-color;
+ color: $valid-value-color;
+ transition: none;
+ background-color: rgba($valid-value-color, 0.15);
+ }
}
.text-icon-button {
@@ -2635,7 +2646,7 @@ $ui-header-height: 55px;
.column-title {
text-align: center;
- padding-bottom: 40px;
+ padding-bottom: 32px;
h3 {
font-size: 24px;
@@ -2826,58 +2837,6 @@ $ui-header-height: 55px;
}
}
-.onboarding__progress-indicator {
- display: flex;
- align-items: center;
- margin-bottom: 30px;
- position: sticky;
- background: $ui-base-color;
-
- @media screen and (width >= 600) {
- padding: 0 40px;
- }
-
- &__line {
- height: 4px;
- flex: 1 1 auto;
- background: lighten($ui-base-color, 4%);
- }
-
- &__step {
- flex: 0 0 auto;
- width: 30px;
- height: 30px;
- background: lighten($ui-base-color, 4%);
- border-radius: 50%;
- color: $primary-text-color;
- display: flex;
- align-items: center;
- justify-content: center;
-
- svg {
- width: 15px;
- height: auto;
- }
-
- &.active {
- background: $valid-value-color;
- }
- }
-
- &__step.active,
- &__line.active {
- background: $valid-value-color;
- background-image: linear-gradient(
- 90deg,
- $valid-value-color,
- lighten($valid-value-color, 8%),
- $valid-value-color
- );
- background-size: 200px 100%;
- animation: skeleton 1.2s ease-in-out infinite;
- }
-}
-
.follow-recommendations {
background: darken($ui-base-color, 4%);
border-radius: 8px;
@@ -2954,6 +2913,28 @@ $ui-header-height: 55px;
}
}
+.onboarding__profile {
+ position: relative;
+ margin-bottom: 40px + 20px;
+
+ .app-form__avatar-input {
+ border: 2px solid $ui-base-color;
+ position: absolute;
+ inset-inline-start: -2px;
+ bottom: -40px;
+ z-index: 2;
+ }
+
+ .app-form__header-input {
+ margin: 0 -20px;
+ border-radius: 0;
+
+ img {
+ border-radius: 0;
+ }
+ }
+}
+
.compose-form__highlightable {
display: flex;
flex-direction: column;
@@ -3228,6 +3209,7 @@ $ui-header-height: 55px;
cursor: pointer;
background-color: transparent;
border: 0;
+ border-radius: 10px;
padding: 0;
user-select: none;
-webkit-tap-highlight-color: rgba($base-overlay-background, 0);
@@ -3252,81 +3234,41 @@ $ui-header-height: 55px;
}
.react-toggle-track {
- width: 50px;
- height: 24px;
+ width: 32px;
+ height: 20px;
padding: 0;
- border-radius: 30px;
- background-color: $ui-base-color;
- transition: background-color 0.2s ease;
+ border-radius: 10px;
+ background-color: #626982;
}
-.react-toggle:is(:hover, :focus-within):not(.react-toggle--disabled)
- .react-toggle-track {
- background-color: darken($ui-base-color, 10%);
+.react-toggle--focus {
+ outline: $ui-button-focus-outline;
}
.react-toggle--checked .react-toggle-track {
- background-color: darken($ui-highlight-color, 2%);
-}
-
-.react-toggle--checked:is(:hover, :focus-within):not(.react-toggle--disabled)
- .react-toggle-track {
background-color: $ui-highlight-color;
}
-.react-toggle-track-check {
- position: absolute;
- width: 14px;
- height: 10px;
- top: 0;
- bottom: 0;
- margin-top: auto;
- margin-bottom: auto;
- line-height: 0;
- inset-inline-start: 8px;
- opacity: 0;
- transition: opacity 0.25s ease;
-}
-
-.react-toggle--checked .react-toggle-track-check {
- opacity: 1;
- transition: opacity 0.25s ease;
-}
-
+.react-toggle-track-check,
.react-toggle-track-x {
- position: absolute;
- width: 10px;
- height: 10px;
- top: 0;
- bottom: 0;
- margin-top: auto;
- margin-bottom: auto;
- line-height: 0;
- inset-inline-end: 10px;
- opacity: 1;
- transition: opacity 0.25s ease;
-}
-
-.react-toggle--checked .react-toggle-track-x {
- opacity: 0;
+ display: none;
}
.react-toggle-thumb {
position: absolute;
- top: 1px;
- inset-inline-start: 1px;
- width: 22px;
- height: 22px;
- border: 1px solid $ui-base-color;
+ top: 2px;
+ inset-inline-start: 2px;
+ width: 16px;
+ height: 16px;
border-radius: 50%;
- background-color: darken($simple-background-color, 2%);
+ background-color: $primary-text-color;
box-sizing: border-box;
transition: all 0.25s ease;
transition-property: border-color, left;
}
.react-toggle--checked .react-toggle-thumb {
- inset-inline-start: 27px;
+ inset-inline-start: 32px - 16px - 2px;
border-color: $ui-highlight-color;
}
@@ -4200,6 +4142,17 @@ a.status-card {
justify-content: center;
}
+.button .loading-indicator {
+ position: static;
+ transform: none;
+
+ .circular-progress {
+ color: $primary-text-color;
+ width: 22px;
+ height: 22px;
+ }
+}
+
.circular-progress {
color: lighten($ui-base-color, 26%);
animation: 1.4s linear 0s infinite normal none running simple-rotate;
@@ -6081,12 +6034,14 @@ a.status-card {
&__toggle {
display: flex;
align-items: center;
- margin-bottom: 10px;
+ margin-bottom: 16px;
+ gap: 8px;
& > span {
- font-size: 17px;
+ display: block;
+ font-size: 14px;
font-weight: 500;
- margin-inline-start: 10px;
+ line-height: 20px;
}
}
@@ -7765,6 +7720,7 @@ noscript {
.account__header {
overflow: hidden;
+ container: account-header / inline-size;
&.inactive {
opacity: 0.5;
@@ -7860,6 +7816,16 @@ noscript {
width: 24px;
height: 24px;
}
+
+ &.copied {
+ border-color: $valid-value-color;
+ }
+ }
+
+ @container account-header (max-width: 372px) {
+ .optional {
+ display: none;
+ }
}
}
diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss
index 215404ef3737b4..187e571cd45167 100644
--- a/app/javascript/styles/mastodon/forms.scss
+++ b/app/javascript/styles/mastodon/forms.scss
@@ -36,7 +36,7 @@ code {
}
.input {
- margin-bottom: 15px;
+ margin-bottom: 16px;
overflow: hidden;
&.hidden {
@@ -267,12 +267,13 @@ code {
font-size: 14px;
color: $primary-text-color;
display: block;
- font-weight: 500;
- padding-top: 5px;
+ font-weight: 600;
+ line-height: 20px;
}
.hint {
- margin-bottom: 15px;
+ line-height: 16px;
+ margin-bottom: 12px;
}
ul {
@@ -428,7 +429,8 @@ code {
input[type='datetime-local'],
textarea {
box-sizing: border-box;
- font-size: 16px;
+ font-size: 14px;
+ line-height: 20px;
color: $primary-text-color;
display: block;
width: 100%;
@@ -436,9 +438,9 @@ code {
font-family: inherit;
resize: vertical;
background: darken($ui-base-color, 10%);
- border: 1px solid darken($ui-base-color, 14%);
- border-radius: 4px;
- padding: 10px;
+ border: 1px solid darken($ui-base-color, 10%);
+ border-radius: 8px;
+ padding: 10px 16px;
&::placeholder {
color: lighten($darker-text-color, 4%);
@@ -452,14 +454,13 @@ code {
border-color: $valid-value-color;
}
- &:hover {
- border-color: darken($ui-base-color, 20%);
- }
-
&:active,
&:focus {
border-color: $highlight-text-color;
- background: darken($ui-base-color, 8%);
+ }
+
+ @media screen and (width <= 600px) {
+ font-size: 16px;
}
}
@@ -525,12 +526,11 @@ code {
border-radius: 4px;
background: $ui-button-background-color;
color: $ui-button-color;
- font-size: 18px;
- line-height: inherit;
+ font-size: 15px;
+ line-height: 22px;
height: auto;
- padding: 10px;
+ padding: 7px 18px;
text-decoration: none;
- text-transform: uppercase;
text-align: center;
box-sizing: border-box;
cursor: pointer;
@@ -1221,3 +1221,74 @@ code {
background: $highlight-text-color;
}
}
+
+.app-form {
+ & > * {
+ margin-bottom: 16px;
+ }
+
+ &__avatar-input,
+ &__header-input {
+ display: block;
+ border-radius: 8px;
+ background: var(--dropdown-background-color);
+ position: relative;
+ cursor: pointer;
+
+ img {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+ border-radius: 8px;
+ z-index: 0;
+ }
+
+ .icon {
+ position: absolute;
+ inset-inline-start: 50%;
+ top: 50%;
+ transform: translate(-50%, -50%);
+ color: $darker-text-color;
+ z-index: 3;
+ }
+
+ &.selected .icon {
+ color: $primary-text-color;
+ transform: none;
+ inset-inline-start: auto;
+ inset-inline-end: 8px;
+ top: auto;
+ bottom: 8px;
+ }
+
+ &.invalid img {
+ outline: 1px solid $error-value-color;
+ outline-offset: -1px;
+ }
+
+ &.invalid::before {
+ display: block;
+ content: '';
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ background: rgba($error-value-color, 0.25);
+ z-index: 2;
+ border-radius: 8px;
+ }
+
+ &:hover {
+ background-color: var(--dropdown-border-color);
+ }
+ }
+
+ &__avatar-input {
+ width: 80px;
+ height: 80px;
+ }
+
+ &__header-input {
+ aspect-ratio: 580/193;
+ }
+}
diff --git a/app/models/status.rb b/app/models/status.rb
index 943e2cf7902177..d60f833064b0e8 100644
--- a/app/models/status.rb
+++ b/app/models/status.rb
@@ -201,7 +201,6 @@ class Status < ApplicationRecord
quote: [
:application,
:tags,
- :preview_cards,
:media_attachments,
:conversation,
:status_stat,
diff --git a/app/serializers/rest/account_serializer.rb b/app/serializers/rest/account_serializer.rb
index c704d9f11d8c10..d466242169aa4c 100644
--- a/app/serializers/rest/account_serializer.rb
+++ b/app/serializers/rest/account_serializer.rb
@@ -6,7 +6,7 @@ class REST::AccountSerializer < ActiveModel::Serializer
# Please update `app/javascript/mastodon/api_types/accounts.ts` when making changes to the attributes
- attributes :id, :username, :acct, :display_name, :locked, :bot, :discoverable, :group, :created_at,
+ attributes :id, :username, :acct, :display_name, :locked, :bot, :discoverable, :indexable, :group, :created_at,
:note, :url, :uri, :avatar, :avatar_static, :header, :header_static, :subscribable,
:followers_count, :following_count, :statuses_count, :last_status_at, :hide_collections, :other_settings, :noindex
@@ -115,6 +115,10 @@ def subscribable
object.all_subscribable?
end
+ def indexable
+ object.suspended? ? false : object.indexable
+ end
+
def moved_to_account
object.suspended? ? nil : AccountDecorator.new(object.moved_to_account)
end
diff --git a/app/views/admin/reports/_header_details.html.haml b/app/views/admin/reports/_header_details.html.haml
index 5878cd2ff8a529..45790b9cd50d75 100644
--- a/app/views/admin/reports/_header_details.html.haml
+++ b/app/views/admin/reports/_header_details.html.haml
@@ -22,7 +22,7 @@
= t('admin.reports.resolved')
- else
= t('admin.reports.unresolved')
- - unless report.target_account.local?
+ - if report.account.local? && !report.target_account.local?
.report-header__details__item
.report-header__details__item__header
%strong= t('admin.reports.forwarded')
diff --git a/app/views/admin/reports/show.html.haml b/app/views/admin/reports/show.html.haml
index 13a4d48344d068..4376e5af4d7a75 100644
--- a/app/views/admin/reports/show.html.haml
+++ b/app/views/admin/reports/show.html.haml
@@ -7,6 +7,9 @@
- else
= link_to t('admin.reports.mark_as_unresolved'), reopen_admin_report_path(@report), method: :post, class: 'button'
+- unless @report.account.local? || @report.target_account.local?
+ .flash-message= t('admin.reports.forwarded_replies_explanation')
+
.report-header
= render 'admin/reports/header_card', report: @report
= render 'admin/reports/header_details', report: @report
diff --git a/config/locales/activerecord.lt.yml b/config/locales/activerecord.lt.yml
index f54d00471b539a..cb6e21d8e87a93 100644
--- a/config/locales/activerecord.lt.yml
+++ b/config/locales/activerecord.lt.yml
@@ -1,6 +1,19 @@
---
lt:
activerecord:
+ attributes:
+ poll:
+ expires_at: Galutinė data
+ options: Pasirinkimai
+ user:
+ agreement: Paslaugos sutartis
+ email: El. laiško adresas
+ locale: Lokali
+ password: Slaptažodis
+ user/account:
+ username: Naudotojo vardas
+ user/invite_request:
+ text: Priežastis
errors:
models:
account:
@@ -12,3 +25,35 @@ lt:
attributes:
url:
invalid: nėra tinkamas URL adresas.
+ doorkeeper/application:
+ attributes:
+ website:
+ invalid: nėra tinkamas URL adresas.
+ import:
+ attributes:
+ data:
+ malformed: yra netaisyklinga.
+ status:
+ attributes:
+ reblog:
+ taken: įrašas jau egzistuoja.
+ user:
+ attributes:
+ email:
+ blocked: naudoja neleidžiamą el. laiško paslaugų teikėją.
+ unreachable: neatrodo, kad egzistuoja.
+ role_id:
+ elevated: negali būti didesnis nei tavo dabartinis vaidmuo.
+ user_role:
+ attributes:
+ permissions_as_keys:
+ dangerous: apima leidimus, kurie nėra saugūs pagrindiniam vaidmeniui.
+ elevated: negali apimti leidimų, kurių neturi tavo dabartinis vaidmuo.
+ own_role: negali būti pakeistas tavo dabartinis vaidmuo.
+ position:
+ elevated: negali būti didesnis nei tavo dabartinis vaidmuo.
+ own_role: negali būti pakeistas tavo dabartinis vaidmuo.
+ webhook:
+ attributes:
+ events:
+ invalid_permissions: negali įtraukti įvykių, į kuriuos neturi teisių.
diff --git a/config/locales/be.yml b/config/locales/be.yml
index 96a27201264c00..fa43373f6d5fd8 100644
--- a/config/locales/be.yml
+++ b/config/locales/be.yml
@@ -635,6 +635,7 @@ be:
created_at: Створана
delete_and_resolve: Выдаліць допісы
forwarded: Пераслана
+ forwarded_replies_explanation: Гэтае паведамленне паступіла ад выдаленага карыстальніка і дакранаецца выдаленага змесціва. Яно было накіраванае вам, бо змесціва паведамлення з'яўляецца адказам аднаму з вашых карыстальнікаў.
forwarded_to: Пераслана на %{domain}
mark_as_resolved: Пазначыць як вырашаную
mark_as_sensitive: Пазначыць як далікатны
@@ -1052,7 +1053,7 @@ be:
localization:
body: Mastodon перакладаецца добраахвотнікамі.
guide_link: https://be.crowdin.com/project/mastodon/be
- guide_link_text: Кожны можа зрабіць унёсак.
+ guide_link_text: Кожны і кожная можа зрабіць унёсак.
sensitive_content: Далікатны змест
application_mailer:
notification_preferences: Змяніць налады эл. пошты
@@ -1575,7 +1576,7 @@ be:
duration_too_short: гэта занадта хутка
expired: Апытанне ўжо скончана
invalid_choice: Абраны варыянт апытання не існуе
- over_character_limit: не можа быць даўжэй за %{max} сімвалаў кожны
+ over_character_limit: кожны не можа быць даўжэй за %{max} сімвалаў
self_vote: Вы не можаце галасаваць ва ўласных апытаннях
too_few_options: павінна быць болей за адзін варыянт
too_many_options: колькасць варыянтаў не можа перавышаць %{max}
@@ -1764,7 +1765,7 @@ be:
public: Публічны
public_long: Усе могуць бачыць
unlisted: Не ў спісе
- unlisted_long: Кожны можа ўбачыць гэты допіс, але ён не паказваецца ў публічных стужках
+ unlisted_long: Усе могуць пабачыць гэты допіс, але ён не паказваецца ў публічных стужках
statuses_cleanup:
enabled: Аўтаматычна выдаляць старыя допісы
enabled_hint: Аўтаматычна выдаляць вашыя допісы, калі яны дасягаюць вызначанага тэрміну, акрамя наступных выпадкаў
diff --git a/config/locales/bg.yml b/config/locales/bg.yml
index 9da83430199475..dfff7058dc0cfa 100644
--- a/config/locales/bg.yml
+++ b/config/locales/bg.yml
@@ -1368,6 +1368,7 @@ bg:
'86400': 1 ден
expires_in_prompt: Никога
generate: Генериране на линк за покана
+ invalid: Тази покана не е валидна
invited_by: 'Бяхте поканени от:'
max_uses:
one: 1 използване
diff --git a/config/locales/cs.yml b/config/locales/cs.yml
index 15ca09470894d3..a04682a4417bdb 100644
--- a/config/locales/cs.yml
+++ b/config/locales/cs.yml
@@ -1074,6 +1074,10 @@ cs:
hint_html: Ještě jedna věc! Musíme potvrdit, že jste člověk (to proto, abychom drželi stranou spam!). Vyřešte CAPTCHA níže a klikněte na "Pokračovat".
title: Bezpečnostní kontrola
confirmations:
+ awaiting_review_title: Vaše registrace se ověřuje
+ clicking_this_link: kliknutím na tento odkaz
+ registration_complete: Vaše registrace na %{domain} je hotová!
+ welcome_title: Vítám uživatele %{name}!
wrong_email_hint: Pokud není e-mail správný, můžete si ho změnit v nastavení účtu.
delete_account: Odstranit účet
delete_account_html: Chcete-li odstranit svůj účet, pokračujte zde. Budete požádáni o potvrzení.
@@ -1770,6 +1774,9 @@ cs:
default: "%d. %b %Y, %H:%M"
month: "%b %Y"
time: "%H:%M"
+ translation:
+ errors:
+ too_many_requests: Na překladatelskou službu bylo zasláno v poslední době příliš mnoho požadavků.
two_factor_authentication:
add: Přidat
disable: Vypnout 2FA
diff --git a/config/locales/da.yml b/config/locales/da.yml
index 13010e1adf17f2..7344d789ff2442 100644
--- a/config/locales/da.yml
+++ b/config/locales/da.yml
@@ -611,6 +611,7 @@ da:
created_at: Anmeldt
delete_and_resolve: Slet indlæg
forwarded: Videresendt
+ forwarded_replies_explanation: Denne anmeldelse er fra en ekstern bruger og om eksternt indhold. Den er videresendt til dig, da det anmeldte indhold er som svar til en af dine brugere.
forwarded_to: Videresendt til %{domain}
mark_as_resolved: Markér som løst
mark_as_sensitive: Markér som sensitiv
diff --git a/config/locales/de.yml b/config/locales/de.yml
index 81fa4b57f38049..69309737d4ae7d 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -611,6 +611,7 @@ de:
created_at: Gemeldet
delete_and_resolve: Beiträge löschen
forwarded: Weitergeleitet
+ forwarded_replies_explanation: Diese Meldung stammt von einem externen Profil und betrifft einen externen Inhalt. Der Inhalt wurde an Dich weitergeleitet, weil er eine Antwort auf ein bei Dir registriertes Profil ist.
forwarded_to: Weitergeleitet an %{domain}
mark_as_resolved: Als geklärt markieren
mark_as_sensitive: Mit einer Inhaltswarnung versehen
diff --git a/config/locales/devise.zh-TW.yml b/config/locales/devise.zh-TW.yml
index c01beb796b39db..de977426f2bb5b 100644
--- a/config/locales/devise.zh-TW.yml
+++ b/config/locales/devise.zh-TW.yml
@@ -9,7 +9,7 @@ zh-TW:
already_authenticated: 您已登入。
inactive: 您的帳號尚未啟用。
invalid: 無效的 %{authentication_keys} 或密碼。
- last_attempt: 在帳號鎖定前,您還有最後一次嘗試機會。
+ last_attempt: 帳號鎖定前,您還有最後一次嘗試機會。
locked: 已鎖定您的帳號。
not_found_in_database: 無效的 %{authentication_keys} 或密碼。
pending: 您的帳號仍在審核中。
@@ -20,8 +20,8 @@ zh-TW:
confirmation_instructions:
action: 驗證電子郵件地址
action_with_app: 確認並返回 %{app}
- explanation: 您已經在 %{host} 上以此電子郵件地址建立了一支帳號。您距離啟用它只剩一點之遙了。若這不是您,請忽略此信件。
- explanation_when_pending: 您使用此電子郵件地址申請了 %{host} 的邀請。當您確認電子郵件地址後我們將審核您的申請。您可以在登入後變更詳細資訊或刪除您的帳號,但直到您的帳號被核准之前,您無法操作大部分的功能。若您的申請遭拒絕,您的資料將被移除而不必做後續動作。如果這不是您本人,請忽略此郵件。
+ explanation: 您已於 %{host} 上以此電子郵件地址建立了一支帳號。您距離啟用它只剩一點之遙了。若這不是您,請忽略此信件。
+ explanation_when_pending: 您使用此電子郵件地址申請了 %{host} 的邀請。當您確認電子郵件地址後我們將審核您的申請。您能於登入後變更詳細資訊或刪除您的帳號,但直到您的帳號被核准之前,您無法操作大部分的功能。若您的申請遭拒絕,您的資料將被移除而不必做後續動作。如果這不是您本人,請忽略此郵件。
extra_html: 同時也請看看伺服器規則與服務條款。
subject: Mastodon:%{instance} 確認說明
title: 驗證電子郵件地址
@@ -37,7 +37,7 @@ zh-TW:
title: 密碼已變更
reconfirmation_instructions:
explanation: 請確認新的電子郵件地址以變更。
- extra: 若此次變更不是由您起始的,請忽略此信件。Mastodon 帳號的電子郵件地址在您存取上面的連結前不會變更。
+ extra: 若此次變更不是由您起始的,請忽略此信件。Mastodon 帳號的電子郵件地址於您存取上面的連結前不會變更。
subject: Mastodon:確認 %{instance} 的電子郵件地址
title: 驗證電子郵件地址
reset_password_instructions:
@@ -106,7 +106,7 @@ zh-TW:
errors:
messages:
already_confirmed: 已經確認,請嘗試登入
- confirmation_period_expired: 需要在 %{period} 內完成驗證。請重新申請
+ confirmation_period_expired: 您需要於 %{period} 內完成驗證。請重新申請
expired: 已經過期,請重新請求
not_found: 找不到
not_locked: 並未鎖定
diff --git a/config/locales/doorkeeper.zh-TW.yml b/config/locales/doorkeeper.zh-TW.yml
index 6073096c3105c0..c0d42ec7b3ce7f 100644
--- a/config/locales/doorkeeper.zh-TW.yml
+++ b/config/locales/doorkeeper.zh-TW.yml
@@ -72,7 +72,7 @@ zh-TW:
revoke: 您確定嗎?
index:
authorized_at: 於 %{date} 授權
- description_html: 這些應用程式能透過 API 存取您的帳號。若有您不認得之應用程式,或應用程式行為異常,您可以於此註銷其存取權限。
+ description_html: 這些應用程式能透過 API 存取您的帳號。若有您不認得之應用程式,或應用程式行為異常,您能於此註銷其存取權限。
last_used_at: 上次使用時間 %{date}
never_used: 從未使用
scopes: 權限
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 5e5bbe7741bbf3..f047fc54224b5e 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -712,6 +712,7 @@ en:
delete_and_resolve: Delete posts
force_cw: Add warning
forwarded: Forwarded
+ forwarded_replies_explanation: This report is from a remote user and about remote content. It has been forwarded to you because the reported content is in reply to one of your users.
forwarded_to: Forwarded to %{domain}
mark_as_resolved: Mark as resolved
mark_as_sensitive: Mark as sensitive
diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml
index 9175a1fc1a5d3e..88248d09862729 100644
--- a/config/locales/es-AR.yml
+++ b/config/locales/es-AR.yml
@@ -611,6 +611,7 @@ es-AR:
created_at: Denunciado
delete_and_resolve: Eliminar mensajes
forwarded: Reenviado
+ forwarded_replies_explanation: Esta denuncia es de un usuario remoto y sobre contenido remoto. Se te reenvió porque el contenido denunciado es en respuesta a uno de tus usuarios.
forwarded_to: Reenviado a %{domain}
mark_as_resolved: Marcar como resuelta
mark_as_sensitive: Marcar como sensible
diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml
index 75d329b0aecf6a..4ecb666b07ba3e 100644
--- a/config/locales/es-MX.yml
+++ b/config/locales/es-MX.yml
@@ -611,6 +611,7 @@ es-MX:
created_at: Denunciado
delete_and_resolve: Eliminar publicaciones
forwarded: Reenviado
+ forwarded_replies_explanation: Este reporte es de un usuario remoto y sobre contenido remoto. Se le ha enviado porque el contenido reportado es en respuesta a uno de sus usuarios.
forwarded_to: Reenviado a %{domain}
mark_as_resolved: Marcar como resuelto
mark_as_sensitive: Marcar como sensible
diff --git a/config/locales/fi.yml b/config/locales/fi.yml
index 4fe0179dfe0229..73442396fcb093 100644
--- a/config/locales/fi.yml
+++ b/config/locales/fi.yml
@@ -611,6 +611,7 @@ fi:
created_at: Raportoitu
delete_and_resolve: Poista julkaisut
forwarded: Välitetty
+ forwarded_replies_explanation: Tämä raportti on etäkäyttäjältä ja koskee etäsisältöä. Se on välitetty sinulle, koska raportoitu sisältö on vastaus jollekin käyttäjällesi.
forwarded_to: Välitetty %{domain}
mark_as_resolved: Merkitse ratkaistuksi
mark_as_sensitive: Merkitse arkaluonteiseksi
@@ -1368,6 +1369,7 @@ fi:
'86400': 1 vuorokausi
expires_in_prompt: Ei koskaan
generate: Luo
+ invalid: Tämä kutsu ei ole kelvollinen
invited_by: 'Sinut kutsui:'
max_uses:
one: kertakäyttöinen
diff --git a/config/locales/he.yml b/config/locales/he.yml
index 11e5db4539262f..35dc99650c9b67 100644
--- a/config/locales/he.yml
+++ b/config/locales/he.yml
@@ -635,6 +635,7 @@ he:
created_at: מדווח
delete_and_resolve: מחיקת הודעות
forwarded: קודם
+ forwarded_replies_explanation: דווח זה הגיע מחשבון משתמש חיצוני על תוכן חיצוני. הוא הועבר אליך כיוון שהתוכן שדווח הוא בתשובה למשתמש.ת שלך.
forwarded_to: קודם ל-%{domain}
mark_as_resolved: סימון כפתור
mark_as_sensitive: סימון כרגיש
@@ -786,7 +787,7 @@ he:
public_timelines: פידים פומביים
publish_discovered_servers: פרסום שרתים שנתגלו
publish_statistics: פרסום הסטטיסטיקות בפומבי
- title: גילוי
+ title: תגליות
trends: נושאים חמים
domain_blocks:
all: לכולם
@@ -1048,7 +1049,7 @@ he:
advanced_web_interface_hint: 'אם ברצונך לעשות שימוש במלוא רוחב המסך, ממשק הווב המתקדם מאפשר לך להגדיר עמודות רבות ושונות כדי לראות בו זמנית כמה מידע שתרצה/י: פיד הבית, התראות, פרהסיה ומספר כלשהו של רשימות ותגיות.'
animations_and_accessibility: הנפשות ונגישות
confirmation_dialogs: חלונות אישור
- discovery: גילוי
+ discovery: תגליות
localization:
body: מסטודון מתורגם על ידי מתנדבים.
guide_link: https://crowdin.com/project/mastodon
@@ -1336,7 +1337,7 @@ he:
deselect: בטל בחירה של הכל
none: כלום
order_by: מיין לפי
- save_changes: שמור שינויים
+ save_changes: לשמור שינויים
select_all_matching_items:
many: בחר.י %{count} פריטים שתאמו לחיפוש שלך.
one: בחר.י פריט %{count} שתאם לחיפוש שלך.
@@ -1780,7 +1781,7 @@ he:
keep_media_hint: לא מוחק את הודעותיך שמצורפים אליהן קבצי מדיה
keep_pinned: שמור הודעות מוצמדות
keep_pinned_hint: לא מוחק אף אחד מההודעות המוצמדות שלך
- keep_polls: שמור סקרים
+ keep_polls: לשמור סקרים
keep_polls_hint: לא מוחר אף אחד מהסקרים שלך
keep_self_bookmark: שמור הודעות שסימנת
keep_self_bookmark_hint: לא מוחק הודעות שסימנת
@@ -1868,7 +1869,7 @@ he:
disable: אינך יכול/ה יותר להשתמש בחשבונך, אבל הפרופיל ושאר המידע נשארו על עומדם. ניתן לבקש גיבוי של המידע, לשנות את הגדרות החשבון או למחוק אותו.
mark_statuses_as_sensitive: כמה מהודעותיך סומנו כרגישות על ידי מנחי הקהילה של %{instance}. זה אומר שאנשים יצטרכו להקיש על המדיה בהודעות לפני שתופיע תצוגה מקדימה. ניתן לסמן את המידע כרגיש בעצמך בהודעותיך העתידיות.
sensitive: מעתה ואילך כל קבצי המדיה שיועלו על ידך יסומנו כרגישים ויוסתרו מאחורי אזהרה.
- silence: ניתן עדיין להשתמש בחשבונך אבל רק אנשים שכבר עוקבים אחריך יראו את הודעותיך בשרת זה, וייתכן שתוחרג/י מאמצעי גילוי משתמשים. עם זאת, אחרים יוכלו עדיין לעקוב אחריך.
+ silence: ניתן עדיין להשתמש בחשבונך אבל רק אנשים שכבר עוקבים אחריך יראו את הודעותיך בשרת זה, וייתכן שתוחרג/י ממסכי התגליות. עם זאת, אחרים יוכלו עדיין לעקוב אחריך.
suspend: לא ניתן יותר להשתמש בחשבונך, ופרופילך וכל מידע אחר לא נגישים יותר. ניתן עדיין להתחבר על מנת לבקש גיבוי של המידע שלך עד שיוסר סופית בעוד כ-30 יום, אבל מידע מסויים ישמר על מנת לוודא שלא תחמוק/י מההשעיה.
reason: 'סיבה:'
statuses: 'הודעות מצוטטות:'
diff --git a/config/locales/hu.yml b/config/locales/hu.yml
index 48f9d5b9d1c5aa..a0ff3061fc7acf 100644
--- a/config/locales/hu.yml
+++ b/config/locales/hu.yml
@@ -611,6 +611,7 @@ hu:
created_at: Jelentve
delete_and_resolve: Bejegyzések törlése
forwarded: Továbbítva
+ forwarded_replies_explanation: Ez a jelentés egy távoli felhasználótól származik, és távoli tartalomról szól. Azért lett neked továbbítva, mert a jelentett tartalom az egyik felhasználódnak küldött válasz.
forwarded_to: 'Továbbítva ide: %{domain}'
mark_as_resolved: Megjelölés megoldottként
mark_as_sensitive: Érzékenynek jelölés
diff --git a/config/locales/is.yml b/config/locales/is.yml
index 390ce0ac03c9a0..a4706ee51a72b4 100644
--- a/config/locales/is.yml
+++ b/config/locales/is.yml
@@ -611,6 +611,7 @@ is:
created_at: Tilkynnt
delete_and_resolve: Eyða færslum
forwarded: Áframsent
+ forwarded_replies_explanation: Þessi kæra er frá fjartengdum notanda og er um fjartengt efni. Hún hefur verið framsend til þín þar sem kærða efnið er í svari til eins af notendunum þínum.
forwarded_to: Áframsent á %{domain}
mark_as_resolved: Merkja sem leyst
mark_as_sensitive: Merkja sem viðkvæmt
diff --git a/config/locales/it.yml b/config/locales/it.yml
index f35e9e42b17e26..82bbf7251854a3 100644
--- a/config/locales/it.yml
+++ b/config/locales/it.yml
@@ -611,6 +611,7 @@ it:
created_at: Segnalato
delete_and_resolve: Cancella post
forwarded: Inoltrato
+ forwarded_replies_explanation: Questa segnalazione proviene da un utente remoto e tratta di contenuti remoti. È stato inoltrato a voi perché il contenuto riportato è in risposta a uno dei vostri utenti.
forwarded_to: Inoltrato a %{domain}
mark_as_resolved: Segna come risolto
mark_as_sensitive: Segna come sensibile
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index fb193c75f68aea..e11081fcdf213f 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -601,6 +601,7 @@ ko:
created_at: 신고 시각
delete_and_resolve: 게시물 삭제
forwarded: 전달됨
+ forwarded_replies_explanation: 이 신고는 리모트 사용자가 리모트 컨텐츠에 대해 신고한 것입니다. 이것은 신고된 내용이 로컬 사용자에 대한 답글이기 때문에 첨부되었습니다.
forwarded_to: "%{domain}에게 전달됨"
mark_as_resolved: 해결로 표시
mark_as_sensitive: 민감함으로 설정
diff --git a/config/locales/lt.yml b/config/locales/lt.yml
index 529eb5a44c2394..035b04462efe74 100644
--- a/config/locales/lt.yml
+++ b/config/locales/lt.yml
@@ -214,6 +214,7 @@ lt:
comment:
none: Nėra
created_at: Reportuotas
+ forwarded_replies_explanation: Šis ataskaita yra iš nuotolinio naudotojo ir susijusi su nuotoliniu turiniu. Jis buvo persiųstas tau, nes turinys, apie kurį pranešta, yra atsakymas vienam iš tavo naudotojų.
mark_as_resolved: Pažymėti kaip išsprestą
mark_as_unresolved: Pažymėti kaip neišsprestą
notes:
diff --git a/config/locales/nl.yml b/config/locales/nl.yml
index 94a1f29f7f631a..4147078d307f06 100644
--- a/config/locales/nl.yml
+++ b/config/locales/nl.yml
@@ -611,6 +611,7 @@ nl:
created_at: Gerapporteerd op
delete_and_resolve: Bericht verwijderen
forwarded: Doorgestuurd
+ forwarded_replies_explanation: Dit rapport komt van een externe gebruiker en gaat over externe inhoud. Het is naar u doorgestuurd omdat de gerapporteerde inhoud een reactie is op een van uw gebruikers.
forwarded_to: Doorgestuurd naar %{domain}
mark_as_resolved: Markeer als opgelost
mark_as_sensitive: Als gevoelig markeren
diff --git a/config/locales/nn.yml b/config/locales/nn.yml
index 4925d446326a4c..09de24a672801b 100644
--- a/config/locales/nn.yml
+++ b/config/locales/nn.yml
@@ -611,6 +611,7 @@ nn:
created_at: Rapportert
delete_and_resolve: Slett innlegg
forwarded: Videresendt
+ forwarded_replies_explanation: Denne rapporten er fra en ekstern bruker og handler om eksternt innhold. Den er videresendt til deg fordi det rapporterte innholdet svarer til en av brukerne dine.
forwarded_to: Videresendt til %{domain}
mark_as_resolved: Merk som løyst
mark_as_sensitive: Marker som ømtolig
diff --git a/config/locales/no.yml b/config/locales/no.yml
index a1058bf9f26894..3cf2df3a1bf6ec 100644
--- a/config/locales/no.yml
+++ b/config/locales/no.yml
@@ -611,6 +611,7 @@
created_at: Rapportert
delete_and_resolve: Slettede innlegg
forwarded: Videresendt
+ forwarded_replies_explanation: Denne rapporten er fra en ekstern bruker og handler om eksternt innhold. Den er videresendt til deg fordi det rapporterte innholdet svarer til en av brukerne dine.
forwarded_to: Videresendt til %{domain}
mark_as_resolved: Merk som løst
mark_as_sensitive: Merk som følsomt
diff --git a/config/locales/pl.yml b/config/locales/pl.yml
index 60859972481768..4ff81e11e035f8 100644
--- a/config/locales/pl.yml
+++ b/config/locales/pl.yml
@@ -419,8 +419,8 @@ pl:
hint: Blokada domen nie zabroni tworzenia wpisów kont w bazie danych, ale pozwoli na automatyczną moderację kont do nich należących.
severity:
desc_html: "Wyciszenie uczyni wpisy użytkowników z tej domeny widoczne tylko dla osób, które go obserwują. Zawieszenie spowoduje usunięcie całej zawartości dodanej przez użytkownika. Użyj Żadne, jeżeli chcesz jedynie odrzucać zawartość multimedialną."
- noop: Nic nie rób
- silence: Limit
+ noop: Żadne
+ silence: Wycisz
suspend: Zawieś
title: Nowa blokada domen
no_domain_block_selected: Nie zmieniono żadnych bloków domen, gdyż żadna nie została wybrana
@@ -635,6 +635,7 @@ pl:
created_at: Zgłoszono
delete_and_resolve: Usuń posty
forwarded: Przekazano
+ forwarded_replies_explanation: Ten raport nadszedł od zdalnego użytkownika i dotyczy zdalnej treści. Został ci przekazany, bo raportowana treść jest odpowiedzią na jednego z twoich użytkowników.
forwarded_to: Przekazano do %{domain}
mark_as_resolved: Oznacz jako rozwiązane
mark_as_sensitive: Oznacz jako wrażliwe
diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml
index ce7479aa86ad55..8e147ce4c31e6e 100644
--- a/config/locales/pt-PT.yml
+++ b/config/locales/pt-PT.yml
@@ -611,6 +611,7 @@ pt-PT:
created_at: Denunciado
delete_and_resolve: Eliminar publicações
forwarded: Encaminhado
+ forwarded_replies_explanation: Esta denúncia é de um utilizador remoto e sobre conteúdo remoto. Foi encaminhada para si porque o conteúdo denunciado é em resposta a um dos seus utilizadores.
forwarded_to: Encaminhado para %{domain}
mark_as_resolved: Marcar como resolvido
mark_as_sensitive: Marcar como problemático
diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml
index bada4c3d0f10c7..29f2398a90d66c 100644
--- a/config/locales/simple_form.fi.yml
+++ b/config/locales/simple_form.fi.yml
@@ -188,7 +188,7 @@ fi:
email: Sähköpostiosoite
expires_in: Vanhenee
fields: Lisäkentät
- header: Otsikkokuva
+ header: Otsakekuva
honeypot: "%{label} (älä täytä)"
inbox_url: Välittäjän postilaatikon URL-osoite
irreversible: Pudota piilottamisen sijaan
diff --git a/config/locales/simple_form.he.yml b/config/locales/simple_form.he.yml
index 13ea8a0c4f334b..04b21cd1b06151 100644
--- a/config/locales/simple_form.he.yml
+++ b/config/locales/simple_form.he.yml
@@ -85,7 +85,7 @@ he:
mascot: בחירת ציור למנשק הווב המתקדם.
media_cache_retention_period: קבצי מדיה שהורדו ימחקו אחרי מספר הימים שיצוינו אם נבחר מספר חיובי, או-אז יורדו שוב מחדש בהתאם לצורך.
peers_api_enabled: רשימת השרתים ששרת זה פגש בפדיוורס. לא כולל מידע לגבי קשר ישיר עם שרת נתון, אלא רק שידוע לשרת זה על קיומו. מידע זה משמש שירותים האוספים סטטיסטיקות כלליות על הפדרציה.
- profile_directory: מדריך הפרופילים מפרט את כל המשתמשים שביקשו להיות ניתנים לגילוי.
+ profile_directory: ספריית הפרופילים מציגה ברשימה את כל המשתמשים שביקשו להיות ניתנים לגילוי.
require_invite_text: כאשר הרשמות דורשות אישור ידני, הפיכת טקסט ה"מדוע את/ה רוצה להצטרף" להכרחי במקום אופציונלי
site_contact_email: מה היא הדרך ליצור איתך קשר לצורך תמיכה או לצורך תאימות עם החוק.
site_contact_username: כיצד יכולים אחרים ליצור איתך קשר על רשת מסטודון.
@@ -140,7 +140,7 @@ he:
url: היעד שאליו יישלחו אירועים
labels:
account:
- discoverable: חשיפת פרופיל משתמש והודעות לאלגוריתם של האתר
+ discoverable: הצג משתמש ופוסטים בעמוד התגליות
fields:
name: תווית
value: תוכן
@@ -188,7 +188,7 @@ he:
email: כתובת דוא"ל
expires_in: תפוגה לאחר
fields: מטא-נתונים על הפרופיל
- header: כותרת
+ header: תמונת נושא
honeypot: "%{label} (לא למלא)"
inbox_url: קישורית לתיבת ממסר
irreversible: הסרה במקום הסתרה
diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml
index 7b26561553ed5c..720012a3104971 100644
--- a/config/locales/simple_form.ko.yml
+++ b/config/locales/simple_form.ko.yml
@@ -4,7 +4,7 @@ ko:
hints:
account:
discoverable: 내 공개 게시물과 프로필이 마스토돈의 다양한 추천 기능에 나타날 수 있고 프로필이 다른 사용자에게 제안될 수 있습니다
- display_name: 실명 혹은 별명.
+ display_name: 진짜 이름 또는 재미난 이름.
fields: 홈페이지, 호칭, 나이, 뭐든지 적고 싶은 것들.
indexable: 내 공개 게시물이 마스토돈의 검색 결과에 나타날 수 있습니다. 내 게시물과 상호작용했던 사람들은 이 설정과 관계 없이 그 게시물을 검색할 수 있습니다.
note: '남을 @mention 하거나 #hashtag 태그를 달 수 있습니다.'
@@ -195,7 +195,7 @@ ko:
locale: 인터페이스 언어
max_uses: 사용 횟수 제한
new_password: 새로운 암호 입력
- note: 소개
+ note: 자기소개
otp_attempt: 이중 인증 코드
password: 암호
phrase: 키워드 또는 문장
diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml
index be21f862f31352..13b2ad30af6d46 100644
--- a/config/locales/simple_form.zh-TW.yml
+++ b/config/locales/simple_form.zh-TW.yml
@@ -15,25 +15,25 @@ zh-TW:
account_migration:
acct: 指定要移動至的帳號的「使用者名稱@網域名稱」
account_warning_preset:
- text: 您可使用嘟文語法,例如網址、「#」標籤和提及功能
- title: 可選。不會向收件者顯示
+ text: 您可使用嘟文語法,例如網址、「#」標籤與提及功能
+ title: 可選的。不會向收件者顯示
admin_account_action:
include_statuses: 使用者可看到導致檢舉或警告的嘟文
send_email_notification: 使用者將收到帳號發生之事情的解釋
- text_html: 選用。您能使用嘟文語法。您可 新增警告預設 來節省時間
+ text_html: 可選的。您能使用嘟文語法。您可 新增警告預設 來節省時間
type_html: 設定要使用 %{acct} 做的事
types:
disable: 禁止該使用者使用他們的帳號,但是不刪除或隱藏他們的內容。
none: 使用這個寄送警告給該使用者,而不進行其他動作。
sensitive: 強制標記此使用者所有多媒體附加檔案為敏感內容。
- silence: 禁止該使用者發公開嘟文,從無跟隨他們的帳號中隱藏嘟文和通知。關閉所有對此帳號之檢舉報告。
+ silence: 禁止該使用者發公開嘟文,從無跟隨他們的帳號中隱藏嘟文與通知。關閉所有對此帳號之檢舉報告。
suspend: 禁止所有對該帳號任何互動,並且刪除其內容。三十天內可以撤銷此動作。關閉所有對此帳號之檢舉報告。
- warning_preset_id: 選用。您仍可在預設的結尾新增自訂文字
+ warning_preset_id: 可選的。您仍可於預設的結尾新增自訂文字
announcement:
all_day: 當選取時,僅顯示出時間範圍中的日期部分
- ends_at: 可選的,公告會於該時間點自動取消發布
+ ends_at: 可選的。公告會於該時間點自動取消發布
scheduled_at: 空白則立即發布公告
- starts_at: 可選的,讓公告在特定時間範圍內顯示
+ starts_at: 可選的。讓公告於特定時間範圍內顯示
text: 您可以使用嘟文語法,但請小心別讓公告太鴨霸而佔據使用者的整個版面。
appeal:
text: 您只能對警示提出一次申訴
@@ -44,12 +44,12 @@ zh-TW:
context: 此過濾器應套用於以下一項或多項情境
current_password: 因安全因素,請輸入目前帳號的密碼
current_username: 請輸入目前帳號的使用者名稱以確認
- digest: 僅在您長時間未登入且在未登入期間收到私訊時傳送
+ digest: 僅於您長時間未登入且於未登入期間收到私訊時傳送
email: 您將收到一封確認電子郵件
header: 支援 PNG、GIF 或 JPG 圖片格式,檔案最大為 %{size},會等比例縮減至 %{dimensions} 像素
inbox_url: 從您想要使用的中繼首頁複製網址
irreversible: 已過濾的嘟文將會不可逆地消失,即便之後移除過濾器也一樣
- locale: 使用者介面、電子郵件和推播通知的語言
+ locale: 使用者介面、電子郵件與推播通知的語言
password: 使用至少 8 個字元
phrase: 無論是嘟文的本文或是內容警告都會被過濾
scopes: 允許讓應用程式存取的 API。 若您選擇最高階範圍,則無須選擇個別項目。
@@ -62,12 +62,12 @@ zh-TW:
setting_use_blurhash: 彩色漸層圖樣是基於隱藏媒體內容顏色產生,所有細節將變得模糊
setting_use_pending_items: 關閉自動捲動更新,時間軸僅於點擊後更新
username: 您可以使用字幕、數字與底線
- whole_word: 如果關鍵字或詞組僅有字母與數字,則其將只在符合整個單字的時候才會套用
+ whole_word: 如果關鍵字或詞組僅有字母與數字,則其將只於符合整個單字時才會套用
domain_allow:
- domain: 此網域將能夠攫取本站資料,而自該網域發出的資料也會於本站處理和留存。
+ domain: 此網域將能夠攫取本站資料,而自該網域發出的資料也會於本站處理及留存。
email_domain_block:
- domain: 這可以是顯示在電子郵件中的網域名稱,或是其使用的 MX 紀錄。其將於註冊時檢查。
- with_dns_records: Mastodon 會嘗試解析所給網域的 DNS 記錄,解析結果一致者將一併封鎖
+ domain: 這可以是顯示於電子郵件中的網域名稱,或是其使用的 MX 紀錄。其將於註冊時檢查。
+ with_dns_records: Mastodon 會嘗試解析所提供之網域的 DNS 記錄,解析結果一致者將一併封鎖
featured_tag:
name: 這些是您最近使用的一些主題標籤:
filters:
@@ -97,7 +97,7 @@ zh-TW:
theme: 未登入之訪客或新使用者所見之佈景主題。
thumbnail: 大約 2:1 圖片會顯示於您伺服器資訊之旁。
timeline_preview: 未登入之訪客能夠瀏覽此伺服器上最新的公開嘟文。
- trendable_by_default: 跳過手動審核熱門內容。仍能在登上熱門趨勢後移除個別內容。
+ trendable_by_default: 跳過手動審核熱門內容。仍能於登上熱門趨勢後移除個別內容。
trends: 熱門趨勢將顯示於您伺服器上正在吸引大量注意力的嘟文、主題標籤、或者新聞。
trends_as_landing_page: 顯示熱門趨勢內容給未登入使用者及訪客而不是關於此伺服器之描述。需要啟用熱門趨勢。
form_challenge:
@@ -107,9 +107,9 @@ zh-TW:
invite_request:
text: 這會協助我們審核您的申請
ip_block:
- comment: 可選的,但請記得您為何添加這項規則。
+ comment: 可選的。但請記得您為何添加這項規則。
expires_in: IP 位址是經常共用或轉手的有限資源,不建議無限期地封鎖特定 IP 位址。
- ip: 請輸入 IPv4 或 IPv6 位址,亦可以用 CIDR 語法以封鎖整個 IP 區段。小心不要將自己給一併封鎖掉囉!
+ ip: 請輸入 IPv4 或 IPv6 位址,亦可以用 CIDR 語法以封鎖整個 IP 區段。小心不要將自己一併封鎖掉囉!
severities:
no_access: 封鎖對所有資源存取
sign_up_block: 無法註冊新帳號
@@ -129,11 +129,11 @@ zh-TW:
chosen_languages: 當選取時,只有選取語言之嘟文會於公開時間軸中顯示
role: 角色控制使用者有哪些權限
user_role:
- color: 在整個使用者介面中用於角色的顏色,十六進位格式的 RGB
+ color: 於整個使用者介面中用於角色的顏色,十六進位格式的 RGB
highlighted: 這會讓角色公開可見
name: 角色的公開名稱,如果角色設定為顯示為徽章
- permissions_as_keys: 有此角色的使用者將有權存取……
- position: 在某些情況下,衝突的解決方式由更高階的角色決定。某些動作只能由優先程度較低的角色執行
+ permissions_as_keys: 有此角色的使用者將有權存取...
+ position: 某些情況下,衝突的解決方式由更高階的角色決定。某些動作只能由優先程度較低的角色執行
webhook:
events: 請選擇要傳送的事件
template: 使用變數代換組合您自己的 JSON payload。留白以使用預設 JSON 。
@@ -155,7 +155,7 @@ zh-TW:
text: 預設文字
title: 標題
admin_account_action:
- include_statuses: 在電子郵件中加入檢舉的嘟文
+ include_statuses: 於電子郵件中加入檢舉之嘟文內容
send_email_notification: 透過電子郵件通知使用者
text: 自訂警告
type: 動作
@@ -230,7 +230,7 @@ zh-TW:
username_or_email: 使用者名稱或電子郵件地址
whole_word: 整個詞彙
email_domain_block:
- with_dns_records: 包括網域的 MX 記錄和 IP 位址
+ with_dns_records: 包括網域的 MX 記錄與 IP 位址
featured_tag:
name: "「#」主題標籤"
filters:
@@ -287,7 +287,7 @@ zh-TW:
favourite: 當有使用者將您的嘟文加入最愛時,傳送電子郵件通知
follow: 當有使用者跟隨您時,傳送電子郵件通知
follow_request: 當有使用者請求跟隨您時,傳送電子郵件通知
- mention: 當有使用者在嘟文提及您時,傳送電子郵件通知
+ mention: 當有使用者於嘟文提及您時,傳送電子郵件通知
pending_account: 有新的帳號需要審核
reblog: 當有使用者轉嘟您的嘟文時,傳送電子郵件通知
report: 新回報已遞交
@@ -304,16 +304,16 @@ zh-TW:
indexable: 於搜尋引擎中包含個人檔案頁面
show_application: 顯示您發嘟文之應用程式
tag:
- listable: 允許此主題標籤在搜尋及個人檔案目錄中顯示
+ listable: 允許此主題標籤於搜尋及個人檔案目錄中顯示
name: 主題標籤
- trendable: 允許此主題標籤在熱門趨勢下顯示
+ trendable: 允許此主題標籤於熱門趨勢下顯示
usable: 允許嘟文使用此主題標籤
user:
role: 角色
time_zone: 時區
user_role:
color: 識別顏色
- highlighted: 在使用者個人檔案上將角色顯示為徽章
+ highlighted: 於使用者個人檔案中顯示角色徽章
name: 名稱
permissions_as_keys: 權限
position: 優先權
diff --git a/config/locales/sq.yml b/config/locales/sq.yml
index bd01a808902caa..b6a7736dfbc6cd 100644
--- a/config/locales/sq.yml
+++ b/config/locales/sq.yml
@@ -1,18 +1,18 @@
---
sq:
about:
- about_mastodon_html: 'Rrjeti shoqëror i së ardhmes: Pa reklama, pa survejim nga korporata, konceptim etik dhe decentralizim! Jini zot i të dhënave tuaja, me Mastodon-in!'
- contact_missing: I parregulluar
+ about_mastodon_html: 'Rrjeti social i së ardhmes: Pa reklama, pa sy vëzhguese nga korporata, etik dhe i decentralizuar! Merrni sërisht zotësinë e të dhënave tuaja, me Mastodon!'
+ contact_missing: E pacaktuar
contact_unavailable: N/A
- hosted_on: Mastodon i strehuar në %{domain}
+ hosted_on: Server Mastodon i strehuar në %{domain}
title: Mbi
accounts:
follow: Ndiqeni
followers:
one: Ndjekës
other: Ndjekës
- following: Ndjekje
- instance_actor_flash: Kjo llogari është një aktor virtual, i përdorur për të përfaqësuar vetë shërbyesin dhe jo ndonjë përdorues individual. Përdoret për qëllime federimi dhe s’duhet pezulluar.
+ following: Po ndjek
+ instance_actor_flash: Kjo llogari është një aktor virtual, i përdorur për të përfaqësuar vetë serverin dhe jo ndonjë përdorues. Përdoret për qëllime federimi dhe s’duhet pezulluar.
last_active: aktiv së fundi
link_verified_on: Pronësia e kësaj lidhjeje qe kontrolluar më %{date}
nothing_here: S’ka gjë këtu!
@@ -610,6 +610,7 @@ sq:
created_at: Raportuar më
delete_and_resolve: Fshiji postimet
forwarded: U përcoll
+ forwarded_replies_explanation: Ky raportim është nga një përdorues i largët dhe rreth lënde të largët. Ju është përcjellë ngaqë lënda e raportuar gjendet në përgjigje ndaj njërit prej përdoruesve tuaj.
forwarded_to: U përcoll te %{domain}
mark_as_resolved: Vëri shenjë si i zgjidhur
mark_as_sensitive: Vëri shenjë si rezervat
@@ -925,6 +926,7 @@ sq:
peaked_on_and_decaying: Kulmoi më %{date}, tani në rënie
title: Hashtag-ë në modë
trendable: Mund të shfaqet nën të modës
+ trending_rank: 'Trending #%{rank}'
usable: Mund të përdoret
usage_comparison: Përdorur %{today} herë sot, krahasuar me %{yesterday} dje
used_by_over_week:
diff --git a/config/locales/th.yml b/config/locales/th.yml
index 6618998962491a..79d668d3e47006 100644
--- a/config/locales/th.yml
+++ b/config/locales/th.yml
@@ -599,6 +599,7 @@ th:
created_at: รายงานเมื่อ
delete_and_resolve: ลบโพสต์
forwarded: ส่งต่อแล้ว
+ forwarded_replies_explanation: รายงานนี้มาจากผู้ใช้ระยะไกล และเป็นรายงานเกี่ยวกับเนื้อหาระยะไกล ซึ่งถูกส่งต่อมาหาคุณเนื่องจากเนื้อหาที่ถูกรายงานอยู่ในการตอบกลับไปยังหนึ่งในผู้ใช้ของคุณ
forwarded_to: ส่งต่อไปยัง %{domain} แล้ว
mark_as_resolved: ทำเครื่องหมายว่าแก้ปัญหาแล้ว
mark_as_sensitive: ทำเครื่องหมายว่าละเอียดอ่อน
diff --git a/config/locales/uk.yml b/config/locales/uk.yml
index 2261c647ba74c8..e9eee14a1e42ad 100644
--- a/config/locales/uk.yml
+++ b/config/locales/uk.yml
@@ -635,6 +635,7 @@ uk:
created_at: Створено
delete_and_resolve: Видалити дописи
forwarded: Переслано
+ forwarded_replies_explanation: Цей звіт належить віддаленому користувачеві і про віддалений вміст. Контент був пересланий вам, тому що він містить повідомлення у відповідь одному з ваших користувачів.
forwarded_to: Переслано до %{domain}
mark_as_resolved: Позначити вирішеним
mark_as_sensitive: Позначити делікатним
diff --git a/config/locales/vi.yml b/config/locales/vi.yml
index ec8f6c1395a966..9d90d1d516af7a 100644
--- a/config/locales/vi.yml
+++ b/config/locales/vi.yml
@@ -1343,6 +1343,7 @@ vi:
'86400': 1 ngày
expires_in_prompt: Không giới hạn
generate: Tạo lời mời
+ invalid: Lời mời không hợp lệ
invited_by: 'Bạn đã được mời bởi:'
max_uses:
other: "%{count} lần dùng"
diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml
index f13cedad6ef064..5dd0d2e612261c 100644
--- a/config/locales/zh-HK.yml
+++ b/config/locales/zh-HK.yml
@@ -599,6 +599,7 @@ zh-HK:
created_at: 日期
delete_and_resolve: 刪除帖文
forwarded: 已轉寄
+ forwarded_replies_explanation: 這份檢舉來自一位遠端使用者,並涉及遠端內容。之所以轉交給你,是因為被檢舉的內容是回覆你其中一位使用者。
forwarded_to: 已轉寄到 %{domain}
mark_as_resolved: 標示為「已處理」
mark_as_sensitive: 標記為敏感內容
diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml
index 3063b7afd1b8c0..2f65855fc0ff3b 100644
--- a/config/locales/zh-TW.yml
+++ b/config/locales/zh-TW.yml
@@ -1,10 +1,10 @@
---
zh-TW:
about:
- about_mastodon_html: Mastodon (長毛象)是一個自由、開放原始碼的社群網站。它是一個分散式的服務,避免您的通訊被單一商業機構壟斷操控。請您選擇一家您信任的 Mastodon 站點,在上面建立帳號,然後您就可以和任一 Mastodon 站點上的使用者互通,享受無縫的社群網路交流。
+ about_mastodon_html: Mastodon (長毛象)是一個自由、開放原始碼的社群網站。它是一個分散式的服務,避免您的通訊被單一商業機構壟斷操控。請您選擇一家您信任的 Mastodon 站點,於其建立帳號,您就能與任一 Mastodon 站點上的使用者互通,享受無縫的社群網路交流。
contact_missing: 未設定
contact_unavailable: 未公開
- hosted_on: 在 %{domain} 運作的 Mastodon 站點
+ hosted_on: 於 %{domain} 託管之 Mastodon 站點
title: 關於本站
accounts:
follow: 跟隨
@@ -13,7 +13,7 @@ zh-TW:
following: 正在跟隨
instance_actor_flash: 此帳號是用來代表此伺服器的虛擬執行者,而非個別使用者。它的用途為維繫聯邦宇宙,且不應被停權。
last_active: 上次活躍時間
- link_verified_on: 此連結的所有權已在 %{date} 檢查過
+ link_verified_on: 此連結之所有權已於 %{date} 檢查過
nothing_here: 暫時沒有內容可供顯示!
pin_errors:
following: 您只能推薦您正在跟隨的使用者。
@@ -70,7 +70,7 @@ zh-TW:
enabled_msg: 成功解除 %{username} 帳號的凍結
followers: 跟隨者
follows: 正在跟隨
- header: 開頭
+ header: 封面圖片
inbox_url: 收件匣 (Inbox) URL
invite_request_text: 加入原因
invited_by: 邀請者
@@ -115,9 +115,9 @@ zh-TW:
reject: 拒絕
rejected_msg: 已成功婉拒 %{username} 的新帳號申請
remote_suspension_irreversible: 此帳號之資料已被不可逆地刪除。
- remote_suspension_reversible_hint_html: 這個帳號已於此伺服器被停權,所有資料將會於 %{date} 被刪除。在此之前,遠端伺服器可以完全回復此的帳號。如果您想即時刪除這個帳號的資料,您可以在下面進行操作。
+ remote_suspension_reversible_hint_html: 這個帳號已於此伺服器被停權,所有資料將會於 %{date} 被刪除。於此之前,遠端伺服器可以完全回復此的帳號。如果您想即時刪除這個帳號的資料,您能於下面進行操作。
remove_avatar: 取消大頭貼
- remove_header: 移除開頭
+ remove_header: 移除封面圖片
removed_avatar_msg: 已成功刪除 %{username} 的大頭貼
removed_header_msg: 已成功刪除 %{username} 的封面圖片
resend_confirmation:
@@ -149,7 +149,7 @@ zh-TW:
suspend: 停權
suspended: 已停權
suspension_irreversible: 已永久刪除此帳號的資料。您可以取消這個帳號的停權狀態,但無法還原已刪除的資料。
- suspension_reversible_hint_html: 這個帳號已被暫停,所有數據將於 %{date} 被刪除。在此之前,您可以完全回復您的帳號。如果您想即時刪除這個帳號的數據,您可以在下面進行操作。
+ suspension_reversible_hint_html: 這個帳號已被暫停,所有數據將於 %{date} 被刪除。於此之前,您可以完全回復您的帳號。如果您想即時刪除這個帳號的數據,您能於下面進行操作。
title: 帳號
unblock_email: 解除封鎖電子郵件地址
unblocked_email_msg: 成功解除封鎖 %{username} 的電子郵件地址
@@ -333,7 +333,7 @@ zh-TW:
not_permitted: 您無權執行此操作
overwrite: 覆蓋
shortcode: 短代碼
- shortcode_hint: 至少 2 個字元,只能使用字母、數字和下劃線
+ shortcode_hint: 至少 2 個字元,只能使用字母、數字與下劃線
title: 自訂表情符號
uncategorized: 未分類
unlist: 不公開
@@ -370,10 +370,10 @@ zh-TW:
domain_allows:
add_new: 將網域加入聯邦宇宙白名單
created_msg: 網域已成功加入聯邦宇宙白名單
- destroyed_msg: 網域已成功從聯邦宇宙白名單移除
+ destroyed_msg: 網域已成功自聯邦宇宙白名單移除
export: 匯出
import: 匯入
- undo: 從聯邦宇宙白名單移除
+ undo: 自聯邦宇宙白名單移除
domain_blocks:
add_new: 新增網域黑名單
confirm_suspension:
@@ -397,7 +397,7 @@ zh-TW:
create: 新增封鎖
hint: 站點封鎖動作並不會阻止帳號紀錄被新增至資料庫,但會自動回溯性地對那些帳號套用特定管理設定。
severity:
- desc_html: "「靜音」令該站點下使用者的嘟文,設定為只對跟隨者顯示,沒有跟隨的人會看不到。「停權」會刪除將該站點下使用者的嘟文、媒體檔案和個人檔案。「無」則會拒絕接收來自該站點的媒體檔案。"
+ desc_html: "「靜音」令該站點下使用者的嘟文,設定為只對跟隨者顯示,沒有跟隨的人會看不到。「停權」會刪除將該站點下使用者的嘟文、媒體檔案與個人檔案。「無」則會拒絕接收來自該站點的媒體檔案。"
noop: 無
silence: 靜音
suspend: 停權
@@ -451,7 +451,7 @@ zh-TW:
title: 匯入網域黑名單
no_file: 尚未選擇檔案
follow_recommendations:
- description_html: "跟隨建議幫助新使用者們快速找到有趣的內容。當使用者沒有與其他帳號有足夠多的互動以建立個人化跟隨建議時,這些帳號將會被推薦。這些帳號將基於某選定語言之高互動和高本地跟隨者數量帳號而每日重新更新。"
+ description_html: "跟隨建議幫助新使用者們快速找到有趣的內容。當使用者沒有與其他帳號有足夠多的互動以建立個人化跟隨建議時,這些帳號將會被推薦。這些帳號將基於某選定語言之高互動與高本地跟隨者數量帳號而每日重新更新。"
language: 對於語言
status: 狀態
suppress: 取消跟隨建議
@@ -461,7 +461,7 @@ zh-TW:
instances:
availability:
description_html:
- other: 若在%{count}天向某個網域遞送失敗,除非收到某個網域的遞送表單,否則不會繼續嘗試遞送。
+ other: 若於 %{count} 天向某個網域遞送失敗,除非收到某個網域的遞送表單,否則不會繼續嘗試遞送。
failure_threshold_reached: 錯誤門檻於 %{date}。
failures_recorded:
other: 錯誤嘗試於 %{count} 天。
@@ -590,7 +590,7 @@ zh-TW:
by_target_domain: 檢舉帳號之網域
cancel: 取消
category: 分類
- category_description_html: 此帳號及/或被檢舉內容之原因會被引用在檢舉帳號通知中
+ category_description_html: 此帳號及/或被檢舉內容之原因將被引用於檢舉帳號通知中
comment:
none: 無
comment_description_html: 提供更多資訊,%{name} 寫道:
@@ -599,6 +599,7 @@ zh-TW:
created_at: 日期
delete_and_resolve: 刪除嘟文
forwarded: 已轉寄
+ forwarded_replies_explanation: 此報告來自聯邦宇宙中非本伺服器帳號,關於非本伺服器內容。此報告轉發給您,因為報告之內容是回覆給您的伺服器上某位使用者。
forwarded_to: 轉寄到 %{domain}
mark_as_resolved: 標記為「已解決」
mark_as_sensitive: 標記為敏感內容
@@ -611,7 +612,7 @@ zh-TW:
delete: 刪除
placeholder: 記錄已執行的動作,或其他相關的更新...
title: 備註
- notes_description_html: 檢視及留下些給其他管理員和未來的自己的備註
+ notes_description_html: 檢視及留下些給其他管理員與未來的自己的備註
processed_msg: '檢舉報告 #%{id} 已被成功處理'
quick_actions_description_html: 採取一個快速行動,或者下捲以檢視檢舉內容:
remote_user_placeholder: 來自 %{instance} 之遠端使用者
@@ -624,7 +625,7 @@ zh-TW:
skip_to_actions: 跳過行動
status: 嘟文
statuses: 被檢舉的內容
- statuses_description_html: 侵犯性違規內容會被引用在檢舉帳號通知中
+ statuses_description_html: 侵犯性違規內容將被引用於檢舉帳號通知中
summary:
action_preambles:
delete_html: 您將要 移除 某些 @%{acct} 之嘟文。此將會:
@@ -677,7 +678,7 @@ zh-TW:
manage_announcements: 管理公告
manage_announcements_description: 允許使用者管理伺服器上的公告
manage_appeals: 管理解封申訴系統
- manage_appeals_description: 允許使用者審閱針對站務動作的申訴
+ manage_appeals_description: 允許使用者審閱針對站務動作之申訴
manage_blocks: 管理封鎖
manage_blocks_description: 允許使用者封鎖電子郵件提供者與 IP 位置
manage_custom_emojis: 管理自訂表情符號
@@ -741,7 +742,7 @@ zh-TW:
title: 預設將使用者排除於搜尋引擎索引
discovery:
follow_recommendations: 跟隨建議
- preamble: 呈現有趣的內容有助於 Mastodon 上一人不識的新手上路。控制各種不同的分類在您伺服器上如何被探索到。
+ preamble: 呈現有趣的內容有助於 Mastodon 上一人不識的新手上路。控制各種不同的分類於您伺服器上如何被探索到。
profile_directory: 個人檔案目錄
public_timelines: 公開時間軸
publish_discovered_servers: 公開已知伺服器列表
@@ -989,11 +990,11 @@ zh-TW:
created_msg: 成功建立別名。您可以自舊帳號開始轉移。
deleted_msg: 成功移除別名。您將無法再由舊帳號轉移至目前的帳號。
empty: 您目前沒有任何別名。
- hint_html: 如果想由其他帳號轉移至此帳號,您可以於此處新增別名,稍後系統將容許您將跟隨者由舊帳號轉移至此。此項作業是無害且可復原的。 帳號的遷移程序需要在舊帳號啟動。
+ hint_html: 如果想由其他帳號轉移至此帳號,您能於此處新增別名,稍後系統將容許您將跟隨者由舊帳號轉移至此。此項作業是無害且可復原的。 帳號的遷移程序需要於舊帳號啟動。
remove: 取消連結別名
appearance:
advanced_web_interface: 進階網頁介面
- advanced_web_interface_hint: 進階網頁介面可讓您設定許多不同的欄位來善用螢幕空間,依需要同時查看許多不同的資訊如:首頁、通知、聯邦宇宙時間軸、任意數量的列表和主題標籤。
+ advanced_web_interface_hint: 進階網頁介面可讓您設定許多不同的欄位來善用螢幕空間,依需要同時查看許多不同的資訊如:首頁、通知、聯邦宇宙時間軸、任意數量的列表與主題標籤。
animations_and_accessibility: 動畫與無障礙設定
confirmation_dialogs: 確認對話框
discovery: 探索
@@ -1033,13 +1034,13 @@ zh-TW:
redirect_to_app_html: 您應被重新導向至 %{app_name} 應用程式。如尚未重新導向,請嘗試 %{clicking_this_link} 或手動回到應用程式。
registration_complete: 您於 %{domain} 之註冊申請已完成!
welcome_title: 歡迎,%{name}!
- wrong_email_hint: 若電子郵件地址不正確,您可以於帳號設定中更改。
+ wrong_email_hint: 若電子郵件地址不正確,您能於帳號設定中更改。
delete_account: 刪除帳號
delete_account_html: 如果您欲刪除您的帳號,請點擊這裡繼續。您需要再三確認您的操作。
description:
prefix_invited_by_user: "@%{name} 邀請您加入這個 Mastodon 伺服器!"
prefix_sign_up: 馬上註冊 Mastodon 帳號吧!
- suffix: 有了帳號,就可以從任何 Mastodon 伺服器跟隨任何人、發發廢嘟,並且與任何 Mastodon 伺服器的使用者交流,以及更多!
+ suffix: 有了帳號,就可以自任何 Mastodon 伺服器跟隨任何人、發發廢嘟,並且與任何 Mastodon 伺服器的使用者交流,以及更多!
didnt_get_confirmation: 沒有收到確認連結嗎?
dont_have_your_security_key: 找不到您的安全金鑰?
forgot_password: 忘記密碼?
@@ -1085,7 +1086,7 @@ zh-TW:
preamble_html: 請使用您於 %{domain} 的帳號密碼登入。若您的帳號託管於其他伺服器,您將無法於此登入。
title: 登入 %{domain}
sign_up:
- manual_review: "%{domain} 上的註冊由我們的管理員進行人工審核。為協助我們處理您的註冊,請寫一些關於您自己的資訊以及您想要在 %{domain} 上註冊帳號的原因。"
+ manual_review: "%{domain} 上的註冊由我們的管理員進行人工審核。為協助我們處理您的註冊,請寫一些關於您自己的資訊以及您欲於 %{domain} 上註冊帳號之原因。"
preamble: 於此 Mastodon 伺服器擁有帳號的話,您將能跟隨聯邦宇宙網路中任何一份子,無論他們的帳號託管於何處。
title: 讓我們一起設定 %{domain} 吧!
status:
@@ -1100,7 +1101,7 @@ zh-TW:
use_security_key: 使用安全金鑰
challenge:
confirm: 繼續
- hint_html: "温馨小提醒: 我們在接下來一小時內不會再要求您輸入密碼。"
+ hint_html: "温馨小提醒: 我們於接下來一小時內不會再要求您輸入密碼。"
invalid_password: 密碼錯誤
prompt: 輸入密碼以繼續
crypto:
@@ -1134,8 +1135,8 @@ zh-TW:
warning:
before: 在進行下一步驟之前,請詳細閱讀以下説明:
caches: 已被其他節點快取的內容可能會殘留其中
- data_removal: 您的嘟文和其他資料將會被永久刪除
- email_change_html: 您可以在不刪除帳號的情況下變更您的電子郵件地址
+ data_removal: 您的嘟文與其他資料將被永久刪除
+ email_change_html: 您能於不刪除帳號的情況下變更您的電子郵件地址
email_contact_html: 如果您仍然沒有收到郵件,請寄信至 %{email} 以獲得協助
email_reconfirmation_html: 如果您沒有收到確認郵件,可以請求再次發送
irreversible: 您將無法復原或重新啟用您的帳號
@@ -1176,7 +1177,7 @@ zh-TW:
invalid_domain: 並非一個有效網域
edit_profile:
basic_information: 基本資訊
- hint_html: "自訂人們可以於您個人檔案及嘟文內容。當您完成填寫個人檔案以及設定大頭貼後,其他人們比較願意跟隨您並與您互動。"
+ hint_html: "自訂人們能於您個人檔案及嘟文旁所見之內容。當您完成填寫個人檔案以及設定大頭貼後,其他人們比較願意跟隨您並與您互動。"
other: 其他
errors:
'400': 您所送出的請求無效或格式不正確。
@@ -1194,13 +1195,13 @@ zh-TW:
'503': 此頁面因伺服器暫時發生錯誤而無法提供。
noscript_html: 使用 Mastodon 網頁版應用需要啟用 JavaScript。您也可以選擇適用於您的平台的 Mastodon 應用。
existing_username_validator:
- not_found: 無法在本站找到這個名稱的使用者
+ not_found: 無法於本伺服器找到此使用者帳號
not_found_multiple: 揣嘸 %{usernames}
exports:
archive_takeout:
date: 日期
download: 下載檔案
- hint_html: 您可以下載包含您的文章和媒體的檔案。資料以 ActivityPub 格式儲存,可用於相容的軟體。每次允許存檔的間隔至少 7 天。
+ hint_html: 您可以下載包含您的嘟文與媒體的檔案。資料以 ActivityPub 格式儲存,可用於相容之軟體。每次允許存檔的間隔至少 7 天。
in_progress: 正在準備您的存檔...
request: 下載存檔
size: 大小
@@ -1304,7 +1305,7 @@ zh-TW:
following_html: 您將要 跟隨 自 %{filename} 中之 %{total_items} 個帳號。
lists_html: 您將自 %{filename} 新增 %{total_items} 個帳號至您的列表。若不存在列表用以新增帳號,則會建立新列表。
muting_html: 您將要 靜音 自 %{filename} 中之 %{total_items} 個帳號。
- preface: 您能於此匯入您在其他伺服器所匯出的資料檔,包括跟隨中的使用者、封鎖的使用者名單等。
+ preface: 您能於此匯入您於其他伺服器所匯出的資料檔,包括跟隨中的使用者、封鎖的使用者名單等。
recent_imports: 最近匯入的
states:
finished: 已完成
@@ -1414,12 +1415,12 @@ zh-TW:
warning:
backreference_required: 新的帳號必須先設定為反向參照到目前帳號
before: 在進行下一步驟之前,請詳細閱讀以下説明:
- cooldown: 在轉移帳號後會有一段等待時間,在等待時間內您將無法再次轉移
+ cooldown: 轉移帳號後會有一段等待時間,等待時間內您將無法再次轉移
disabled_account: 之後您的目前帳號將完全無法使用。但您可以存取資料匯出與重新啟用。
followers: 此動作將會將目前帳號的所有跟隨者轉移至新帳號
- only_redirect_html: 或者,您也可以僅在您的個人檔案中設定重新導向。
+ only_redirect_html: 或者,您也可以僅於您的個人檔案中設定重新導向。
other_data: 其他資料並不會自動轉移
- redirect: 您目前的帳號將於個人檔案頁面新增重新導向公告,並會被排除在搜尋結果之外
+ redirect: 您目前的帳號將於個人檔案頁面新增重新導向公告,並會被排除於搜尋結果之外
moderation:
title: 站務
move_handler:
@@ -1449,8 +1450,8 @@ zh-TW:
title: 新的跟隨請求
mention:
action: 回覆
- body: "%{name} 在嘟文中提及您:"
- subject: "%{name} 在嘟文中提及您"
+ body: "%{name} 於嘟文中提及您:"
+ subject: "%{name} 於嘟文中提及您"
title: 新的提及
poll:
subject: 由 %{name} 發起的投票已結束
@@ -1510,7 +1511,7 @@ zh-TW:
privacy:
hint_html: "自訂您希望如何讓您的個人檔案及嘟文被發現。藉由啟用一系列 Mastodon 功能以幫助您觸及更廣的受眾。煩請花些時間確認您是否欲啟用這些設定。"
privacy: 隱私權
- privacy_hint_html: 控制您希望向其他人揭露之內容。人們透過瀏覽其他人的跟隨者與其發嘟之應用程式發現有趣的個人檔案和酷炫的 Mastodon 應用程式,但您能選擇將其隱藏。
+ privacy_hint_html: 控制您希望向其他人揭露之內容。人們透過瀏覽其他人的跟隨者與其發嘟之應用程式發現有趣的個人檔案與酷炫的 Mastodon 應用程式,但您能選擇將其隱藏。
reach: 觸及
reach_hint_html: 控制您希望被新使用者探索或跟隨之方式。想讓您的嘟文出現於探索頁面嗎?想讓其他人透過他們的跟隨建議找到您嗎?想自動接受所有新跟隨者嗎?或是想逐一控制跟隨請求嗎?
search: 搜尋
@@ -1669,7 +1670,7 @@ zh-TW:
private_long: 只有跟隨您的人能看到
public: 公開
public_long: 所有人都能看到
- unlisted: 不在公開時間軸顯示
+ unlisted: 不於公開時間軸顯示
unlisted_long: 所有人都能看到,但不會出現在公開時間軸上
statuses_cleanup:
enabled: 自動刪除舊嘟文
@@ -1679,7 +1680,7 @@ zh-TW:
ignore_favs: 忽略最愛數
ignore_reblogs: 忽略轉嘟數
interaction_exceptions: 基於互動的例外規則
- interaction_exceptions_explanation: 請注意嘟文是無法保證被刪除的,如果在一次處理過後嘟文低於最愛或轉嘟的門檻。
+ interaction_exceptions_explanation: 請注意嘟文是無法保證被刪除的,如果於一次處理過後嘟文低於最愛或轉嘟的門檻。
keep_direct: 保留私訊
keep_direct_hint: 不會刪除任何您的私訊
keep_media: 保留包含多媒體附加檔案之嘟文
@@ -1735,7 +1736,7 @@ zh-TW:
enabled: 兩階段認證已啟用
enabled_success: 已成功啟用兩階段認證
generate_recovery_codes: 產生備用驗證碼
- lost_recovery_codes: 讓您可以在遺失手機時,使用備用驗證碼登入。若您已遺失備用驗證碼,可於此產生一批新的,舊有的備用驗證碼將會失效。
+ lost_recovery_codes: 讓您能於遺失手機時,使用備用驗證碼登入。若您已遺失備用驗證碼,可於此產生一批新的,舊有的備用驗證碼將會失效。
methods: 兩步驟方式
otp: 驗證應用程式
recovery_codes: 備份備用驗證碼
@@ -1745,12 +1746,12 @@ zh-TW:
user_mailer:
appeal_approved:
action: 前往您的帳號
- explanation: 您在 %{appeal_date} 遞交的針對您帳號的 %{strike_date} 警示的申訴已獲批准。您的帳號再次享有良好的信譽。
- subject: 您在 %{date} 提出的申訴已獲批准
+ explanation: 您於 %{appeal_date} 遞交的針對您帳號的 %{strike_date} 警示之申訴已獲批准。您的帳號再次享有良好的信譽。
+ subject: 您於 %{date} 提出之申訴已獲批准
title: 申訴已批准
appeal_rejected:
- explanation: 您在 %{appeal_date} 遞交的針對您帳號的 %{strike_date} 警示的申訴已被駁回。
- subject: 您在 %{date} 提出的申訴已被駁回
+ explanation: 您於 %{appeal_date} 遞交的針對您帳號的 %{strike_date} 警示之申訴已被駁回。
+ subject: 您於 %{date} 提出之申訴已被駁回
title: 申訴被駁回
backup_ready:
explanation: 您要求的 Mastodon 帳號完整備份檔案現已就緒,可供下載!
@@ -1772,7 +1773,7 @@ zh-TW:
explanation:
delete_statuses: 您的某些嘟文被發現已違反一項或多項社群準則,隨後已被 %{instance} 的管理員刪除。
disable: 您無法繼續使用您的帳號,但您的個人頁面及其他資料內容保持不變。您可以要求一份您的資料備份,帳號異動設定,或是刪除帳號。
- mark_statuses_as_sensitive: 您的部份嘟文已被 %{instance} 的管理員標記為敏感內容。這代表了人們必須在顯示預覽前點擊嘟文中的媒體。您可以在將來嘟文時自己將媒體標記為敏感內容。
+ mark_statuses_as_sensitive: 您的部份嘟文已被 %{instance} 的管理員標記為敏感內容。這代表了人們必須於顯示預覽前點擊嘟文中的媒體。您能於將來嘟文時自己將媒體標記為敏感內容。
sensitive: 由此刻起,您所有上傳的媒體檔案將被標記為敏感內容,並且隱藏於點擊警告之後。
silence: 您仍然能使用您的帳號,但僅有已跟隨您的人才能見到您於此伺服器之嘟文,您也可能會從各式探索功能中被排除。但其他人仍可手動跟隨您。
suspend: 您將不能使用您的帳號,您的個人檔案頁面及其他資料將不再能被存取。您仍可於約 30 日內資料被完全刪除前要求下載您的資料,但我們仍會保留一部份基本資料,以防止有人規避停權處罰。
@@ -1781,9 +1782,9 @@ zh-TW:
subject:
delete_statuses: 您於 %{acct} 之嘟文已被移除
disable: 您的帳號 %{acct} 已被凍結
- mark_statuses_as_sensitive: 您在 %{acct} 上的嘟文已被標記為敏感內容
+ mark_statuses_as_sensitive: 您於 %{acct} 上的嘟文已被標記為敏感內容
none: 對 %{acct} 的警告
- sensitive: 從現在開始,您在 %{acct} 上的嘟文將會被標記為敏感內容
+ sensitive: 從現在開始,您於 %{acct} 上之嘟文將會被標記為敏感內容
silence: 您的帳號 %{acct} 已被限制
suspend: 您的帳號 %{acct} 已被停權
title:
@@ -1796,10 +1797,10 @@ zh-TW:
suspend: 帳號己被停權
welcome:
edit_profile_action: 設定個人檔案
- edit_profile_step: 您可以設定您的個人檔案,包括上傳大頭貼、變更顯示名稱等等。您也可以選擇在新的跟隨者跟隨前,先對他們進行審核。
+ edit_profile_step: 您可以設定您的個人檔案,包括上傳大頭貼、變更顯示名稱等等。您也可以選擇於新的跟隨者跟隨前,先對他們進行審核。
explanation: 下面是幾個小幫助,希望它們能幫到您
final_action: 開始嘟嘟
- final_step: '開始嘟嘟吧!即使您現在沒有跟隨者,其他人仍然能在本站時間軸、主題標籤等地方,看到您的公開嘟文。試著用 #introductions 這個主題標籤介紹一下自己吧。'
+ final_step: '開始嘟嘟吧!即使您現在沒有跟隨者,其他人仍然能於本站時間軸、主題標籤等地方,看到您的公開嘟文。試著用 #introductions 這個主題標籤介紹一下自己吧。'
full_handle: 您的完整帳號名稱
full_handle_hint: 您需要將這告訴您的朋友們,這樣他們就能從另一個伺服器向您發送訊息或跟隨您。
subject: 歡迎來到 Mastodon
diff --git a/config/routes.rb b/config/routes.rb
index c728ab0be43149..d96827d0d4aae5 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -38,7 +38,7 @@ def redirect_with_vary(path)
/bookmark_categories/(*any)
/pinned
/reaction_deck
- /start
+ /start/(*any)
/directory
/explore/(*any)
/search
diff --git a/spec/controllers/api/web/push_subscriptions_controller_spec.rb b/spec/controllers/api/web/push_subscriptions_controller_spec.rb
index 9f027ede90d4ce..58677841ca7785 100644
--- a/spec/controllers/api/web/push_subscriptions_controller_spec.rb
+++ b/spec/controllers/api/web/push_subscriptions_controller_spec.rb
@@ -37,37 +37,49 @@
}
end
- describe 'POST #create' do
- it 'saves push subscriptions' do
- sign_in(user)
+ before do
+ sign_in(user)
- stub_request(:post, create_payload[:subscription][:endpoint]).to_return(status: 200)
+ stub_request(:post, create_payload[:subscription][:endpoint]).to_return(status: 200)
+ end
+ describe 'POST #create' do
+ it 'saves push subscriptions' do
post :create, format: :json, params: create_payload
+ expect(response).to have_http_status(200)
+
user.reload
- push_subscription = Web::PushSubscription.find_by(endpoint: create_payload[:subscription][:endpoint])
+ expect(created_push_subscription).to have_attributes(
+ endpoint: eq(create_payload[:subscription][:endpoint]),
+ key_p256dh: eq(create_payload[:subscription][:keys][:p256dh]),
+ key_auth: eq(create_payload[:subscription][:keys][:auth])
+ )
+ expect(user.session_activations.first.web_push_subscription).to eq(created_push_subscription)
+ end
+
+ context 'with a user who has a session with a prior subscription' do
+ let!(:prior_subscription) { Fabricate(:web_push_subscription, session_activation: user.session_activations.last) }
+
+ it 'destroys prior subscription when creating new one' do
+ post :create, format: :json, params: create_payload
- expect(push_subscription['endpoint']).to eq(create_payload[:subscription][:endpoint])
- expect(push_subscription['key_p256dh']).to eq(create_payload[:subscription][:keys][:p256dh])
- expect(push_subscription['key_auth']).to eq(create_payload[:subscription][:keys][:auth])
+ expect(response).to have_http_status(200)
+ expect { prior_subscription.reload }.to raise_error(ActiveRecord::RecordNotFound)
+ end
end
context 'with initial data' do
it 'saves alert settings' do
- sign_in(user)
-
- stub_request(:post, create_payload[:subscription][:endpoint]).to_return(status: 200)
-
post :create, format: :json, params: create_payload.merge(alerts_payload)
- push_subscription = Web::PushSubscription.find_by(endpoint: create_payload[:subscription][:endpoint])
+ expect(response).to have_http_status(200)
- expect(push_subscription.data['policy']).to eq 'all'
+ expect(created_push_subscription.data['policy']).to eq 'all'
%w(follow follow_request favourite reblog mention poll status).each do |type|
- expect(push_subscription.data['alerts'][type]).to eq(alerts_payload[:data][:alerts][type.to_sym].to_s)
+ expect(created_push_subscription.data['alerts'][type]).to eq(alerts_payload[:data][:alerts][type.to_sym].to_s)
end
end
end
@@ -75,23 +87,23 @@
describe 'PUT #update' do
it 'changes alert settings' do
- sign_in(user)
-
- stub_request(:post, create_payload[:subscription][:endpoint]).to_return(status: 200)
-
post :create, format: :json, params: create_payload
- alerts_payload[:id] = Web::PushSubscription.find_by(endpoint: create_payload[:subscription][:endpoint]).id
+ expect(response).to have_http_status(200)
- put :update, format: :json, params: alerts_payload
+ alerts_payload[:id] = created_push_subscription.id
- push_subscription = Web::PushSubscription.find_by(endpoint: create_payload[:subscription][:endpoint])
+ put :update, format: :json, params: alerts_payload
- expect(push_subscription.data['policy']).to eq 'all'
+ expect(created_push_subscription.data['policy']).to eq 'all'
%w(follow follow_request favourite reblog mention poll status).each do |type|
- expect(push_subscription.data['alerts'][type]).to eq(alerts_payload[:data][:alerts][type.to_sym].to_s)
+ expect(created_push_subscription.data['alerts'][type]).to eq(alerts_payload[:data][:alerts][type.to_sym].to_s)
end
end
end
+
+ def created_push_subscription
+ Web::PushSubscription.find_by(endpoint: create_payload[:subscription][:endpoint])
+ end
end
diff --git a/spec/controllers/statuses_controller_spec.rb b/spec/controllers/statuses_controller_spec.rb
index 8b715824b88cbc..fe40ee6de172f3 100644
--- a/spec/controllers/statuses_controller_spec.rb
+++ b/spec/controllers/statuses_controller_spec.rb
@@ -57,11 +57,14 @@
let(:format) { 'html' }
it 'renders status successfully', :aggregate_failures do
- expect(response).to have_http_status(200)
- expect(response.headers['Link'].to_s).to include 'activity+json'
- expect(response.headers['Vary']).to eq 'Accept, Accept-Language, Cookie'
- expect(response.headers['Cache-Control']).to include 'public'
- expect(response).to render_template(:show)
+ expect(response)
+ .to have_http_status(200)
+ .and render_template(:show)
+ expect(response.headers).to include(
+ 'Vary' => 'Accept, Accept-Language, Cookie',
+ 'Cache-Control' => include('public'),
+ 'Link' => satisfy { |header| header.to_s.include?('activity+json') }
+ )
expect(response.body).to include status.text
end
end
@@ -72,12 +75,15 @@
it_behaves_like 'cacheable response', expects_vary: 'Accept, Accept-Language, Cookie'
it 'renders ActivityPub Note object successfully', :aggregate_failures do
- expect(response).to have_http_status(200)
- expect(response.headers['Link'].to_s).to include 'activity+json'
- expect(response.headers['Vary']).to eq 'Accept, Accept-Language, Cookie'
- expect(response.headers['Content-Type']).to include 'application/activity+json'
- json = body_as_json
- expect(json[:content]).to include status.text
+ expect(response)
+ .to have_http_status(200)
+ expect(response.headers).to include(
+ 'Vary' => 'Accept, Accept-Language, Cookie',
+ 'Content-Type' => include('application/activity+json'),
+ 'Link' => satisfy { |header| header.to_s.include?('activity+json') }
+ )
+ expect(body_as_json)
+ .to include(content: include(status.text))
end
end
end
@@ -157,11 +163,14 @@
let(:format) { 'html' }
it 'renders status successfully', :aggregate_failures do
- expect(response).to have_http_status(200)
- expect(response.headers['Link'].to_s).to include 'activity+json'
- expect(response.headers['Vary']).to eq 'Accept, Accept-Language, Cookie'
- expect(response.headers['Cache-Control']).to include 'private'
- expect(response).to render_template(:show)
+ expect(response)
+ .to have_http_status(200)
+ .and render_template(:show)
+ expect(response.headers).to include(
+ 'Vary' => 'Accept, Accept-Language, Cookie',
+ 'Cache-Control' => include('private'),
+ 'Link' => satisfy { |header| header.to_s.include?('activity+json') }
+ )
expect(response.body).to include status.text
end
end
@@ -170,13 +179,16 @@
let(:format) { 'json' }
it 'renders ActivityPub Note object successfully', :aggregate_failures do
- expect(response).to have_http_status(200)
- expect(response.headers['Link'].to_s).to include 'activity+json'
- expect(response.headers['Vary']).to eq 'Accept, Accept-Language, Cookie'
- expect(response.headers['Cache-Control']).to include 'private'
- expect(response.headers['Content-Type']).to include 'application/activity+json'
- json = body_as_json
- expect(json[:content]).to include status.text
+ expect(response)
+ .to have_http_status(200)
+ expect(response.headers).to include(
+ 'Vary' => 'Accept, Accept-Language, Cookie',
+ 'Cache-Control' => include('private'),
+ 'Content-Type' => include('application/activity+json'),
+ 'Link' => satisfy { |header| header.to_s.include?('activity+json') }
+ )
+ expect(body_as_json)
+ .to include(content: include(status.text))
end
end
end
@@ -194,11 +206,15 @@
let(:format) { 'html' }
it 'renders status successfully', :aggregate_failures do
- expect(response).to have_http_status(200)
- expect(response.headers['Link'].to_s).to include 'activity+json'
- expect(response.headers['Vary']).to eq 'Accept, Accept-Language, Cookie'
- expect(response.headers['Cache-Control']).to include 'private'
- expect(response).to render_template(:show)
+ expect(response)
+ .to have_http_status(200)
+ .and render_template(:show)
+
+ expect(response.headers).to include(
+ 'Vary' => 'Accept, Accept-Language, Cookie',
+ 'Cache-Control' => include('private'),
+ 'Link' => satisfy { |header| header.to_s.include?('activity+json') }
+ )
expect(response.body).to include status.text
end
end
@@ -207,13 +223,16 @@
let(:format) { 'json' }
it 'renders ActivityPub Note object successfully', :aggregate_failures do
- expect(response).to have_http_status(200)
- expect(response.headers['Link'].to_s).to include 'activity+json'
- expect(response.headers['Vary']).to eq 'Accept, Accept-Language, Cookie'
- expect(response.headers['Cache-Control']).to include 'private'
- expect(response.headers['Content-Type']).to include 'application/activity+json'
- json = body_as_json
- expect(json[:content]).to include status.text
+ expect(response)
+ .to have_http_status(200)
+ expect(response.headers).to include(
+ 'Vary' => 'Accept, Accept-Language, Cookie',
+ 'Cache-Control' => include('private'),
+ 'Content-Type' => include('application/activity+json'),
+ 'Link' => satisfy { |header| header.to_s.include?('activity+json') }
+ )
+ expect(body_as_json)
+ .to include(content: include(status.text))
end
end
end
@@ -254,11 +273,14 @@
let(:format) { 'html' }
it 'renders status successfully', :aggregate_failures do
- expect(response).to have_http_status(200)
- expect(response.headers['Link'].to_s).to include 'activity+json'
- expect(response.headers['Vary']).to eq 'Accept, Accept-Language, Cookie'
- expect(response.headers['Cache-Control']).to include 'private'
- expect(response).to render_template(:show)
+ expect(response)
+ .to have_http_status(200)
+ .and render_template(:show)
+ expect(response.headers).to include(
+ 'Vary' => 'Accept, Accept-Language, Cookie',
+ 'Cache-Control' => include('private'),
+ 'Link' => satisfy { |header| header.to_s.include?('activity+json') }
+ )
expect(response.body).to include status.text
end
end
@@ -267,13 +289,16 @@
let(:format) { 'json' }
it 'renders ActivityPub Note object successfully' do
- expect(response).to have_http_status(200)
- expect(response.headers['Link'].to_s).to include 'activity+json'
- expect(response.headers['Vary']).to eq 'Accept, Accept-Language, Cookie'
- expect(response.headers['Cache-Control']).to include 'private'
- expect(response.headers['Content-Type']).to include 'application/activity+json'
- json = body_as_json
- expect(json[:content]).to include status.text
+ expect(response)
+ .to have_http_status(200)
+ expect(response.headers).to include(
+ 'Vary' => 'Accept, Accept-Language, Cookie',
+ 'Cache-Control' => include('private'),
+ 'Content-Type' => include('application/activity+json'),
+ 'Link' => satisfy { |header| header.to_s.include?('activity+json') }
+ )
+ expect(body_as_json)
+ .to include(content: include(status.text))
end
end
end
@@ -340,11 +365,14 @@
let(:format) { 'html' }
it 'renders status successfully', :aggregate_failures do
- expect(response).to have_http_status(200)
- expect(response.headers['Link'].to_s).to include 'activity+json'
- expect(response.headers['Vary']).to eq 'Accept, Accept-Language, Cookie'
- expect(response.headers['Cache-Control']).to include 'private'
- expect(response).to render_template(:show)
+ expect(response)
+ .to have_http_status(200)
+ .and render_template(:show)
+ expect(response.headers).to include(
+ 'Vary' => 'Accept, Accept-Language, Cookie',
+ 'Cache-Control' => include('private'),
+ 'Link' => satisfy { |header| header.to_s.include?('activity+json') }
+ )
expect(response.body).to include status.text
end
end
@@ -355,12 +383,15 @@
it_behaves_like 'cacheable response', expects_vary: 'Accept, Accept-Language, Cookie'
it 'renders ActivityPub Note object successfully', :aggregate_failures do
- expect(response).to have_http_status(200)
- expect(response.headers['Link'].to_s).to include 'activity+json'
- expect(response.headers['Vary']).to eq 'Accept, Accept-Language, Cookie'
- expect(response.headers['Content-Type']).to include 'application/activity+json'
- json = body_as_json
- expect(json[:content]).to include status.text
+ expect(response)
+ .to have_http_status(200)
+ expect(response.headers).to include(
+ 'Vary' => 'Accept, Accept-Language, Cookie',
+ 'Content-Type' => include('application/activity+json'),
+ 'Link' => satisfy { |header| header.to_s.include?('activity+json') }
+ )
+ expect(body_as_json)
+ .to include(content: include(status.text))
end
end
end
@@ -378,11 +409,14 @@
let(:format) { 'html' }
it 'renders status successfully', :aggregate_failures do
- expect(response).to have_http_status(200)
- expect(response.headers['Link'].to_s).to include 'activity+json'
- expect(response.headers['Vary']).to eq 'Accept, Accept-Language, Cookie'
- expect(response.headers['Cache-Control']).to include 'private'
- expect(response).to render_template(:show)
+ expect(response)
+ .to have_http_status(200)
+ .and render_template(:show)
+ expect(response.headers).to include(
+ 'Vary' => 'Accept, Accept-Language, Cookie',
+ 'Cache-Control' => include('private'),
+ 'Link' => satisfy { |header| header.to_s.include?('activity+json') }
+ )
expect(response.body).to include status.text
end
end
@@ -391,13 +425,17 @@
let(:format) { 'json' }
it 'renders ActivityPub Note object successfully' do
- expect(response).to have_http_status(200)
- expect(response.headers['Link'].to_s).to include 'activity+json'
- expect(response.headers['Vary']).to eq 'Accept, Accept-Language, Cookie'
- expect(response.headers['Cache-Control']).to include 'private'
- expect(response.headers['Content-Type']).to include 'application/activity+json'
- json = body_as_json
- expect(json[:content]).to include status.text
+ expect(response)
+ .to have_http_status(200)
+ expect(response.headers).to include(
+ 'Vary' => 'Accept, Accept-Language, Cookie',
+ 'Cache-Control' => include('private'),
+ 'Content-Type' => include('application/activity+json'),
+ 'Link' => satisfy { |header| header.to_s.include?('activity+json') }
+ )
+
+ expect(body_as_json)
+ .to include(content: include(status.text))
end
end
end
@@ -438,11 +476,14 @@
let(:format) { 'html' }
it 'renders status successfully', :aggregate_failures do
- expect(response).to have_http_status(200)
- expect(response.headers['Link'].to_s).to include 'activity+json'
- expect(response.headers['Vary']).to eq 'Accept, Accept-Language, Cookie'
- expect(response.headers['Cache-Control']).to include 'private'
- expect(response).to render_template(:show)
+ expect(response)
+ .to have_http_status(200)
+ .and render_template(:show)
+ expect(response.headers).to include(
+ 'Vary' => 'Accept, Accept-Language, Cookie',
+ 'Cache-Control' => include('private'),
+ 'Link' => satisfy { |header| header.to_s.include?('activity+json') }
+ )
expect(response.body).to include status.text
end
end
@@ -451,13 +492,16 @@
let(:format) { 'json' }
it 'renders ActivityPub Note object', :aggregate_failures do
- expect(response).to have_http_status(200)
- expect(response.headers['Link'].to_s).to include 'activity+json'
- expect(response.headers['Vary']).to eq 'Accept, Accept-Language, Cookie'
- expect(response.headers['Cache-Control']).to include 'private'
- expect(response.headers['Content-Type']).to include 'application/activity+json'
- json = body_as_json
- expect(json[:content]).to include status.text
+ expect(response)
+ .to have_http_status(200)
+ expect(response.headers).to include(
+ 'Vary' => 'Accept, Accept-Language, Cookie',
+ 'Cache-Control' => include('private'),
+ 'Content-Type' => include('application/activity+json'),
+ 'Link' => satisfy { |header| header.to_s.include?('activity+json') }
+ )
+ expect(body_as_json)
+ .to include(content: include(status.text))
end
end
end
@@ -732,11 +776,14 @@
end
it 'renders status successfully', :aggregate_failures do
- expect(response).to have_http_status(200)
- expect(response.headers['Link'].to_s).to include 'activity+json'
- expect(response.headers['Vary']).to eq 'Accept, Accept-Language, Cookie'
- expect(response.headers['Cache-Control']).to include 'public'
- expect(response).to render_template(:embed)
+ expect(response)
+ .to have_http_status(200)
+ .and render_template(:embed)
+ expect(response.headers).to include(
+ 'Vary' => 'Accept, Accept-Language, Cookie',
+ 'Cache-Control' => include('public'),
+ 'Link' => satisfy { |header| header.to_s.include?('activity+json') }
+ )
expect(response.body).to include status.text
end
end
diff --git a/spec/controllers/well_known/host_meta_controller_spec.rb b/spec/controllers/well_known/host_meta_controller_spec.rb
deleted file mode 100644
index 4bd161cd9d35e3..00000000000000
--- a/spec/controllers/well_known/host_meta_controller_spec.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-describe WellKnown::HostMetaController do
- render_views
-
- describe 'GET #show' do
- it 'returns http success' do
- get :show, format: :xml
-
- expect(response).to have_http_status(200)
- expect(response.media_type).to eq 'application/xrd+xml'
- expect(response.body).to eq <<~XML
-
-
-
-
- XML
- end
- end
-end
diff --git a/spec/controllers/well_known/node_info_controller_spec.rb b/spec/controllers/well_known/node_info_controller_spec.rb
deleted file mode 100644
index 6ec34afd04cac1..00000000000000
--- a/spec/controllers/well_known/node_info_controller_spec.rb
+++ /dev/null
@@ -1,41 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-describe WellKnown::NodeInfoController do
- render_views
-
- describe 'GET #index' do
- it 'returns json document pointing to node info' do
- get :index
-
- expect(response).to have_http_status(200)
- expect(response.media_type).to eq 'application/json'
-
- json = body_as_json
-
- expect(json[:links]).to be_an Array
- expect(json[:links][0][:rel]).to eq 'http://nodeinfo.diaspora.software/ns/schema/2.0'
- expect(json[:links][0][:href]).to include 'nodeinfo/2.0'
- end
- end
-
- describe 'GET #show' do
- it 'returns json document with node info properties' do
- get :show
-
- expect(response).to have_http_status(200)
- expect(response.media_type).to eq 'application/json'
-
- json = body_as_json
- foo = { 'foo' => 0 }
-
- expect(foo).to_not match_json_schema('nodeinfo_2.0')
- expect(json).to match_json_schema('nodeinfo_2.0')
- expect(json[:version]).to eq '2.0'
- expect(json[:usage]).to be_a Hash
- expect(json[:software]).to be_a Hash
- expect(json[:protocols]).to be_an Array
- end
- end
-end
diff --git a/spec/controllers/well_known/webfinger_controller_spec.rb b/spec/controllers/well_known/webfinger_controller_spec.rb
deleted file mode 100644
index 6610f4d138e1e2..00000000000000
--- a/spec/controllers/well_known/webfinger_controller_spec.rb
+++ /dev/null
@@ -1,235 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-describe WellKnown::WebfingerController do
- include RoutingHelper
-
- render_views
-
- describe 'GET #show' do
- subject(:perform_show!) do
- get :show, params: { resource: resource }, format: :json
- end
-
- let(:alternate_domains) { [] }
- let(:alice) { Fabricate(:account, username: 'alice') }
- let(:resource) { nil }
-
- around do |example|
- tmp = Rails.configuration.x.alternate_domains
- Rails.configuration.x.alternate_domains = alternate_domains
- example.run
- Rails.configuration.x.alternate_domains = tmp
- end
-
- shared_examples 'a successful response' do
- it 'returns http success' do
- expect(response).to have_http_status(200)
- end
-
- it 'does not set a Vary header' do
- expect(response.headers['Vary']).to be_nil
- end
-
- it 'returns application/jrd+json' do
- expect(response.media_type).to eq 'application/jrd+json'
- end
-
- it 'returns links for the account' do
- json = body_as_json
- expect(json[:subject]).to eq 'acct:alice@cb6e6126.ngrok.io'
- expect(json[:aliases]).to include('https://cb6e6126.ngrok.io/@alice', 'https://cb6e6126.ngrok.io/users/alice')
- end
- end
-
- context 'when an account exists' do
- let(:resource) { alice.to_webfinger_s }
-
- before do
- perform_show!
- end
-
- it_behaves_like 'a successful response'
- end
-
- context 'when an account is temporarily suspended' do
- let(:resource) { alice.to_webfinger_s }
-
- before do
- alice.suspend!
- perform_show!
- end
-
- it_behaves_like 'a successful response'
- end
-
- context 'when an account is permanently suspended or deleted' do
- let(:resource) { alice.to_webfinger_s }
-
- before do
- alice.suspend!
- alice.deletion_request.destroy
- perform_show!
- end
-
- it 'returns http gone' do
- expect(response).to have_http_status(410)
- end
- end
-
- context 'when an account is not found' do
- let(:resource) { 'acct:not@existing.com' }
-
- before do
- perform_show!
- end
-
- it 'returns http not found' do
- expect(response).to have_http_status(404)
- end
- end
-
- context 'with an alternate domain' do
- let(:alternate_domains) { ['foo.org'] }
-
- before do
- perform_show!
- end
-
- context 'when an account exists' do
- let(:resource) do
- username, = alice.to_webfinger_s.split('@')
- "#{username}@foo.org"
- end
-
- it_behaves_like 'a successful response'
- end
-
- context 'when the domain is wrong' do
- let(:resource) do
- username, = alice.to_webfinger_s.split('@')
- "#{username}@bar.org"
- end
-
- it 'returns http not found' do
- expect(response).to have_http_status(404)
- end
- end
- end
-
- context 'when the old name scheme is used to query the instance actor' do
- let(:resource) do
- "#{Rails.configuration.x.local_domain}@#{Rails.configuration.x.local_domain}"
- end
-
- before do
- perform_show!
- end
-
- it 'returns http success' do
- expect(response).to have_http_status(200)
- end
-
- it 'does not set a Vary header' do
- expect(response.headers['Vary']).to be_nil
- end
-
- it 'returns application/jrd+json' do
- expect(response.media_type).to eq 'application/jrd+json'
- end
-
- it 'returns links for the internal account' do
- json = body_as_json
- expect(json[:subject]).to eq 'acct:mastodon.internal@cb6e6126.ngrok.io'
- expect(json[:aliases]).to eq ['https://cb6e6126.ngrok.io/actor']
- end
- end
-
- context 'with no resource parameter' do
- let(:resource) { nil }
-
- before do
- perform_show!
- end
-
- it 'returns http bad request' do
- expect(response).to have_http_status(400)
- end
- end
-
- context 'with a nonsense parameter' do
- let(:resource) { 'df/:dfkj' }
-
- before do
- perform_show!
- end
-
- it 'returns http bad request' do
- expect(response).to have_http_status(400)
- end
- end
-
- context 'when an account has an avatar' do
- let(:alice) { Fabricate(:account, username: 'alice', avatar: attachment_fixture('attachment.jpg')) }
- let(:resource) { alice.to_webfinger_s }
-
- it 'returns avatar in response' do
- perform_show!
-
- avatar_link = get_avatar_link(body_as_json)
- expect(avatar_link).to_not be_nil
- expect(avatar_link[:type]).to eq alice.avatar.content_type
- expect(avatar_link[:href]).to eq full_asset_url(alice.avatar)
- end
-
- context 'with limited federation mode' do
- before do
- allow(Rails.configuration.x).to receive(:limited_federation_mode).and_return(true)
- end
-
- it 'does not return avatar in response' do
- perform_show!
-
- avatar_link = get_avatar_link(body_as_json)
- expect(avatar_link).to be_nil
- end
- end
-
- context 'when enabling DISALLOW_UNAUTHENTICATED_API_ACCESS' do
- around do |example|
- ClimateControl.modify DISALLOW_UNAUTHENTICATED_API_ACCESS: 'true' do
- example.run
- end
- end
-
- it 'does not return avatar in response' do
- perform_show!
-
- avatar_link = get_avatar_link(body_as_json)
- expect(avatar_link).to be_nil
- end
- end
- end
-
- context 'when an account does not have an avatar' do
- let(:alice) { Fabricate(:account, username: 'alice', avatar: nil) }
- let(:resource) { alice.to_webfinger_s }
-
- before do
- perform_show!
- end
-
- it 'does not return avatar in response' do
- avatar_link = get_avatar_link(body_as_json)
- expect(avatar_link).to be_nil
- end
- end
- end
-
- private
-
- def get_avatar_link(json)
- json[:links].find { |link| link[:rel] == 'http://webfinger.net/rel/avatar' }
- end
-end
diff --git a/spec/requests/api/v1/accounts/relationships_spec.rb b/spec/requests/api/v1/accounts/relationships_spec.rb
index 5011352c6b80e0..e06ffdfae970d1 100644
--- a/spec/requests/api/v1/accounts/relationships_spec.rb
+++ b/spec/requests/api/v1/accounts/relationships_spec.rb
@@ -27,12 +27,16 @@
it 'returns JSON with correct data', :aggregate_failures do
subject
- json = body_as_json
-
- expect(response).to have_http_status(200)
- expect(json).to be_a Enumerable
- expect(json.first[:following]).to be true
- expect(json.first[:followed_by]).to be false
+ expect(response)
+ .to have_http_status(200)
+ expect(body_as_json)
+ .to be_an(Enumerable)
+ .and have_attributes(
+ first: include(
+ following: true,
+ followed_by: false
+ )
+ )
end
end
@@ -40,18 +44,19 @@
let(:params) { { id: [simon.id, lewis.id, bob.id] } }
context 'when there is returned JSON data' do
- let(:json) { body_as_json }
-
context 'with default parameters' do
it 'returns an enumerable json with correct elements, excluding suspended accounts', :aggregate_failures do
subject
- expect(response).to have_http_status(200)
- expect(json).to be_a Enumerable
- expect(json.size).to eq 2
-
- expect_simon_item_one
- expect_lewis_item_two
+ expect(response)
+ .to have_http_status(200)
+ expect(body_as_json)
+ .to be_an(Enumerable)
+ .and have_attributes(
+ size: 2,
+ first: include(simon_item),
+ second: include(lewis_item)
+ )
end
end
@@ -61,62 +66,75 @@
it 'returns an enumerable json with correct elements, including suspended accounts', :aggregate_failures do
subject
- expect(response).to have_http_status(200)
- expect(json).to be_a Enumerable
- expect(json.size).to eq 3
-
- expect_simon_item_one
- expect_lewis_item_two
- expect_bob_item_three
+ expect(response)
+ .to have_http_status(200)
+ expect(body_as_json)
+ .to be_an(Enumerable)
+ .and have_attributes(
+ size: 3,
+ first: include(simon_item),
+ second: include(lewis_item),
+ third: include(bob_item)
+ )
end
end
- def expect_simon_item_one
- expect(json.first[:id]).to eq simon.id.to_s
- expect(json.first[:following]).to be true
- expect(json.first[:showing_reblogs]).to be true
- expect(json.first[:followed_by]).to be false
- expect(json.first[:muting]).to be false
- expect(json.first[:requested]).to be false
- expect(json.first[:domain_blocking]).to be false
+ def simon_item
+ {
+ id: simon.id.to_s,
+ following: true,
+ showing_reblogs: true,
+ followed_by: false,
+ muting: false,
+ requested: false,
+ domain_blocking: false,
+ }
end
- def expect_lewis_item_two
- expect(json.second[:id]).to eq lewis.id.to_s
- expect(json.second[:following]).to be false
- expect(json.second[:showing_reblogs]).to be false
- expect(json.second[:followed_by]).to be true
- expect(json.second[:muting]).to be false
- expect(json.second[:requested]).to be false
- expect(json.second[:domain_blocking]).to be false
+ def lewis_item
+ {
+ id: lewis.id.to_s,
+ following: false,
+ showing_reblogs: false,
+ followed_by: true,
+ muting: false,
+ requested: false,
+ domain_blocking: false,
+
+ }
end
- def expect_bob_item_three
- expect(json.third[:id]).to eq bob.id.to_s
- expect(json.third[:following]).to be false
- expect(json.third[:showing_reblogs]).to be false
- expect(json.third[:followed_by]).to be false
- expect(json.third[:muting]).to be false
- expect(json.third[:requested]).to be false
- expect(json.third[:domain_blocking]).to be false
+ def bob_item
+ {
+ id: bob.id.to_s,
+ following: false,
+ showing_reblogs: false,
+ followed_by: false,
+ muting: false,
+ requested: false,
+ domain_blocking: false,
+
+ }
end
end
it 'returns JSON with correct data on previously cached requests' do
# Initial request including multiple accounts in params
get '/api/v1/accounts/relationships', headers: headers, params: { id: [simon.id, lewis.id] }
- expect(body_as_json.size).to eq(2)
+ expect(body_as_json)
+ .to have_attributes(size: 2)
# Subsequent request with different id, should override cache from first request
get '/api/v1/accounts/relationships', headers: headers, params: { id: [simon.id] }
- expect(response).to have_http_status(200)
+ expect(response)
+ .to have_http_status(200)
expect(body_as_json)
.to be_an(Enumerable)
.and have_attributes(
size: 1,
- first: hash_including(
+ first: include(
following: true,
showing_reblogs: true
)
@@ -129,13 +147,17 @@ def expect_bob_item_three
get '/api/v1/accounts/relationships', headers: headers, params: { id: [simon.id] }
- expect(response).to have_http_status(200)
+ expect(response)
+ .to have_http_status(200)
- json = body_as_json
-
- expect(json).to be_a Enumerable
- expect(json.first[:following]).to be false
- expect(json.first[:showing_reblogs]).to be false
+ expect(body_as_json)
+ .to be_an(Enumerable)
+ .and have_attributes(
+ first: include(
+ following: false,
+ showing_reblogs: false
+ )
+ )
end
end
end
diff --git a/spec/requests/host_meta_request_spec.rb b/spec/requests/host_meta_request_spec.rb
deleted file mode 100644
index ec26ecba7d96e0..00000000000000
--- a/spec/requests/host_meta_request_spec.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-describe 'The host_meta route' do
- describe 'requested without accepts headers' do
- it 'returns an xml response' do
- get host_meta_url
-
- expect(response).to have_http_status(200)
- expect(response.media_type).to eq 'application/xrd+xml'
- end
- end
-end
diff --git a/spec/requests/webfinger_request_spec.rb b/spec/requests/webfinger_request_spec.rb
deleted file mode 100644
index 68a1478bed6b62..00000000000000
--- a/spec/requests/webfinger_request_spec.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-describe 'The webfinger route' do
- let(:alice) { Fabricate(:account, username: 'alice') }
-
- describe 'requested with standard accepts headers' do
- it 'returns a json response' do
- get webfinger_url(resource: alice.to_webfinger_s)
-
- expect(response).to have_http_status(200)
- expect(response.media_type).to eq 'application/jrd+json'
- end
- end
-
- describe 'asking for json format' do
- it 'returns a json response for json format' do
- get webfinger_url(resource: alice.to_webfinger_s, format: :json)
-
- expect(response).to have_http_status(200)
- expect(response.media_type).to eq 'application/jrd+json'
- end
-
- it 'returns a json response for json accept header' do
- headers = { 'HTTP_ACCEPT' => 'application/jrd+json' }
- get webfinger_url(resource: alice.to_webfinger_s), headers: headers
-
- expect(response).to have_http_status(200)
- expect(response.media_type).to eq 'application/jrd+json'
- end
- end
-end
diff --git a/spec/requests/well_known/change_password_spec.rb b/spec/requests/well_known/change_password_spec.rb
new file mode 100644
index 00000000000000..04134b71ff5e68
--- /dev/null
+++ b/spec/requests/well_known/change_password_spec.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe 'The /.well-known/change-password request' do
+ it 'redirects to the change password page' do
+ get '/.well-known/change-password'
+
+ expect(response).to redirect_to '/auth/edit'
+ end
+end
diff --git a/spec/requests/well_known/host_meta_spec.rb b/spec/requests/well_known/host_meta_spec.rb
new file mode 100644
index 00000000000000..ca10a51a01b26f
--- /dev/null
+++ b/spec/requests/well_known/host_meta_spec.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe 'The /.well-known/host-meta request' do
+ it 'returns http success with valid XML response' do
+ get '/.well-known/host-meta'
+
+ expect(response)
+ .to have_http_status(200)
+ .and have_attributes(
+ media_type: 'application/xrd+xml',
+ body: host_meta_xml_template
+ )
+ end
+
+ private
+
+ def host_meta_xml_template
+ <<~XML
+
+
+
+
+ XML
+ end
+end
diff --git a/spec/requests/well_known/node_info_spec.rb b/spec/requests/well_known/node_info_spec.rb
new file mode 100644
index 00000000000000..0934b0fde6fed8
--- /dev/null
+++ b/spec/requests/well_known/node_info_spec.rb
@@ -0,0 +1,58 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe 'The well-known node-info endpoints' do
+ describe 'The /.well-known/node-info endpoint' do
+ it 'returns JSON document pointing to node info' do
+ get '/.well-known/nodeinfo'
+
+ expect(response)
+ .to have_http_status(200)
+ .and have_attributes(
+ media_type: 'application/json'
+ )
+
+ expect(body_as_json).to include(
+ links: be_an(Array).and(
+ contain_exactly(
+ include(
+ rel: 'http://nodeinfo.diaspora.software/ns/schema/2.0',
+ href: include('nodeinfo/2.0')
+ )
+ )
+ )
+ )
+ end
+ end
+
+ describe 'The /nodeinfo/2.0 endpoint' do
+ it 'returns JSON document with node info properties' do
+ get '/nodeinfo/2.0'
+
+ expect(response)
+ .to have_http_status(200)
+ .and have_attributes(
+ media_type: 'application/json'
+ )
+
+ expect(non_matching_hash)
+ .to_not match_json_schema('nodeinfo_2.0')
+
+ expect(body_as_json)
+ .to match_json_schema('nodeinfo_2.0')
+ .and include(
+ version: '2.0',
+ usage: be_a(Hash),
+ software: be_a(Hash),
+ protocols: be_a(Array)
+ )
+ end
+
+ private
+
+ def non_matching_hash
+ { 'foo' => 0 }
+ end
+ end
+end
diff --git a/spec/requests/well_known/webfinger_spec.rb b/spec/requests/well_known/webfinger_spec.rb
new file mode 100644
index 00000000000000..779f1bba598d02
--- /dev/null
+++ b/spec/requests/well_known/webfinger_spec.rb
@@ -0,0 +1,255 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe 'The /.well-known/webfinger endpoint' do
+ subject(:perform_request!) { get webfinger_url(resource: resource) }
+
+ let(:alternate_domains) { [] }
+ let(:alice) { Fabricate(:account, username: 'alice') }
+ let(:resource) { nil }
+
+ around do |example|
+ tmp = Rails.configuration.x.alternate_domains
+ Rails.configuration.x.alternate_domains = alternate_domains
+ example.run
+ Rails.configuration.x.alternate_domains = tmp
+ end
+
+ shared_examples 'a successful response' do
+ it 'returns http success' do
+ expect(response).to have_http_status(200)
+ end
+
+ it 'sets only a Vary Origin header' do
+ expect(response.headers['Vary']).to eq('Origin')
+ end
+
+ it 'returns application/jrd+json' do
+ expect(response.media_type).to eq 'application/jrd+json'
+ end
+
+ it 'returns links for the account' do
+ json = body_as_json
+ expect(json[:subject]).to eq 'acct:alice@cb6e6126.ngrok.io'
+ expect(json[:aliases]).to include('https://cb6e6126.ngrok.io/@alice', 'https://cb6e6126.ngrok.io/users/alice')
+ end
+ end
+
+ context 'when an account exists' do
+ let(:resource) { alice.to_webfinger_s }
+
+ before do
+ perform_request!
+ end
+
+ it_behaves_like 'a successful response'
+ end
+
+ context 'when an account is temporarily suspended' do
+ let(:resource) { alice.to_webfinger_s }
+
+ before do
+ alice.suspend!
+ perform_request!
+ end
+
+ it_behaves_like 'a successful response'
+ end
+
+ context 'when an account is permanently suspended or deleted' do
+ let(:resource) { alice.to_webfinger_s }
+
+ before do
+ alice.suspend!
+ alice.deletion_request.destroy
+ perform_request!
+ end
+
+ it 'returns http gone' do
+ expect(response).to have_http_status(410)
+ end
+ end
+
+ context 'when an account is not found' do
+ let(:resource) { 'acct:not@existing.com' }
+
+ before do
+ perform_request!
+ end
+
+ it 'returns http not found' do
+ expect(response).to have_http_status(404)
+ end
+ end
+
+ context 'with an alternate domain' do
+ let(:alternate_domains) { ['foo.org'] }
+
+ before do
+ perform_request!
+ end
+
+ context 'when an account exists' do
+ let(:resource) do
+ username, = alice.to_webfinger_s.split('@')
+ "#{username}@foo.org"
+ end
+
+ it_behaves_like 'a successful response'
+ end
+
+ context 'when the domain is wrong' do
+ let(:resource) do
+ username, = alice.to_webfinger_s.split('@')
+ "#{username}@bar.org"
+ end
+
+ it 'returns http not found' do
+ expect(response).to have_http_status(404)
+ end
+ end
+ end
+
+ context 'when the old name scheme is used to query the instance actor' do
+ let(:resource) do
+ "#{Rails.configuration.x.local_domain}@#{Rails.configuration.x.local_domain}"
+ end
+
+ before do
+ perform_request!
+ end
+
+ it 'returns http success' do
+ expect(response).to have_http_status(200)
+ end
+
+ it 'sets only a Vary Origin header' do
+ expect(response.headers['Vary']).to eq('Origin')
+ end
+
+ it 'returns application/jrd+json' do
+ expect(response.media_type).to eq 'application/jrd+json'
+ end
+
+ it 'returns links for the internal account' do
+ json = body_as_json
+ expect(json[:subject]).to eq 'acct:mastodon.internal@cb6e6126.ngrok.io'
+ expect(json[:aliases]).to eq ['https://cb6e6126.ngrok.io/actor']
+ end
+ end
+
+ context 'with no resource parameter' do
+ let(:resource) { nil }
+
+ before do
+ perform_request!
+ end
+
+ it 'returns http bad request' do
+ expect(response).to have_http_status(400)
+ end
+ end
+
+ context 'with a nonsense parameter' do
+ let(:resource) { 'df/:dfkj' }
+
+ before do
+ perform_request!
+ end
+
+ it 'returns http bad request' do
+ expect(response).to have_http_status(400)
+ end
+ end
+
+ context 'when an account has an avatar' do
+ let(:alice) { Fabricate(:account, username: 'alice', avatar: attachment_fixture('attachment.jpg')) }
+ let(:resource) { alice.to_webfinger_s }
+
+ it 'returns avatar in response' do
+ perform_request!
+
+ avatar_link = get_avatar_link(body_as_json)
+ expect(avatar_link).to_not be_nil
+ expect(avatar_link[:type]).to eq alice.avatar.content_type
+ expect(avatar_link[:href]).to eq Addressable::URI.new(host: Rails.configuration.x.local_domain, path: alice.avatar.to_s, scheme: 'https').to_s
+ end
+
+ context 'with limited federation mode' do
+ before do
+ allow(Rails.configuration.x).to receive(:limited_federation_mode).and_return(true)
+ end
+
+ it 'does not return avatar in response' do
+ perform_request!
+
+ avatar_link = get_avatar_link(body_as_json)
+ expect(avatar_link).to be_nil
+ end
+ end
+
+ context 'when enabling DISALLOW_UNAUTHENTICATED_API_ACCESS' do
+ around do |example|
+ ClimateControl.modify DISALLOW_UNAUTHENTICATED_API_ACCESS: 'true' do
+ example.run
+ end
+ end
+
+ it 'does not return avatar in response' do
+ perform_request!
+
+ avatar_link = get_avatar_link(body_as_json)
+ expect(avatar_link).to be_nil
+ end
+ end
+ end
+
+ context 'when an account does not have an avatar' do
+ let(:alice) { Fabricate(:account, username: 'alice', avatar: nil) }
+ let(:resource) { alice.to_webfinger_s }
+
+ before do
+ perform_request!
+ end
+
+ it 'does not return avatar in response' do
+ avatar_link = get_avatar_link(body_as_json)
+ expect(avatar_link).to be_nil
+ end
+ end
+
+ context 'with different headers' do
+ describe 'requested with standard accepts headers' do
+ it 'returns a json response' do
+ get webfinger_url(resource: alice.to_webfinger_s)
+
+ expect(response).to have_http_status(200)
+ expect(response.media_type).to eq 'application/jrd+json'
+ end
+ end
+
+ describe 'asking for json format' do
+ it 'returns a json response for json format' do
+ get webfinger_url(resource: alice.to_webfinger_s, format: :json)
+
+ expect(response).to have_http_status(200)
+ expect(response.media_type).to eq 'application/jrd+json'
+ end
+
+ it 'returns a json response for json accept header' do
+ headers = { 'HTTP_ACCEPT' => 'application/jrd+json' }
+ get webfinger_url(resource: alice.to_webfinger_s), headers: headers
+
+ expect(response).to have_http_status(200)
+ expect(response.media_type).to eq 'application/jrd+json'
+ end
+ end
+ end
+
+ private
+
+ def get_avatar_link(json)
+ json[:links].find { |link| link[:rel] == 'http://webfinger.net/rel/avatar' }
+ end
+end
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 7cd9b14159aa70..47ded4c6b4b957 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -2,24 +2,8 @@
require 'rspec/retry'
-if ENV['DISABLE_SIMPLECOV'] != 'true'
- require 'simplecov'
- require 'simplecov-lcov'
- SimpleCov::Formatter::LcovFormatter.config.report_with_single_file = true
- SimpleCov.formatter = SimpleCov::Formatter::LcovFormatter
- SimpleCov.start 'rails' do
- enable_coverage :branch
- enable_coverage_for_eval
-
- add_filter 'lib/linter'
- add_group 'Policies', 'app/policies'
- add_group 'Presenters', 'app/presenters'
- add_group 'Serializers', 'app/serializers'
- add_group 'Services', 'app/services'
- add_group 'Validators', 'app/validators'
-
- add_group 'Libraries', 'lib'
- end
+unless ENV['DISABLE_SIMPLECOV'] == 'true'
+ require 'simplecov' # Configuration details loaded from .simplecov
end
RSpec.configure do |config|
diff --git a/spec/workers/move_worker_spec.rb b/spec/workers/move_worker_spec.rb
index efad92c047be38..774296fda498ef 100644
--- a/spec/workers/move_worker_spec.rb
+++ b/spec/workers/move_worker_spec.rb
@@ -35,17 +35,16 @@
context 'when user notes are short enough' do
it 'copies user note with prelude' do
subject.perform(source_account.id, target_account.id)
- expect(AccountNote.find_by(account: account_note.account, target_account: target_account).comment).to include(source_account.acct)
- expect(AccountNote.find_by(account: account_note.account, target_account: target_account).comment).to include(account_note.comment)
+ expect(relevant_account_note.comment)
+ .to include(source_account.acct, account_note.comment)
end
it 'merges user notes when needed' do
new_account_note = AccountNote.create!(account: account_note.account, target_account: target_account, comment: 'new note prior to move')
subject.perform(source_account.id, target_account.id)
- expect(AccountNote.find_by(account: account_note.account, target_account: target_account).comment).to include(source_account.acct)
- expect(AccountNote.find_by(account: account_note.account, target_account: target_account).comment).to include(account_note.comment)
- expect(AccountNote.find_by(account: account_note.account, target_account: target_account).comment).to include(new_account_note.comment)
+ expect(relevant_account_note.comment)
+ .to include(source_account.acct, account_note.comment, new_account_note.comment)
end
end
@@ -54,16 +53,24 @@
it 'copies user note without prelude' do
subject.perform(source_account.id, target_account.id)
- expect(AccountNote.find_by(account: account_note.account, target_account: target_account).comment).to include(account_note.comment)
+ expect(relevant_account_note.comment)
+ .to include(account_note.comment)
end
it 'keeps user notes unchanged' do
new_account_note = AccountNote.create!(account: account_note.account, target_account: target_account, comment: 'new note prior to move')
subject.perform(source_account.id, target_account.id)
- expect(AccountNote.find_by(account: account_note.account, target_account: target_account).comment).to include(new_account_note.comment)
+ expect(relevant_account_note.comment)
+ .to include(new_account_note.comment)
end
end
+
+ private
+
+ def relevant_account_note
+ AccountNote.find_by(account: account_note.account, target_account: target_account)
+ end
end
shared_examples 'block and mute handling' do
@@ -71,10 +78,19 @@
subject.perform(source_account.id, target_account.id)
expect(block_service).to have_received(:call).with(blocking_account, target_account)
- expect(AccountNote.find_by(account: blocking_account, target_account: target_account).comment).to include(source_account.acct)
-
expect(muting_account.muting?(target_account)).to be true
- expect(AccountNote.find_by(account: muting_account, target_account: target_account).comment).to include(source_account.acct)
+
+ expect(
+ [note_account_comment, mute_account_comment]
+ ).to all include(source_account.acct)
+ end
+
+ def note_account_comment
+ AccountNote.find_by(account: blocking_account, target_account: target_account).comment
+ end
+
+ def mute_account_comment
+ AccountNote.find_by(account: muting_account, target_account: target_account).comment
end
end
diff --git a/yarn.lock b/yarn.lock
index fdec90029c2670..92a0e12545832d 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4709,13 +4709,13 @@ __metadata:
linkType: hard
"axios@npm:^1.4.0":
- version: 1.6.1
- resolution: "axios@npm:1.6.1"
+ version: 1.6.2
+ resolution: "axios@npm:1.6.2"
dependencies:
follow-redirects: "npm:^1.15.0"
form-data: "npm:^4.0.0"
proxy-from-env: "npm:^1.1.0"
- checksum: ca2c6f56659a7f19e4a99082f549fe151952f6fd8aa72ed148559ab2d6a32ce37cd5dc72ce6d4d3cd91f0c1e2617c7c95c20077e5e244a79f319a6c0ce41204f
+ checksum: 9b77e030e85e4f9cbcba7bb52fbff67d6ce906c92d213e0bd932346a50140faf83733bf786f55bd58301bd92f9973885c7b87d6348023e10f7eaf286d0791a1d
languageName: node
linkType: hard
@@ -17058,8 +17058,8 @@ __metadata:
linkType: hard
"webpack-bundle-analyzer@npm:^4.8.0":
- version: 4.10.0
- resolution: "webpack-bundle-analyzer@npm:4.10.0"
+ version: 4.10.1
+ resolution: "webpack-bundle-analyzer@npm:4.10.1"
dependencies:
"@discoveryjs/json-ext": "npm:0.5.7"
acorn: "npm:^8.0.4"
@@ -17076,7 +17076,7 @@ __metadata:
ws: "npm:^7.3.1"
bin:
webpack-bundle-analyzer: lib/bin/analyzer.js
- checksum: f812a8d3c0198ce518baf742bff656526f3eae69fb7a64c7f0c9cff202f6fb3380cabf3baaae965b8d6ffbbb6fb802eacb373fca03a596a38b01b84cfb2e8329
+ checksum: 6a94c8f6aa03296fb2eb00d6ad3b27bd5c551590fd253772bc61debf3177414d42701014079d4f85c74ba1ca685ae9f0cb4063812b58c21f294d108e9908e5cd
languageName: node
linkType: hard