Merge remote-tracking branch 'parent/main' into upstream-20241015
This commit is contained in:
commit
9ef5c05ea0
43 changed files with 621 additions and 169 deletions
|
@ -709,7 +709,7 @@ GEM
|
|||
rufus-scheduler (~> 3.2)
|
||||
sidekiq (>= 6, < 8)
|
||||
tilt (>= 1.4.0)
|
||||
sidekiq-unique-jobs (7.1.31)
|
||||
sidekiq-unique-jobs (7.1.33)
|
||||
brpoplpush-redis_script (> 0.1.1, <= 2.0.0)
|
||||
concurrent-ruby (~> 1.0, >= 1.0.5)
|
||||
redis (< 5.0)
|
||||
|
|
|
@ -7,7 +7,7 @@ class Auth::OmniauthCallbacksController < Devise::OmniauthCallbacksController
|
|||
def self.provides_callback_for(provider)
|
||||
define_method provider do
|
||||
@provider = provider
|
||||
@user = User.find_for_oauth(request.env['omniauth.auth'], current_user)
|
||||
@user = User.find_for_omniauth(request.env['omniauth.auth'], current_user)
|
||||
|
||||
if @user.persisted?
|
||||
record_login_activity
|
||||
|
@ -17,6 +17,9 @@ class Auth::OmniauthCallbacksController < Devise::OmniauthCallbacksController
|
|||
session["devise.#{provider}_data"] = request.env['omniauth.auth']
|
||||
redirect_to new_user_registration_url
|
||||
end
|
||||
rescue ActiveRecord::RecordInvalid
|
||||
flash[:alert] = I18n.t('devise.failure.omniauth_user_creation_failure') if is_navigational_format?
|
||||
redirect_to new_user_session_url
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -152,8 +152,8 @@
|
|||
"compose_form.poll.switch_to_multiple": "Змяніце апытанне, каб дазволіць некалькі варыянтаў адказу",
|
||||
"compose_form.poll.switch_to_single": "Змяніце апытанне, каб дазволіць адзіны варыянт адказу",
|
||||
"compose_form.poll.type": "Стыль",
|
||||
"compose_form.publish": "Допіс",
|
||||
"compose_form.publish_form": "Апублікаваць",
|
||||
"compose_form.publish": "Даслаць",
|
||||
"compose_form.publish_form": "Новы допіс",
|
||||
"compose_form.reply": "Адказаць",
|
||||
"compose_form.save_changes": "Абнавіць",
|
||||
"compose_form.spoiler.marked": "Выдаліць папярэджанне аб змесціве",
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
"about.contact": "За контакти:",
|
||||
"about.disclaimer": "Mastodon е безплатен софтуер с отворен изходен код и търговска марка на Mastodon gGmbH.",
|
||||
"about.domain_blocks.no_reason_available": "Няма налична причина",
|
||||
"about.domain_blocks.preamble": "Mastodon обикновено позволява да разглеждате съдържание и да взаимодействате с други потребители от всякакви сървъри във Федивърс. Има изключения, направени конкретно за този сървър.",
|
||||
"about.domain_blocks.preamble": "Mastodon обикновено позволява да разглеждате съдържание и да взаимодействате с други потребители от всякакви сървъри във Федивселената. Има изключения, направени конкретно за този сървър.",
|
||||
"about.domain_blocks.silenced.explanation": "Обикновено няма да виждате профили и съдържание, освен ако изрично не го потърсите или се включете в него, следвайки го.",
|
||||
"about.domain_blocks.silenced.title": "Ограничено",
|
||||
"about.domain_blocks.suspended.explanation": "Никакви данни от този сървър няма да се обработват, съхраняват или обменят, правещи невъзможно всяко взаимодействие или комуникация с потребители от тези сървъри.",
|
||||
|
@ -110,7 +110,7 @@
|
|||
"column.about": "Относно",
|
||||
"column.blocks": "Блокирани потребители",
|
||||
"column.bookmarks": "Отметки",
|
||||
"column.community": "Локална часова ос",
|
||||
"column.community": "Локален инфопоток",
|
||||
"column.direct": "Частни споменавания",
|
||||
"column.directory": "Разглеждане на профили",
|
||||
"column.domain_blocks": "Блокирани домейни",
|
||||
|
@ -228,7 +228,7 @@
|
|||
"empty_column.account_unavailable": "Профилът не е наличен",
|
||||
"empty_column.blocks": "Още не сте блокирали никакви потребители.",
|
||||
"empty_column.bookmarked_statuses": "Още не сте отметнали публикации. Отметвайки някоя, то тя ще се покаже тук.",
|
||||
"empty_column.community": "Местната часова ос е празна. Напишете нещо обществено, за да завъртите нещата!",
|
||||
"empty_column.community": "Локалният инфопоток е празен. Публикувайте нещо, за да започнете!",
|
||||
"empty_column.direct": "Още нямате никакви частни споменавания. Тук ще се показват, изпращайки или получавайки едно.",
|
||||
"empty_column.domain_blocks": "Още няма блокирани домейни.",
|
||||
"empty_column.explore_statuses": "Няма нищо налагащо се в момента. Проверете пак по-късно!",
|
||||
|
@ -348,10 +348,10 @@
|
|||
"keyboard_shortcuts.favourites": "Отваряне на списъка с любими",
|
||||
"keyboard_shortcuts.federated": "Отваряне на федерирания инфопоток",
|
||||
"keyboard_shortcuts.heading": "Клавишни съчетания",
|
||||
"keyboard_shortcuts.home": "Отваряне на началната часова ос",
|
||||
"keyboard_shortcuts.home": "Отваряне на личния инфопоток",
|
||||
"keyboard_shortcuts.hotkey": "Бърз клавиш",
|
||||
"keyboard_shortcuts.legend": "Показване на тази легенда",
|
||||
"keyboard_shortcuts.local": "Отваряне на местна часова ос",
|
||||
"keyboard_shortcuts.local": "Отваряне на локалния инфопоток",
|
||||
"keyboard_shortcuts.mention": "Споменаване на автора",
|
||||
"keyboard_shortcuts.muted": "Отваряне на списъка със заглушени потребители",
|
||||
"keyboard_shortcuts.my_profile": "Отваряне на профила ви",
|
||||
|
@ -402,7 +402,7 @@
|
|||
"navigation_bar.advanced_interface": "Отваряне в разширен уебинтерфейс",
|
||||
"navigation_bar.blocks": "Блокирани потребители",
|
||||
"navigation_bar.bookmarks": "Отметки",
|
||||
"navigation_bar.community_timeline": "Локална часова ос",
|
||||
"navigation_bar.community_timeline": "Локален инфопоток",
|
||||
"navigation_bar.compose": "Съставяне на нова публикация",
|
||||
"navigation_bar.direct": "Частни споменавания",
|
||||
"navigation_bar.discover": "Откриване",
|
||||
|
@ -524,7 +524,7 @@
|
|||
"poll_button.add_poll": "Анкетиране",
|
||||
"poll_button.remove_poll": "Премахване на анкета",
|
||||
"privacy.change": "Промяна на поверителността на публикация",
|
||||
"privacy.direct.long": "Всеки споменат в публикацията",
|
||||
"privacy.direct.long": "Споменатите в публикацията",
|
||||
"privacy.direct.short": "Определени хора",
|
||||
"privacy.private.long": "Само последователите ви",
|
||||
"privacy.private.short": "Последователи",
|
||||
|
|
|
@ -532,7 +532,7 @@
|
|||
"privacy.public.short": "Públic",
|
||||
"privacy.unlisted.additional": "Es comporta igual que públic, excepte que la publicació no apareixerà als canals en directe o etiquetes, l'explora o a la cerca de Mastodon, fins i tot si ho heu activat a nivell de compte.",
|
||||
"privacy.unlisted.long": "Menys fanfàrries algorísmiques",
|
||||
"privacy.unlisted.short": "Públic tranquil",
|
||||
"privacy.unlisted.short": "Públic silenciós",
|
||||
"privacy_policy.last_updated": "Darrera actualització {date}",
|
||||
"privacy_policy.title": "Política de Privacitat",
|
||||
"recommended": "Recomanat",
|
||||
|
|
|
@ -146,12 +146,12 @@
|
|||
"compose_form.lock_disclaimer.lock": "geschützt",
|
||||
"compose_form.placeholder": "Was gibt’s Neues?",
|
||||
"compose_form.poll.duration": "Umfragedauer",
|
||||
"compose_form.poll.multiple": "Mehrfachauswahl",
|
||||
"compose_form.poll.option_placeholder": "{number}. Auswahlmöglichkeit",
|
||||
"compose_form.poll.multiple": "Multiple-Choice",
|
||||
"compose_form.poll.option_placeholder": "Option {number}",
|
||||
"compose_form.poll.single": "Einfachauswahl",
|
||||
"compose_form.poll.switch_to_multiple": "Mehrfachauswahl erlauben",
|
||||
"compose_form.poll.switch_to_single": "Nur Einfachauswahl erlauben",
|
||||
"compose_form.poll.type": "Art",
|
||||
"compose_form.poll.type": "Stil",
|
||||
"compose_form.publish": "Veröffentlichen",
|
||||
"compose_form.publish_form": "Neuer Beitrag",
|
||||
"compose_form.reply": "Antworten",
|
||||
|
@ -277,9 +277,9 @@
|
|||
"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": "Vom Server empfohlen",
|
||||
"follow_suggestions.curated_suggestion": "Auswahl des Herausgebers",
|
||||
"follow_suggestions.dismiss": "Nicht mehr anzeigen",
|
||||
"follow_suggestions.personalized_suggestion": "Personalisierte Empfehlung",
|
||||
"follow_suggestions.personalized_suggestion": "Persönliche Empfehlung",
|
||||
"follow_suggestions.popular_suggestion": "Beliebte Empfehlung",
|
||||
"follow_suggestions.view_all": "Alle anzeigen",
|
||||
"follow_suggestions.who_to_follow": "Empfohlene Profile",
|
||||
|
@ -528,7 +528,7 @@
|
|||
"privacy.direct.short": "Bestimmte Profile",
|
||||
"privacy.private.long": "Nur deine Follower",
|
||||
"privacy.private.short": "Follower",
|
||||
"privacy.public.long": "Alle auf und außerhalb von Mastodon",
|
||||
"privacy.public.long": "Alle in und außerhalb von Mastodon",
|
||||
"privacy.public.short": "Öffentlich",
|
||||
"privacy.unlisted.additional": "Das Verhalten ist wie bei „Öffentlich“, jedoch erscheint dieser Beitrag nicht in „Live-Feeds“, „Erkunden“, Hashtags oder über die Mastodon-Suchfunktion – selbst wenn du das in den Einstellungen aktiviert hast.",
|
||||
"privacy.unlisted.long": "Weniger im Algorithmus berücksichtigt",
|
||||
|
|
|
@ -530,6 +530,8 @@
|
|||
"privacy.private.short": "Seguidores",
|
||||
"privacy.public.long": "Cualquiera dentro y fuera de Mastodon",
|
||||
"privacy.public.short": "Público",
|
||||
"privacy.unlisted.additional": "Esto se comporta exactamente igual que el público, excepto que la publicación no aparecerá en la cronología en directo o en las etiquetas, la exploración o búsqueda de Mastodon, incluso si está optado por activar la cuenta de usuario.",
|
||||
"privacy.unlisted.long": "Menos fanfares algorítmicos",
|
||||
"privacy.unlisted.short": "Público tranquilo",
|
||||
"privacy_policy.last_updated": "Actualizado por última vez {date}",
|
||||
"privacy_policy.title": "Política de Privacidad",
|
||||
|
|
|
@ -2,6 +2,10 @@
|
|||
"about.blocks": "Servitores moderate",
|
||||
"about.contact": "Contacto:",
|
||||
"about.disclaimer": "Mastodon es software libere, de codice aperte, e un marca de Mastodon gGmbH.",
|
||||
"about.domain_blocks.no_reason_available": "Ration non disponibile",
|
||||
"about.domain_blocks.silenced.title": "Limitate",
|
||||
"about.domain_blocks.suspended.title": "Suspendite",
|
||||
"about.not_available": "Iste information non faceva disponibile in iste servitor.",
|
||||
"about.rules": "Regulas del servitor",
|
||||
"account.account_note_header": "Nota",
|
||||
"account.add_or_remove_from_list": "Adder o remover ab listas",
|
||||
|
@ -12,6 +16,7 @@
|
|||
"account.blocked": "Blocate",
|
||||
"account.browse_more_on_origin_server": "Navigar plus sur le profilo original",
|
||||
"account.copy": "Copiar ligamine a profilo",
|
||||
"account.direct": "Mentionar privatemente a @{name}",
|
||||
"account.disable_notifications": "Stoppar le notificationes quando @{name} publica",
|
||||
"account.domain_blocked": "Dominio blocate",
|
||||
"account.edit_profile": "Modificar profilo",
|
||||
|
@ -33,6 +38,7 @@
|
|||
"account.languages": "Cambiar le linguas subscribite",
|
||||
"account.link_verified_on": "Le proprietate de iste ligamine esseva verificate le {date}",
|
||||
"account.locked_info": "Le stato de confidentialitate de iste conto es definite a blocate. Le proprietario revisa manualmente qui pote sequer lo.",
|
||||
"account.media": "Multimedia",
|
||||
"account.mention": "Mentionar @{name}",
|
||||
"account.moved_to": "{name} indicava que lor nove conto ora es:",
|
||||
"account.mute": "Silentiar @{name}",
|
||||
|
@ -57,6 +63,7 @@
|
|||
"account.unmute_notifications_short": "Non plus silentiar le notificationes",
|
||||
"account.unmute_short": "Non plus silentiar",
|
||||
"account_note.placeholder": "Clicca pro adder un nota",
|
||||
"admin.dashboard.retention.average": "Median",
|
||||
"admin.dashboard.retention.cohort_size": "Nove usatores",
|
||||
"admin.impact_report.instance_followers": "Sequitores que nostre usatores poterea perder",
|
||||
"admin.impact_report.instance_follows": "Sequitores que lor usatores poterea perder",
|
||||
|
@ -69,6 +76,7 @@
|
|||
"bundle_column_error.return": "Retornar al initio",
|
||||
"bundle_modal_error.close": "Clauder",
|
||||
"bundle_modal_error.retry": "Tentar novemente",
|
||||
"closed_registrations_modal.description": "Crear un conto in {domain} actualmente non es possibile, ma considera que tu non besonia un conto specific in {domain} pro usar Mastodon.",
|
||||
"closed_registrations_modal.find_another_server": "Trovar altere servitor",
|
||||
"column.about": "A proposito de",
|
||||
"column.blocks": "Usatores blocate",
|
||||
|
@ -105,6 +113,7 @@
|
|||
"compose_form.poll.option_placeholder": "Option {number}",
|
||||
"compose_form.poll.single": "Seliger un",
|
||||
"compose_form.poll.switch_to_multiple": "Cambiar inquesta pro permitter selectiones multiple",
|
||||
"compose_form.poll.switch_to_single": "Cambiar inquesta pro permitter selection singule",
|
||||
"compose_form.poll.type": "Stylo",
|
||||
"compose_form.publish": "Publicar",
|
||||
"compose_form.publish_form": "Nove message",
|
||||
|
@ -117,6 +126,8 @@
|
|||
"confirmations.block.block_and_report": "Blocar e signalar",
|
||||
"confirmations.block.confirm": "Blocar",
|
||||
"confirmations.block.message": "Es tu secur que tu vole blocar {name}?",
|
||||
"confirmations.cancel_follow_request.confirm": "Retirar requesta",
|
||||
"confirmations.cancel_follow_request.message": "Es tu secur que tu vole retirar tu requesta a sequer a {name}?",
|
||||
"confirmations.delete.confirm": "Deler",
|
||||
"confirmations.delete.message": "Es tu secur que tu vole deler iste message?",
|
||||
"confirmations.delete_list.confirm": "Deler",
|
||||
|
@ -144,6 +155,7 @@
|
|||
"disabled_account_banner.account_settings": "Parametros de conto",
|
||||
"disabled_account_banner.text": "Tu conto {disabledAccount} es actualmente disactivate.",
|
||||
"dismissable_banner.dismiss": "Dimitter",
|
||||
"embed.preview": "Hic es como il parera:",
|
||||
"emoji_button.activity": "Activitate",
|
||||
"emoji_button.clear": "Rader",
|
||||
"emoji_button.custom": "Personalisate",
|
||||
|
@ -162,6 +174,11 @@
|
|||
"empty_column.account_timeline": "Nulle messages hic!",
|
||||
"empty_column.account_unavailable": "Profilo non disponibile",
|
||||
"empty_column.blocks": "Tu non ha blocate alcun usator ancora.",
|
||||
"empty_column.domain_blocks": "Il non ha dominios blocate ancora.",
|
||||
"empty_column.explore_statuses": "Nihil es in tendentias ora mesme. Retorna postea!",
|
||||
"empty_column.favourited_statuses": "Tu non ha necun messages favorite ancora. Quando tu marca un como favorito, ille essera monstrate hic.",
|
||||
"empty_column.followed_tags": "Tu ancora non ha sequite necun hashtags. Quando tu lo face, illes essera monstrate hic.",
|
||||
"empty_column.hashtag": "Ancora non il ha nihil in iste hashtag.",
|
||||
"errors.unexpected_crash.report_issue": "Signalar un defecto",
|
||||
"explore.search_results": "Resultatos de recerca",
|
||||
"explore.suggested_follows": "Personas",
|
||||
|
@ -320,6 +337,8 @@
|
|||
"report.placeholder": "Commentos additional",
|
||||
"report.reasons.dislike": "Non me place",
|
||||
"report_notification.categories.other": "Alteres",
|
||||
"report_notification.open": "Aperir reporto",
|
||||
"search.no_recent_searches": "Nulle recercas recente",
|
||||
"search.quick_action.go_to_account": "Vader al profilo {x}",
|
||||
"search.quick_action.go_to_hashtag": "Vader al hashtag {x}",
|
||||
"search.quick_action.open_url": "Aperir URL in Mastodon",
|
||||
|
@ -333,14 +352,20 @@
|
|||
"search_results.hashtags": "Hashtags",
|
||||
"search_results.see_all": "Vider toto",
|
||||
"search_results.statuses": "Messages",
|
||||
"server_banner.active_users": "usatores active",
|
||||
"server_banner.learn_more": "Apprender plus",
|
||||
"server_banner.server_stats": "Statos del servitor:",
|
||||
"sign_in_banner.create_account": "Crear un conto",
|
||||
"sign_in_banner.sign_in": "Initiar le session",
|
||||
"status.block": "Blocar @{name}",
|
||||
"status.copy": "Copiar ligamine a message",
|
||||
"status.delete": "Deler",
|
||||
"status.direct": "Mentionar privatemente a @{name}",
|
||||
"status.direct_indicator": "Mention private",
|
||||
"status.edit": "Modificar",
|
||||
"status.edited": "Modificate le {date}",
|
||||
"status.edited_x_times": "Modificate {count, plural, one {{count} tempore} other {{count} tempores}}",
|
||||
"status.favourite": "Adder al favoritos",
|
||||
"status.filter": "Filtrar iste message",
|
||||
"status.hide": "Celar le message",
|
||||
"status.history.created": "create per {name} le {date}",
|
||||
|
@ -351,12 +376,17 @@
|
|||
"status.mute_conversation": "Silentiar conversation",
|
||||
"status.read_more": "Leger plus",
|
||||
"status.share": "Compartir",
|
||||
"status.show_less": "Monstrar minus",
|
||||
"status.show_more": "Monstrar plus",
|
||||
"status.translate": "Traducer",
|
||||
"status.translated_from_with": "Traducite ab {lang} usante {provider}",
|
||||
"status.uncached_media_warning": "Previsualisation non disponibile",
|
||||
"subscribed_languages.save": "Salveguardar le cambiamentos",
|
||||
"tabs_bar.home": "Initio",
|
||||
"tabs_bar.notifications": "Notificationes",
|
||||
"timeline_hint.resources.statuses": "Messages ancian",
|
||||
"trends.trending_now": "Ora in tendentias",
|
||||
"upload_button.label": "Adde imagines, un video o un file de audio",
|
||||
"upload_modal.choose_image": "Seliger un imagine",
|
||||
"upload_modal.detect_text": "Deteger texto ab un pictura",
|
||||
"video.close": "Clauder le video",
|
||||
|
|
|
@ -21,6 +21,8 @@
|
|||
"account.blocked": "Blocat",
|
||||
"account.browse_more_on_origin_server": "Vezi mai multe pe profilul original",
|
||||
"account.cancel_follow_request": "Retrage cererea de urmărire",
|
||||
"account.copy": "Copiază link-ul profilului",
|
||||
"account.direct": "Menționează pe @{name} în privat",
|
||||
"account.disable_notifications": "Nu îmi mai trimite notificări când postează @{name}",
|
||||
"account.domain_blocked": "Domeniu blocat",
|
||||
"account.edit_profile": "Modifică profilul",
|
||||
|
@ -30,6 +32,7 @@
|
|||
"account.featured_tags.last_status_never": "Fără postări",
|
||||
"account.featured_tags.title": "Haștagurile recomandate de {name}",
|
||||
"account.follow": "Abonează-te",
|
||||
"account.follow_back": "Urmăreşte înapoi",
|
||||
"account.followers": "Urmăritori",
|
||||
"account.followers.empty": "Acest utilizator nu are încă urmăritori.",
|
||||
"account.followers_counter": "{count, plural, one {Un abonat} few {{counter} abonați} other {{counter} de abonați}}",
|
||||
|
@ -38,6 +41,7 @@
|
|||
"account.follows.empty": "Momentan acest utilizator nu are niciun abonament.",
|
||||
"account.go_to_profile": "Mergi la profil",
|
||||
"account.hide_reblogs": "Ascunde distribuirile de la @{name}",
|
||||
"account.in_memoriam": "În Memoriam.",
|
||||
"account.joined_short": "Înscris",
|
||||
"account.languages": "Schimbă limbile abonate",
|
||||
"account.link_verified_on": "Proprietatea acestui link a fost verificată pe {date}",
|
||||
|
@ -46,7 +50,10 @@
|
|||
"account.mention": "Menționează pe @{name}",
|
||||
"account.moved_to": "{name} a indicat că noul său cont este acum:",
|
||||
"account.mute": "Pune pe @{name} pe silențios",
|
||||
"account.mute_notifications_short": "Amuțește notificările",
|
||||
"account.mute_short": "Ignoră",
|
||||
"account.muted": "Pus pe silențios",
|
||||
"account.no_bio": "Nicio descriere furnizată.",
|
||||
"account.open_original_page": "Deschide pagina originală",
|
||||
"account.posts": "Postări",
|
||||
"account.posts_with_replies": "Postări și răspunsuri",
|
||||
|
@ -69,6 +76,7 @@
|
|||
"admin.dashboard.retention.average": "În medie",
|
||||
"admin.dashboard.retention.cohort": "Înregistrări lunar",
|
||||
"admin.dashboard.retention.cohort_size": "Utilizatori noi",
|
||||
"admin.impact_report.title": "Rezumatul impactului",
|
||||
"alert.rate_limited.message": "Vă rugăm să reîncercați după {retry_time, time, medium}.",
|
||||
"alert.rate_limited.title": "Debit limitat",
|
||||
"alert.unexpected.message": "A apărut o eroare neașteptată.",
|
||||
|
@ -98,9 +106,11 @@
|
|||
"column.blocks": "Utilizatori blocați",
|
||||
"column.bookmarks": "Marcaje",
|
||||
"column.community": "Cronologie locală",
|
||||
"column.direct": "Mențiuni private",
|
||||
"column.directory": "Explorează profiluri",
|
||||
"column.domain_blocks": "Domenii blocate",
|
||||
"column.favourites": "Favorite",
|
||||
"column.firehose": "Fluxuri live",
|
||||
"column.follow_requests": "Cereri de abonare",
|
||||
"column.home": "Acasă",
|
||||
"column.lists": "Liste",
|
||||
|
@ -131,11 +141,19 @@
|
|||
"compose_form.lock_disclaimer.lock": "privat",
|
||||
"compose_form.placeholder": "La ce te gândești?",
|
||||
"compose_form.poll.duration": "Durata sondajului",
|
||||
"compose_form.poll.multiple": "Alegeri multiple",
|
||||
"compose_form.poll.option_placeholder": "Opțiune {number}",
|
||||
"compose_form.poll.single": "Alegeți unul",
|
||||
"compose_form.poll.switch_to_multiple": "Modifică sondajul pentru a permite mai multe opțiuni",
|
||||
"compose_form.poll.switch_to_single": "Modifică sondajul pentru a permite o singură opțiune",
|
||||
"compose_form.poll.type": "Stil",
|
||||
"compose_form.publish": "Postare",
|
||||
"compose_form.publish_form": "Publică",
|
||||
"compose_form.reply": "Răspundeți",
|
||||
"compose_form.save_changes": "Actualizare",
|
||||
"compose_form.spoiler.marked": "Elimină avertismentul privind conținutul",
|
||||
"compose_form.spoiler.unmarked": "Adaugă un avertisment privind conținutul",
|
||||
"compose_form.spoiler_placeholder": "Atenționare de conținut (opțional)",
|
||||
"confirmation_modal.cancel": "Anulează",
|
||||
"confirmations.block.block_and_report": "Blochează și raportează",
|
||||
"confirmations.block.confirm": "Blochează",
|
||||
|
@ -151,6 +169,7 @@
|
|||
"confirmations.domain_block.confirm": "Blochează întregul domeniu",
|
||||
"confirmations.domain_block.message": "Ești absolut sigur că vrei să blochezi tot domeniul {domain}? În cele mai multe cazuri, raportarea sau blocarea anumitor lucruri este suficientă și de preferat. Nu vei mai vedea niciun conținut din acest domeniu în vreun flux public sau în vreo notificare. Abonații tăi din acest domeniu vor fi eliminați.",
|
||||
"confirmations.edit.confirm": "Modifică",
|
||||
"confirmations.edit.message": "Editarea acum va suprascrie mesajul pe care îl compuneți în prezent. Sunteți sigur că vreți să continuați?",
|
||||
"confirmations.logout.confirm": "Deconectare",
|
||||
"confirmations.logout.message": "Ești sigur că vrei să te deconectezi?",
|
||||
"confirmations.mute.confirm": "Ignoră",
|
||||
|
@ -165,6 +184,7 @@
|
|||
"conversation.mark_as_read": "Marchează ca citit",
|
||||
"conversation.open": "Vizualizează conversația",
|
||||
"conversation.with": "Cu {names}",
|
||||
"copy_icon_button.copied": "Copiat în clipboard",
|
||||
"copypaste.copied": "Copiat",
|
||||
"copypaste.copy_to_clipboard": "Copiază în clipboard",
|
||||
"directory.federated": "Din fediversul cunoscut",
|
||||
|
@ -240,10 +260,17 @@
|
|||
"filter_modal.select_filter.title": "Filtrează această postare",
|
||||
"filter_modal.title.status": "Filtrează o postare",
|
||||
"firehose.all": "Toate",
|
||||
"firehose.local": "Acest Server",
|
||||
"firehose.remote": "Alte servere",
|
||||
"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ă",
|
||||
"follow_suggestions.view_all": "Vizualizați tot",
|
||||
"follow_suggestions.who_to_follow": "Pe cine să urmăriți",
|
||||
"followed_tags": "Hastaguri urmărite",
|
||||
"footer.about": "Despre",
|
||||
"footer.directory": "Catalogul de profiluri",
|
||||
|
@ -272,12 +299,15 @@
|
|||
"home.hide_announcements": "Ascunde anunțurile",
|
||||
"home.pending_critical_update.body": "Te rugăm să-ți actualizezi serverul de Mastodon cat mai curând posibil!",
|
||||
"home.pending_critical_update.link": "Vezi noutăți",
|
||||
"home.pending_critical_update.title": "Actualizare critică de securitate disponibilă!",
|
||||
"home.show_announcements": "Afișează anunțurile",
|
||||
"interaction_modal.description.favourite": "Cu un cont pe Mastodon, poți adăuga această postare la favorite pentru a-l informa pe autorul ei că o apreciezi și pentru a o salva pentru mai târziu.",
|
||||
"interaction_modal.description.follow": "Cu un cont Mastodon, poți urmări pe {name} pentru a vedea postările sale în cronologia ta principală.",
|
||||
"interaction_modal.description.reblog": "Cu un cont pe Mastodon, poți distribui această postare pentru a le-o arăta și celor abonați ție.",
|
||||
"interaction_modal.description.reply": "Cu un cont pe Mastodon, poți răspunde acestei postări.",
|
||||
"interaction_modal.login.action": "Du-mă acasă",
|
||||
"interaction_modal.login.prompt": "Adresa serverului tău acasă, de ex. mastodon.social",
|
||||
"interaction_modal.no_account_yet": "Nu ești încă pe Mastodon?",
|
||||
"interaction_modal.on_another_server": "Pe un alt server",
|
||||
"interaction_modal.on_this_server": "Pe acest server",
|
||||
"interaction_modal.title.follow": "Urmărește pe {name}",
|
||||
|
|
|
@ -280,6 +280,7 @@
|
|||
"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",
|
||||
"follow_suggestions.view_all": "Zobraz všetky",
|
||||
"follow_suggestions.who_to_follow": "Koho nasledovať",
|
||||
"followed_tags": "Nasledované haštagy",
|
||||
|
@ -355,7 +356,7 @@
|
|||
"keyboard_shortcuts.muted": "otvor zoznam stíšených užívateľov",
|
||||
"keyboard_shortcuts.my_profile": "otvor svoj profil",
|
||||
"keyboard_shortcuts.notifications": "Otvor panel oznámení",
|
||||
"keyboard_shortcuts.open_media": "na otvorenie médií",
|
||||
"keyboard_shortcuts.open_media": "Otvorenie médií",
|
||||
"keyboard_shortcuts.pinned": "otvor zoznam pripnutých príspevkov",
|
||||
"keyboard_shortcuts.profile": "otvor autorov profil",
|
||||
"keyboard_shortcuts.reply": "odpovedať",
|
||||
|
@ -364,7 +365,7 @@
|
|||
"keyboard_shortcuts.spoilers": "to show/hide CW field",
|
||||
"keyboard_shortcuts.start": "otvor panel ''začíname''",
|
||||
"keyboard_shortcuts.toggle_hidden": "ukáž/skry text za CW",
|
||||
"keyboard_shortcuts.toggle_sensitivity": "pre zobrazenie/skrytie médií",
|
||||
"keyboard_shortcuts.toggle_sensitivity": "Ukáž/skry médiá",
|
||||
"keyboard_shortcuts.toot": "začni úplne nový príspevok",
|
||||
"keyboard_shortcuts.unfocus": "nesústreď sa na písaciu plochu, alebo hľadanie",
|
||||
"keyboard_shortcuts.up": "posuň sa vyššie v zozname",
|
||||
|
@ -493,7 +494,7 @@
|
|||
"onboarding.share.message": "Na Mastodone som {username}. Príď ma nasledovať na {url}",
|
||||
"onboarding.share.next_steps": "Ďalšie možné kroky:",
|
||||
"onboarding.share.title": "Zdieľaj svoj profil",
|
||||
"onboarding.start.lead": "Your new Mastodon account is ready to go. Here's how you can make the most of it:",
|
||||
"onboarding.start.lead": "Teraz si súčasťou Mastodonu, unikátnej, decentralizovanej sociálnej platformy, kde ty, nie algoritmus, spravuješ svoj vlastný zážitok. Poďme ťa naštartovať na tomto novom sociálnom pomedzí:",
|
||||
"onboarding.start.skip": "Want to skip right ahead?",
|
||||
"onboarding.start.title": "Zvládli ste to!",
|
||||
"onboarding.steps.follow_people.body": "You curate your own feed. Lets fill it with interesting people.",
|
||||
|
@ -705,7 +706,7 @@
|
|||
"units.short.million": "{count}mil.",
|
||||
"units.short.thousand": "{count}tis.",
|
||||
"upload_area.title": "Pretiahni a pusť pre nahratie",
|
||||
"upload_button.label": "Pridaj médiálny súbor (JPEG, PNG, GIF, WebM, MP4, MOV)",
|
||||
"upload_button.label": "Pridaj obrázky, video, alebo zvukový súbor",
|
||||
"upload_error.limit": "Limit pre nahrávanie súborov bol prekročený.",
|
||||
"upload_error.poll": "Nahrávanie súborov pri anketách nieje možné.",
|
||||
"upload_form.audio_description": "Popíš, pre ľudí so stratou sluchu",
|
||||
|
|
|
@ -148,6 +148,7 @@
|
|||
"compose_form.poll.duration": "Varaktighet för omröstning",
|
||||
"compose_form.poll.multiple": "Flera val",
|
||||
"compose_form.poll.option_placeholder": "Alternativ {number}",
|
||||
"compose_form.poll.single": "Välj en",
|
||||
"compose_form.poll.switch_to_multiple": "Ändra enkät för att tillåta flera val",
|
||||
"compose_form.poll.switch_to_single": "Ändra enkät för att tillåta ett enda val",
|
||||
"compose_form.poll.type": "Stil",
|
||||
|
|
|
@ -2,19 +2,22 @@
|
|||
"about.blocks": "ma lawa",
|
||||
"about.contact": "toki:",
|
||||
"about.domain_blocks.no_reason_available": "mi sona ala e tan",
|
||||
"about.domain_blocks.suspended.title": "weka",
|
||||
"about.not_available": "lon kulupu ni la sina ken alasa ala e sona ni.",
|
||||
"about.rules": "lawa kulupu",
|
||||
"account.account_note_header": "sona awen",
|
||||
"account.add_or_remove_from_list": "o ante e lipu jan",
|
||||
"account.badges.bot": "ilo nanpa li lawa e ni",
|
||||
"account.badges.group": "kulupu",
|
||||
"account.block": "o weka e @{name}",
|
||||
"account.block_domain": "o weka e ma {domain}",
|
||||
"account.block_short": "o weka e jan",
|
||||
"account.blocked": "jan ni li weka",
|
||||
"account.block_short": "o weka e jan tawa mi",
|
||||
"account.blocked": "jan li weka tawa mi",
|
||||
"account.browse_more_on_origin_server": "sina tawa ma tan pi jan ni la sina ken lukin e mute",
|
||||
"account.cancel_follow_request": "o pini wile kute",
|
||||
"account.cancel_follow_request": "o pini kute",
|
||||
"account.copy": "o pali same e linja pi lipu jan",
|
||||
"account.direct": "len la o mu e @{name}",
|
||||
"account.disable_notifications": "@{name} li toki la o toki ala e toki ona tawa mi",
|
||||
"account.disable_notifications": "@{name} li toki la o mu ala e mi",
|
||||
"account.domain_blocked": "ma ni li weka tawa sina",
|
||||
"account.edit_profile": "o ante e lipu mi",
|
||||
"account.enable_notifications": "@{name} li toki la o toki e toki ona tawa mi",
|
||||
|
@ -34,15 +37,15 @@
|
|||
"account.media": "sitelen",
|
||||
"account.mention": "o toki e jan @{name}",
|
||||
"account.moved_to": "lipu jan sin pi jan {name} li ni:",
|
||||
"account.mute": "o kute ala e @{name}",
|
||||
"account.mute": "o len e @{name}",
|
||||
"account.mute_notifications_short": "o kute ala e mu tan jan ni",
|
||||
"account.mute_short": "o kute ala",
|
||||
"account.muted": "sina kute ala e jan ni",
|
||||
"account.muted": "sina len e jan ni",
|
||||
"account.no_bio": "lipu li weka",
|
||||
"account.open_original_page": "o open e lipu open",
|
||||
"account.posts": "toki suli",
|
||||
"account.posts_with_replies": "toki ale",
|
||||
"account.report": "jan @{name} la o toki e lawa",
|
||||
"account.report": "jan @{name} la o toki tawa lawa",
|
||||
"account.requested": "jan ni o ken e kute sina. sina pini wile kute la o luka e ni",
|
||||
"account.requested_follow": "{name} li wile kute e sina",
|
||||
"account.share": "o pana e lipu jan @{name}",
|
||||
|
@ -51,20 +54,21 @@
|
|||
"account.unblock_domain": "o weka ala e ma {domain}",
|
||||
"account.unblock_short": "o pini weka",
|
||||
"account.unfollow": "o pini kute",
|
||||
"account.unmute": "o kute e @{name}",
|
||||
"account.unmute": "o len ala e @{name}",
|
||||
"account.unmute_notifications_short": "o kute e mu tan jan ni",
|
||||
"account.unmute_short": "o ken kute e jan ni",
|
||||
"account.unmute_short": "o len ala",
|
||||
"admin.dashboard.retention.average": "sama",
|
||||
"admin.dashboard.retention.cohort": "tenpo mun open",
|
||||
"admin.dashboard.retention.cohort_size": "jan sin",
|
||||
"alert.rate_limited.message": "tenpo {retry_time, time, medium} la o pali awen",
|
||||
"alert.unexpected.message": "pakala li lon",
|
||||
"alert.unexpected.title": "pakala",
|
||||
"alert.unexpected.title": "pakala a!",
|
||||
"announcement.announcement": "toki suli",
|
||||
"audio.hide": "o len e kalama",
|
||||
"bundle_column_error.error.title": "pakala!",
|
||||
"bundle_column_error.error.title": "ike a!",
|
||||
"bundle_column_error.network.title": "pakala la ilo sina li toki ala tawa ilo ante",
|
||||
"bundle_column_error.retry": "o ni sin",
|
||||
"bundle_column_error.return": "o tawa tomo",
|
||||
"bundle_column_error.routing.body": "ilo li sona ala e lipu wile. sina pana ala pana e nasin pona tawa lipu?",
|
||||
"bundle_column_error.routing.title": "pakala nanpa 404",
|
||||
"bundle_modal_error.close": "o pini",
|
||||
|
@ -72,64 +76,95 @@
|
|||
"bundle_modal_error.retry": "o ni sin",
|
||||
"closed_registrations_modal.find_another_server": "o alasa e ma ante",
|
||||
"column.blocks": "kulupu pi jan weka",
|
||||
"column.lists": "lipu pi lipu mute",
|
||||
"column.mutes": "sina wile ala kute e jan ni",
|
||||
"community.column_settings.local_only": "toki lon ni taso",
|
||||
"column.home": "lipu open",
|
||||
"column.lists": "kulupu lipu",
|
||||
"column.mutes": "jan len",
|
||||
"column.pins": "toki sewi",
|
||||
"column_header.hide_settings": "o len e lawa",
|
||||
"column_header.pin": "o sewi",
|
||||
"column_header.show_settings": "o lukin e lawa",
|
||||
"column_header.unpin": "o sewi ala",
|
||||
"column_subheading.settings": "ken ilo",
|
||||
"community.column_settings.local_only": "toki tan ni taso",
|
||||
"community.column_settings.media_only": "sitelen taso",
|
||||
"community.column_settings.remote_only": "toki tan ante taso",
|
||||
"compose.language.change": "o ante e nasin toki",
|
||||
"compose.language.search": "o alasa e nasin toki...",
|
||||
"compose.published.body": "toki li pana.",
|
||||
"compose.published.open": "o lukin",
|
||||
"compose.saved.body": "ilo li awen e ijo pana sina.",
|
||||
"compose_form.direct_message_warning_learn_more": "o kama sona e ijo ante",
|
||||
"compose_form.placeholder": "sina toki insa e seme",
|
||||
"compose_form.encryption_warning": "toki li len ala lon ilo Masoton ꞏ o pana ala e sona suli len lon ilo Masoton",
|
||||
"compose_form.placeholder": "sina wile toki e seme?",
|
||||
"compose_form.poll.duration": "tenpo pana",
|
||||
"compose_form.poll.multiple": "pana mute",
|
||||
"compose_form.poll.option_placeholder": "ken nanpa {number}",
|
||||
"compose_form.poll.single": "pana pi wan taso",
|
||||
"compose_form.poll.switch_to_multiple": "o ante e nasin pana. pana mute o ken",
|
||||
"compose_form.poll.switch_to_single": "o ante e nasin pana. pana wan taso o lon",
|
||||
"compose_form.poll.type": "nasin",
|
||||
"compose_form.publish": "o toki",
|
||||
"compose_form.publish_form": "o open toki sin",
|
||||
"compose_form.reply": "o toki lon ijo ni",
|
||||
"compose_form.save_changes": "o sin e ni",
|
||||
"compose_form.spoiler.marked": "o weka e toki pi ijo ike ken",
|
||||
"confirmations.block.confirm": "o weka.",
|
||||
"confirmation_modal.cancel": "o pini",
|
||||
"confirmations.block.confirm": "o weka",
|
||||
"confirmations.block.message": "sina o wile ala wile weka e jan {name}?",
|
||||
"confirmations.cancel_follow_request.confirm": "o weka e wile sina",
|
||||
"confirmations.cancel_follow_request.message": "sina awen ala awen wile weka e wile kute sina lon {name}?",
|
||||
"confirmations.delete.confirm": "o pakala",
|
||||
"confirmations.delete.message": "sina wile ala wile pakala e toki ni",
|
||||
"confirmations.delete_list.confirm": "o pakala",
|
||||
"confirmations.delete_list.message": "sina wile ala wile pakala e lipu ni",
|
||||
"confirmations.delete.confirm": "o weka",
|
||||
"confirmations.delete.message": "sina wile ala wile weka e toki ni?",
|
||||
"confirmations.delete_list.confirm": "o weka",
|
||||
"confirmations.delete_list.message": "sina wile ala wile weka e lipu ni?",
|
||||
"confirmations.discard_edit_media.confirm": "o weka",
|
||||
"confirmations.discard_edit_media.message": "toki sitelen anu lukin lili sitelen la ante pi awen ala li lon. sina wile weka e ante ni?",
|
||||
"confirmations.domain_block.confirm": "o weka.",
|
||||
"confirmations.domain_block.message": "sina wile ala a wile a len e ma {domain} ꞏ ken suli la len jan taso li pona ꞏ len pi ma ni la sina ken ala lukin e ijo pi ma ni lon lipu toki ale anu lukin toki ꞏ len ni la jan kute sina pi ma ni li weka",
|
||||
"confirmations.edit.confirm": "o ante",
|
||||
"confirmations.logout.confirm": "o weka",
|
||||
"confirmations.logout.message": "sina wile ala wile weka",
|
||||
"confirmations.mute.confirm": "sina wile ala kute e jan ni",
|
||||
"confirmations.mute.confirm": "o len",
|
||||
"confirmations.mute.message": "sina awen ala awen wile kute ala e {name}?",
|
||||
"confirmations.redraft.confirm": "o pakala o pali sin e toki",
|
||||
"confirmations.redraft.confirm": "o weka o pali sin e toki",
|
||||
"confirmations.redraft.message": "pali sin e toki ni la sina wile ala wile weka e ona? sina ni la suli pi toki ni en wawa pi toki ni li weka. kin la toki lon toki ni li jo e mama ala.",
|
||||
"confirmations.reply.confirm": "toki lon toki ni",
|
||||
"confirmations.reply.message": "toki tawa ona li weka e toki pali sina ꞏ sina wile ala wile ni",
|
||||
"confirmations.unfollow.confirm": "o pini kute",
|
||||
"confirmations.unfollow.message": "sina o wile ala wile pini kute e jan {name}?",
|
||||
"conversation.delete": "o weka e toki ni",
|
||||
"conversation.mark_as_read": "ni o sin ala",
|
||||
"conversation.open": "o lukin e toki",
|
||||
"conversation.with": "lon {names}",
|
||||
"directory.local": "tan {domain} taso",
|
||||
"directory.new_arrivals": "jan pi kama sin",
|
||||
"directory.recently_active": "jan lon tenpo poka",
|
||||
"disabled_account_banner.account_settings": "wile pi lipu jan",
|
||||
"disabled_account_banner.text": "sina ken ala kepeken e lipu jan sina pi nimi {disabledAccount}.",
|
||||
"dismissable_banner.community_timeline": "ni li toki pi tenpo poka tawa ale tan jan lon ma lawa pi nimi {domain}.",
|
||||
"dismissable_banner.dismiss": "o weka",
|
||||
"dismissable_banner.explore_links": "ni li toki pi ijo sin ꞏ jan mute li pana e ni lon tenpo suno ni ꞏ sin la jan mute li pana la ni li kama suli",
|
||||
"embed.preview": "ni li jo e sitelen ni:",
|
||||
"emoji_button.activity": "musi",
|
||||
"emoji_button.flags": "len ma",
|
||||
"emoji_button.food": "moku",
|
||||
"emoji_button.label": "o pana e Emosi",
|
||||
"emoji_button.label": "o pana e sitelen pilin",
|
||||
"emoji_button.nature": "soweli en kasi",
|
||||
"emoji_button.not_found": "sitelen Emosi ala li lon",
|
||||
"emoji_button.not_found": "sitelen pilin ala li lon",
|
||||
"emoji_button.objects": "ijo",
|
||||
"emoji_button.people": "jan",
|
||||
"emoji_button.search": "o alasa",
|
||||
"emoji_button.search": "o alasa...",
|
||||
"emoji_button.search_results": "ijo pi alasa ni",
|
||||
"emoji_button.symbols": "sitelen",
|
||||
"emoji_button.travel": "ma en tawa",
|
||||
"empty_column.account_hides_collections": "jan ni li wile len e sona ni",
|
||||
"empty_column.account_timeline": "toki ala li lon!",
|
||||
"empty_column.account_unavailable": "ken ala lukin e lipu jan",
|
||||
"empty_column.blocks": "jan ala li weka tawa sina.",
|
||||
"empty_column.followed_tags": "sina alasa ala e toki ꞏ sina alasa e toki la toki li lon ni",
|
||||
"empty_column.hashtag": "ala li lon toki ni",
|
||||
"empty_column.mutes": "jan ala la sina wile ala kute.",
|
||||
"empty_column.mutes": "jan ala li len tawa sina.",
|
||||
"errors.unexpected_crash.report_issue": "o toki e pakala tawa lawa",
|
||||
"explore.search_results": "ijo pi alasa ni",
|
||||
"explore.suggested_follows": "jan",
|
||||
"explore.title": "o alasa",
|
||||
|
@ -138,52 +173,109 @@
|
|||
"filter_modal.select_filter.expired": "tenpo pini",
|
||||
"filter_modal.select_filter.search": "o alasa anu pali",
|
||||
"firehose.all": "ale",
|
||||
"firehose.local": "ilo ni",
|
||||
"firehose.remote": "ilo ante",
|
||||
"follow_request.authorize": "o sina kama",
|
||||
"follow_request.reject": "o weka",
|
||||
"firehose.local": "kulupu ni",
|
||||
"firehose.remote": "kulupu ante",
|
||||
"follow_request.authorize": "o ken",
|
||||
"follow_request.reject": "o ala",
|
||||
"follow_suggestions.view_all": "o lukin e ale",
|
||||
"follow_suggestions.who_to_follow": "sina o kute e ni",
|
||||
"footer.about": "sona",
|
||||
"footer.directory": "lipu jan",
|
||||
"footer.get_app": "o jo e ilo",
|
||||
"footer.privacy_policy": "lawa len",
|
||||
"footer.source_code": "o lukin e toki ilo",
|
||||
"footer.status": "lon",
|
||||
"generic.saved": "ni li awen",
|
||||
"hashtag.column_header.tag_mode.all": "en {additional}",
|
||||
"hashtag.column_header.tag_mode.any": "anu {additional}",
|
||||
"hashtag.column_header.tag_mode.none": "en {additional} ala",
|
||||
"hashtag.column_settings.tag_mode.all": "ale ni",
|
||||
"hashtag.column_settings.tag_mode.any": "wan ni",
|
||||
"hashtag.column_settings.tag_mode.none": "ala ni",
|
||||
"home.pending_critical_update.link": "o lukin e ijo ilo sin",
|
||||
"interaction_modal.on_another_server": "lon ma ante",
|
||||
"interaction_modal.on_this_server": "lon ma ni",
|
||||
"interaction_modal.title.favourite": "o suli e toki {name}",
|
||||
"interaction_modal.title.follow": "o kute e {name}",
|
||||
"keyboard_shortcuts.muted": "sina wile ala kute e jan la o lukin e ona ale",
|
||||
"keyboard_shortcuts.open_media": "o open e sitelen",
|
||||
"keyboard_shortcuts.toggle_sensitivity": "sitelen la o len anu lukin",
|
||||
"interaction_modal.title.reblog": "o wawa e toki {name}",
|
||||
"keyboard_shortcuts.blocked": "o lukin e lipu sina pi jan weka",
|
||||
"keyboard_shortcuts.boost": "o pana sin e toki",
|
||||
"keyboard_shortcuts.down": "o tawa anpa lon lipu",
|
||||
"keyboard_shortcuts.enter": "o lukin e toki",
|
||||
"keyboard_shortcuts.favourite": "o suli e toki",
|
||||
"keyboard_shortcuts.favourites": "o lukin e lipu sina pi toki suli",
|
||||
"keyboard_shortcuts.muted": "o lukin e lipu sina pi jan len",
|
||||
"keyboard_shortcuts.my_profile": "o lukin e lipu sina",
|
||||
"keyboard_shortcuts.open_media": "o lukin e sitelen",
|
||||
"keyboard_shortcuts.pinned": "o lukin pi lipu sina pi toki sewi",
|
||||
"keyboard_shortcuts.toggle_sensitivity": "o ante e ken lukin",
|
||||
"keyboard_shortcuts.toot": "o toki",
|
||||
"keyboard_shortcuts.up": "o tawa sewi lon lipu",
|
||||
"lightbox.close": "o pini",
|
||||
"link_preview.author": "{name} li pali e ni",
|
||||
"lightbox.compress": "o lili e sitelen",
|
||||
"lightbox.expand": "o suli e sitelen",
|
||||
"lightbox.next": "sinpin",
|
||||
"lightbox.previous": "monsi",
|
||||
"link_preview.author": "tan {name}",
|
||||
"lists.account.add": "o pana tawa kulupu lipu",
|
||||
"lists.account.remove": "o weka tan kulupu lipu",
|
||||
"lists.delete": "o weka e kulupu lipu",
|
||||
"lists.edit": "o ante e kulupu lipu",
|
||||
"lists.edit.submit": "o ante e nimi",
|
||||
"lists.exclusive": "o len e toki lon lipu open",
|
||||
"lists.new.create": "o sin e kulupu lipu",
|
||||
"lists.replies_policy.followed": "jan kute ale",
|
||||
"lists.replies_policy.list": "jan pi kulupu ni taso",
|
||||
"lists.replies_policy.none": "jan ala",
|
||||
"lists.subheading": "kulupu lipu sina",
|
||||
"load_pending": "{count, plural, other {ijo sin #}}",
|
||||
"loading_indicator.label": "ni li kama…",
|
||||
"media_gallery.toggle_visible": "{number, plural, other {o len e sitelen}}",
|
||||
"mute_modal.duration": "tenpo",
|
||||
"mute_modal.indefinite": "tenpo ale",
|
||||
"navigation_bar.filters": "sina wile ala kute e nimi ni",
|
||||
"navigation_bar.about": "sona",
|
||||
"navigation_bar.blocks": "jan weka",
|
||||
"navigation_bar.compose": "o pali e toki sin",
|
||||
"navigation_bar.favourites": "toki suli",
|
||||
"navigation_bar.filters": "nimi len",
|
||||
"navigation_bar.lists": "kulupu lipu",
|
||||
"navigation_bar.mutes": "sina wile ala kute e jan ni",
|
||||
"notification.follow": "jan {name} li kama kute e sina",
|
||||
"navigation_bar.pins": "toki sewi",
|
||||
"navigation_bar.preferences": "wile sina",
|
||||
"navigation_bar.search": "o alasa",
|
||||
"notification.admin.sign_up": "{name} li kama",
|
||||
"notification.favourite": "{name} li suli e toki sina",
|
||||
"notification.follow": " {name} li kute e sina",
|
||||
"notification.follow_request": "{name} li wile kute e sina",
|
||||
"notification.mention": "jan {name} li toki e sina",
|
||||
"notification.reblog": "{name} li wawa e toki sina",
|
||||
"notification.status": "{name} li toki",
|
||||
"notification.update": "{name} li ante e toki",
|
||||
"notifications.column_settings.follow": "jan kute sin",
|
||||
"notifications.filter.all": "ale",
|
||||
"onboarding.compose.template": "toki a, #Mastodon o!",
|
||||
"onboarding.start.title": "sina o kama pona a!",
|
||||
"privacy.public.short": "jan ale",
|
||||
"poll.total_people": "{count, plural, other {jan #}}",
|
||||
"privacy.public.short": "tawa ale",
|
||||
"relative_time.full.just_now": "tenpo ni",
|
||||
"relative_time.just_now": "tenpo ni",
|
||||
"relative_time.today": "tenpo suno ni",
|
||||
"report.block": "o weka e jan",
|
||||
"report.block_explanation": "sina kama lukin ala e toki ona. ona li kama ala ken lukin e toki sina li kama ala ken kute e sina. ona li ken sona e kama ni.",
|
||||
"report.category.title": "ike seme li lon {type} ni",
|
||||
"report.category.title_account": "lipu",
|
||||
"report.category.title_status": "toki",
|
||||
"report.close": "o pini",
|
||||
"report.mute": "o kute ala e ona",
|
||||
"report.mute_explanation": "sina kama ala lukin e ijo pana ona. ona li awen ken kute e sina li awen ken lukin e sina li sona ala e weka kute sina e weka lukin sina.",
|
||||
"report.next": "awen",
|
||||
"report.reasons.dislike": "ni li ike tawa mi",
|
||||
"report.reasons.legal": "ni li ike tawa lawa",
|
||||
"report.reasons.other": "ni li ike tan ante",
|
||||
"report.reasons.spam": "ni li ike tan toki mute",
|
||||
"report.thanks.title": "sina wile ala lukin e ni anu seme?",
|
||||
"report.unfollow": "o pini kute e {name}",
|
||||
"report_notification.categories.legal": "ike tawa nasin lawa",
|
||||
"search.placeholder": "o alasa",
|
||||
"search.quick_action.go_to_account": "o tawa lipu jan {x}",
|
||||
"search_popout.language_code": "nimi toki kepeken nasin ISO",
|
||||
|
@ -192,31 +284,48 @@
|
|||
"search_results.statuses": "toki",
|
||||
"search_results.title": "o alasa e {q}",
|
||||
"status.block": "o weka e @{name}",
|
||||
"status.cancel_reblog_private": "o pini e pana",
|
||||
"status.delete": "o weka",
|
||||
"status.edit": "o ante",
|
||||
"status.edited": "ni li ante lon {date}",
|
||||
"status.embed": "ni o lon insa pi lipu ante",
|
||||
"status.favourite": "o suli",
|
||||
"status.hide": "o len",
|
||||
"status.history.created": "{name} li pali e ni lon {date}",
|
||||
"status.history.edited": "{name} li ante lon {date}",
|
||||
"status.load_more": "o kama e ijo ante",
|
||||
"status.media.open": "o open",
|
||||
"status.media.show": "o lukin",
|
||||
"status.media_hidden": "sitelen li len",
|
||||
"status.mute": "o kute ala e @{name}",
|
||||
"status.mute": "o len e @{name}",
|
||||
"status.mute_conversation": "o kute ala e ijo pi toki ni",
|
||||
"status.pin": "o sewi lon lipu sina",
|
||||
"status.pinned": "toki sewi",
|
||||
"status.reblog": "o wawa",
|
||||
"status.share": "o pana tawa ante",
|
||||
"status.show_less": "o lili e ni",
|
||||
"status.show_less_all": "o lili e ale",
|
||||
"status.show_more": "o suli e ni",
|
||||
"status.show_more_all": "o suli e ale",
|
||||
"status.show_original": "ijo mama pi ijo ni li seme",
|
||||
"status.show_original": "o lukin e mama",
|
||||
"status.translate": "o ante pi nasin toki",
|
||||
"status.translated_from_with": "toki li ante tan {lang} kepeken {provider}",
|
||||
"status.uncached_media_warning": "lukin lili li weka",
|
||||
"status.unmute_conversation": "o ken kute e ijo pi toki ni",
|
||||
"status.unpin": "o sewi ala lon lipu sina",
|
||||
"subscribed_languages.save": "o awen e ante",
|
||||
"tabs_bar.home": "lipu open",
|
||||
"timeline_hint.resources.followers": "jan kute",
|
||||
"timeline_hint.resources.follows": "jan lukin",
|
||||
"timeline_hint.resources.statuses": "ijo pi tenpo suli",
|
||||
"trends.trending_now": "jan mute li toki",
|
||||
"units.short.million": "{count}AAA",
|
||||
"upload_button.label": "o pana e sitelen anu kalama",
|
||||
"upload_error.limit": "ilo li ken ala e suli pi ijo ni.",
|
||||
"upload_form.audio_description": "o toki e ijo kute tawa jan pi kute ala, tawa jan pi kute lili",
|
||||
"upload_form.description": "o toki e ijo lukin tawa jan pi lukin ala, tawa jan pi lukin lili",
|
||||
"upload_form.edit": "o ante",
|
||||
"upload_form.thumbnail": "o ante e sitelen lili",
|
||||
"upload_form.video_description": "o toki e ijo kute tawa jan pi kute ala, tawa jan pi kute lili, e ijo lukin tawa jan pi lukin ala, tawa jan pi lukin lili",
|
||||
"upload_modal.choose_image": "o wile e sitelen",
|
||||
"upload_modal.description_placeholder": "mi pu jaki tan soweli",
|
||||
|
@ -225,7 +334,12 @@
|
|||
"upload_modal.preparing_ocr": "ilo li open e alasa nimi lon sitelen…",
|
||||
"upload_progress.label": "ilo li kama jo e ijo sina...",
|
||||
"upload_progress.processing": "ilo li pali…",
|
||||
"username.taken": "jan ante li jo e nimi ni. sina o pali e nimi sin.",
|
||||
"username.taken": "jan ante li kepeken e nimi ni. sina o kepeken e nimi sin",
|
||||
"video.close": "o weka e ni",
|
||||
"video.download": "o jo e ni",
|
||||
"video.exit_fullscreen": "o weka tan sitelen suli",
|
||||
"video.expand": "o suli e ni",
|
||||
"video.hide": "o len e sitelen",
|
||||
"video.mute": "o kalama ala",
|
||||
"video.pause": "o lape e ni",
|
||||
"video.unmute": "o kalama"
|
||||
|
|
|
@ -5628,6 +5628,8 @@ a.status-card {
|
|||
inset-inline-start: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
max-width: 100vw;
|
||||
max-height: 100vh;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
|
|
@ -4,14 +4,34 @@ module ApplicationExtension
|
|||
extend ActiveSupport::Concern
|
||||
|
||||
included do
|
||||
include Redisable
|
||||
|
||||
has_many :created_users, class_name: 'User', foreign_key: 'created_by_application_id', inverse_of: :created_by_application
|
||||
|
||||
validates :name, length: { maximum: 60 }
|
||||
validates :website, url: true, length: { maximum: 2_000 }, if: :website?
|
||||
validates :redirect_uri, length: { maximum: 2_000 }
|
||||
|
||||
# The relationship used between Applications and AccessTokens is using
|
||||
# dependent: delete_all, which means the ActiveRecord callback in
|
||||
# AccessTokenExtension is not run, so instead we manually announce to
|
||||
# streaming that these tokens are being deleted.
|
||||
before_destroy :push_to_streaming_api, prepend: true
|
||||
end
|
||||
|
||||
def confirmation_redirect_uri
|
||||
redirect_uri.lines.first.strip
|
||||
end
|
||||
|
||||
def push_to_streaming_api
|
||||
# TODO: #28793 Combine into a single topic
|
||||
payload = Oj.dump(event: :kill)
|
||||
access_tokens.in_batches do |tokens|
|
||||
redis.pipelined do |pipeline|
|
||||
tokens.ids.each do |id|
|
||||
pipeline.publish("timeline:access_token:#{id}", payload)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -25,7 +25,15 @@ module User::LdapAuthenticable
|
|||
resource = joins(:account).find_by(accounts: { username: safe_username })
|
||||
|
||||
if resource.blank?
|
||||
resource = new(email: attributes[Devise.ldap_mail.to_sym].first, agreement: true, account_attributes: { username: safe_username }, admin: false, external: true, confirmed_at: Time.now.utc)
|
||||
resource = new(
|
||||
email: attributes[Devise.ldap_mail.to_sym].first,
|
||||
agreement: true,
|
||||
account_attributes: {
|
||||
username: safe_username,
|
||||
},
|
||||
external: true,
|
||||
confirmed_at: Time.now.utc
|
||||
)
|
||||
resource.save!
|
||||
end
|
||||
|
||||
|
|
|
@ -19,17 +19,18 @@ module User::Omniauthable
|
|||
end
|
||||
|
||||
class_methods do
|
||||
def find_for_oauth(auth, signed_in_resource = nil)
|
||||
def find_for_omniauth(auth, signed_in_resource = nil)
|
||||
# EOLE-SSO Patch
|
||||
auth.uid = (auth.uid[0][:uid] || auth.uid[0][:user]) if auth.uid.is_a? Hashie::Array
|
||||
identity = Identity.find_for_oauth(auth)
|
||||
identity = Identity.find_for_omniauth(auth)
|
||||
|
||||
# If a signed_in_resource is provided it always overrides the existing user
|
||||
# to prevent the identity being locked with accidentally created accounts.
|
||||
# Note that this may leave zombie accounts (with no associated identity) which
|
||||
# can be cleaned up at a later date.
|
||||
user = signed_in_resource || identity.user
|
||||
user ||= create_for_oauth(auth)
|
||||
user ||= reattach_for_auth(auth)
|
||||
user ||= create_for_auth(auth)
|
||||
|
||||
if identity.user.nil?
|
||||
identity.user = user
|
||||
|
@ -39,19 +40,35 @@ module User::Omniauthable
|
|||
user
|
||||
end
|
||||
|
||||
def create_for_oauth(auth)
|
||||
# Check if the user exists with provided email. If no email was provided,
|
||||
private
|
||||
|
||||
def reattach_for_auth(auth)
|
||||
# If allowed, check if a user exists with the provided email address,
|
||||
# and return it if they does not have an associated identity with the
|
||||
# current authentication provider.
|
||||
|
||||
# This can be used to provide a choice of alternative auth providers
|
||||
# or provide smooth gradual transition between multiple auth providers,
|
||||
# but this is discouraged because any insecure provider will put *all*
|
||||
# local users at risk, regardless of which provider they registered with.
|
||||
|
||||
return unless ENV['ALLOW_UNSAFE_AUTH_PROVIDER_REATTACH'] == 'true'
|
||||
|
||||
email, email_is_verified = email_from_auth(auth)
|
||||
return unless email_is_verified
|
||||
|
||||
user = User.find_by(email: email)
|
||||
return if user.nil? || Identity.exists?(provider: auth.provider, user_id: user.id)
|
||||
|
||||
user
|
||||
end
|
||||
|
||||
def create_for_auth(auth)
|
||||
# Create a user for the given auth params. If no email was provided,
|
||||
# we assign a temporary email and ask the user to verify it on
|
||||
# the next step via Auth::SetupController.show
|
||||
|
||||
strategy = Devise.omniauth_configs[auth.provider.to_sym].strategy
|
||||
assume_verified = strategy&.security&.assume_email_is_verified
|
||||
email_is_verified = auth.info.verified || auth.info.verified_email || auth.info.email_verified || assume_verified
|
||||
email = auth.info.verified_email || auth.info.email
|
||||
|
||||
user = User.find_by(email: email) if email_is_verified
|
||||
|
||||
return user unless user.nil?
|
||||
email, email_is_verified = email_from_auth(auth)
|
||||
|
||||
user = User.new(user_params_from_auth(email, auth))
|
||||
|
||||
|
@ -66,7 +83,14 @@ module User::Omniauthable
|
|||
user
|
||||
end
|
||||
|
||||
private
|
||||
def email_from_auth(auth)
|
||||
strategy = Devise.omniauth_configs[auth.provider.to_sym].strategy
|
||||
assume_verified = strategy&.security&.assume_email_is_verified
|
||||
email_is_verified = auth.info.verified || auth.info.verified_email || auth.info.email_verified || assume_verified
|
||||
email = auth.info.verified_email || auth.info.email
|
||||
|
||||
[email, email_is_verified]
|
||||
end
|
||||
|
||||
def user_params_from_auth(email, auth)
|
||||
{
|
||||
|
|
|
@ -32,7 +32,6 @@ module User::PamAuthenticable
|
|||
|
||||
self.email = "#{account.username}@#{find_pam_suffix}" if email.nil? && find_pam_suffix
|
||||
self.confirmed_at = Time.now.utc
|
||||
self.admin = false
|
||||
self.account = account
|
||||
self.external = true
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ class Identity < ApplicationRecord
|
|||
validates :uid, presence: true, uniqueness: { scope: :provider }
|
||||
validates :provider, presence: true
|
||||
|
||||
def self.find_for_oauth(auth)
|
||||
def self.find_for_omniauth(auth)
|
||||
find_or_create_by(uid: auth.uid, provider: auth.provider)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -51,6 +51,8 @@ class User < ApplicationRecord
|
|||
last_sign_in_ip
|
||||
skip_sign_in_token
|
||||
filtered_languages
|
||||
admin
|
||||
moderator
|
||||
)
|
||||
|
||||
include LanguagesHelper
|
||||
|
@ -347,6 +349,16 @@ class User < ApplicationRecord
|
|||
Doorkeeper::AccessToken.by_resource_owner(self).in_batches do |batch|
|
||||
batch.update_all(revoked_at: Time.now.utc)
|
||||
Web::PushSubscription.where(access_token_id: batch).delete_all
|
||||
|
||||
# Revoke each access token for the Streaming API, since `update_all``
|
||||
# doesn't trigger ActiveRecord Callbacks:
|
||||
# TODO: #28793 Combine into a single topic
|
||||
payload = Oj.dump(event: :kill)
|
||||
redis.pipelined do |pipeline|
|
||||
batch.ids.each do |id|
|
||||
pipeline.publish("timeline:access_token:#{id}", payload)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ user = ENV.fetch('ES_USER', nil).presence
|
|||
password = ENV.fetch('ES_PASS', nil).presence
|
||||
fallback_prefix = ENV.fetch('REDIS_NAMESPACE', nil).presence
|
||||
prefix = ENV.fetch('ES_PREFIX') { fallback_prefix }
|
||||
ca_file = ENV.fetch('ES_CA_CERT', nil).presence
|
||||
ca_file = ENV.fetch('ES_CA_FILE', nil).presence
|
||||
|
||||
transport_options = { ssl: { ca_file: ca_file } } if ca_file.present?
|
||||
|
||||
|
|
|
@ -21,9 +21,14 @@ Doorkeeper.configure do
|
|||
user unless user&.otp_required_for_login?
|
||||
end
|
||||
|
||||
# If you want to restrict access to the web interface for adding oauth authorized applications, you need to declare the block below.
|
||||
# Doorkeeper provides some administrative interfaces for managing OAuth
|
||||
# Applications, allowing creation, edit, and deletion of applications from the
|
||||
# server. At present, these administrative routes are not integrated into
|
||||
# Mastodon, and as such, we've disabled them by always return a 403 forbidden
|
||||
# response for them. This does not affect the ability for users to manage
|
||||
# their own OAuth Applications.
|
||||
admin_authenticator do
|
||||
current_user&.admin? || redirect_to(new_user_session_url)
|
||||
head 403
|
||||
end
|
||||
|
||||
# Authorization Code expiration time (default 10 minutes).
|
||||
|
|
|
@ -4,3 +4,11 @@ tok:
|
|||
attributes:
|
||||
poll:
|
||||
expires_at: pini tenpo
|
||||
user/account:
|
||||
username: nimi jan
|
||||
errors:
|
||||
models:
|
||||
account:
|
||||
attributes:
|
||||
username:
|
||||
reserved: jan ante li jo e nimi ni
|
||||
|
|
|
@ -1548,7 +1548,7 @@ ca:
|
|||
unrecognized_emoji: no és un emoji reconegut
|
||||
redirects:
|
||||
prompt: Si confieu en aquest enllaç, feu-hi clic per a continuar.
|
||||
title: Esteu sortint de %{instance}.
|
||||
title: Deixeu %{instance}.
|
||||
relationships:
|
||||
activity: Activitat del compte
|
||||
confirm_follow_selected_followers: Segur que vols seguir els seguidors seleccionats?
|
||||
|
|
|
@ -12,6 +12,7 @@ en:
|
|||
last_attempt: You have one more attempt before your account is locked.
|
||||
locked: Your account is locked.
|
||||
not_found_in_database: Invalid %{authentication_keys} or password.
|
||||
omniauth_user_creation_failure: Error creating an account for this identity.
|
||||
pending: Your account is still under review.
|
||||
timeout: Your session expired. Please login again to continue.
|
||||
unauthenticated: You need to login or sign up before continuing.
|
||||
|
|
|
@ -39,6 +39,8 @@ ia:
|
|||
webauthn_enabled:
|
||||
title: Claves de securitate activate
|
||||
registrations:
|
||||
destroyed: A revider! Tu conto esseva cancellate con successo. Nos spera vider te novemente tosto.
|
||||
signed_up_but_pending: Un message con un ligamine de confirmation esseva inviate a tu conto de email. Post que tu clicca le ligamine, nos revidera tu application. Tu essera notificate si illo es approbate.
|
||||
updated: Tu conto ha essite actualisate con successo.
|
||||
unlocks:
|
||||
unlocked: Tu conto ha essite disblocate con successo. Initia session a continuar.
|
||||
|
|
|
@ -47,14 +47,19 @@ ro:
|
|||
subject: Instrucțiuni pentru resetarea parolei
|
||||
title: Resetare parolă
|
||||
two_factor_disabled:
|
||||
explanation: Conectarea este acum posibilă folosind doar adresa de e-mail și parola.
|
||||
subject: Autentificare cu doi factori dezactivată
|
||||
subtitle: Autentificarea cu doi factori pentru contul dvs. a fost dezactivată.
|
||||
title: 2FA dezactivat
|
||||
two_factor_enabled:
|
||||
explanation: Pentru autentificare va fi necesar un token generat de aplicația TOTP asociată.
|
||||
subject: Autentificare în doi pași activată
|
||||
subtitle: Autentificarea cu doi factori a fost activată pentru contul dvs.
|
||||
title: 2FA activat
|
||||
two_factor_recovery_codes_changed:
|
||||
explanation: Codurile anterioare de recuperare au fost invalidate și unele noi generate.
|
||||
subject: Recuperare în doi factori
|
||||
subtitle: Codurile de recuperare anterioare au fost invalidate și s-au generat altele noi.
|
||||
title: Coduri de recuperare 2FA modificate
|
||||
unlock_instructions:
|
||||
subject: Instrucțiuni de deblocare
|
||||
|
@ -68,9 +73,13 @@ ro:
|
|||
subject: 'Mastodon: Cheie de securitate ștearsă'
|
||||
title: Una dintre cheile tale de securitate a fost ștearsă
|
||||
webauthn_disabled:
|
||||
explanation: Autentificarea cu chei de securitate a fost dezactivată pentru contul dvs.
|
||||
extra: Conectarea este acum posibilă folosind doar token-ul generat de aplicația TOTP asociată.
|
||||
subject: 'Mastodon: Autentificarea cu chei de securitate dezactivată'
|
||||
title: Chei de securitate dezactivate
|
||||
webauthn_enabled:
|
||||
explanation: Autentificarea cu cheie de securitate a fost activată pentru contul dvs.
|
||||
extra: Cheia ta de securitate poate fi acum folosită pentru conectare.
|
||||
subject: 'Mastodon: Autentificarea cheii de securitate activată'
|
||||
title: Chei de securitate activate
|
||||
omniauth_callbacks:
|
||||
|
|
|
@ -34,6 +34,7 @@ ia:
|
|||
confirmations:
|
||||
revoke: Es tu secur?
|
||||
index:
|
||||
last_used_at: Ultime uso in %{date}
|
||||
never_used: Nunquam usate
|
||||
scopes: Permissiones
|
||||
title: Tu applicationes autorisate
|
||||
|
|
|
@ -1 +1,51 @@
|
|||
---
|
||||
tok:
|
||||
doorkeeper:
|
||||
applications:
|
||||
buttons:
|
||||
cancel: o pini
|
||||
destroy: o weka
|
||||
edit: o ante
|
||||
submit: o awen
|
||||
confirmations:
|
||||
destroy: ni li pona ala pona?
|
||||
edit:
|
||||
title: o ante e ilo nanpa
|
||||
form:
|
||||
error: 'pakala a! o lukin e ni: lipu sina li jo ala jo e pakala.'
|
||||
index:
|
||||
delete: o weka
|
||||
empty: sina li jo e ilo nanpa ala.
|
||||
name: nimi
|
||||
new: o pali e ilo nanpa sin
|
||||
title: ilo nanpa sina
|
||||
new:
|
||||
title: o pali e ilo nanpa sin
|
||||
show:
|
||||
title: ilo nanpa pi nimi %{name}
|
||||
authorizations:
|
||||
error:
|
||||
title: pakala li lon.
|
||||
authorized_applications:
|
||||
confirmations:
|
||||
revoke: ni li pona ala pona?
|
||||
index:
|
||||
scopes: ken
|
||||
errors:
|
||||
messages:
|
||||
invalid_request:
|
||||
missing_param: o pana e sona "%{value}".
|
||||
flash:
|
||||
applications:
|
||||
create:
|
||||
notice: sina pali e ilo nanpa.
|
||||
destroy:
|
||||
notice: sina weka e ilo nanpa.
|
||||
update:
|
||||
notice: sina ante e ilo nanpa.
|
||||
authorized_applications:
|
||||
destroy:
|
||||
notice: sina weka e ilo nanpa tawa sina.
|
||||
grouped_scopes:
|
||||
access:
|
||||
read: lukin taso
|
||||
|
|
|
@ -236,6 +236,8 @@ ia:
|
|||
migrations:
|
||||
errors:
|
||||
not_found: non poterea esser trovate
|
||||
preferences:
|
||||
public_timelines: Chronologias public
|
||||
statuses_cleanup:
|
||||
min_age:
|
||||
'1209600': 2 septimanas
|
||||
|
@ -254,6 +256,7 @@ ia:
|
|||
disable: Disactivar 2FA
|
||||
user_mailer:
|
||||
welcome:
|
||||
final_step: 'Comencia a publicar! Mesmo sin sequitores, tu messages public poterea esser reguardate per alteres, per exemplo in le chronologia local o in hashtags. Tu poterea voler introducer te con le hashtag #introductiones.'
|
||||
subject: Benvenite in Mastodon
|
||||
webauthn_credentials:
|
||||
delete: Deler
|
||||
|
|
|
@ -261,7 +261,7 @@ bg:
|
|||
status_page_url: URL адрес на страница със състоянието
|
||||
theme: Стандартна тема
|
||||
thumbnail: Образче на сървъра
|
||||
timeline_preview: Позволяване на неупълномощен достъп до публични часови оси
|
||||
timeline_preview: Позволяване на неудостоверен достъп до публични инфопотоци
|
||||
trendable_by_default: Без преглед на налагащото се
|
||||
trends: Включване на налагащи се
|
||||
trends_as_landing_page: Употреба на налагащото се като целева страница
|
||||
|
|
|
@ -26,6 +26,7 @@ ia:
|
|||
username: Nomine de usator
|
||||
username_or_email: Nomine de usator o e-mail
|
||||
form_admin_settings:
|
||||
bootstrap_timeline_accounts: Recommenda sempre iste contos a nove usatores
|
||||
custom_css: CSS personalisate
|
||||
profile_directory: Activar directorio de profilos
|
||||
site_contact_email: Adresse de e-mail de contacto
|
||||
|
|
|
@ -5,8 +5,8 @@ tok:
|
|||
account:
|
||||
display_name: nimi sina ale anu nimi sina musi.
|
||||
defaults:
|
||||
setting_display_media_hide_all: tenpo ale la, o weka e sitelen
|
||||
setting_display_media_show_all: tenpo ale la, o awen e sitelen
|
||||
setting_display_media_hide_all: sitelen ale li len
|
||||
setting_display_media_show_all: sitelen ale li len ala
|
||||
labels:
|
||||
defaults:
|
||||
expires_in: ona o moli lon
|
||||
|
|
|
@ -200,12 +200,12 @@ zh-TW:
|
|||
password: 密碼
|
||||
phrase: 關鍵字或片語
|
||||
setting_advanced_layout: 啟用進階網頁介面
|
||||
setting_aggregate_reblogs: 時間軸中的群組轉嘟
|
||||
setting_aggregate_reblogs: 於時間軸中不重複顯示轉嘟
|
||||
setting_always_send_emails: 總是發送電子郵件通知
|
||||
setting_auto_play_gif: 自動播放 GIF 動畫
|
||||
setting_boost_modal: 轉嘟前先詢問我
|
||||
setting_default_language: 嘟文語言
|
||||
setting_default_privacy: 嘟文可見範圍
|
||||
setting_default_privacy: 嘟文隱私設定
|
||||
setting_default_sensitive: 總是將媒體標記為敏感內容
|
||||
setting_delete_modal: 刪除嘟文前先詢問我
|
||||
setting_disable_swiping: 停用滑動手勢
|
||||
|
|
|
@ -88,7 +88,7 @@ sk:
|
|||
remote: Federované
|
||||
title: Umiestnenie
|
||||
login_status: Stav prihlásenia
|
||||
media_attachments: Prílohy
|
||||
media_attachments: Mediálne prílohy
|
||||
memorialize: Zmeň na "Navždy budeme spomínať"
|
||||
memorialized: Spomienka na
|
||||
memorialized_msg: Úspešne zmenené %{username} na spomienkové konto
|
||||
|
@ -251,14 +251,16 @@ sk:
|
|||
enable_user_html: "%{name} povolil/a prihlásenie pre používateľa %{target}"
|
||||
memorialize_account_html: "%{name} zmenil/a účet %{target} na pamätnú stránku"
|
||||
reject_appeal_html: "%{name} zamietol/la námietku moderovacieho rozhodnutia od %{target}"
|
||||
remove_avatar_user_html: "%{name} vymazal/a %{target}/ov/in avatar"
|
||||
reopen_report_html: "%{name} znovu otvoril/a nahlásenie %{target}"
|
||||
resend_user_html: "%{name} znovu odoslal/a potvrdzovací email pre %{target}"
|
||||
reset_password_user_html: "%{name} resetoval/a heslo používateľa %{target}"
|
||||
resolve_report_html: "%{name} vyriešil/a nahlásenie %{target}"
|
||||
sensitive_account_html: "%{name} označil médium od %{target} za chúlostivé"
|
||||
sensitive_account_html: "%{name} označil/a médium od %{target} za chúlostivé"
|
||||
silence_account_html: "%{name} obmedzil/a účet %{target}"
|
||||
suspend_account_html: "%{name} zablokoval/a účet používateľa %{target}"
|
||||
unassigned_report_html: "%{name} odobral/a report od %{target}"
|
||||
unsensitive_account_html: "%{name} odznačil/a médium od %{target} ako chúlostivé"
|
||||
unsuspend_account_html: "%{name} spojazdnil/a účet %{target}"
|
||||
update_announcement_html: "%{name} aktualizoval/a oboznámenie %{target}"
|
||||
update_custom_emoji_html: "%{name} aktualizoval/a emotikonu %{target}"
|
||||
|
|
|
@ -1 +1,5 @@
|
|||
---
|
||||
tok:
|
||||
admin:
|
||||
accounts:
|
||||
are_you_sure: ni li pona ala pona?
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'sidekiq_unique_jobs/web'
|
||||
require 'sidekiq_unique_jobs/web' if ENV['ENABLE_SIDEKIQ_UNIQUE_JOBS_UI'] == true
|
||||
require 'sidekiq-scheduler/web'
|
||||
|
||||
class RedirectWithVary < ActionDispatch::Routing::PathRedirect
|
||||
|
|
|
@ -31,7 +31,7 @@ module Mastodon
|
|||
end
|
||||
|
||||
def default_prerelease
|
||||
'alpha.1'
|
||||
'alpha.2'
|
||||
end
|
||||
|
||||
def prerelease
|
||||
|
|
11
lib/tasks/sidekiq_unique_jobs.rake
Normal file
11
lib/tasks/sidekiq_unique_jobs.rake
Normal file
|
@ -0,0 +1,11 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
namespace :sidekiq_unique_jobs do
|
||||
task delete_all_locks: :environment do
|
||||
digests = SidekiqUniqueJobs::Digests.new
|
||||
digests.delete_by_pattern('*', count: digests.count)
|
||||
|
||||
expiring_digests = SidekiqUniqueJobs::ExpiringDigests.new
|
||||
expiring_digests.delete_by_pattern('*', count: expiring_digests.count)
|
||||
end
|
||||
end
|
|
@ -3,19 +3,19 @@
|
|||
require 'rails_helper'
|
||||
|
||||
RSpec.describe Identity do
|
||||
describe '.find_for_oauth' do
|
||||
describe '.find_for_omniauth' do
|
||||
let(:auth) { Fabricate(:identity, user: Fabricate(:user)) }
|
||||
|
||||
it 'calls .find_or_create_by' do
|
||||
allow(described_class).to receive(:find_or_create_by)
|
||||
|
||||
described_class.find_for_oauth(auth)
|
||||
described_class.find_for_omniauth(auth)
|
||||
|
||||
expect(described_class).to have_received(:find_or_create_by).with(uid: auth.uid, provider: auth.provider)
|
||||
end
|
||||
|
||||
it 'returns an instance of Identity' do
|
||||
expect(described_class.find_for_oauth(auth)).to be_instance_of described_class
|
||||
expect(described_class.find_for_omniauth(auth)).to be_instance_of described_class
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -452,7 +452,10 @@ RSpec.describe User do
|
|||
let!(:access_token) { Fabricate(:access_token, resource_owner_id: user.id) }
|
||||
let!(:web_push_subscription) { Fabricate(:web_push_subscription, access_token: access_token) }
|
||||
|
||||
let(:redis_pipeline_stub) { instance_double(Redis::Namespace, publish: nil) }
|
||||
|
||||
before do
|
||||
allow(redis).to receive(:pipelined).and_yield(redis_pipeline_stub)
|
||||
user.reset_password!
|
||||
end
|
||||
|
||||
|
@ -469,6 +472,10 @@ RSpec.describe User do
|
|||
expect(Doorkeeper::AccessToken.active_for(user).count).to eq 0
|
||||
end
|
||||
|
||||
it 'revokes streaming access for all access tokens' do
|
||||
expect(redis_pipeline_stub).to have_received(:publish).with("timeline:access_token:#{access_token.id}", Oj.dump(event: :kill)).once
|
||||
end
|
||||
|
||||
it 'removes push subscriptions' do
|
||||
expect(Web::PushSubscription.where(user: user).or(Web::PushSubscription.where(access_token: access_token)).count).to eq 0
|
||||
expect { web_push_subscription.reload }.to raise_error(ActiveRecord::RecordNotFound)
|
||||
|
|
83
spec/requests/disabled_oauth_endpoints_spec.rb
Normal file
83
spec/requests/disabled_oauth_endpoints_spec.rb
Normal file
|
@ -0,0 +1,83 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
describe 'Disabled OAuth routes' do
|
||||
# These routes are disabled via the doorkeeper configuration for
|
||||
# `admin_authenticator`, as these routes should only be accessible by server
|
||||
# administrators. For now, these routes are not properly designed and
|
||||
# integrated into Mastodon, so we're disabling them completely
|
||||
describe 'GET /oauth/applications' do
|
||||
it 'returns 403 forbidden' do
|
||||
get oauth_applications_path
|
||||
|
||||
expect(response).to have_http_status(403)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'POST /oauth/applications' do
|
||||
it 'returns 403 forbidden' do
|
||||
post oauth_applications_path
|
||||
|
||||
expect(response).to have_http_status(403)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'GET /oauth/applications/new' do
|
||||
it 'returns 403 forbidden' do
|
||||
get new_oauth_application_path
|
||||
|
||||
expect(response).to have_http_status(403)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'GET /oauth/applications/:id' do
|
||||
let(:application) { Fabricate(:application, scopes: 'read') }
|
||||
|
||||
it 'returns 403 forbidden' do
|
||||
get oauth_application_path(application)
|
||||
|
||||
expect(response).to have_http_status(403)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'PATCH /oauth/applications/:id' do
|
||||
let(:application) { Fabricate(:application, scopes: 'read') }
|
||||
|
||||
it 'returns 403 forbidden' do
|
||||
patch oauth_application_path(application)
|
||||
|
||||
expect(response).to have_http_status(403)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'PUT /oauth/applications/:id' do
|
||||
let(:application) { Fabricate(:application, scopes: 'read') }
|
||||
|
||||
it 'returns 403 forbidden' do
|
||||
put oauth_application_path(application)
|
||||
|
||||
expect(response).to have_http_status(403)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'DELETE /oauth/applications/:id' do
|
||||
let(:application) { Fabricate(:application, scopes: 'read') }
|
||||
|
||||
it 'returns 403 forbidden' do
|
||||
delete oauth_application_path(application)
|
||||
|
||||
expect(response).to have_http_status(403)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'GET /oauth/applications/:id/edit' do
|
||||
let(:application) { Fabricate(:application, scopes: 'read') }
|
||||
|
||||
it 'returns 403 forbidden' do
|
||||
get edit_oauth_application_path(application)
|
||||
|
||||
expect(response).to have_http_status(403)
|
||||
end
|
||||
end
|
||||
end
|
|
@ -39,16 +39,35 @@ describe 'OmniAuth callbacks' do
|
|||
Fabricate(:user, email: 'user@host.example')
|
||||
end
|
||||
|
||||
it 'matches the existing user, creates an identity, and redirects to root path' do
|
||||
expect { subject }
|
||||
.to not_change(User, :count)
|
||||
.and change(Identity, :count)
|
||||
.by(1)
|
||||
.and change(LoginActivity, :count)
|
||||
.by(1)
|
||||
context 'when ALLOW_UNSAFE_AUTH_PROVIDER_REATTACH is set to true' do
|
||||
around do |example|
|
||||
ClimateControl.modify ALLOW_UNSAFE_AUTH_PROVIDER_REATTACH: 'true' do
|
||||
example.run
|
||||
end
|
||||
end
|
||||
|
||||
expect(Identity.find_by(user: User.last).uid).to eq('123')
|
||||
expect(response).to redirect_to(root_path)
|
||||
it 'matches the existing user, creates an identity, and redirects to root path' do
|
||||
expect { subject }
|
||||
.to not_change(User, :count)
|
||||
.and change(Identity, :count)
|
||||
.by(1)
|
||||
.and change(LoginActivity, :count)
|
||||
.by(1)
|
||||
|
||||
expect(Identity.find_by(user: User.last).uid).to eq('123')
|
||||
expect(response).to redirect_to(root_path)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when ALLOW_UNSAFE_AUTH_PROVIDER_REATTACH is not set to true' do
|
||||
it 'does not match the existing user or create an identity, and redirects to login page' do
|
||||
expect { subject }
|
||||
.to not_change(User, :count)
|
||||
.and not_change(Identity, :count)
|
||||
.and not_change(LoginActivity, :count)
|
||||
|
||||
expect(response).to redirect_to(new_user_session_url)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -96,7 +115,7 @@ describe 'OmniAuth callbacks' do
|
|||
|
||||
context 'when a user cannot be built' do
|
||||
before do
|
||||
allow(User).to receive(:find_for_oauth).and_return(User.new)
|
||||
allow(User).to receive(:find_for_omniauth).and_return(User.new)
|
||||
end
|
||||
|
||||
it 'redirects to the new user signup page' do
|
||||
|
|
128
yarn.lock
128
yarn.lock
|
@ -1697,14 +1697,14 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@es-joy/jsdoccomment@npm:~0.41.0":
|
||||
version: 0.41.0
|
||||
resolution: "@es-joy/jsdoccomment@npm:0.41.0"
|
||||
"@es-joy/jsdoccomment@npm:~0.42.0":
|
||||
version: 0.42.0
|
||||
resolution: "@es-joy/jsdoccomment@npm:0.42.0"
|
||||
dependencies:
|
||||
comment-parser: "npm:1.4.1"
|
||||
esquery: "npm:^1.5.0"
|
||||
jsdoc-type-pratt-parser: "npm:~4.0.0"
|
||||
checksum: 1fa27531eba32e4699664da53a0865aeeda1f7e83ac156fe53b7a6b09d2f3816baa94a34845ff019c10289b09572bda5519ec917e3e241088975477fa880f72d
|
||||
checksum: a8122762d2df3c6501a9c459e2822315a23c0078c4aeb0b40fb3c84b99e21a78e85e67f962d6b5dde5eb751792a1c67c6a170b619573db7151098a19950abe35
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -3675,14 +3675,14 @@ __metadata:
|
|||
linkType: hard
|
||||
|
||||
"@typescript-eslint/eslint-plugin@npm:^6.0.0":
|
||||
version: 6.20.0
|
||||
resolution: "@typescript-eslint/eslint-plugin@npm:6.20.0"
|
||||
version: 6.21.0
|
||||
resolution: "@typescript-eslint/eslint-plugin@npm:6.21.0"
|
||||
dependencies:
|
||||
"@eslint-community/regexpp": "npm:^4.5.1"
|
||||
"@typescript-eslint/scope-manager": "npm:6.20.0"
|
||||
"@typescript-eslint/type-utils": "npm:6.20.0"
|
||||
"@typescript-eslint/utils": "npm:6.20.0"
|
||||
"@typescript-eslint/visitor-keys": "npm:6.20.0"
|
||||
"@typescript-eslint/scope-manager": "npm:6.21.0"
|
||||
"@typescript-eslint/type-utils": "npm:6.21.0"
|
||||
"@typescript-eslint/utils": "npm:6.21.0"
|
||||
"@typescript-eslint/visitor-keys": "npm:6.21.0"
|
||||
debug: "npm:^4.3.4"
|
||||
graphemer: "npm:^1.4.0"
|
||||
ignore: "npm:^5.2.4"
|
||||
|
@ -3695,44 +3695,44 @@ __metadata:
|
|||
peerDependenciesMeta:
|
||||
typescript:
|
||||
optional: true
|
||||
checksum: 5020faac39be476de056342f58f2bf68bb788f230e2fa4a2e27ceab8a5187dc450beba7333b0aa741a43aeaff45a117558132953f9390b5eca4c2cc004fde716
|
||||
checksum: f911a79ee64d642f814a3b6cdb0d324b5f45d9ef955c5033e78903f626b7239b4aa773e464a38c3e667519066169d983538f2bf8e5d00228af587c9d438fb344
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@typescript-eslint/parser@npm:^6.17.0":
|
||||
version: 6.20.0
|
||||
resolution: "@typescript-eslint/parser@npm:6.20.0"
|
||||
version: 6.21.0
|
||||
resolution: "@typescript-eslint/parser@npm:6.21.0"
|
||||
dependencies:
|
||||
"@typescript-eslint/scope-manager": "npm:6.20.0"
|
||||
"@typescript-eslint/types": "npm:6.20.0"
|
||||
"@typescript-eslint/typescript-estree": "npm:6.20.0"
|
||||
"@typescript-eslint/visitor-keys": "npm:6.20.0"
|
||||
"@typescript-eslint/scope-manager": "npm:6.21.0"
|
||||
"@typescript-eslint/types": "npm:6.21.0"
|
||||
"@typescript-eslint/typescript-estree": "npm:6.21.0"
|
||||
"@typescript-eslint/visitor-keys": "npm:6.21.0"
|
||||
debug: "npm:^4.3.4"
|
||||
peerDependencies:
|
||||
eslint: ^7.0.0 || ^8.0.0
|
||||
peerDependenciesMeta:
|
||||
typescript:
|
||||
optional: true
|
||||
checksum: d84ad5e2282b1096c80dedb903c83ecc31eaf7be1aafcb14c18d9ec2d4a319f2fd1e5a9038b944d9f42c36c1c57add5e4292d4026ca7d3d5441d41286700d402
|
||||
checksum: a8f99820679decd0d115c0af61903fb1de3b1b5bec412dc72b67670bf636de77ab07f2a68ee65d6da7976039bbf636907f9d5ca546db3f0b98a31ffbc225bc7d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@typescript-eslint/scope-manager@npm:6.20.0":
|
||||
version: 6.20.0
|
||||
resolution: "@typescript-eslint/scope-manager@npm:6.20.0"
|
||||
"@typescript-eslint/scope-manager@npm:6.21.0":
|
||||
version: 6.21.0
|
||||
resolution: "@typescript-eslint/scope-manager@npm:6.21.0"
|
||||
dependencies:
|
||||
"@typescript-eslint/types": "npm:6.20.0"
|
||||
"@typescript-eslint/visitor-keys": "npm:6.20.0"
|
||||
checksum: f6768ed2dcd2d1771d55ed567ff392a6569ffd683a26500067509dd41769f8838c43686460fe7337144f324fd063df33f5d5646d44e5df4998ceffb3ad1fb790
|
||||
"@typescript-eslint/types": "npm:6.21.0"
|
||||
"@typescript-eslint/visitor-keys": "npm:6.21.0"
|
||||
checksum: eaf868938d811cbbea33e97e44ba7050d2b6892202cea6a9622c486b85ab1cf801979edf78036179a8ba4ac26f1dfdf7fcc83a68c1ff66be0b3a8e9a9989b526
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@typescript-eslint/type-utils@npm:6.20.0":
|
||||
version: 6.20.0
|
||||
resolution: "@typescript-eslint/type-utils@npm:6.20.0"
|
||||
"@typescript-eslint/type-utils@npm:6.21.0":
|
||||
version: 6.21.0
|
||||
resolution: "@typescript-eslint/type-utils@npm:6.21.0"
|
||||
dependencies:
|
||||
"@typescript-eslint/typescript-estree": "npm:6.20.0"
|
||||
"@typescript-eslint/utils": "npm:6.20.0"
|
||||
"@typescript-eslint/typescript-estree": "npm:6.21.0"
|
||||
"@typescript-eslint/utils": "npm:6.21.0"
|
||||
debug: "npm:^4.3.4"
|
||||
ts-api-utils: "npm:^1.0.1"
|
||||
peerDependencies:
|
||||
|
@ -3740,23 +3740,23 @@ __metadata:
|
|||
peerDependenciesMeta:
|
||||
typescript:
|
||||
optional: true
|
||||
checksum: 8f622fbb14268f1d00b2948f995b570f0ef82be02c12be41d90385290a56ea0dbd34d855d6a5aff100b57f3bdd300ff0c300f16c78f12d6064f7ae6e34fd71bf
|
||||
checksum: 7409c97d1c4a4386b488962739c4f1b5b04dc60cf51f8cd88e6b12541f84d84c6b8b67e491a147a2c95f9ec486539bf4519fb9d418411aef6537b9c156468117
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@typescript-eslint/types@npm:6.20.0":
|
||||
version: 6.20.0
|
||||
resolution: "@typescript-eslint/types@npm:6.20.0"
|
||||
checksum: 37589003b0e06f83c1945e3748e91af85918cfd997766894642a08e6f355f611cfe11df4e7632dda96e3a9b3441406283fe834ab0906cf81ea97fd43ca2aebe3
|
||||
"@typescript-eslint/types@npm:6.21.0":
|
||||
version: 6.21.0
|
||||
resolution: "@typescript-eslint/types@npm:6.21.0"
|
||||
checksum: 020631d3223bbcff8a0da3efbdf058220a8f48a3de221563996ad1dcc30d6c08dadc3f7608cc08830d21c0d565efd2db19b557b9528921c78aabb605eef2d74d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@typescript-eslint/typescript-estree@npm:6.20.0":
|
||||
version: 6.20.0
|
||||
resolution: "@typescript-eslint/typescript-estree@npm:6.20.0"
|
||||
"@typescript-eslint/typescript-estree@npm:6.21.0":
|
||||
version: 6.21.0
|
||||
resolution: "@typescript-eslint/typescript-estree@npm:6.21.0"
|
||||
dependencies:
|
||||
"@typescript-eslint/types": "npm:6.20.0"
|
||||
"@typescript-eslint/visitor-keys": "npm:6.20.0"
|
||||
"@typescript-eslint/types": "npm:6.21.0"
|
||||
"@typescript-eslint/visitor-keys": "npm:6.21.0"
|
||||
debug: "npm:^4.3.4"
|
||||
globby: "npm:^11.1.0"
|
||||
is-glob: "npm:^4.0.3"
|
||||
|
@ -3766,34 +3766,34 @@ __metadata:
|
|||
peerDependenciesMeta:
|
||||
typescript:
|
||||
optional: true
|
||||
checksum: 551f13445a303882d9fc0fbe14ef8507eb8414253fd87a5f13d2e324b5280b626421a238b8ec038e628bc80128dc06c057757f668738e82e64d5b39a9083c27d
|
||||
checksum: af1438c60f080045ebb330155a8c9bb90db345d5069cdd5d01b67de502abb7449d6c75500519df829f913a6b3f490ade3e8215279b6bdc63d0fb0ae61034df5f
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@typescript-eslint/utils@npm:6.20.0, @typescript-eslint/utils@npm:^6.18.1":
|
||||
version: 6.20.0
|
||||
resolution: "@typescript-eslint/utils@npm:6.20.0"
|
||||
"@typescript-eslint/utils@npm:6.21.0, @typescript-eslint/utils@npm:^6.18.1":
|
||||
version: 6.21.0
|
||||
resolution: "@typescript-eslint/utils@npm:6.21.0"
|
||||
dependencies:
|
||||
"@eslint-community/eslint-utils": "npm:^4.4.0"
|
||||
"@types/json-schema": "npm:^7.0.12"
|
||||
"@types/semver": "npm:^7.5.0"
|
||||
"@typescript-eslint/scope-manager": "npm:6.20.0"
|
||||
"@typescript-eslint/types": "npm:6.20.0"
|
||||
"@typescript-eslint/typescript-estree": "npm:6.20.0"
|
||||
"@typescript-eslint/scope-manager": "npm:6.21.0"
|
||||
"@typescript-eslint/types": "npm:6.21.0"
|
||||
"@typescript-eslint/typescript-estree": "npm:6.21.0"
|
||||
semver: "npm:^7.5.4"
|
||||
peerDependencies:
|
||||
eslint: ^7.0.0 || ^8.0.0
|
||||
checksum: 0a8ede3d80a365b52ae96d88e4a9f6e6abf3569c6b60ff9f42ff900cd843ae7c5493cd95f8f2029d90bb0acbf31030980206af98e581d760d6d41e0f80e9fb86
|
||||
checksum: ab2df3833b2582d4e5467a484d08942b4f2f7208f8e09d67de510008eb8001a9b7460f2f9ba11c12086fd3cdcac0c626761c7995c2c6b5657d5fa6b82030a32d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@typescript-eslint/visitor-keys@npm:6.20.0":
|
||||
version: 6.20.0
|
||||
resolution: "@typescript-eslint/visitor-keys@npm:6.20.0"
|
||||
"@typescript-eslint/visitor-keys@npm:6.21.0":
|
||||
version: 6.21.0
|
||||
resolution: "@typescript-eslint/visitor-keys@npm:6.21.0"
|
||||
dependencies:
|
||||
"@typescript-eslint/types": "npm:6.20.0"
|
||||
"@typescript-eslint/types": "npm:6.21.0"
|
||||
eslint-visitor-keys: "npm:^3.4.1"
|
||||
checksum: 852d938f2e5d57200cf62733b42e73a369f797b097d17e8fd3fffd0f7315c3b9e1863eed60bb8d57d6535a3b7f1980f645f96ec6d513950f182bfa8107b33fab
|
||||
checksum: 7395f69739cfa1cb83c1fb2fad30afa2a814756367302fb4facd5893eff66abc807e8d8f63eba94ed3b0fe0c1c996ac9a1680bcbf0f83717acedc3f2bb724fbf
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -6811,9 +6811,9 @@ __metadata:
|
|||
linkType: hard
|
||||
|
||||
"dotenv@npm:^16.0.3":
|
||||
version: 16.4.1
|
||||
resolution: "dotenv@npm:16.4.1"
|
||||
checksum: ef3d95f48f38146df0881a4b58447ae437d2da3f6d645074b84de4e64ef64ba75fc357c5ed66b3c2b813b5369fdeb6a4777d6ade2d50e54eed6aa06dddc98bc4
|
||||
version: 16.4.3
|
||||
resolution: "dotenv@npm:16.4.3"
|
||||
checksum: c6a572b2dab5d71accb7064c90b38dfd4068c2487be859a0f053460fcaa685a7718e78db51d643b32e0736b318988c31f8c45cb4ab99cd620278f537177cb0ab
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -7314,21 +7314,21 @@ __metadata:
|
|||
linkType: hard
|
||||
|
||||
"eslint-plugin-jsdoc@npm:^48.0.0":
|
||||
version: 48.0.4
|
||||
resolution: "eslint-plugin-jsdoc@npm:48.0.4"
|
||||
version: 48.0.6
|
||||
resolution: "eslint-plugin-jsdoc@npm:48.0.6"
|
||||
dependencies:
|
||||
"@es-joy/jsdoccomment": "npm:~0.41.0"
|
||||
"@es-joy/jsdoccomment": "npm:~0.42.0"
|
||||
are-docs-informative: "npm:^0.0.2"
|
||||
comment-parser: "npm:1.4.1"
|
||||
debug: "npm:^4.3.4"
|
||||
escape-string-regexp: "npm:^4.0.0"
|
||||
esquery: "npm:^1.5.0"
|
||||
is-builtin-module: "npm:^3.2.1"
|
||||
semver: "npm:^7.5.4"
|
||||
semver: "npm:^7.6.0"
|
||||
spdx-expression-parse: "npm:^4.0.0"
|
||||
peerDependencies:
|
||||
eslint: ^7.0.0 || ^8.0.0 || ^9.0.0
|
||||
checksum: c73063d26ca70d37ea00eea9750d1f889e5bfda64ca46dbfc6bf4842b892551c320368220cb46acc9d3d96a89fd5391486650284b82dc722f700e3b5df5c78db
|
||||
checksum: 7762793fb2a738d248144346e85b8c7ec2f975be1a24d45984a5d24da03723b76c66ead1b8064d60b18be09a9a9835320036a39fef917a1b6c83b916729d70dd
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -14622,14 +14622,14 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4":
|
||||
version: 7.5.4
|
||||
resolution: "semver@npm:7.5.4"
|
||||
"semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0":
|
||||
version: 7.6.0
|
||||
resolution: "semver@npm:7.6.0"
|
||||
dependencies:
|
||||
lru-cache: "npm:^6.0.0"
|
||||
bin:
|
||||
semver: bin/semver.js
|
||||
checksum: 5160b06975a38b11c1ab55950cb5b8a23db78df88275d3d8a42ccf1f29e55112ac995b3a26a522c36e3b5f76b0445f1eef70d696b8c7862a2b4303d7b0e7609e
|
||||
checksum: fbfe717094ace0aa8d6332d7ef5ce727259815bd8d8815700853f4faf23aacbd7192522f0dc5af6df52ef4fa85a355ebd2f5d39f554bd028200d6cf481ab9b53
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue