diff --git a/Gemfile.lock b/Gemfile.lock index 79d3b1e637..8dd1a7ed08 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -691,7 +691,7 @@ GEM scenic (1.7.0) activerecord (>= 4.0.0) railties (>= 4.0.0) - selenium-webdriver (4.17.0) + selenium-webdriver (4.18.1) base64 (~> 0.2) rexml (~> 3.2, >= 3.2.5) rubyzip (>= 1.2.2, < 3.0) @@ -793,7 +793,7 @@ GEM webfinger (1.2.0) activesupport httpclient (>= 2.4) - webmock (3.20.0) + webmock (3.21.2) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) diff --git a/app/controllers/custom_css_controller.rb b/app/controllers/custom_css_controller.rb index 62f8e0d772..eb6417698a 100644 --- a/app/controllers/custom_css_controller.rb +++ b/app/controllers/custom_css_controller.rb @@ -16,6 +16,6 @@ class CustomCssController < ActionController::Base # rubocop:disable Rails/Appli helper_method :custom_css_styles def set_user_roles - @user_roles = UserRole.where(highlighted: true).where.not(color: [nil, '']) + @user_roles = UserRole.providing_styles end end diff --git a/app/javascript/mastodon/features/explore/index.jsx b/app/javascript/mastodon/features/explore/index.jsx index 8ebaccd013..8cc8a4b009 100644 --- a/app/javascript/mastodon/features/explore/index.jsx +++ b/app/javascript/mastodon/features/explore/index.jsx @@ -8,8 +8,8 @@ import { NavLink, Switch, Route } from 'react-router-dom'; import { connect } from 'react-redux'; +import ExploreIcon from '@/material-icons/400-24px/explore.svg?react'; import SearchIcon from '@/material-icons/400-24px/search.svg?react'; -import TagIcon from '@/material-icons/400-24px/tag.svg?react'; import Column from 'mastodon/components/column'; import ColumnHeader from 'mastodon/components/column_header'; import Search from 'mastodon/features/compose/containers/search_container'; @@ -59,7 +59,7 @@ class Explore extends PureComponent { + ) : ( )} diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 790a971cdf..2eebd1369c 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -277,7 +277,6 @@ "follow_request.authorize": "ترخيص", "follow_request.reject": "رفض", "follow_requests.unlocked_explanation": "حتى وإن كان حسابك غير مقفل، يعتقد فريق {domain} أنك قد ترغب في مراجعة طلبات المتابعة من هذه الحسابات يدوياً.", - "follow_suggestions.curated_suggestion": "خيار المحرر", "follow_suggestions.dismiss": "لا تُظهرها مجدّدًا", "follow_suggestions.personalized_suggestion": "توصية مخصصة", "follow_suggestions.popular_suggestion": "توصية رائجة", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 18bba99117..8e69d434b4 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -199,7 +199,6 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Refugar", "follow_requests.unlocked_explanation": "Magar que la to cuenta nun seya privada, el personal del dominiu «{domain}» pensó qu'a lo meyor quies revisar manualmente les solicitúes de siguimientu d'estes cuentes.", - "follow_suggestions.curated_suggestion": "Escoyeta del sirvidor", "follow_suggestions.dismiss": "Nun volver amosar", "follow_suggestions.personalized_suggestion": "Suxerencia personalizada", "follow_suggestions.popular_suggestion": "Suxerencia popular", diff --git a/app/javascript/mastodon/locales/be.json b/app/javascript/mastodon/locales/be.json index 7e21703b4a..c0b744fbaf 100644 --- a/app/javascript/mastodon/locales/be.json +++ b/app/javascript/mastodon/locales/be.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Аўтарызацыя", "follow_request.reject": "Адхіліць", "follow_requests.unlocked_explanation": "Ваш акаўнт не схаваны, аднак прадстаўнікі {domain} палічылі, што вы можаце захацець праглядзець запыты на падпіску з гэтых профіляў уручную.", - "follow_suggestions.curated_suggestion": "Выбар сервера", + "follow_suggestions.curated_suggestion": "Выбар адміністрацыі", "follow_suggestions.dismiss": "Не паказваць зноў", + "follow_suggestions.hints.featured": "Гэты профіль быў выбраны ўручную камандай {domain}.", + "follow_suggestions.hints.friends_of_friends": "Гэты профіль папулярны сярод людзей, на якіх вы падпісаліся.", + "follow_suggestions.hints.most_followed": "Гэты профіль - адзін з профіляў з самай вялікай колькасцю падпісак на {domain}.", + "follow_suggestions.hints.most_interactions": "У апошні час гэты профіль прыцягвае шмат увагі на {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Гэты профіль падобны на профілі, на якія вы нядаўна падпісаліся.", "follow_suggestions.personalized_suggestion": "Персаналізаваная прапанова", "follow_suggestions.popular_suggestion": "Папулярная прапанова", "follow_suggestions.view_all": "Праглядзець усё", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 3e7f6e51b2..5acee5cdd0 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -277,7 +277,6 @@ "follow_request.authorize": "Упълномощаване", "follow_request.reject": "Отхвърляне", "follow_requests.unlocked_explanation": "Въпреки че акаунтът ви не е заключен, служителите на {domain} помислиха, че може да искате да преглеждате ръчно заявките за последване на тези профили.", - "follow_suggestions.curated_suggestion": "Избор от редакторите", "follow_suggestions.dismiss": "Без ново показване", "follow_suggestions.personalized_suggestion": "Персонализирано предложение", "follow_suggestions.popular_suggestion": "Популярно предложение", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 42de594cdc..d50f38aa15 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Autoritza", "follow_request.reject": "Rebutja", "follow_requests.unlocked_explanation": "Tot i que el teu compte no està blocat, el personal de {domain} ha pensat que és possible que vulguis revisar manualment les sol·licituds de seguiment d’aquests comptes.", - "follow_suggestions.curated_suggestion": "Tria de l'editor", + "follow_suggestions.curated_suggestion": "Tria de l'equip", "follow_suggestions.dismiss": "No ho tornis a mostrar", + "follow_suggestions.hints.featured": "Aquest perfil ha estat triat per l'equip de {domain}.", + "follow_suggestions.hints.friends_of_friends": "Aquest perfil és popular entre la gent que segueixes.", + "follow_suggestions.hints.most_followed": "Aquest perfil és un dels més seguits a {domain}.", + "follow_suggestions.hints.most_interactions": "Aquest perfil ha estat rebent un munt d'atenció recentment a {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Aquest perfil és similar a d'altres que heu seguit recentment.", "follow_suggestions.personalized_suggestion": "Suggeriment personalitzat", "follow_suggestions.popular_suggestion": "Suggeriment popular", "follow_suggestions.view_all": "Mostra-ho tot", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index 2856ac4a45..00b27e0521 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -276,9 +276,14 @@ "firehose.remote": "Ostatní servery", "follow_request.authorize": "Autorizovat", "follow_request.reject": "Zamítnout", - "follow_requests.unlocked_explanation": "Přestože váš účet není zamčený, administrátor {domain} usoudil, že byste mohli chtít tyto žádosti o sledování zkontrolovat ručně.", - "follow_suggestions.curated_suggestion": "Návrh serveru", + "follow_requests.unlocked_explanation": "Přestože váš účet není uzamčen, personál {domain} usoudil, že byste mohli chtít tyto požadavky na sledování zkontrolovat ručně.", + "follow_suggestions.curated_suggestion": "Výběr personálů", "follow_suggestions.dismiss": "Znovu nezobrazovat", + "follow_suggestions.hints.featured": "Tento profil byl ručně vybrán týmem {domain}.", + "follow_suggestions.hints.friends_of_friends": "Tento profil je populární mezi lidmi, které sledujete.", + "follow_suggestions.hints.most_followed": "Tento profil je jedním z nejvíce sledovaných na {domain}.", + "follow_suggestions.hints.most_interactions": "Tento profil nedávno dostalo velkou pozornost na {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Tento profil je podobný profilům, které jste nedávno sledovali.", "follow_suggestions.personalized_suggestion": "Přizpůsobený návrh", "follow_suggestions.popular_suggestion": "Populární návrh", "follow_suggestions.view_all": "Zobrazit vše", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index f023c5a2a7..294cdde38f 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -277,7 +277,6 @@ "follow_request.authorize": "Awdurdodi", "follow_request.reject": "Gwrthod", "follow_requests.unlocked_explanation": "Er nid yw eich cyfrif wedi'i gloi, roedd y staff {domain} yn meddwl efallai hoffech adolygu ceisiadau dilyn o'r cyfrifau rhain wrth law.", - "follow_suggestions.curated_suggestion": "Dewis y Golygydd", "follow_suggestions.dismiss": "Peidio â dangos hwn eto", "follow_suggestions.personalized_suggestion": "Awgrym personol", "follow_suggestions.popular_suggestion": "Awgrym poblogaidd", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 548421b3c0..b9ef82bf0c 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -277,7 +277,13 @@ "follow_request.authorize": "Godkend", "follow_request.reject": "Afvis", "follow_requests.unlocked_explanation": "Selvom din konto ikke er låst, synes {domain}-personalet, du måske bør gennemgå disse anmodninger manuelt.", + "follow_suggestions.curated_suggestion": "Personaleudvalgt", "follow_suggestions.dismiss": "Vis ikke igen", + "follow_suggestions.hints.featured": "Denne profil er håndplukket af {domain}-teamet.", + "follow_suggestions.hints.friends_of_friends": "Denne profil er populær blandt de personer, som følges.", + "follow_suggestions.hints.most_followed": "Denne profil er en af de mest fulgte på {domain}.", + "follow_suggestions.hints.most_interactions": "Denne profil har for nylig fået stor opmærksomhed på {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Denne profil svarer til de profiler, som senest er blevet fulgt.", "follow_suggestions.personalized_suggestion": "Personligt forslag", "follow_suggestions.popular_suggestion": "Populært forslag", "follow_suggestions.view_all": "Vis alle", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index f29d016b07..2c94314810 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Genehmigen", "follow_request.reject": "Ablehnen", "follow_requests.unlocked_explanation": "Auch wenn dein Konto öffentlich bzw. nicht geschützt ist, haben die Moderator*innen von {domain} gedacht, dass du diesen Follower lieber manuell bestätigen solltest.", - "follow_suggestions.curated_suggestion": "Auswahl des Herausgebers", + "follow_suggestions.curated_suggestion": "Vom Server empfohlen", "follow_suggestions.dismiss": "Nicht mehr anzeigen", + "follow_suggestions.hints.featured": "Dieses Profil wurde vom {domain}-Team ausgewählt.", + "follow_suggestions.hints.friends_of_friends": "Dieses Profil ist bei deinen Followern beliebt.", + "follow_suggestions.hints.most_followed": "Dieses Profil wird von den meisten auf {domain} gefolgt.", + "follow_suggestions.hints.most_interactions": "Dieses Profil erhielt auf {domain} in letzter Zeit viel Aufmerksamkeit.", + "follow_suggestions.hints.similar_to_recently_followed": "Dieses Profil ähnelt den Profilen, denen du in letzter Zeit gefolgt hast.", "follow_suggestions.personalized_suggestion": "Persönliche Empfehlung", "follow_suggestions.popular_suggestion": "Beliebte Empfehlung", "follow_suggestions.view_all": "Alle anzeigen", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index 84cba3092f..6232207af2 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -277,7 +277,6 @@ "follow_request.authorize": "Authorise", "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", - "follow_suggestions.curated_suggestion": "Editors' Choice", "follow_suggestions.dismiss": "Don't show again", "follow_suggestions.personalized_suggestion": "Personalised suggestion", "follow_suggestions.popular_suggestion": "Popular suggestion", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 87ab62cda2..3b63c505e4 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Rechazar", "follow_requests.unlocked_explanation": "A pesar de que tu cuenta no es privada, el equipo de {domain} pensó que podrías querer revisar manualmente las solicitudes de seguimiento de estas cuentas.", - "follow_suggestions.curated_suggestion": "Cuentas elegidas del servidor", + "follow_suggestions.curated_suggestion": "Selección del equipo", "follow_suggestions.dismiss": "No mostrar de nuevo", + "follow_suggestions.hints.featured": "Este perfil fue seleccionado a mano por el equipo de {domain}.", + "follow_suggestions.hints.friends_of_friends": "Este perfil es popular entre las cuentas que seguís.", + "follow_suggestions.hints.most_followed": "Este perfil es uno de los más seguidos en {domain}.", + "follow_suggestions.hints.most_interactions": "Este perfil ha estado recibiendo recientemente mucha atención en {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Este perfil es similar a los que comenzaste a seguir.", "follow_suggestions.personalized_suggestion": "Sugerencia personalizada", "follow_suggestions.popular_suggestion": "Sugerencia popular", "follow_suggestions.view_all": "Ver todo", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 95b87b26dd..9ee2cbca14 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -277,8 +277,9 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Rechazar", "follow_requests.unlocked_explanation": "A pesar de que tu cuenta no es privada, el personal de {domain} ha pensado que quizás deberías revisar manualmente las solicitudes de seguimiento de estas cuentas.", - "follow_suggestions.curated_suggestion": "Recomendaciones del equipo", "follow_suggestions.dismiss": "No mostrar de nuevo", + "follow_suggestions.hints.friends_of_friends": "Este perfil es popular entre las personas que sigues.", + "follow_suggestions.hints.most_followed": "Este perfil es uno de los más seguidos en {domain}.", "follow_suggestions.personalized_suggestion": "Sugerencia personalizada", "follow_suggestions.popular_suggestion": "Sugerencia popular", "follow_suggestions.view_all": "Ver todo", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 3e4f36ba5a..5b5263b3f4 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -277,8 +277,9 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Rechazar", "follow_requests.unlocked_explanation": "A pesar de que tu cuenta no es privada, el personal de {domain} ha pensado que quizás deberías revisar manualmente las solicitudes de seguimiento de estas cuentas.", - "follow_suggestions.curated_suggestion": "Recomendaciones del equipo", "follow_suggestions.dismiss": "No mostrar de nuevo", + "follow_suggestions.hints.friends_of_friends": "Este perfil es popular entre las personas que sigues.", + "follow_suggestions.hints.most_followed": "Este perfil es uno de los más seguidos en {domain}.", "follow_suggestions.personalized_suggestion": "Sugerencia personalizada", "follow_suggestions.popular_suggestion": "Sugerencia popular", "follow_suggestions.view_all": "Ver todo", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index e80e7fcf46..da7d03ce41 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Baimendu", "follow_request.reject": "Ukatu", "follow_requests.unlocked_explanation": "Zure kontua blokeatuta ez badago ere, {domain} domeinuko arduradunek uste dute kontu hauetako jarraipen eskaerak agian eskuz begiratu nahiko dituzula.", - "follow_suggestions.curated_suggestion": "Zerbitzariaren iradokizunak", + "follow_suggestions.curated_suggestion": "Domeinuaren iradokizuna", "follow_suggestions.dismiss": "Ez erakutsi berriro", + "follow_suggestions.hints.featured": "Profil hau {domain} domeinuko taldeak eskuz aukeratu du.", + "follow_suggestions.hints.friends_of_friends": "Profil hau ezaguna da jarraitzen duzun jendearen artean.", + "follow_suggestions.hints.most_followed": "Profil hau {domain} domeinuan gehien jarraitzen den profiletako bat da.", + "follow_suggestions.hints.most_interactions": "Profil hau arreta handia jasotzen ari da berriki {domain} domeinuan.", + "follow_suggestions.hints.similar_to_recently_followed": "Profil hau duela gutxi jarraitu dituzun profil askoren antzekoa da.", "follow_suggestions.personalized_suggestion": "Iradokizun pertsonalizatua", "follow_suggestions.popular_suggestion": "Iradokizun ezaguna", "follow_suggestions.view_all": "Ikusi denak", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 277f0f2e72..484baae122 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Valtuuta", "follow_request.reject": "Hylkää", "follow_requests.unlocked_explanation": "Vaikkei tiliäsi ole lukittu, palvelimen {domain} ylläpito on arvioinut, että saatat olla halukas tarkistamaan nämä seuraamispyynnöt erikseen.", - "follow_suggestions.curated_suggestion": "Päätoimittajan valinta", + "follow_suggestions.curated_suggestion": "Ylläpidon valinta", "follow_suggestions.dismiss": "Älä näytä uudelleen", + "follow_suggestions.hints.featured": "Tämän profiilin on valinnut palvelimen {domain} tiimi.", + "follow_suggestions.hints.friends_of_friends": "Tämä profiili on suosittu seuraamiesi henkilöiden parissa.", + "follow_suggestions.hints.most_followed": "Tämä profiili on yksi seuratuimmista palvelimella {domain}.", + "follow_suggestions.hints.most_interactions": "Tämä profiili on viime aikoina saanut paljon huomiota palvelimella {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Tämä profiili on samankaltainen kuin profiilit, joita olet viimeksi seurannut.", "follow_suggestions.personalized_suggestion": "Personoitu ehdotus", "follow_suggestions.popular_suggestion": "Suosittu ehdotus", "follow_suggestions.view_all": "Näytä kaikki", diff --git a/app/javascript/mastodon/locales/fil.json b/app/javascript/mastodon/locales/fil.json index 938251e5f5..04208c5544 100644 --- a/app/javascript/mastodon/locales/fil.json +++ b/app/javascript/mastodon/locales/fil.json @@ -49,6 +49,7 @@ "account.unendorse": "Huwag itampok sa profile", "admin.dashboard.retention.cohort_size": "Mga bagong tagagamit", "alert.rate_limited.message": "Mangyaring subukan muli pagkatapos ng {retry_time, time, medium}.", + "audio.hide": "Itago ang tunog", "bundle_column_error.error.title": "Naku!", "bundle_column_error.network.body": "Nagkaroon ng kamalian habang sinusubukang i-karga ang pahinang ito. Maaaring dahil ito sa pansamantalang problema ng iyong koneksyon sa internet o ang server na ito.", "bundle_column_error.network.title": "Kamaliang network", @@ -100,6 +101,7 @@ "compose_form.encryption_warning": "Ang mga post sa Mastodon ay hindi naka-encrypt nang dulo-dulo. Huwag magbahagi ng anumang sensitibong impormasyon sa Mastodon.", "compose_form.hashtag_warning": "Hindi maililista ang post na ito sa anumang hashtag dahil hindi ito nakapubliko. Mga nakapublikong post lamang ang mahahanap ayon sa hashtag.", "compose_form.placeholder": "Anong nangyari?", + "compose_form.poll.multiple": "Maraming pagpipilian", "compose_form.poll.single": "Piliin ang isa", "compose_form.reply": "Tumugon", "compose_form.spoiler.unmarked": "Idagdag ang babala sa nilalaman", @@ -109,6 +111,9 @@ "confirmations.block.message": "Sigurado ka bang gusto mong harangan si {name}?", "confirmations.cancel_follow_request.confirm": "Bawiin ang kahilingan", "confirmations.cancel_follow_request.message": "Sigurdo ka bang gusto mong bawiin ang kahilingang sundan si/ang {name}?", + "confirmations.delete.message": "Sigurado ka bang gusto mong burahin ang post na ito?", + "confirmations.delete_list.confirm": "Tanggalin", + "confirmations.delete_list.message": "Sigurado ka bang gusto mong burahin ang listahang ito?", "confirmations.discard_edit_media.confirm": "Ipagpaliban", "confirmations.domain_block.confirm": "Harangan ang buong domain", "confirmations.edit.confirm": "Baguhin", @@ -188,6 +193,7 @@ "intervals.full.minutes": "{number, plural, one {# minuto} other {# na minuto}}", "keyboard_shortcuts.description": "Paglalarawan", "keyboard_shortcuts.down": "Ilipat pababa sa talaan", + "keyboard_shortcuts.mention": "Banggitin ang may-akda", "keyboard_shortcuts.requests": "Buksan ang talaan ng mga kahilingan sa pagsunod", "keyboard_shortcuts.up": "Ilipat pataas sa talaan", "lightbox.close": "Isara", @@ -203,24 +209,35 @@ "loading_indicator.label": "Kumakarga…", "navigation_bar.about": "Tungkol dito", "navigation_bar.blocks": "Nakaharang na mga tagagamit", + "navigation_bar.direct": "Mga palihim na banggit", "navigation_bar.favourites": "Mga paborito", + "navigation_bar.follows_and_followers": "Mga sinusundan at tagasunod", "navigation_bar.lists": "Mga listahan", "navigation_bar.search": "Maghanap", "notification.admin.report": "Iniulat ni {name} si {target}", "notification.follow": "Sinundan ka ni {name}", "notification.follow_request": "Hinihiling ni {name} na sundan ka", "notification.mention": "Binanggit ka ni {name}", + "notifications.clear": "Burahin mga abiso", "notifications.column_settings.admin.report": "Mga bagong ulat:", "notifications.column_settings.favourite": "Mga paborito:", "notifications.column_settings.follow": "Mga bagong tagasunod:", + "notifications.column_settings.unread_notifications.category": "Hindi Nabasang mga Abiso", "notifications.column_settings.update": "Mga pagbago:", "notifications.filter.all": "Lahat", + "notifications.mark_as_read": "Markahan lahat ng abiso bilang nabasa na", "onboarding.action.back": "Ibalik mo ako", "onboarding.actions.back": "Ibalik mo ako", + "onboarding.profile.note_hint": "Maaari mong @bangitin ang ibang mga tao o mga #hashtag…", "onboarding.profile.save_and_continue": "Iimbak at magpatuloy", "onboarding.share.next_steps": "Mga posibleng susunod na hakbang:", + "poll.closed": "Sarado", + "poll.reveal": "Ipakita ang mga resulta", "poll.voted": "Binoto mo para sa sagot na ito", "poll_button.remove_poll": "Tanggalin ang boto", + "privacy.direct.long": "Lahat ng mga binanggit sa post", + "privacy.private.long": "Mga tagasunod mo lamang", + "privacy.private.short": "Mga tagasunod", "relative_time.days": "{number}a", "relative_time.full.days": "{number, plural, one {# araw} other {# na araw}} ang nakalipas", "relative_time.full.hours": "{number, plural, one {# oras} other {# na oras}} ang nakalipas", @@ -247,15 +264,24 @@ "report.thanks.title_actionable": "Salamat sa pag-uulat, titingnan namin ito.", "report_notification.categories.other": "Iba pa", "search_results.all": "Lahat", + "search_results.see_all": "Ipakita lahat", "server_banner.learn_more": "Matuto nang higit pa", + "server_banner.server_stats": "Katayuan ng serbiro:", + "status.block": "Harangan si @{name}", + "status.delete": "Tanggalin", + "status.direct": "Palihim na banggitin si/ang @{name}", "status.direct_indicator": "Palihim na banggit", "status.edit": "Baguhin", "status.edited": "Binago noong {date}", "status.edited_x_times": "Binago {count, plural, one {{count} beses} other {{count} na beses}}", "status.history.created": "Nilikha ni/ng {name} {date}", "status.history.edited": "Binago ni/ng {name} {date}", + "status.media.open": "Pindutin upang buksan", + "status.media.show": "Pindutin upang ipakita", "status.mention": "Banggitin ang/si @{name}", "status.more": "Higit pa", + "status.read_more": "Basahin ang higit pa", + "status.reblogs.empty": "Wala pang nagpalakas ng post na ito. Kung may sinumang nagpalakas, makikita sila rito.", "status.reply": "Tumugon", "status.report": "I-ulat si/ang @{name}", "status.sensitive_warning": "Sensitibong nilalaman", @@ -267,6 +293,7 @@ "status.translate": "Isalin", "status.translated_from_with": "Isalin mula sa {lang} gamit ang {provider}", "status.uncached_media_warning": "Hindi makuha ang paunang tigin", + "tabs_bar.notifications": "Mga abiso", "time_remaining.days": "{number, plural, one {# araw} other {# na araw}} ang natitira", "time_remaining.hours": "{number, plural, one {# oras} other {# na oras}} ang natitira", "time_remaining.minutes": "{number, plural, one {# minuto} other {# na minuto}} ang natitira", diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json index abd2ab2681..13e49eb314 100644 --- a/app/javascript/mastodon/locales/fo.json +++ b/app/javascript/mastodon/locales/fo.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Veit myndugleika", "follow_request.reject": "Nokta", "follow_requests.unlocked_explanation": "Sjálvt um konta tín ikki er læst, so hugsa {domain} starvsfólkini, at tú kanska hevur hug at kanna umbønir um at fylgja frá hesum kontum við hond.", - "follow_suggestions.curated_suggestion": "Val umsjónarfólksins", + "follow_suggestions.curated_suggestion": "Val hjá ábyrgdarfólki", "follow_suggestions.dismiss": "Lat vera við at vísa", + "follow_suggestions.hints.featured": "Hesin vangin er úrvaldur av toyminum handan {domain}.", + "follow_suggestions.hints.friends_of_friends": "Hesin vangin er vælumtóktur millum tey, tú fylgir.", + "follow_suggestions.hints.most_followed": "Hesin vangin er ein av teimum, sum er mest fylgdur á {domain}.", + "follow_suggestions.hints.most_interactions": "Nýliga hava nógv lagt merki til hendan vangan á {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Hesin vangin líkist teimum, sum tú nýliga hevur fylgt.", "follow_suggestions.personalized_suggestion": "Persónligt uppskot", "follow_suggestions.popular_suggestion": "Vælumtókt uppskot", "follow_suggestions.view_all": "Vís øll", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index 9bd5327c8f..bc4fecb93d 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Goedkarre", "follow_request.reject": "Wegerje", "follow_requests.unlocked_explanation": "Ek al is jo account net besletten, de meiwurkers fan {domain} tinke dat jo miskien de folgjende folchfersiken hânmjittich kontrolearje.", - "follow_suggestions.curated_suggestion": "Kar fan de moderator", + "follow_suggestions.curated_suggestion": "Spesjaal selektearre", "follow_suggestions.dismiss": "Net mear werjaan", + "follow_suggestions.hints.featured": "Dit profyl is hânmjittich troch it {domain}-team selektearre.", + "follow_suggestions.hints.friends_of_friends": "Dit profyl is populêr ûnder de minsken dy’t jo folgje.", + "follow_suggestions.hints.most_followed": "Dit profyl is ien fan de meast folge op {domain}.", + "follow_suggestions.hints.most_interactions": "Dit profyl hat de lêste tiid in protte oandacht krigen op {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Dit profyl is hast lyk oan de profilen dy’t jo koartlyn folge hawwe.", "follow_suggestions.personalized_suggestion": "Personalisearre suggestje", "follow_suggestions.popular_suggestion": "Populêre suggestje", "follow_suggestions.view_all": "Alles werjaan", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index 329286277d..a708088fbb 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -226,7 +226,6 @@ "follow_request.authorize": "Ceadaigh", "follow_request.reject": "Diúltaigh", "follow_requests.unlocked_explanation": "Cé nach bhfuil do chuntas faoi ghlas, cheap foireann {domain} gur mhaith leat súil siar ar iarratais leanúnaí as na cuntais seo.", - "follow_suggestions.curated_suggestion": "Rogha an eagarthóra", "follow_suggestions.dismiss": "Ná taispeáin arís", "follow_suggestions.personalized_suggestion": "Nod pearsantaithe", "follow_suggestions.popular_suggestion": "Nod coiteann", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 47b1e23192..d775a7b027 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -277,7 +277,6 @@ "follow_request.authorize": "Ùghdarraich", "follow_request.reject": "Diùlt", "follow_requests.unlocked_explanation": "Ged nach eil an cunntas agad glaiste, tha sgioba {domain} dhen bheachd gum b’ fheàirrde thu lèirmheas a dhèanamh air na h-iarrtasan leantainn o na cunntasan seo a làimh.", - "follow_suggestions.curated_suggestion": "Roghainn an deasaiche", "follow_suggestions.dismiss": "Na seall seo a-rithist", "follow_suggestions.personalized_suggestion": "Moladh pearsanaichte", "follow_suggestions.popular_suggestion": "Moladh air a bheil fèill mhòr", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 7512740c5e..1e83adf126 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -277,7 +277,6 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Rexeitar", "follow_requests.unlocked_explanation": "Malia que a túa conta non é privada, a administración de {domain} pensou que quizabes terías que revisar de xeito manual as solicitudes de seguiminto.", - "follow_suggestions.curated_suggestion": "O servidor suxíreche", "follow_suggestions.dismiss": "Non mostrar máis", "follow_suggestions.personalized_suggestion": "Suxestión personalizada", "follow_suggestions.popular_suggestion": "Suxestión popular", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index bf182a1657..2eef70f0fe 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -277,8 +277,13 @@ "follow_request.authorize": "הרשאה", "follow_request.reject": "דחיה", "follow_requests.unlocked_explanation": "למרות שחשבונך אינו נעול, צוות {domain} חושב שאולי כדאי לוודא את בקשות המעקב האלה ידנית.", - "follow_suggestions.curated_suggestion": "בחירת העורכים", + "follow_suggestions.curated_suggestion": "בחירת הצוות", "follow_suggestions.dismiss": "לא להציג שוב", + "follow_suggestions.hints.featured": "החשבון הזה נבחר אישית על ידי צוות {domain}.", + "follow_suggestions.hints.friends_of_friends": "חשבון זה פופולרי בין הנעקבים שלך.", + "follow_suggestions.hints.most_followed": "חשבון זה הוא מבין הנעקבים ביותר בשרת {domain}.", + "follow_suggestions.hints.most_interactions": "חשבון זה קיבל לאחרונה הרבה תשומת לב על שרת {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "חשבון זה דומה לחשבונות אחרים שאחריהם התחלת לעקוב לאחרונה.", "follow_suggestions.personalized_suggestion": "הצעות מותאמות אישית", "follow_suggestions.popular_suggestion": "הצעה פופולרית", "follow_suggestions.view_all": "צפיה בכל", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 8f979e5558..f499e08f6d 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Hitelesítés", "follow_request.reject": "Elutasítás", "follow_requests.unlocked_explanation": "Bár a fiókod nincs zárolva, a(z) {domain} csapata úgy gondolta, hogy talán kézzel szeretnéd ellenőrizni ezen fiókok követési kéréseit.", - "follow_suggestions.curated_suggestion": "Szerkesztői ajánlat", + "follow_suggestions.curated_suggestion": "A stáb választása", "follow_suggestions.dismiss": "Ne jelenjen meg újra", + "follow_suggestions.hints.featured": "Ezt a profilt a(z) {domain} csapata választotta ki.", + "follow_suggestions.hints.friends_of_friends": "Ez a profil népszerű az általad követett emberek körében.", + "follow_suggestions.hints.most_followed": "Ez a profil a leginkább követett a(z) {domain} oldalon.", + "follow_suggestions.hints.most_interactions": "Ez a profil mostanában sok figyelmet kap a(z) {domain} oldalon.", + "follow_suggestions.hints.similar_to_recently_followed": "Ez a profil hasonló azokhoz a profilokhoz, melyeket nemrég kezdtél el követni.", "follow_suggestions.personalized_suggestion": "Személyre szabott javaslat", "follow_suggestions.popular_suggestion": "Népszerű javaslat", "follow_suggestions.view_all": "Összes megtekintése", diff --git a/app/javascript/mastodon/locales/ia.json b/app/javascript/mastodon/locales/ia.json index 0796662851..599688cc07 100644 --- a/app/javascript/mastodon/locales/ia.json +++ b/app/javascript/mastodon/locales/ia.json @@ -197,7 +197,6 @@ "firehose.all": "Toto", "firehose.local": "Iste servitor", "firehose.remote": "Altere servitores", - "follow_suggestions.curated_suggestion": "Selection del editores", "follow_suggestions.dismiss": "Non monstrar novemente", "follow_suggestions.personalized_suggestion": "Suggestion personalisate", "follow_suggestions.popular_suggestion": "Suggestion personalisate", diff --git a/app/javascript/mastodon/locales/ie.json b/app/javascript/mastodon/locales/ie.json index 0c21832ed6..c28a348dc7 100644 --- a/app/javascript/mastodon/locales/ie.json +++ b/app/javascript/mastodon/locales/ie.json @@ -277,7 +277,6 @@ "follow_request.authorize": "Autorisar", "follow_request.reject": "Rejecter", "follow_requests.unlocked_explanation": "Benque tu conto ne es cludet, li administratores de {domain} pensat que tu fórsan vell voler tractar seque-petitiones de tis-ci contos manualmen.", - "follow_suggestions.curated_suggestion": "Selection del Servitor", "follow_suggestions.dismiss": "Ne monstrar plu", "follow_suggestions.personalized_suggestion": "Personalisat suggestion", "follow_suggestions.popular_suggestion": "Populari suggestion", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index 3c2337efd2..1f42180159 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Heimila", "follow_request.reject": "Hafna", "follow_requests.unlocked_explanation": "Jafnvel þótt aðgangurinn þinn sé ekki læstur, hafa umsjónarmenn {domain} ímyndað sér að þú gætir viljað yfirfara handvirkt fylgjendabeiðnir frá þessum notendum.", - "follow_suggestions.curated_suggestion": "Úrval umsjónarfólks", + "follow_suggestions.curated_suggestion": "Úrval starfsfólks", "follow_suggestions.dismiss": "Ekki birta þetta aftur", + "follow_suggestions.hints.featured": "Þetta notandasnið hefur verið handvalið af {domain}-teyminu.", + "follow_suggestions.hints.friends_of_friends": "Þetta notandasnið er vinsælt hjá fólki sem þú fylgist með.", + "follow_suggestions.hints.most_followed": "Þetta notandasnið er eitt af þeim sem mest er fylgst með á {domain}.", + "follow_suggestions.hints.most_interactions": "Þetta notandasnið hefur vakið mikla athygli að undanförnu á {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Þetta notandasnið er líkt þeim sniðum sem þú hefur valið að fylgjast með að undanförnu.", "follow_suggestions.personalized_suggestion": "Persónuaðlöguð tillaga", "follow_suggestions.popular_suggestion": "Vinsæl tillaga", "follow_suggestions.view_all": "Skoða allt", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index db8e88bd2a..9e68216a33 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Autorizza", "follow_request.reject": "Rifiuta", "follow_requests.unlocked_explanation": "Anche se il tuo profilo non è privato, lo staff di {domain} ha pensato che potresti voler revisionare manualmente le richieste di seguirti da questi profili.", - "follow_suggestions.curated_suggestion": "Scelta dell'editore", + "follow_suggestions.curated_suggestion": "Scelta personale", "follow_suggestions.dismiss": "Non visualizzare più", + "follow_suggestions.hints.featured": "Questo profilo è stato selezionato personalmente dal team di {domain}.", + "follow_suggestions.hints.friends_of_friends": "Questo profilo è popolare tra le persone che segui.", + "follow_suggestions.hints.most_followed": "Questo profilo è uno dei più seguiti su {domain}.", + "follow_suggestions.hints.most_interactions": "Recentemente, questo profilo ha ricevuto molta attenzione su {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Questo profilo è simile ai profili che hai seguito più recentemente.", "follow_suggestions.personalized_suggestion": "Suggerimenti personalizzati", "follow_suggestions.popular_suggestion": "Suggerimento frequente", "follow_suggestions.view_all": "Vedi tutto", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 180963e9e6..27ed9816a7 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -277,7 +277,17 @@ "follow_request.authorize": "許可", "follow_request.reject": "拒否", "follow_requests.unlocked_explanation": "あなたのアカウントは承認制ではありませんが、{domain}のスタッフはこれらのアカウントからのフォローリクエストの確認が必要であると判断しました。", + "follow_suggestions.curated_suggestion": "サーバースタッフ公認", + "follow_suggestions.dismiss": "今後表示しない", + "follow_suggestions.hints.featured": "{domain} の運営スタッフが選んだアカウントです。", + "follow_suggestions.hints.friends_of_friends": "フォロー中のユーザーのあいだで人気のアカウントです。", + "follow_suggestions.hints.most_followed": "{domain} でもっともフォローされているアカウントのひとつです。", + "follow_suggestions.hints.most_interactions": "{domain} でいま大きな注目を集めています。", + "follow_suggestions.hints.similar_to_recently_followed": "最近フォローしたユーザーに似ているアカウントです。", + "follow_suggestions.personalized_suggestion": "フォローに基づく提案", + "follow_suggestions.popular_suggestion": "人気のアカウント", "follow_suggestions.view_all": "すべて表示", + "follow_suggestions.who_to_follow": "フォローを増やしてみませんか?", "followed_tags": "フォロー中のハッシュタグ", "footer.about": "概要", "footer.directory": "ディレクトリ", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 50d9959994..d469af5d50 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -277,8 +277,13 @@ "follow_request.authorize": "허가", "follow_request.reject": "거부", "follow_requests.unlocked_explanation": "귀하의 계정이 잠긴 계정이 아닐지라도, {domain} 스태프는 이 계정들의 팔로우 요청을 수동으로 처리해 주시면 좋겠다고 생각했습니다.", - "follow_suggestions.curated_suggestion": "중재자의 추천", + "follow_suggestions.curated_suggestion": "스태프의 추천", "follow_suggestions.dismiss": "다시 보지 않기", + "follow_suggestions.hints.featured": "이 프로필은 {domain} 팀이 손수 선택했습니다.", + "follow_suggestions.hints.friends_of_friends": "이 프로필은 내가 팔로우 하는 사람들에게서 유명합니다.", + "follow_suggestions.hints.most_followed": "이 프로필은 {domain}에서 가장 많이 팔로우 된 사람들 중 하나입니다.", + "follow_suggestions.hints.most_interactions": "이 프로필은 최근 {domain}에서 많은 관심을 받았습니다.", + "follow_suggestions.hints.similar_to_recently_followed": "이 프로필은 내가 최근에 팔로우 한 프로필들과 유사합니다.", "follow_suggestions.personalized_suggestion": "개인화된 추천", "follow_suggestions.popular_suggestion": "인기있는 추천", "follow_suggestions.view_all": "모두 보기", diff --git a/app/javascript/mastodon/locales/lad.json b/app/javascript/mastodon/locales/lad.json index 3ec3b6af1b..91540d58ca 100644 --- a/app/javascript/mastodon/locales/lad.json +++ b/app/javascript/mastodon/locales/lad.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Autoriza", "follow_request.reject": "Refuza", "follow_requests.unlocked_explanation": "Aunke tu kuento no esta serrado, la taifa de {domain} kreye ke talvez keres revizar manualmente las solisitudes de segimento de estos kuentos.", - "follow_suggestions.curated_suggestion": "Sujestion del sirvidor", + "follow_suggestions.curated_suggestion": "Seleksyon de la taifa", "follow_suggestions.dismiss": "No amostra mas", + "follow_suggestions.hints.featured": "Este profil tiene sido eskojido por la taifa de {domain}.", + "follow_suggestions.hints.friends_of_friends": "Este profil es popular entre las personas ke siges.", + "follow_suggestions.hints.most_followed": "Este profil es uno de los mas segidos en {domain}.", + "follow_suggestions.hints.most_interactions": "Este profil tiene resivido muncha atansion resientemente en {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Este profil es similar a otros ke tienes segido resientemente.", "follow_suggestions.personalized_suggestion": "Sujestion personalizada", "follow_suggestions.popular_suggestion": "Sujestion populara", "follow_suggestions.view_all": "Ve todos", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 0923a10065..ce72518145 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -269,8 +269,11 @@ "follow_request.authorize": "Autorizuoti", "follow_request.reject": "Atmesti", "follow_requests.unlocked_explanation": "Nors tavo paskyra neužrakinta, {domain} personalas mano, kad galbūt norėsi rankiniu būdu patikrinti šių paskyrų sekimo užklausas.", - "follow_suggestions.curated_suggestion": "Redaktorių pasirinkimas", "follow_suggestions.dismiss": "Daugiau nerodyti", + "follow_suggestions.hints.friends_of_friends": "Šis profilis yra populiarus tarp žmonių, kuriuos sekei.", + "follow_suggestions.hints.most_followed": "Šis profilis yra vienas iš labiausiai sekamų {domain}.", + "follow_suggestions.hints.most_interactions": "Pastaruoju metu šis profilis sulaukia daug dėmesio šiame {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Šis profilis panašus į profilius, kuriuos neseniai sekei.", "follow_suggestions.personalized_suggestion": "Suasmenintas pasiūlymas", "follow_suggestions.popular_suggestion": "Populiarus pasiūlymas", "follow_suggestions.view_all": "Peržiūrėti viską", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index c24ffc1d3a..88b4680ae0 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -277,7 +277,6 @@ "follow_request.authorize": "Benarkan", "follow_request.reject": "Tolak", "follow_requests.unlocked_explanation": "Walaupun akaun anda tidak dikunci, kakitangan {domain} merasakan anda mungkin ingin menyemak permintaan ikutan daripada akaun ini secara manual.", - "follow_suggestions.curated_suggestion": "Pilihan Editor", "follow_suggestions.dismiss": "Jangan papar lagi", "follow_suggestions.personalized_suggestion": "Cadangan peribadi", "follow_suggestions.popular_suggestion": "Cadangan terkenal", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index dc51092dd3..5155b296f7 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Goedkeuren", "follow_request.reject": "Afwijzen", "follow_requests.unlocked_explanation": "Ook al is jouw account niet besloten, de medewerkers van {domain} denken dat jij misschien de volgende volgverzoeken handmatig wil controleren.", - "follow_suggestions.curated_suggestion": "Keuze van de moderator(en)", + "follow_suggestions.curated_suggestion": "Speciaal geselecteerd", "follow_suggestions.dismiss": "Niet meer weergeven", + "follow_suggestions.hints.featured": "Dit profiel is geselecteerd door het team van {domain}.", + "follow_suggestions.hints.friends_of_friends": "Dit profiel is populair onder de mensen die jij volgt.", + "follow_suggestions.hints.most_followed": "Dit profiel is een van de meest gevolgde op {domain}.", + "follow_suggestions.hints.most_interactions": "Dit profiel heeft de laatste tijd veel aandacht gekregen op {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Dit profiel is vergelijkbaar met de profielen die je recentelijk hebt gevolgd.", "follow_suggestions.personalized_suggestion": "Gepersonaliseerde aanbeveling", "follow_suggestions.popular_suggestion": "Populaire aanbeveling", "follow_suggestions.view_all": "Alles weergeven", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 814d0f2de0..01b88eacdc 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Autoryzuj", "follow_request.reject": "Odrzuć", "follow_requests.unlocked_explanation": "Mimo że Twoje konto nie jest zablokowane, zespół {domain} uznał że możesz chcieć ręcznie przejrzeć prośby o możliwość obserwacji.", - "follow_suggestions.curated_suggestion": "Wybór redakcji", + "follow_suggestions.curated_suggestion": "Wybrane przez personel", "follow_suggestions.dismiss": "Nie pokazuj ponownie", + "follow_suggestions.hints.featured": "Ten profil został wybrany przez zespół {domain}.", + "follow_suggestions.hints.friends_of_friends": "Ten profil jest popularny w gronie użytkowników, których obserwujesz.", + "follow_suggestions.hints.most_followed": "Ten profil jest jednym z najczęściej obserwowanych na {domain}.", + "follow_suggestions.hints.most_interactions": "Ten profil otrzymuje dużo interakcji na {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Ten profil jest podobny do profili ostatnio przez ciebie zaobserwowanych.", "follow_suggestions.personalized_suggestion": "Sugestia spersonalizowana", "follow_suggestions.popular_suggestion": "Sugestia popularna", "follow_suggestions.view_all": "Pokaż wszystkie", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index eced6ca7ad..8911afe946 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -277,7 +277,6 @@ "follow_request.authorize": "Aprovar", "follow_request.reject": "Recusar", "follow_requests.unlocked_explanation": "Apesar de seu perfil não ser trancado, {domain} exige que você revise a solicitação para te seguir destes perfis manualmente.", - "follow_suggestions.curated_suggestion": "Escolha dos editores", "follow_suggestions.dismiss": "Não mostrar novamente", "follow_suggestions.personalized_suggestion": "Sugestão personalizada", "follow_suggestions.popular_suggestion": "Sugestão popular", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 3674126144..26aa0f0b5f 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Rejeitar", "follow_requests.unlocked_explanation": "Apesar de a sua não ser privada, a administração de {domain} pensa que poderá querer rever manualmente os pedidos de seguimento dessas contas.", - "follow_suggestions.curated_suggestion": "Escolha dos Editores", + "follow_suggestions.curated_suggestion": "Escolha da equipe", "follow_suggestions.dismiss": "Não mostrar novamente", + "follow_suggestions.hints.featured": "Este perfil foi escolhido a dedo pela equipe {domain}.", + "follow_suggestions.hints.friends_of_friends": "Este perfil é popular entre as pessoas que você segue.", + "follow_suggestions.hints.most_followed": "Este perfil é um dos mais seguidos no {domain}.", + "follow_suggestions.hints.most_interactions": "Este perfil tem recebido recentemente muita atenção no {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Este perfil é semelhante aos perfis que você seguiu mais recentemente.", "follow_suggestions.personalized_suggestion": "Sugestão personalizada", "follow_suggestions.popular_suggestion": "Sugestão popular", "follow_suggestions.view_all": "Ver tudo", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index 547493af18..b8bb779f85 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -265,7 +265,6 @@ "follow_request.authorize": "Acceptă", "follow_request.reject": "Respinge", "follow_requests.unlocked_explanation": "Chiar dacă contul tău nu este blocat, personalul {domain} a considerat că ai putea prefera să consulți manual cererile de abonare de la aceste conturi.", - "follow_suggestions.curated_suggestion": "Alegerile Editorilor", "follow_suggestions.dismiss": "Nu mai afișa din nou", "follow_suggestions.personalized_suggestion": "Sugestie personalizată", "follow_suggestions.popular_suggestion": "Sugestie populară", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 623b403832..5fcca414cf 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -277,7 +277,6 @@ "follow_request.authorize": "Авторизовать", "follow_request.reject": "Отказать", "follow_requests.unlocked_explanation": "Хотя ваша учетная запись не закрыта, команда {domain} подумала, что вы захотите просмотреть запросы от этих учетных записей вручную.", - "follow_suggestions.curated_suggestion": "Выбор редакции", "follow_suggestions.dismiss": "Больше не показывать", "follow_suggestions.personalized_suggestion": "Персонализированное предложение", "follow_suggestions.popular_suggestion": "Популярное предложение", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index da76e98687..af975069b8 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -277,7 +277,6 @@ "follow_request.authorize": "Povoľ prístup", "follow_request.reject": "Odmietni", "follow_requests.unlocked_explanation": "Síce Váš učet nie je uzamknutý, ale {domain} tím si myslel že môžete chcieť skontrolovať žiadosti o sledovanie z týchto účtov manuálne.", - "follow_suggestions.curated_suggestion": "Výber zo servera", "follow_suggestions.dismiss": "Znovu nezobrazuj", "follow_suggestions.personalized_suggestion": "Prispôsobené odporúčania", "follow_suggestions.popular_suggestion": "Populárne návrhy", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 3aae75dc36..8396e02a68 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Overi", "follow_request.reject": "Zavrni", "follow_requests.unlocked_explanation": "Čeprav vaš račun ni zaklenjen, zaposleni pri {domain} menijo, da bi morda želeli pregledati zahteve za sledenje teh računov ročno.", - "follow_suggestions.curated_suggestion": "Izbor urednikov", + "follow_suggestions.curated_suggestion": "Izbor osebja", "follow_suggestions.dismiss": "Ne pokaži več", + "follow_suggestions.hints.featured": "Ta profil so izbrali skrbniki strežnika {domain}.", + "follow_suggestions.hints.friends_of_friends": "Ta profil je priljubljen med osebami, ki jim sledite.", + "follow_suggestions.hints.most_followed": "Ta profil na strežniku {domain} je en izmed najbolj sledenih.", + "follow_suggestions.hints.most_interactions": "Ta profil na strežniku {domain} je nedavno prejel veliko pozornosti.", + "follow_suggestions.hints.similar_to_recently_followed": "Ta profil je podoben profilom, ki ste jim nedavno začeli slediti.", "follow_suggestions.personalized_suggestion": "Osebno prilagojen predlog", "follow_suggestions.popular_suggestion": "Priljubljen predlog", "follow_suggestions.view_all": "Pokaži vse", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 496e35fe76..c388ebb865 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Autorizoje", "follow_request.reject": "Hidhe tej", "follow_requests.unlocked_explanation": "Edhe pse llogaria juaj s’është e kyçur, ekipi i {domain} mendoi se mund të donit të shqyrtonit dorazi kërkesa ndjekjeje prej këtyre llogarive.", - "follow_suggestions.curated_suggestion": "Zgjedhur nga Ekipi", + "follow_suggestions.curated_suggestion": "Zgjedhur nga ekipi", "follow_suggestions.dismiss": "Mos shfaq më", + "follow_suggestions.hints.featured": "Ky profil është zgjedhur nga ekipi {domain}.", + "follow_suggestions.hints.friends_of_friends": "Ky profil është popullor mes personave që ndiqni.", + "follow_suggestions.hints.most_followed": "Ky profil është një nga më të ndjekur në {domain}.", + "follow_suggestions.hints.most_interactions": "Ky profil ka tërhequr mjaft vëmendjen së fundi në {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Ky profil është i ngjashëm me profile që keni ndjekur tani afër.", "follow_suggestions.personalized_suggestion": "Sugjerim i personalizuar", "follow_suggestions.popular_suggestion": "Sugjerim popullor", "follow_suggestions.view_all": "Shihni krejt", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index d9490ef70d..e6be3f3795 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -277,7 +277,6 @@ "follow_request.authorize": "Odobri", "follow_request.reject": "Odbij", "follow_requests.unlocked_explanation": "Iako vaš nalog nije zaključan, osoblje {domain} smatra da biste možda želeli da ručno pregledate zahteve za praćenje sa ovih naloga.", - "follow_suggestions.curated_suggestion": "Izbor urednika", "follow_suggestions.dismiss": "Ne prikazuj ponovo", "follow_suggestions.personalized_suggestion": "Personalizovani predlog", "follow_suggestions.popular_suggestion": "Popularni predlog", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index fd09f5db49..3143b5215e 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -277,8 +277,12 @@ "follow_request.authorize": "Одобри", "follow_request.reject": "Одбиј", "follow_requests.unlocked_explanation": "Иако ваш налог није закључан, особље {domain} сматра да бисте можда желели да ручно прегледате захтеве за праћење са ових налога.", - "follow_suggestions.curated_suggestion": "Избор уредника", "follow_suggestions.dismiss": "Не приказуј поново", + "follow_suggestions.hints.featured": "Овај профил је ручно изабрао тим {domain}.", + "follow_suggestions.hints.friends_of_friends": "Овај профил је популаран међу људима које пратите.", + "follow_suggestions.hints.most_followed": "Овај профил је један од најпраћенијих на {domain}.", + "follow_suggestions.hints.most_interactions": "Овај профил је недавно добио велику пажњу на {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Овај профил је сличан профилима које сте недавно запратили.", "follow_suggestions.personalized_suggestion": "Персонализовани предлог", "follow_suggestions.popular_suggestion": "Популарни предлог", "follow_suggestions.view_all": "Прикажи све", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index e0aa072a77..f071a86ba0 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -277,7 +277,6 @@ "follow_request.authorize": "อนุญาต", "follow_request.reject": "ปฏิเสธ", "follow_requests.unlocked_explanation": "แม้ว่าไม่มีการล็อคบัญชีของคุณ พนักงานของ {domain} คิดว่าคุณอาจต้องการตรวจทานคำขอติดตามจากบัญชีเหล่านี้ด้วยตนเอง", - "follow_suggestions.curated_suggestion": "คัดสรรโดยบรรณาธิการ", "follow_suggestions.dismiss": "ไม่ต้องแสดงอีก", "follow_suggestions.personalized_suggestion": "ข้อเสนอแนะเฉพาะบุคคล", "follow_suggestions.popular_suggestion": "ข้อเสนอแนะยอดนิยม", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 7ab370b8bc..fa728a6821 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -277,8 +277,13 @@ "follow_request.authorize": "İzin Ver", "follow_request.reject": "Reddet", "follow_requests.unlocked_explanation": "Hesabınız kilitli olmasa da, {domain} personeli bu hesaplardan gelen takip isteklerini gözden geçirmek isteyebileceğinizi düşündü.", - "follow_suggestions.curated_suggestion": "Editörün Seçimi", + "follow_suggestions.curated_suggestion": "Çalışanların seçtikleri", "follow_suggestions.dismiss": "Tekrar gösterme", + "follow_suggestions.hints.featured": "Bu profil {domain} ekibi tarafından elle seçilmiştir.", + "follow_suggestions.hints.friends_of_friends": "Bu profil takip ettiğiniz insanlar arasında popülerdir.", + "follow_suggestions.hints.most_followed": "Bu, {domain} sunucusunda en fazla izlenen profildir.", + "follow_suggestions.hints.most_interactions": "Bu, {domain} sunucusunda son zamanlarda oldukça fazla dikkat çeken bir profildir.", + "follow_suggestions.hints.similar_to_recently_followed": "Bu profil, son zamanlarda takip ettiğiniz profillere benziyor.", "follow_suggestions.personalized_suggestion": "Kişiselleşmiş öneriler", "follow_suggestions.popular_suggestion": "Popüler öneriler", "follow_suggestions.view_all": "Tümünü gör", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 0504ec60d8..d14654d17c 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Авторизувати", "follow_request.reject": "Відмовити", "follow_requests.unlocked_explanation": "Хоча ваш обліковий запис не заблоковано, персонал {domain} припускає, що, можливо, ви хотіли б переглянути ці запити на підписку.", - "follow_suggestions.curated_suggestion": "Вибір редакції", + "follow_suggestions.curated_suggestion": "Відібрано командою", "follow_suggestions.dismiss": "Більше не показувати", + "follow_suggestions.hints.featured": "Цей профіль був обраний командою {domain}.", + "follow_suggestions.hints.friends_of_friends": "Цей профіль популярний серед тих людей, на яких ви підписані.", + "follow_suggestions.hints.most_followed": "За цим профілем один з найпопулярніших на {domain}.", + "follow_suggestions.hints.most_interactions": "Нещодавно цей профіль отримав багато уваги на {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Цей профіль схожий на профілі, за якими ви стежили останнім часом.", "follow_suggestions.personalized_suggestion": "Персоналізована пропозиція", "follow_suggestions.popular_suggestion": "Популярна пропозиція", "follow_suggestions.view_all": "Переглянути все", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 766407183b..7f4b833f31 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -277,7 +277,6 @@ "follow_request.authorize": "Chấp nhận", "follow_request.reject": "Từ chối", "follow_requests.unlocked_explanation": "Mặc dù tài khoản của bạn đang ở chế độ công khai, quản trị viên của {domain} vẫn tin rằng bạn sẽ muốn xem lại yêu cầu theo dõi từ những người khác.", - "follow_suggestions.curated_suggestion": "Lựa chọn của máy chủ", "follow_suggestions.dismiss": "Không hiện lại", "follow_suggestions.personalized_suggestion": "Gợi ý cá nhân hóa", "follow_suggestions.popular_suggestion": "Những người nổi tiếng", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 9d0da95c81..84c42a4aa2 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -53,7 +53,7 @@ "account.mute_notifications_short": "关闭通知", "account.mute_short": "隐藏", "account.muted": "已隐藏", - "account.mutual": "互粉好友", + "account.mutual": "互关", "account.no_bio": "未提供描述。", "account.open_original_page": "打开原始页面", "account.posts": "嘟文", @@ -277,8 +277,13 @@ "follow_request.authorize": "同意", "follow_request.reject": "拒绝", "follow_requests.unlocked_explanation": "尽管你没有锁嘟,但是 {domain} 的工作人员认为你也许会想手动审核审核这些账号的关注请求。", - "follow_suggestions.curated_suggestion": "主编推荐", + "follow_suggestions.curated_suggestion": "管理员精选", "follow_suggestions.dismiss": "不再显示", + "follow_suggestions.hints.featured": "该个人资料已被 {domain} 管理团队精选。", + "follow_suggestions.hints.friends_of_friends": "该个人资料在您关注的人中很受欢迎。", + "follow_suggestions.hints.most_followed": "该个人资料是 {domain} 上关注度最高的个人资料之一。", + "follow_suggestions.hints.most_interactions": "该个人资料最近在 {domain} 上获得了很多关注。", + "follow_suggestions.hints.similar_to_recently_followed": "该个人资料与您最近关注的个人资料类似。", "follow_suggestions.personalized_suggestion": "个性化建议", "follow_suggestions.popular_suggestion": "热门建议", "follow_suggestions.view_all": "查看全部", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index c1a69591ff..2382e3c61c 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -277,7 +277,6 @@ "follow_request.authorize": "批准", "follow_request.reject": "拒絕", "follow_requests.unlocked_explanation": "即使您的帳號未上鎖,{domain} 的工作人員認為您可能會想手動審核來自這些帳號的追蹤請求。", - "follow_suggestions.curated_suggestion": "編輯推薦", "follow_suggestions.dismiss": "不再顯示", "follow_suggestions.personalized_suggestion": "個人化推薦", "follow_suggestions.popular_suggestion": "熱門推薦", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index d83b523d1e..0ecf1378e3 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -279,6 +279,11 @@ "follow_requests.unlocked_explanation": "即便您的帳號未被鎖定,{domain} 的管理員認為您可能想要自己審核這些帳號的跟隨請求。", "follow_suggestions.curated_suggestion": "精選內容", "follow_suggestions.dismiss": "不再顯示", + "follow_suggestions.hints.featured": "這個個人檔案是 {domain} 管理團隊精心挑選。", + "follow_suggestions.hints.friends_of_friends": "這個個人檔案於您跟隨的帳號中很受歡迎。", + "follow_suggestions.hints.most_followed": "這個個人檔案是 {domain} 中最受歡迎的帳號之一。", + "follow_suggestions.hints.most_interactions": "這個個人檔案最近於 {domain} 受到非常多關注。", + "follow_suggestions.hints.similar_to_recently_followed": "這個個人檔案與您最近跟隨之帳號類似。", "follow_suggestions.personalized_suggestion": "個人化推薦", "follow_suggestions.popular_suggestion": "熱門推薦", "follow_suggestions.view_all": "檢視全部", diff --git a/app/javascript/material-icons/400-24px/explore-fill.svg b/app/javascript/material-icons/400-24px/explore-fill.svg new file mode 100644 index 0000000000..febe0a63b4 --- /dev/null +++ b/app/javascript/material-icons/400-24px/explore-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/explore.svg b/app/javascript/material-icons/400-24px/explore.svg new file mode 100644 index 0000000000..547a999421 --- /dev/null +++ b/app/javascript/material-icons/400-24px/explore.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/styles/mastodon-light/diff.scss b/app/javascript/styles/mastodon-light/diff.scss index 520e91e28b..e3872283e1 100644 --- a/app/javascript/styles/mastodon-light/diff.scss +++ b/app/javascript/styles/mastodon-light/diff.scss @@ -210,12 +210,6 @@ html { } } -// Change the background colors of media and video spoilers -.media-spoiler, -.video-player__spoiler { - background: $ui-base-color; -} - .account-gallery__item a { background-color: $ui-base-color; } diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 605b5d4b55..50b5de35df 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -4325,35 +4325,6 @@ a.status-card { z-index: 100; } -.media-spoiler { - background: $base-overlay-background; - color: $darker-text-color; - border: 0; - padding: 0; - width: 100%; - height: 100%; - border-radius: 4px; - appearance: none; - - &:hover, - &:active, - &:focus { - padding: 0; - color: lighten($darker-text-color, 8%); - } -} - -.media-spoiler__warning { - display: block; - font-size: 14px; -} - -.media-spoiler__trigger { - display: block; - font-size: 11px; - font-weight: 700; -} - .spoiler-button { top: 0; inset-inline-start: 0; diff --git a/app/models/account_suggestions/friends_of_friends_source.rb b/app/models/account_suggestions/friends_of_friends_source.rb index 28d0ab99b3..93fb10f3b0 100644 --- a/app/models/account_suggestions/friends_of_friends_source.rb +++ b/app/models/account_suggestions/friends_of_friends_source.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class AccountSuggestions::FriendsOfFriendsSource < AccountSuggestions::Source - def get(account, limit: 10) + def get(account, limit: DEFAULT_LIMIT) Account.find_by_sql([<<~SQL.squish, { id: account.id, limit: limit }]).map { |row| [row.id, key] } WITH first_degree AS ( SELECT target_account_id diff --git a/app/models/account_suggestions/global_source.rb b/app/models/account_suggestions/global_source.rb index d68f285e4f..c05bcf2ce8 100644 --- a/app/models/account_suggestions/global_source.rb +++ b/app/models/account_suggestions/global_source.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class AccountSuggestions::GlobalSource < AccountSuggestions::Source - def get(account, limit: 10) + def get(account, limit: DEFAULT_LIMIT) FollowRecommendation.localized(content_locale).joins(:account).merge(base_account_scope(account)).order(rank: :desc).limit(limit).pluck(:account_id, :reason) end diff --git a/app/models/account_suggestions/setting_source.rb b/app/models/account_suggestions/setting_source.rb index 4b7275bf7a..9f3cd7bd3d 100644 --- a/app/models/account_suggestions/setting_source.rb +++ b/app/models/account_suggestions/setting_source.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class AccountSuggestions::SettingSource < AccountSuggestions::Source - def get(account, limit: 10) + def get(account, limit: DEFAULT_LIMIT) if setting_enabled? base_account_scope(account).where(setting_to_where_condition).limit(limit).pluck(:id).zip([key].cycle) else diff --git a/app/models/account_suggestions/similar_profiles_source.rb b/app/models/account_suggestions/similar_profiles_source.rb index 733c5f0bbc..3ece20aa51 100644 --- a/app/models/account_suggestions/similar_profiles_source.rb +++ b/app/models/account_suggestions/similar_profiles_source.rb @@ -47,7 +47,7 @@ class AccountSuggestions::SimilarProfilesSource < AccountSuggestions::Source end end - def get(account, limit: 10) + def get(account, limit: DEFAULT_LIMIT) recently_followed_account_ids = account.active_relationships.recent.limit(5).pluck(:target_account_id) if Chewy.enabled? && !recently_followed_account_ids.empty? diff --git a/app/models/account_suggestions/source.rb b/app/models/account_suggestions/source.rb index d83f5e3773..b2c3c7a3a2 100644 --- a/app/models/account_suggestions/source.rb +++ b/app/models/account_suggestions/source.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true class AccountSuggestions::Source + DEFAULT_LIMIT = 10 + def get(_account, **kwargs) raise NotImplementedError end diff --git a/app/models/user_role.rb b/app/models/user_role.rb index ed64ca0538..9115d91c24 100644 --- a/app/models/user_role.rb +++ b/app/models/user_role.rb @@ -97,6 +97,9 @@ class UserRole < ApplicationRecord before_validation :set_position scope :assignable, -> { where.not(id: EVERYONE_ROLE_ID).order(position: :asc) } + scope :highlighted, -> { where(highlighted: true) } + scope :with_color, -> { where.not(color: [nil, '']) } + scope :providing_styles, -> { highlighted.with_color } has_many :users, inverse_of: :role, foreign_key: 'role_id', dependent: :nullify diff --git a/app/services/tag_search_service.rb b/app/services/tag_search_service.rb index d5d1974275..929cfd884f 100644 --- a/app/services/tag_search_service.rb +++ b/app/services/tag_search_service.rb @@ -16,7 +16,32 @@ class TagSearchService < BaseService private def from_elasticsearch - query = { + definition = TagsIndex.query(elastic_search_query) + definition = definition.filter(elastic_search_filter) if @options[:exclude_unreviewed] + + ensure_exact_match(definition.limit(@limit).offset(@offset).objects.compact) + rescue Faraday::ConnectionFailed, Parslet::ParseFailed + nil + end + + # Since the ElasticSearch Query doesn't guarantee the exact match will be the + # first result or that it will even be returned, patch the results accordingly + def ensure_exact_match(results) + return results unless @offset.nil? || @offset.zero? + + normalized_query = Tag.normalize(@query) + exact_match = results.find { |tag| tag.name.downcase == normalized_query } + exact_match ||= Tag.find_normalized(normalized_query) + unless exact_match.nil? + results.delete(exact_match) + results = [exact_match] + results + end + + results + end + + def elastic_search_query + { function_score: { query: { multi_match: { @@ -50,8 +75,10 @@ class TagSearchService < BaseService boost_mode: 'multiply', }, } + end - filter = { + def elastic_search_filter + { bool: { should: [ { @@ -72,29 +99,6 @@ class TagSearchService < BaseService ], }, } - - definition = TagsIndex.query(query) - definition = definition.filter(filter) if @options[:exclude_unreviewed] - - ensure_exact_match(definition.limit(@limit).offset(@offset).objects.compact) - rescue Faraday::ConnectionFailed, Parslet::ParseFailed - nil - end - - # Since the ElasticSearch Query doesn't guarantee the exact match will be the - # first result or that it will even be returned, patch the results accordingly - def ensure_exact_match(results) - return results unless @offset.nil? || @offset.zero? - - normalized_query = Tag.normalize(@query) - exact_match = results.find { |tag| tag.name.downcase == normalized_query } - exact_match ||= Tag.find_normalized(normalized_query) - unless exact_match.nil? - results.delete(exact_match) - results = [exact_match] + results - end - - results end def from_database diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 6f67aeeeaa..0c85930a4f 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -1077,7 +1077,7 @@ cs: hint_html: Ještě jedna věc! Musíme potvrdit, že jste člověk (to proto, abychom drželi stranou spam!). Vyřešte CAPTCHA níže a klikněte na "Pokračovat". title: Bezpečnostní kontrola confirmations: - awaiting_review: Vaše e-mailová adresa je potvrzena! Pracovníci %{domain} nyní kontrolují vaši registraci. Pokud váš účet schválí, obdržíte e-mail! + awaiting_review: Vaše e-mailová adresa je potvrzena! Personál %{domain} nyní kontrolují vaši registraci. Pokud váš účet schválí, obdržíte e-mail! awaiting_review_title: Vaše registrace se ověřuje clicking_this_link: kliknutím na tento odkaz login_link: přihlásit se diff --git a/package.json b/package.json index d0b1b2e71c..e347495585 100644 --- a/package.json +++ b/package.json @@ -89,7 +89,6 @@ "mark-loader": "^0.1.6", "marky": "^1.2.5", "mini-css-extract-plugin": "^1.6.2", - "mkdirp": "^3.0.1", "path-complete-extname": "^1.0.0", "postcss": "^8.4.24", "postcss-loader": "^4.3.0", @@ -118,7 +117,6 @@ "redux-immutable": "^4.0.0", "regenerator-runtime": "^0.14.0", "requestidlecallback": "^0.3.0", - "rimraf": "^5.0.1", "sass": "^1.62.1", "sass-loader": "^10.2.0", "stacktrace-js": "^2.0.2", @@ -175,7 +173,6 @@ "@types/redux-immutable": "^4.0.3", "@types/requestidlecallback": "^0.3.5", "@types/webpack": "^4.41.33", - "@types/yargs": "^17.0.24", "@typescript-eslint/eslint-plugin": "^6.0.0", "@typescript-eslint/parser": "^6.17.0", "babel-jest": "^29.5.0", @@ -200,8 +197,7 @@ "stylelint": "^16.0.2", "stylelint-config-standard-scss": "^13.0.0", "typescript": "^5.0.4", - "webpack-dev-server": "^3.11.3", - "yargs": "^17.7.2" + "webpack-dev-server": "^3.11.3" }, "resolutions": { "kind-of": "^6.0.3", diff --git a/spec/controllers/admin/disputes/appeals_controller_spec.rb b/spec/controllers/admin/disputes/appeals_controller_spec.rb index d365233167..bf7f9bd704 100644 --- a/spec/controllers/admin/disputes/appeals_controller_spec.rb +++ b/spec/controllers/admin/disputes/appeals_controller_spec.rb @@ -35,7 +35,7 @@ RSpec.describe Admin::Disputes::AppealsController do let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } it 'redirects back to the strike page and notifies target account about approved appeal', :sidekiq_inline do - subject + emails = capture_emails { subject } expect(response) .to redirect_to(disputes_strike_path(appeal.strike)) @@ -43,9 +43,13 @@ RSpec.describe Admin::Disputes::AppealsController do expect(target_account.reload) .to_not be_suspended - expect(UserMailer.deliveries.size).to eq(1) - expect(UserMailer.deliveries.first.to.first).to eq(target_account.user.email) - expect(UserMailer.deliveries.first.subject).to eq(I18n.t('user_mailer.appeal_approved.subject', date: I18n.l(appeal.created_at))) + expect(emails.size) + .to eq(1) + expect(emails.first) + .to have_attributes( + to: contain_exactly(target_account.user.email), + subject: eq(I18n.t('user_mailer.appeal_approved.subject', date: I18n.l(appeal.created_at))) + ) end end @@ -55,14 +59,19 @@ RSpec.describe Admin::Disputes::AppealsController do let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } it 'redirects back to the strike page and notifies target account about rejected appeal', :sidekiq_inline do - subject + emails = capture_emails { subject } expect(response) .to redirect_to(disputes_strike_path(appeal.strike)) - expect(UserMailer.deliveries.size).to eq(1) - expect(UserMailer.deliveries.first.to.first).to eq(target_account.user.email) - expect(UserMailer.deliveries.first.subject).to eq(I18n.t('user_mailer.appeal_rejected.subject', date: I18n.l(appeal.created_at))) + expect(emails.size) + .to eq(1) + + expect(emails.first) + .to have_attributes( + to: contain_exactly(target_account.user.email), + subject: eq(I18n.t('user_mailer.appeal_rejected.subject', date: I18n.l(appeal.created_at))) + ) end end end diff --git a/spec/controllers/admin/resets_controller_spec.rb b/spec/controllers/admin/resets_controller_spec.rb index e82a3a6afa..10ed2cf969 100644 --- a/spec/controllers/admin/resets_controller_spec.rb +++ b/spec/controllers/admin/resets_controller_spec.rb @@ -5,6 +5,8 @@ require 'rails_helper' describe Admin::ResetsController do render_views + subject { post :create, params: { account_id: account.id } } + let(:account) { Fabricate(:account) } before do @@ -13,11 +15,11 @@ describe Admin::ResetsController do describe 'POST #create', :sidekiq_inline do it 'redirects to admin accounts page' do - expect do - post :create, params: { account_id: account.id } - end.to change(Devise.mailer.deliveries, :size).by(2) + emails = capture_emails { subject } - expect(Devise.mailer.deliveries).to have_attributes( + expect(emails.size) + .to eq(2) + expect(emails).to have_attributes( first: have_attributes( to: include(account.user.email), subject: I18n.t('devise.mailer.password_change.subject') diff --git a/spec/controllers/auth/sessions_controller_spec.rb b/spec/controllers/auth/sessions_controller_spec.rb index dcbaf1fcbb..7adafc6f14 100644 --- a/spec/controllers/auth/sessions_controller_spec.rb +++ b/spec/controllers/auth/sessions_controller_spec.rb @@ -124,7 +124,7 @@ RSpec.describe Auth::SessionsController do end it 'logs the user in and sends suspicious email and redirects home', :sidekiq_inline do - subject + emails = capture_emails { subject } expect(response) .to redirect_to(root_path) @@ -132,9 +132,13 @@ RSpec.describe Auth::SessionsController do expect(controller.current_user) .to eq user - expect(UserMailer.deliveries.size).to eq(1) - expect(UserMailer.deliveries.first.to.first).to eq(user.email) - expect(UserMailer.deliveries.first.subject).to eq(I18n.t('user_mailer.suspicious_sign_in.subject')) + expect(emails.size) + .to eq(1) + expect(emails.first) + .to have_attributes( + to: contain_exactly(user.email), + subject: eq(I18n.t('user_mailer.suspicious_sign_in.subject')) + ) end end @@ -260,21 +264,27 @@ RSpec.describe Auth::SessionsController do end it 'does not log the user in, sets a flash message, and sends a suspicious sign in email', :sidekiq_inline do - Auth::SessionsController::MAX_2FA_ATTEMPTS_PER_HOUR.times do - post :create, params: { user: { otp_attempt: '1234' } }, session: { attempt_user_id: user.id, attempt_user_updated_at: user.updated_at.to_s } - expect(controller.current_user).to be_nil + emails = capture_emails do + Auth::SessionsController::MAX_2FA_ATTEMPTS_PER_HOUR.times do + post :create, params: { user: { otp_attempt: '1234' } }, session: { attempt_user_id: user.id, attempt_user_updated_at: user.updated_at.to_s } + expect(controller.current_user).to be_nil + end + post :create, params: { user: { otp_attempt: user.current_otp } }, session: { attempt_user_id: user.id, attempt_user_updated_at: user.updated_at.to_s } end - post :create, params: { user: { otp_attempt: user.current_otp } }, session: { attempt_user_id: user.id, attempt_user_updated_at: user.updated_at.to_s } - expect(controller.current_user) .to be_nil + expect(flash[:alert]) .to match I18n.t('users.rate_limited') - expect(UserMailer.deliveries.size).to eq(1) - expect(UserMailer.deliveries.first.to.first).to eq(user.email) - expect(UserMailer.deliveries.first.subject).to eq(I18n.t('user_mailer.failed_2fa.subject')) + expect(emails.size) + .to eq(1) + expect(emails.first) + .to have_attributes( + to: contain_exactly(user.email), + subject: eq(I18n.t('user_mailer.failed_2fa.subject')) + ) end end diff --git a/spec/controllers/disputes/appeals_controller_spec.rb b/spec/controllers/disputes/appeals_controller_spec.rb index d763068ebe..99d5a8b17f 100644 --- a/spec/controllers/disputes/appeals_controller_spec.rb +++ b/spec/controllers/disputes/appeals_controller_spec.rb @@ -18,9 +18,15 @@ RSpec.describe Disputes::AppealsController do let(:params) { { strike_id: strike.id, appeal: { text: 'Foo' } } } it 'notifies staff about new appeal and redirects back to strike page', :sidekiq_inline do - subject + emails = capture_emails { subject } - expect(ActionMailer::Base.deliveries.first.to).to eq([admin.email]) + expect(emails.size) + .to eq(1) + expect(emails.first) + .to have_attributes( + to: contain_exactly(admin.email), + subject: eq(I18n.t('admin_mailer.new_appeal.subject', username: current_user.account.acct, instance: Rails.configuration.x.local_domain)) + ) expect(response).to redirect_to(disputes_strike_path(strike.id)) end end @@ -31,9 +37,9 @@ RSpec.describe Disputes::AppealsController do let(:params) { { strike_id: strike.id, appeal: { text: '' } } } it 'does not send email and renders strike show page', :sidekiq_inline do - subject + emails = capture_emails { subject } - expect(ActionMailer::Base.deliveries.size).to eq(0) + expect(emails).to be_empty expect(response).to render_template('disputes/strikes/show') end end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 1baa3ccbf9..39986f476c 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -455,18 +455,20 @@ RSpec.describe User do let!(:user) { Fabricate(:user, confirmed_at: confirmed_at) } - before { ActionMailer::Base.deliveries.clear } - - after { ActionMailer::Base.deliveries.clear } - context 'when user is new' do let(:confirmed_at) { nil } it 'confirms user and delivers welcome email', :sidekiq_inline do - subject + emails = capture_emails { subject } expect(user.confirmed_at).to be_present - expect(ActionMailer::Base.deliveries.count).to eq 1 + expect(emails.size) + .to eq(1) + expect(emails.first) + .to have_attributes( + to: contain_exactly(user.email), + subject: eq(I18n.t('user_mailer.welcome.subject')) + ) end end @@ -474,10 +476,10 @@ RSpec.describe User do let(:confirmed_at) { Time.zone.now } it 'confirms user but does not deliver welcome email' do - subject + emails = capture_emails { subject } expect(user.confirmed_at).to be_present - expect(ActionMailer::Base.deliveries.count).to eq 0 + expect(emails).to be_empty end end end diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index cde5a439db..3e84d68738 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -82,6 +82,7 @@ RSpec.configure do |config| config.include Devise::Test::ControllerHelpers, type: :view config.include Devise::Test::IntegrationHelpers, type: :feature config.include Devise::Test::IntegrationHelpers, type: :request + config.include ActionMailer::TestHelper config.include Paperclip::Shoulda::Matchers config.include ActiveSupport::Testing::TimeHelpers config.include Chewy::Rspec::Helpers diff --git a/spec/requests/api/v1/reports_spec.rb b/spec/requests/api/v1/reports_spec.rb index ba3d2b3060..94baf8cb98 100644 --- a/spec/requests/api/v1/reports_spec.rb +++ b/spec/requests/api/v1/reports_spec.rb @@ -35,7 +35,7 @@ RSpec.describe 'Reports' do it 'creates a report', :aggregate_failures do perform_enqueued_jobs do - subject + emails = capture_emails { subject } expect(response).to have_http_status(200) expect(body_as_json).to match( @@ -49,7 +49,13 @@ RSpec.describe 'Reports' do expect(target_account.targeted_reports).to_not be_empty expect(target_account.targeted_reports.first.comment).to eq 'reasons' - expect(ActionMailer::Base.deliveries.first.to).to eq([admin.email]) + expect(emails.size) + .to eq(1) + expect(emails.first) + .to have_attributes( + to: contain_exactly(admin.email), + subject: eq(I18n.t('admin_mailer.new_report.subject', instance: Rails.configuration.x.local_domain, id: target_account.targeted_reports.first.id)) + ) end end diff --git a/spec/services/notify_service_spec.rb b/spec/services/notify_service_spec.rb index 38a33c522d..e818fadcbe 100644 --- a/spec/services/notify_service_spec.rb +++ b/spec/services/notify_service_spec.rb @@ -157,8 +157,6 @@ RSpec.describe NotifyService, type: :service do describe 'email' do before do - ActionMailer::Base.deliveries.clear - user.settings.update('notification_emails.follow': enabled) user.save end @@ -167,7 +165,15 @@ RSpec.describe NotifyService, type: :service do let(:enabled) { true } it 'sends email', :sidekiq_inline do - expect { subject }.to change(ActionMailer::Base.deliveries, :count).by(1) + emails = capture_emails { subject } + + expect(emails.size) + .to eq(1) + expect(emails.first) + .to have_attributes( + to: contain_exactly(user.email), + subject: eq(I18n.t('notification_mailer.follow.subject', name: sender.acct)) + ) end end @@ -175,7 +181,9 @@ RSpec.describe NotifyService, type: :service do let(:enabled) { false } it "doesn't send email" do - expect { subject }.to_not change(ActionMailer::Base.deliveries, :count).from(0) + emails = capture_emails { subject } + + expect(emails).to be_empty end end end diff --git a/spec/services/report_service_spec.rb b/spec/services/report_service_spec.rb index 39e14a6a1c..2caeb189d9 100644 --- a/spec/services/report_service_spec.rb +++ b/spec/services/report_service_spec.rb @@ -158,13 +158,14 @@ RSpec.describe ReportService, type: :service do before do Fabricate(:report, target_account: target_account) - ActionMailer::Base.deliveries.clear source_account.user.settings['notification_emails.report'] = true source_account.user.save end it 'does not send an e-mail' do - expect { subject.call }.to_not change(ActionMailer::Base.deliveries, :count).from(0) + emails = capture_emails { subject.call } + + expect(emails).to be_empty end end end diff --git a/spec/workers/backup_worker_spec.rb b/spec/workers/backup_worker_spec.rb index 987cbc7d60..74928c7ca6 100644 --- a/spec/workers/backup_worker_spec.rb +++ b/spec/workers/backup_worker_spec.rb @@ -15,12 +15,17 @@ describe BackupWorker do let!(:other_backup) { Fabricate(:backup, user: backup.user) } it 'sends the backup to the service and removes other backups', :sidekiq_inline do - expect do - worker.perform(backup.id) - end.to change(UserMailer.deliveries, :size).by(1) + emails = capture_emails { worker.perform(backup.id) } expect(service).to have_received(:call).with(backup) expect { other_backup.reload }.to raise_error(ActiveRecord::RecordNotFound) + expect(emails.size) + .to eq(1) + expect(emails.first) + .to have_attributes( + to: contain_exactly(backup.user.email), + subject: I18n.t('user_mailer.backup_ready.subject') + ) end context 'when sidekiq retries are exhausted' do diff --git a/yarn.lock b/yarn.lock index 6ef5386d7a..1f653070e7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2334,7 +2334,6 @@ __metadata: "@types/redux-immutable": "npm:^4.0.3" "@types/requestidlecallback": "npm:^0.3.5" "@types/webpack": "npm:^4.41.33" - "@types/yargs": "npm:^17.0.24" "@typescript-eslint/eslint-plugin": "npm:^6.0.0" "@typescript-eslint/parser": "npm:^6.17.0" arrow-key-navigation: "npm:^1.2.0" @@ -2391,7 +2390,6 @@ __metadata: mark-loader: "npm:^0.1.6" marky: "npm:^1.2.5" mini-css-extract-plugin: "npm:^1.6.2" - mkdirp: "npm:^3.0.1" path-complete-extname: "npm:^1.0.0" postcss: "npm:^8.4.24" postcss-loader: "npm:^4.3.0" @@ -2422,7 +2420,6 @@ __metadata: redux-immutable: "npm:^4.0.0" regenerator-runtime: "npm:^0.14.0" requestidlecallback: "npm:^0.3.0" - rimraf: "npm:^5.0.1" sass: "npm:^1.62.1" sass-loader: "npm:^10.2.0" stacktrace-js: "npm:^2.0.2" @@ -2448,7 +2445,6 @@ __metadata: workbox-strategies: "npm:^7.0.0" workbox-webpack-plugin: "npm:^7.0.0" workbox-window: "npm:^7.0.0" - yargs: "npm:^17.7.2" peerDependenciesMeta: react: optional: true @@ -3653,7 +3649,7 @@ __metadata: languageName: node linkType: hard -"@types/yargs@npm:^17.0.24, @types/yargs@npm:^17.0.8": +"@types/yargs@npm:^17.0.8": version: 17.0.32 resolution: "@types/yargs@npm:17.0.32" dependencies: @@ -5606,9 +5602,9 @@ __metadata: linkType: hard "cocoon-js-vanilla@npm:^1.3.0": - version: 1.3.0 - resolution: "cocoon-js-vanilla@npm:1.3.0" - checksum: 12adec293ba625c608518ef504c24f4b5906873713092e55d28343dd12fbc9ab7940d8c2bbe02a320bd56120d3768ae90a8d8bc5a6a82e604a56c216b66027e1 + version: 1.4.0 + resolution: "cocoon-js-vanilla@npm:1.4.0" + checksum: 3a3976d325d24518317ca38536ad5f4e570c139b86082dd33c64d38c2a4b2c58fa9cc9aac4624d8fd2f4c9f0eafe681bb8872360010e6b36d9974d8abc57f520 languageName: node linkType: hard @@ -11581,15 +11577,6 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:^3.0.1": - version: 3.0.1 - resolution: "mkdirp@npm:3.0.1" - bin: - mkdirp: dist/cjs/src/bin.js - checksum: 9f2b975e9246351f5e3a40dcfac99fcd0baa31fbfab615fe059fb11e51f10e4803c63de1f384c54d656e4db31d000e4767e9ef076a22e12a641357602e31d57d - languageName: node - linkType: hard - "mousetrap@npm:^1.5.2": version: 1.6.5 resolution: "mousetrap@npm:1.6.5" @@ -14440,7 +14427,7 @@ __metadata: languageName: node linkType: hard -"rimraf@npm:^5.0.1, rimraf@npm:^5.0.5": +"rimraf@npm:^5.0.5": version: 5.0.5 resolution: "rimraf@npm:5.0.5" dependencies: @@ -17741,7 +17728,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^17.3.1, yargs@npm:^17.7.2": +"yargs@npm:^17.3.1": version: 17.7.2 resolution: "yargs@npm:17.7.2" dependencies: