From e4e7e679b34f7c84449e7f8fa561dd36bdb84269 Mon Sep 17 00:00:00 2001 From: Echo Date: Tue, 7 Apr 2026 15:52:04 +0200 Subject: [PATCH 01/20] Profile editing: Removes old profile editing page (#38584) --- .../settings/featured_tags/index.html.haml | 17 +---- app/views/settings/profiles/show.html.haml | 74 +------------------ .../shared/_profile_new_notice.html.haml | 7 ++ .../settings/verifications/show.html.haml | 2 + config/locales/an.yml | 3 - config/locales/ar.yml | 4 - config/locales/ast.yml | 3 - config/locales/az.yml | 3 - config/locales/be.yml | 4 - config/locales/bg.yml | 4 - config/locales/br.yml | 3 - config/locales/ca.yml | 4 - config/locales/ckb.yml | 3 - config/locales/co.yml | 3 - config/locales/cs.yml | 4 - config/locales/cy.yml | 4 - config/locales/da.yml | 4 - config/locales/de.yml | 4 - config/locales/el.yml | 4 - config/locales/en-GB.yml | 4 - config/locales/en.yml | 4 - config/locales/eo.yml | 4 - config/locales/es-AR.yml | 4 - config/locales/es-MX.yml | 4 - config/locales/es.yml | 4 - config/locales/et.yml | 4 - config/locales/eu.yml | 4 - config/locales/fa.yml | 4 - config/locales/fi.yml | 4 - config/locales/fo.yml | 4 - config/locales/fr-CA.yml | 4 - config/locales/fr.yml | 4 - config/locales/fy.yml | 4 - config/locales/ga.yml | 4 - config/locales/gd.yml | 4 - config/locales/gl.yml | 4 - config/locales/he.yml | 4 - config/locales/hr.yml | 4 - config/locales/hu.yml | 4 - config/locales/hy.yml | 2 - config/locales/ia.yml | 4 - config/locales/id.yml | 3 - config/locales/ie.yml | 4 - config/locales/io.yml | 4 - config/locales/is.yml | 4 - config/locales/it.yml | 4 - config/locales/ja.yml | 4 - config/locales/kab.yml | 4 - config/locales/kk.yml | 3 - config/locales/ko.yml | 4 - config/locales/ku.yml | 3 - config/locales/lad.yml | 4 - config/locales/lt.yml | 5 -- config/locales/lv.yml | 4 - config/locales/ms.yml | 4 - config/locales/my.yml | 4 - config/locales/nan-TW.yml | 4 - config/locales/nl.yml | 4 - config/locales/nn.yml | 4 - config/locales/no.yml | 4 - config/locales/oc.yml | 2 - config/locales/pl.yml | 4 - config/locales/pt-BR.yml | 4 - config/locales/pt-PT.yml | 4 - config/locales/ru.yml | 4 - config/locales/sc.yml | 4 - config/locales/sco.yml | 3 - config/locales/si.yml | 3 - config/locales/sk.yml | 4 - config/locales/sl.yml | 4 - config/locales/sq.yml | 4 - config/locales/sr-Latn.yml | 4 - config/locales/sr.yml | 4 - config/locales/sv.yml | 4 - config/locales/th.yml | 4 - config/locales/tr.yml | 4 - config/locales/tt.yml | 2 - config/locales/uk.yml | 4 - config/locales/vi.yml | 4 - config/locales/zh-CN.yml | 4 - config/locales/zh-HK.yml | 4 - config/locales/zh-TW.yml | 4 - spec/system/profile_spec.rb | 19 ----- spec/system/settings/featured_tags_spec.rb | 42 ----------- spec/system/settings/profiles_spec.rb | 36 --------- 85 files changed, 11 insertions(+), 482 deletions(-) create mode 100644 app/views/settings/shared/_profile_new_notice.html.haml delete mode 100644 spec/system/settings/featured_tags_spec.rb delete mode 100644 spec/system/settings/profiles_spec.rb diff --git a/app/views/settings/featured_tags/index.html.haml b/app/views/settings/featured_tags/index.html.haml index dcefe1b3b8..b6dcd664cf 100644 --- a/app/views/settings/featured_tags/index.html.haml +++ b/app/views/settings/featured_tags/index.html.haml @@ -5,19 +5,4 @@ %h1= t('settings.profile') = render partial: 'settings/shared/profile_navigation' -= simple_form_for @featured_tag, url: settings_featured_tags_path do |f| - = render 'shared/error_messages', object: @featured_tag - - %p.lead= t('featured_tags.hint_html') - - .fields-group - = f.input :name, - hint: featured_tags_hint(@recently_used_tags), - wrapper: :with_block_label - - .actions - = f.button :button, t('featured_tags.add_new'), type: :submit - -%hr.spacer/ - -= render collection: @featured_tags, partial: 'settings/featured_tags/featured_tag' += render partial: 'settings/shared/profile_new_notice' diff --git a/app/views/settings/profiles/show.html.haml b/app/views/settings/profiles/show.html.haml index 7d7eab3545..6e0cacf4bf 100644 --- a/app/views/settings/profiles/show.html.haml +++ b/app/views/settings/profiles/show.html.haml @@ -5,76 +5,4 @@ %h1= t('settings.profile') = render partial: 'settings/shared/profile_navigation' -- if Mastodon::Feature.profile_redesign_enabled? - %aside.callout - = material_symbol 'info' - .content - .body - %p.title= t('edit_profile.redesign_title') - %p= t('edit_profile.redesign_body') - = link_to t('edit_profile.redesign_button'), '/profile/edit' - -= simple_form_for @account, url: settings_profile_path, html: { id: :edit_profile } do |f| - = render 'shared/error_messages', object: @account - - %p.lead= t('edit_profile.hint_html') - - %h2= t('edit_profile.basic_information') - - .fields-row - .fields-row__column.fields-row__column-6 - .fields-group - = f.input :display_name, wrapper: :with_block_label, input_html: { maxlength: Account::DISPLAY_NAME_LENGTH_LIMIT, data: { default: @account.username } } - - .fields-group - = f.input :note, wrapper: :with_block_label, input_html: { maxlength: Account::NOTE_LENGTH_LIMIT } - - .fields-row__column.fields-group.fields-row__column-6 - .input.with_block_label - %label= t('simple_form.labels.defaults.fields') - %span.hint= t('simple_form.hints.account.fields') - - = f.simple_fields_for :fields do |fields_f| - .row - = fields_f.input :name, placeholder: t('simple_form.labels.account.fields.name'), input_html: { maxlength: Account::Field::MAX_CHARACTERS_LOCAL } - = fields_f.input :value, placeholder: t('simple_form.labels.account.fields.value'), input_html: { maxlength: Account::Field::MAX_CHARACTERS_LOCAL } - - .fields-row - .fields-row__column.fields-row__column-6 - .fields-group - = f.input :avatar, - hint: t('simple_form.hints.defaults.avatar', dimensions: Account::Avatar::AVATAR_GEOMETRY, size: number_to_human_size(Account::Avatar::AVATAR_LIMIT)), - input_html: { accept: Account::Avatar::AVATAR_IMAGE_MIME_TYPES }, - wrapper: :with_block_label - - .fields-row__column.fields-row__column-6 - .fields-group - = image_tag @account.avatar.url, class: 'fields-group__thumbnail', id: 'account_avatar-preview' - - if @account.avatar.present? - = link_to settings_profile_picture_path('avatar'), data: { method: :delete }, class: 'link-button link-button--destructive' do - = material_symbol 'delete' - = t('generic.delete') - - .fields-row - .fields-row__column.fields-row__column-6 - .fields-group - = f.input :header, - hint: t('simple_form.hints.defaults.header', dimensions: Account::Header::HEADER_GEOMETRY, size: number_to_human_size(Account::Header::HEADER_LIMIT)), - input_html: { accept: Account::Header::HEADER_IMAGE_MIME_TYPES }, - wrapper: :with_block_label - - .fields-row__column.fields-row__column-6 - .fields-group - = image_tag @account.header.url, class: 'fields-group__thumbnail', id: 'account_header-preview' - - if @account.header.present? - = link_to settings_profile_picture_path('header'), data: { method: :delete }, class: 'link-button link-button--destructive' do - = material_symbol 'delete' - = t('generic.delete') - - %h2= t('edit_profile.other') - - .fields-group - = f.input :bot, as: :boolean, wrapper: :with_label, hint: t('simple_form.hints.defaults.bot') - - .actions - = f.button :button, t('generic.save_changes'), type: :submit += render partial: 'settings/shared/profile_new_notice' diff --git a/app/views/settings/shared/_profile_new_notice.html.haml b/app/views/settings/shared/_profile_new_notice.html.haml new file mode 100644 index 0000000000..b4a5515a24 --- /dev/null +++ b/app/views/settings/shared/_profile_new_notice.html.haml @@ -0,0 +1,7 @@ +%aside.callout + = material_symbol 'info' + .content + .body + %p.title= t('edit_profile.redesign_title') + %p= t('edit_profile.redesign_body') + = link_to t('edit_profile.redesign_button'), '/profile/edit' diff --git a/app/views/settings/verifications/show.html.haml b/app/views/settings/verifications/show.html.haml index 6e6af16a90..0292deb604 100644 --- a/app/views/settings/verifications/show.html.haml +++ b/app/views/settings/verifications/show.html.haml @@ -5,6 +5,8 @@ %h1= t('settings.profile') = render partial: 'settings/shared/profile_navigation' += render partial: 'settings/shared/profile_new_notice' + .simple_form.form-section %h2.heading-medium= t('verification.website_verification') diff --git a/config/locales/an.yml b/config/locales/an.yml index febd52f7ec..87044b8369 100644 --- a/config/locales/an.yml +++ b/config/locales/an.yml @@ -1038,9 +1038,6 @@ an: lists: Listas mutes: Tiens en silencio storage: Almagazenamiento - featured_tags: - add_new: Anyadir nuevo - hint_html: "Qué son las etiquetas destacadas? S'amuestran de forma prominent en o tuyo perfil publico y permiten a los usuarios navegar per las tuyas publicacions publicas especificament baixo ixas etiquetas. Son una gran ferramienta pa fer un seguimiento de treballos creativos u prochectos a largo plazo." filters: contexts: account: Perfils diff --git a/config/locales/ar.yml b/config/locales/ar.yml index 91a16c83f6..16247b4385 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -1448,8 +1448,6 @@ ar: your_appeal_pending: لقد قمت بتقديم طعن your_appeal_rejected: تم رفض طعنك edit_profile: - basic_information: معلومات أساسية - hint_html: "قم بتخصيص ما سيراه الناس في ملفك الشخصي العام وبجوار منشوراتك. من المرجح أن يتابعك أشخاص آخرون ويتفاعلون معك إن كان لديك صفحة شخصية مملوء وصورة." other: أخرى emoji_styles: auto: تلقائي @@ -1489,10 +1487,8 @@ ar: mutes: قُمتَ بكتم storage: ذاكرة التخزين featured_tags: - add_new: أضف واحدًا جديدا errors: limit: لقد قمت بالفعل بعرض الحد الأقصى من عدد الوسوم - hint_html: "ما هي الوسوم الرائجة؟ يتم عرضها بشكل بارز على ملفك الشخصي العام وتسمح للناس بتصفح منشوراتك العامة على وجه التحديد تحت تلك الوسوم. وهي أداة رائعة لتتبع الأعمال الإبداعية أو المشاريع الطويلة الأجل." filters: contexts: account: الملفات التعريفية diff --git a/config/locales/ast.yml b/config/locales/ast.yml index c8ca7a7657..0e3696f847 100644 --- a/config/locales/ast.yml +++ b/config/locales/ast.yml @@ -524,7 +524,6 @@ ast: your_appeal_pending: Unviesti una apellación your_appeal_rejected: Refugóse la to apellación edit_profile: - basic_information: Información básica other: Otres preferencies errors: '400': La solicitú qu'unviesti nun yera válida o yera incorreuta. @@ -554,8 +553,6 @@ ast: domain_blocks: Dominios bloquiaos lists: Llistes storage: Almacenamientu multimedia - featured_tags: - add_new: Amestar filters: contexts: account: Perfiles diff --git a/config/locales/az.yml b/config/locales/az.yml index ea5304929b..69478ccf39 100644 --- a/config/locales/az.yml +++ b/config/locales/az.yml @@ -170,9 +170,6 @@ az: confirm_password: Kimliyinizi doğrulamaq üçün hazırkı parolunuzu daxil edin proceed: Hesabı sil success_msg: Hesabınız uğurla silindi - edit_profile: - basic_information: Təməl məlumatlar - hint_html: "İnsanların hər kəsə açıq profilinizdə və göndərişlərinizin yanında nə göstərmək istədiyinizi özəlləşdirin. Doldurulmuş bir profilə və bir profil şəklinə sahib olduğunuz zaman digər şəxslərin sizi izləmə və sizinlə əlaqə qurma ehtimalı yüksəkdir." exports: archive_takeout: hint_html: "Göndərişlərinizin və yüklədiyiniz medianın bir arxivini tələb edə bilərsiniz. Xaricə köçürülmüş verilər, istənilən uyumlu yazılım tərəfindən oxuna bilən ActivityPub formatında olacaq. Hər 7 gündə bir dəfə arxiv tələb edə bilərsiniz." diff --git a/config/locales/be.yml b/config/locales/be.yml index 49424ed3ad..2e5fe1c8d9 100644 --- a/config/locales/be.yml +++ b/config/locales/be.yml @@ -1460,8 +1460,6 @@ be: your_appeal_pending: Вы адправілі апеляцыю your_appeal_rejected: Ваша абскарджанне было адхілена edit_profile: - basic_information: Асноўная інфармацыя - hint_html: "Наладзьце тое, што людзі будуць бачыць у вашым профілі і побач з вашымі паведамленнямі. Іншыя людзі з большай верагоднасцю будуць сачыць і ўзаемадзейнічаць з вамі, калі ў вас ёсць запоўнены профіль і фота профілю." other: Іншае redesign_body: Рэдагаванне профілю цяпер даступнае наўпрост са старонкі профілю. redesign_button: Перайсці туды @@ -1538,10 +1536,8 @@ be: mutes: Уліковыя запісы, якія вы ігнаруеце storage: Медыясховішча featured_tags: - add_new: Дадаць новы errors: limit: Вы ўжо дадалі максімальную колькасць хэштэгаў - hint_html: "Што такое выбраныя хэштэгі? Яны паказваюцца на бачным месцы вашага профілю і дазваляюць людзям праглядаць вашыя публічныя пасты з гэтымі хэштэгамі. З іхняй дапамогай вельмі зручна сачыць за творчымі ці даўгатэрміновымі праектамі." filters: contexts: account: Профілі diff --git a/config/locales/bg.yml b/config/locales/bg.yml index 84e88b3cad..67c7d6944a 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -1361,8 +1361,6 @@ bg: your_appeal_pending: Подадохте обжалване your_appeal_rejected: Вашето обжалване е отхвърлено edit_profile: - basic_information: Основна информация - hint_html: "Персонализирайте какво хората виждат в обществения ви профил и до публикациите ви. Другите хора са по-склонни да ви последват и да взаимодействат с вас, когато имате попълнен профил и снимка на профила." other: Друго emoji_styles: auto: Автоматично @@ -1402,10 +1400,8 @@ bg: mutes: Заглушавания storage: Съхранение на мултимедия featured_tags: - add_new: Добавяне на нов errors: limit: Вече достигнахте максималния брой хаштагове - hint_html: "Изтъкнете най-важните си хаштагове на профила? Чудесен инструмент за организиране на вашите творби и дългосрочни проекти, изтъкнатите хаштагове са отчетливо видими на вашия профил и позволяват лесен достъп до вашите собствени публикации." filters: contexts: account: Профили diff --git a/config/locales/br.yml b/config/locales/br.yml index 850d7dc093..6fb6825ebc 100644 --- a/config/locales/br.yml +++ b/config/locales/br.yml @@ -584,7 +584,6 @@ br: none: Diwall suspend: Astaliñ ar gont edit_profile: - basic_information: Titouroù diavaez other: All emoji_styles: auto: Emgefreek @@ -598,8 +597,6 @@ br: bookmarks: Sinedoù csv: CSV lists: Listennoù - featured_tags: - add_new: Ouzhpennañ unan nevez filters: contexts: account: Profiloù diff --git a/config/locales/ca.yml b/config/locales/ca.yml index e0bac6c6c3..8ee8381ef7 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -1376,8 +1376,6 @@ ca: your_appeal_pending: Has enviat una apel·lació your_appeal_rejected: La teva apel·lació ha estat rebutjada edit_profile: - basic_information: Informació bàsica - hint_html: "Personalitza el que la gent veu en el teu perfil públic i a prop dels teus tuts.. És més probable que altres persones et segueixin i interaccionin amb tu quan tens emplenat el teu perfil i amb la teva imatge." other: Altres emoji_styles: auto: Automàtic @@ -1417,10 +1415,8 @@ ca: mutes: Persones silenciades storage: Emmagatzematge featured_tags: - add_new: Afegeix-ne una de nova errors: limit: Ja has mostrat la quantitat màxima d'etiquetes - hint_html: "Què son les etiquetes destacades? Es mostren de manera destacada en el teu perfil públic i permeten a les persones navegar per els teus tuts gràcies a aquestes etiquetes. Són una gran eina per fer un seguiment de treballs creatius o de projectes a llarg termini." filters: contexts: account: Perfils diff --git a/config/locales/ckb.yml b/config/locales/ckb.yml index 2679c7840e..9a0a69be45 100644 --- a/config/locales/ckb.yml +++ b/config/locales/ckb.yml @@ -670,9 +670,6 @@ ckb: lists: لیستەکان mutes: هەژمارە بێدەنگ کراوە storage: هەمارگەی میدیا - featured_tags: - add_new: زیادکردنی نوێ - hint_html: " هاشتاگی تایبەت چییە؟ بە شێوەیەکی دیار نیشان دەدرێت لەسەر پرۆفایلی گشتی و ڕێگە بە خەڵک دەدات بۆ گەڕان لە نووسراوە گشتیەکانت بە تایبەتی لەژێر ئەو هاشتاگە. ئامرازێکی زۆر باشن بۆ پاراستنی کاری داهێنەرانە یان پڕۆژەی درێژخایەنی ئێوە." filters: contexts: account: پرۆفایلەکان diff --git a/config/locales/co.yml b/config/locales/co.yml index 553aa92fb1..0703ae6d07 100644 --- a/config/locales/co.yml +++ b/config/locales/co.yml @@ -629,9 +629,6 @@ co: lists: Liste mutes: Piattate storage: I vostri media - featured_tags: - add_new: Aghjunghje - hint_html: "Quale sò i hashtag in mostra? Sò messi in vista nant'à u vostru prufile pubblicu è permettenu à a ghjente di vede i vostri statuti ch'annu stu hashtag. Sò una bona manere di mustrà e vostre opere creative o i prughjetti à longu termine." filters: contexts: account: Prufili diff --git a/config/locales/cs.yml b/config/locales/cs.yml index a090b663a3..728d9f87fd 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -1449,8 +1449,6 @@ cs: your_appeal_pending: Podali jste odvolání your_appeal_rejected: Vaše odvolání bylo zamítnuto edit_profile: - basic_information: Základní informace - hint_html: "Nastavte si, co lidé uvidí na vašem veřejném profilu a vedle vašich příspěvků. Ostatní lidé vás budou spíše sledovat a komunikovat s vámi, když budete mít vyplněný profil a profilový obrázek." other: Další emoji_styles: auto: Auto @@ -1490,10 +1488,8 @@ cs: mutes: Skrýváte storage: Úložiště médií featured_tags: - add_new: Přidat nový errors: limit: Již jste zvýraznili maximální počet hashtagů - hint_html: "Co jsou zvýrazněné hashtagy? Zobrazují se prominentně na vašem veřejném profilu a dovolují lidem prohlížet si vaše veřejné příspěvky konkrétně pod těmi hashtagy. Je to skvělý nástroj pro sledování kreativních děl nebo dlouhodobých projektů." filters: contexts: account: Profily diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 2bf693f5ea..333a5dd496 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -1497,8 +1497,6 @@ cy: your_appeal_pending: Rydych wedi cyflwyno apêl your_appeal_rejected: Mae eich apêl wedi'i gwrthod edit_profile: - basic_information: Gwybodaeth Sylfaenol - hint_html: "Addaswch yr hyn y mae pobl yn ei weld ar eich proffil cyhoeddus ac wrth ymyl eich postiadau. Mae pobl eraill yn fwy tebygol o'ch dilyn yn ôl a rhyngweithio â chi pan fydd gennych broffil wedi'i lenwi a llun proffil." other: Arall emoji_styles: auto: Awto @@ -1538,10 +1536,8 @@ cy: mutes: Rydych chi'n anwybyddu storage: Storfa cyfryngau featured_tags: - add_new: Ychwanegu errors: limit: Rydych chi eisoes wedi cynnwys y nifer mwyaf o hashnodau - hint_html: "Beth yw hashnodau dan sylw? Maen nhw'n cael eu dangos yn amlwg ar eich proffil cyhoeddus ac yn caniatáu i bobl bori'ch postiadau cyhoeddus yn benodol o dan yr hashnodau hynny. Maen nhw'n arf gwych ar gyfer cadw golwg ar weithiau creadigol neu brojectau tymor hir." filters: contexts: account: Proffilau diff --git a/config/locales/da.yml b/config/locales/da.yml index 7bf224e099..b26cce9c12 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -1418,8 +1418,6 @@ da: your_appeal_pending: Du har indgivet en appel your_appeal_rejected: Din appel er afvist edit_profile: - basic_information: Oplysninger - hint_html: "Tilpas, hvad folk ser på din offentlige profil og ved siden af dine indlæg. Andre personer er mere tilbøjelige til at følge dig tilbage og interagere med dig, når du har en udfyldt profil og et profilbillede." other: Andre redesign_body: Profilredigering kan nu tilgås direkte fra profilsiden. redesign_button: Gå dertil @@ -1494,10 +1492,8 @@ da: mutes: Du skjuler storage: Medielagerplads featured_tags: - add_new: Tilføj nyt errors: limit: Det maksimale antal hashtags er allerede fremhævet - hint_html: "Hvad er fremhævede hashtags? De vises i en fremtrædende position på din offentlige profil og giver folk mulighed for at gennemse dine offentlige indlæg specifikt under disse hashtags. De er et fantastisk værktøj til at holde styr på kreative værker eller langsigtede projekter." filters: contexts: account: Profiler diff --git a/config/locales/de.yml b/config/locales/de.yml index 0fbf8ecad7..8ab731356e 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -1417,8 +1417,6 @@ de: your_appeal_pending: Du hast Einspruch erhoben your_appeal_rejected: Dein Einspruch wurde abgelehnt edit_profile: - basic_information: Allgemeine Informationen - hint_html: "Bestimme, was andere auf deinem öffentlichen Profil und neben deinen Beiträgen sehen können. Wenn du ein Profilbild festlegst und dein Profil vervollständigst, werden andere eher mit dir interagieren und dir folgen." other: Andere redesign_body: Dein Profil kannst du jetzt direkt auf deiner Profilseite bearbeiten. redesign_button: Loslegen @@ -1484,10 +1482,8 @@ de: mutes: Stummgeschaltete Profile storage: Medienspeicher featured_tags: - add_new: Neuen hinzufügen errors: limit: Du hast bereits die maximale Anzahl an Hashtags erreicht - hint_html: "Präsentiere deine wichtigsten Hashtags auf deinem Profil. Vorgestellte Hashtags verschaffen einen Überblick über deine kreativen Werke und langfristigen Projekte. Sie werden gut sichtbar auf deinem Profil angezeigt und ermöglichen einen schnellen Zugriff auf deine eigenen Beiträge." filters: contexts: account: Profile diff --git a/config/locales/el.yml b/config/locales/el.yml index 193b95b20a..66fddceb9c 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -1418,8 +1418,6 @@ el: your_appeal_pending: Υπέβαλλες έφεση your_appeal_rejected: Η έφεση σου απορρίφθηκε edit_profile: - basic_information: Βασικές πληροφορίες - hint_html: "Προσάρμοσε τί βλέπουν άτομα στο δημόσιο προφίλ σου και δίπλα στις αναρτήσεις σου. Είναι πιο πιθανό άλλα άτομα να σε ακολουθήσουν πίσω και να αλληλεπιδράσουν μαζί σου αν έχεις ολοκληρωμένο προφίλ και εικόνα προφίλ." other: Άλλο redesign_body: Η επεξεργασία προφίλ μπορεί τώρα να προσεγγιστεί απευθείας από τη σελίδα του προφίλ. redesign_button: Πηγαίνετε εκεί @@ -1494,10 +1492,8 @@ el: mutes: Έχεις σε σίγαση storage: Χώρος πολυμέσων featured_tags: - add_new: Προσθήκη νέας errors: limit: Έχεις ήδη αναδείξει το μέγιστο αριθμό ετικετών - hint_html: "Ανέδειξε στο προφίλ σου τις πιο σημαντικές ετικέτες σου. Οι αναδεδειγμένες ετικέτες προβάλονται εμφανώς στο προφίλ σου επιτρέποντας γρήγορη πρόσβαση στις αναρτήσεις σου. Είναι ένας ωραίος τρόπος να παρακολουθείς την πορεία των δημιουργικών εργασιών σου ή ενός μακροπρόθεσμου έργου σου." filters: contexts: account: Προφίλ diff --git a/config/locales/en-GB.yml b/config/locales/en-GB.yml index 1e970f3bc6..d85a2a2f28 100644 --- a/config/locales/en-GB.yml +++ b/config/locales/en-GB.yml @@ -1411,8 +1411,6 @@ en-GB: your_appeal_pending: You have submitted an appeal your_appeal_rejected: Your appeal has been rejected edit_profile: - basic_information: Basic information - hint_html: "Customise what people see on your public profile and next to your posts. Other people are more likely to follow you back and interact with you when you have a filled out profile and a profile picture." other: Other emoji_styles: auto: Auto @@ -1452,10 +1450,8 @@ en-GB: mutes: You mute storage: Media storage featured_tags: - add_new: Add new errors: limit: You have already featured the maximum number of hashtags - hint_html: "Feature your most important hashtags on your profile. A great tool for keeping track of your creative works and long-term projects, featured hashtags are displayed prominently on your profile and allow quick access to your own posts." filters: contexts: account: Profiles diff --git a/config/locales/en.yml b/config/locales/en.yml index 883bf18e7a..2c92862102 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1418,8 +1418,6 @@ en: your_appeal_pending: You have submitted an appeal your_appeal_rejected: Your appeal has been rejected edit_profile: - basic_information: Basic information - hint_html: "Customize what people see on your public profile and next to your posts. Other people are more likely to follow you back and interact with you when you have a filled out profile and a profile picture." other: Other redesign_body: Profile editing can now be accessed directly from the profile page. redesign_button: Go there @@ -1494,10 +1492,8 @@ en: mutes: You mute storage: Media storage featured_tags: - add_new: Add new errors: limit: You have already featured the maximum number of hashtags - hint_html: "Feature your most important hashtags on your profile. A great tool for keeping track of your creative works and long-term projects, featured hashtags are displayed prominently on your profile and allow quick access to your own posts." filters: contexts: account: Profiles diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 195b95f07e..7fb13611d2 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -1357,8 +1357,6 @@ eo: your_appeal_pending: Vi sendis apelacion your_appeal_rejected: Via apelacio malakceptitas edit_profile: - basic_information: Baza informo - hint_html: "Personigi, kion homoj vidi en via publika profilo kaj apud viaj afiŝoj. Aliaj homoj estas pli probable resekvi vin kaj interagi kun vi se vi havus finigitan profilon kaj profilan foton." other: Alia emoji_styles: auto: Aŭtomata @@ -1400,10 +1398,8 @@ eo: mutes: Vi silentigas storage: Aŭdovidaĵa konservado featured_tags: - add_new: Aldoni novan errors: limit: Vi jam elstarigis la maksimuman kvanton da kradvortoj - hint_html: "Elstarigu viajn plej gravajn kradvortojn en via profilo. Bona ilo por sekvi viaj kreaĵoj aŭ longdaŭraj projektoj, elstarigitaj kradvortoj bone videblas en via publika profilo kaj ebligas rapidan aliron al viaj propraj afiŝoj." filters: contexts: account: Profiloj diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index d027f882ad..2b4900848f 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -1418,8 +1418,6 @@ es-AR: your_appeal_pending: Enviaste una apelación your_appeal_rejected: Se rechazó tu apelación edit_profile: - basic_information: Información básica - hint_html: "Personalizá lo que la gente ve en tu perfil público y junto a tus publicaciones. Es más probable que otras personas te sigan e interactúen con vos cuando tengas un perfil completo y una foto de perfil." other: Otros redesign_body: Ahora podés acceder a la edición del perfil desde la propia página de perfil. redesign_button: Ir allí @@ -1494,10 +1492,8 @@ es-AR: mutes: Cuentas que silenciaste storage: Almacenamiento de medios featured_tags: - add_new: Agregar nueva errors: limit: Ya estableciste el número máximo de etiquetas - hint_html: "Destacá tus etiquetas más importantes en tu perfil. Una gran herramienta para realizar un seguimiento de tus obras creativas y de tus proyectos a largo plazo. Las etiquetas destacadas se muestran de tal forma en tu perfil y permiten un acceso rápido a tus propios mensajes." filters: contexts: account: Perfiles diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 4021f36727..5fe02d34f4 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -1418,8 +1418,6 @@ es-MX: your_appeal_pending: Has enviado una apelación your_appeal_rejected: Tu apelación ha sido rechazada edit_profile: - basic_information: Información básica - hint_html: "Personaliza lo que la gente ve en tu perfil público junto a tus publicaciones. Es más probable que otras personas te sigan e interactúen contigo cuando completes tu perfil y agregues una foto." other: Otro redesign_body: Ahora puede acceder a la edición del perfil desde la propia página del perfil. redesign_button: Llévame allí @@ -1494,10 +1492,8 @@ es-MX: mutes: Tienes en silencio storage: Almacenamiento featured_tags: - add_new: Añadir nueva errors: limit: Ya has alcanzado la cantidad máxima de etiquetas - hint_html: "Destaca tus etiquetas más importantes en tu perfil. Una herramienta fantástica para llevar un registro de tus trabajos creativos y proyectos a largo plazo; las etiquetas destacadas aparecen en un lugar visible de tu perfil y te permiten acceder rápidamente a tus propias publicaciones." filters: contexts: account: Perfiles diff --git a/config/locales/es.yml b/config/locales/es.yml index 52746858b2..eef3447172 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -1418,8 +1418,6 @@ es: your_appeal_pending: Has enviado una apelación your_appeal_rejected: Tu apelación ha sido rechazada edit_profile: - basic_information: Información básica - hint_html: "Personaliza lo que la gente ve en tu perfil público junto a tus publicaciones. Es más probable que otras personas te sigan e interactúen contigo cuando completas tu perfil y foto." other: Otros redesign_body: Ahora puedes acceder a la edición del perfil desde la propia página de perfil. redesign_button: Llévame allí @@ -1494,10 +1492,8 @@ es: mutes: Tienes en silencio storage: Almacenamiento featured_tags: - add_new: Añadir nuevo errors: limit: Ya has alcanzado la cantidad máxima de etiquetas - hint_html: "¿Qué son las etiquetas destacadas? Se muestran de forma prominente en tu perfil público y permiten a los usuarios navegar por tus publicaciones públicas específicamente bajo esas etiquetas. Son una gran herramienta para hacer un seguimiento de trabajos creativos o proyectos a largo plazo." filters: contexts: account: Perfiles diff --git a/config/locales/et.yml b/config/locales/et.yml index 8a6e8b39bc..28c5565388 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -1396,8 +1396,6 @@ et: your_appeal_pending: Vaidlustus on esitatud your_appeal_rejected: Vaidlustus on tagasi lükatud edit_profile: - basic_information: Põhiinfo - hint_html: "Kohanda, mida inimesed näevad su avalikul profiilil ja postituste kõrval. Inimesed alustavad tõenäolisemalt sinu jälgimist ja interakteeruvad sinuga, kui sul on täidetud profiil ja profiilipilt." other: Muu emoji_styles: auto: Automaatne @@ -1437,10 +1435,8 @@ et: mutes: Oled summutanud storage: Meedia hoidla featured_tags: - add_new: Lisa uus errors: limit: Oled jõudnud teemaviidete lubatud maksimumarvuni - hint_html: "Mis on esiletõstetud teemaviited? Neid teemaviiteid näidatakse su avalikul profiilil esiletõstetult ning need aitavad teistel leida postitusi, millel on selline teemaviide. See on hea viis, kuidas hoida järge loovtöödel või pikaajalistel projektidel." filters: contexts: account: Profiilid diff --git a/config/locales/eu.yml b/config/locales/eu.yml index 85b6eb08f5..4d8398b08a 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -1336,8 +1336,6 @@ eu: your_appeal_pending: Apelazio bat bidali duzu your_appeal_rejected: Zure apelazioa baztertu da edit_profile: - basic_information: Oinarrizko informazioa - hint_html: "Pertsonalizatu jendeak zer ikusi dezakeen zure profil publikoan eta zure bidalketen baitan. Segur aski, jende gehiagok jarraituko dizu eta interakzio gehiago izango dituzu profila osatuta baduzu, profil irudia eta guzti." other: Bestelakoak emoji_styles: auto: Automatikoa @@ -1377,10 +1375,8 @@ eu: mutes: Zuk mututukoak storage: Multimedia biltegiratzea featured_tags: - add_new: Gehitu berria errors: limit: Gehienezko traola kopurua erakutsi duzu jada - hint_html: "Zer dira nabarmendutako traolak? Zure profileko toki nabarmendu batean agertzen dira eta jendeari traola haue dituzten bidalketa publikoak arakatzea ahalbidetzen diote. Sormen-lanak edo epe luzerako proiektuak jarraitzeko primerakoak dira." filters: contexts: account: Profilak diff --git a/config/locales/fa.yml b/config/locales/fa.yml index 50e5a8576f..f68e549ea8 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -1392,8 +1392,6 @@ fa: your_appeal_pending: شما یک درخواست تجدیدنظر فرستادید your_appeal_rejected: درخواست تجدیدنظرتان رد شد edit_profile: - basic_information: اطلاعات پایه - hint_html: "شخصی‌سازی آن چه مردم روی نمایهٔ عمومیتان و کنار فرسته‌هایتان می‌بینند. هنگامی که نمایه‌ای کامل و یک تصویر نمایه داشته باشید،‌ احتمال پی‌گیری متقابل و تعامل با شما بیش‌تر است." other: سایر emoji_styles: auto: خودکار @@ -1433,10 +1431,8 @@ fa: mutes: حساب‌های بی‌صداشده storage: تصویرهای ذخیره‌شده featured_tags: - add_new: افزودن تازه errors: limit: شما بیشترین تعداد مجاز برچسب‌ها را دارید - hint_html: "برچسب‌های برگزیده چیستند؟ این برچسب‌ها به طور واضحی روی نمایهٔ عمومیتان نمایش یافته می‌گذارد افراد فرسته‌های عمومیتان زیرشان را مرور کنند. ابزاری عالی برای دنبال کردن آثار خلاقانه یا پروژه‌های بلندمدت است." filters: contexts: account: نمایه‌ها diff --git a/config/locales/fi.yml b/config/locales/fi.yml index bac33f609e..72d82b37fe 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -1418,8 +1418,6 @@ fi: your_appeal_pending: Olet lähettänyt valituksen your_appeal_rejected: Valituksesi on hylätty edit_profile: - basic_information: Perustiedot - hint_html: "Mukauta, mitä ihmiset näkevät julkisessa profiilissasi ja julkaisujesi vieressä. Sinua seurataan takaisin ja kanssasi ollaan vuorovaikutuksessa todennäköisemmin, kun sinulla on täytetty profiili ja profiilikuva." other: Muut redesign_body: Profiilia pääsee muokkaamaan nyt suoraan profiilisivulta. redesign_button: Siirry sinne @@ -1494,10 +1492,8 @@ fi: mutes: Mykistykset storage: Mediatiedostot featured_tags: - add_new: Lisää uusi errors: limit: Esittelet jo aihetunnisteiden enimmäismäärää - hint_html: "Esittele tärkeimpiä aihetunnisteitasi profiilissasi. Erinomainen työkalu, jolla pidät kirjaa luovista teoksistasi ja pitkäaikaisista projekteistasi. Esittelemäsi aihetunnisteet ovat näyttävällä paikalla profiilissasi ja mahdollistavat nopean pääsyn julkaisuihisi." filters: contexts: account: Profiilit diff --git a/config/locales/fo.yml b/config/locales/fo.yml index 057afbec78..9493ffbc07 100644 --- a/config/locales/fo.yml +++ b/config/locales/fo.yml @@ -1411,8 +1411,6 @@ fo: your_appeal_pending: Tú hevur kært your_appeal_rejected: Kæra tín er vrakað edit_profile: - basic_information: Grundleggjandi upplýsingar - hint_html: "Tillaga tað, sum fólk síggja á tínum almenna vanga og við síðna av tínum postum. Sannlíkindini fyri, at onnur fylgja tær og virka saman við tær eru størri, tá tú hevur fylt út vangan og eina vangamynd." other: Onnur emoji_styles: auto: Sjálvvirkandi @@ -1452,10 +1450,8 @@ fo: mutes: Tú doyvir storage: Miðlagoymsla featured_tags: - add_new: Legg afturat errors: limit: Tú hevur longu varpað loyvda talið av frámerkjum - hint_html: "Hvat eru varpaði frámerki? Tey verða víst sjónliga á almenna vanga tínum og loyva fólki at kaga gjøgnum tínar almennu postar, sum hava tey frámerkini. Tey eru serliga vælegnaði at fylgja við skapandi arbeiði ella langtíðarverkætlanum." filters: contexts: account: Vangar diff --git a/config/locales/fr-CA.yml b/config/locales/fr-CA.yml index af713eab7a..ca1742bc50 100644 --- a/config/locales/fr-CA.yml +++ b/config/locales/fr-CA.yml @@ -1418,8 +1418,6 @@ fr-CA: your_appeal_pending: Vous avez soumis un appel your_appeal_rejected: Votre appel a été rejeté edit_profile: - basic_information: Informations de base - hint_html: "Personnalisez ce que les gens voient sur votre profil public et à côté de vos messages. Les autres personnes seront plus susceptibles de vous suivre et d’interagir avec vous lorsque vous avez un profil complet et une photo." other: Autre redesign_body: La modification du profil est maintenant accessible directement depuis la page de profil. redesign_button: Accéder @@ -1494,10 +1492,8 @@ fr-CA: mutes: Vous masquez storage: Médias stockés featured_tags: - add_new: Ajouter un nouveau hashtag errors: limit: Vous avez déjà mis en avant le nombre maximum de hashtags - hint_html: "Que sont les hashtags mis en avant ? Ils sont affichés en évidence sur votre profil public et permettent aux gens de parcourir vos messages publics qui utilisent ces hashtags. Ils sont un excellent outil pour garder la trace d’activités créatrices ou de projets de long terme." filters: contexts: account: Profils diff --git a/config/locales/fr.yml b/config/locales/fr.yml index acaf914a55..d9ccfed3fa 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -1418,8 +1418,6 @@ fr: your_appeal_pending: Vous avez soumis un appel your_appeal_rejected: Votre appel a été rejeté edit_profile: - basic_information: Informations de base - hint_html: "Personnalisez ce que les gens voient sur votre profil public et à côté de vos messages. Les autres personnes seront plus susceptibles de vous suivre et d’interagir avec vous lorsque vous avez un profil complet et une photo." other: Autre redesign_body: La modification du profil est maintenant accessible directement depuis la page de profil. redesign_button: Accéder @@ -1494,10 +1492,8 @@ fr: mutes: Vous masquez storage: Médias stockés featured_tags: - add_new: Ajouter un nouveau hashtag errors: limit: Vous avez déjà mis en avant le nombre maximum de hashtags - hint_html: "Mettez en évidence vos hashtags les plus importants sur votre profil. Un outil idéal pour suivre vos travaux créatifs et vos projets à long terme, les hashtags mis en avant sont affichés bien en évidence sur votre profil et permettent un accès rapide à vos propres messages." filters: contexts: account: Profils diff --git a/config/locales/fy.yml b/config/locales/fy.yml index 55381b4ba6..6a1a1e719a 100644 --- a/config/locales/fy.yml +++ b/config/locales/fy.yml @@ -1364,8 +1364,6 @@ fy: your_appeal_pending: Jo hawwe in beswier yntsjinne your_appeal_rejected: Jo beswier is ôfwêzen edit_profile: - basic_information: Algemiene ynformaasje - hint_html: "Pas oan wat minsken op jo iepenbiere profyl en njonken jo berjochten sjogge. Oare minsken sille jo earder folgje en mei jo kommunisearje wannear’t jo profyl ynfolle is en jo in profylfoto hawwe." other: Oars emoji_styles: auto: Automatysk @@ -1405,10 +1403,8 @@ fy: mutes: Jo negearje storage: Mediaûnthâld featured_tags: - add_new: Nije tafoegje errors: limit: Jo hawwe al it maksimaal tal hashtags útljochte - hint_html: "Wat binne útljochte hashtags? Dizze wurde prominint op jo iepenbiere profyl toand en stelt minsken yn steat om jo iepenbiere berjochten per hashtag te besjen. It is in goed helpmiddel om kreative wurksumheden of langetermynprojekten by te hâlden." filters: contexts: account: Profilen diff --git a/config/locales/ga.yml b/config/locales/ga.yml index 9c2c012543..f530105c4b 100644 --- a/config/locales/ga.yml +++ b/config/locales/ga.yml @@ -1483,8 +1483,6 @@ ga: your_appeal_pending: Chuir tú achomharc isteach your_appeal_rejected: Diúltaíodh do d'achomharc edit_profile: - basic_information: Eolas bunúsach - hint_html: "Saincheap a bhfeiceann daoine ar do phróifíl phoiblí agus in aice le do phostálacha. Is dóichí go leanfaidh daoine eile ar ais tú agus go n-idirghníomhóidh siad leat nuair a bhíonn próifíl líonta agus pictiúr próifíle agat." other: Eile redesign_body: Is féidir rochtain a fháil ar eagarthóireacht próifíle go díreach ón leathanach próifíle anois. redesign_button: Téigh ann @@ -1562,10 +1560,8 @@ ga: mutes: Balbhaíonn tú storage: Stóráil meáin featured_tags: - add_new: Cuir nua leis errors: limit: Tá uaslíon na hashtags le feiceáil agat cheana féin - hint_html: "Áirigh na haischlibeanna is tábhachtaí ar do phróifíl. Uirlis iontach chun súil a choinneáil ar do shaothair chruthaitheacha agus do thionscadail fhadtéarmacha, taispeántar haischlibeanna faoi thrácht in áit fheiceálach ar do phróifíl agus ceadaíonn siad rochtain thapa ar do phostálacha féin." filters: contexts: account: Próifílí diff --git a/config/locales/gd.yml b/config/locales/gd.yml index b1edcdbd8b..b1c3fdfabb 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -1460,8 +1460,6 @@ gd: your_appeal_pending: Chuir thu ath-thagradh a-null your_appeal_rejected: Chaidh an t-ath-thagradh agad a dhiùltadh edit_profile: - basic_information: Fiosrachadh bunasach - hint_html: "Gnàthaich na chithear air a’ phròifil phoblach agad is ri taobh nam postaichean agad. Bidh càch nas buailtiche do leantainn agus conaltradh leat nuair a bhios tu air a’ phròifil agad a lìonadh agus dealbh rithe." other: Eile redesign_body: "’S urrainn dhut a’ phròifil agad a dheasachadh air duilleag na pròifile fhèin." redesign_button: Tadhail air @@ -1532,10 +1530,8 @@ gd: mutes: Tha thu a’ mùchadh storage: Stòras mheadhanan featured_tags: - add_new: Cuir fear ùr ris errors: limit: Bhrosnaich thu an uiread as motha de thagaichean hais mu thràth - hint_html: "Brosnaich na tagaichean hais as cudromaiche agad air a’ phròifil agad. ’S e deagh-acainn a th’ annta airson sùil a chumail air an obair chruthachail no na pròiseactan fada agad on a thèid na tagaichean hais brosnaichte a shealltainn gu follaiseach air a’ phròifil agad agus ’s urrainnear na postaichean agad inntrigeadh gu luath leotha." filters: contexts: account: Pròifilean diff --git a/config/locales/gl.yml b/config/locales/gl.yml index c868b5a09b..7e24896d8f 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -1418,8 +1418,6 @@ gl: your_appeal_pending: Enviaches unha apelación your_appeal_rejected: A apelación foi rexeitada edit_profile: - basic_information: Información básica - hint_html: "Personaliza o que van ver no teu perfil público e ao lado das túas publicacións. As outras persoas estarán máis animadas a seguirte e interactuar contigo se engades algún dato sobre ti así como unha imaxe de perfil." other: Outros redesign_body: Agora podes acceder á edición do perfil directamente desde a páxina do perfil. redesign_button: Ir á edición @@ -1494,10 +1492,8 @@ gl: mutes: Silenciadas storage: Almacenamento de multimedia featured_tags: - add_new: Engadir novo errors: limit: Xa sinalaches o número máximo de cancelos permitido - hint_html: "¿Qué son os cancelos destacados? Móstranse destacados no teu perfil público e permítenlle a outras persoas ver os teus toots públicos nos que os utilizaches. Son unha ferramenta moi útil para facer seguimento de traballos creativos e proxectos a longo prazo." filters: contexts: account: Perfís diff --git a/config/locales/he.yml b/config/locales/he.yml index ee37e56758..c987f8953d 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -1460,8 +1460,6 @@ he: your_appeal_pending: הגשת ערעור your_appeal_rejected: ערעורך נדחה edit_profile: - basic_information: מידע בסיסי - hint_html: "התאמה אישית של מה שיראו אחרים בפרופיל הציבורי שלך וליד הודעותיך. אחרים עשויים יותר להחזיר עוקב וליצור אתך שיחה אם הפרופיל והתמונה יהיו מלאים." other: אחר redesign_body: ניתן להגיע לעריכת הפרופיל ישירות מעמוד הפרופיל. redesign_button: לך לשם @@ -1538,10 +1536,8 @@ he: mutes: רשימת השתקות storage: אחסון מדיה featured_tags: - add_new: הוספת חדש errors: limit: הצגת כבר את המספר המירבי של תגיות נבחרות - hint_html: "מהן תגיות נבחרות? הן מוצגות במובלט בפרופיל הפומבי שלך ומאפשר לאנשים לעיין בהודעות הפומביות שלך המסומנות בתגיות אלה. הן כלי אדיר למעקב אחר עבודות יצירה ופרוייקטים לטווח ארוך." filters: contexts: account: פרופילים diff --git a/config/locales/hr.yml b/config/locales/hr.yml index 09e904525d..ef00483475 100644 --- a/config/locales/hr.yml +++ b/config/locales/hr.yml @@ -100,8 +100,6 @@ hr: less_than_x_seconds: Upravo sada over_x_years: "%{count}god" x_months: "%{count}mj" - edit_profile: - basic_information: Osnovne informacije exports: archive_takeout: date: Datum @@ -111,8 +109,6 @@ hr: blocks: Blokirali ste lists: Liste storage: Pohrana medijskih sadržaja - featured_tags: - add_new: Dodaj novi filters: contexts: notifications: Obavijesti diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 56e533c67d..0fbbbe90b8 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -1418,8 +1418,6 @@ hu: your_appeal_pending: Beküldtél egy fellebbezést your_appeal_rejected: A fellebbezésedet visszautasították edit_profile: - basic_information: Általános információk - hint_html: "Tedd egyedivé, mi látnak mások a profilodon és a bejegyzéseid mellett. Mások nagyobb eséllyel követnek vissza és lépnek veled kapcsolatba, ha van kitöltött profilod és profilképed." other: Egyéb redesign_body: A profil szerkesztése most már közvetlenül elérhető a profiloldalon. redesign_button: Ugrás oda @@ -1494,10 +1492,8 @@ hu: mutes: Némítás storage: Médiatároló featured_tags: - add_new: Új hozzáadása errors: limit: Elérted a maximálisan kitűzhető hashtagek számát - hint_html: "Mik a kiemelt hashtagek? Ezek állandóan megjelennek a nyilvános profilodon és lehetővé teszik, hogy mások kifejezetten az ezekhez tartozó bejegyzéseidet böngésszék. Jó eszköz ez kreatív munkák vagy hosszútávú projektek nyomonkövetésére." filters: contexts: account: Profil diff --git a/config/locales/hy.yml b/config/locales/hy.yml index 5e4b9a8708..1f869c6672 100644 --- a/config/locales/hy.yml +++ b/config/locales/hy.yml @@ -534,8 +534,6 @@ hy: lists: Ցանկեր mutes: Լռեցրել ես storage: Մեդիա պահոց - featured_tags: - add_new: Աւելացնել նորը filters: contexts: account: Պրոֆիլներ diff --git a/config/locales/ia.yml b/config/locales/ia.yml index babee4f9aa..c5afddfab0 100644 --- a/config/locales/ia.yml +++ b/config/locales/ia.yml @@ -1382,8 +1382,6 @@ ia: your_appeal_pending: Tu ha submittite un appello your_appeal_rejected: Tu appello ha essite rejectate edit_profile: - basic_information: Information basic - hint_html: "Personalisa lo que le personas vide sur tu profilo public e presso tu messages. Il es plus probabile que altere personas te seque e interage con te quando tu ha un profilo complete e un photo." other: Alteres emoji_styles: auto: Automatic @@ -1423,10 +1421,8 @@ ia: mutes: Tu ha silentiate storage: Immagazinage multimedial featured_tags: - add_new: Adder nove errors: limit: Tu ha jam mittite in evidentia le maxime numero de hashtags - hint_html: "Monstra tu plus importante hashtags sur tu profilo. Un excellente instrumento pro tener tracia de tu labores creative e projectos de longe termino, le hashtags que tu mitte in evidentia appare prominentemente sur tu profilo e permitte le accesso rapide a tu proprie messages." filters: contexts: account: Profilos diff --git a/config/locales/id.yml b/config/locales/id.yml index 8d5318607f..57dcfb360c 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -1022,9 +1022,6 @@ id: lists: Daftar mutes: Anda bisukan storage: Penyimpanan media - featured_tags: - add_new: Tambah baru - hint_html: "Apa itu tagar yang diunggulkan? Mereka ditampilkan secara mencolok di profil publik Anda dan mengizinkan orang-orang untuk menjelajahi kiriman publik khususnya yang ada di bawah tagar tersebut. Mereka adalah alat yang bagus untuk melacak pekerjaan kreatif atau proyek jangka panjang." filters: contexts: account: Profil diff --git a/config/locales/ie.yml b/config/locales/ie.yml index b28cbbb70b..2ffc1f7294 100644 --- a/config/locales/ie.yml +++ b/config/locales/ie.yml @@ -1141,8 +1141,6 @@ ie: your_appeal_pending: Tu ha fat un apelle your_appeal_rejected: Tui apelle ha esset rejectet edit_profile: - basic_information: Basic information - hint_html: "Customisa ti quel gente vide sur tui public profil e apu tui postas. Altri persones es plu probabil sequer te e interacter con te si tu have un detalliat profil e un profil-image." other: Altri errors: '400': Li demande quel tu inviat esset ínvalid o misformat. @@ -1178,10 +1176,8 @@ ie: mutes: Tu silentia storage: Inmagasination de medie featured_tags: - add_new: Adjunter un nov errors: limit: Tu ja ha pinglat li maxim númere de hashtags - hint_html: "Pinglar tui max important hashtags sur tui profil. Un bonissim maniere de mantener un registre de tui ovres e projectes, pinglat hashtags es monstrat prominentmen sur tui profil e permisse rapid accesse a tui propri postas." filters: contexts: account: Profiles diff --git a/config/locales/io.yml b/config/locales/io.yml index 85aa06234a..3edfc5c011 100644 --- a/config/locales/io.yml +++ b/config/locales/io.yml @@ -1275,8 +1275,6 @@ io: your_appeal_pending: Vu sendis apelo your_appeal_rejected: Vua apelo refuzesis edit_profile: - basic_information: Fundamentala informo - hint_html: "Personesigez quon personi vidas sur vua publika profilo e apud vua afishi.." other: Altra errors: '400': Demando quon vu sendis esas nevalida o malstrukturala. @@ -1311,10 +1309,8 @@ io: mutes: Vu silencigesas storage: Audvidajkonservo featured_tags: - add_new: Adjuntar novo errors: limit: Vu ja pinglizis la maxima nombro de hastagi - hint_html: "Quo esas estelita hashtagi? Ol montresas eminente che vua publika profilo e povigas personi vidar vua publika posti partikulare kun ta hashtagi. Oli esas bona utensilo por jeretar kreiva agaji e longa projetaji." filters: contexts: account: Profili diff --git a/config/locales/is.yml b/config/locales/is.yml index 50d0a213f3..ffab72f4cb 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -1422,8 +1422,6 @@ is: your_appeal_pending: Þú hefur sent inn áfrýjun your_appeal_rejected: Áfrýjun þinni hefur verið hafnað edit_profile: - basic_information: Grunnupplýsingar - hint_html: "Sérsníddu hvað fólk sér á opinbera notandasniðinu þínu og næst færslunum þínum. Annað fólk er líklegra til að fylgjast með þér og eiga í samskiptum við þig ef þú fyllir út notandasniðið og setur auðkennismynd." other: Annað redesign_body: Núna er hægt að breyta notandasíðunni sinni beint á þeirri síðu. redesign_button: Fara þangað @@ -1498,10 +1496,8 @@ is: mutes: Þú þaggar storage: Geymsla myndefnis featured_tags: - add_new: Bæta við nýju errors: limit: Þú hefur þegar gefið hámarksfjölda myllumerkja aukið vægi - hint_html: "Hvað eru myllumerki með aukið vægi? Þau eru birt áberandi á opinbera notandasniðinu þínu og gera fólki kleift að fletta í gegnum opinberu færslurnar þínar sérstaklega undir þessum myllumerkjum. Þau eru frábær aðferð við að halda utan um skapandi vinnu eða langtíma verkefni." filters: contexts: account: Notandasnið diff --git a/config/locales/it.yml b/config/locales/it.yml index 709e9758e3..b9c26de4f5 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -1418,8 +1418,6 @@ it: your_appeal_pending: Hai presentato un appello your_appeal_rejected: Il tuo appello è stato respinto edit_profile: - basic_information: Informazioni di base - hint_html: "Personalizza ciò che le persone vedono sul tuo profilo pubblico e accanto ai tuoi post. È più probabile che altre persone ti seguano e interagiscano con te quando hai un profilo compilato e un'immagine del profilo." other: Altro redesign_body: Ora è possibile modificare il profilo direttamente dalla pagina del profilo stesso. redesign_button: Vai lì @@ -1494,10 +1492,8 @@ it: mutes: Stai silenziando storage: Archiviazione media featured_tags: - add_new: Aggiungi nuovo errors: limit: Hai già messo in evidenza il numero massimo di hashtag - hint_html: "Cosa sono gli hashtag in evidenza? Sono visualizzati in evidenza sul tuo profilo pubblico e permettono alle persone di visualizzare i tuoi post pubblici marcati con questi hashtag. Sono un grande strumento per tenere traccia di opere creative o progetti a lungo termine." filters: contexts: account: Profili diff --git a/config/locales/ja.yml b/config/locales/ja.yml index b11748cca2..049a7dd53e 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -1350,8 +1350,6 @@ ja: your_appeal_pending: 申し立てを送信しました your_appeal_rejected: 申し立ては拒否されました edit_profile: - basic_information: 基本情報 - hint_html: "アカウントのトップページや投稿の隣に表示される公開情報です。プロフィールとアイコンを設定することで、ほかのユーザーは親しみやすく、またフォローしやすくなります。" other: その他 emoji_styles: auto: オート @@ -1391,10 +1389,8 @@ ja: mutes: ミュート storage: メディア featured_tags: - add_new: 追加 errors: limit: すでに注目のハッシュタグの上限数に達しています - hint_html: "注目のハッシュタグとは? プロフィールページに目立つ形で表示され、そのハッシュタグのついたあなたの公開投稿だけを抽出して閲覧できるようにします。クリエイティブな仕事や長期的なプロジェクトを追うのに優れた機能です。" filters: contexts: account: プロフィール diff --git a/config/locales/kab.yml b/config/locales/kab.yml index 93dc72865c..2a2c686884 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -677,8 +677,6 @@ kab: delete_statuses: Tukksa n tsuffeɣt none: Ɣur-wat edit_profile: - basic_information: Talɣut tamatut - hint_html: "Mudd udem i wayen ttwalin medden deg umaɣnu-inek azayez ɣer yidis n yiznan-ik. Imdanen niḍen zemren ad k-ḍefren yernu ad gen assaɣ yid-k mi ara tesɛuḍ amaɣnu yeccuṛen ed tugna n umaɣnu." other: Ayen nniḍen emoji_styles: auto: Awurman @@ -699,8 +697,6 @@ kab: csv: CSV lists: Tibdarin mutes: Wid tesgugmeḍ - featured_tags: - add_new: Rnu amaynut filters: contexts: account: Imeɣna diff --git a/config/locales/kk.yml b/config/locales/kk.yml index d478ab031e..529c2afdd9 100644 --- a/config/locales/kk.yml +++ b/config/locales/kk.yml @@ -411,9 +411,6 @@ kk: lists: Тізімдер mutes: Үнсіздер storage: Медиа жинақ - featured_tags: - add_new: Жаңасын қосу - hint_html: " Ерекшеліктері бар хэштегтер дегеніміз не? Олар жалпыға қол жетімді профильде көрсетіледі және адамдарға сіздің жалпы хабарламаларыңызды сол хэштегтердің астына қарауға мүмкіндік береді. Олар шығармашылық жұмыстарды немесе ұзақ мерзімді жобаларды бақылаудың тамаша құралы." filters: contexts: home: Ішкі желі diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 179956c433..616b6e7a64 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -1376,8 +1376,6 @@ ko: your_appeal_pending: 소명을 제출했습니다 your_appeal_rejected: 소명이 기각되었습니다 edit_profile: - basic_information: 기본 정보 - hint_html: "사람들이 공개 프로필을 보고서 게시물을 볼 때를 위한 프로필을 꾸밉니다. 프로필과 프로필 사진을 채우면 다른 사람들이 나를 팔로우하고 나와 교류할 기회가 더 많아집니다." other: 기타 emoji_styles: auto: 자동 @@ -1417,10 +1415,8 @@ ko: mutes: 뮤트 storage: 미디어 featured_tags: - add_new: 추가 errors: limit: 추천 해시태그 최대 개수를 초과합니다 - hint_html: "내 가장 중요한 해시태그들을 프로필에서 추천하세요. 내 창작물이나 오래 걸리는 프로젝트를 따라가기 위한 도구이며 추천 해시태그는 내 프로필에 잘 보이게 표시되고 내 게시물에 대한 빠른 접근을 가능하게 합니다." filters: contexts: account: 프로필 diff --git a/config/locales/ku.yml b/config/locales/ku.yml index 516f3a4270..2ac982f1d3 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -1036,9 +1036,6 @@ ku: lists: Rêzok mutes: Te bêdeng kir storage: Bîrdanaka medyayê - featured_tags: - add_new: Yeka nû tevlî bike - hint_html: " Hashtagên destnîşankirî çi ne? Ew bi eşkere li ser profîla te ya gelemperî têne xuyakirin û dihêlin ku mirov bi taybetî di binê wan hashtagan de li şandiyên te yên gelemperî bigere. Ew ji bo şopandina karên afirîner an projeyên demdirêj amûrek girîng in." filters: contexts: account: Profîl diff --git a/config/locales/lad.yml b/config/locales/lad.yml index 04a09327c0..70a2872f52 100644 --- a/config/locales/lad.yml +++ b/config/locales/lad.yml @@ -1304,8 +1304,6 @@ lad: your_appeal_pending: Tienes enviado una apelasyon your_appeal_rejected: Tu apelasyon fue refuzada edit_profile: - basic_information: Enformasyon bazika - hint_html: "Personaliza lo ke la djente ve en tu profil publiko i kon tus publikasyones. Es mas probavle ke otras personas te sigan i enteraktuen kontigo kuando kompletas tu profil i foto." other: Otros emoji_styles: auto: Otomatiko @@ -1345,10 +1343,8 @@ lad: mutes: Silensias storage: Magazinaje de multimedia featured_tags: - add_new: Adjusta muevo errors: limit: Tienes alkansado el karar maksimo de etiketas - hint_html: "Avalia tus etiketas mas importantes en tu profil. Se amostran de forma prominente en tu profil publiko i permeten a los utilizadores navigar por tus publikasyones publikas espesifikamente basho akeyas etiketas." filters: contexts: account: Profiles diff --git a/config/locales/lt.yml b/config/locales/lt.yml index 006668fbe8..0f08842c90 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -960,8 +960,6 @@ lt: your_appeal_pending: Pateikei apeliaciją your_appeal_rejected: Tavo apeliacija buvo atmesta edit_profile: - basic_information: Pagrindinė informacija - hint_html: "Tinkink tai, ką žmonės mato tavo viešame profilyje ir šalia įrašų. Kiti žmonės labiau linkę sekti atgal ir bendrauti su tavimi, jei tavo profilis yra užpildytas ir turi profilio nuotrauką." other: Kita emoji_styles: auto: Automatinis @@ -994,9 +992,6 @@ lt: lists: Sąrašai mutes: Nutildei storage: Medijos saugykla - featured_tags: - add_new: Pridėti naują - hint_html: "Savo profilyje parodyk svarbiausias grotažymes. Tai puikus įrankis kūrybiniams darbams ir ilgalaikiams projektams sekti, todėl svarbiausios grotažymės rodomos matomoje vietoje profilyje ir leidžia greitai pasiekti tavo paties įrašus." filters: contexts: account: Profiliai diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 89f5c43a21..e21ec5355d 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -1349,8 +1349,6 @@ lv: your_appeal_pending: Tu iesniedzi pārsūdzību your_appeal_rejected: Tava pārsūdzība tika noraidīta edit_profile: - basic_information: Pamata informācija - hint_html: "Pielāgo, ko cilvēki redz Tavā publiskajā profilā un blakus Taviem ierakstiem. Ir lielāka iespējamība, ka citi clivēki sekos Tev un mijiedarbosies ar Tevi, ja Tev ir aizpildīts profils un profila attēls." other: Cits errors: '400': Tevis iesniegtais pieprasījums bija nederīgs vai nepareizi izveidots. @@ -1386,10 +1384,8 @@ lv: mutes: Apklusinātie konti storage: Multividesu krātuve featured_tags: - add_new: Pievienot jaunu errors: limit: Tu jau esi piedāvājis maksimālo tēmturu skaitu - hint_html: "Izcel savus vissvarīgākos tēmturus savā profilā! Lielisks rīks, lai izsekotu saviem radošajiem darbiem un ilgtermiņa projektiem, izceltie tēmturi tiek attēloti pamanāmi attēloti Tavā profilā un ļauj ātru piekļuvi saviem ierakstiem." filters: contexts: account: Profili diff --git a/config/locales/ms.yml b/config/locales/ms.yml index afd74144a0..4abdc1fad9 100644 --- a/config/locales/ms.yml +++ b/config/locales/ms.yml @@ -1108,8 +1108,6 @@ ms: your_appeal_pending: Anda telah menghantar rayuan your_appeal_rejected: Rayuan anda telah ditolak edit_profile: - basic_information: Maklumat Asas - hint_html: "Sesuaikan perkara yang orang lihat pada profil awam anda dan di sebelah siaran anda. Orang lain lebih berkemungkinan mengikuti anda kembali dan berinteraksi dengan anda apabila anda mempunyai profil dan gambar profil yang telah diisi." other: Lain-lain errors: '400': Permintaan yang anda serahkan tidak sah atau salah bentuk. @@ -1145,10 +1143,8 @@ ms: mutes: Redaman anda storage: Storan Media featured_tags: - add_new: Tambah baharu errors: limit: Anda telah memaparkan bilangan maksimum hashtag - hint_html: "Tampilkan hashtag paling penting anda pada profil anda. Alat yang hebat untuk menjejaki karya kreatif dan projek jangka panjang anda, hashtag yang ditampilkan dipaparkan dengan jelas pada profil anda dan membenarkan akses pantas kepada pos anda sendiri." filters: contexts: account: Profil diff --git a/config/locales/my.yml b/config/locales/my.yml index fd0bbcb005..38555660b7 100644 --- a/config/locales/my.yml +++ b/config/locales/my.yml @@ -1096,8 +1096,6 @@ my: your_appeal_pending: အယူခံဝင်ရန် တင်သွင်းထားသည် your_appeal_rejected: အယူခံဝင်မှုကို ပယ်ချလိုက်သည် edit_profile: - basic_information: အခြေခံသတင်းအချက်အလက် - hint_html: "သင်၏ အများမြင်ပရိုဖိုင်နှင့် သင့်ပို့စ်များဘေးရှိ တွေ့မြင်ရသည့်အရာကို စိတ်ကြိုက်ပြင်ဆင်ပါ။ သင့်တွင် ပရိုဖိုင်နှင့် ပရိုဖိုင်ပုံတစ်ခု ဖြည့်သွင်းထားပါက အခြားသူများအနေဖြင့် သင်နှင့် အပြန်အလှန် တုံ့ပြန်နိုင်ခြေပိုများပါသည်။" other: အခြား errors: '400': သင်တင်ပြသော တောင်းဆိုချက်မှာ မမှန်ကန်ပါ သို့မဟုတ် ပုံစံမမှန်ပါ။ @@ -1133,10 +1131,8 @@ my: mutes: အသံပိတ် storage: မီဒီယာသိုလှောင်မှု featured_tags: - add_new: အသစ် ထည့်ပါ errors: limit: ဟက်ရှ်တဂ်အရေအတွက် အများဆုံးကို ဖော်ပြပြီးဖြစ်သည် - hint_html: " hashtags ဆိုသည်မှာ အဘယ်နည်း။ ၎င်းတို့ကို သင်၏ အများမြင်ပရိုဖိုင်တွင် ပြသထားပြီး ထို hashtags များအောက်တွင် လူများအား သင်၏ အများမြင်ပို့စ်များကို ကြည့်ရှုရန်ခွင့်ပြုထားသည်။ ၎င်းတို့သည် ဖန်တီးမှုလက်ရာများ သို့မဟုတ် ရေရှည်စီမံကိန်းများ ခြေရာခံရန်အတွက် အသုံးဝင်ပါသည်။" filters: contexts: account: ပရိုဖိုင်များ diff --git a/config/locales/nan-TW.yml b/config/locales/nan-TW.yml index 0dfc96da0c..b1c60ad78a 100644 --- a/config/locales/nan-TW.yml +++ b/config/locales/nan-TW.yml @@ -1397,8 +1397,6 @@ nan-TW: your_appeal_pending: Lí有送投訴 your_appeal_rejected: Lí ê投訴已經受拒絕 edit_profile: - basic_information: 基本ê資訊 - hint_html: "自訂lâng佇lí ê個人資料kap lí ê Po文邊仔所通看ê。Nā是lí有添好個人資料kap標á,別lâng較有可能kā lí跟tuè轉去,kap lí互動。" other: 其他 redesign_body: 編輯個人檔案tsit-má ē當直接對個人資料頁接近使用。 redesign_button: Kàu hia @@ -1472,10 +1470,8 @@ nan-TW: mutes: Lí消音ê storage: 媒體儲存 featured_tags: - add_new: 加新ê errors: limit: Lí已經kā hashtag推薦kàu盡磅ah。 - hint_html: "佇個人資料推薦lí上重要ê hashtag。Tse是誠好ê家私,通the̍h來追蹤lí ê創意作品kap長期計畫。推薦ê hashtag ē佇lí ê個人資料顯目展示,koh允准緊緊接近使用lí家tī ê PO文。" filters: contexts: account: 個人資料 diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 377e915ad1..557b9ab886 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -1418,8 +1418,6 @@ nl: your_appeal_pending: Je hebt een bezwaar ingediend your_appeal_rejected: Jouw bezwaar is afgewezen edit_profile: - basic_information: Algemene informatie - hint_html: "Wat mensen op jouw openbare profiel en naast je berichten zien aanpassen. Andere mensen gaan je waarschijnlijk eerder volgen en hebben vaker interactie met je, wanneer je profiel is ingevuld en je een profielfoto hebt." other: Overige redesign_body: Het bewerken van je profiel is nu toegankelijk vanaf de profielpagina. redesign_button: Ga erheen @@ -1494,10 +1492,8 @@ nl: mutes: Genegeerde accounts storage: Mediabestanden featured_tags: - add_new: Nieuwe toevoegen errors: limit: Je hebt al het maximale aantal hashtags uitgelicht - hint_html: "Toon je belangrijkste hashtags op je profiel Deze worden prominent op je openbare profiel getoond en stelt mensen in staat om je openbare berichten per hashtag te bekijken. Het is een goed hulpmiddel om creatieve werkzaamheden of langetermijnprojecten bij te houden." filters: contexts: account: Profielen diff --git a/config/locales/nn.yml b/config/locales/nn.yml index efdcd14bc4..2dd8886fc8 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -1418,8 +1418,6 @@ nn: your_appeal_pending: Du har levert en klage your_appeal_rejected: Din klage har blitt avvist edit_profile: - basic_information: Grunnleggande informasjon - hint_html: "Tilpass kva folk ser på den offentlege profilen din og ved sida av innlegga dine. Andre vil i større grad fylgja og samhandla med deg når du har eit profilbilete og har fyllt ut profilen din." other: Anna emoji_styles: auto: Auto @@ -1459,10 +1457,8 @@ nn: mutes: Du dempar storage: Medielagring featured_tags: - add_new: Legg til ny errors: limit: Du har allereie valt ut så mange emneknaggar som det går an å gjera - hint_html: "Vel ut dei viktigaste emneknaggane på profilen din. Utvalde emneknaggar er eit flott verkty for å halda oversikt over kreativt arbeid og langtidsprosjekt. Dei er lette å sjå på profilen din, og gjev deg rask tilgang til dine eigne innlegg." filters: contexts: account: Profiler diff --git a/config/locales/no.yml b/config/locales/no.yml index e2bf55a229..42853f0d89 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -1165,8 +1165,6 @@ your_appeal_pending: Du har levert en anke your_appeal_rejected: Anken din har blitt avvist edit_profile: - basic_information: Grunnleggende informasjon - hint_html: "Tilpass hva folk ser på din offentlige profil og ved siden av dine innlegg. Det er mer sannsynlig at andre mennesker følger deg tilbake og samhandler med deg når du har fylt ut en profil og et profilbilde." other: Annet errors: '400': Forespørselen du sendte inn var ugyldig eller feil. @@ -1202,10 +1200,8 @@ mutes: Du demper storage: Medialagring featured_tags: - add_new: Legg til ny errors: limit: Du har allerede fremhevet det maksimale antall emneknagger - hint_html: "Hva er utvalgte emneknagger? De vises frem tydelig på din offentlige profil, og lar folk bla i dine offentlige innlegg som spesifikt har de emneknaggene. De er et bra verktøy for å holde styr på kreative verk eller langtidsprosjekter." filters: contexts: account: Profiler diff --git a/config/locales/oc.yml b/config/locales/oc.yml index 4efdbc6a92..ecb7c0680b 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -562,8 +562,6 @@ oc: lists: Listas mutes: Personas rescondudas storage: Mèdias gardats - featured_tags: - add_new: Ajustar una etiqueta nòva filters: contexts: account: Perfils diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 2b258ab495..56045f676d 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -1412,8 +1412,6 @@ pl: your_appeal_pending: Zgłosiłeś odwołanie your_appeal_rejected: Twoje odwołanie zostało odrzucone edit_profile: - basic_information: Podstawowe informacje - hint_html: "Dostosuj to, co ludzie widzą na Twoim profilu publicznym i obok Twoich wpisów. Inne osoby są bardziej skłonne obserwować Cię i wchodzić z Tobą w interakcje, gdy masz wypełniony profil i zdjęcie profilowe." other: Inne emoji_styles: auto: Automatycznie @@ -1453,10 +1451,8 @@ pl: mutes: Wyciszeni storage: Urządzenie przechowujące dane featured_tags: - add_new: Dodaj nowy errors: limit: Przekroczono maksymalną liczbę hasztagów - hint_html: "Czym są wyróżnione hashtagi? Są one na stałe wyświetlane na Twoim profilu i pozwalają innym na przeglądanie Twoich wpisów używających tych hashtagów. Są doskonałym narzędziem do śledzenia kreatywnej twórczości czy długoterminowych projektów." filters: contexts: account: Profile diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index e54fa6d761..f6cc614a45 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -1418,8 +1418,6 @@ pt-BR: your_appeal_pending: Você enviou uma revisão your_appeal_rejected: Sua revisão foi rejeitada edit_profile: - basic_information: Informações básicas - hint_html: "Personalize o que as pessoas veem no seu perfil público e ao lado de suas publicações. É mais provável que outras pessoas o sigam de volta e interajam com você quando você tiver um perfil preenchido e uma foto de perfil." other: Outro redesign_body: A edição de perfil pode ser acessada diretamente a partir da página de perfil. redesign_button: Ir para lá @@ -1488,10 +1486,8 @@ pt-BR: mutes: Você silenciou storage: Armazenamento de mídia featured_tags: - add_new: Adicionar hashtag errors: limit: Você já destacou o número máximo de hashtags - hint_html: "O que são hashtags em destaque? Elas são exibidas no seu perfil público e permitem que as pessoas acessem suas publicações públicos que contenham especificamente essas hashtags. São uma excelente ferramenta para acompanhar os trabalhos criativos ou os projetos de longo prazo." filters: contexts: account: Perfis diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index 36ba06e400..281230890a 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -1411,8 +1411,6 @@ pt-PT: your_appeal_pending: Submeteste uma contestação your_appeal_rejected: A tua contestação foi rejeitada edit_profile: - basic_information: Informação básica - hint_html: "Personalizq o que as pessoas veem no teu perfil público e junto das tuas publicações. É mais provável que as outras pessoas te sigam de volta ou interajam contigo se tiveres um perfil preenchido e uma imagem de perfil." other: Outro emoji_styles: auto: Auto @@ -1452,10 +1450,8 @@ pt-PT: mutes: Que ocultaste storage: Armazenamento de multimédia featured_tags: - add_new: Adicionar nova errors: limit: Já destacaste o número máximo de etiquetas permitido - hint_html: "Coloca as etiquetas mais importantes no teu perfil. Uma excelente ferramenta para acompanhar os teus trabalhos criativos e projetos a longo prazo, as etiquetas em destaque são apresentadas de forma proeminente no teu perfil e permitem um acesso rápido às tuas próprias publicações." filters: contexts: account: Perfis diff --git a/config/locales/ru.yml b/config/locales/ru.yml index de806f33a0..9e4e1e164a 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -1423,8 +1423,6 @@ ru: your_appeal_pending: Вы подали апелляцию your_appeal_rejected: Ваша апелляция отклонена edit_profile: - basic_information: Основные данные - hint_html: "Здесь вы можете изменить всё то, что будет отображаться в вашем публичном профиле и рядом с вашими постами. На вас будут чаще подписываться и с вами будут чаще взаимодействовать, если у вас будет заполнен профиль и добавлено фото профиля." other: Разное redesign_body: Теперь редактирование профиля доступно прямо на странице профиля. redesign_button: Перейти @@ -1476,10 +1474,8 @@ ru: mutes: Игнорируемые пользователи storage: Хранилище медиа featured_tags: - add_new: Добавить errors: limit: Вы достигли максимального количества хештегов, которые можно рекомендовать в профиле - hint_html: "Рекомендуйте самые важные для вас хештеги в своём профиле. Это отличный инструмент для того, чтобы держать подписчиков в курсе ваших долгосрочных проектов и творческих работ. Рекомендации хештегов заметны в вашем профиле и предоставляют быстрый доступ к вашим постам." filters: contexts: account: Профили diff --git a/config/locales/sc.yml b/config/locales/sc.yml index 2c94bc3a10..cbad11bcfa 100644 --- a/config/locales/sc.yml +++ b/config/locales/sc.yml @@ -771,7 +771,6 @@ sc: delete_statuses: Cantzelladura de publicatziones none: Atentzione edit_profile: - basic_information: Informatzione bàsica other: Àteru errors: '400': Sa dimanda chi as imbiadu non fiat vàlida o non fiat curreta. @@ -806,9 +805,6 @@ sc: lists: Listas mutes: Ses ponende a sa muda storage: Immagasinamentu - featured_tags: - add_new: Agiunghe noa - hint_html: "Ite sunt is etichetas in evidèntzia? Sunt ammustradas in evidèntzia in su profilu pùblicu tuo e permitint a sa gente de navigare is messàgios pùblicos tuos in cussas etichetas ispetzìficas. Sunt unu traste perfetu pro tènnere unu registru de òperas creativas o progetos longos." filters: contexts: account: Profilos diff --git a/config/locales/sco.yml b/config/locales/sco.yml index b963a66e31..b1042dbe50 100644 --- a/config/locales/sco.yml +++ b/config/locales/sco.yml @@ -1026,9 +1026,6 @@ sco: lists: Lists mutes: Ye wheesht storage: Media storage - featured_tags: - add_new: Add new - hint_html: "Whit's featurt hashtags? They get pit prominently on yer public profile an alloo fowk fir tae broose yer public posts specifically unner thae hashtags. They'r a braw tuil fir keepin track o creative warks or lang-term projects." filters: contexts: account: Profiles diff --git a/config/locales/si.yml b/config/locales/si.yml index 40061b262b..c9bc11dada 100644 --- a/config/locales/si.yml +++ b/config/locales/si.yml @@ -885,7 +885,6 @@ si: your_appeal_pending: ඔබ අභියාචනයක් ඉදිරිපත් කර ඇත your_appeal_rejected: ඔබගේ අභියාචනය ප්‍රතික්ෂේප කර ඇත edit_profile: - basic_information: මූලික තොරතුරු other: වෙනත් errors: '400': ඔබ ඉදිරිපත් කළ ඉල්ලීම අවලංගු හෝ විකෘති විය. @@ -920,8 +919,6 @@ si: lists: ලැයිස්තු mutes: ඔබ නිහඬ කරන්න storage: මාධ්‍ය ආචයනය - featured_tags: - add_new: අලුතින් එකතු කරන්න filters: contexts: account: පැතිකඩයන් diff --git a/config/locales/sk.yml b/config/locales/sk.yml index a3f9b5cd8a..f8d138068a 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -935,8 +935,6 @@ sk: your_appeal_approved: Tvoja námietka bola schválená your_appeal_pending: Odoslal si námietku edit_profile: - basic_information: Základné informácie - hint_html: "Upravte, čo ľudia vidia vo vašom verejom profile a pri vašich príspevkoch. S vyplneným profilom a nahratou profilovou fotkou sa zvýšia šance, že vás iní ľudia budú sledovať a budú s vami komunikovať." other: Ostatné errors: '400': Požiadavka, ktorú si odoslal/a, bola buď nesprávna, alebo znehodnotená. @@ -971,10 +969,8 @@ sk: mutes: Stíšil/a si storage: Úložisko médií featured_tags: - add_new: Pridať nový errors: limit: Už ste si predvolili najvyšší možný počet hashtagov - hint_html: "Zobrazte vo svojom profile vaše najvýznamnejšie hashtagy. Zvýraznené hashtagy majú viditeľné miesto vo vašom profile a umožňujú vám rýchly prístup k vašim príspevkom, aby ste mali svoje diela a dlhodobé projekty vždy poruke." filters: contexts: account: Profily diff --git a/config/locales/sl.yml b/config/locales/sl.yml index ed5f5f4ca8..ca0fd7fe7d 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -1409,8 +1409,6 @@ sl: your_appeal_pending: Oddali ste pritožbo your_appeal_rejected: Vaša pritožba je bila zavržena edit_profile: - basic_information: Osnovni podatki - hint_html: "Prilagodite, kaj ljudje vidijo na vašem javnem profilu in poleg vaših objav. Drugi vam bodo raje sledili nazaj in z vami klepetali, če boste imeli izpolnjen profil in nastavljeno profilno sliko." other: Drugo emoji_styles: auto: Samodejno @@ -1449,10 +1447,8 @@ sl: mutes: Utišani storage: Shranjeni mediji featured_tags: - add_new: Dodaj novo errors: limit: Ste že dodali največje število ključnikov - hint_html: "Kaj so izpostavljeni ključniki? Prikazani so vidno na vašem javnem profilu in ljudem omogočajo brskanje po vaših javnih objavah posebej pod temi ključniki. So odlično orodje za spremljanje ustvarjalnih del ali dolgoročnih projektov." filters: contexts: account: Profili diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 3d15e9b241..2a734d2875 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -1407,8 +1407,6 @@ sq: your_appeal_pending: Keni parashtruar një apelim your_appeal_rejected: Apelimi juaj është hedhur poshtë edit_profile: - basic_information: Hollësi elementare - hint_html: "Përshtatni ç’shohin njerëzit në profilin tuaj publik dhe në krah të postimeve tuaja. Personat e tjerë ka më shumë gjasa t’ju ndjekin dhe ndërveprojnë me ju, kur keni të plotësuar profilin dhe një foto profili." other: Tjetër redesign_body: Përpunimi i profilit tanimë mund të kryhet drejt e nga faqja e profilit. redesign_button: Kalo atje @@ -1479,10 +1477,8 @@ sq: mutes: Heshtoni storage: Depozitë media featured_tags: - add_new: Shtoni të re errors: limit: Keni përdorur tashmë numrin maksimum të hashtag-ëve - hint_html: "Çfarë janë hashtag-ët e zgjedhur? Këta shfaqen dukshëm te profili juaj publik dhe u lejojnë të tjerëve të shfletojnë postime tuajt publikë posaçërisht nën këta hashtag-ë. Janë një mjet i goditur për të ndjekur punë krijuese ose projekte afatgjata." filters: contexts: account: Profile diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml index d75f5f76d3..82b52b8240 100644 --- a/config/locales/sr-Latn.yml +++ b/config/locales/sr-Latn.yml @@ -1162,8 +1162,6 @@ sr-Latn: your_appeal_pending: Priložili ste žalbu your_appeal_rejected: Vaša žalba je odbijena edit_profile: - basic_information: Osnovne informacije - hint_html: "Prilagodite šta ljudi vide na vašem javnom profilu i pored vaših objava. Veća je verovatnoća da će vas drugi pratiti i komunicirati sa vama kada imate popunjen profil i sliku profila." other: Ostalo errors: '400': Zahtev koji ste podneli je bio nelegitiman ili u pogrešnom formatu. @@ -1199,10 +1197,8 @@ sr-Latn: mutes: Ignorišete storage: Multimedijalno skladište featured_tags: - add_new: Dodaj novu errors: limit: Već ste istakli maksimalan broj heš oznaka - hint_html: "Istaknite najvažnije heš oznake na svom profilu. Odličan alat za praćenje vaših kreativnih radova i dugoročnih projekata, istaknute heš oznake su istaknute na vašem profilu i omogućuju brz pristup vašim objavama." filters: contexts: account: Profili diff --git a/config/locales/sr.yml b/config/locales/sr.yml index 8bc89180d4..51ad0e572b 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -1192,8 +1192,6 @@ sr: your_appeal_pending: Приложили сте жалбу your_appeal_rejected: Ваша жалба је одбијена edit_profile: - basic_information: Основне информације - hint_html: "Прилагодите шта људи виде на вашем јавном профилу и поред ваших објава. Већа је вероватноћа да ће вас други пратити и комуницирати са вама када имате попуњен профил и слику профила." other: Остало errors: '400': Захтев који сте поднели је био нелегитиман или у погрешном формату. @@ -1229,10 +1227,8 @@ sr: mutes: Игноришете storage: Мултимедијално складиште featured_tags: - add_new: Додај нову errors: limit: Већ сте истакли максималан број хеш ознака - hint_html: "Истакните најважније хеш ознаке на свом профилу. Одличан алат за праћење ваших креативних радова и дугорочних пројеката, истакнуте хеш ознаке су истакнуте на вашем профилу и омогућују брз приступ вашим објавама." filters: contexts: account: Профили diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 53510e2dcc..6b481ccca7 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -1412,8 +1412,6 @@ sv: your_appeal_pending: Du har lämnat in en överklagan your_appeal_rejected: Din överklagan har avvisats edit_profile: - basic_information: Allmän information - hint_html: "Anpassa vad folk ser på din offentliga profil och bredvid dina inlägg. Andra personer är mer benägna att följa dig och interagera med dig när du har en ifylld profil och en profilbild." other: Övrigt email_subscription_mailer: notification: @@ -1461,10 +1459,8 @@ sv: mutes: Du tystar storage: Medialagring featured_tags: - add_new: Lägg till ny errors: limit: Du har redan fäst det maximala antalet hashtags - hint_html: "Vad är utvalda hashtaggar? De visas tydligt på din offentliga profil och låter andra bläddra bland dina offentliga inlägg specifikt under dessa hashtaggar. De är ett bra verktyg för att hålla reda på kreativa arbeten eller långsiktiga projekt." filters: contexts: account: Profiler diff --git a/config/locales/th.yml b/config/locales/th.yml index 905ecad4ab..f94f064150 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -1296,8 +1296,6 @@ th: your_appeal_pending: คุณได้ส่งการอุทธรณ์ your_appeal_rejected: ปฏิเสธการอุทธรณ์ของคุณแล้ว edit_profile: - basic_information: ข้อมูลพื้นฐาน - hint_html: "ปรับแต่งสิ่งที่ผู้คนเห็นในโปรไฟล์สาธารณะของคุณและถัดจากโพสต์ของคุณ ผู้คนอื่น ๆ มีแนวโน้มที่จะติดตามคุณกลับและโต้ตอบกับคุณมากขึ้นเมื่อคุณมีโปรไฟล์ที่กรอกแล้วและรูปภาพโปรไฟล์" other: อื่น ๆ errors: '400': คำขอที่คุณได้ส่งไม่ถูกต้องหรือผิดรูปแบบ @@ -1333,10 +1331,8 @@ th: mutes: คุณซ่อน storage: ที่เก็บข้อมูลสื่อ featured_tags: - add_new: เพิ่มใหม่ errors: limit: คุณได้แสดงแฮชแท็กถึงจำนวนสูงสุดไปแล้ว - hint_html: "แสดงแฮชแท็กที่สำคัญที่สุดของคุณในโปรไฟล์ของคุณ เครื่องมือที่ยอดเยี่ยมสำหรับการติดตามงานสร้างสรรค์และโครงการระยะยาวของคุณ จะแสดงแฮชแท็กที่น่าสนใจอย่างเด่นชัดในโปรไฟล์ของคุณและอนุญาตให้เข้าถึงโพสต์ของคุณเองได้อย่างรวดเร็ว" filters: contexts: account: โปรไฟล์ diff --git a/config/locales/tr.yml b/config/locales/tr.yml index e6b3d1d155..b601f2d36d 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -1418,8 +1418,6 @@ tr: your_appeal_pending: Bir itiraz gönderdiniz your_appeal_rejected: İtirazınız reddedildi edit_profile: - basic_information: Temel bilgiler - hint_html: "İnsanlara herkese açık profilinizde ve gönderilerinizin yanında ne göstermek istediğinizi düzenleyin. Dolu bir profile ve bir profil resmine sahip olduğunuzda diğer insanlar daha yüksek ihtimalle sizi takip etmek ve sizinle etkileşime geçmek isteyeceklerdir." other: Diğer redesign_body: Profil düzenlemeye şimdi doğrudan profil sayfasından da erişilebilir. redesign_button: Git @@ -1494,10 +1492,8 @@ tr: mutes: Sessize aldıkların storage: Medya depolaması featured_tags: - add_new: Yeni ekle errors: limit: Zaten azami etiket sayısını öne çıkardınız - hint_html: "Öne çıkan etiketler nelerdir? Genel profilinizde belirgin bir şekilde görüntülenirler ve kişilerin genel yayınlarınıza özellikle bu etiketler altında göz atmalarına izin verir. Yaratıcı çalışmaları veya uzun vadeli projeleri takip etmek için harika bir araçtır." filters: contexts: account: Profiller diff --git a/config/locales/tt.yml b/config/locales/tt.yml index a9677476ae..b82b637c1c 100644 --- a/config/locales/tt.yml +++ b/config/locales/tt.yml @@ -369,8 +369,6 @@ tt: csv: СSV lists: Исемлекләр storage: Медиа-файллар саклагычы - featured_tags: - add_new: Яңа өстәү filters: contexts: notifications: Искәртүләр diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 431b6e18a5..3f684e0a29 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -1359,8 +1359,6 @@ uk: your_appeal_pending: Ви не подавали апеляцій your_appeal_rejected: Вашу апеляцію було відхилено edit_profile: - basic_information: Основна інформація - hint_html: "Налаштуйте те, що люди бачитимуть у вашому загальнодоступному профілі та поруч із вашими дописами. Інші люди з більшою ймовірністю підпишуться на вас та взаємодіятимуть з вами, якщо у вас є заповнений профіль та зображення профілю." other: Інше emoji_styles: auto: Авто @@ -1399,10 +1397,8 @@ uk: mutes: Список нехтуваних storage: Ваш медіавміст featured_tags: - add_new: Додати новий errors: limit: Ви досягли максимальної кількості хештеґів - hint_html: "Що таке виділені хештеги? Чудовий інструмент для відстеження ваших творчих робіт і довготривалих проєктів, рекомендовані хештеги показані першими у вашому профілі та дозволяють швидко отримати доступ до ваших власних повідомлень." filters: contexts: account: Профілі diff --git a/config/locales/vi.yml b/config/locales/vi.yml index e8b5b5b1b5..554067c7fa 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -1397,8 +1397,6 @@ vi: your_appeal_pending: Bạn đã gửi một khiếu nại your_appeal_rejected: Khiếu nại của bạn bị từ chối edit_profile: - basic_information: Thông tin cơ bản - hint_html: Mọi người sẽ muốn theo dõi và tương tác với bạn hơn nếu bạn có ảnh đại diện và hồ sơ hoàn chỉnh. other: Khác redesign_body: Giờ đây, hồ sơ đã có thể chỉnh sửa trực tiếp từ trang hồ sơ. redesign_button: Tới đó @@ -1472,10 +1470,8 @@ vi: mutes: Tài khoản đã phớt lờ storage: Tệp featured_tags: - add_new: Thêm mới errors: limit: Bạn đã đạt tới số lượng hashtag tối đa - hint_html: "Nêu bật những hashtag thường dùng. Một công cụ tuyệt vời để theo dõi chuỗi tác phẩm sáng tạo và dự án dài hạn của bạn, cũng như giúp truy cập nhanh vào các tút." filters: contexts: account: Trang hồ sơ diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 1e7d32b7e3..7cfdbdd232 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -1397,8 +1397,6 @@ zh-CN: your_appeal_pending: 你已经提交了一次申诉 your_appeal_rejected: 你的申诉已被驳回 edit_profile: - basic_information: 基本信息 - hint_html: "自定义公开资料和嘟文旁边显示的内容。当你填写完整的个人资料并设置了头像时,其他人更有可能关注你并与你互动。" other: 其他 redesign_body: 个人资料编辑功能现在可以直接在个人资料页面访问。 redesign_button: 前往 @@ -1472,10 +1470,8 @@ zh-CN: mutes: 已被你隐藏的 storage: 媒体文件存储 featured_tags: - add_new: 添加新条目 errors: limit: 你所推荐的话题数已达上限 - hint_html: "什么是精选话题? 它们被显示在你的公开个人资料中的突出位置,人们可以在这些标签下浏览你的公共嘟文。 它们是跟踪创作或长期项目的进度的重要工具。" filters: contexts: account: 个人资料 diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml index 6caf362fa7..e5d984ce42 100644 --- a/config/locales/zh-HK.yml +++ b/config/locales/zh-HK.yml @@ -1162,8 +1162,6 @@ zh-HK: your_appeal_pending: 你已提交申訴 your_appeal_rejected: 你的申訴已被駁回 edit_profile: - basic_information: 基本資料 - hint_html: "自訂你的公開個人檔案和帖文內容。當你有完整的個人檔案和頭像時,其他人更願意追蹤你和與你互動。" other: 其他 errors: '400': 你的請求無效或格式不正確。 @@ -1199,10 +1197,8 @@ zh-HK: mutes: 你所靜音的用戶 storage: 媒體容量大小 featured_tags: - add_new: 新增 errors: limit: 你推薦的標籤數量已達上限 - hint_html: "甚麼是推薦主題標籤? 它們會被顯示在你的個人資料頁面,讓其他人可以根據標籤瀏覽你的公開文章,令人們更易找到你創作或者長期作品!" filters: contexts: account: 個人資料 diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 1a21152624..41e259c80b 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -1399,8 +1399,6 @@ zh-TW: your_appeal_pending: 您已遞交申訴 your_appeal_rejected: 您的申訴已被駁回 edit_profile: - basic_information: 基本資訊 - hint_html: "自訂人們能於您個人檔案及嘟文旁所見之內容。當您完成填寫個人檔案及設定大頭貼後,其他人們比較願意跟隨您並與您互動。" other: 其他 redesign_body: 個人檔案編輯功能現在能自個人檔案頁面直接存取。 redesign_button: 前往 @@ -1474,10 +1472,8 @@ zh-TW: mutes: 您靜音的使用者 storage: 匯出檔案大小 featured_tags: - add_new: 新增 errors: limit: 您所推薦之主題標籤數量已達上限 - hint_html: "於個人檔案上展示您的推薦主題標籤 展示創意作品或者長期更新的專案的絕佳工具,推薦主題標籤於您個人資料頁面顯眼地展示,並且能快速存取您自己的嘟文。" filters: contexts: account: 個人檔案 diff --git a/spec/system/profile_spec.rb b/spec/system/profile_spec.rb index eb0aed1593..87fe4b03b2 100644 --- a/spec/system/profile_spec.rb +++ b/spec/system/profile_spec.rb @@ -17,25 +17,6 @@ RSpec.describe 'Profile' do .to have_title("alice (@alice@#{local_domain_uri.host})") end - it 'I can change my account' do - visit settings_profile_path - - fill_in 'Display name', with: 'Bob' - fill_in 'Bio', with: 'Bob is silent' - - account_fields_labels.first.fill_in with: 'Personal Website' - account_fields_values.first.fill_in with: 'https://host.example/personal' - - account_fields_labels.last.fill_in with: 'Professional Biography' - account_fields_values.last.fill_in with: 'https://host.example/pro' - - expect { submit_form } - .to change { bob.account.reload.display_name }.to('Bob') - .and(change_account_fields) - expect(page) - .to have_content 'Changes successfully saved!' - end - def submit_form first('button[type=submit]').click end diff --git a/spec/system/settings/featured_tags_spec.rb b/spec/system/settings/featured_tags_spec.rb deleted file mode 100644 index 2460817f94..0000000000 --- a/spec/system/settings/featured_tags_spec.rb +++ /dev/null @@ -1,42 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -RSpec.describe 'Settings Featured Tags' do - let(:user) { Fabricate(:user) } - - before { sign_in(user) } - - describe 'Managing tags' do - let(:tag) { Fabricate(:tag) } - let(:status) { Fabricate :status, account: user.account } - - before { status.tags << tag } - - it 'Views, adds, and removes featured tags' do - visit settings_featured_tags_path - - # Link to existing tag used on a status - expect(page.body) - .to include( - settings_featured_tags_path(featured_tag: { name: tag.name }) - ) - - # Invalid entry - fill_in 'featured_tag_name', with: 'test, #foo !bleh' - expect { click_on I18n.t('featured_tags.add_new') } - .to_not change(user.account.featured_tags, :count) - - # Valid entry - fill_in 'featured_tag_name', with: '#friends' - expect { click_on I18n.t('featured_tags.add_new') } - .to change(user.account.featured_tags, :count).by(1) - - # Delete the created entry - expect { click_on I18n.t('filters.index.delete') } - .to change(user.account.featured_tags, :count).by(-1) - expect(page) - .to have_title(I18n.t('settings.featured_tags')) - end - end -end diff --git a/spec/system/settings/profiles_spec.rb b/spec/system/settings/profiles_spec.rb deleted file mode 100644 index 23d9ab2fda..0000000000 --- a/spec/system/settings/profiles_spec.rb +++ /dev/null @@ -1,36 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -RSpec.describe 'Settings profile page' do - let(:user) { Fabricate :user } - let(:account) { user.account } - - before do - sign_in user - end - - it 'Views and updates profile information' do - visit settings_profile_path - - expect(page) - .to have_private_cache_control - - fill_in display_name_field, with: 'New name' - attach_file avatar_field, Rails.root.join('spec', 'fixtures', 'files', 'avatar.gif') - - expect { click_on submit_button } - .to change { account.reload.display_name }.to('New name') - .and(change { account.reload.avatar.instance.avatar_file_name }.from(nil).to(be_present)) - expect(ActivityPub::UpdateDistributionWorker) - .to have_enqueued_sidekiq_job(account.id) - end - - def display_name_field - form_label('defaults.display_name') - end - - def avatar_field - form_label('defaults.avatar') - end -end From de86ad56e57fc9c8e9acc6b6a5993fce96b1a118 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 8 Apr 2026 10:37:51 +0200 Subject: [PATCH 02/20] New Crowdin Translations (automated) (#38597) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/be.json | 9 ++- app/javascript/mastodon/locales/da.json | 9 ++- app/javascript/mastodon/locales/de.json | 7 ++- app/javascript/mastodon/locales/el.json | 11 ++-- app/javascript/mastodon/locales/es-AR.json | 9 ++- app/javascript/mastodon/locales/es-MX.json | 17 +++--- app/javascript/mastodon/locales/es.json | 9 ++- app/javascript/mastodon/locales/et.json | 62 ++++++++++++++++++--- app/javascript/mastodon/locales/fi.json | 7 ++- app/javascript/mastodon/locales/fr-CA.json | 7 ++- app/javascript/mastodon/locales/fr.json | 7 ++- app/javascript/mastodon/locales/ga.json | 7 ++- app/javascript/mastodon/locales/gd.json | 28 +++++++++- app/javascript/mastodon/locales/gl.json | 8 ++- app/javascript/mastodon/locales/he.json | 3 - app/javascript/mastodon/locales/hu.json | 7 ++- app/javascript/mastodon/locales/is.json | 9 ++- app/javascript/mastodon/locales/it.json | 19 ++++--- app/javascript/mastodon/locales/nan-TW.json | 3 - app/javascript/mastodon/locales/nl.json | 3 - app/javascript/mastodon/locales/nn.json | 9 ++- app/javascript/mastodon/locales/ru.json | 3 - app/javascript/mastodon/locales/sq.json | 8 ++- app/javascript/mastodon/locales/sv.json | 24 +++++++- app/javascript/mastodon/locales/tr.json | 9 ++- app/javascript/mastodon/locales/vi.json | 3 - app/javascript/mastodon/locales/zh-CN.json | 9 ++- app/javascript/mastodon/locales/zh-TW.json | 9 ++- config/locales/devise.el.yml | 14 ++--- config/locales/el.yml | 14 ++--- config/locales/et.yml | 2 +- config/locales/gd.yml | 6 ++ config/locales/nn.yml | 59 ++++++++++++++++++++ config/locales/ru.yml | 1 - config/locales/simple_form.el.yml | 6 +- config/locales/simple_form.et.yml | 4 +- config/locales/simple_form.gd.yml | 1 + config/locales/simple_form.is.yml | 4 +- config/locales/simple_form.nn.yml | 3 + config/locales/sv.yml | 16 ++++++ 40 files changed, 329 insertions(+), 116 deletions(-) diff --git a/app/javascript/mastodon/locales/be.json b/app/javascript/mastodon/locales/be.json index e07c507b52..61ca40d8db 100644 --- a/app/javascript/mastodon/locales/be.json +++ b/app/javascript/mastodon/locales/be.json @@ -102,6 +102,7 @@ "account.muted": "Ігнаруецца", "account.muting": "Ігнараванне", "account.mutual": "Вы падпісаныя адно на аднаго", + "account.name.copy": "Скапір. ідэнтыфікатар", "account.name.help.domain": "{domain} — сервер, які ўтрымлівае профіль і допісы гэтага карыстальніка.", "account.name.help.domain_self": "{domain} — Ваш сервер, які ўтрымлівае Ваш профіль і допісы.", "account.name.help.footer": "Гэтак жа, як Вы можаце адпраўляць электронныя лісты людзям праз розныя кліенты электроннай пошты, Вы таксама можаце ўзаемадзейнічаць з людзьмі з іншых сервераў Mastodon, а таксама з усімі, хто карыстаецца іншымі сацыяльнымі сеткамі, якія працуюць па тых жа правілах, што і Mastodon (пратакол ActivityPub).", @@ -138,6 +139,9 @@ "account.unmute": "Не ігнараваць @{name}", "account.unmute_notifications_short": "Апавяшчаць", "account.unmute_short": "Не ігнараваць", + "account_edit.advanced_settings.bot_hint": "Пакажыце іншым, што гэты ўліковы запіс у асноўным выконвае аўтаматычныя дзеянні і можа не кантралявацца", + "account_edit.advanced_settings.bot_label": "Аўтаматызаваны ўліковы запіс", + "account_edit.advanced_settings.title": "Дадатковыя налады", "account_edit.bio.add_label": "Апісаць сябе", "account_edit.bio.edit_label": "Змяніць апісанне", "account_edit.bio.placeholder": "Коратка апішыце сябе, каб дапамагчы іншым пазнаць Вас.", @@ -577,10 +581,9 @@ "domain_pill.your_server": "Ваш лічбавы дом, дзе захоўваюцца ўсе вашыя допісы. Не падабаецца гэты сервер? Змяніце сервер у любы час з захаваннем сваіх падпісчыкаў.", "domain_pill.your_username": "Ваш унікальны ідэнтыфікатар на гэтым серверы. Можна знайсці карыстальнікаў з аднолькавым іменем карыстальніка на розных серверах.", "dropdown.empty": "Выбраць варыянт", - "email_subscriptions.email": "Адрас электроннай пошты", + "email_subscriptions.email": "Эл. пошта", "email_subscriptions.form.action": "Падпісацца", - "email_subscriptions.form.disclaimer": "Вы можаце адпісацца ў любы момант. Каб даведацца болей, звярніцеся да Палітыкі прыватнасці.", - "email_subscriptions.form.lead": "Атрымліваць допісы па электроннай пошце без стварэння ўліковага запісу Mastodon.", + "email_subscriptions.form.bottom": "Атрымлівайце допісы ў сваю паштовую скрыню без стварэння ўліковага запісу Mastodon. Пры жаданні зможаце адпісацца ў любы момант. Падрабязней у Палітыцы прыватнасці.", "email_subscriptions.form.title": "Зарэгістравацца на абнаўленні па электроннай пошце ад {name}", "email_subscriptions.submitted.lead": "Праверце сваю паштовую скрыню, каб знайсці там ліст і скончыць рэгістрацыю на абнаўленні па электроннай пошце.", "email_subscriptions.submitted.title": "Яшчэ адзін крок", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 8e1420371d..41cbdd6f2f 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -102,6 +102,7 @@ "account.muted": "Skjult", "account.muting": "Skjuler", "account.mutual": "I følger hinanden", + "account.name.copy": "Kopiér handle", "account.name.help.domain": "{domain} er den server, der er vært for brugerens profil og indlæg.", "account.name.help.domain_self": "{domain} er din server, der er vært for din profil og indlæg.", "account.name.help.footer": "Ligesom du kan sende e-mails til personer, der bruger forskellige e-mail-klienter, kan du interagere med personer på andre Mastodon-servere – og med alle på andre sociale apps, der bruger de samme regler som Mastodon (ActivityPub-protokollen).", @@ -138,6 +139,9 @@ "account.unmute": "Vis @{name} igen", "account.unmute_notifications_short": "Vis notifikationer igen", "account.unmute_short": "Vis igen", + "account_edit.advanced_settings.bot_hint": "Signalér til andre, at kontoen hovedsageligt udfører automatiserede handlinger og muligvis ikke monitoreres", + "account_edit.advanced_settings.bot_label": "Automatiseret konto", + "account_edit.advanced_settings.title": "Avancerede indstillinger", "account_edit.bio.add_label": "Tilføj bio", "account_edit.bio.edit_label": "Rediger bio", "account_edit.bio.placeholder": "Tilføj en kort introduktion, så andre kan få et indtryk af, hvem du er.", @@ -577,10 +581,9 @@ "domain_pill.your_server": "Dit digitale hjem, hvor alle dine indlæg lever. Synes ikke om den her server? Du kan til enhver tid rykke over på en anden server og beholde dine følgere.", "domain_pill.your_username": "Din unikke identifikator på denne server. Det er muligt at finde brugere med samme brugernavn på forskellige servere.", "dropdown.empty": "Vælg en indstilling", - "email_subscriptions.email": "E-mailadresse", + "email_subscriptions.email": "E-mail", "email_subscriptions.form.action": "Abonnér", - "email_subscriptions.form.disclaimer": "Du kan til enhver tid afmelde dig. For yderligere oplysninger henvises til privatlivspolitikken.", - "email_subscriptions.form.lead": "Få indlæg i din indbakke uden at oprette en Mastodon-konto.", + "email_subscriptions.form.bottom": "Få indlæg sendt direkte til din indbakke uden at oprette en Mastodon-konto. Du kan til enhver tid afmelde dig. For mere information henvises til privatlivspolitikken.", "email_subscriptions.form.title": "Tilmeld dig e-mailopdateringer fra {name}", "email_subscriptions.submitted.lead": "Kig i din indbakke efter en e-mail, hvor du kan afslutte tilmeldingen til e-mailopdateringer.", "email_subscriptions.submitted.title": "Et trin mere", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 66a8e57617..8557f843d3 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -102,6 +102,7 @@ "account.muted": "Stummgeschaltet", "account.muting": "Stummgeschaltet", "account.mutual": "Ihr folgt einander", + "account.name.copy": "Adresse kopieren", "account.name.help.domain": "{domain} ist der Server, auf dem das Profil registriert ist und die Beiträge verwaltet werden.", "account.name.help.domain_self": "{domain} ist der Server, auf dem du registriert bist und deine Beiträge verwaltet werden.", "account.name.help.footer": "So wie du E-Mails an andere trotz unterschiedlicher E-Mail-Provider senden kannst, so kannst du auch mit anderen Profilen auf unterschiedlichen Mastodon-Servern interagieren. Wenn andere soziale Apps die gleichen Kommunikationsregeln (das ActivityPub-Protokoll) wie Mastodon verwenden, dann funktioniert die Kommunikation auch dort.", @@ -138,6 +139,9 @@ "account.unmute": "Stummschaltung von @{name} aufheben", "account.unmute_notifications_short": "Stummschaltung der Benachrichtigungen aufheben", "account.unmute_short": "Stummschaltung aufheben", + "account_edit.advanced_settings.bot_hint": "Signalisiert, dass dieses Konto hauptsächlich automatisierte Aktionen durchführt und möglicherweise nicht persönlich betreut wird", + "account_edit.advanced_settings.bot_label": "Automatisiertes Konto", + "account_edit.advanced_settings.title": "Erweiterte Einstellungen", "account_edit.bio.add_label": "Biografie hinzufügen", "account_edit.bio.edit_label": "Biografie bearbeiten", "account_edit.bio.placeholder": "Gib anderen einen Einblick über dich, damit sie wissen, wer du bist.", @@ -579,8 +583,7 @@ "dropdown.empty": "Option auswählen", "email_subscriptions.email": "E-Mail-Adresse", "email_subscriptions.form.action": "Abonnieren", - "email_subscriptions.form.disclaimer": "Du kannst die Benachrichtigungen jederzeit abbestellen. In der Datenschutzerklärung erfährst du mehr dazu.", - "email_subscriptions.form.lead": "Lass dir Beiträge in dein Postfach senden, ohne ein Mastodon-Konto zu erstellen.", + "email_subscriptions.form.bottom": "Lass dir Beiträge in dein Postfach senden, ohne ein Mastodon-Konto zu erstellen. Du kannst die E-Mails jederzeit abbestellen. Weitere Details findest du in der Datenschutzerklärung.", "email_subscriptions.form.title": "Erhalte eine E-Mail bei Neuigkeiten von {name}", "email_subscriptions.submitted.lead": "Überprüfe dein Postfach, um die Benachrichtigungen per E-Mail zu aktivieren.", "email_subscriptions.submitted.title": "Ein weiterer Schritt", diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 166d025a16..d28c118f7f 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -74,7 +74,7 @@ "account.languages": "Αλλαγή εγγεγραμμένων γλωσσών", "account.last_active": "Τελευταία ενεργός", "account.link_verified_on": "Η ιδιοκτησία αυτού του συνδέσμου ελέγχθηκε στις {date}", - "account.locked_info": "Η κατάσταση απορρήτου αυτού του λογαριασμού έχει ρυθμιστεί σε κλειδωμένη. Ο ιδιοκτήτης αξιολογεί χειροκίνητα ποιος μπορεί να τον ακολουθήσει.", + "account.locked_info": "Η κατάσταση απορρήτου αυτού του λογαριασμού έχει ρυθμιστεί σε κλειδωμένη. Ο ιδιοκτήτης ελέγχει χειροκίνητα ποιος μπορεί να τον ακολουθήσει.", "account.media": "Πολυμέσα", "account.mention": "Επισήμανση @{name}", "account.menu.add_to_list": "Προσθήκη στη λίστα…", @@ -102,6 +102,7 @@ "account.muted": "Σε σίγαση", "account.muting": "Σίγαση", "account.mutual": "Ακολουθείτε ο ένας τον άλλο", + "account.name.copy": "Αντιγραφή πλήρους ονόματος χρήστη", "account.name.help.domain": "Το {domain} είναι ο διακομιστής που φιλοξενεί το προφίλ και τις αναρτήσεις του χρήστη.", "account.name.help.domain_self": "Το {domain} είναι ο διακομιστής σας που φιλοξενεί το προφίλ και τις αναρτήσεις σας.", "account.name.help.footer": "Ακριβώς όπως μπορείτε να στείλετε μηνύματα ηλεκτρονικού ταχυδρομείου σε άτομα χρησιμοποιώντας διαφορετικούς παρόχους email, μπορείτε να αλληλεπιδράσετε με άτομα σε άλλους διακομιστές Mastodon – και με οποιονδήποτε σε άλλες κοινωνικές εφαρμογές που τροφοδοτούνται από το ίδιο σύνολο κανόνων όπως χρησιμοποιεί το Mastodon (το πρωτόκολλο ActivityPub).", @@ -138,6 +139,9 @@ "account.unmute": "Άρση σίγασης @{name}", "account.unmute_notifications_short": "Σίγαση ειδοποιήσεων", "account.unmute_short": "Κατάργηση σίγασης", + "account_edit.advanced_settings.bot_hint": "Υποδεικνύει σε άλλους χρήστες ότι ο λογαριασμός αυτός εκτελεί κυρίως αυτοματοποιημένες ενέργειες και ίσως να μην παρακολουθείται", + "account_edit.advanced_settings.bot_label": "Αυτοματοποιημένος λογαριασμός", + "account_edit.advanced_settings.title": "Προχωρημένες ρυθμίσεις", "account_edit.bio.add_label": "Προσθήκη βιογραφικού", "account_edit.bio.edit_label": "Επεξεργασία βιογραφικού", "account_edit.bio.placeholder": "Προσθέστε μια σύντομη εισαγωγή για να βοηθήσετε άλλους να σας αναγνωρίσουν.", @@ -577,10 +581,9 @@ "domain_pill.your_server": "Το ψηφιακό σου σπίτι, όπου ζουν όλες σου οι αναρτήσεις. Δε σ' αρέσει αυτός; Μετακινήσου σε διακομιστές ανά πάσα στιγμή και πάρε και τους ακόλουθούς σου μαζί.", "domain_pill.your_username": "Το μοναδικό σου αναγνωριστικό σε τούτο τον διακομιστή. Είναι πιθανό να βρεις χρήστες με το ίδιο όνομα χρήστη σε διαφορετικούς διακομιστές.", "dropdown.empty": "Διαλέξτε μια επιλογή", - "email_subscriptions.email": "Διεύθυνση email", + "email_subscriptions.email": "Email", "email_subscriptions.form.action": "Εγγραφή", - "email_subscriptions.form.disclaimer": "Μπορείτε να απεγγραφείτε οποιαδήποτε στιγμή. Για περισσότερες πληροφορίες, ανατρέξτε στην Πολιτική Απορρήτου.", - "email_subscriptions.form.lead": "Λάβετε αναρτήσεις στα εισερχόμενά σας χωρίς να δημιουργήσετε λογαριασμό Mastodon.", + "email_subscriptions.form.bottom": "Λάβετε αναρτήσεις στα εισερχόμενά σας χωρίς να χρειαστεί να δημιουργήσετε λογαριασμό Mastodon. Κάντε απεγγραφή οποιαδήποτε στιγμή. Για περισσότερες πληροφορίες, ανατρέξτε στην Πολιτική Απορρήτου.", "email_subscriptions.form.title": "Εγγραφείτε για ενημερώσεις μέσω email από {name}", "email_subscriptions.submitted.lead": "Ελέγξτε τα εισερχόμενά σας για να ολοκληρωθεί η εγγραφή για ενημερώσεις μέσω email.", "email_subscriptions.submitted.title": "Ένα βήμα ακόμα", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 62b046326f..0f75ffd404 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -102,6 +102,7 @@ "account.muted": "Silenciado", "account.muting": "Silenciada", "account.mutual": "Se siguen mutuamente", + "account.name.copy": "Copiar alias", "account.name.help.domain": "«{domain}» es el servidor que hospeda el perfil y los mensajes del usuario.", "account.name.help.domain_self": "«{domain}» es tu servidor que hospeda tu perfil y tus mensajes.", "account.name.help.footer": "Así como podés enviar correos electrónicos a personas usando diferentes clientes de email, del mismo modo podés interactuar con cuentas en otros servidores de Mastodon; y con cuentas en otras aplicaciones sociales que funcionen bajo las mismas normas que Mastodon (esto es, el protocolo ActivityPub).", @@ -138,6 +139,9 @@ "account.unmute": "Dejar de silenciar a @{name}", "account.unmute_notifications_short": "Dejar de silenciar notificaciones", "account.unmute_short": "Dejar de silenciar", + "account_edit.advanced_settings.bot_hint": "Señala a otras cuentas que esta cuenta principalmente realiza acciones automatizadas y podría no estar monitoreada", + "account_edit.advanced_settings.bot_label": "Cuenta automatizada", + "account_edit.advanced_settings.title": "Configuración avanzada", "account_edit.bio.add_label": "Agregar biografía", "account_edit.bio.edit_label": "Editar biografía", "account_edit.bio.placeholder": "Agregá una breve introducción para ayudar a otras personas a identificarte.", @@ -577,10 +581,9 @@ "domain_pill.your_server": "Tu hogar digital, donde residen todos tus mensajes. ¿No te gusta este sitio? Mudate a otro servidor en cualquier momento y llevate a tus seguidores.", "domain_pill.your_username": "Tu identificador único en este servidor. Es posible encontrar cuentas con el mismo nombre de usuario en diferentes servidores.", "dropdown.empty": "Seleccioná una opción", - "email_subscriptions.email": "Dirección de correo electrónico", + "email_subscriptions.email": "Correo electrónico", "email_subscriptions.form.action": "Suscribite", - "email_subscriptions.form.disclaimer": "Podés desuscribirte en cualquier momento. Para más información, consultá la Política de privacidad.", - "email_subscriptions.form.lead": "Obtené mensajes en tu bandeja de entrada sin crear una cuenta de Mastodon.", + "email_subscriptions.form.bottom": "Obtené publicaciones en tu bandeja de entrada sin crear una cuenta de Mastodon. Desuscribite en cualquier momento. Para más información, consultá la Política de privacidad.", "email_subscriptions.form.title": "Suscribite para recibir actualizaciones por correo electrónico de {name}", "email_subscriptions.submitted.lead": "Revisá tu bandeja de entrada para confirmar tu suscripción, así podés recibir actualizaciones por correo electrónico.", "email_subscriptions.submitted.title": "Un paso más", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 7fcffc98f7..d007725d21 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -102,6 +102,7 @@ "account.muted": "Silenciado", "account.muting": "Silenciando", "account.mutual": "Se siguen el uno al otro", + "account.name.copy": "Copiar identificador", "account.name.help.domain": "{domain} es el servidor que aloja el perfil y las publicaciones del usuario.", "account.name.help.domain_self": "{domain} es el servidor que aloja tu perfil y tus publicaciones.", "account.name.help.footer": "Al igual que puedes enviar correos electrónicos a personas que utilizan diferentes clientes de correo electrónico, puedes interactuar con personas en otros servidores Mastodon, y con cualquier persona en otras aplicaciones sociales que funcionen con el mismo conjunto de reglas que utiliza Mastodon (el protocolo ActivityPub).", @@ -138,6 +139,9 @@ "account.unmute": "Dejar de silenciar a @{name}", "account.unmute_notifications_short": "Dejar de silenciar notificaciones", "account.unmute_short": "Dejar de silenciar", + "account_edit.advanced_settings.bot_hint": "Indica a los demás que la cuenta realiza principalmente acciones automatizadas y que es posible que no esté supervisada", + "account_edit.advanced_settings.bot_label": "Cuenta automatizada", + "account_edit.advanced_settings.title": "Configuración avanzada", "account_edit.bio.add_label": "Añadir biografía", "account_edit.bio.edit_label": "Editar biografía", "account_edit.bio.placeholder": "Añade una breve introducción para ayudar a los demás a identificarte.", @@ -436,7 +440,7 @@ "column_header.moveLeft_settings": "Mover columna a la izquierda", "column_header.moveRight_settings": "Mover columna a la derecha", "column_header.pin": "Fijar", - "column_header.show_settings": "Mostrar ajustes", + "column_header.show_settings": "Mostrar configuración", "column_header.unpin": "Dejar de fijar", "column_search.cancel": "Cancelar", "combobox.close_results": "Cerrar resultados", @@ -549,7 +553,7 @@ "directory.local": "Sólo de {domain}", "directory.new_arrivals": "Recién llegados", "directory.recently_active": "Recientemente activo", - "disabled_account_banner.account_settings": "Ajustes de la cuenta", + "disabled_account_banner.account_settings": "Configuración de la cuenta", "disabled_account_banner.text": "Tu cuenta {disabledAccount} está actualmente deshabilitada.", "dismissable_banner.community_timeline": "Estas son las publicaciones públicas más recientes de las personas cuyas cuentas están alojadas en {domain}.", "dismissable_banner.dismiss": "Descartar", @@ -577,10 +581,9 @@ "domain_pill.your_server": "Tu hogar digital, donde residen todas tus publicaciones. ¿No te gusta este sitio? Muévete a otro servidor en cualquier momento y llévate a tus seguidores.", "domain_pill.your_username": "Tu identificador único en este servidor. Es posible encontrar usuarios con el mismo nombre de usuario en diferentes servidores.", "dropdown.empty": "Elige una opción", - "email_subscriptions.email": "Dirección de correo electrónico", + "email_subscriptions.email": "Correo electrónico", "email_subscriptions.form.action": "Suscribirse", - "email_subscriptions.form.disclaimer": "Puedes darte de baja en cualquier momento. Para obtener más información, consulta la Política de privacidad.", - "email_subscriptions.form.lead": "Recibe publicaciones en tu bandeja de entrada sin necesidad de crear una cuenta de Mastodon.", + "email_subscriptions.form.bottom": "Recibe publicaciones en tu bandeja de entrada sin necesidad de crear una cuenta de Mastodon. Puedes darte de baja en cualquier momento. Para obtener más información, consulta la Política de privacidad.", "email_subscriptions.form.title": "Suscríbete para recibir actualizaciones por correo electrónico de {name}", "email_subscriptions.submitted.lead": "Revisa tu bandeja de entrada para encontrar el correo electrónico que te permitirá completar tu suscripción a las actualizaciones por correo electrónico.", "email_subscriptions.submitted.title": "Un paso más", @@ -660,8 +663,8 @@ "filter_modal.added.expired_explanation": "Esta categoría de filtro ha caducado; deberás cambiar la fecha de caducidad para que se aplique.", "filter_modal.added.expired_title": "¡Filtro expirado!", "filter_modal.added.review_and_configure": "Para revisar y configurar esta categoría de filtros, vaya a {settings_link}.", - "filter_modal.added.review_and_configure_title": "Ajustes de filtro", - "filter_modal.added.settings_link": "página de ajustes", + "filter_modal.added.review_and_configure_title": "Configuración de filtros", + "filter_modal.added.settings_link": "página de configuración", "filter_modal.added.short_explanation": "Esta publicación ha sido añadida a la siguiente categoría de filtros: {title}.", "filter_modal.added.title": "¡Filtro añadido!", "filter_modal.select_filter.context_mismatch": "no se aplica a este contexto", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 2ed763b00e..4969d28e52 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -102,6 +102,7 @@ "account.muted": "Silenciado", "account.muting": "Silenciando", "account.mutual": "Os seguís mutuamente", + "account.name.copy": "Copiar alias", "account.name.help.domain": "{domain} es el servidor que alberga el perfil y las publicaciones del usuario.", "account.name.help.domain_self": "{domain} es tu servidor que aloja tu perfil y publicaciones.", "account.name.help.footer": "Al igual que puedes enviar correos electrónicos a personas usando diferentes clientes de correo electrónico, puedes interactuar con personas en otros servidores de Mastodon – y con personas en otras aplicaciones sociales que hablen el mismo idioma que Mastodon (el protocolo ActivityPub).", @@ -138,6 +139,9 @@ "account.unmute": "Dejar de silenciar a @{name}", "account.unmute_notifications_short": "Dejar de silenciar notificaciones", "account.unmute_short": "Dejar de silenciar", + "account_edit.advanced_settings.bot_hint": "Señalar a los demás que la cuenta realiza principalmente acciones automáticas y podría no estar monitorizada", + "account_edit.advanced_settings.bot_label": "Cuenta automatizada", + "account_edit.advanced_settings.title": "Ajustes avanzados", "account_edit.bio.add_label": "Añadir biografía", "account_edit.bio.edit_label": "Editar biografía", "account_edit.bio.placeholder": "Añade una breve introducción para ayudar a los demás a identificarte.", @@ -577,10 +581,9 @@ "domain_pill.your_server": "Tu hogar digital, donde residen todas tus publicaciones. ¿No te gusta este sitio? Muévete a otro servidor en cualquier momento y llévate a tus seguidores.", "domain_pill.your_username": "Tu identificador único en este servidor. Es posible encontrar usuarios con el mismo nombre de usuario en diferentes servidores.", "dropdown.empty": "Selecciona una opción", - "email_subscriptions.email": "Dirección de correo electrónico", + "email_subscriptions.email": "Correo electrónico", "email_subscriptions.form.action": "Suscribirse", - "email_subscriptions.form.disclaimer": "Puedes darte de baja en cualquier momento. Para obtener más información, consulta la Política de Privacidad.", - "email_subscriptions.form.lead": "Obtén mensajes en tu bandeja de entrada sin crear una cuenta de Mastodon.", + "email_subscriptions.form.bottom": "Recibe publicaciones en tu bandeja de entrada sin crear una cuenta de Mastodon. Puedes darte de baja en cualquier momento. Para obtener más información, consulta la Política de Privacidad.", "email_subscriptions.form.title": "Suscríbete para recibir actualizaciones por correo electrónico de {name}", "email_subscriptions.submitted.lead": "Revisa tu bandeja de entrada para terminar de suscribirte y recibir actualizaciones por correo electrónico.", "email_subscriptions.submitted.title": "Un paso más", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 2b77962d06..f91fef4268 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -102,6 +102,7 @@ "account.muted": "Summutatud", "account.muting": "Summutatud konto", "account.mutual": "Te jälgite teineteist", + "account.name.copy": "Kopeeri kasutajatunnus", "account.name.help.domain": "{domain} on server, kus antud konto koos profiiliga asub ning kust postitused saavad alguse.", "account.name.help.domain_self": "{domain} on server, kus sinu konto koos profiiliga asub ning kust sinu postitused saavad alguse.", "account.name.help.footer": "Nii nagu võid saata teiste e-posti serverite kasutajatele e-kirju, saad ka suhelda teiste Mastodoni serverite kasutajatega - ja tegelikult ka muude sotsiaalvõrkude kasutajatega, kus on kasutusel sama lahendus, nagu Mastodon pruugib (ActivityPubi protokoll).", @@ -138,6 +139,9 @@ "account.unmute": "Lõpeta {name} kasutaja summutamine", "account.unmute_notifications_short": "Lõpeta teavituste summutamine", "account.unmute_short": "Lõpeta summutamine", + "account_edit.advanced_settings.bot_hint": "Teavita teisi, et sel kontol tehakse peamiselt automatiseeritud toiminguid ja seda ei pruugita jälgida", + "account_edit.advanced_settings.bot_label": "Automatiseeritud konto", + "account_edit.advanced_settings.title": "Täpsemad seaded", "account_edit.bio.add_label": "Lisa elulugu", "account_edit.bio.edit_label": "Muuda elulugu", "account_edit.bio.placeholder": "Lisa lühike tutvustus, et aidata teistel sinust pilti luua.", @@ -158,9 +162,9 @@ "account_edit.display_name.edit_label": "Muuda kuvatavat nime", "account_edit.display_name.placeholder": "Kuvatav nimi määrab, kuidas sinu nimi on näha sinu profiilis ja ajajoontel.", "account_edit.display_name.title": "Kuvatav nimi", - "account_edit.featured_hashtags.edit_label": "Lisa silte", + "account_edit.featured_hashtags.edit_label": "Lisa teemaviiteid", "account_edit.featured_hashtags.placeholder": "Aita teistel leida su lemmikteemasid ja neile kiiresti juurde pääseda.", - "account_edit.featured_hashtags.title": "Esiletõstetud sildid", + "account_edit.featured_hashtags.title": "Esiletõstetud teemaviited", "account_edit.field_actions.delete": "Kustuta väli", "account_edit.field_actions.edit": "Muuda välja", "account_edit.field_delete_modal.confirm": "Kas oled kindel, et soovid selle kohandatud välja kustutada? Seda toimingut ei saa tagasi võtta.", @@ -206,9 +210,42 @@ "account_edit.profile_tab.button_label": "Kohanda", "account_edit.profile_tab.hint.description": "Need seaded määravad, mida kasutajad näevad {server} ametlikes rakendustes, kuid ei pruugi kehtida teiste serverite kasutajate ja kolmandate osapoolte rakenduste puhul.", "account_edit.profile_tab.hint.title": "Näitamine siiski erinev", - "account_edit_tags.max_tags_reached": "Oled jõudnud esiletõstetud siltide maksimumarvuni.", - "account_edit_tags.search_placeholder": "Sisesta silt…", + "account_edit.profile_tab.show_featured.description": "\"Esile tõstetud\" on valikuline taab, kus saad näidata teisi kontosid.", + "account_edit.profile_tab.show_featured.title": "Näita esiletõstetute taabi", + "account_edit.profile_tab.show_media.description": "\"Meedia\" on valikuline taab, mis näitab sinu piltide või videotega postitusi.", + "account_edit.profile_tab.show_media.title": "Näita meedia taabi", + "account_edit.profile_tab.show_media_replies.description": "Sisse lülitatuna näitab meedia taab mõlemat, nii sinu postitusi kui su vastuseid teiste postitustele.", + "account_edit.profile_tab.show_media_replies.title": "Kaasa meedia taabile ka vastused", + "account_edit.profile_tab.subtitle": "Kohanda oma profiili vahekaarte ja nende sisu.", + "account_edit.profile_tab.title": "Profiili taabide seaded", + "account_edit.save": "Salvesta", + "account_edit.upload_modal.back": "Tagasi", + "account_edit.upload_modal.done": "Valmis", + "account_edit.upload_modal.next": "Edasi", + "account_edit.upload_modal.step_crop.zoom": "Suum", + "account_edit.upload_modal.step_upload.button": "Sirvi faile", + "account_edit.upload_modal.step_upload.dragging": "Üleslaadimiseks kukuta", + "account_edit.upload_modal.step_upload.header": "Vali pilt", + "account_edit.upload_modal.step_upload.hint": "WEBP-, PNG-, GIF- või JPG-vormingus, maksimaalselt {limit} MB.{br}Pilt skaleeritakse mõõtmeteni {width}x{height} pikselit.", + "account_edit.upload_modal.title_add.avatar": "Lisa profiilifoto", + "account_edit.upload_modal.title_add.header": "Lisa kaanefoto", + "account_edit.upload_modal.title_replace.avatar": "Asenda profiilifoto", + "account_edit.upload_modal.title_replace.header": "Asenda kaanefoto", + "account_edit.verified_modal.details": "Tõsta oma Mastodoni profiili usaldusväärsust, kinnitades lingid isiklikele veebisaitidele. See toimib järgmiselt:", + "account_edit.verified_modal.invisible_link.details": "Lisa link oma päisesse. Oluline on atribuut rel=\"me\", mis takistab identiteedivargust kasutajate loodud sisuga veebisaitidel. Lehe päises võib kasutada isegi silti link {tag} asemel, kuid HTML peab olema kättesaadav ka ilma JavaScripti käivitamiseta.", + "account_edit.verified_modal.invisible_link.summary": "Kuidas ma muudan lingi nähtamatuks?", + "account_edit.verified_modal.step1.header": "Kopeeri allpool olev HTML-kood ja kleebi oma veebisaidi päisesse", + "account_edit.verified_modal.step2.details": "Kui oled oma veebisaidi kohandatud väljana juba lisanud, pead kinnitamise käivitamiseks selle kustutama ja uuesti lisama.", + "account_edit.verified_modal.step2.header": "Lisa oma veebileht kohandatud väljana", + "account_edit.verified_modal.title": "Kuidas lisada kinnitatud link", + "account_edit_tags.add_tag": "Lisa #{tagName}", + "account_edit_tags.column_title": "Muuda silte", + "account_edit_tags.help_text": "Esiletõstetud teemaviited aitavad kasutajatel sinu profiili leida ja sellega suhestuda. Need kuvatakse filtritena sinu profiili lehe tegevuste vaates.", + "account_edit_tags.max_tags_reached": "Oled jõudnud esiletõstetud teemaviidete maksimumarvuni.", + "account_edit_tags.search_placeholder": "Sisesta teemaviide…", "account_edit_tags.suggestions": "Soovitused:", + "account_edit_tags.tag_status_count": "{count, plural, one {# postitus} other {# postitust}}", + "account_list.total": "{total, plural, one {# konto} other {# kontot}}", "account_note.placeholder": "Klõpsa märke lisamiseks", "admin.dashboard.daily_retention": "Kasutajate päevane allesjäämine peale registreerumist", "admin.dashboard.monthly_retention": "Kasutajate kuine allesjäämine peale registreerumist", @@ -306,11 +343,18 @@ "callout.dismiss": "Loobu", "carousel.current": "Slaid {current, number} / {max, number}", "carousel.slide": "Slaid {current, number} / {max, number}", + "character_counter.recommended": "{currentLength}/{maxLength} soovitatud märke", + "character_counter.required": "{currentLength}/{maxLength} märki", "closed_registrations.other_server_instructions": "Kuna Mastodon on detsentraliseeritud, võib konto teha teise serverisse ja sellegipoolest siinse kontoga suhelda.", "closed_registrations_modal.description": "Praegu ei ole võimalik teha {domain} peale kontot, aga pea meeles, et sul ei pea olema just {domain} konto, et Mastodoni kasutada.", "closed_registrations_modal.find_another_server": "Leia mõni muu server", "closed_registrations_modal.preamble": "Mastodon on hajutatud võrk, mis tähendab, et konto võid luua ükskõik kuhu, kuid ikkagi saad jälgida ja suhelda igaühega selles serveris. Võid isegi oma serveri püsti panna!", "closed_registrations_modal.title": "Mastodoni registreerumine", + "collection.share_modal.share_link_label": "Kutse jagamise link", + "collection.share_modal.share_via_post": "Postita Mastodonis", + "collection.share_modal.share_via_system": "Jaga kohas…", + "collection.share_modal.title": "Jaga kogumikku", + "collection.share_modal.title_new": "Jaga oma ut kogumikku!", "collections.account_count": "{count, plural, one {# kasutajakonto} other {# kasutajakontot}}", "collections.collection_description": "Kirjeldus", "collections.collection_name": "Nimi", @@ -516,7 +560,7 @@ "emoji_button.search_results": "Otsitulemused", "emoji_button.symbols": "Sümbolid", "emoji_button.travel": "Reisimine & kohad", - "empty_column.account_featured.other": "{acct} pole veel midagi esile tõstnud. Kas sa teadsid, et oma profiilis saad esile tõsta enamkasutatavaid teemaviiteid või sõbra kasutajakontot?", + "empty_column.account_featured.other": "{acct} pole veel midagi esile tõstnud. Kas teadsid, et oma profiilis saad esile tõsta rohkem kasutatud teemaviiteid või sõbra kasutajakontot?", "empty_column.account_hides_collections": "See kasutaja otsustas mitte teha seda infot saadavaks", "empty_column.account_suspended": "Konto kustutatud", "empty_column.account_timeline": "Siin postitusi ei ole!", @@ -556,6 +600,8 @@ "featured_carousel.header": "{count, plural, one {Esiletõstetud postitus} other {Esiletõstetud postitust}}", "featured_carousel.slide": "Postitus {current, number} / {max, number}", "featured_tags.more_items": "+{count}", + "featured_tags.suggestions": "Postitasid hiljuti {items} kohta. Kas lisada need esiletõstetud teemaviideteks?", + "featured_tags.suggestions.added": "Halda mistahes ajal oma esiletõstetud teemaviiteid kohas Muuda profiili > Esiletõstetud teemaviited.", "filter_modal.added.context_mismatch_explanation": "See filtrikategooria ei rakendu kontekstis, kuidas postituseni jõudsid. Kui tahad postitust ka selles kontekstis filtreerida, pead muutma filtrit.", "filter_modal.added.context_mismatch_title": "Konteksti mittesobivus!", "filter_modal.added.expired_explanation": "Selle filtri kategooria on aegunud. pead muutma aegumiskuupäeva, kui tahad, et filter kehtiks.", @@ -620,7 +666,7 @@ "hashtag.column_header.tag_mode.any": "või teemaviide {additional}", "hashtag.column_header.tag_mode.none": "ilma teemaviiteta {additional}", "hashtag.column_settings.select.no_options_message": "Soovitusi ei leitud", - "hashtag.column_settings.select.placeholder": "Sisesta sildid…", + "hashtag.column_settings.select.placeholder": "Sisesta teemaviited…", "hashtag.column_settings.tag_mode.all": "Kõik need", "hashtag.column_settings.tag_mode.any": "Mõni neist", "hashtag.column_settings.tag_mode.none": "Mitte ükski neist", @@ -920,7 +966,7 @@ "onboarding.profile.display_name": "Näidatav nimi", "onboarding.profile.display_name_hint": "Su täisnimi või naljanimi…", "onboarding.profile.note": "Elulugu", - "onboarding.profile.note_hint": "Saad @mainida teisi kasutajaid või lisada #teemaviidet…", + "onboarding.profile.note_hint": "Saad @mainida teisi kasutajaid või lisada #teemaviiteid…", "onboarding.profile.title": "Profiili seadistamine", "onboarding.profile.upload_avatar": "Laadi üles profiilipilt", "onboarding.profile.upload_header": "Laadi üles profiili päis", @@ -1048,7 +1094,7 @@ "search_popout.user": "kasutaja", "search_results.accounts": "Profiilid", "search_results.all": "Kõik", - "search_results.hashtags": "Sildid", + "search_results.hashtags": "Teemaviited", "search_results.no_results": "Tulemusi pole.", "search_results.no_search_yet": "Proovi otsida postitusi, profiile või teemaviiteid.", "search_results.see_all": "Vaata kõiki", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 4ff131f19e..27ab83683f 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -102,6 +102,7 @@ "account.muted": "Mykistetty", "account.muting": "Mykistetty", "account.mutual": "Seuraatte toisianne", + "account.name.copy": "Kopioi käyttäjätunnus", "account.name.help.domain": "{domain} on palvelin, jolla käyttäjän profiili ja julkaisut sijaitsevat.", "account.name.help.domain_self": "{domain} on palvelin, jolla profiilisi ja julkaisusi sijaitsevat.", "account.name.help.footer": "Aivan kuten voit lähettää sähköpostia eri sähköpostiohjelmilla, voit olla yhteydessä muihin Mastodon-palvelimiin – ja kehen tahansa, joka käyttää sosiaalisen median sovelluksia, jotka toimivat samoilla säännöillä kuin Mastodon (hyödyntävät ActivityPub-protokollaa).", @@ -138,6 +139,9 @@ "account.unmute": "Kumoa käyttäjän @{name} mykistys", "account.unmute_notifications_short": "Kumoa ilmoitusten mykistys", "account.unmute_short": "Kumoa mykistys", + "account_edit.advanced_settings.bot_hint": "Ilmaise muille, että tili suorittaa enimmäkseen automaattisia toimia eikä sitä välttämättä valvota", + "account_edit.advanced_settings.bot_label": "Bottitili", + "account_edit.advanced_settings.title": "Edistyneet asetukset", "account_edit.bio.add_label": "Lisää elämäkerta", "account_edit.bio.edit_label": "Muokkaa elämäkertaa", "account_edit.bio.placeholder": "Lisää lyhyt esittely, joka auttaa muita tunnistamaan sinut.", @@ -579,8 +583,7 @@ "dropdown.empty": "Valitse vaihtoehto", "email_subscriptions.email": "Sähköpostiosoite", "email_subscriptions.form.action": "Tilaa", - "email_subscriptions.form.disclaimer": "Voit peruuttaa tilauksen milloin tahansa. Jos haluat lisätietoja, katso tietosuojakäytäntö.", - "email_subscriptions.form.lead": "Hanki julkaisut sähköpostilaatikkoosi luomatta Mastodon-tiliä.", + "email_subscriptions.form.bottom": "Saa julkaisut Saapuneet-kansioosi luomatta Mastodon-tiliä. Peruuta tilaus milloin tahansa. Jos haluat lisätietoja, katso tietosuojakäytäntö.", "email_subscriptions.form.title": "Tilaa sähköpostipäivitykset käyttäjältä {name}", "email_subscriptions.submitted.lead": "Viimeistele sähköpostipäivitysten tilaus tarkistamalla Saapuneet-kansiosi.", "email_subscriptions.submitted.title": "Vielä yksi vaihe", diff --git a/app/javascript/mastodon/locales/fr-CA.json b/app/javascript/mastodon/locales/fr-CA.json index 3e3ce9469e..a6cc8ba351 100644 --- a/app/javascript/mastodon/locales/fr-CA.json +++ b/app/javascript/mastodon/locales/fr-CA.json @@ -102,6 +102,7 @@ "account.muted": "Masqué·e", "account.muting": "Masqué", "account.mutual": "Vous vous suivez mutuellement", + "account.name.copy": "Copier l’identifiant", "account.name.help.domain": "{domain} est le serveur qui héberge le profil et les messages du compte.", "account.name.help.domain_self": "{domain} est le serveur qui héberge votre profil et vos messages.", "account.name.help.footer": "Tout comme vous pouvez envoyer des courriels à des personnes utilisant différents logiciels de messagerie, vous pouvez interagir avec des personnes sur d'autres serveurs Mastodon — et avec n'importe qui sur d'autres applications sociales propulsées par le même ensemble de règles que Mastodon utilise (le protocole ActivityPub).", @@ -138,6 +139,9 @@ "account.unmute": "Ne plus masquer @{name}", "account.unmute_notifications_short": "Ne plus masquer les notifications", "account.unmute_short": "Ne plus masquer", + "account_edit.advanced_settings.bot_hint": "Indique que le compte effectue principalement des actions automatisées et pourrait ne pas être surveillé", + "account_edit.advanced_settings.bot_label": "Compte automatisé", + "account_edit.advanced_settings.title": "Paramètres avancés", "account_edit.bio.add_label": "Ajouter une présentation", "account_edit.bio.edit_label": "Modifier la présentation", "account_edit.bio.placeholder": "Ajouter une courte introduction pour aider les autres à vous connaître.", @@ -579,8 +583,7 @@ "dropdown.empty": "Sélectionner une option", "email_subscriptions.email": "Adresse de courriel", "email_subscriptions.form.action": "S’abonner", - "email_subscriptions.form.disclaimer": "Vous pouvez vous désabonner à tout moment. Pour plus d'informations, référez-vous à la politique de confidentialité.", - "email_subscriptions.form.lead": "Recevez les messages dans votre boîte de réception sans créer de compte Mastodon.", + "email_subscriptions.form.bottom": "Recevez les messages dans votre boîte de réception sans créer de compte Mastodon. Désabonnez-vous quand vous voulez. Pour plus d’information, se référer à la politique de confidentialité.", "email_subscriptions.form.title": "Abonnez-vous pour recevoir par courriel les notifications de {name}", "email_subscriptions.submitted.lead": "Vérifiez votre boîte de réception pour finaliser de votre inscription aux notifications par courriel.", "email_subscriptions.submitted.title": "Une dernière chose", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 0ffa9ad1f0..48cbdff5b8 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -102,6 +102,7 @@ "account.muted": "Masqué·e", "account.muting": "Masqué", "account.mutual": "Vous vous suivez mutuellement", + "account.name.copy": "Copier l’identifiant", "account.name.help.domain": "{domain} est le serveur qui héberge le profil et les messages du compte.", "account.name.help.domain_self": "{domain} est le serveur qui héberge votre profil et vos messages.", "account.name.help.footer": "Tout comme vous pouvez envoyer des courriels à des personnes utilisant différents logiciels de messagerie, vous pouvez interagir avec des personnes sur d'autres serveurs Mastodon — et avec n'importe qui sur d'autres applications sociales propulsées par le même ensemble de règles que Mastodon utilise (le protocole ActivityPub).", @@ -138,6 +139,9 @@ "account.unmute": "Ne plus masquer @{name}", "account.unmute_notifications_short": "Réactiver les notifications", "account.unmute_short": "Ne plus masquer", + "account_edit.advanced_settings.bot_hint": "Indique que le compte effectue principalement des actions automatisées et pourrait ne pas être surveillé", + "account_edit.advanced_settings.bot_label": "Compte automatisé", + "account_edit.advanced_settings.title": "Paramètres avancés", "account_edit.bio.add_label": "Ajouter une présentation", "account_edit.bio.edit_label": "Modifier la présentation", "account_edit.bio.placeholder": "Ajouter une courte introduction pour aider les autres à vous connaître.", @@ -579,8 +583,7 @@ "dropdown.empty": "Sélectionner une option", "email_subscriptions.email": "Adresse de courriel", "email_subscriptions.form.action": "S’abonner", - "email_subscriptions.form.disclaimer": "Vous pouvez vous désabonner à tout moment. Pour plus d'informations, référez-vous à la politique de confidentialité.", - "email_subscriptions.form.lead": "Recevez les messages dans votre boîte de réception sans créer de compte Mastodon.", + "email_subscriptions.form.bottom": "Recevez les messages dans votre boîte de réception sans créer de compte Mastodon. Désabonnez-vous quand vous voulez. Pour plus d’information, se référer à la politique de confidentialité.", "email_subscriptions.form.title": "Abonnez-vous pour recevoir par courriel les notifications de {name}", "email_subscriptions.submitted.lead": "Vérifiez votre boîte de réception pour finaliser de votre inscription aux notifications par courriel.", "email_subscriptions.submitted.title": "Une dernière chose", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index b71ecbd17b..5c9783bfc9 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -102,6 +102,7 @@ "account.muted": "Balbhaithe", "account.muting": "Ag balbhaigh", "account.mutual": "Leanann sibh a chéile", + "account.name.copy": "Láimhseáil chóipeála", "account.name.help.domain": "Is é {domain} an freastalaí a óstálann próifíl agus poist an úsáideora.", "account.name.help.domain_self": "Is é {domain} an freastalaí a óstálann do phróifíl agus do phoist.", "account.name.help.footer": "Díreach mar is féidir leat ríomhphoist a sheoladh chuig daoine ag baint úsáide as cliaint ríomhphoist éagsúla, is féidir leat idirghníomhú le daoine ar fhreastalaithe Mastodon eile – agus le duine ar bith ar aipeanna sóisialta eile atá faoi thiomáint ag an tsraith rialacha chéanna a úsáideann Mastodon (an prótacal ActivityPub).", @@ -138,6 +139,9 @@ "account.unmute": "Díbhalbhaigh @{name}", "account.unmute_notifications_short": "Díbhalbhaigh fógraí", "account.unmute_short": "Díbhalbhaigh", + "account_edit.advanced_settings.bot_hint": "Tabhair comhartha do dhaoine eile go ndéanann an cuntas gníomhartha uathoibrithe den chuid is mó agus nach bhféadfadh sé go ndéantar monatóireacht air", + "account_edit.advanced_settings.bot_label": "Cuntas uathoibrithe", + "account_edit.advanced_settings.title": "Socruithe ardleibhéil", "account_edit.bio.add_label": "Cuir beathaisnéis leis", "account_edit.bio.edit_label": "Cuir beathaisnéis in eagar", "account_edit.bio.placeholder": "Cuir réamhrá gearr leis chun cabhrú le daoine eile tú a aithint.", @@ -577,10 +581,7 @@ "domain_pill.your_server": "Do theach digiteach, áit a bhfuil do phoist go léir ina gcónaí. Nach maith leat an ceann seo? Aistrigh freastalaithe am ar bith agus tabhair leat do leantóirí freisin.", "domain_pill.your_username": "D'aitheantóir uathúil ar an bhfreastalaí seo. Is féidir teacht ar úsáideoirí leis an ainm úsáideora céanna ar fhreastalaithe éagsúla.", "dropdown.empty": "Roghnaigh rogha", - "email_subscriptions.email": "Seoladh ríomhphoist", "email_subscriptions.form.action": "Liostáil", - "email_subscriptions.form.disclaimer": "Is féidir leat díliostáil ag am ar bith. Le haghaidh tuilleadh eolais, féach ar an Polasaí Príobháideachais.", - "email_subscriptions.form.lead": "Faigh poist i do bhosca isteach gan cuntas Mastodon a chruthú.", "email_subscriptions.form.title": "Cláraigh le haghaidh nuashonruithe ríomhphoist ó {name}", "email_subscriptions.submitted.lead": "Seiceáil do bhosca isteach le haghaidh ríomhphoist chun clárú le haghaidh nuashonruithe ríomhphoist a chríochnú.", "email_subscriptions.submitted.title": "Céim amháin eile", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index dff4868dc2..5e706643ab 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -72,6 +72,7 @@ "account.in_memoriam": "Mar chuimhneachan.", "account.joined_short": "Air ballrachd fhaighinn", "account.languages": "Atharraich fo-sgrìobhadh nan cànan", + "account.last_active": "Gnìomhach an turas mu dheireadh", "account.link_verified_on": "Chaidh dearbhadh cò leis a tha an ceangal seo {date}", "account.locked_info": "Tha prìobhaideachd ghlaiste aig a’ chunntais seo. Nì an sealbhadair lèirmheas a làimh air cò dh’fhaodas a leantainn.", "account.media": "Meadhanan", @@ -101,6 +102,7 @@ "account.muted": "’Ga mhùchadh", "account.muting": "’Ga mhùchadh", "account.mutual": "A’ leantainn càch a chèile", + "account.name.copy": "Dèan lethbhreac dhen aithnichear", "account.name.help.domain": "Is {domain} am frithealaiche a tha ag òstadh pròifil ’s postaichean a’ chleachdaiche.", "account.name.help.domain_self": "Is {domain} am frithealaiche agad-sa a tha ag òstadh pròifil ’s postaichean agad-sa.", "account.name.help.footer": "Air an aon dòigh ’s a chuireas tu puist-d gu daoine le cliantan puist-d eadar-dhealaichte, ’s urrainn dhut conaltradh le daoine air frithealaichean Mastodon eile – agus le duine sam bith air aplacaidean sòisealta eile a chleachdas na h-aon riaghailtean ’s a chleachdas Mastodon (sin pròtacal ActivityPub).", @@ -137,6 +139,9 @@ "account.unmute": "Dì-mhùch @{name}", "account.unmute_notifications_short": "Dì-mhùch na brathan", "account.unmute_short": "Dì-mhùch", + "account_edit.advanced_settings.bot_hint": "Comharraich do chàch gu bheil an cunntas seo ri gnìomhan fèin-obrachail gu h-àraidh is dh’fhaoidte nach doir duine sam bith sùil air idir", + "account_edit.advanced_settings.bot_label": "Cunntas fèin-obrachail", + "account_edit.advanced_settings.title": "Roghainnean adhartach", "account_edit.bio.add_label": "Cuir ris roinn mu mo dhèidhinn", "account_edit.bio.edit_label": "Deasaich an roinn mu mo dhèidhinn", "account_edit.bio.placeholder": "Cuir thu fhèin an aithne càich gu goirid.", @@ -174,7 +179,7 @@ "account_edit.field_edit_modal.name_hint": "Can “Làrach-lìn phearsanta”", "account_edit.field_edit_modal.name_label": "Leubail", "account_edit.field_edit_modal.url_warning": "Airson ceangal a chur ris, gabh a-staigh {protocol} aig a thoiseach.", - "account_edit.field_edit_modal.value_hint": "Can “https://example.me”", + "account_edit.field_edit_modal.value_hint": "Can “https://example.com”", "account_edit.field_edit_modal.value_label": "Luach", "account_edit.field_reorder_modal.drag_cancel": "Chaidh sgur dhen t-slaodadh. Chaidh an raon “{item}” a leigeil às.", "account_edit.field_reorder_modal.drag_end": "Chaidh an raon “{item}” a leigeil às.", @@ -231,7 +236,7 @@ "account_edit.verified_modal.invisible_link.summary": "Ciamar a dh’fhalaicheas mi an ceangal?", "account_edit.verified_modal.step1.header": "Dèan lethbhreac dhen chòd HTML gu h-ìosal is cuir e ri bann-cinn na làraich-lìn agad", "account_edit.verified_modal.step2.details": "Ma chuir thu an làrach-lìn agad mar raon ghnàthaichte ris cheana, feumaidh tu a sguabadh às ’s a chur ris a-rithist airson an dearbhadh a chur gu dol.", - "account_edit.verified_modal.step2.header": "Cuir an làrach-lìn agad ris na raon gnàthaichte", + "account_edit.verified_modal.step2.header": "Cuir an làrach-lìn agad ris ’na raon gnàthaichte", "account_edit.verified_modal.title": "Mar a chuireas tu ceangal dearbhte ris", "account_edit_tags.add_tag": "Cuir #{tagName} ris", "account_edit_tags.column_title": "Deasaich na tagaichean", @@ -373,10 +378,13 @@ "collections.delete_collection": "Sguab an cruinneachadh às", "collections.description_length_hint": "Crìoch de 100 caractar", "collections.detail.accounts_heading": "Cunntasan", + "collections.detail.author_added_you_on_date": "Chuir {author} ris thu {date}", "collections.detail.loading": "A’ luchdadh a’ chruinneachaidh…", "collections.detail.revoke_inclusion": "Thoir air falbh mi", + "collections.detail.sensitive_content": "Susbaint fhrionasach", "collections.detail.sensitive_note": "Tha cunntasan is susbaint sa chruinneachadh seo a dh’fhaodadh a bhith frionasach do chuid.", "collections.detail.share": "Co-roinn an cruinneachadh seo", + "collections.detail.you_are_in_this_collection": "Thathar do bhrosnachadh sa chruinneachadh seo", "collections.edit_details": "Deasaich am fiosrachadh", "collections.error_loading_collections": "Thachair mearachd nuair a dh’fheuch sinn ris a’ chruinneachaidhean agad a luchdadh.", "collections.hints.accounts_counter": "{count} / {max} cunntas(an)", @@ -532,6 +540,7 @@ "content_warning.hide": "Falaich am post", "content_warning.show": "Seall e co-dhiù", "content_warning.show_more": "Seall barrachd dheth", + "content_warning.show_short": "Seall", "conversation.delete": "Sguab às an còmhradh", "conversation.mark_as_read": "Cuir comharra gun deach a leughadh", "conversation.open": "Seall an còmhradh", @@ -572,6 +581,13 @@ "domain_pill.your_server": "Do dhachaigh dhigiteach far a bheil na postaichean uile agad a’ fuireach. Nach toigh leat an tè seo? Dèan imrich gu frithealaiche eile uair sam bith is thoir an luchd-leantainn agad leat cuideachd.", "domain_pill.your_username": "Seo an t-aithnichear àraidh agad air an fhrithealaiche seo. Dh’fhaoidte gu bheil luchd-cleachdaidh air a bheil an t-aon ainm air frithealaichean eile.", "dropdown.empty": "Tagh roghainn", + "email_subscriptions.email": "Post-d", + "email_subscriptions.form.action": "Fo-sgrìobh", + "email_subscriptions.form.bottom": "Faigh postaichean sa bhogsa a-steach agad às aonais cunntais Mhastodon. Cuir crìoch air an fho-sgrìobhadh uair sam bith. Airson barrachd fiosrachaidh, faic am poileasaidh prìobhaideachd.", + "email_subscriptions.form.title": "Clàraich airson naidheachdan {name} fhaighinn air a’ phost-d", + "email_subscriptions.submitted.lead": "Thoir sùil a bheil post-d sa a’ bhogsa a-steach agad airson an clàradh airson naidheachdan puist-d a choileanadh.", + "email_subscriptions.submitted.title": "Aon cheum eile", + "email_subscriptions.validation.email.invalid": "Seòladh puist-d mì-dhligheach", "embed.instructions": "Leabaich am post seo san làrach-lìn agad is tu a’ dèanamh lethbhreac dhen chòd gu h-ìosal.", "embed.preview": "Seo an coltas a bhios air:", "emoji_button.activity": "Gnìomhachd", @@ -590,6 +606,12 @@ "emoji_button.symbols": "Samhlaidhean", "emoji_button.travel": "Siubhal ⁊ àitichean", "empty_column.account_featured.other": "Chan eil {acct} a’ brosnachadh dad fhathast. An robh fios agad gur urrainn dhut na tagaichean hais a chleachdas tu as trice agus fiù ’s cunntasan do charaidean a bhrosnachadh air a’ phròifil agad?", + "empty_column.account_featured_other.no_collections_desc": "Cha do chruthaich {acct} cruinneachadh sam bith fhathast.", + "empty_column.account_featured_other.title": "Chan eil dad ri fhaicinn an-seo", + "empty_column.account_featured_self.no_collections": "Chan eil cruinneachadh ann fhathast", + "empty_column.account_featured_self.no_collections_button": "Cruthaich cruinneachadh", + "empty_column.account_featured_unknown.no_collections_desc": "Cha do chruthaich an cunntas seo cruinneachadh sam bith fhathast.", + "empty_column.account_featured_unknown.other": "Chan eil an cunntas seo a’ brosnachadh dad fhathast.", "empty_column.account_hides_collections": "Chuir an cleachdaiche seo roimhe nach eil am fiosrachadh seo ri fhaighinn", "empty_column.account_suspended": "Chaidh an cunntas a chur à rèim", "empty_column.account_timeline": "Chan eil post an-seo!", @@ -948,7 +970,7 @@ "notifications.column_settings.filter_bar.category": "Bàr-criathraidh luath", "notifications.column_settings.follow": "Luchd-leantainn ùr:", "notifications.column_settings.follow_request": "Iarrtasan leantainn ùra:", - "notifications.column_settings.group": "Buidheann", + "notifications.column_settings.group": "Buidhnich", "notifications.column_settings.mention": "Iomraidhean:", "notifications.column_settings.poll": "Toraidhean cunntais-bheachd:", "notifications.column_settings.push": "Brathan putaidh", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 089a822de6..a62dd129c9 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -102,6 +102,7 @@ "account.muted": "Acalada", "account.muting": "Silenciamento", "account.mutual": "Seguimento mútuo", + "account.name.copy": "Copiar identificador", "account.name.help.domain": "{domain} é o servidor que aloxa o perfil e as publicacións da usuaria.", "account.name.help.domain_self": "{domain} é o servidor que aloxa o teu perfil e publicacións.", "account.name.help.footer": "Ao igual que envías correos electrónicos a persoas que usan diferentes provedores, podes interactuar con persoas en outros servidores Mastodon ― e con calquera outra que use aplicacións que sigan o mesmo sistema que usa Mastodon (o protocolo ActivityPub).", @@ -138,6 +139,9 @@ "account.unmute": "Deixar de silenciar a @{name}", "account.unmute_notifications_short": "Reactivar notificacións", "account.unmute_short": "Non silenciar", + "account_edit.advanced_settings.bot_hint": "Advirte ás usuarias de que esta conta realiza principalmente accións automatizadas e podería non estar monitorizada", + "account_edit.advanced_settings.bot_label": "Conta automatizada", + "account_edit.advanced_settings.title": "Axustes avanzados", "account_edit.bio.add_label": "Engadir biografía", "account_edit.bio.edit_label": "Editar biografía", "account_edit.bio.placeholder": "Escribe unha breve presentación para que te coñezan mellor.", @@ -577,10 +581,8 @@ "domain_pill.your_server": "O teu fogar dixital, onde están as túas publicacións. Non é do teu agrado? Podes cambiar de servidor cando queiras levando as túas seguidoras contigo.", "domain_pill.your_username": "O teu identificador único neste servidor. É posible que atopes usuarias co mesmo nome de usuaria en outros servidores.", "dropdown.empty": "Escolle unha opción", - "email_subscriptions.email": "Enderezos de correo", + "email_subscriptions.email": "Correo electrónico", "email_subscriptions.form.action": "Subscribirse", - "email_subscriptions.form.disclaimer": "Pódeste dar de baixa cando queiras. Para máis información le a Directiva de Privacidade.", - "email_subscriptions.form.lead": "Recibe as publicacións na caixa de correo sen precisar unha conta de Mastodon.", "email_subscriptions.form.title": "Subscríbete para recibir actualizacións por correo de {name}", "email_subscriptions.submitted.lead": "Comproba a túa caixa de correo para completar a subscrición ás actualizacións por correo.", "email_subscriptions.submitted.title": "Un último paso", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 4d83fb084f..7b2549c192 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -577,10 +577,7 @@ "domain_pill.your_server": "הבית המקוון שלך, היכן ששוכנות כל הודעותיך. לא מוצא חן בעיניך? ניתן לעבור שרתים בכל עת וגם לשמור על העוקבים.", "domain_pill.your_username": "המזהה הייחודי שלך על שרת זה. ניתן למצוא משתמשים עם שם משתמש זהה על שרתים שונים.", "dropdown.empty": "בחירת אפשרות", - "email_subscriptions.email": "כתובת דוא\"ל", "email_subscriptions.form.action": "הרשמה", - "email_subscriptions.form.disclaimer": "ניתן לבטל את ההרשמה בכל עת. למידע נוסף, הציצו במדיניות הפרטיות.", - "email_subscriptions.form.lead": "לקבל הודעות בדואל בלי ליצור חשבון מסטודון.", "email_subscriptions.form.title": "הרשמה לקבלת עידכוני דואל מאת {name}", "email_subscriptions.submitted.lead": "יש לחפש בתיבת הדואל הודעה לסיום ההרשמה לעידכונים בדואל.", "email_subscriptions.submitted.title": "עוד שלב אחד אחרון", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 4cb95d0232..44e46fc11b 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -102,6 +102,7 @@ "account.muted": "Némítva", "account.muting": "Némítás", "account.mutual": "Követitek egymást", + "account.name.copy": "Fióknév másolása", "account.name.help.domain": "A(z) {domain} a kiszolgáló, amely a felhasználó profilját és bejegyzéseit szolgálja ki.", "account.name.help.domain_self": "A(z) {domain} a kiszolgáló, amely a profilodat és bejegyzéseidet szolgálja ki.", "account.name.help.footer": "Ahogy több különböző szolgáltatónál lévő embernek lehet e-mailt küldeni, úgy más Mastodon-kiszolgálókon lévő emberrekel is kapcsolatba lehet lépni – és bárki mással is, akik ugyanazokat a szabályokat (az ActivityPub-protokollt) használó közösségimédia-alkalmazásokat használnak, mint a Mastodon.", @@ -138,6 +139,9 @@ "account.unmute": "@{name} némításának feloldása", "account.unmute_notifications_short": "Értesítések némításának feloldása", "account.unmute_short": "Némitás feloldása", + "account_edit.advanced_settings.bot_hint": "Jelzés másoknak, hogy ez a fiók automatikus műveleteket végez és valószínűleg nem figyeljük", + "account_edit.advanced_settings.bot_label": "Automatizált fiók", + "account_edit.advanced_settings.title": "Speciális beállítások", "account_edit.bio.add_label": "Bemutatkozás hozzáadása", "account_edit.bio.edit_label": "Bemutatkozás szerkesztése", "account_edit.bio.placeholder": "Adj meg egy rövid bemutatkozást, hogy mások könnyebben megtaláljanak.", @@ -579,8 +583,7 @@ "dropdown.empty": "Válassz egy lehetőséget", "email_subscriptions.email": "E-mail-cím", "email_subscriptions.form.action": "Feliratkozás", - "email_subscriptions.form.disclaimer": "Bármikor leiratkozhatsz. További információkért lásd az Adatvédelmi szabályzatot.", - "email_subscriptions.form.lead": "Kapj bejegyzéseket a postaládádba, Mastodon-fiók létrehozása nélkül.", + "email_subscriptions.form.bottom": "Kapj bejegyzéseket a postaládádba anélkül, hogy Mastodon-fiókot hoznál létre. Bármikor leiratkozhatsz. További információkért nézd meg az Adatvédelmi irányelveket.", "email_subscriptions.form.title": "Regisztrálj {name} e-mailben küldött híreiért", "email_subscriptions.submitted.lead": "Ellenőrizd a postaládádat az e-mailes hírek regisztrációs folyamatának befejezéséhez.", "email_subscriptions.submitted.title": "Csak még egy lépés", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index c662146a2e..323005aee3 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -102,6 +102,7 @@ "account.muted": "Þaggaður", "account.muting": "Þöggun", "account.mutual": "Þið fylgist með hvor öðrum", + "account.name.copy": "Afrita kennislóð", "account.name.help.domain": "{domain} er netþjónninn sem hýsir upplýsingasnið um notandann og færslurnar hans.", "account.name.help.domain_self": "{domain} er netþjónninn þinn sem hýsir upplýsingasniðið þitt og færslurnar þínar.", "account.name.help.footer": "Rétt eins og að þú getur sent tölvupóst á fólk í gegnum mismunandi þjónustur og forrit, þá getur þú átt í samskiptum við fólk á öðrum Mastodon-netþjónum – og reyndar við hverja þá sem eru á öðrum þeim samfélagsmiðlum sem nota sömu samskiptareglur og Mastodon notar (sem er ActivityPub-samskiptamátinn).", @@ -138,6 +139,9 @@ "account.unmute": "Hætta að þagga niður í @{name}", "account.unmute_notifications_short": "Hætta að þagga í tilkynningum", "account.unmute_short": "Hætta að þagga niður", + "account_edit.advanced_settings.bot_hint": "Merki til annarra að þessi aðgangur sé aðallega til að framkvæma sjálfvirkar aðgerðir og gæti verið án þess að hann sé vaktaður reglulega", + "account_edit.advanced_settings.bot_label": "Sjálfvirkur aðgangur", + "account_edit.advanced_settings.title": "Ítarlegar stillingar", "account_edit.bio.add_label": "Bættu við æviágripi", "account_edit.bio.edit_label": "Breyta æviágripi", "account_edit.bio.placeholder": "Settu inn stutta kynningu á þér svo aðrir eigi betur með að auðkenna þig.", @@ -577,10 +581,9 @@ "domain_pill.your_server": "Stafrænt heimili þitt, þar sem allar færslur þínar eru hýstar. Kanntu ekki við þennan netþjón? Þú getur flutt þig á milli netþjóna hvenær sem er og tekið með þér alla fylgjendurna þína.", "domain_pill.your_username": "Sértækt auðkenni þitt á þessum netþjóni. Það er mögulegt að finna notendur með sama notandanafn á mismunandi netþjónum.", "dropdown.empty": "Veldu valkost", - "email_subscriptions.email": "Tölvupóstfang", + "email_subscriptions.email": "Tölvupóstur", "email_subscriptions.form.action": "Gerast áskrifandi", - "email_subscriptions.form.disclaimer": "Þú getur hætt í áskrift hvenær sem er. Til að sjá nánari upplýsingar geturðu skoðað Meðferð persónuupplýsinga.", - "email_subscriptions.form.lead": "Fáðu færslur í pósthólfið þitt án þess að skrá þig með Mastodon-aðgang.", + "email_subscriptions.form.bottom": "Fáðu færslur í tölvupósti án þess að útbúa Mastodon-aðgang. Segðu upp áskrift hvenær sem er. Nánari upplýsingar má finna í Meðferð persónuupplýsinga.", "email_subscriptions.form.title": "Skráðu þig í áskrift í tölvupósti að færslum frá {name}", "email_subscriptions.submitted.lead": "Athugaðu hvort þér hafi borist tölvupóstur til að ljúka áskriftarferlinu.", "email_subscriptions.submitted.title": "Eitt skref í viðbót", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 67794cc994..4f4b70c6ce 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -102,6 +102,7 @@ "account.muted": "Mutato", "account.muting": "Account silenziato", "account.mutual": "Vi seguite a vicenda", + "account.name.copy": "Copia il nome univoco", "account.name.help.domain": "{domain} è il server che ospita il profilo e i post dell'utente.", "account.name.help.domain_self": "{domain} è il tuo server che ospita il tuo profilo e i post.", "account.name.help.footer": "Proprio come puoi inviare email a persone che usano diversi client di posta elettronica, così puoi interagire con le persone su altri server Mastodon — e con chiunque utilizzi altre app social basate sulle stesse regole che Mastodon usa (il protocollo ActivityPub).", @@ -138,6 +139,9 @@ "account.unmute": "Riattiva @{name}", "account.unmute_notifications_short": "Riattiva notifiche", "account.unmute_short": "Attiva audio", + "account_edit.advanced_settings.bot_hint": "Segnala ad altri che l'account esegue principalmente azioni automatizzate e potrebbe non essere monitorato", + "account_edit.advanced_settings.bot_label": "Account automatizzato", + "account_edit.advanced_settings.title": "Impostazioni avanzate", "account_edit.bio.add_label": "Aggiungi biografia", "account_edit.bio.edit_label": "Modifica la biografia", "account_edit.bio.placeholder": "Aggiungi una breve introduzione per aiutare gli altri a identificarti.", @@ -577,10 +581,9 @@ "domain_pill.your_server": "La tua casa digitale, dove vivono tutti i tuoi post. Non ti piace questa? Cambia server in qualsiasi momento e porta con te anche i tuoi follower.", "domain_pill.your_username": "Il tuo identificatore univoco su questo server. È possibile trovare utenti con lo stesso nome utente su server diversi.", "dropdown.empty": "Seleziona un'opzione", - "email_subscriptions.email": "Indirizzo email", + "email_subscriptions.email": "Email", "email_subscriptions.form.action": "Iscriviti", - "email_subscriptions.form.disclaimer": "Puoi annullare l'iscrizione in qualsiasi momento. Per ulteriori informazioni, consulta l'Informativa sulla privacy.", - "email_subscriptions.form.lead": "Ricevi i post nella tua casella di posta elettronica senza creare un account Mastodon.", + "email_subscriptions.form.bottom": "Ricevi i post nella tua casella di posta elettronica senza creare un account Mastodon. Puoi disiscriverti in qualsiasi momento. Per maggiori informazioni, consulta l'Informativa sulla privacy.", "email_subscriptions.form.title": "Iscriviti per ricevere aggiornamenti via email da {name}", "email_subscriptions.submitted.lead": "Controlla la tua casella di posta elettronica per completare l'iscrizione agli aggiornamenti via email.", "email_subscriptions.submitted.title": "Ancora un passaggio", @@ -1071,7 +1074,7 @@ "relative_time.days": "{number}g", "relative_time.full.days": "{number, plural, one {# giorno} other {# giorni}} fa", "relative_time.full.hours": "{number, plural, one {# ora} other {# ore}} fa", - "relative_time.full.just_now": "adesso", + "relative_time.full.just_now": "proprio ora", "relative_time.full.minutes": "{number, plural, one {# minuto} other {# minuti}} fa", "relative_time.full.seconds": "{number, plural, one {# secondo} other {# secondi}} fa", "relative_time.hours": "{number}h", @@ -1281,11 +1284,11 @@ "terms_of_service.effective_as_of": "In vigore a partire dal giorno {date}", "terms_of_service.title": "Termini di Servizio", "terms_of_service.upcoming_changes_on": "Prossime modifiche nel giorno {date}", - "time_remaining.days": "{number, plural, one {# giorno} other {# giorni}} left", - "time_remaining.hours": "{number, plural, one {# ora} other {# ore}} left", - "time_remaining.minutes": "{number, plural, one {# minuto} other {# minuti}} left", + "time_remaining.days": "{number, plural, one {# giorno rimanente} other {# giorni rimanenti}}", + "time_remaining.hours": "{number, plural, one {# ora rimanente} other {# ore rimanenti}}", + "time_remaining.minutes": "{number, plural, one {# minuto rimanente} other {# minuti rimanenti}}", "time_remaining.moments": "Restano pochi istanti", - "time_remaining.seconds": "{number, plural, one {# secondo} other {# secondi}} left", + "time_remaining.seconds": "{number, plural, one {# secondo rimanente} other {# secondi rimanenti}}", "trends.counter_by_accounts": "{count, plural, one {{count} persona} other {{count} persone}} {days, plural, one {nell'ultimo giorno} other {negli ultimi {days} giorni}}", "trends.trending_now": "Ora in tendenza", "ui.beforeunload": "La tua bozza andrà persa, se abbandoni Mastodon.", diff --git a/app/javascript/mastodon/locales/nan-TW.json b/app/javascript/mastodon/locales/nan-TW.json index 9b3660743d..c7d976b420 100644 --- a/app/javascript/mastodon/locales/nan-TW.json +++ b/app/javascript/mastodon/locales/nan-TW.json @@ -577,10 +577,7 @@ "domain_pill.your_server": "Lí數位ê厝,內底有lí所有ê PO文。無kah意?Ē當轉kàu別ê服侍器,koh保有跟tuè lí êl âng。.", "domain_pill.your_username": "Lí 佇tsit ê服侍器獨一ê稱呼。佇無kâng ê服侍器有可能tshuē著kāng名ê用者。", "dropdown.empty": "揀選項", - "email_subscriptions.email": "電子phue地址", "email_subscriptions.form.action": "訂", - "email_subscriptions.form.disclaimer": "Lí不管時lóng會使取消訂。其他ê資訊請參考隱私權政策。", - "email_subscriptions.form.lead": "無開 Mastodon ê口座,mā佇電子phue ê收件箱收著PO文。", "email_subscriptions.form.title": "訂 {name} ê電子phue更新", "email_subscriptions.submitted.lead": "請檢查lí ê收件箱來完成訂電子批ê更新。", "email_subscriptions.submitted.title": "上尾步", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index d0d3d1a4c4..5690133488 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -574,10 +574,7 @@ "domain_pill.your_server": "Jouw digitale thuis, waar al jouw berichten zich bevinden. Is deze server toch niet naar jouw wens? Dan kun je op elk moment naar een andere server verhuizen en ook jouw volgers overbrengen.", "domain_pill.your_username": "Jouw unieke identificatie-adres op deze server. Het is mogelijk dat er gebruikers met dezelfde gebruikersnaam op verschillende servers te vinden zijn.", "dropdown.empty": "Selecteer een optie", - "email_subscriptions.email": "E-mailadres", "email_subscriptions.form.action": "Abonneren", - "email_subscriptions.form.disclaimer": "Je kunt je op elk gewenst moment afmelden. Raadpleeg het Privacybeleid voor meer informatie.", - "email_subscriptions.form.lead": "Krijg berichten in je inbox zonder een Mastodonaccount aan te hoeven maken.", "email_subscriptions.form.title": "Op e-mailupdates van {name} abonneren", "email_subscriptions.submitted.lead": "Kijk in je inbox voor een e-mail waarmee je het abbonement op de e-mailupdates kunt bevestigen.", "email_subscriptions.submitted.title": "Nog één stap", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index c296f2cff1..e64c578234 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -102,6 +102,7 @@ "account.muted": "Målbunden", "account.muting": "Dempa", "account.mutual": "De fylgjer kvarandre", + "account.name.copy": "Kopier brukaradressa", "account.name.help.domain": "{domain} er tenaren som lagrar brukarprofilen og innlegga.", "account.name.help.domain_self": "{domain} er tenaren som lagrar brukarprofilen og innlegga dine.", "account.name.help.footer": "På same måten som du kan senda epost til folk med ulike epostprogram og -kontoar, kan du kommunisera med folk på andre Mastodon-tenarar, og med folk på andre sosiale nettverk som samhandlar på same måte som Mastodon. Det er ActivityPub-protokollen.", @@ -138,6 +139,9 @@ "account.unmute": "Opphev demping av @{name}", "account.unmute_notifications_short": "Opphev demping av varslingar", "account.unmute_short": "Opphev demping", + "account_edit.advanced_settings.bot_hint": "Varsla andre om at denne kontoen for det meste er automatisert og truleg ikkje blir sjekka jamnleg", + "account_edit.advanced_settings.bot_label": "Automatisert konto", + "account_edit.advanced_settings.title": "Avanserte innstillingar", "account_edit.bio.add_label": "Skriv om deg sjølv", "account_edit.bio.edit_label": "Rediger bio", "account_edit.bio.placeholder": "Skriv ei kort innleiing slik at andre kan sjå kven du er.", @@ -577,10 +581,9 @@ "domain_pill.your_server": "Din digitale heim, der alle innlegga dine bur. Liker du ikkje dette? Byt til ein ny tenar når som helst og ta med fylgjarane dine òg.", "domain_pill.your_username": "Din unike identifikator på denne tenaren. Det er mogleg å finne brukarar med same brukarnamn på forskjellige tenarar.", "dropdown.empty": "Vel eit alternativ", - "email_subscriptions.email": "Epostadresse", + "email_subscriptions.email": "Epost", "email_subscriptions.form.action": "Abonner", - "email_subscriptions.form.disclaimer": "Du kan melda deg av når som helst. Sjå personvernretningslinene for meir informasjon.", - "email_subscriptions.form.lead": "Få innlegg i innboksen din utan å laga ein Mastodon-konto.", + "email_subscriptions.form.bottom": "Få innlegg i innboksen din utan å laga ein Mastodon-konto. Meld deg av når du vil. Sjå personvernsida for meir info.", "email_subscriptions.form.title": "Meld deg på epostoppdateringar frå {name}", "email_subscriptions.submitted.lead": "Sjekk innboksen din for ein epost om korleis du fullfører abonnementet på epostoppdateringar.", "email_subscriptions.submitted.title": "Eitt steg til", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index b53b7263b3..02b697059e 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -536,10 +536,7 @@ "domain_pill.your_server": "Ваш цифровой дом, где находятся все ваши посты. Если вам не нравится этот сервер, вы можете в любое время перенести свою учётную запись на другой сервер, не теряя подписчиков.", "domain_pill.your_username": "Ваш уникальный идентификатор на этом сервере. На разных серверах могут встречаться люди с тем же именем пользователя.", "dropdown.empty": "Выберите вариант", - "email_subscriptions.email": "Адрес электронной почты", "email_subscriptions.form.action": "Подписаться", - "email_subscriptions.form.disclaimer": "Вы можете отписаться в любое время. Больше информации в Политике конфиденциальности.", - "email_subscriptions.form.lead": "Получайте новые посты по электронной почты — для этого не нужно регистрироваться в Mastodon.", "email_subscriptions.form.title": "Оформите email-подписку на этого пользователя", "email_subscriptions.submitted.title": "Ещё один шаг", "email_subscriptions.validation.email.blocked": "Почтовый сервис заблокирован", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index e892c3a25f..2dd979dc88 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -138,6 +138,9 @@ "account.unmute": "Ktheji zërin @{name}", "account.unmute_notifications_short": "Shfaqi njoftimet", "account.unmute_short": "Çheshtoje", + "account_edit.advanced_settings.bot_hint": "Sinjalizojuni të tjerëve se llogari kryesisht kryen veprime të automatizuara dhe mund të mos vëzhgohet", + "account_edit.advanced_settings.bot_label": "Llogari e automatizuar", + "account_edit.advanced_settings.title": "Rregullime të mëtejshme", "account_edit.bio.add_label": "Shtoni jetëshkrim", "account_edit.bio.edit_label": "Përpunoni jetëshkrim", "account_edit.bio.placeholder": "Shtoni një hyrje të shkurtër për të ndihmuar të tjerët t’ju identifikojnë.", @@ -573,10 +576,9 @@ "domain_pill.your_server": "Shtëpia juaj dixhitale, kur gjenden krejt postimet tuaja. S’ju pëlqen kjo këtu? Shpërngulni shërbyes kur të doni dhe sillni edhe ndjekësit tuaj.", "domain_pill.your_username": "Identifikuesi juja unik në këtë shërbyes. Është e mundur të gjenden përdorues me të njëjtin emër përdoruesi në shërbyes të ndryshëm.", "dropdown.empty": "Përzgjidhni një mundësi", - "email_subscriptions.email": "Adresë email", + "email_subscriptions.email": "Email", "email_subscriptions.form.action": "Pajtohuni", - "email_subscriptions.form.disclaimer": "S’mund të shpajtoheni, në çfarëdo kohe. Për më tepër informacion, shihni te Rregulla Privatësie.", - "email_subscriptions.form.lead": "Merrni postime në email-in tuaj, pa krijuar një llogari Mastodon.", + "email_subscriptions.form.bottom": "Merrni postime në email-in tuaj, pa krijuar një llogari Mastodon. Shpajtohuni në çfarëdo kohe. Për më tepër informacion, shihni te Rregulla Privatësie.", "email_subscriptions.form.title": "Regjistrohuni për përditësime me email nga {name}", "email_subscriptions.submitted.lead": "Shihni te mesazhet tuaj të marrë për një email, që të përfundoni regjistrimin për përditësime me email.", "email_subscriptions.submitted.title": "Edhe një hap", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 0e65e5d64d..5a23678b50 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -72,6 +72,7 @@ "account.in_memoriam": "Till minne av.", "account.joined_short": "Gick med", "account.languages": "Ändra vilka språk du helst vill se i ditt flöde", + "account.last_active": "Senast aktiv", "account.link_verified_on": "Ägarskap för denna länk kontrollerades den {date}", "account.locked_info": "Detta konto har låst integritetsstatus. Ägaren väljer manuellt vem som kan följa det.", "account.media": "Media", @@ -104,7 +105,14 @@ "account.name.help.domain": "{domain} är servern som är värd för användarens profil och inlägg.", "account.name.help.domain_self": "{domain} är din server som är värd för användarens profil och inlägg.", "account.name.help.footer": "Precis som du kan skicka e-post till personer med olika e-postklienter, du kan interagera med personer på andra Mastodon-servrar – och med vem som helst på andra sociala appar som drivs av samma uppsättning regler som Mastodon använder (ActivityPub-protokollet).", + "account.name.help.header": "Ett handtag är som en e-postadress", + "account.name.help.username": "{username} är kontots användarnamn på deras server. Någon på en annan server kan ha samma användarnamn.", + "account.name.help.username_self": "{username} är ditt användarnamn på denna server. Någon på en annan server kan ha samma användarnamn.", + "account.name_info": "Vad betyder detta?", "account.no_bio": "Ingen beskrivning angiven.", + "account.node_modal.callout": "Personlig anteckningar är endast synliga för dig.", + "account.node_modal.edit_title": "Redigera en personlig anteckning", + "account.node_modal.error_unknown": "Kunde inte spara anteckningen", "account.node_modal.field_label": "Personlig anteckning", "account.node_modal.save": "Spara", "account.node_modal.title": "Lägg till en personlig anteckning", @@ -130,33 +138,47 @@ "account.unmute": "Sluta tysta @{name}", "account.unmute_notifications_short": "Aktivera aviseringsljud", "account.unmute_short": "Avtysta", + "account_edit.advanced_settings.title": "Avancerade inställningar", "account_edit.bio.add_label": "Lägg till biografi", + "account_edit.bio.edit_label": "Redigera biografi", "account_edit.bio.placeholder": "Lägg till en kort introduktion för att hjälpa andra att identifiera dig.", "account_edit.bio.title": "Biografi", "account_edit.bio_modal.add_title": "Lägg till biografi", "account_edit.bio_modal.edit_title": "Redigera biografi", "account_edit.column_button": "Klar", "account_edit.column_title": "Redigera profil", + "account_edit.custom_fields.add_label": "Lägg till fält", + "account_edit.custom_fields.edit_label": "Redigera fält", "account_edit.custom_fields.placeholder": "Lägg till dina pronomen, externa länkar eller något annat du vill dela.", "account_edit.custom_fields.reorder_button": "Ändra ordning för fält", "account_edit.custom_fields.tip_content": "Du kan enkelt lägga till trovärdighet till ditt Mastodon-konto genom att verifiera länkar till alla webbplatser du äger.", "account_edit.custom_fields.tip_title": "Tips: Lägga till verifierade länkar", "account_edit.custom_fields.title": "Tilläggsfält", "account_edit.custom_fields.verified_hint": "Hur lägger jag till en verifierad länk?", + "account_edit.display_name.add_label": "Lägg till visningsnamn", + "account_edit.display_name.edit_label": "Redigera visningsnamn", "account_edit.display_name.placeholder": "Visningsnamnet är hur ditt namn ser ut på din profil och i tidslinjer.", "account_edit.display_name.title": "Visningsnamn", + "account_edit.featured_hashtags.edit_label": "Lägg till hashtaggar", "account_edit.featured_hashtags.placeholder": "Hjälp andra att identifiera, och få snabb tillgång till, dina favoritämnen.", "account_edit.featured_hashtags.title": "Utvalda hashtaggar", + "account_edit.field_actions.delete": "Radera fält", + "account_edit.field_actions.edit": "Redigera fält", "account_edit.field_delete_modal.confirm": "Är du säker på att du vill ta bort detta tilläggsfält? Denna åtgärd kan inte ångras.", "account_edit.field_delete_modal.delete_button": "Radera", "account_edit.field_delete_modal.title": "Radera tilläggsfält?", "account_edit.field_edit_modal.add_title": "Lägg till tilläggsfält", + "account_edit.field_edit_modal.discard_confirm": "Ta bort", + "account_edit.field_edit_modal.discard_message": "Du har osparade ändringar. Är du säker på att du vill ta bort dem?", "account_edit.field_edit_modal.edit_title": "Redigera tilläggsfält", "account_edit.field_edit_modal.length_warning": "Rekommenderad teckengräns överskrids. Mobilanvändare kanske inte ser ditt fält i sin helhet.", "account_edit.field_edit_modal.name_hint": "T.ex. “Personlig webbplats”", "account_edit.field_edit_modal.name_label": "Etikett", "account_edit.field_edit_modal.url_warning": "För att lägga till en länk, vänligen inkludera {protocol} i början.", "account_edit.field_edit_modal.value_hint": "T.ex. \"https://example.me”", + "account_edit.field_edit_modal.value_label": "Värde", + "account_edit.field_reorder_modal.drag_cancel": "Flytten avbröts. Fältet \"{item}\" släpptes.", + "account_edit.image_alt_modal.add_title": "Lägg till alternativ text", "account_edit.image_edit.add_button": "Lägg till bild", "account_edit.image_edit.alt_add_button": "Lägg till alternativtext", "account_edit.image_edit.alt_edit_button": "Redigera alternativtext", @@ -440,9 +462,7 @@ "domain_pill.your_server": "Ditt digitala hem, där alla dina inlägg bor. Gillar du inte just denna? Byt server när som helst och ta med dina anhängare också.", "domain_pill.your_username": "Din unika identifierare på denna server. Det är möjligt att hitta användare med samma användarnamn på olika servrar.", "dropdown.empty": "Välj ett alternativ", - "email_subscriptions.email": "E-postadress", "email_subscriptions.form.action": "Prenumerera", - "email_subscriptions.form.lead": "Få inlägg i din inkorg utan att skapa ett Mastodon-konto.", "email_subscriptions.submitted.title": "Ett steg kvar", "email_subscriptions.validation.email.blocked": "Blockerad e-postleverantör", "email_subscriptions.validation.email.invalid": "Ogiltig epostadress", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 27f9f2839c..c66565166d 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -102,6 +102,7 @@ "account.muted": "Susturuldu", "account.muting": "Sessize alınıyor", "account.mutual": "Birbirinizi takip ediyorsunuz", + "account.name.copy": "İsmi Kopyala", "account.name.help.domain": "{domain} kullanıcının profilini ve gönderilerini barındıran sunucudur.", "account.name.help.domain_self": "{domain} profilinizi ve gönderilerinizi barındıran sunucunuzdur.", "account.name.help.footer": "Farklı e-posta istemcileri kullanan kişilere e-posta gönderebileceğiniz gibi, diğer Mastodon sunucularındaki kişilerle ve Mastodon'un kullandığı kurallarla (ActivityPub protokolü) çalışan diğer sosyal uygulamalardaki herkesle etkileşim kurabilirsiniz.", @@ -138,6 +139,9 @@ "account.unmute": "@{name} adlı kişinin sesini aç", "account.unmute_notifications_short": "Bildirimlerin sesini aç", "account.unmute_short": "Susturmayı kaldır", + "account_edit.advanced_settings.bot_hint": "Bu hesap temelde otomatik eylemler gerçekleştirir ve izlenmeyebiliri diğerlerine bildir", + "account_edit.advanced_settings.bot_label": "Otomatik hesap", + "account_edit.advanced_settings.title": "Gelişmiş ayarlar", "account_edit.bio.add_label": "Kişisel bilgi ekle", "account_edit.bio.edit_label": "Kişisel bilgiyi düzenle", "account_edit.bio.placeholder": "Diğerlerinin sizi tanımasına yardımcı olmak için kısa bir tanıtım ekleyin.", @@ -577,10 +581,9 @@ "domain_pill.your_server": "Dijital anasayfanız, tüm gönderilerinizin yaşadığı yerdir. Bunu beğenmediniz mi? İstediğiniz zaman sunucularınızı değiştirin ve takipçilerinizi de getirin.", "domain_pill.your_username": "Bu sunucudaki tekil tanımlayıcınız. Farklı sunucularda aynı kullanıcı adına sahip kullanıcıları bulmak mümkündür.", "dropdown.empty": "Bir seçenek seçin", - "email_subscriptions.email": "E-posta adresi", + "email_subscriptions.email": "E-posta", "email_subscriptions.form.action": "Abone ol", - "email_subscriptions.form.disclaimer": "İstediğiniz zaman abonelikten çıkabilirsiniz. Daha fazla bilgi için Gizlilik Politikası sayfasına bakabilirsiniz.", - "email_subscriptions.form.lead": "Gönderiler gelen kutunuza Mastodon hesabı oluşturmadan gelsin.", + "email_subscriptions.form.bottom": "Gönderiler Mastodon hesabı oluşturmadan e-posta kutunuza gelsin. İstediğiniz zaman aboneliğinizi iptal edebilirsiniz. Daha fazla bilgi için Gizlilik Politikası'na bakın.", "email_subscriptions.form.title": "{name} kişisinin e-posta güncellemelerine kaydolun", "email_subscriptions.submitted.lead": "E-posta güncellemelerine kaydolma işlemini tamamlamak için gelen kutunuzu kontrol edin.", "email_subscriptions.submitted.title": "Bir adım daha", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 7cf12da44d..0641925a03 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -577,10 +577,7 @@ "domain_pill.your_server": "Nơi lưu trữ tút của bạn. Không thích ở đây? Chuyển sang máy chủ khác và giữ nguyên người theo dõi của bạn.", "domain_pill.your_username": "Chỉ riêng bạn trên máy chủ này. Những máy chủ khác có thể cũng có tên người dùng giống vậy.", "dropdown.empty": "Chọn một lựa chọn", - "email_subscriptions.email": "Địa chỉ email", "email_subscriptions.form.action": "Đăng ký", - "email_subscriptions.form.disclaimer": "Bạn có thể hủy đăng ký bất cứ lúc nào. Để biết thêm thông tin, vui lòng tham khảo Chính sách bảo mật.", - "email_subscriptions.form.lead": "Nhận tút trực tiếp vào hộp thư đến mà không cần tạo tài khoản Mastodon.", "email_subscriptions.form.title": "Đăng ký nhận cập nhật qua email từ {name}", "email_subscriptions.submitted.lead": "Kiểm tra hộp thư đến của bạn để tìm email hoàn tất đăng ký nhận thông báo qua email.", "email_subscriptions.submitted.title": "Một bước nữa", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 59a50b6199..a55fd4b974 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -102,6 +102,7 @@ "account.muted": "已隐藏", "account.muting": "正在静音", "account.mutual": "你们互相关注", + "account.name.copy": "复制用户名", "account.name.help.domain": "{domain} 是托管该用户个人资料及嘟文的服务器。", "account.name.help.domain_self": "{domain} 是托管你的个人资料及嘟文的服务器。", "account.name.help.footer": "就像你可以用不同的电子邮件客户端向其他人发送同样的电子邮件一般,你也可以和其他 Mastodon 服务器上的用户互动,甚至还能和与 Mastodon 采用相同规则(即 ActivityPub 协议)的其他社交软件上的任何人互动。", @@ -138,6 +139,9 @@ "account.unmute": "不再隐藏 @{name}", "account.unmute_notifications_short": "恢复通知", "account.unmute_short": "取消隐藏", + "account_edit.advanced_settings.bot_hint": "来自这个账号的绝大多数操作都是自动进行的,并且可能无人监控", + "account_edit.advanced_settings.bot_label": "机器人账号", + "account_edit.advanced_settings.title": "高级设置", "account_edit.bio.add_label": "添加个人简介", "account_edit.bio.edit_label": "编辑个人简介", "account_edit.bio.placeholder": "添加一段简短介绍,帮助其他人认识你。", @@ -577,10 +581,9 @@ "domain_pill.your_server": "你的数字家园,你的全部嘟文都在此存储。不喜欢这里吗?你可以随时迁移到其它服务器,并带上你的关注者。", "domain_pill.your_username": "你在此服务器上的唯一标识。不同服务器上可能存在相同用户名的用户。", "dropdown.empty": "选项", - "email_subscriptions.email": "电子邮件地址", + "email_subscriptions.email": "电子邮件", "email_subscriptions.form.action": "订阅", - "email_subscriptions.form.disclaimer": "你可以随时退订。更多信息参见隐私政策。", - "email_subscriptions.form.lead": "无需注册 Mastodon 账号,在收件箱中获取嘟文。", + "email_subscriptions.form.bottom": "无需注册 Mastodon 账号,在收件箱中获取嘟文。如果想退订了你可以随时退订。更多信息参见隐私政策。", "email_subscriptions.form.title": "订阅 {name} 的电子邮件推送", "email_subscriptions.submitted.lead": "请检查你的收件箱来完成邮件订阅注册。", "email_subscriptions.submitted.title": "最后一步", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 22e40ee25f..fdcef8b6d4 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -102,6 +102,7 @@ "account.muted": "已靜音", "account.muting": "靜音", "account.mutual": "跟隨彼此", + "account.name.copy": "複製帳號", "account.name.help.domain": "{domain} 為託管此使用者個人檔案與嘟文之伺服器。", "account.name.help.domain_self": "{domain} 為託管您個人檔案與嘟文之伺服器。", "account.name.help.footer": "就像是您的以不同 email 程式寄信給他人一樣,您能與其他 Mastodon 伺服器中的人們互動,並且能和使用與 Mastodon 一樣規則 (ActivityPub 協定) 的其他社群軟體上任何人互動。", @@ -138,6 +139,9 @@ "account.unmute": "解除靜音 @{name}", "account.unmute_notifications_short": "解除靜音推播通知", "account.unmute_short": "解除靜音", + "account_edit.advanced_settings.bot_hint": "告知他人此帳號主要執行自動化操作且可能未受人為監控", + "account_edit.advanced_settings.bot_label": "機器人帳號", + "account_edit.advanced_settings.title": "進階設定", "account_edit.bio.add_label": "新增個人簡介", "account_edit.bio.edit_label": "編輯個人簡介", "account_edit.bio.placeholder": "加入一段簡短介紹以幫助其他人識別您。", @@ -577,10 +581,9 @@ "domain_pill.your_server": "您數位世界的家,您所有的嘟文都在這裡。不喜歡這台伺服器嗎?您能隨時搬家至其他伺服器並且仍保有您的跟隨者。", "domain_pill.your_username": "您於您的伺服器中獨一無二的識別。於不同的伺服器上可能找到具有相同帳號的使用者。", "dropdown.empty": "請選擇一個選項", - "email_subscriptions.email": "電子郵件地址", + "email_subscriptions.email": "電子郵件", "email_subscriptions.form.action": "訂閱", - "email_subscriptions.form.disclaimer": "您可以任何時候取消訂閱。欲了解更多資訊,請參考隱私權政策。", - "email_subscriptions.form.lead": "於不建立 Mastodon 帳號的情況下,將透過電子郵件取得嘟文。", + "email_subscriptions.form.bottom": "於不建立 Mastodon 帳號的情況下,將透過電子郵件取得嘟文。您可以任何時候取消訂閱。欲了解更多資訊,請參考隱私權政策。", "email_subscriptions.form.title": "訂閱 {name} 之電子郵件通訊", "email_subscriptions.submitted.lead": "請檢查您的收件夾以完成訂閱電子郵件通訊。", "email_subscriptions.submitted.title": "最後一步", diff --git a/config/locales/devise.el.yml b/config/locales/devise.el.yml index 3708d70ce6..f37e475360 100644 --- a/config/locales/devise.el.yml +++ b/config/locales/devise.el.yml @@ -24,17 +24,17 @@ el: action_with_app: Επιβεβαίωση και επιστροφή στο %{app} explanation: Δημιούργησες έναν λογαριασμό στο %{host} με αυτή τη διεύθυνση email. Με ένα κλικ θα τον ενεργοποιήσεις. Αν δεν το έκανες εσύ, παρακαλούμε αγνόησε αυτό το email. explanation_when_pending: Έχεις υποβάλλει αίτηση πρόσκλησης στο %{host} με αυτή την διεύθυνση email. Μόλις επιβεβαιώσεις το email σου, θα ελέγξουμε την αίτηση σου. Μέχρι τότε δε θα μπορείς να συνδεθείς. Αν απορριφθεί η αίτησή σου, τα στοιχεία σου θα αφαιρεθούν, άρα δε θα χρειαστεί να κάνεις κάτι επιπλέον. Αν δεν υπέβαλες εσύ την αίτηση, αγνόησε αυτό το email. - extra_html: Παρακαλούμε να διαβάσεις του κανόνες αυτού του κόμβου και τους όρους χρήσης της υπηρεσίας μας. + extra_html: Παρακαλούμε διάβασε επίσης τους κανόνες του διακομιστή και τους όρους χρήσης της υπηρεσίας μας. subject: 'Mastodon: Οδηγίες επιβεβαίωσης για %{instance}' title: Επιβεβαίωσε διεύθυνση email email_changed: explanation: 'Αλλάζεις τη διεύθυνση email για τον λογαριασμό σου στην:' - extra: Αν δεν άλλαξες εσύ το email σου, ίσως κάποιος να έχει αποκτήσει πρόσβαση στο λογαριασμό σου. Παρακαλούμε άλλαξε το συνθηματικό σου άμεσα ή επικοινώνησε με τον διαχειριστή του κόμβου σου αν έχεις κλειδωθεί απ' έξω. + extra: Αν δεν άλλαξες εσύ το email σου, ίσως κάποιος να έχει αποκτήσει πρόσβαση στο λογαριασμό σου. Παρακαλούμε άλλαξε το συνθηματικό σου άμεσα ή επικοινώνησε με τον διαχειριστή του διακομιστή αν έχεις κλειδωθεί απ' έξω. subject: 'Mastodon: Το email άλλαξε' title: Νέα διεύθυνση email password_change: explanation: Το συνθηματικό του λογαριασμού σου άλλαξε. - extra: Αν δεν άλλαξες εσύ το συνθηματικό σου, ίσως κάποιος να έχει αποκτήσει πρόσβαση στο λογαριασμό σου. Παρακαλούμε άλλαξε το συνθηματικό σου άμεσα ή επικοινώνησε με τον διαχειριστή του κόμβου σου αν έχεις κλειδωθεί απ' έξω. + extra: Αν δεν άλλαξες εσύ το συνθηματικό σου, ίσως κάποιος να έχει αποκτήσει πρόσβαση στο λογαριασμό σου. Παρακαλούμε άλλαξε το συνθηματικό σου άμεσα ή επικοινώνησε με τον διαχειριστή του διακομιστή αν έχεις κλειδωθεί απ' έξω. subject: 'Mastodon: Αλλαγή συνθηματικού' title: Ο κωδικός άλλαξε reconfirmation_instructions: @@ -89,21 +89,21 @@ el: success: Επιτυχημένη πιστοποίηση μέσω %{kind} λογαριασμού. passwords: no_token: Δεν μπορείς να επισκεφτείς αυτή τη σελίδα αν δεν έρχεσαι από email επαναφοράς συνθηματικού. Αν όντως έρχεσαι από email επαναφοράς συνθηματικού, σιγουρέψου πως χρησιμοποίησες το πλήρες URL που σου στάλθηκε. - send_instructions: Αν η email διεύθυνσή σου υπάρχει ήδη στη βάση μας, θα λάβεις σύντομα έναν σύνδεσμο ανάκτησης συνθηματικού. Παρακαλούμε έλεγξε το φάκελο με τα ανεπιθύμητα μηνύματα σου αν δεν το λάβεις. + send_instructions: Αν η διεύθυνση email σου υπάρχει ήδη στη βάση μας, θα λάβεις σύντομα έναν σύνδεσμο ανάκτησης συνθηματικού. Παρακαλούμε έλεγξε το φάκελο με τα ανεπιθύμητα μηνύματα σου αν δεν το έχεις λάβει. send_paranoid_instructions: Αν η email διεύθυνσή σου υπάρχει ήδη στη βάση μας, θα λάβεις σύντομα έναν σύνδεσμο ανάκτησης συνθηματικού. Παρακαλούμε έλεγξε το φάκελο με τα ανεπιθύμητα μηνύματα σου αν δεν το λάβεις. updated: Το συνθηματικό σου άλλαξε. Πλέον έχεις συνδεθεί. updated_not_active: Το συνθηματικό σου άλλαξε. registrations: destroyed: Αντίο! Ο λογαριασμός σου ακυρώθηκε με επιτυχία. Ελπίζουμε να σε ξαναδούμε σύντομα. - update_needs_confirmation: Ενημέρωσες το λογαριασμό σου με επιτυχία αλλά χρειαζόμαστε να επιβεβαιώσουμε τη νέα διεύθυνση email σου. Παρακαλούμε έλεγξε τα email σου και ακολούθησε το σύνδεσμο για να την επιβεβαιώσεις. Παρακαλούμε έλεγξε το φάκελο με τα ανεπιθύμητα μηνύματα σου αν δεν το λάβεις. + update_needs_confirmation: Ενημέρωσες το λογαριασμό σου με επιτυχία αλλά χρειαζόμαστε να επιβεβαιώσουμε τη νέα διεύθυνση email σου. Παρακαλούμε έλεγξε τα email σου και ακολούθησε το σύνδεσμο για να την επιβεβαιώσεις. Παρακαλούμε έλεγξε το φάκελο με τα ανεπιθύμητα μηνύματα σου αν δεν το έχεις λάβει. updated: Ο λογαριασμός σου επιβεβαιώθηκε με επιτυχία. sessions: already_signed_out: Αποσυνδέθηκες με επιτυχία. signed_in: Συνδέθηκες με επιτυχία. signed_out: Αποσυνδέθηκες με επιτυχία. unlocks: - send_instructions: Σε μερικά λεπτά θα λάβεις ένα email με οδηγίες για το πως να ξεκλειδώσεις το λογαριασμό σου. Παρακαλούμε έλεγξε το φάκελο με τα ανεπιθύμητα μηνύματα σου αν δεν το λάβεις. - send_paranoid_instructions: Αν ο λογαριασμός σου υπάρχει, σε μερικά λεπτά θα λάβεις ένα email με οδηγίες για το πως να τον ξεκλειδώσεις. Παρακαλούμε έλεγξε το φάκελο με τα ανεπιθύμητα μηνύματα σου αν δεν το λάβεις. + send_instructions: Σε μερικά λεπτά θα λάβεις ένα email με οδηγίες για το πως να ξεκλειδώσεις το λογαριασμό σου. Παρακαλούμε έλεγξε το φάκελο με τα ανεπιθύμητα μηνύματα σου αν δεν το έχεις λάβει. + send_paranoid_instructions: Αν ο λογαριασμός σου υπάρχει, σε μερικά λεπτά θα λάβεις ένα email με οδηγίες για το πως να τον ξεκλειδώσεις. Παρακαλούμε έλεγξε το φάκελο με τα ανεπιθύμητα μηνύματα σου αν δεν το έχεις λάβει. unlocked: Ο λογαριασμός σου ξεκλειδώθηκε με επιτυχία. Παρακαλούμε συνδέσου για να συνεχίσεις. errors: messages: diff --git a/config/locales/el.yml b/config/locales/el.yml index 66fddceb9c..ab9434bc6b 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -1177,7 +1177,7 @@ el: webhook: Webhook admin_mailer: auto_close_registrations: - body: Λόγω έλλειψης πρόσφατης δραστηριότητας συντονιστών, οι εγγραφές στο %{instance} έχουν αλλάξει αυτόματα στην απαίτηση χειροκίνητου ελέγχου, για να αποτρέψει το %{instance} από το να χρησιμοποιηθεί ως πλατφόρμα για πιθανούς κακούς παράγοντες. Μπορείς να το αλλάξεις ξανά για να ανοίξετε εγγραφές ανά πάσα στιγμή. + body: Λόγω έλλειψης πρόσφατης δραστηριότητας συντονιστών, οι εγγραφές στο %{instance} έχουν αλλάξει αυτόματα στην απαίτηση χειροκίνητου ελέγχου, για να αποτρέψει το %{instance} από το να χρησιμοποιηθεί ως πλατφόρμα για πιθανούς κακούς παράγοντες. Μπορείς να το αλλάξεις ξανά σε ανοιχτές εγγραφές ανά πάσα στιγμή. subject: Οι εγγραφές για το %{instance} έχουν αλλάξει αυτόματα σε απαίτηση έγκρισης new_appeal: actions: @@ -1284,11 +1284,11 @@ el: confirm: Επιβεβαίωση email details: Τα στοιχεία σας list: Πρόοδος εγγραφής - review: Η αξιολόγησή μας + review: Ο έλεγχος μας rules: Αποδοχή κανόνων providers: - cas: Υπηρεσία Κεντρικής Πιστοποίησης (CAS) - saml: Πρωτόκολλο SAML + cas: CAS + saml: SAML register: Εγγραφή registration_closed: Το %{instance} δεν δέχεται νέα μέλη resend_confirmation: Επανάληψη αποστολής συνδέσμου επιβεβαίωσης @@ -1297,7 +1297,7 @@ el: accept: Αποδοχή back: Πίσω invited_by: 'Μπορείτε να συμμετάσχεις στο %{domain} χάρη στην πρόσκληση που έλαβες από:' - preamble: Αυτά ορίζονται και επιβάλλονται από τους συντονιστές του%{domain}. + preamble: Αυτά ορίζονται και επιβάλλονται από τους συντονιστές του %{domain}. preamble_invited: Πριν συνεχίσεις, παρακαλώ δώσε προσοχή στους βασικούς κανόνες που έχουν οριστεί από τους συντονιστές του %{domain}. read_more: Διαβάστε περισσότερα title: Ορισμένοι βασικοί κανόνες. @@ -1316,7 +1316,7 @@ el: sign_up: manual_review: Οι εγγραφές στο %{domain} περνούν από χειροκίνητο έλεγχο από τους συντονιστές μας. Για να μας βοηθήσεις να επεξεργαστούμε την εγγραφή σου, γράψε λίγα λόγια για τον εαυτό σου και γιατί θέλεις έναν λογαριασμό στο %{domain}. preamble: Με έναν λογαριασμό σ' αυτόν τον διακομιστή Mastodon, θα μπορείς να ακολουθήσεις οποιοδήποτε άλλο άτομο στο δίκτυο, ανεξάρτητα από το πού φιλοξενείται ο λογαριασμός του. - title: Ας ξεκινήσουμε τις ρυθμίσεις στο %{domain}. + title: Ας σε ετοιμάσουμε στο %{domain}. status: account_status: Κατάσταση λογαριασμού confirming: Αναμονή για ολοκλήρωση επιβεβαίωσης του email. @@ -1327,7 +1327,7 @@ el: view_strikes: Προβολή προηγούμενων ποινών εναντίον του λογαριασμού σας too_fast: Η φόρμα υποβλήθηκε πολύ γρήγορα, προσπαθήστε ξανά. use_security_key: Χρήση κλειδιού ασφαλείας - user_agreement_html: Έχω διαβάσει με τους όρους παροχής υπηρεσιών και την πολιτική απορρήτου + user_agreement_html: Έχω διαβάσει και συμφωνώ με τους όρους παροχής υπηρεσιών και την πολιτική απορρήτου user_privacy_agreement_html: Έχω διαβάσει και συμφωνώ με την πολιτική απορρήτου author_attribution: example_title: Δείγμα κειμένου diff --git a/config/locales/et.yml b/config/locales/et.yml index 28c5565388..7935f43ce6 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -1093,7 +1093,7 @@ et: tag_servers_dimension: Populaarseimad serverid tag_servers_measure: erinevat serverit tag_uses_measure: kasutajaid kokku - description_html: Need teemaviited ilmuvad praegu paljudes postitutes, mida su server näeb. See võib aidata su kasutajatel leida seda millest kõige rohkem parajasti räägitakse. Ühtegi teemaviidet ei näidata enne nende heaks kiitmist avalikult. + description_html: Need teemaviited ilmuvad praegu paljudes postitustes, mida su server näeb. Need võivad aidata su kasutajatel leida seda, millest hetkel kõige rohkem räägitakse. Ühtegi teemaviidet ei näidata enne heaks kiitmist avalikult. listable: Võib olla soovitatud no_tag_selected: Silte ei muudetud, kuna ühtegi polnud valitud not_listable: Ei soovitata diff --git a/config/locales/gd.yml b/config/locales/gd.yml index b1c3fdfabb..fce328c2b6 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -1481,6 +1481,12 @@ gd: one: Dèan conaltradh leis a’ phost seo is lorg barrachd coltach ris. other: Dèan conaltradh leis na puist seo is lorg barrachd coltach riutha. two: Dèan conaltradh leis na puist seo is lorg barrachd coltach riutha. + subject: + plural: Postaichean ùra o %{name} + singular: 'Post ùr: “%{excerpt}”' + title: + plural: Postaichean ùra o %{name} + singular: 'Post ùr: “%{excerpt}”' email_subscriptions: active: Gnìomhach confirmations: diff --git a/config/locales/nn.yml b/config/locales/nn.yml index 2dd8886fc8..ecf2d27290 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -1419,6 +1419,41 @@ nn: your_appeal_rejected: Din klage har blitt avvist edit_profile: other: Anna + redesign_body: No kan du gå til profilredigeringssida din direkte frå profilsida. + redesign_button: Gå dit + redesign_title: Ny profilredigering + email_subscription_mailer: + confirmation: + action: Stadfest epostadressa + instructions_to_confirm: Stadfest at du vil ha epostar frå %{name} (@%{acct}) når dei legg ut nye innlegg. + instructions_to_ignore: Viss du ikkje veit kvifor du fekk denne eposten, kan du sletta han. Du kjem ikkje til å abonnera på noko med mindre du klikkar på lenka over. + subject: Stadfest epostadressa di + title: Vil du ha epostoppdateringar frå %{name}? + notification: + create_account: Lag ein Mastodon-konto + footer: + privacy_html: Epostane kjem frå %{domain}, som er ein tenar driven av Mastodon. Les personvernsida for å sjå korleis tenaren bruker personopplysingane dine. + reason_for_email_html: Du får denne eposten fordi du ville ha epostoppdateringar frå %{name}. Vil du ikkje ha fleire slike? Stopp abonnementet + interact_with_this_post: + one: Gjer noko med dette innlegget og oppdag fleire som det. + other: Gjer noko med desse innlegga og oppdag fleire som dei. + subject: + plural: Nye innlegg frå %{name} + singular: 'Nytt innlegg: "%{excerpt}"' + title: + plural: Nye innlegg frå %{name} + singular: 'Nytt innlegg: "%{excerpt}"' + email_subscriptions: + active: Aktiv + confirmations: + show: + changed_your_mind: Ombestemt deg? + success_html: Frå no vil du få epostar når %{name} legg ut nye innlegg. Legg til %{sender} til kontaktane dine så desse epostane ikkje hamnar i søppelposten din. + title: Du er påmeld + unsubscribe: Stopp abonnementet + inactive: Ikkje aktiv + status: Status + subscribers: Abonnentar emoji_styles: auto: Auto native: Innebygd @@ -1788,6 +1823,8 @@ nn: posting_defaults: Innleggsstandarder public_timelines: Offentlege tidsliner privacy: + email_subscriptions: Send innlegg via e-post + email_subscriptions_hint_html: Lag eit skjema for epost-påmelding til profilen din for utlogga brukarar. Når folk skriv inn epostadressa og melder seg på, vil Mastodon senda epostoppdateringar for dei offentlege innlegga dine. hint_html: "Tilpass korleis du vil at andre skal finna profilen og innlegga dine. Mastodon har fleire funksjonar du kan ta i bruk for å få kontakt med eit større publikum. Sjå gjerne gjennom innstillingane slik at du er sikker på at dei passar til deg og din bruk." privacy: Personvern privacy_hint_html: Kontroller kor mykje du vil dela. Folk finn interessante profilar og fine appar ved å sjå gjennom kva andre fylgjer og kva appar dei legg ut innlegg med, men det kan henda du vil gøyma desse opplysingane. @@ -2051,6 +2088,28 @@ nn: resume_app_authorization: Hald fram å godkjenna applikasojnen role_requirement: "%{domain} krev at du set opp tofaktorinnlogging før du kan bruka Mastodon." webauthn: Sikkerhetsnøkler + unsubscriptions: + create: + action: Gå til heimesida til tenaren + email_subscription: + confirmation_html: Du får ikkje fleire epostar frå %{name}. + title: Du har meldt deg av + user: + confirmation_html: Du får ikkje lenger %{type} frå Mastodon på %{domain}. + notification_emails: + favourite: epostar om favorittmarkeringar + follow: epostar om nye fylgjarar + follow_request: epostar om fylgjeførespurnader + mention: epostar om omtaler + reblog: epostar om framhevingar + show: + action: Stopp abonnementet + email_subscription: + confirmation_html: Du får ikkje fleire epostar om når denne brukarkontoen legg ut nye innlegg. + title: Stopp å abonnera på %{name}? + user: + confirmation_html: Du sluttar å få %{type} frå Mastodon på %{domain}. + title: Stopp å abonnera på %{type}? user_mailer: announcement_published: description: 'Styrarane på %{domain} har ei kunngjering:' diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 9e4e1e164a..b7b0d4c609 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -2109,7 +2109,6 @@ ru: subtitle: Ваш аккаунт снова с хорошей репутацией. title: Обжалование одобрено appeal_rejected: - explanation: Апелляция на разблокировку против вашей учетной записи %{strike_date}, которую вы подали на %{appeal_date}, была одобрена. Ваша учетная запись восстановлена. subject: Ваше обжалование от %{date} отклонено subtitle: Ваша апелляция отклонена. title: Обжалование отклонено diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml index bd5d904840..aa2784e0ef 100644 --- a/config/locales/simple_form.el.yml +++ b/config/locales/simple_form.el.yml @@ -10,7 +10,7 @@ el: indexable: Οι δημόσιες αναρτήσεις σου μπορεί να εμφανιστούν στα αποτελέσματα αναζήτησης στο Mastodon. Άτομα που έχουν αλληλεπιδράσει με τις αναρτήσεις σου μπορεί να είναι σε θέση να τις αναζητήσουν όπως και να 'χει. note: 'Μπορείς να @επισημάνεις άλλα άτομα ή #ετικέτες.' show_collections: Οι χρήστες θα είναι σε θέση να περιηγηθούν στα άτομα που ακολουθείς και στους ακόλουθούς σου. Άτομα που ακολουθείς θα βλέπουν ότι τους ακολουθείς όπως και να 'χει. - unlocked: Οι χρήστες θα είναι σε θέση να σε ακολουθήσουν χωρίς να ζητούν έγκριση. Κατάργησε την επιλογή αν θες να αξιολογείς τα αιτήματα ακολούθησης και να επιλέξεις αν θα αποδεχθείς ή απορρίψεις νέους ακόλουθους. + unlocked: Οι χρήστες θα είναι σε θέση να σε ακολουθήσουν χωρίς να ζητούν έγκριση. Κατάργησε την επιλογή αν θες να ελέγχεις τα αιτήματα ακολούθησης και να επιλέγεις αν θα αποδεχθείς ή απορρίψεις νέους ακόλουθους. account_alias: acct: Όρισε το username@domain του λογαριασμού από τον οποίο θέλεις να μετακινηθείς account_migration: @@ -109,7 +109,7 @@ el: status_page_url: Το URL μιας σελίδας όπου κάποιος μπορεί να δει την κατάσταση αυτού του διακομιστή κατά τη διάρκεια μιας διακοπής λειτουργίας theme: Θέμα που βλέπουν αποσυνδεδεμένοι επισκέπτες ή νέοι χρήστες. thumbnail: Μια εικόνα περίπου 2:1 που εμφανίζεται παράλληλα με τις πληροφορίες του διακομιστή σου. - trendable_by_default: Παράλειψη χειροκίνητης αξιολόγησης του περιεχομένου σε τάση. Μεμονωμένα στοιχεία μπορούν ακόμη να αφαιρεθούν από τις τάσεις μετέπειτα. + trendable_by_default: Παράλειψη χειροκίνητου ελέγχου του περιεχομένου σε τάση. Μεμονωμένα στοιχεία μπορούν ακόμη να αφαιρεθούν από τις τάσεις μετέπειτα. trends: Τάσεις δείχνουν ποιες αναρτήσεις, ετικέτες και ειδήσεις προκαλούν έλξη στο διακομιστή σας. wrapstodon: Πρόσφερε στους τοπικούς χρήστες τη δυνατότητα να δημιουργήσουν μια παιχνιδιάρικη σύνοψη της χρήσης τους του Mastodon κατά τη διάρκεια του έτους. Αυτή η λειτουργία είναι διαθέσιμη μεταξύ της 10ης και της 31ης Δεκεμβρίου κάθε έτους, και προσφέρεται σε χρήστες που έκαναν τουλάχιστον μία δημόσια ή ήσυχα δημόσια ανάρτηση και χρησιμοποίησαν τουλάχιστον μία ετικέτα εντός του έτους. form_challenge: @@ -157,7 +157,7 @@ el: chosen_languages: Όταν ενεργοποιηθεί, μόνο αναρτήσεις σε επιλεγμένες γλώσσες θα εμφανίζονται στις δημόσιες ροές. Αυτή η ρύθμιση δεν επηρεάζει την Αρχική ροή και τις λίστες σας. date_of_birth: one: Πρέπει να βεβαιωθούμε ότι είσαι τουλάχιστον %{count} για να χρησιμοποιήσεις το %{domain}. Δε θα το αποθηκεύσουμε. - other: Πρέπει να βεβαιωθούμε ότι είσαι τουλάχιστον %{count} για να χρησιμοποιήσεις τα %{domain}. Δε θα το αποθηκεύσουμε. + other: Πρέπει να βεβαιωθούμε ότι είσαι τουλάχιστον %{count} για να χρησιμοποιήσεις το %{domain}. Δε θα το αποθηκεύσουμε. role: Ο ρόλος ελέγχει ποια δικαιώματα έχει ο χρήστης. user_role: color: Το χρώμα που θα χρησιμοποιηθεί για το ρόλο σε ολόκληρη τη διεπαφή, ως RGB σε δεκαεξαδική μορφή diff --git a/config/locales/simple_form.et.yml b/config/locales/simple_form.et.yml index fa98e29615..8dc11f8019 100644 --- a/config/locales/simple_form.et.yml +++ b/config/locales/simple_form.et.yml @@ -77,7 +77,7 @@ et: domain: See võib olla e-postiaadressis näha olev domeen või MX-kirje, mida aadress kasutab. Kontroll toimub liitumise käigus. with_dns_records: Püütakse lahendada selle domeeni DNS-kirjed ja ühtlasi blokeerida ka selle tulemused featured_tag: - name: 'Siin on mõned nendest teemaviiteid, mida oled viimati kasutanud:' + name: 'Siin on mõned neist teemaviidetest, mida oled viimati kasutanud:' filters: action: Vali tegevus, kui postitus vastab filtrile actions: @@ -111,7 +111,7 @@ et: thumbnail: Umbes 2:1 mõõdus pilt serveri informatsiooni kõrval. trendable_by_default: Populaarse sisu ülevaatuse vahele jätmine. Pärast seda on siiski võimalik üksikuid üksusi trendidest eemaldada. trends: Trendid näitavad, millised postitused, teemaviited ja uudislood koguvad sinu serveris tähelepanu. - wrapstodon: Paku kohalikele kasutajatele luua nende Mastodoni kasutamise aastast mänguline kokkuvõte. See võimalus on saadaval igal aastal 10. ja 31. detsembri vahel ja seda pakutakse kasutajatele, kes tegid vähemalt ühe avaliku või vaikse avaliku postituse ja kes kasutas aasta jooksul vähemalt ühte silti. + wrapstodon: Paku kohalikele kasutajatele luua nende Mastodoni kasutamise aastast mänguline kokkuvõte. See võimalus on saadaval igal aastal 10. ja 31. detsembri vahel ja seda pakutakse kasutajatele, kes tegid vähemalt ühe avaliku või vaikse avaliku postituse ja kes kasutas aasta jooksul vähemalt ühte teemaviidet. form_challenge: current_password: Sisened turvalisse alasse imports: diff --git a/config/locales/simple_form.gd.yml b/config/locales/simple_form.gd.yml index b78980bbe0..de49d6be6d 100644 --- a/config/locales/simple_form.gd.yml +++ b/config/locales/simple_form.gd.yml @@ -154,6 +154,7 @@ gd: jurisdiction: Innis an dùthaich far a bheil an neach a phàigheas na bilichean a’ fuireach. Mas e companaidh no eintiteas eile a th’ ann, innis an dùthaich far a bheil e corpaichte agus am baile, sgìre, ranntair no stàit mar a tha iomchaidh. min_age: Cha bu chòir seo a bhith fon aois as lugha a dh’iarras laghain an t-uachdranais laghail agad. user: + chosen_languages: Nuair a bhios cromag ris, cha nochd ach postaichean sna cànain a thagh thu air loidhnichean-ama poblach. Cha doir an roghainn seo buaidh air loidhne-ama na dachaighe no air na liostaichean agad. date_of_birth: few: Feumaidh sinn dèanamh cinnteach gu bheil thu %{count} bliadhnaichean a dh’aois air a char as lugha mus cleachd thu %{domain}. Cha chlàraich sinn seo. one: Feumaidh sinn dèanamh cinnteach gu bheil thu %{count} bhliadhna a dh’aois air a char as lugha mus cleachd thu %{domain}. Cha chlàraich sinn seo. diff --git a/config/locales/simple_form.is.yml b/config/locales/simple_form.is.yml index 674ef16d4f..d7bd5f8f5d 100644 --- a/config/locales/simple_form.is.yml +++ b/config/locales/simple_form.is.yml @@ -185,9 +185,9 @@ is: show_collections: Birta fylgjendur og þá sem fylgst er með í notandasniði unlocked: Samþykkja nýja fylgjendur sjálfkrafa account_alias: - acct: Auðkenni gamla aðgangsins + acct: Kennislóð gamla aðgangsins account_migration: - acct: Auðkenni nýja aðgangsins + acct: Kennislóð nýja aðgangsins account_warning_preset: text: Forstilltur texti title: Titill diff --git a/config/locales/simple_form.nn.yml b/config/locales/simple_form.nn.yml index 727930b756..64714d55b3 100644 --- a/config/locales/simple_form.nn.yml +++ b/config/locales/simple_form.nn.yml @@ -134,6 +134,7 @@ nn: otp: Angi tofaktorkoden fra din telefon eller bruk en av dine gjenopprettingskoder. webauthn: Om det er ein USB-nøkkel må du setja han inn og om nødvendig trykkja på han. settings: + email_subscriptions: Viss du skrir av, vil du ha abonnentane du har no, men dei får ikkje fleire epostar. indexable: Profilsida di kan dukka opp søkjeresultat frå Google, Bing, Duckduckgo og andre. show_application: Du vil uansett alltid kunna sjå kva app som la ut innlegga dine. tag: @@ -153,6 +154,7 @@ nn: jurisdiction: Skriv kva land den som betaler rekningane bur i. Viss det er eit firma eller ein annan organisasjon, skriv du landet der organisasjonen held til, samt adressa som trengst. min_age: Skal ikkje vere under minstealder som krevst av lover i jurisdiksjonen din. user: + chosen_languages: Viss du vel dette, vil du berre sjå innlegg på dei valde språka på offentlege tidsliner. Denne innstillinga påverkar ikkje heimetidslina eller listene dine. date_of_birth: one: Me må sikra oss at du er minst %{count} for å bruka %{domain}. Me lagrar ikkje dette. other: Me må sikra oss at du er minst %{count} for å bruka %{domain}. Me lagrar ikkje dette. @@ -355,6 +357,7 @@ nn: hint: Meir informasjon text: Regel settings: + email_subscriptions: Skru på epostregistrering indexable: Ta med profilsida i søkjemotorar show_application: Vis kva app du brukte når du skreiv innlegg tag: diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 6b481ccca7..a3becf58bd 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -12,6 +12,9 @@ sv: followers: one: Följare other: Följare + following: + one: Följer + other: Följer instance_actor_flash: Detta konto är en virtuell aktör som används för att representera servern i sig och inte någon enskild användare. Den används för federeringsändamål och bör inte stängas av. last_active: senast aktiv link_verified_on: Ägarskap för denna länk kontrollerades den %{date} @@ -759,6 +762,7 @@ sv: categories: administration: Administration devops: DevOps + email: E-post invites: Inbjudningar moderation: Moderering special: Särskild @@ -787,6 +791,8 @@ sv: manage_blocks_description: Tillåter användare att blockera e-postleverantörer och IP-adresser manage_custom_emojis: Hantera egna emojier manage_custom_emojis_description: Tillåter användare att hantera egna emojier på servern + manage_email_subscriptions: Hantera e-postprenumerationer + manage_email_subscriptions_description: Tillåt användare att prenumerera på användare med denna behörighet via e-post manage_federation: Hantera federering manage_federation_description: Tillåter användare att blockera eller tillåta federering med andra domäner, samt kontrollera levererbarhet manage_invites: Hantera inbjudningar @@ -1413,8 +1419,18 @@ sv: your_appeal_rejected: Din överklagan har avvisats edit_profile: other: Övrigt + redesign_body: Profilredigering kan nu nås direkt från profilsidan. + redesign_button: Gå dit + redesign_title: Det finns en ny profilredigeringsupplevelse email_subscription_mailer: + confirmation: + action: Bekräfta e-postadress + instructions_to_confirm: Bekräfta att du vill ta emot e-post från %{name} (@%{acct}) när de publicerar nya inlägg. + instructions_to_ignore: Om du inte är säker på varför du fick detta e-postmeddelande kan du radera det. Du kommer inte att prenumerera om du inte klickar på länken ovan. + subject: Bekräfta din e-postadress + title: Få e-postuppdateringar från %{name}? notification: + create_account: Skapa ett Mastodon-konto subject: plural: Nya inlägg från %{name} singular: 'Nytt inlägg: "%{excerpt}"' From f5975896957c1330eea3d46b19c7afc6bc814840 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 Apr 2026 10:53:02 +0200 Subject: [PATCH 03/20] chore(deps): update dependency lodash to v4.18.1 [security] (#38526) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 47d0806101..325c05a4a6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9860,9 +9860,9 @@ __metadata: linkType: hard "lodash@npm:^4.17.20, lodash@npm:^4.17.21": - version: 4.17.23 - resolution: "lodash@npm:4.17.23" - checksum: 10c0/1264a90469f5bb95d4739c43eb6277d15b6d9e186df4ac68c3620443160fc669e2f14c11e7d8b2ccf078b81d06147c01a8ccced9aab9f9f63d50dcf8cace6bf6 + version: 4.18.1 + resolution: "lodash@npm:4.18.1" + checksum: 10c0/757228fc68805c59789e82185135cf85f05d0b2d3d54631d680ca79ec21944ec8314d4533639a14b8bcfbd97a517e78960933041a5af17ecb693ec6eecb99a27 languageName: node linkType: hard From 4299e33389c3e6d4b229c7bc25510d4abe779e97 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 8 Apr 2026 05:04:16 -0400 Subject: [PATCH 04/20] Update vite to version 8.0.5 (#38591) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- app/javascript/mastodon/polyfills/index.ts | 1 - yarn.lock | 8 ++++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/app/javascript/mastodon/polyfills/index.ts b/app/javascript/mastodon/polyfills/index.ts index 00da2042ed..30049a77c3 100644 --- a/app/javascript/mastodon/polyfills/index.ts +++ b/app/javascript/mastodon/polyfills/index.ts @@ -32,7 +32,6 @@ async function loadEmojiPolyfills() { // Loads Vite's module preload polyfill for older browsers, but not in a Worker context. function loadVitePreloadPolyfill() { if (typeof document === 'undefined') return; - // @ts-expect-error -- This is a virtual module provided by Vite. // eslint-disable-next-line import/extensions return import('vite/modulepreload-polyfill'); } diff --git a/yarn.lock b/yarn.lock index 325c05a4a6..0712dbbf14 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14741,8 +14741,8 @@ __metadata: linkType: hard "vite@npm:^6.0.0 || ^7.0.0 || ^8.0.0-0, vite@npm:^8.0.0": - version: 8.0.3 - resolution: "vite@npm:8.0.3" + version: 8.0.5 + resolution: "vite@npm:8.0.5" dependencies: fsevents: "npm:~2.3.3" lightningcss: "npm:^1.32.0" @@ -14753,7 +14753,7 @@ __metadata: peerDependencies: "@types/node": ^20.19.0 || >=22.12.0 "@vitejs/devtools": ^0.1.0 - esbuild: ^0.27.0 + esbuild: ^0.27.0 || ^0.28.0 jiti: ">=1.21.0" less: ^4.0.0 sass: ^1.70.0 @@ -14793,7 +14793,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 10c0/bed9520358080393a02fe22565b3309b4b3b8f916afe4c97577528f3efb05c1bf4b29f7b552179bc5b3938629e50fbd316231727457411dbc96648fa5c9d14bf + checksum: 10c0/bfc22896b2661753c01c398a058f1859bdbd3ebe55f3d8505ab629b39e5f68790c0a6f55f8644b6692b0b9b8e210f698082ef9f4fd0d76509f4a46762fbfbba2 languageName: node linkType: hard From c155e0d58bbb9351a2f92be07663028de91ba4bb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 Apr 2026 11:21:03 +0200 Subject: [PATCH 05/20] chore(deps): update dependency jsdom to v29.0.2 (#38574) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/yarn.lock b/yarn.lock index 0712dbbf14..eeb613b94e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -39,29 +39,27 @@ __metadata: languageName: node linkType: hard -"@asamuzakjp/css-color@npm:^5.0.1": - version: 5.0.1 - resolution: "@asamuzakjp/css-color@npm:5.0.1" +"@asamuzakjp/css-color@npm:^5.1.5": + version: 5.1.6 + resolution: "@asamuzakjp/css-color@npm:5.1.6" dependencies: "@csstools/css-calc": "npm:^3.1.1" "@csstools/css-color-parser": "npm:^4.0.2" "@csstools/css-parser-algorithms": "npm:^4.0.0" "@csstools/css-tokenizer": "npm:^4.0.0" - lru-cache: "npm:^11.2.6" - checksum: 10c0/3e8d74a3b7f3005a325cb8e7f3da1aa32aeac4cd9ce387826dc25b16eaab4dc0e4a6faded8ccc1895959141f4a4a70e8bc38723347b89667b7b224990d16683c + checksum: 10c0/8f8bf78df9dd91b5cb296f64308ab1148a17f644d3f5bed2b4000bd2f53eb4f8c914e2e91134b67fcb2843718fe73e975b906a14fca81ee24fb8b2f974677311 languageName: node linkType: hard -"@asamuzakjp/dom-selector@npm:^7.0.3": - version: 7.0.3 - resolution: "@asamuzakjp/dom-selector@npm:7.0.3" +"@asamuzakjp/dom-selector@npm:^7.0.6": + version: 7.0.7 + resolution: "@asamuzakjp/dom-selector@npm:7.0.7" dependencies: "@asamuzakjp/nwsapi": "npm:^2.3.9" bidi-js: "npm:^1.0.3" css-tree: "npm:^3.2.1" is-potential-custom-element-name: "npm:^1.0.1" - lru-cache: "npm:^11.2.7" - checksum: 10c0/c64b06a23479970ded4f38bec34069e98f4062b4ecb798b81b1fc37b5472ec6110d5bd9d8a267bfc431503f6ee3080c2e94eb3d99e30aaa1b6d9f83fbd2744fa + checksum: 10c0/f3e7de930c9cf69778db62dc166962bfbafdf6b35be9c905d6ab957f4c06bfdc9a72124a58bf5460e0112179bb883a45df06ded3a203bd232fb3ae372f35f5a5 languageName: node linkType: hard @@ -9371,11 +9369,11 @@ __metadata: linkType: hard "jsdom@npm:^29.0.0": - version: 29.0.1 - resolution: "jsdom@npm:29.0.1" + version: 29.0.2 + resolution: "jsdom@npm:29.0.2" dependencies: - "@asamuzakjp/css-color": "npm:^5.0.1" - "@asamuzakjp/dom-selector": "npm:^7.0.3" + "@asamuzakjp/css-color": "npm:^5.1.5" + "@asamuzakjp/dom-selector": "npm:^7.0.6" "@bramus/specificity": "npm:^2.4.2" "@csstools/css-syntax-patches-for-csstree": "npm:^1.1.1" "@exodus/bytes": "npm:^1.15.0" @@ -9400,7 +9398,7 @@ __metadata: peerDependenciesMeta: canvas: optional: true - checksum: 10c0/f8eeadc9bb45fb5736501f855b5f8247c9eadcd7f52ef2e11677c3a2197284051b4623004889543eb9613ecdfb47ddb5405b822d9623b0524edd901288cc361d + checksum: 10c0/a325324117932de83d13f00c74ff91a5f6b4bbbf11f45e7e31189fea06d007f764aac286dad80f643430c81b618b9fb20eac1ef03f120cec4c68df271e7547e2 languageName: node linkType: hard @@ -9913,7 +9911,7 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^11.0.0, lru-cache@npm:^11.2.6, lru-cache@npm:^11.2.7": +"lru-cache@npm:^11.0.0, lru-cache@npm:^11.2.7": version: 11.2.7 resolution: "lru-cache@npm:11.2.7" checksum: 10c0/549cdb59488baa617135fc12159cafb1a97f91079f35093bb3bcad72e849fc64ace636d244212c181dfdf1a99bbfa90757ff303f98561958ee4d0f885d9bd5f7 From efea53e7a34ab736f70be9cbcf91d783bb4835f5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 Apr 2026 11:21:08 +0200 Subject: [PATCH 06/20] chore(deps): update dependency sass to v1.99.0 (#38554) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index eeb613b94e..a3ff3fa792 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12837,8 +12837,8 @@ __metadata: linkType: hard "sass@npm:^1.62.1, sass@npm:^1.70.0": - version: 1.98.0 - resolution: "sass@npm:1.98.0" + version: 1.99.0 + resolution: "sass@npm:1.99.0" dependencies: "@parcel/watcher": "npm:^2.4.1" chokidar: "npm:^4.0.0" @@ -12849,7 +12849,7 @@ __metadata: optional: true bin: sass: sass.js - checksum: 10c0/9e91daa20f970fefb364ac31289f070636da7aa7eaeb43e371ea98fa98085a6dbc2d3d058504226a02d07717faf0a4ce8d41b579ecb428c4a9d96b4dc1944a95 + checksum: 10c0/83c54a8c6decb79fff50dd9500d7932cf1cb7c5d9be4bc42bd3d537402c37bbee062aea6efdbdf9fb0b8697b18177d60c72bf101872336b93b1c27a2dc3621e1 languageName: node linkType: hard From b4d597af936998dad5c45eb30c5072230cc4c05f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 Apr 2026 09:23:09 +0000 Subject: [PATCH 07/20] chore(deps): update dependency dotenv to v17.4.1 (#38524) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index a3ff3fa792..4cabbbd5ec 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6905,9 +6905,9 @@ __metadata: linkType: hard "dotenv@npm:^17.0.0": - version: 17.3.1 - resolution: "dotenv@npm:17.3.1" - checksum: 10c0/c78e0c2d5a549c751e544cc60e2b95e7cb67e0c551f42e094d161c6b297aa44b630a3c2dcacf5569e529a6c2a6b84e2ab9be8d37b299d425df5a18b81ce4a35f + version: 17.4.1 + resolution: "dotenv@npm:17.4.1" + checksum: 10c0/eb6ae592ee1e8f6b7f62e0f0c2827c4f27bbe9e00abe9d7910e06456e63dccd42f011de94da9450a63c07ccc52c318f527c1b56ad8e2c81a1a16314b53d4fd99 languageName: node linkType: hard From 7b0da9bb4eb489f6a6fb6f7cc79adf1be0d5e956 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 Apr 2026 11:30:54 +0200 Subject: [PATCH 08/20] chore(deps): update dependency addressable to v2.9.0 [security] (#38600) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index e8dbaad831..cafdda0191 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -89,7 +89,7 @@ GEM securerandom (>= 0.3) tzinfo (~> 2.0, >= 2.0.5) uri (>= 0.13.1) - addressable (2.8.9) + addressable (2.9.0) public_suffix (>= 2.0.2, < 8.0) aes_key_wrap (1.1.0) android_key_attestation (0.3.0) From 890452f54ade8291755d92911ec07de7721587a8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 Apr 2026 09:32:45 +0000 Subject: [PATCH 09/20] fix(deps): update dependency @vitejs/plugin-react to v6 (#38180) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 63 +++++++++++++++------------------------------------- 2 files changed, 19 insertions(+), 46 deletions(-) diff --git a/package.json b/package.json index e5fb60017b..94154294bf 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "@rolldown/plugin-babel": "^0.2.2", "@use-gesture/react": "^10.3.1", "@vitejs/plugin-legacy": "^8.0.0", - "@vitejs/plugin-react": "^5.0.0", + "@vitejs/plugin-react": "^6.0.0", "arrow-key-navigation": "^1.2.0", "async-mutex": "^0.5.0", "axios": "^1.4.0", diff --git a/yarn.lock b/yarn.lock index 4cabbbd5ec..dc997e78a8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -902,28 +902,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-self@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-react-jsx-self@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/00a4f917b70a608f9aca2fb39aabe04a60aa33165a7e0105fd44b3a8531630eb85bf5572e9f242f51e6ad2fa38c2e7e780902176c863556c58b5ba6f6e164031 - languageName: node - linkType: hard - -"@babel/plugin-transform-react-jsx-source@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-react-jsx-source@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/5e67b56c39c4d03e59e03ba80692b24c5a921472079b63af711b1d250fc37c1733a17069b63537f750f3e937ec44a42b1ee6a46cd23b1a0df5163b17f741f7f2 - languageName: node - linkType: hard - "@babel/plugin-transform-regenerator@npm:^7.29.0": version: 7.29.0 resolution: "@babel/plugin-transform-regenerator@npm:7.29.0" @@ -2875,7 +2853,7 @@ __metadata: "@types/requestidlecallback": "npm:^0.3.5" "@use-gesture/react": "npm:^10.3.1" "@vitejs/plugin-legacy": "npm:^8.0.0" - "@vitejs/plugin-react": "npm:^5.0.0" + "@vitejs/plugin-react": "npm:^6.0.0" "@vitest/browser": "npm:^4.1.0" "@vitest/browser-playwright": "npm:^4.1.0" "@vitest/coverage-v8": "npm:^4.1.0" @@ -3871,10 +3849,10 @@ __metadata: languageName: node linkType: hard -"@rolldown/pluginutils@npm:1.0.0-rc.3": - version: 1.0.0-rc.3 - resolution: "@rolldown/pluginutils@npm:1.0.0-rc.3" - checksum: 10c0/3928b6282a30f307d1b075d2f217180ae173ea9e00638ce46ab65f089bd5f7a0b2c488ae1ce530f509387793c656a2910337c4cd68fa9d37d7e439365989e699 +"@rolldown/pluginutils@npm:1.0.0-rc.7": + version: 1.0.0-rc.7 + resolution: "@rolldown/pluginutils@npm:1.0.0-rc.7" + checksum: 10c0/9d5490b5805b25bcd1720ca01c4c032b55a0ef953dab36a8dd42c568e82214576baa464f3027cd5dff3fabcfbe3bf3db2251d12b60220f5d1cd2ffde5ee37082 languageName: node linkType: hard @@ -5219,19 +5197,21 @@ __metadata: languageName: node linkType: hard -"@vitejs/plugin-react@npm:^5.0.0": - version: 5.2.0 - resolution: "@vitejs/plugin-react@npm:5.2.0" +"@vitejs/plugin-react@npm:^6.0.0": + version: 6.0.1 + resolution: "@vitejs/plugin-react@npm:6.0.1" dependencies: - "@babel/core": "npm:^7.29.0" - "@babel/plugin-transform-react-jsx-self": "npm:^7.27.1" - "@babel/plugin-transform-react-jsx-source": "npm:^7.27.1" - "@rolldown/pluginutils": "npm:1.0.0-rc.3" - "@types/babel__core": "npm:^7.20.5" - react-refresh: "npm:^0.18.0" + "@rolldown/pluginutils": "npm:1.0.0-rc.7" peerDependencies: - vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 10c0/bac0a409e71eee954a05bc41580411c369bd5f9ef0586a1f9743fba76ad6603c437d93d407d230780015361f93d1592c55e53314813cded6369c36d3c1e8edbf + "@rolldown/plugin-babel": ^0.1.7 || ^0.2.0 + babel-plugin-react-compiler: ^1.0.0 + vite: ^8.0.0 + peerDependenciesMeta: + "@rolldown/plugin-babel": + optional: true + babel-plugin-react-compiler: + optional: true + checksum: 10c0/6c42f53a970cb6b0776ba5b4203bb01690ac564c56fca706d4037b50aec965ddc0f11530ab58ab2cd0fbe8c12e14cff6966b22d90391283b4a53294e3ddd478d languageName: node linkType: hard @@ -12148,13 +12128,6 @@ __metadata: languageName: node linkType: hard -"react-refresh@npm:^0.18.0": - version: 0.18.0 - resolution: "react-refresh@npm:0.18.0" - checksum: 10c0/34a262f7fd803433a534f50deb27a148112a81adcae440c7d1cbae7ef14d21ea8f2b3d783e858cb7698968183b77755a38b4d4b5b1d79b4f4689c2f6d358fff2 - languageName: node - linkType: hard - "react-router-dom@npm:^5.3.4": version: 5.3.4 resolution: "react-router-dom@npm:5.3.4" From f091e7050c50bd9ea682adb05917b4582abfe07e Mon Sep 17 00:00:00 2001 From: diondiondion Date: Wed, 8 Apr 2026 12:24:42 +0200 Subject: [PATCH 10/20] Fix gap in profile fields layout (#38604) --- .../mastodon/features/account_timeline/components/fields.tsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/javascript/mastodon/features/account_timeline/components/fields.tsx b/app/javascript/mastodon/features/account_timeline/components/fields.tsx index aa12447304..63e62c97af 100644 --- a/app/javascript/mastodon/features/account_timeline/components/fields.tsx +++ b/app/javascript/mastodon/features/account_timeline/components/fields.tsx @@ -285,11 +285,14 @@ function useColumnWrap() { if (!item) { break; } + const { ele, span } = item; + if (i < row.length - 1) { ele.dataset.cols = span.toString(); remainingRowSpan -= span; } else if ( + row.length > 1 && row.length === halfColSpan && span === 1 && remainingRowSpan > 1 From 99a219036f36cbba20b6f862e6cc956526497f8d Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 8 Apr 2026 13:24:44 +0200 Subject: [PATCH 11/20] Fix new profile dropdown blocking without confirmation modal (#38605) --- .../mastodon/features/account_timeline/components/menu.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/features/account_timeline/components/menu.tsx b/app/javascript/mastodon/features/account_timeline/components/menu.tsx index 24ef091297..474a95630b 100644 --- a/app/javascript/mastodon/features/account_timeline/components/menu.tsx +++ b/app/javascript/mastodon/features/account_timeline/components/menu.tsx @@ -4,7 +4,6 @@ import type { FC } from 'react'; import { defineMessages, useIntl } from 'react-intl'; import { - blockAccount, followAccount, pinAccount, unblockAccount, @@ -13,6 +12,7 @@ import { } from '@/mastodon/actions/accounts'; import { removeAccountFromFollowers } from '@/mastodon/actions/accounts_typed'; import { showAlert } from '@/mastodon/actions/alerts'; +import { initBlockModal } from '@/mastodon/actions/blocks'; import { directCompose, mentionCompose } from '@/mastodon/actions/compose'; import { initDomainBlockModal, @@ -435,7 +435,7 @@ function redesignMenuItems({ if (relationship?.blocking) { dispatch(unblockAccount(account.id)); } else { - dispatch(blockAccount(account.id)); + dispatch(initBlockModal(account)); } }, dangerous: true, From df64716b3407cc423cd261126350ed238206febd Mon Sep 17 00:00:00 2001 From: diondiondion Date: Wed, 8 Apr 2026 14:21:07 +0200 Subject: [PATCH 12/20] Rename CSS classes for profile redesign (#38606) --- .../components/account_header.tsx | 32 +++++++------------ .../components/account_name.tsx | 2 +- .../components/account_subscription_form.tsx | 2 +- .../account_timeline/components/fields.tsx | 2 +- .../account_timeline/components/menu.tsx | 6 ++-- .../account_timeline/components/note.tsx | 2 +- ...edesign.module.scss => styles.module.scss} | 0 .../account_timeline/components/tabs.tsx | 2 +- 8 files changed, 19 insertions(+), 29 deletions(-) rename app/javascript/mastodon/features/account_timeline/components/{redesign.module.scss => styles.module.scss} (100%) diff --git a/app/javascript/mastodon/features/account_timeline/components/account_header.tsx b/app/javascript/mastodon/features/account_timeline/components/account_header.tsx index e13d0dee9e..b4b159f8eb 100644 --- a/app/javascript/mastodon/features/account_timeline/components/account_header.tsx +++ b/app/javascript/mastodon/features/account_timeline/components/account_header.tsx @@ -27,9 +27,9 @@ import { FamiliarFollowers } from './familiar_followers'; import { AccountHeaderFields } from './fields'; import { MemorialNote } from './memorial_note'; import { MovedNote } from './moved_note'; -import { AccountNote as AccountNoteRedesign } from './note'; +import { AccountNote } from './note'; import { AccountNumberFields } from './number_fields'; -import redesignClasses from './redesign.module.scss'; +import classes from './styles.module.scss'; import { AccountTabs } from './tabs'; const titleFromAccount = (account: Account) => { @@ -111,12 +111,7 @@ export const AccountHeader: React.FC<{ )} -
+
{!suspendedOrHidden && ( -
+
@@ -180,7 +170,7 @@ export const AccountHeader: React.FC<{
{me && account.id !== me && ( - + )} @@ -203,8 +193,8 @@ export const AccountHeader: React.FC<{ = ({ accountId }) => { const intl = useIntl(); @@ -61,7 +61,7 @@ export const AccountMenu: FC<{ accountId: string }> = ({ accountId }) => { return []; } - return redesignMenuItems({ + return getMenuItems({ account, signedIn: !isMe && signedIn, permissions, @@ -223,7 +223,7 @@ const redesignMessages = defineMessages({ }, }); -function redesignMenuItems({ +function getMenuItems({ account, signedIn, permissions, diff --git a/app/javascript/mastodon/features/account_timeline/components/note.tsx b/app/javascript/mastodon/features/account_timeline/components/note.tsx index b344e81d6b..6bd727791a 100644 --- a/app/javascript/mastodon/features/account_timeline/components/note.tsx +++ b/app/javascript/mastodon/features/account_timeline/components/note.tsx @@ -10,7 +10,7 @@ import { IconButton } from '@/mastodon/components/icon_button'; import { useAppDispatch, useAppSelector } from '@/mastodon/store'; import EditIcon from '@/material-icons/400-24px/edit_square.svg?react'; -import classes from './redesign.module.scss'; +import classes from './styles.module.scss'; const messages = defineMessages({ title: { diff --git a/app/javascript/mastodon/features/account_timeline/components/redesign.module.scss b/app/javascript/mastodon/features/account_timeline/components/styles.module.scss similarity index 100% rename from app/javascript/mastodon/features/account_timeline/components/redesign.module.scss rename to app/javascript/mastodon/features/account_timeline/components/styles.module.scss diff --git a/app/javascript/mastodon/features/account_timeline/components/tabs.tsx b/app/javascript/mastodon/features/account_timeline/components/tabs.tsx index 05dbdb5a80..fc66c39831 100644 --- a/app/javascript/mastodon/features/account_timeline/components/tabs.tsx +++ b/app/javascript/mastodon/features/account_timeline/components/tabs.tsx @@ -10,7 +10,7 @@ import { useAccountId } from '@/mastodon/hooks/useAccountId'; import { areCollectionsEnabled } from '../../collections/utils'; -import classes from './redesign.module.scss'; +import classes from './styles.module.scss'; const isActive: Required['isActive'] = (match, location) => match?.url === location.pathname || From 39c70649caf8237996b7acb2535c7c1b49c4c78a Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 8 Apr 2026 14:56:07 +0200 Subject: [PATCH 13/20] Add `added_to_collection` and `collection_updated` notification types (#38491) --- .../mastodon/api_types/notifications.ts | 35 ++++++++++-- .../mastodon/models/notification_group.ts | 22 +++++++- .../activitypub/activity/feature_request.rb | 5 ++ app/models/notification.rb | 14 ++++- .../rest/notification_group_serializer.rb | 7 ++- .../rest/notification_serializer.rb | 7 ++- .../process_featured_collection_service.rb | 5 ++ .../add_account_to_collection_service.rb | 5 ++ .../notify_of_collection_update_service.rb | 21 ++++++++ app/services/notify_service.rb | 11 +--- app/services/update_collection_service.rb | 5 ++ app/workers/local_notification_worker.rb | 6 +-- .../activity/feature_request_spec.rb | 5 +- spec/lib/activitypub/activity/update_spec.rb | 54 +++++++++++++++---- .../add_account_to_collection_service_spec.rb | 9 +++- .../update_collection_service_spec.rb | 19 +++---- 16 files changed, 183 insertions(+), 47 deletions(-) create mode 100644 app/services/notify_of_collection_update_service.rb diff --git a/app/javascript/mastodon/api_types/notifications.ts b/app/javascript/mastodon/api_types/notifications.ts index d698a1a699..4836c37e6a 100644 --- a/app/javascript/mastodon/api_types/notifications.ts +++ b/app/javascript/mastodon/api_types/notifications.ts @@ -3,6 +3,7 @@ import type { AccountWarningAction } from 'mastodon/models/notification_group'; import type { ApiAccountJSON } from './accounts'; +import type { ApiCollectionJSON } from './collections'; import type { ApiReportJSON } from './reports'; import type { ApiStatusJSON } from './statuses'; @@ -22,6 +23,8 @@ export const allNotificationTypes: NotificationType[] = [ 'moderation_warning', 'severed_relationships', 'annual_report', + 'added_to_collection', + 'collection_update', ]; export type NotificationWithStatusType = @@ -42,7 +45,9 @@ export type NotificationType = | 'severed_relationships' | 'admin.sign_up' | 'admin.report' - | 'annual_report'; + | 'annual_report' + | 'added_to_collection' + | 'collection_update'; export interface BaseNotificationJSON { id: string; @@ -83,6 +88,26 @@ interface ReportNotificationJSON extends BaseNotificationJSON { report: ApiReportJSON; } +interface AddedToCollectionNotificationGroupJSON extends BaseNotificationGroupJSON { + type: 'added_to_collection'; + collection: ApiCollectionJSON; +} + +interface AddedToCollectionNotificationJSON extends BaseNotificationJSON { + type: 'added_to_collection'; + collection: ApiCollectionJSON; +} + +interface CollectionUpdateNotificationGroupJSON extends BaseNotificationGroupJSON { + type: 'collection_update'; + collection: ApiCollectionJSON; +} + +interface CollectionUpdateNotificationJSON extends BaseNotificationJSON { + type: 'collection_update'; + collection: ApiCollectionJSON; +} + type SimpleNotificationTypes = 'follow' | 'follow_request' | 'admin.sign_up'; interface SimpleNotificationGroupJSON extends BaseNotificationGroupJSON { type: SimpleNotificationTypes; @@ -146,7 +171,9 @@ export type ApiNotificationJSON = | ReportNotificationJSON | AccountRelationshipSeveranceNotificationJSON | NotificationWithStatusJSON - | ModerationWarningNotificationJSON; + | ModerationWarningNotificationJSON + | AddedToCollectionNotificationJSON + | CollectionUpdateNotificationJSON; export type ApiNotificationGroupJSON = | SimpleNotificationGroupJSON @@ -154,7 +181,9 @@ export type ApiNotificationGroupJSON = | AccountRelationshipSeveranceNotificationGroupJSON | NotificationGroupWithStatusJSON | ModerationWarningNotificationGroupJSON - | AnnualReportNotificationGroupJSON; + | AnnualReportNotificationGroupJSON + | AddedToCollectionNotificationGroupJSON + | CollectionUpdateNotificationGroupJSON; export interface ApiNotificationGroupsResultJSON { accounts: ApiAccountJSON[]; diff --git a/app/javascript/mastodon/models/notification_group.ts b/app/javascript/mastodon/models/notification_group.ts index bb8799c0ec..bfb89d894e 100644 --- a/app/javascript/mastodon/models/notification_group.ts +++ b/app/javascript/mastodon/models/notification_group.ts @@ -10,6 +10,8 @@ import type { } from 'mastodon/api_types/notifications'; import type { ApiReportJSON } from 'mastodon/api_types/reports'; +import type { ApiCollectionJSON } from '../api_types/collections'; + // Maximum number of avatars displayed in a notification group // This corresponds to the max length of `group.sampleAccountIds` export const NOTIFICATIONS_GROUP_MAX_AVATARS = 8; @@ -87,6 +89,15 @@ export interface NotificationGroupAdminReport extends BaseNotification<'admin.re report: Report; } +type Collection = ApiCollectionJSON; +export interface NotificationGroupAddedToCollection extends BaseNotification<'added_to_collection'> { + collection: Collection; +} + +export interface NotificationGroupCollectionUpdate extends BaseNotification<'collection_update'> { + collection: Collection; +} + export type NotificationGroup = | NotificationGroupFavourite | NotificationGroupReblog @@ -102,7 +113,9 @@ export type NotificationGroup = | NotificationGroupSeveredRelationships | NotificationGroupAdminSignUp | NotificationGroupAdminReport - | NotificationGroupAnnualReport; + | NotificationGroupAnnualReport + | NotificationGroupAddedToCollection + | NotificationGroupCollectionUpdate; function createReportFromJSON(reportJSON: ApiReportJSON): Report { const { target_account, ...report } = reportJSON; @@ -249,6 +262,13 @@ export function createNotificationGroupFromNotificationJSON( notification.moderation_warning, ), }; + case 'added_to_collection': + case 'collection_update': + return { + ...group, + type: notification.type, + collection: notification.collection, + }; default: return { ...group, diff --git a/app/lib/activitypub/activity/feature_request.rb b/app/lib/activitypub/activity/feature_request.rb index 5e319734a4..16a3860a0e 100644 --- a/app/lib/activitypub/activity/feature_request.rb +++ b/app/lib/activitypub/activity/feature_request.rb @@ -26,6 +26,7 @@ class ActivityPub::Activity::FeatureRequest < ActivityPub::Activity collection_item_attributes(:accepted) ) + notify_local_user!(collection_item) queue_delivery!(collection_item, ActivityPub::AcceptFeatureRequestSerializer) end @@ -52,6 +53,10 @@ class ActivityPub::Activity::FeatureRequest < ActivityPub::Activity { account: @featured_account, activity_uri: @json['id'], state: } end + def notify_local_user!(collection_item) + LocalNotificationWorker.perform_async(collection_item.account_id, collection_item.id, collection_item.class.name, 'added_to_collection') + end + def queue_delivery!(collection_item, serializer) json = JSON.generate(serialize_payload(collection_item, serializer)) ActivityPub::DeliveryWorker.perform_async(json, @featured_account.id, @account.inbox_url) diff --git a/app/models/notification.rb b/app/models/notification.rb index 9f03539f76..19b057108e 100644 --- a/app/models/notification.rb +++ b/app/models/notification.rb @@ -33,7 +33,7 @@ class Notification < ApplicationRecord 'Quote' => :quote, }.freeze - # Please update app/javascript/api_types/notification.ts if you change this + # Please update app/javascript/mastodon/api_types/notifications.ts if you change this PROPERTIES = { mention: { filterable: true, @@ -80,6 +80,12 @@ class Notification < ApplicationRecord quoted_update: { filterable: false, }.freeze, + added_to_collection: { + filterable: true, + }.freeze, + collection_update: { + filterable: false, + }, }.freeze TYPES = PROPERTIES.keys.freeze @@ -112,6 +118,8 @@ class Notification < ApplicationRecord belongs_to :account_warning, inverse_of: false belongs_to :generated_annual_report, inverse_of: false belongs_to :quote, inverse_of: :notification + belongs_to :collection_item, inverse_of: false # TODO: have an inverse? + belongs_to :collection, inverse_of: false # TODO: have an inverse? end validates :type, inclusion: { in: TYPES } @@ -208,8 +216,10 @@ class Notification < ApplicationRecord case activity_type when 'Status' self.from_account_id = type == :quoted_update ? activity&.quote&.quoted_account_id : activity&.account_id - when 'Follow', 'Favourite', 'FollowRequest', 'Poll', 'Report', 'Quote' + when 'Follow', 'Favourite', 'FollowRequest', 'Poll', 'Report', 'Quote', 'Collection' self.from_account_id = activity&.account_id + when 'CollectionItem' + self.from_account_id = activity&.collection&.account_id when 'Mention' self.from_account_id = activity&.status&.account_id when 'Account' diff --git a/app/serializers/rest/notification_group_serializer.rb b/app/serializers/rest/notification_group_serializer.rb index 40f7f04ede..6089a2446a 100644 --- a/app/serializers/rest/notification_group_serializer.rb +++ b/app/serializers/rest/notification_group_serializer.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class REST::NotificationGroupSerializer < ActiveModel::Serializer - # Please update app/javascript/api_types/notification.ts when making changes to the attributes + # Please update app/javascript/mastodon/api_types/notifications.ts when making changes to the attributes attributes :group_key, :notifications_count, :type, :most_recent_notification_id attribute :page_min_id, if: :paginated? @@ -14,6 +14,7 @@ class REST::NotificationGroupSerializer < ActiveModel::Serializer belongs_to :account_relationship_severance_event, key: :event, if: :relationship_severance_event?, serializer: REST::AccountRelationshipSeveranceEventSerializer belongs_to :account_warning, key: :moderation_warning, if: :moderation_warning_event?, serializer: REST::AccountWarningSerializer belongs_to :generated_annual_report, key: :annual_report, if: :annual_report_event?, serializer: REST::AnnualReportEventSerializer + belongs_to :collection, if: :collection_type?, serializer: REST::CollectionSerializer def sample_account_ids object.sample_accounts.pluck(:id).map(&:to_s) @@ -27,6 +28,10 @@ class REST::NotificationGroupSerializer < ActiveModel::Serializer [:favourite, :reblog, :status, :mention, :poll, :update, :quote, :quoted_update].include?(object.type) end + def collection_type? + [:added_to_collection, :collection_update].include?(object.type) + end + def report_type? object.type == :'admin.report' end diff --git a/app/serializers/rest/notification_serializer.rb b/app/serializers/rest/notification_serializer.rb index c4b77709fb..ab1626cf3b 100644 --- a/app/serializers/rest/notification_serializer.rb +++ b/app/serializers/rest/notification_serializer.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class REST::NotificationSerializer < ActiveModel::Serializer - # Please update app/javascript/api_types/notification.ts when making changes to the attributes + # Please update app/javascript/mastodon/api_types/notifications.ts when making changes to the attributes attributes :id, :type, :created_at, :group_key attribute :filtered, if: :filtered? @@ -11,6 +11,7 @@ class REST::NotificationSerializer < ActiveModel::Serializer belongs_to :report, if: :report_type?, serializer: REST::ReportSerializer belongs_to :account_relationship_severance_event, key: :event, if: :relationship_severance_event?, serializer: REST::AccountRelationshipSeveranceEventSerializer belongs_to :account_warning, key: :moderation_warning, if: :moderation_warning_event?, serializer: REST::AccountWarningSerializer + belongs_to :collection, if: :collection_type?, serializer: REST::CollectionSerializer def id object.id.to_s @@ -24,6 +25,10 @@ class REST::NotificationSerializer < ActiveModel::Serializer [:favourite, :reblog, :status, :mention, :poll, :update, :quoted_update, :quote].include?(object.type) end + def collection_type? + [:added_to_collection, :collection_update].include?(object.type) + end + def report_type? object.type == :'admin.report' end diff --git a/app/services/activitypub/process_featured_collection_service.rb b/app/services/activitypub/process_featured_collection_service.rb index 9e7c82af42..f7ae08dd26 100644 --- a/app/services/activitypub/process_featured_collection_service.rb +++ b/app/services/activitypub/process_featured_collection_service.rb @@ -25,6 +25,7 @@ class ActivityPub::ProcessFeaturedCollectionService end process_items! + notify_about_update! @collection end @@ -32,6 +33,10 @@ class ActivityPub::ProcessFeaturedCollectionService private + def notify_about_update! + NotifyOfCollectionUpdateService.new.call(@collection) + end + def truncated_summary text = @json['summaryMap']&.values&.first || @json['summary'] || '' text[0, Collection::DESCRIPTION_LENGTH_HARD_LIMIT] diff --git a/app/services/add_account_to_collection_service.rb b/app/services/add_account_to_collection_service.rb index 0cca1a31ff..3c2ecacf4f 100644 --- a/app/services/add_account_to_collection_service.rb +++ b/app/services/add_account_to_collection_service.rb @@ -11,6 +11,7 @@ class AddAccountToCollectionService @collection_item = create_collection_item + notify_local_user if @account.local? distribute_add_activity if @account.local? distribute_feature_request_activity if @account.remote? @@ -24,6 +25,10 @@ class AddAccountToCollectionService @collection.collection_items.create!(account: @account, state:) end + def notify_local_user + LocalNotificationWorker.perform_async(@account.id, @collection_item.id, @collection_item.class.name, 'added_to_collection') + end + def distribute_add_activity ActivityPub::AccountRawDistributionWorker.perform_async(add_activity_json, @collection.account_id) end diff --git a/app/services/notify_of_collection_update_service.rb b/app/services/notify_of_collection_update_service.rb new file mode 100644 index 0000000000..9e0449996e --- /dev/null +++ b/app/services/notify_of_collection_update_service.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +class NotifyOfCollectionUpdateService + def call(collection) + return unless significantly_changed?(collection) + + collection.collection_items.includes(:account).references(:account).merge(Account.local).accepted.find_each do |collection_item| + LocalNotificationWorker.perform_async(collection_item.account_id, collection.id, collection.class.name, 'collection_update') + end + end + + private + + def significantly_changed?(collection) + # If the collection is brand new, we don't need to look at its members + return false if collection.previously_new_record? + + # Only notify of change to description or name + %i(description description_html name).any? { |attr| collection.attribute_previously_changed?(attr) } + end +end diff --git a/app/services/notify_service.rb b/app/services/notify_service.rb index ed292736d8..af2f74ce56 100644 --- a/app/services/notify_service.rb +++ b/app/services/notify_service.rb @@ -14,6 +14,8 @@ class NotifyService < BaseService moderation_warning severed_relationships annual_report + added_to_collection + collection_update ).freeze class BaseCondition @@ -21,15 +23,6 @@ class NotifyService < BaseService NEW_FOLLOWER_THRESHOLD = 3.days.freeze - NON_FILTERABLE_TYPES = %i( - admin.sign_up - admin.report - poll - update - account_warning - annual_report - ).freeze - def initialize(notification, **options) @recipient = notification.account @sender = notification.from_account diff --git a/app/services/update_collection_service.rb b/app/services/update_collection_service.rb index f097a8cfb8..5ffb4bad81 100644 --- a/app/services/update_collection_service.rb +++ b/app/services/update_collection_service.rb @@ -7,6 +7,7 @@ class UpdateCollectionService @collection = collection @collection.update!(params) + notify_about_update distribute_update_activity end @@ -18,6 +19,10 @@ class UpdateCollectionService ActivityPub::AccountRawDistributionWorker.perform_async(activity_json, @collection.account.id) end + def notify_about_update + NotifyOfCollectionUpdateService.new.call(@collection) + end + def activity_json ActiveModelSerializers::SerializableResource.new(@collection, serializer: ActivityPub::UpdateFeaturedCollectionSerializer, adapter: ActivityPub::Adapter).to_json end diff --git a/app/workers/local_notification_worker.rb b/app/workers/local_notification_worker.rb index 7e9bd0c92b..0a99907424 100644 --- a/app/workers/local_notification_worker.rb +++ b/app/workers/local_notification_worker.rb @@ -10,10 +10,8 @@ class LocalNotificationWorker # For most notification types, only one notification should exist, and the older one is # preferred. For updates, such as when a status is edited, the new notification # should replace the previous ones. - if type == 'update' - Notification.where(account: receiver, activity: activity, type: 'update').in_batches.delete_all - elsif type == 'quoted_update' - Notification.where(account: receiver, activity: activity, type: 'quoted_update').in_batches.delete_all + if %w(update quoted_update collection_update).include?(type) + Notification.where(account: receiver, activity: activity, type: type).in_batches.delete_all elsif Notification.where(account: receiver, activity: activity, type: type).any? return end diff --git a/spec/lib/activitypub/activity/feature_request_spec.rb b/spec/lib/activitypub/activity/feature_request_spec.rb index a7fc14e325..5d134b6ceb 100644 --- a/spec/lib/activitypub/activity/feature_request_spec.rb +++ b/spec/lib/activitypub/activity/feature_request_spec.rb @@ -26,9 +26,10 @@ RSpec.describe ActivityPub::Activity::FeatureRequest do context 'when recipient is discoverable' do let(:discoverable) { true } - it 'schedules a job to send an `Accept` activity' do + it 'schedules a job to send an `Accept` activity as well as a notification worker' do expect { subject.perform } - .to enqueue_sidekiq_job(ActivityPub::DeliveryWorker) + .to enqueue_sidekiq_job(LocalNotificationWorker).with(recipient.id, anything, 'CollectionItem', 'added_to_collection') + .and enqueue_sidekiq_job(ActivityPub::DeliveryWorker) .with(satisfying do |body| response_json = JSON.parse(body) response_json['type'] == 'Accept' && diff --git a/spec/lib/activitypub/activity/update_spec.rb b/spec/lib/activitypub/activity/update_spec.rb index 78678bde81..701a2ff1f5 100644 --- a/spec/lib/activitypub/activity/update_spec.rb +++ b/spec/lib/activitypub/activity/update_spec.rb @@ -259,6 +259,9 @@ RSpec.describe ActivityPub::Activity::Update do context 'with a `FeaturedCollection` object', feature: :collections do let(:collection) { Fabricate(:remote_collection, account: sender, name: 'old name', discoverable: false) } + let(:account) { Fabricate(:account) } + let!(:collection_item) { Fabricate(:collection_item, account:, collection:, uri: 'https://example.com/featured_stamps/1') } + let(:featured_collection_json) do { '@context' => 'https://www.w3.org/ns/activitystreams', @@ -267,13 +270,21 @@ RSpec.describe ActivityPub::Activity::Update do 'attributedTo' => sender.uri, 'name' => 'Cool people', 'summary' => 'People you should follow.', - 'totalItems' => 0, + 'totalItems' => 1, 'sensitive' => false, 'discoverable' => true, 'published' => '2026-03-09T15:19:25Z', 'updated' => Time.zone.now.iso8601, + 'orderedItems' => [ + { + 'type' => 'FeaturedItem', + 'id' => ActivityPub::TagManager.instance.uri_for(collection_item), + 'object' => ActivityPub::TagManager.instance.uri_for(account), + }, + ], } end + let(:json) do { '@context' => 'https://www.w3.org/ns/activitystreams', @@ -282,18 +293,41 @@ RSpec.describe ActivityPub::Activity::Update do 'object' => featured_collection_json, } end - let(:stubbed_service) do - instance_double(ActivityPub::ProcessFeaturedCollectionService, call: true) + + it 'updates the collection and notifies local user' do + expect { subject.perform } + .to change { collection.reload.name }.to(featured_collection_json['name']) + .and enqueue_sidekiq_job(LocalNotificationWorker).with(account.id, collection.id, 'Collection', 'collection_update') end - before do - allow(ActivityPub::ProcessFeaturedCollectionService).to receive(:new).and_return(stubbed_service) - end + context 'when the metadata does not actually change' do + let(:featured_collection_json) do + { + '@context' => 'https://www.w3.org/ns/activitystreams', + 'id' => collection.uri, + 'type' => 'FeaturedCollection', + 'attributedTo' => sender.uri, + 'name' => collection.name, + 'summary' => collection.description_html, + 'totalItems' => 1, + 'sensitive' => false, + 'discoverable' => true, + 'published' => '2026-03-09T15:19:25Z', + 'updated' => Time.zone.now.iso8601, + 'orderedItems' => [ + { + 'type' => 'FeaturedItem', + 'id' => ActivityPub::TagManager.instance.uri_for(collection_item), + 'object' => ActivityPub::TagManager.instance.uri_for(account), + }, + ], + } + end - it 'updates the collection' do - subject.perform - - expect(stubbed_service).to have_received(:call).with(sender, featured_collection_json) + it 'does not notify the local user' do + expect { subject.perform } + .to_not enqueue_sidekiq_job(LocalNotificationWorker) + end end end end diff --git a/spec/services/add_account_to_collection_service_spec.rb b/spec/services/add_account_to_collection_service_spec.rb index 4f87a2e1b9..dd7983ca62 100644 --- a/spec/services/add_account_to_collection_service_spec.rb +++ b/spec/services/add_account_to_collection_service_spec.rb @@ -22,10 +22,15 @@ RSpec.describe AddAccountToCollectionService do end context 'when the account is local' do - it 'federates an `Add` activity' do + it 'federates an `Add` activity and schedules a notification' do subject.call(collection, account) - expect(ActivityPub::AccountRawDistributionWorker).to have_enqueued_sidekiq_job + expect(ActivityPub::AccountRawDistributionWorker) + .to have_enqueued_sidekiq_job + .with(anything, collection.account_id) + expect(LocalNotificationWorker) + .to have_enqueued_sidekiq_job + .with(account.id, anything, 'CollectionItem', 'added_to_collection') end end diff --git a/spec/services/update_collection_service_spec.rb b/spec/services/update_collection_service_spec.rb index 32dd88216c..088d5768ed 100644 --- a/spec/services/update_collection_service_spec.rb +++ b/spec/services/update_collection_service_spec.rb @@ -6,21 +6,15 @@ RSpec.describe UpdateCollectionService do subject { described_class.new } let(:collection) { Fabricate(:collection) } + let!(:collection_item) { Fabricate(:collection_item, collection:) } describe '#call' do context 'when given valid parameters' do - it 'updates the collection' do - subject.call(collection, { name: 'Newly updated name' }) - - expect(collection.name).to eq 'Newly updated name' - end - - context 'when something actually changed' do - it 'federates an `Update` activity' do - subject.call(collection, { name: 'updated' }) - - expect(ActivityPub::AccountRawDistributionWorker).to have_enqueued_sidekiq_job - end + it 'updates the collection, sends a notification and federates an `Update` activity' do + expect { subject.call(collection, { name: 'Newly updated name' }) } + .to change(collection, :name).to('Newly updated name') + .and enqueue_sidekiq_job(LocalNotificationWorker).with(collection_item.account_id, collection.id, collection.class.name, 'collection_update') + .and enqueue_sidekiq_job(ActivityPub::AccountRawDistributionWorker) end context 'when nothing changed' do @@ -28,6 +22,7 @@ RSpec.describe UpdateCollectionService do subject.call(collection, { name: collection.name }) expect(ActivityPub::AccountRawDistributionWorker).to_not have_enqueued_sidekiq_job + expect(LocalNotificationWorker).to_not have_enqueued_sidekiq_job end end end From e65fedd6721e8008fffb30c65a4671e988282a3f Mon Sep 17 00:00:00 2001 From: diondiondion Date: Wed, 8 Apr 2026 15:16:45 +0200 Subject: [PATCH 14/20] Allow "Follows you" badge to wrap along with profile heading (#38607) --- .../components/account_header.tsx | 3 -- .../components/account_name.tsx | 3 ++ .../components/account_subscription_form.tsx | 5 ++- .../account_timeline/components/badges.tsx | 4 ++- .../components/styles.module.scss | 33 +++++++++++-------- 5 files changed, 29 insertions(+), 19 deletions(-) diff --git a/app/javascript/mastodon/features/account_timeline/components/account_header.tsx b/app/javascript/mastodon/features/account_timeline/components/account_header.tsx index b4b159f8eb..5545c2fcd3 100644 --- a/app/javascript/mastodon/features/account_timeline/components/account_header.tsx +++ b/app/javascript/mastodon/features/account_timeline/components/account_header.tsx @@ -21,7 +21,6 @@ import { useAppSelector, useAppDispatch } from '@/mastodon/store'; import { AccountName } from './account_name'; import { AccountSubscriptionForm } from './account_subscription_form'; -import { AccountBadges } from './badges'; import { AccountButtons } from './buttons'; import { FamiliarFollowers } from './familiar_followers'; import { AccountHeaderFields } from './fields'; @@ -158,8 +157,6 @@ export const AccountHeader: React.FC<{ />
- - {!isMe && !suspendedOrHidden && ( diff --git a/app/javascript/mastodon/features/account_timeline/components/account_name.tsx b/app/javascript/mastodon/features/account_timeline/components/account_name.tsx index 02a9edab86..ff10d82ad7 100644 --- a/app/javascript/mastodon/features/account_timeline/components/account_name.tsx +++ b/app/javascript/mastodon/features/account_timeline/components/account_name.tsx @@ -21,6 +21,7 @@ import ContentCopyIcon from '@/material-icons/400-24px/content_copy.svg?react'; import HelpIcon from '@/material-icons/400-24px/help.svg?react'; import DomainIcon from '@/material-icons/400-24px/language.svg?react'; +import { AccountBadges } from './badges'; import classes from './styles.module.scss'; const messages = defineMessages({ @@ -77,6 +78,8 @@ export const AccountName: FC<{ accountId: string }> = ({ accountId }) => { domain={domain} isSelf={account.id === me} /> + +
); }; diff --git a/app/javascript/mastodon/features/account_timeline/components/account_subscription_form.tsx b/app/javascript/mastodon/features/account_timeline/components/account_subscription_form.tsx index 8cb3dba5a3..e3fc8146e6 100644 --- a/app/javascript/mastodon/features/account_timeline/components/account_subscription_form.tsx +++ b/app/javascript/mastodon/features/account_timeline/components/account_subscription_form.tsx @@ -3,6 +3,7 @@ import { useState, useCallback, useId } from 'react'; import { FormattedMessage, useIntl, defineMessages } from 'react-intl'; import type { IntlShape } from 'react-intl'; +import classNames from 'classnames'; import { Link } from 'react-router-dom'; import { AxiosError } from 'axios'; @@ -127,7 +128,9 @@ export const AccountSubscriptionForm: React.FC<{ accountId: string }> = ({ if (submitted) { return ( -
+

= ({ accountId }) => { const account = useAccount(accountId); const localDomain = useAppSelector( @@ -101,7 +103,7 @@ export const AccountBadges: FC<{ accountId: string }> = ({ accountId }) => { return null; } - return
{badges}
; + return
{badges}
; }; function isAdminBadge(role: AccountRole) { diff --git a/app/javascript/mastodon/features/account_timeline/components/styles.module.scss b/app/javascript/mastodon/features/account_timeline/components/styles.module.scss index e8399cf44a..9c13026b97 100644 --- a/app/javascript/mastodon/features/account_timeline/components/styles.module.scss +++ b/app/javascript/mastodon/features/account_timeline/components/styles.module.scss @@ -28,14 +28,12 @@ } .name { - display: flex; - gap: 2px; - align-items: baseline; - > h1 { + display: inline; font-size: 22px; line-height: normal; white-space: initial; + margin-inline-end: 4px; } } @@ -43,6 +41,10 @@ color: var(--color-text-secondary); } +.badges { + margin-top: 8px; +} + .handleHelpButton { display: flex; gap: 2px; @@ -191,6 +193,10 @@ $button-fallback-breakpoint: $button-breakpoint + 55px; font-size: 15px; } +.familiarFollowers { + margin-top: 16px; +} + .note { margin-bottom: 16px; } @@ -406,6 +412,15 @@ $button-fallback-breakpoint: $button-breakpoint + 55px; margin: 16px 0; } +.bannerBaseCentered { + min-height: 146px; + align-items: center; + + .bannerTextAndActions { + text-align: center; + } +} + .bannerTextAndActions { display: flex; flex-direction: column; @@ -426,16 +441,6 @@ $button-fallback-breakpoint: $button-breakpoint + 55px; } } -.bannerBaseCentered { - composes: bannerBase; - min-height: 146px; - align-items: center; - - .bannerTextAndActions { - text-align: center; - } -} - .bannerInputButton { display: flex; gap: 8px; From 7d9b1e6d1edcadcbe8a62ede3d94860be785be13 Mon Sep 17 00:00:00 2001 From: diondiondion Date: Wed, 8 Apr 2026 16:26:39 +0200 Subject: [PATCH 15/20] Update collection account item design (#38586) --- .../mastodon/components/account/index.tsx | 2 +- .../account_list_item.stories.tsx | 45 +++++ .../components/account_list_item/index.tsx | 184 ++++++++++++++++++ .../account_list_item/styles.module.scss | 50 +++++ .../components/badge/badge.stories.tsx | 6 + .../mastodon/components/badge/index.tsx | 45 ++++- .../components/badge/styles.module.scss | 17 +- .../familiar_followers/index.tsx} | 18 +- .../familiar_followers/styles.module.scss | 11 ++ .../use_fetch_familiar_followers.ts} | 0 .../components/hover_card_account.tsx | 2 +- .../components/number_fields/index.tsx | 18 +- .../number_fields/styles.module.scss | 5 +- .../mastodon/components/verified_badge.tsx | 32 --- .../components/account_header.tsx | 8 +- .../collections/detail/accounts_list.tsx | 179 ++++++----------- .../features/collections/detail/index.tsx | 3 +- .../collections/detail/styles.module.scss | 51 +---- .../features/followers/components/list.tsx | 6 +- .../components/inline_follow_suggestions.tsx | 11 +- .../mastodon/features/lists/members.tsx | 2 +- .../styles/mastodon/components.scss | 30 +-- 22 files changed, 454 insertions(+), 271 deletions(-) create mode 100644 app/javascript/mastodon/components/account_list_item/account_list_item.stories.tsx create mode 100644 app/javascript/mastodon/components/account_list_item/index.tsx create mode 100644 app/javascript/mastodon/components/account_list_item/styles.module.scss rename app/javascript/mastodon/{features/account_timeline/components/familiar_followers.tsx => components/familiar_followers/index.tsx} (82%) create mode 100644 app/javascript/mastodon/components/familiar_followers/styles.module.scss rename app/javascript/mastodon/{features/account_timeline/hooks/familiar_followers.ts => components/familiar_followers/use_fetch_familiar_followers.ts} (100%) delete mode 100644 app/javascript/mastodon/components/verified_badge.tsx diff --git a/app/javascript/mastodon/components/account/index.tsx b/app/javascript/mastodon/components/account/index.tsx index 1e8db6c5b9..d93415f15a 100644 --- a/app/javascript/mastodon/components/account/index.tsx +++ b/app/javascript/mastodon/components/account/index.tsx @@ -21,6 +21,7 @@ import { openModal } from 'mastodon/actions/modal'; import { initMuteModal } from 'mastodon/actions/mutes'; import { apiFollowAccount } from 'mastodon/api/accounts'; import { Avatar } from 'mastodon/components/avatar'; +import { VerifiedBadge } from 'mastodon/components/badge'; import { Button } from 'mastodon/components/button'; import { FollowersCounter } from 'mastodon/components/counters'; import { DisplayName } from 'mastodon/components/display_name'; @@ -29,7 +30,6 @@ import { FollowButton } from 'mastodon/components/follow_button'; import { RelativeTimestamp } from 'mastodon/components/relative_timestamp'; import { ShortNumber } from 'mastodon/components/short_number'; import { Skeleton } from 'mastodon/components/skeleton'; -import { VerifiedBadge } from 'mastodon/components/verified_badge'; import { useIdentity } from 'mastodon/identity_context'; import { me } from 'mastodon/initial_state'; import type { MenuItem } from 'mastodon/models/dropdown_menu'; diff --git a/app/javascript/mastodon/components/account_list_item/account_list_item.stories.tsx b/app/javascript/mastodon/components/account_list_item/account_list_item.stories.tsx new file mode 100644 index 0000000000..bad1667b12 --- /dev/null +++ b/app/javascript/mastodon/components/account_list_item/account_list_item.stories.tsx @@ -0,0 +1,45 @@ +import type { Meta, StoryObj } from '@storybook/react-vite'; + +import { accountFactoryState } from '@/testing/factories'; + +import { AccountListItem } from './index'; + +const meta = { + title: 'Components/AccountListItem', + component: AccountListItem, + args: { + accountId: '1', + withBorder: false, + }, + parameters: { + state: { + accounts: { + '1': accountFactoryState(), + }, + }, + }, +} satisfies Meta; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = {}; + +export const WithCustomStats: Story = { + args: { + stats: ['posts', 'last-active'], + }, +}; + +export const WithBorder: Story = { + args: { + withBorder: true, + }, +}; + +export const WithoutButton: Story = { + args: { + renderButton: () => null, + }, +}; diff --git a/app/javascript/mastodon/components/account_list_item/index.tsx b/app/javascript/mastodon/components/account_list_item/index.tsx new file mode 100644 index 0000000000..26e9631992 --- /dev/null +++ b/app/javascript/mastodon/components/account_list_item/index.tsx @@ -0,0 +1,184 @@ +import { useMemo } from 'react'; + +import { FormattedMessage, useIntl } from 'react-intl'; + +import classNames from 'classnames'; + +import { Account } from 'mastodon/components/account'; +import { VerifiedBadge } from 'mastodon/components/badge'; +import { useAccount } from 'mastodon/hooks/useAccount'; +import { useRelationship } from 'mastodon/hooks/useRelationship'; +import type { Relationship } from 'mastodon/models/relationship'; + +import { EmojiHTML } from '../emoji/html'; +import { FamiliarFollowers } from '../familiar_followers'; +import { FollowButton } from '../follow_button'; +import { FormattedDateWrapper } from '../formatted_date'; +import { NumberFields, NumberFieldsItem } from '../number_fields'; +import { RelativeTimestamp } from '../relative_timestamp'; +import { ShortNumber } from '../short_number'; + +import classes from './styles.module.scss'; + +export interface RenderButtonOptions { + accountId: string | undefined; + relationship: Relationship | null | undefined; +} + +type Stat = 'followers' | 'following' | 'posts' | 'joined' | 'last-active'; + +interface Props { + accountId: string | undefined; + stats?: Stat[]; + renderButton?: (options: RenderButtonOptions) => React.ReactNode; + withBorder?: boolean; +} + +const DEFAULT_STATS: Stat[] = ['followers', 'following', 'joined']; + +/** + * Extended account list item with bio, verified link badge, + * and familiar follower widget. + * + * The displayed account stats can be customised using the `stats` prop, + * and button rendering can be customised via the `renderButton` prop. + */ +export const AccountListItem: React.FC = ({ + accountId, + stats = DEFAULT_STATS, + withBorder = true, + renderButton = defaultRenderButton, +}) => { + const intl = useIntl(); + const account = useAccount(accountId); + const relationship = useRelationship(accountId); + + const createdThisYear = useMemo( + () => account?.created_at.includes(new Date().getFullYear().toString()), + [account?.created_at], + ); + + if (!accountId || !account) { + return null; + } + + const firstVerifiedField = account.fields.find((item) => !!item.verified_at); + + return ( +
+
+ + + {renderButton({ accountId, relationship })} +
+ + + {stats.includes('followers') && ( + + } + hint={intl.formatNumber(account.followers_count)} + > + + + )} + {stats.includes('following') && ( + + } + hint={intl.formatNumber(account.following_count)} + link={`/@${account.acct}/following`} + > + + + )} + {stats.includes('posts') && ( + + } + hint={intl.formatNumber(account.statuses_count)} + > + + + )} + {stats.includes('joined') && ( + + } + hint={intl.formatDate(account.created_at)} + > + {createdThisYear ? ( + + ) : ( + + )} + + )} + {stats.includes('last-active') && ( + + } + > + + + )} + {firstVerifiedField && ( + + )} + + + {account.note.length > 0 && ( + + )} +
+ ); +}; + +const defaultRenderButton = ({ accountId }: RenderButtonOptions) => ( + +); + +export const AccountListItemFollowButton: React.FC<{ + accountId: string | undefined; +}> = ({ accountId }) => ( + +); diff --git a/app/javascript/mastodon/components/account_list_item/styles.module.scss b/app/javascript/mastodon/components/account_list_item/styles.module.scss new file mode 100644 index 0000000000..d8bfd73f1f --- /dev/null +++ b/app/javascript/mastodon/components/account_list_item/styles.module.scss @@ -0,0 +1,50 @@ +.wrapper { + display: flex; + flex-direction: column; + align-items: start; + gap: 12px; + padding: 16px; + + &[data-with-border='true'] { + border-bottom: 1px solid var(--color-border-primary); + } + + :global(.account__note) { + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 3; + line-clamp: 3; + } +} + +.header { + display: flex; + align-items: start; + width: 100%; +} + +.account { + --account-name-size: 15px; + --account-handle-color: var(--color-text-secondary); + --account-handle-size: 13px; + --account-bio-color: var(--color-text-primary); + --account-bio-size: 13px; + --account-outer-spacing: 0; + + flex-grow: 1; + margin-inline-end: 16px; +} + +.verifiedBadge { + align-self: end; +} + +.bio { + :any-link { + color: var(--color-text-status-links); + + &:hover { + text-decoration: none; + } + } +} diff --git a/app/javascript/mastodon/components/badge/badge.stories.tsx b/app/javascript/mastodon/components/badge/badge.stories.tsx index f8d91d555a..3730cb1814 100644 --- a/app/javascript/mastodon/components/badge/badge.stories.tsx +++ b/app/javascript/mastodon/components/badge/badge.stories.tsx @@ -35,6 +35,12 @@ export const Domain: Story = { }, }; +export const Verified: Story = { + render() { + return ; + }, +}; + export const CustomIcon: Story = { args: { ...Default.args, diff --git a/app/javascript/mastodon/components/badge/index.tsx b/app/javascript/mastodon/components/badge/index.tsx index 6c6f0cdca5..f75d50ebe9 100644 --- a/app/javascript/mastodon/components/badge/index.tsx +++ b/app/javascript/mastodon/components/badge/index.tsx @@ -5,18 +5,22 @@ import { FormattedMessage, useIntl } from 'react-intl'; import classNames from 'classnames'; import AdminIcon from '@/images/icons/icon_admin.svg?react'; +import IconVerified from '@/images/icons/icon_verified.svg?react'; +import type { OnAttributeHandler } from '@/mastodon/utils/html'; import BlockIcon from '@/material-icons/400-24px/block.svg?react'; import GroupsIcon from '@/material-icons/400-24px/group.svg?react'; import PersonIcon from '@/material-icons/400-24px/person.svg?react'; import SmartToyIcon from '@/material-icons/400-24px/smart_toy.svg?react'; import VolumeOffIcon from '@/material-icons/400-24px/volume_off.svg?react'; +import { EmojiHTML } from '../emoji/html'; +import { Icon } from '../icon'; + import classes from './styles.module.scss'; -interface BadgeProps { +interface BadgeProps extends React.ComponentPropsWithoutRef<'div'> { label: ReactNode; icon?: ReactNode; - className?: string; domain?: ReactNode; roleId?: string; variant?: @@ -35,9 +39,16 @@ export const Badge: FC = ({ className, domain, roleId, + ...otherProps }) => (
{icon} @@ -134,3 +145,31 @@ export const BlockedBadge: FC> = ({ label, ...props }) => ( {...props} /> ); + +const onAttribute: OnAttributeHandler = (name, value, tagName) => { + if (name === 'rel' && tagName === 'a') { + if (value === 'me') { + return null; + } + return [ + name, + value + .split(' ') + .filter((x) => x !== 'me') + .join(' '), + ]; + } + return undefined; +}; + +export const VerifiedBadge: React.FC<{ link: string; className?: string }> = ({ + link, + className, +}) => ( + } + label={} + className={className} + /> +); diff --git a/app/javascript/mastodon/components/badge/styles.module.scss b/app/javascript/mastodon/components/badge/styles.module.scss index 77ac42fc7b..59c738b9cc 100644 --- a/app/javascript/mastodon/components/badge/styles.module.scss +++ b/app/javascript/mastodon/components/badge/styles.module.scss @@ -2,18 +2,28 @@ color: var(--color-text-primary); font-size: 13px; display: inline-flex; + max-width: 100%; padding: 4px; - padding-inline-end: 8px; gap: 4px; - border-radius: 6px; + border-radius: 8px; align-items: center; + overflow-wrap: anywhere; > svg { width: auto; - height: 15px; + height: 17px; fill: currentColor; opacity: 0.85; } + + a { + color: inherit; + text-decoration: none; + } + + &:not(.badgeWithoutIcon) { + padding-inline-end: 8px; + } } .domain { @@ -41,7 +51,6 @@ .success { background-color: var(--color-bg-success-softest); - color: var(--color-text-success); } .warning { diff --git a/app/javascript/mastodon/features/account_timeline/components/familiar_followers.tsx b/app/javascript/mastodon/components/familiar_followers/index.tsx similarity index 82% rename from app/javascript/mastodon/features/account_timeline/components/familiar_followers.tsx rename to app/javascript/mastodon/components/familiar_followers/index.tsx index 248a182d27..b6cbea6c0f 100644 --- a/app/javascript/mastodon/features/account_timeline/components/familiar_followers.tsx +++ b/app/javascript/mastodon/components/familiar_followers/index.tsx @@ -1,11 +1,14 @@ import { FormattedMessage } from 'react-intl'; +import classNames from 'classnames'; + import { Avatar } from '@/mastodon/components/avatar'; import { AvatarGroup } from '@/mastodon/components/avatar_group'; import { LinkedDisplayName } from '@/mastodon/components/display_name'; import type { Account } from '@/mastodon/models/account'; -import { useFetchFamiliarFollowers } from '../hooks/familiar_followers'; +import classes from './styles.module.scss'; +import { useFetchFamiliarFollowers } from './use_fetch_familiar_followers'; const FamiliarFollowersReadout: React.FC<{ familiarFollowers: Account[] }> = ({ familiarFollowers, @@ -51,9 +54,10 @@ const FamiliarFollowersReadout: React.FC<{ familiarFollowers: Account[] }> = ({ } }; -export const FamiliarFollowers: React.FC<{ accountId: string }> = ({ - accountId, -}) => { +export const FamiliarFollowers: React.FC<{ + accountId: string; + className?: string; +}> = ({ accountId, className }) => { const { familiarFollowers, isLoading } = useFetchFamiliarFollowers({ accountId, }); @@ -63,10 +67,10 @@ export const FamiliarFollowers: React.FC<{ accountId: string }> = ({ } return ( -
- +
+ {familiarFollowers.slice(0, 3).map((account) => ( - + ))} diff --git a/app/javascript/mastodon/components/familiar_followers/styles.module.scss b/app/javascript/mastodon/components/familiar_followers/styles.module.scss new file mode 100644 index 0000000000..f3a11f970f --- /dev/null +++ b/app/javascript/mastodon/components/familiar_followers/styles.module.scss @@ -0,0 +1,11 @@ +.wrapper { + display: flex; + align-items: center; + gap: 10px; + + a:any-link { + font-weight: 500; + text-decoration: none; + color: var(--color-text-primary); + } +} diff --git a/app/javascript/mastodon/features/account_timeline/hooks/familiar_followers.ts b/app/javascript/mastodon/components/familiar_followers/use_fetch_familiar_followers.ts similarity index 100% rename from app/javascript/mastodon/features/account_timeline/hooks/familiar_followers.ts rename to app/javascript/mastodon/components/familiar_followers/use_fetch_familiar_followers.ts diff --git a/app/javascript/mastodon/components/hover_card_account.tsx b/app/javascript/mastodon/components/hover_card_account.tsx index b51af40e94..1c015e4e80 100644 --- a/app/javascript/mastodon/components/hover_card_account.tsx +++ b/app/javascript/mastodon/components/hover_card_account.tsx @@ -5,6 +5,7 @@ import { FormattedMessage } from 'react-intl'; import classNames from 'classnames'; import { Link } from 'react-router-dom'; +import { useFetchFamiliarFollowers } from '@/mastodon/components/familiar_followers/use_fetch_familiar_followers'; import { fetchAccount } from 'mastodon/actions/accounts'; import { AccountBio } from 'mastodon/components/account_bio'; import { AccountFields } from 'mastodon/components/account_fields'; @@ -18,7 +19,6 @@ import { DisplayName } from 'mastodon/components/display_name'; import { FollowButton } from 'mastodon/components/follow_button'; import { LoadingIndicator } from 'mastodon/components/loading_indicator'; import { ShortNumber } from 'mastodon/components/short_number'; -import { useFetchFamiliarFollowers } from 'mastodon/features/account_timeline/hooks/familiar_followers'; import { domain } from 'mastodon/initial_state'; import { getAccountHidden } from 'mastodon/selectors/accounts'; import { useAppSelector, useAppDispatch } from 'mastodon/store'; diff --git a/app/javascript/mastodon/components/number_fields/index.tsx b/app/javascript/mastodon/components/number_fields/index.tsx index 36e99725c7..3363b210cb 100644 --- a/app/javascript/mastodon/components/number_fields/index.tsx +++ b/app/javascript/mastodon/components/number_fields/index.tsx @@ -1,22 +1,21 @@ +import classNames from 'classnames'; import { NavLink } from 'react-router-dom'; import type { MastodonLocationDescriptor } from 'mastodon/components/router'; import classes from './styles.module.scss'; -interface WrapperProps { - children: React.ReactNode; -} - -export const NumberFields: React.FC = ({ children }) => { - return
    {children}
; +export const NumberFields: React.FC> = ({ + children, + className, +}) => { + return
    {children}
; }; -interface ItemProps { +interface ItemProps extends React.ComponentPropsWithoutRef<'li'> { label: React.ReactNode; hint?: string; link?: MastodonLocationDescriptor; - children: React.ReactNode; } export const NumberFieldsItem: React.FC = ({ @@ -24,9 +23,10 @@ export const NumberFieldsItem: React.FC = ({ hint, link, children, + className, }) => { return ( -
  • +
  • {label} {link ? ( diff --git a/app/javascript/mastodon/components/number_fields/styles.module.scss b/app/javascript/mastodon/components/number_fields/styles.module.scss index e61ace8235..f8739f7c10 100644 --- a/app/javascript/mastodon/components/number_fields/styles.module.scss +++ b/app/javascript/mastodon/components/number_fields/styles.module.scss @@ -1,9 +1,9 @@ .list { display: flex; flex-wrap: wrap; - margin: 8px 0; + margin: 0; padding: 0; - gap: 4px 20px; + gap: 4px 24px; font-size: 13px; color: var(--color-text-secondary); } @@ -19,6 +19,7 @@ font-weight: 600; color: var(--color-text-primary); font-size: 15px; + white-space: nowrap; } a { diff --git a/app/javascript/mastodon/components/verified_badge.tsx b/app/javascript/mastodon/components/verified_badge.tsx deleted file mode 100644 index cc8d8bf409..0000000000 --- a/app/javascript/mastodon/components/verified_badge.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import { EmojiHTML } from '@/mastodon/components/emoji/html'; -import CheckIcon from '@/material-icons/400-24px/check.svg?react'; - -import type { OnAttributeHandler } from '../utils/html'; - -import { Icon } from './icon'; - -const onAttribute: OnAttributeHandler = (name, value, tagName) => { - if (name === 'rel' && tagName === 'a') { - if (value === 'me') { - return null; - } - return [ - name, - value - .split(' ') - .filter((x) => x !== 'me') - .join(' '), - ]; - } - return undefined; -}; - -interface Props { - link: string; -} -export const VerifiedBadge: React.FC = ({ link }) => ( - - - - -); diff --git a/app/javascript/mastodon/features/account_timeline/components/account_header.tsx b/app/javascript/mastodon/features/account_timeline/components/account_header.tsx index 5545c2fcd3..174f862365 100644 --- a/app/javascript/mastodon/features/account_timeline/components/account_header.tsx +++ b/app/javascript/mastodon/features/account_timeline/components/account_header.tsx @@ -19,10 +19,11 @@ import type { Account } from '@/mastodon/models/account'; import { getAccountHidden } from '@/mastodon/selectors/accounts'; import { useAppSelector, useAppDispatch } from '@/mastodon/store'; +import { FamiliarFollowers } from '../../../components/familiar_followers'; + import { AccountName } from './account_name'; import { AccountSubscriptionForm } from './account_subscription_form'; import { AccountButtons } from './buttons'; -import { FamiliarFollowers } from './familiar_followers'; import { AccountHeaderFields } from './fields'; import { MemorialNote } from './memorial_note'; import { MovedNote } from './moved_note'; @@ -160,7 +161,10 @@ export const AccountHeader: React.FC<{ {!isMe && !suspendedOrHidden && ( - + )} {!suspendedOrHidden && ( diff --git a/app/javascript/mastodon/features/collections/detail/accounts_list.tsx b/app/javascript/mastodon/features/collections/detail/accounts_list.tsx index 4a30f99dd6..ed8958ac82 100644 --- a/app/javascript/mastodon/features/collections/detail/accounts_list.tsx +++ b/app/javascript/mastodon/features/collections/detail/accounts_list.tsx @@ -3,22 +3,17 @@ import { useCallback, useRef, useState } from 'react'; import { defineMessages, FormattedMessage, useIntl } from 'react-intl'; import type { ApiCollectionJSON } from 'mastodon/api_types/collections'; -import { Account } from 'mastodon/components/account'; +import type { RenderButtonOptions } from 'mastodon/components/account_list_item'; +import { + AccountListItem, + AccountListItemFollowButton, +} from 'mastodon/components/account_list_item'; import { Button } from 'mastodon/components/button'; import { Callout } from 'mastodon/components/callout'; -import { FollowButton } from 'mastodon/components/follow_button'; -import { - NumberFields, - NumberFieldsItem, -} from 'mastodon/components/number_fields'; -import { RelativeTimestamp } from 'mastodon/components/relative_timestamp'; import { Article, ItemList, } from 'mastodon/components/scrollable_list/components'; -import { ShortNumber } from 'mastodon/components/short_number'; -import { useAccount } from 'mastodon/hooks/useAccount'; -import { useRelationship } from 'mastodon/hooks/useRelationship'; import { me } from 'mastodon/initial_state'; import { useConfirmRevoke } from './revoke_collection_inclusion_modal'; @@ -31,99 +26,6 @@ const messages = defineMessages({ }, }); -const AccountItem: React.FC<{ - accountId: string | undefined; - collectionOwnerId: string; - onRevoke: () => void; - withBio?: boolean; - withBorder?: boolean; -}> = ({ - accountId, - collectionOwnerId, - onRevoke, - withBio = true, - withBorder = true, -}) => { - const intl = useIntl(); - const account = useAccount(accountId); - const relationship = useRelationship(accountId); - - if (!accountId || !account) { - return null; - } - - // When viewing your own collection, only show the Follow button - // for accounts you're not following (anymore). - // Otherwise, always show the follow button in its various states. - const isOwnAccount = accountId === me; - const withoutButton = - isOwnAccount || - !relationship || - (collectionOwnerId === me && - (relationship.following || relationship.requested)); - - return ( -
    - - - } - hint={intl.formatNumber(account.followers_count)} - > - - - - - } - hint={intl.formatNumber(account.statuses_count)} - > - - - - - } - > - - - - } - /> - {!withoutButton && } - {isOwnAccount && ( - - )} -
    - ); -}; - const SensitiveScreen: React.FC<{ sensitive: boolean | undefined; focusTargetRef: React.RefObject; @@ -158,6 +60,7 @@ const SensitiveScreen: React.FC<{ /> } onPrimary={showAnyway} + className={classes.sensitiveScreen} > (null); const isOwnCollection = collection?.account_id === me; - const { items = [] } = collection ?? {}; + const { items = [], account_id: collectionOwnerId } = collection ?? {}; + + const renderAccountItemButton = useCallback( + ({ relationship, accountId }: RenderButtonOptions) => { + // When viewing your own collection, only show the Follow button + // for accounts you're not following anymore. + const withoutButton = + !relationship || + (collectionOwnerId === me && + (relationship.following || relationship.requested)); + + if (withoutButton) return null; + + if (accountId === me) { + return ( + + ); + } + + return ; + }, + [collectionOwnerId, confirmRevoke], + ); return ( - + <>

    - {items.map(({ account_id }, index) => ( -
    - -
    - ))} + + {items.map(({ account_id }, index) => ( +
    + +
    + ))} +
    )} - + ); }; diff --git a/app/javascript/mastodon/features/collections/detail/index.tsx b/app/javascript/mastodon/features/collections/detail/index.tsx index 683b6e1178..70422f9114 100644 --- a/app/javascript/mastodon/features/collections/detail/index.tsx +++ b/app/javascript/mastodon/features/collections/detail/index.tsx @@ -11,6 +11,7 @@ import { useAccountHandle } from '@/mastodon/components/display_name/default'; import ListAltIcon from '@/material-icons/400-24px/list_alt.svg?react'; import ShareIcon from '@/material-icons/400-24px/share.svg?react'; import type { ApiCollectionJSON } from 'mastodon/api_types/collections'; +import { Badge } from 'mastodon/components/badge'; import { Callout } from 'mastodon/components/callout'; import { Column } from 'mastodon/components/column'; import { ColumnHeader } from 'mastodon/components/column_header'; @@ -138,7 +139,7 @@ const CollectionHeader: React.FC<{ collection: ApiCollectionJSON }> = ({
    - {tag && #{tag.name}} + {tag && }

    {name}

    diff --git a/app/javascript/mastodon/features/collections/detail/styles.module.scss b/app/javascript/mastodon/features/collections/detail/styles.module.scss index 54d421e037..da972334ff 100644 --- a/app/javascript/mastodon/features/collections/detail/styles.module.scss +++ b/app/javascript/mastodon/features/collections/detail/styles.module.scss @@ -2,7 +2,8 @@ display: flex; flex-direction: column; gap: 12px; - padding: 24px; + padding: 16px; + padding-bottom: 24px; } .titleWithMenu { @@ -20,15 +21,6 @@ min-width: 0; } -.tag { - display: inline-block; - padding: 4px; - font-size: 13px; - font-weight: 500; - color: var(--color-text-secondary); - background: var(--color-bg-secondary); -} - .name { font-size: 22px; font-weight: 500; @@ -71,45 +63,12 @@ } } -.itemList { - padding-inline: 24px; +.sensitiveScreen { + margin: 16px; } .columnSubheading { - padding-bottom: 12px; + padding-inline: 16px; font-size: 15px; font-weight: 500; } - -.accountItemWrapper { - display: flex; - align-items: start; - padding-block: 16px; - - &[data-with-border='true'] { - border-bottom: 1px solid var(--color-border-primary); - } - - :global(.account__note) { - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 3; - line-clamp: 3; - } - - // Hide 'No description provided' message added by `Account` component - :global(.account__note--missing) { - display: none; - } -} - -.accountItem { - --account-name-size: 15px; - --account-handle-color: var(--color-text-secondary); - --account-handle-size: 13px; - --account-bio-color: var(--color-text-primary); - --account-bio-size: 13px; - --account-outer-spacing: 0; - - flex-grow: 1; -} diff --git a/app/javascript/mastodon/features/followers/components/list.tsx b/app/javascript/mastodon/features/followers/components/list.tsx index 8134a96ece..734bfeac0e 100644 --- a/app/javascript/mastodon/features/followers/components/list.tsx +++ b/app/javascript/mastodon/features/followers/components/list.tsx @@ -1,7 +1,7 @@ import { useMemo } from 'react'; import type { FC, ReactNode } from 'react'; -import { Account } from '@/mastodon/components/account'; +import { AccountListItem } from '@/mastodon/components/account_list_item'; import { Column } from '@/mastodon/components/column'; import { ColumnBackButton } from '@/mastodon/components/column_back_button'; import { LoadingIndicator } from '@/mastodon/components/loading_indicator'; @@ -53,12 +53,12 @@ export const AccountList: FC = ({ } const children = list?.items.map((followerId) => ( - + )) ?? []; if (prependAccountId) { children.unshift( - , + , ); } return children; diff --git a/app/javascript/mastodon/features/home_timeline/components/inline_follow_suggestions.tsx b/app/javascript/mastodon/features/home_timeline/components/inline_follow_suggestions.tsx index eb61183834..d7c463c5cc 100644 --- a/app/javascript/mastodon/features/home_timeline/components/inline_follow_suggestions.tsx +++ b/app/javascript/mastodon/features/home_timeline/components/inline_follow_suggestions.tsx @@ -16,12 +16,12 @@ import { } from 'mastodon/actions/suggestions'; import type { ApiSuggestionSourceJSON } from 'mastodon/api_types/suggestions'; import { Avatar } from 'mastodon/components/avatar'; +import { Badge, VerifiedBadge } from 'mastodon/components/badge'; import { DisplayName } from 'mastodon/components/display_name'; import { FollowButton } from 'mastodon/components/follow_button'; import { Icon } from 'mastodon/components/icon'; import { IconButton } from 'mastodon/components/icon_button'; import { LoadingIndicator } from 'mastodon/components/loading_indicator'; -import { VerifiedBadge } from 'mastodon/components/verified_badge'; import { domain } from 'mastodon/initial_state'; import { useAppDispatch, useAppSelector } from 'mastodon/store'; @@ -110,13 +110,12 @@ const Source: React.FC<{ id: ApiSuggestionSourceJSON }> = ({ id }) => { } return ( -
    - - {label} -
    + label={label} + icon={} + /> ); }; diff --git a/app/javascript/mastodon/features/lists/members.tsx b/app/javascript/mastodon/features/lists/members.tsx index 5aa8279c05..dd4cf3171d 100644 --- a/app/javascript/mastodon/features/lists/members.tsx +++ b/app/javascript/mastodon/features/lists/members.tsx @@ -19,6 +19,7 @@ import { apiRemoveAccountFromList, } from 'mastodon/api/lists'; import { Avatar } from 'mastodon/components/avatar'; +import { VerifiedBadge } from 'mastodon/components/badge'; import { Button } from 'mastodon/components/button'; import { Column } from 'mastodon/components/column'; import { ColumnHeader } from 'mastodon/components/column_header'; @@ -27,7 +28,6 @@ import { FollowersCounter } from 'mastodon/components/counters'; import { DisplayName } from 'mastodon/components/display_name'; import ScrollableList from 'mastodon/components/scrollable_list'; import { ShortNumber } from 'mastodon/components/short_number'; -import { VerifiedBadge } from 'mastodon/components/verified_badge'; import { useSearchAccounts } from 'mastodon/hooks/useSearchAccounts'; import { me } from 'mastodon/initial_state'; import { useAppDispatch, useAppSelector } from 'mastodon/store'; diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index c84ec96ac7..cad0dafef8 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -8688,20 +8688,6 @@ noscript { } } } - - &__familiar-followers { - display: flex; - align-items: center; - gap: 10px; - margin-block: 16px; - color: var(--color-text-secondary); - - a:any-link { - font-weight: 500; - text-decoration: none; - color: var(--color-text-primary); - } - } } .account__contents { @@ -8711,6 +8697,7 @@ noscript { .account__details { display: flex; flex-wrap: wrap; + align-items: center; column-gap: 1em; } @@ -10679,11 +10666,6 @@ noscript { } &__source { - display: inline-flex; - align-items: center; - max-width: 100%; - color: var(--color-text-tertiary); - gap: 4px; overflow: hidden; white-space: nowrap; cursor: help; @@ -10692,11 +10674,6 @@ noscript { overflow: hidden; text-overflow: ellipsis; } - - .icon { - width: 16px; - height: 16px; - } } } @@ -10722,11 +10699,6 @@ noscript { } } - .verified-badge { - font-size: 14px; - max-width: 100%; - } - .button { display: block; width: 100%; From 28b04ec24e3f7325c02010ac4c322791b62772ec Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 8 Apr 2026 10:46:37 -0400 Subject: [PATCH 16/20] Update sidekiq to version 8.1.2 (#38134) --- Gemfile.lock | 12 ++++++------ spec/rails_helper.rb | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index cafdda0191..15a40835ff 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -816,12 +816,12 @@ GEM securerandom (0.4.1) shoulda-matchers (7.0.1) activesupport (>= 7.1) - sidekiq (8.0.10) - connection_pool (>= 2.5.0) - json (>= 2.9.0) - logger (>= 1.6.2) - rack (>= 3.1.0) - redis-client (>= 0.23.2) + sidekiq (8.1.2) + connection_pool (>= 3.0.0) + json (>= 2.16.0) + logger (>= 1.7.0) + rack (>= 3.2.0) + redis-client (>= 0.26.0) sidekiq-bulk (0.2.0) sidekiq sidekiq-scheduler (6.0.1) diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 31487cc3ef..3e11cc6dfc 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -131,9 +131,9 @@ RSpec.configure do |config| config.around do |example| if example.metadata[:inline_jobs] == true - Sidekiq::Testing.inline! + Sidekiq.testing!(:inline) else - Sidekiq::Testing.fake! + Sidekiq.testing!(:fake) end example.run end From ba9eabccbfeb4be9168ef6a5c17670deabab6ffd Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 8 Apr 2026 18:01:37 +0200 Subject: [PATCH 17/20] Fix no notification being created when account is added to collection on creation (#38611) --- app/models/collection_item.rb | 4 ++++ app/services/create_collection_service.rb | 7 +++++++ spec/services/create_collection_service_spec.rb | 10 ++++++++++ 3 files changed, 21 insertions(+) diff --git a/app/models/collection_item.rb b/app/models/collection_item.rb index f7067fb2fc..8877f3f8da 100644 --- a/app/models/collection_item.rb +++ b/app/models/collection_item.rb @@ -47,6 +47,10 @@ class CollectionItem < ApplicationRecord update!(state: :revoked) end + def with_local_account? + account&.local? + end + def local_item_with_remote_account? local? && account&.remote? end diff --git a/app/services/create_collection_service.rb b/app/services/create_collection_service.rb index e38bddebba..1b94e41f44 100644 --- a/app/services/create_collection_service.rb +++ b/app/services/create_collection_service.rb @@ -9,6 +9,7 @@ class CreateCollectionService @collection.save! + notify_local_users distribute_add_activity distribute_feature_request_activities @@ -39,6 +40,12 @@ class CreateCollectionService end end + def notify_local_users + @collection.collection_items.select(&:with_local_account?).each do |collection_item| + LocalNotificationWorker.perform_async(@account.id, collection_item.id, collection_item.class.name, 'added_to_collection') + end + end + def activity_json ActiveModelSerializers::SerializableResource.new(@collection, serializer: ActivityPub::AddFeaturedCollectionSerializer, adapter: ActivityPub::Adapter).to_json end diff --git a/spec/services/create_collection_service_spec.rb b/spec/services/create_collection_service_spec.rb index ded9d4d567..1cca49764f 100644 --- a/spec/services/create_collection_service_spec.rb +++ b/spec/services/create_collection_service_spec.rb @@ -62,6 +62,16 @@ RSpec.describe CreateCollectionService do end end + context 'when some accounts are local' do + it 'schedules notifications' do + subject.call(params, author) + + expect(LocalNotificationWorker) + .to have_enqueued_sidekiq_job + .with(author.id, anything, 'CollectionItem', 'added_to_collection') + end + end + context 'when some accounts are remote' do let(:accounts) { Fabricate.times(2, :remote_account, feature_approval_policy: (0b10 << 16)) } From 97ba08113d4877fb2cfe38561fc41b057d07fb21 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 8 Apr 2026 18:03:24 +0200 Subject: [PATCH 18/20] Fix being able to quote someone you blocked (#38608) --- app/policies/status_policy.rb | 3 +- spec/requests/api/v1/statuses_spec.rb | 50 +++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/app/policies/status_policy.rb b/app/policies/status_policy.rb index 8cd011042f..0ec4a03a35 100644 --- a/app/policies/status_policy.rb +++ b/app/policies/status_policy.rb @@ -13,9 +13,8 @@ class StatusPolicy < ApplicationPolicy end end - # This is about requesting a quote post, not validating it def quote? - show? && record.quote_policy_for_account(current_account) != :denied + show? && !blocking_author? && record.quote_policy_for_account(current_account) != :denied end def reblog? diff --git a/spec/requests/api/v1/statuses_spec.rb b/spec/requests/api/v1/statuses_spec.rb index f9845ada7e..82ad845185 100644 --- a/spec/requests/api/v1/statuses_spec.rb +++ b/spec/requests/api/v1/statuses_spec.rb @@ -317,6 +317,56 @@ RSpec.describe '/api/v1/statuses' do end end + context 'with a quote in an unlisted message' do + let!(:quoted_status) { Fabricate(:status, quote_approval_policy: InteractionPolicy::POLICY_FLAGS[:public] << 16) } + let(:params) do + { + status: 'Hello, this is a quote', + quoted_status_id: quoted_status.id, + visibility: 'unlisted', + } + end + + it 'returns a quote post, as well as rate limit headers', :aggregate_failures do + expect { subject }.to change(user.account.statuses, :count).by(1) + + expect(response).to have_http_status(200) + expect(response.content_type) + .to start_with('application/json') + expect(response.parsed_body[:quote]).to be_present + expect(response.headers['X-RateLimit-Limit']).to eq RateLimiter::FAMILIES[:statuses][:limit].to_s + expect(response.headers['X-RateLimit-Remaining']).to eq (RateLimiter::FAMILIES[:statuses][:limit] - 1).to_s + end + + context 'when the quoter is blocked by the quotee' do + before do + quoted_status.account.block!(user.account) + end + + it 'returns an error and does not create a post', :aggregate_failures do + expect { subject }.to_not change(user.account.statuses, :count) + + expect(response).to have_http_status(404) + expect(response.content_type) + .to start_with('application/json') + end + end + + context 'when the quotee is blocked by the quoter' do + before do + user.account.block!(quoted_status.account) + end + + it 'returns an error and does not create a post', :aggregate_failures do + expect { subject }.to_not change(user.account.statuses, :count) + + expect(response).to have_http_status(404) + expect(response.content_type) + .to start_with('application/json') + end + end + end + context 'with a quote of a reblog' do let(:quoted_status) { Fabricate(:status, quote_approval_policy: InteractionPolicy::POLICY_FLAGS[:public] << 16) } let(:reblog) { Fabricate(:status, reblog: quoted_status) } From 4ad54b279d3b6f4a212e0f79ef7fff83aabaa3e8 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 8 Apr 2026 18:03:35 +0200 Subject: [PATCH 19/20] Add ability to search for a collection by URL (#38588) --- app/models/search.rb | 2 +- app/serializers/rest/search_serializer.rb | 1 + ...etch_remote_featured_collection_service.rb | 8 +++- app/services/fetch_resource_service.rb | 2 +- app/services/resolve_url_service.rb | 16 +++++++ app/services/search_service.rb | 2 +- spec/services/resolve_url_service_spec.rb | 43 +++++++++++++++++++ spec/services/search_service_spec.rb | 2 +- 8 files changed, 70 insertions(+), 6 deletions(-) diff --git a/app/models/search.rb b/app/models/search.rb index 676c2a7f8e..66c9173e02 100644 --- a/app/models/search.rb +++ b/app/models/search.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true class Search < ActiveModelSerializers::Model - attributes :accounts, :statuses, :hashtags + attributes :accounts, :statuses, :hashtags, :collections end diff --git a/app/serializers/rest/search_serializer.rb b/app/serializers/rest/search_serializer.rb index ee9b421eb2..8141a4c69c 100644 --- a/app/serializers/rest/search_serializer.rb +++ b/app/serializers/rest/search_serializer.rb @@ -4,4 +4,5 @@ class REST::SearchSerializer < ActiveModel::Serializer has_many :accounts, serializer: REST::AccountSerializer has_many :statuses, serializer: REST::StatusSerializer has_many :hashtags, serializer: REST::TagSerializer + has_many :collections, serializer: REST::CollectionSerializer end diff --git a/app/services/activitypub/fetch_remote_featured_collection_service.rb b/app/services/activitypub/fetch_remote_featured_collection_service.rb index babad143e1..968dc6811e 100644 --- a/app/services/activitypub/fetch_remote_featured_collection_service.rb +++ b/app/services/activitypub/fetch_remote_featured_collection_service.rb @@ -3,8 +3,12 @@ class ActivityPub::FetchRemoteFeaturedCollectionService < BaseService include JsonLdHelper - def call(uri, request_id: nil, on_behalf_of: nil) - json = fetch_resource(uri, true, on_behalf_of) + def call(uri, request_id: nil, prefetched_body: nil, on_behalf_of: nil) + json = if prefetched_body.nil? + fetch_resource(uri, true, on_behalf_of) + else + body_to_json(prefetched_body, compare_id: uri) + end return unless supported_context?(json) return unless json['type'] == 'FeaturedCollection' diff --git a/app/services/fetch_resource_service.rb b/app/services/fetch_resource_service.rb index 514c838d64..eb3d000a1d 100644 --- a/app/services/fetch_resource_service.rb +++ b/app/services/fetch_resource_service.rb @@ -63,7 +63,7 @@ class FetchResourceService < BaseService end def expected_type?(json) - equals_or_includes_any?(json['type'], ActivityPub::Activity::Create::SUPPORTED_TYPES + ActivityPub::Activity::Create::CONVERTED_TYPES) + equals_or_includes_any?(json['type'], ActivityPub::Activity::Create::SUPPORTED_TYPES + ActivityPub::Activity::Create::CONVERTED_TYPES + %w(FeaturedCollection)) end def process_html(response) diff --git a/app/services/resolve_url_service.rb b/app/services/resolve_url_service.rb index 899f586b81..9a136439b0 100644 --- a/app/services/resolve_url_service.rb +++ b/app/services/resolve_url_service.rb @@ -28,6 +28,10 @@ class ResolveURLService < BaseService status = FetchRemoteStatusService.new.call(resource_url, prefetched_body: body) authorize_with @on_behalf_of, status, :show? unless status.nil? status + elsif type == 'FeaturedCollection' && Mastodon::Feature.collections_enabled? + collection = ActivityPub::FetchRemoteFeaturedCollectionService.new.call(resource_url, prefetched_body: body) + authorize_with @on_behalf_of, collection, :show? unless collection.nil? + collection end end @@ -111,9 +115,21 @@ class ResolveURLService < BaseService Account.find_remote(username, domain) end + when 'collections' + return unless recognized_params[:action] == 'show' + + check_collection(Collection.find_by(id: recognized_params[:id])) end end + def check_collection(collection) + return if collection.nil? + + authorize_with @on_behalf_of, collection, :show? + rescue Mastodon::NotPermittedError + nil + end + def check_local_status(status) return if status.nil? diff --git a/app/services/search_service.rb b/app/services/search_service.rb index ffe380c2e0..fd5a186cd3 100644 --- a/app/services/search_service.rb +++ b/app/services/search_service.rb @@ -64,7 +64,7 @@ class SearchService < BaseService end def default_results - { accounts: [], hashtags: [], statuses: [] } + { accounts: [], hashtags: [], statuses: [], collections: [] } end def url_query? diff --git a/spec/services/resolve_url_service_spec.rb b/spec/services/resolve_url_service_spec.rb index eaf00c1ed8..6174d8cac9 100644 --- a/spec/services/resolve_url_service_spec.rb +++ b/spec/services/resolve_url_service_spec.rb @@ -30,6 +30,49 @@ RSpec.describe ResolveURLService do expect(subject.call(url)).to eq known_account end + context 'when searching for a remote collection', feature: :collections do + let(:account) { Fabricate(:account) } + let(:collection_account) { Fabricate(:account, domain: 'example.com', protocol: :activitypub) } + + let(:uri) { 'https://example.com/featured_collections/1' } + + let(:payload) do + { + '@context' => 'https://www.w3.org/ns/activitystreams', + 'id' => uri, + 'type' => 'FeaturedCollection', + 'name' => 'Incredible people', + 'summary' => 'These are really amazing', + 'attributedTo' => collection_account.uri, + 'sensitive' => false, + 'discoverable' => true, + 'totalItems' => 0, + } + end + + before do + stub_request(:get, uri).to_return(status: 200, body: payload.to_json, headers: { 'Content-Type': 'application/activity+json' }) + end + + it 'returns the collection' do + expect(subject.call(uri, on_behalf_of: account)) + .to be_a(Collection) + .and have_attributes( + uri: uri + ) + end + end + + context 'when searching for a local collection', feature: :collections do + let(:account) { Fabricate(:account) } + let(:collection) { Fabricate(:collection) } + + it 'returns the collection' do + expect(subject.call(ActivityPub::TagManager.instance.uri_for(collection), on_behalf_of: account)) + .to eq(collection) + end + end + context 'when searching for a remote private status' do let(:account) { Fabricate(:account) } let(:poster) { Fabricate(:account, domain: 'example.com') } diff --git a/spec/services/search_service_spec.rb b/spec/services/search_service_spec.rb index 3260addb31..07aa061518 100644 --- a/spec/services/search_service_spec.rb +++ b/spec/services/search_service_spec.rb @@ -86,6 +86,6 @@ RSpec.describe SearchService do end def empty_results - { accounts: [], hashtags: [], statuses: [] } + { accounts: [], hashtags: [], statuses: [], collections: [] } end end From 66fdd3ae65e13349fbc0b2818d4b91a389075553 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 8 Apr 2026 18:40:51 +0200 Subject: [PATCH 20/20] Fix serialization of `added_to_collection` notifications (#38612) --- app/models/notification.rb | 9 +++++++++ app/models/notification_group.rb | 1 + app/serializers/rest/notification_group_serializer.rb | 2 +- app/serializers/rest/notification_serializer.rb | 2 +- 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/app/models/notification.rb b/app/models/notification.rb index 19b057108e..a78db0281c 100644 --- a/app/models/notification.rb +++ b/app/models/notification.rb @@ -147,6 +147,15 @@ class Notification < ApplicationRecord end end + def target_collection + case type + when :added_to_collection + collection_item&.collection + when :collection_update + collection + end + end + class << self def browserable(types: [], exclude_types: [], from_account_id: nil, include_filtered: false) requested_types = if types.empty? diff --git a/app/models/notification_group.rb b/app/models/notification_group.rb index bf790bf7cd..1d43536443 100644 --- a/app/models/notification_group.rb +++ b/app/models/notification_group.rb @@ -48,6 +48,7 @@ class NotificationGroup < ActiveModelSerializers::Model delegate :type, :target_status, + :target_collection, :report, :account_relationship_severance_event, :account_warning, diff --git a/app/serializers/rest/notification_group_serializer.rb b/app/serializers/rest/notification_group_serializer.rb index 6089a2446a..3f95d78fc4 100644 --- a/app/serializers/rest/notification_group_serializer.rb +++ b/app/serializers/rest/notification_group_serializer.rb @@ -14,7 +14,7 @@ class REST::NotificationGroupSerializer < ActiveModel::Serializer belongs_to :account_relationship_severance_event, key: :event, if: :relationship_severance_event?, serializer: REST::AccountRelationshipSeveranceEventSerializer belongs_to :account_warning, key: :moderation_warning, if: :moderation_warning_event?, serializer: REST::AccountWarningSerializer belongs_to :generated_annual_report, key: :annual_report, if: :annual_report_event?, serializer: REST::AnnualReportEventSerializer - belongs_to :collection, if: :collection_type?, serializer: REST::CollectionSerializer + belongs_to :target_collection, key: :collection, if: :collection_type?, serializer: REST::CollectionSerializer def sample_account_ids object.sample_accounts.pluck(:id).map(&:to_s) diff --git a/app/serializers/rest/notification_serializer.rb b/app/serializers/rest/notification_serializer.rb index ab1626cf3b..f337aab943 100644 --- a/app/serializers/rest/notification_serializer.rb +++ b/app/serializers/rest/notification_serializer.rb @@ -11,7 +11,7 @@ class REST::NotificationSerializer < ActiveModel::Serializer belongs_to :report, if: :report_type?, serializer: REST::ReportSerializer belongs_to :account_relationship_severance_event, key: :event, if: :relationship_severance_event?, serializer: REST::AccountRelationshipSeveranceEventSerializer belongs_to :account_warning, key: :moderation_warning, if: :moderation_warning_event?, serializer: REST::AccountWarningSerializer - belongs_to :collection, if: :collection_type?, serializer: REST::CollectionSerializer + belongs_to :target_collection, key: :collection, if: :collection_type?, serializer: REST::CollectionSerializer def id object.id.to_s