= 0 && e < 2 ? "one" : "other";
+ },
+ fields: {
+ year: {
+ displayName: "annu",
+ relative: {
+ 0: "quist'annu",
+ 1: "l'annu chì vene",
+ "-1": "l'annu passatu",
+ },
+ relativeTime: {
+ future: {
+ one: "in {0} annu",
+ other: "in {0} anni",
+ },
+ past: {
+ one: "{0} annu fà",
+ other: "{0} anni fà",
+ },
+ },
+ },
+ month: {
+ displayName: "mese",
+ relative: {
+ 0: "Questu mese",
+ 1: "u mese chì vene",
+ "-1": "u mese passatu",
+ },
+ relativeTime: {
+ future: {
+ one: "in {0} mese",
+ other: "in {0} mesi",
+ },
+ past: {
+ one: "{0} mese fà",
+ other: "{0} mesi fà",
+ },
+ },
+ },
+ day: {
+ displayName: "ghjornu",
+ relative: {
+ 0: "oghje",
+ 1: "dumane",
+ "-1": "eri",
+ },
+ relativeTime: {
+ future: {
+ one: "in {0} ghjornu",
+ other: "in {0} ghjornu",
+ },
+ past: {
+ one: "{0} ghjornu fà",
+ other: "{0} ghjorni fà",
+ },
+ },
+ },
+ hour: {
+ displayName: "ora",
+ relativeTime: {
+ future: {
+ one: "in {0} ora",
+ other: "in {0} ore",
+ },
+ past: {
+ one: "{0} ora fà",
+ other: "{0} ore fà",
+ },
+ },
+ },
+ minute: {
+ displayName: "minuta",
+ relativeTime: {
+ future: {
+ one: "in {0} minuta",
+ other: "in {0} minute",
+ },
+ past: {
+ one: "{0} minuta fà",
+ other: "{0} minute fà",
+ },
+ },
+ },
+ second: {
+ displayName: "siconda",
+ relative: {
+ 0: "avà",
+ },
+ relativeTime: {
+ future: {
+ one: "in {0} siconda",
+ other: "in {0} siconde",
+ },
+ past: {
+ one: "{0} siconda fà",
+ other: "{0} siconde fà",
+ },
+ },
+ },
+ },
+}];
diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json
index 63c902668..5623bc54f 100644
--- a/app/javascript/mastodon/locales/nl.json
+++ b/app/javascript/mastodon/locales/nl.json
@@ -1,15 +1,18 @@
{
"account.badges.bot": "Bot",
"account.block": "Blokkeer @{name}",
- "account.block_domain": "Negeer alles van {domain}",
+ "account.block_domain": "Verberg alles van {domain}",
"account.blocked": "Geblokkeerd",
"account.direct": "Direct Message @{name}",
"account.disclaimer_full": "De informatie hieronder kan mogelijk een incompleet beeld geven van dit gebruikersprofiel.",
"account.domain_blocked": "Domein verborgen",
"account.edit_profile": "Profiel bewerken",
+ "account.endorse": "Op profiel weergeven",
"account.follow": "Volgen",
"account.followers": "Volgers",
+ "account.followers.empty": "Niemand volgt nog deze gebruiker.",
"account.follows": "Volgt",
+ "account.follows.empty": "Deze gebruiker volgt nog niemand.",
"account.follows_you": "Volgt jou",
"account.hide_reblogs": "Verberg boosts van @{name}",
"account.media": "Media",
@@ -25,7 +28,8 @@
"account.share": "Profiel van @{name} delen",
"account.show_reblogs": "Toon boosts van @{name}",
"account.unblock": "Deblokkeer @{name}",
- "account.unblock_domain": "{domain} niet langer negeren",
+ "account.unblock_domain": "{domain} niet langer verbergen",
+ "account.unendorse": "Niet op profiel weergeven",
"account.unfollow": "Ontvolgen",
"account.unmute": "@{name} niet langer negeren",
"account.unmute_notifications": "@{name} meldingen niet langer negeren",
@@ -42,7 +46,7 @@
"column.blocks": "Geblokkeerde gebruikers",
"column.community": "Lokale tijdlijn",
"column.direct": "Directe berichten",
- "column.domain_blocks": "Verborgen domeinen",
+ "column.domain_blocks": "Genegeerde servers",
"column.favourites": "Favorieten",
"column.follow_requests": "Volgverzoeken",
"column.home": "Start",
@@ -80,12 +84,12 @@
"confirmations.delete.message": "Weet je het zeker dat je deze toot wilt verwijderen?",
"confirmations.delete_list.confirm": "Verwijderen",
"confirmations.delete_list.message": "Weet je zeker dat je deze lijst definitief wilt verwijderen?",
- "confirmations.domain_block.confirm": "Negeer alles van deze server",
+ "confirmations.domain_block.confirm": "Verberg alles van deze server",
"confirmations.domain_block.message": "Weet je het echt heel erg zeker dat je alles van {domain} wilt negeren? In de meeste gevallen is het blokkeren of negeren van een paar specifieke personen voldoende en beter. Je zult geen toots van deze server op openbare tijdlijnen zien of in jouw meldingen. Jouw volgers van deze server worden verwijderd.",
"confirmations.mute.confirm": "Negeren",
"confirmations.mute.message": "Weet je het zeker dat je {name} wilt negeren?",
"confirmations.redraft.confirm": "Verwijderen en herschrijven",
- "confirmations.redraft.message": "Weet je zeker dat je deze toot wilt verwijderen en herschrijven? Je verliest wel alle reacties, boosts en favorieten.",
+ "confirmations.redraft.message": "Weet je zeker dat je deze toot wilt verwijderen en herschrijven? Je verliest wel de boosts en favorieten, en reacties op de originele toot zitten niet meer aan de nieuwe toot vast.",
"confirmations.unfollow.confirm": "Ontvolgen",
"confirmations.unfollow.message": "Weet je het zeker dat je {name} wilt ontvolgen?",
"embed.instructions": "Embed deze toot op jouw website, door de onderstaande code te kopiëren.",
@@ -104,12 +108,19 @@
"emoji_button.search_results": "Zoekresultaten",
"emoji_button.symbols": "Symbolen",
"emoji_button.travel": "Reizen en plekken",
+ "empty_column.blocks": "Jij hebt nog geen enkele gebruiker geblokkeerd.",
"empty_column.community": "De lokale tijdlijn is nog leeg. Toot iets in het openbaar om de bal aan het rollen te krijgen!",
"empty_column.direct": "Je hebt nog geen directe berichten. Wanneer je er een verzend of ontvangt, zijn deze hier te zien.",
+ "empty_column.domain_blocks": "Er zijn nog geen genegeerde domeinen.",
+ "empty_column.favourited_statuses": "Jij hebt nog geen favoriete toots. Wanneer je er een als favoriet markeert, valt deze hier te zien.",
+ "empty_column.favourites": "Niemand heeft nog deze toot als favoriet gemarkeerd. Wanneer iemand dit doet, valt dat hier te zien.",
+ "empty_column.follow_requests": "Jij hebt nog enkel volgverzoek ontvangen. Wanneer je er eentje ontvangt, valt dat hier te zien.",
"empty_column.hashtag": "Er is nog niks te vinden onder deze hashtag.",
"empty_column.home": "Jij volgt nog niemand. Bezoek {public} of gebruik het zoekvenster om andere mensen te ontmoeten.",
"empty_column.home.public_timeline": "de globale tijdlijn",
"empty_column.list": "Er is nog niks in deze lijst. Wanneer lijstleden nieuwe toots publiceren, zijn deze hier te zien.",
+ "empty_column.lists": "Jij hebt nog enkele lijst. Wanneer je er eentje hebt aangemaakt, valt deze hier te zien.",
+ "empty_column.mutes": "Jij hebt nog geen gebruikers genegeerd.",
"empty_column.notifications": "Je hebt nog geen meldingen. Begin met iemand een gesprek.",
"empty_column.public": "Er is hier helemaal niks! Toot iets in het openbaar of volg mensen van andere servers om het te vullen",
"follow_request.authorize": "Goedkeuren",
@@ -126,19 +137,32 @@
"home.column_settings.show_reblogs": "Boosts tonen",
"home.column_settings.show_replies": "Reacties tonen",
"keyboard_shortcuts.back": "om terug te gaan",
+ "keyboard_shortcuts.blocked": "om de door jou geblokkeerde gebruikers te tonen",
"keyboard_shortcuts.boost": "om te boosten",
"keyboard_shortcuts.column": "om op een toot te focussen in één van de kolommen",
"keyboard_shortcuts.compose": "om het tekstvak voor toots te focussen",
"keyboard_shortcuts.description": "Omschrijving",
+ "keyboard_shortcuts.direct": "om jouw directe berichten te tonen",
"keyboard_shortcuts.down": "om naar beneden door de lijst te bewegen",
"keyboard_shortcuts.enter": "om toot volledig te tonen",
"keyboard_shortcuts.favourite": "om als favoriet te markeren",
+ "keyboard_shortcuts.favourites": "om jouw lijst met favorieten te tonen",
+ "keyboard_shortcuts.federated": "om de globale tijdlijn te tonen",
"keyboard_shortcuts.heading": "Sneltoetsen",
+ "keyboard_shortcuts.home": "om jouw starttijdlijn te tonen",
"keyboard_shortcuts.hotkey": "Sneltoets",
"keyboard_shortcuts.legend": "om deze legenda te tonen",
+ "keyboard_shortcuts.local": "om de lokale tijdlijn te tonen",
"keyboard_shortcuts.mention": "om de auteur te vermelden",
+ "keyboard_shortcuts.muted": "om de door jou genegeerde gebruikers te tonen",
+ "keyboard_shortcuts.my_profile": "om jouw profiel te tonen",
+ "keyboard_shortcuts.notifications": "om jouw meldingen te tonen",
+ "keyboard_shortcuts.pinned": "om jouw vastgezette toots te tonen",
+ "keyboard_shortcuts.profile": "om het gebruikersprofiel te openen",
"keyboard_shortcuts.reply": "om te reageren",
+ "keyboard_shortcuts.requests": "om jouw volgverzoeken te tonen",
"keyboard_shortcuts.search": "om het zoekvak te focussen",
+ "keyboard_shortcuts.start": "om de \"Aan de slag\"-kolom te tonen",
"keyboard_shortcuts.toggle_hidden": "om tekst achter een waarschuwing (CW) te tonen/verbergen",
"keyboard_shortcuts.toot": "om een nieuwe toot te starten",
"keyboard_shortcuts.unfocus": "om het tekst- en zoekvak te ontfocussen",
@@ -159,14 +183,16 @@
"missing_indicator.label": "Niet gevonden",
"missing_indicator.sublabel": "Deze hulpbron kan niet gevonden worden",
"mute_modal.hide_notifications": "Verberg meldingen van deze persoon?",
+ "navigation_bar.apps": "Mobiele apps",
"navigation_bar.blocks": "Geblokkeerde gebruikers",
"navigation_bar.community_timeline": "Lokale tijdlijn",
+ "navigation_bar.compose": "Nieuw toot schrijven",
"navigation_bar.direct": "Directe berichten",
"navigation_bar.discover": "Ontdekken",
- "navigation_bar.domain_blocks": "Verborgen domeinen",
+ "navigation_bar.domain_blocks": "Genegeerde domeinen",
"navigation_bar.edit_profile": "Profiel bewerken",
"navigation_bar.favourites": "Favorieten",
- "navigation_bar.filters": "Muted words",
+ "navigation_bar.filters": "Filters",
"navigation_bar.follow_requests": "Volgverzoeken",
"navigation_bar.info": "Over deze server",
"navigation_bar.keyboard_shortcuts": "Sneltoetsen",
@@ -233,8 +259,8 @@
"relative_time.seconds": "{number}s",
"reply_indicator.cancel": "Annuleren",
"report.forward": "Doorsturen naar {target}",
- "report.forward_hint": "Het account bevindt zich op een andere server. Stuur daar eveneens een geanonimiseerde kopie van de gerapporteerde toot(s) naartoe?",
- "report.hint": "De gerapporteerde toot(s) worden naar de moderatoren van jouw server gestuurd. Je kunt hieronder een uitleg geven waarom je dit account rapporteert:",
+ "report.forward_hint": "Het account bevindt zich op een andere server. Stuur daar eveneens een geanonimiseerde kopie van de rapportage naartoe?",
+ "report.hint": "De rapportage wordt naar de moderatoren van jouw server gestuurd. Je kunt hieronder een uitleg geven waarom je dit account rapporteert:",
"report.placeholder": "Extra opmerkingen",
"report.submit": "Verzenden",
"report.target": "Rapporteer {target}",
@@ -254,6 +280,7 @@
"status.cancel_reblog_private": "Niet langer boosten",
"status.cannot_reblog": "Deze toot kan niet geboost worden",
"status.delete": "Verwijderen",
+ "status.detailed_status": "Uitgebreide gespreksweergave",
"status.direct": "Directe toot @{name}",
"status.embed": "Embed",
"status.favourite": "Favoriet",
@@ -270,6 +297,7 @@
"status.reblog": "Boost",
"status.reblog_private": "Boost naar oorspronkelijke ontvangers",
"status.reblogged_by": "{name} boostte",
+ "status.reblogs.empty": "Niemand heeft deze toot nog geboost. Wanneer iemand dit doet, valt dat hier te zien.",
"status.redraft": "Verwijderen en herschrijven",
"status.reply": "Reageren",
"status.replyAll": "Reageer op iedereen",
@@ -291,7 +319,7 @@
"trends.count_by_accounts": "{count} {rawCount, plural, one {persoon praat} other {mensen praten}} hierover",
"ui.beforeunload": "Je concept zal verloren gaan als je Mastodon verlaat.",
"upload_area.title": "Hierin slepen om te uploaden",
- "upload_button.label": "Media toevoegen",
+ "upload_button.label": "Media toevoegen (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_form.description": "Omschrijf dit voor mensen met een visuele beperking",
"upload_form.focus": "Bijsnijden",
"upload_form.undo": "Verwijderen",
diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json
index 31bbf7664..d533ac315 100644
--- a/app/javascript/mastodon/locales/no.json
+++ b/app/javascript/mastodon/locales/no.json
@@ -7,9 +7,12 @@
"account.disclaimer_full": "Informasjonen nedenfor kan gi et ufullstendig bilde av brukerens profil.",
"account.domain_blocked": "Domain hidden",
"account.edit_profile": "Rediger profil",
+ "account.endorse": "Feature on profile",
"account.follow": "Følg",
"account.followers": "Følgere",
+ "account.followers.empty": "No one follows this user yet.",
"account.follows": "Følger",
+ "account.follows.empty": "This user doesn't follow anyone yet.",
"account.follows_you": "Følger deg",
"account.hide_reblogs": "Skjul fremhevinger fra @{name}",
"account.media": "Media",
@@ -26,6 +29,7 @@
"account.show_reblogs": "Vis boosts fra @{name}",
"account.unblock": "Avblokker @{name}",
"account.unblock_domain": "Vis {domain}",
+ "account.unendorse": "Don't feature on profile",
"account.unfollow": "Avfølg",
"account.unmute": "Avdemp @{name}",
"account.unmute_notifications": "Vis varsler fra @{name}",
@@ -104,12 +108,19 @@
"emoji_button.search_results": "Søkeresultat",
"emoji_button.symbols": "Symboler",
"emoji_button.travel": "Reise & steder",
+ "empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "Den lokale tidslinjen er tom. Skriv noe offentlig for å få snøballen til å rulle!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
+ "empty_column.domain_blocks": "There are no hidden domains yet.",
+ "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
+ "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
+ "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
"empty_column.hashtag": "Det er ingenting i denne hashtagen ennå.",
"empty_column.home": "Du har ikke fulgt noen ennå. Besøk {publlic} eller bruk søk for å komme i gang og møte andre brukere.",
"empty_column.home.public_timeline": "en offentlig tidslinje",
"empty_column.list": "Det er ingenting i denne listen ennå. Når medlemmene av denne listen legger ut nye statuser vil de dukke opp her.",
+ "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
+ "empty_column.mutes": "You haven't muted any users yet.",
"empty_column.notifications": "Du har ingen varsler ennå. Kommuniser med andre for å begynne samtalen.",
"empty_column.public": "Det er ingenting her! Skriv noe offentlig, eller følg brukere manuelt fra andre instanser for å fylle den opp",
"follow_request.authorize": "Autorisér",
@@ -126,19 +137,32 @@
"home.column_settings.show_reblogs": "Vis fremhevinger",
"home.column_settings.show_replies": "Vis svar",
"keyboard_shortcuts.back": "for å navigere tilbake",
+ "keyboard_shortcuts.blocked": "to open blocked users list",
"keyboard_shortcuts.boost": "å fremheve",
"keyboard_shortcuts.column": "å fokusere en status i en av kolonnene",
"keyboard_shortcuts.compose": "å fokusere komponeringsfeltet",
"keyboard_shortcuts.description": "Description",
+ "keyboard_shortcuts.direct": "to open direct messages column",
"keyboard_shortcuts.down": "for å flytte ned i listen",
"keyboard_shortcuts.enter": "to open status",
"keyboard_shortcuts.favourite": "for å favorittmarkere",
+ "keyboard_shortcuts.favourites": "to open favourites list",
+ "keyboard_shortcuts.federated": "to open federated timeline",
"keyboard_shortcuts.heading": "Keyboard Shortcuts",
+ "keyboard_shortcuts.home": "to open home timeline",
"keyboard_shortcuts.hotkey": "Lyntast",
"keyboard_shortcuts.legend": "å vise denne forklaringen",
+ "keyboard_shortcuts.local": "to open local timeline",
"keyboard_shortcuts.mention": "å nevne forfatter",
+ "keyboard_shortcuts.muted": "to open muted users list",
+ "keyboard_shortcuts.my_profile": "to open your profile",
+ "keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.pinned": "to open pinned toots list",
+ "keyboard_shortcuts.profile": "to open author's profile",
"keyboard_shortcuts.reply": "for å svare",
+ "keyboard_shortcuts.requests": "to open follow requests list",
"keyboard_shortcuts.search": "å fokusere søk",
+ "keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
"keyboard_shortcuts.toot": "å starte en helt ny tut",
"keyboard_shortcuts.unfocus": "å ufokusere komponerings-/søkefeltet",
@@ -159,8 +183,10 @@
"missing_indicator.label": "Ikke funnet",
"missing_indicator.sublabel": "Denne ressursen ble ikke funnet",
"mute_modal.hide_notifications": "Skjul varslinger fra denne brukeren?",
+ "navigation_bar.apps": "Mobile apps",
"navigation_bar.blocks": "Blokkerte brukere",
"navigation_bar.community_timeline": "Lokal tidslinje",
+ "navigation_bar.compose": "Compose new toot",
"navigation_bar.direct": "Direct messages",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Hidden domains",
@@ -254,6 +280,7 @@
"status.cancel_reblog_private": "Unboost",
"status.cannot_reblog": "Denne posten kan ikke fremheves",
"status.delete": "Slett",
+ "status.detailed_status": "Detailed conversation view",
"status.direct": "Direct message @{name}",
"status.embed": "Bygge inn",
"status.favourite": "Lik",
@@ -270,6 +297,7 @@
"status.reblog": "Fremhev",
"status.reblog_private": "Boost to original audience",
"status.reblogged_by": "Fremhevd av {name}",
+ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.redraft": "Delete & re-draft",
"status.reply": "Svar",
"status.replyAll": "Svar til samtale",
diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json
index fb025594d..254e9a2a5 100644
--- a/app/javascript/mastodon/locales/oc.json
+++ b/app/javascript/mastodon/locales/oc.json
@@ -7,9 +7,12 @@
"account.disclaimer_full": "Aquelas informacions de perfil pòdon èsser incomplètas.",
"account.domain_blocked": "Domeni amagat",
"account.edit_profile": "Modificar lo perfil",
+ "account.endorse": "Mostrar pel perfil",
"account.follow": "Sègre",
"account.followers": "Seguidors",
+ "account.followers.empty": "Degun sèc pas aqueste utilizaire pel moment.",
"account.follows": "Abonaments",
+ "account.follows.empty": "Aqueste utilizaire sèc pas degun pel moment.",
"account.follows_you": "Vos sèc",
"account.hide_reblogs": "Rescondre los partatges de @{name}",
"account.media": "Mèdias",
@@ -26,6 +29,7 @@
"account.show_reblogs": "Mostrar los partatges de @{name}",
"account.unblock": "Desblocar @{name}",
"account.unblock_domain": "Desblocar {domain}",
+ "account.unendorse": "Mostrar pas pel perfil",
"account.unfollow": "Quitar de sègre",
"account.unmute": "Quitar de rescondre @{name}",
"account.unmute_notifications": "Mostrar las notificacions de @{name}",
@@ -85,7 +89,7 @@
"confirmations.mute.confirm": "Rescondre",
"confirmations.mute.message": "Volètz vertadièrament rescondre {name} ?",
"confirmations.redraft.confirm": "Escafar & tornar formular",
- "confirmations.redraft.message": "Volètz vertadièrament escafar aqueste estatut e lo reformular ? Perdretz totas sas responsas, sos partiments e favorits.",
+ "confirmations.redraft.message": "Volètz vertadièrament escafar aqueste estatut e lo reformular ? Tote sos partiments e favorits seràn perduts, e sas responsas seràn orfanèlas.",
"confirmations.unfollow.confirm": "Quitar de sègre",
"confirmations.unfollow.message": "Volètz vertadièrament quitar de sègre {name} ?",
"embed.instructions": "Embarcar aqueste estatut per lo far veire sus un site Internet en copiar lo còdi çai-jos.",
@@ -104,12 +108,19 @@
"emoji_button.search_results": "Resultats de recèrca",
"emoji_button.symbols": "Simbòls",
"emoji_button.travel": "Viatges & lòcs",
+ "empty_column.blocks": "Avètz pas blocat degun pel moment.",
"empty_column.community": "Lo flux public local es void. Escrivètz quicòm per lo garnir !",
"empty_column.direct": "Avètz pas encara cap de messatges. Quand ne mandatz un o que ne recebètz un, serà mostrat aquí.",
+ "empty_column.domain_blocks": "I a pas encara cap de domeni amagat.",
+ "empty_column.favourited_statuses": "Avètz pas encara cap de tut favorit. Quanda n’auretz un, apareisserà aquí.",
+ "empty_column.favourites": "Degun a pas encara mes en favorit aqueste tut. Quanda qualqu’un o farà, apareisserà aquí.",
+ "empty_column.follow_requests": "Avètz pas encara de demanda d’abonament. Quand n’auretz una apareisserà aquí.",
"empty_column.hashtag": "I a pas encara de contengut ligat a aquesta etiqueta.",
"empty_column.home": "Vòstre flux d’acuèlh es void. Visitatz {public} o utilizatz la recèrca per vos connectar a d’autras personas.",
"empty_column.home.public_timeline": "lo flux public",
"empty_column.list": "I a pas res dins la lista pel moment. Quand de membres d’aquesta lista publiquen de novèls estatuts los veiretz aquí.",
+ "empty_column.lists": "Encara avètz pas cap de lista. Quand ne creetz una, apareisserà aquí.",
+ "empty_column.mutes": "Encara avètz pas mes en silenci degun.",
"empty_column.notifications": "Avètz pas encara de notificacions. Respondètz a qualqu’un per començar una conversacion.",
"empty_column.public": "I a pas res aquí ! Escrivètz quicòm de public, o seguètz de personas d’autras instàncias per garnir lo flux public",
"follow_request.authorize": "Acceptar",
@@ -126,19 +137,32 @@
"home.column_settings.show_reblogs": "Mostrar los partatges",
"home.column_settings.show_replies": "Mostrar las responsas",
"keyboard_shortcuts.back": "anar enrèire",
+ "keyboard_shortcuts.blocked": "per dobrir la lista d’utilizaires blocats",
"keyboard_shortcuts.boost": "partejar",
"keyboard_shortcuts.column": "centrar un estatut a una colomna",
"keyboard_shortcuts.compose": "anar al camp tèxte",
"keyboard_shortcuts.description": "Descripcion",
+ "keyboard_shortcuts.direct": "per dobrir la columna de messatges dirèctes",
"keyboard_shortcuts.down": "far davalar dins la lista",
"keyboard_shortcuts.enter": "dobrir los estatuts",
"keyboard_shortcuts.favourite": "apondre als favorits",
+ "keyboard_shortcuts.favourites": "per dobrir la lista de favorits",
+ "keyboard_shortcuts.federated": "per dobrir lo flux public global",
"keyboard_shortcuts.heading": "Acorchis clavièr",
+ "keyboard_shortcuts.home": "per dobrir lo flux public local",
"keyboard_shortcuts.hotkey": "Acorchis",
"keyboard_shortcuts.legend": "mostrar aquesta legenda",
+ "keyboard_shortcuts.local": "per dobrir lo flux public local",
"keyboard_shortcuts.mention": "mencionar l’autor",
+ "keyboard_shortcuts.muted": "per dorbir la lista dels utilizaires silenciats",
+ "keyboard_shortcuts.my_profile": "per dobrir vòstre perfil",
+ "keyboard_shortcuts.notifications": "per dobrir la columna de notificacions",
+ "keyboard_shortcuts.pinned": "per dobrir la lista dels tuts penjats",
+ "keyboard_shortcuts.profile": "per dobrir lo perfil de l’autor",
"keyboard_shortcuts.reply": "respondre",
+ "keyboard_shortcuts.requests": "per dorbir la lista de demanda d’abonament",
"keyboard_shortcuts.search": "anar a la recèrca",
+ "keyboard_shortcuts.start": "per dobrir la columna «Per començar»",
"keyboard_shortcuts.toggle_hidden": "mostrar/amagar lo tèxte dels avertiments",
"keyboard_shortcuts.toot": "començar un estatut tot novèl",
"keyboard_shortcuts.unfocus": "quitar lo camp tèxte/de recèrca",
@@ -159,14 +183,16 @@
"missing_indicator.label": "Pas trobat",
"missing_indicator.sublabel": "Aquesta ressorsa es pas estada trobada",
"mute_modal.hide_notifications": "Rescondre las notificacions d’aquesta persona ?",
+ "navigation_bar.apps": "Aplicacions mobil",
"navigation_bar.blocks": "Personas blocadas",
"navigation_bar.community_timeline": "Flux public local",
+ "navigation_bar.compose": "Escriure un nòu tut",
"navigation_bar.direct": "Messatges dirèctes",
"navigation_bar.discover": "Trobar",
"navigation_bar.domain_blocks": "Domenis resconduts",
"navigation_bar.edit_profile": "Modificar lo perfil",
"navigation_bar.favourites": "Favorits",
- "navigation_bar.filters": "Muted words",
+ "navigation_bar.filters": "Mots ignorats",
"navigation_bar.follow_requests": "Demandas d’abonament",
"navigation_bar.info": "Mai informacions",
"navigation_bar.keyboard_shortcuts": "Acorchis clavièr",
@@ -243,7 +269,7 @@
"search_popout.tips.full_text": "Un tèxte simple que tòrna los estatuts qu’avètz escriches, mes en favorits, partejats, o ont sètz mencionat, e tanben los noms d’utilizaires, escais-noms e etiquetas que correspondonas.",
"search_popout.tips.hashtag": "etiqueta",
"search_popout.tips.status": "estatut",
- "search_popout.tips.text": "Lo tèxt brut tòrna escais, noms d’utilizaire e etiquetas correspondents",
+ "search_popout.tips.text": "Lo tèxte brut tòrna escais, noms d’utilizaire e etiquetas correspondents",
"search_popout.tips.user": "utilizaire",
"search_results.accounts": "Gents",
"search_results.hashtags": "Etiquetas",
@@ -254,6 +280,7 @@
"status.cancel_reblog_private": "Quitar de partejar",
"status.cannot_reblog": "Aqueste estatut pòt pas èsser partejat",
"status.delete": "Escafar",
+ "status.detailed_status": "Vista detalhada de la convèrsa",
"status.direct": "Messatge per @{name}",
"status.embed": "Embarcar",
"status.favourite": "Apondre als favorits",
@@ -270,6 +297,7 @@
"status.reblog": "Partejar",
"status.reblog_private": "Partejar a l’audiéncia d’origina",
"status.reblogged_by": "{name} a partejat",
+ "status.reblogs.empty": "Degun a pas encara partejat aqueste tut. Quand qualqu’un o farà, apareisserà aquí.",
"status.redraft": "Escafar e tornar formular",
"status.reply": "Respondre",
"status.replyAll": "Respondre a la conversacion",
@@ -291,7 +319,7 @@
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} ne charra other {people}} ne charran",
"ui.beforeunload": "Vòstre brolhon serà perdut se quitatz Mastodon.",
"upload_area.title": "Lisatz e depausatz per mandar",
- "upload_button.label": "Ajustar un mèdia",
+ "upload_button.label": "Ajustar un mèdia (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_form.description": "Descripcion pels mal vesents",
"upload_form.focus": "Retalhar",
"upload_form.undo": "Suprimir",
diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json
index 4f1290121..9fc2de416 100644
--- a/app/javascript/mastodon/locales/pl.json
+++ b/app/javascript/mastodon/locales/pl.json
@@ -2,19 +2,22 @@
"account.badges.bot": "Bot",
"account.block": "Blokuj @{name}",
"account.block_domain": "Blokuj wszystko z {domain}",
- "account.blocked": "Zablokowany",
+ "account.blocked": "Zablokowany(-a)",
"account.direct": "Wyślij wiadomość bezpośrednią do @{name}",
"account.disclaimer_full": "Poniższe informacje mogą nie odwzorowywać bezbłędnie profilu użytkownika.",
"account.domain_blocked": "Ukryto domenę",
"account.edit_profile": "Edytuj profil",
+ "account.endorse": "Polecaj na profilu",
"account.follow": "Śledź",
"account.followers": "Śledzący",
+ "account.followers.empty": "Nikt jeszcze nie śledzi tego użytkownika.",
"account.follows": "Śledzeni",
+ "account.follows.empty": "Ten użytkownik nie śledzi jeszcze nikogo.",
"account.follows_you": "Śledzi Cię",
"account.hide_reblogs": "Ukryj podbicia od @{name}",
"account.media": "Zawartość multimedialna",
"account.mention": "Wspomnij o @{name}",
- "account.moved_to": "{name} przeniósł się do:",
+ "account.moved_to": "{name} przeniósł(-osła) się do:",
"account.mute": "Wycisz @{name}",
"account.mute_notifications": "Wycisz powiadomienia o @{name}",
"account.muted": "Wyciszony",
@@ -26,6 +29,7 @@
"account.show_reblogs": "Pokazuj podbicia od @{name}",
"account.unblock": "Odblokuj @{name}",
"account.unblock_domain": "Odblokuj domenę {domain}",
+ "account.unendorse": "Przestań polecać",
"account.unfollow": "Przestań śledzić",
"account.unmute": "Cofnij wyciszenie @{name}",
"account.unmute_notifications": "Cofnij wyciszenie powiadomień od @{name}",
@@ -85,7 +89,7 @@
"confirmations.mute.confirm": "Wycisz",
"confirmations.mute.message": "Czy na pewno chcesz wyciszyć {name}?",
"confirmations.redraft.confirm": "Usuń i przeredaguj",
- "confirmations.redraft.message": "Czy na pewno chcesz usunąć i przeredagować ten wpis? Utracisz wszystkie odpowiedzi, podbicia i polubienia dotyczące go.",
+ "confirmations.redraft.message": "Czy na pewno chcesz usunąć i przeredagować ten wpis? Polubienia i podbicia zostaną utracone, a odpowiedzi do oryginalnego wpisu zostaną osierocone.",
"confirmations.unfollow.confirm": "Przestań śledzić",
"confirmations.unfollow.message": "Czy na pewno zamierzasz przestać śledzić {name}?",
"embed.instructions": "Osadź ten wpis na swojej stronie wklejając poniższy kod.",
@@ -104,12 +108,19 @@
"emoji_button.search_results": "Wyniki wyszukiwania",
"emoji_button.symbols": "Symbole",
"emoji_button.travel": "Podróże i miejsca",
+ "empty_column.blocks": "Nie zablokowałeś(-aś) jeszcze żadnego użytkownika.",
"empty_column.community": "Lokalna oś czasu jest pusta. Napisz coś publicznie, aby zagaić!",
"empty_column.direct": "Nie masz żadnych wiadomości bezpośrednich. Kiedy dostaniesz lub wyślesz jakąś, pojawi się ona tutaj.",
- "empty_column.hashtag": "Nie ma wpisów oznaczonych tym hashtagiem. Możesz napisać pierwszy!",
+ "empty_column.domain_blocks": "Brak ukrytych domen.",
+ "empty_column.favourited_statuses": "Nie dodałeś(-aś) żadnego wpisu do ulubionych. Kiedy to zrobisz, pojawi się on tutaj.",
+ "empty_column.favourites": "Nikt nie dodał tego wpisu do ulubionych. Gdy ktoś to zrobi, pojawi się tutaj.",
+ "empty_column.follow_requests": "Nie masz żadnych próśb o możliwość śledzenia. Kiedy ktoś utworzy ją, pojawi się tutaj.",
+ "empty_column.hashtag": "Nie ma wpisów oznaczonych tym hashtagiem. Możesz napisać pierwszy(-a)!",
"empty_column.home": "Nie śledzisz nikogo. Odwiedź globalną oś czasu lub użyj wyszukiwarki, aby znaleźć interesujące Cię profile.",
"empty_column.home.public_timeline": "globalna oś czasu",
"empty_column.list": "Nie ma nic na tej liście. Kiedy członkowie listy dodadzą nowe wpisy, pojawia się one tutaj.",
+ "empty_column.lists": "Nie masz żadnych list. Kiedy utworzysz jedną, pojawi się tutaj.",
+ "empty_column.mutes": "Nie wyciszyłeś(-aś) jeszcze żadnego użytkownika.",
"empty_column.notifications": "Nie masz żadnych powiadomień. Rozpocznij interakcje z innymi użytkownikami.",
"empty_column.public": "Tu nic nie ma! Napisz coś publicznie, lub dodaj ludzi z innych instancji, aby to wyświetlić",
"follow_request.authorize": "Autoryzuj",
@@ -126,19 +137,32 @@
"home.column_settings.show_reblogs": "Pokazuj podbicia",
"home.column_settings.show_replies": "Pokazuj odpowiedzi",
"keyboard_shortcuts.back": "aby cofnąć się",
+ "keyboard_shortcuts.blocked": "aby przejść do listy zablokowanych użytkowników",
"keyboard_shortcuts.boost": "aby podbić wpis",
"keyboard_shortcuts.column": "aby przejść do wpisu z jednej z kolumn",
"keyboard_shortcuts.compose": "aby przejść do pola tworzenia wpisu",
"keyboard_shortcuts.description": "Opis",
+ "keyboard_shortcuts.direct": "aby otworzyć kolumnę wiadomości bezpośrednich",
"keyboard_shortcuts.down": "aby przejść na dół listy",
"keyboard_shortcuts.enter": "aby otworzyć wpis",
"keyboard_shortcuts.favourite": "aby dodać do ulubionych",
+ "keyboard_shortcuts.favourites": "aby przejść do listy ulubionych wpisów",
+ "keyboard_shortcuts.federated": "aby otworzyć oś czasu federacji",
"keyboard_shortcuts.heading": "Skróty klawiszowe",
+ "keyboard_shortcuts.home": "aby otworzyć stronę główną",
"keyboard_shortcuts.hotkey": "Klawisz",
- "keyboard_shortcuts.legend": "aby wyświetlić tą legendę",
+ "keyboard_shortcuts.legend": "aby wyświetlić tę legendę",
+ "keyboard_shortcuts.local": "aby otworzyć lokalną oś czasu",
"keyboard_shortcuts.mention": "aby wspomnieć o autorze",
+ "keyboard_shortcuts.muted": "aby przejść do listy wyciszonych użytkowników",
+ "keyboard_shortcuts.my_profile": "aby otworzyć własny profil",
+ "keyboard_shortcuts.notifications": "aby otworzyć kolumnę powiadomień",
+ "keyboard_shortcuts.pinned": "aby przejść do listy przypiętych wpisów",
+ "keyboard_shortcuts.profile": "aby przejść do profilu autora wpisu",
"keyboard_shortcuts.reply": "aby odpowiedzieć",
+ "keyboard_shortcuts.requests": "aby przejść do listy próśb o możliwość śledzenia",
"keyboard_shortcuts.search": "aby przejść do pola wyszukiwania",
+ "keyboard_shortcuts.start": "aby otworzyć kolumnę „Rozpocznij”",
"keyboard_shortcuts.toggle_hidden": "aby wyświetlić lub ukryć wpis spod CW",
"keyboard_shortcuts.toot": "aby utworzyć nowy wpis",
"keyboard_shortcuts.unfocus": "aby opuścić pole wyszukiwania/pisania",
@@ -159,14 +183,16 @@
"missing_indicator.label": "Nie znaleziono",
"missing_indicator.sublabel": "Nie można odnaleźć tego zasobu",
"mute_modal.hide_notifications": "Chcesz ukryć powiadomienia od tego użytkownika?",
+ "navigation_bar.apps": "Aplikacje mobilne",
"navigation_bar.blocks": "Zablokowani użytkownicy",
"navigation_bar.community_timeline": "Lokalna oś czasu",
+ "navigation_bar.compose": "Utwórz nowy wpis",
"navigation_bar.direct": "Wiadomości bezpośrednie",
"navigation_bar.discover": "Odkrywaj",
"navigation_bar.domain_blocks": "Ukryte domeny",
"navigation_bar.edit_profile": "Edytuj profil",
"navigation_bar.favourites": "Ulubione",
- "navigation_bar.filters": "Muted words",
+ "navigation_bar.filters": "Wyciszone słowa",
"navigation_bar.follow_requests": "Prośby o śledzenie",
"navigation_bar.info": "Szczegółowe informacje",
"navigation_bar.keyboard_shortcuts": "Skróty klawiszowe",
@@ -178,10 +204,10 @@
"navigation_bar.preferences": "Preferencje",
"navigation_bar.public_timeline": "Globalna oś czasu",
"navigation_bar.security": "Bezpieczeństwo",
- "notification.favourite": "{name} dodał Twój wpis do ulubionych",
- "notification.follow": "{name} zaczął Cię śledzić",
- "notification.mention": "{name} wspomniał o tobie",
- "notification.reblog": "{name} podbił Twój wpis",
+ "notification.favourite": "{name} dodał(a) Twój wpis do ulubionych",
+ "notification.follow": "{name} zaczął(-ęła) Cię śledzić",
+ "notification.mention": "{name} wspomniał(a) o tobie",
+ "notification.reblog": "{name} podbił(a) Twój wpis",
"notifications.clear": "Wyczyść powiadomienia",
"notifications.clear_confirmation": "Czy na pewno chcesz bezpowrotnie usunąć wszystkie powiadomienia?",
"notifications.column_settings.alert": "Powiadomienia na pulpicie",
@@ -234,13 +260,13 @@
"reply_indicator.cancel": "Anuluj",
"report.forward": "Przekaż na {target}",
"report.forward_hint": "To konto znajduje się na innej instancji. Czy chcesz wysłać anonimową kopię zgłoszenia rnież na nią?",
- "report.hint": "Zgłoszenie zostanie wysłane moderatorom Twojej instancji. Poniżej możesz też umieścić wyjaśnieni dlaczego zgłaszasz to konto:",
+ "report.hint": "Zgłoszenie zostanie wysłane moderatorom Twojej instancji. Poniżej możesz też umieścić wyjaśnienie dlaczego zgłaszasz to konto:",
"report.placeholder": "Dodatkowe komentarze",
"report.submit": "Wyślij",
"report.target": "Zgłaszanie {target}",
"search.placeholder": "Szukaj",
"search_popout.search_format": "Zaawansowane wyszukiwanie",
- "search_popout.tips.full_text": "Pozwala na wyszukiwanie wpisów które napisałeś, dodałeś do ulubionych, podbiłeś w których o Tobie wspomniano, oraz pasujące nazwy użytkowników, pełne nazwy i hashtagi.",
+ "search_popout.tips.full_text": "Pozwala na wyszukiwanie wpisów które napisałeś(-aś), dodałeś(-aś) do ulubionych lub podbiłeś(-aś), w których o Tobie wspomniano, oraz pasujące nazwy użytkowników, pełne nazwy i hashtagi.",
"search_popout.tips.hashtag": "hashtag",
"search_popout.tips.status": "wpis",
"search_popout.tips.text": "Proste wyszukiwanie pasujących pseudonimów, nazw użytkowników i hashtagów",
@@ -254,10 +280,11 @@
"status.cancel_reblog_private": "Cofnij podbicie",
"status.cannot_reblog": "Ten wpis nie może zostać podbity",
"status.delete": "Usuń",
+ "status.detailed_status": "Szczegółowy widok konwersacji",
"status.direct": "Wyślij wiadomość bezpośrednią do @{name}",
"status.embed": "Osadź",
"status.favourite": "Dodaj do ulubionych",
- "status.filtered": "Filtrowany",
+ "status.filtered": "Filtrowany(-a)",
"status.load_more": "Załaduj więcej",
"status.media_hidden": "Zawartość multimedialna ukryta",
"status.mention": "Wspomnij o @{name}",
@@ -269,7 +296,8 @@
"status.pinned": "Przypięty wpis",
"status.reblog": "Podbij",
"status.reblog_private": "Podbij dla odbiorców oryginalnego wpisu",
- "status.reblogged_by": "{name} podbił",
+ "status.reblogged_by": "{name} podbił(a)",
+ "status.reblogs.empty": "Nikt nie podbił jeszcze tego wpisu. Gdy ktoś to zrobi, pojawi się tutaj.",
"status.redraft": "Usuń i przeredaguj",
"status.reply": "Odpowiedz",
"status.replyAll": "Odpowiedz na wątek",
@@ -291,11 +319,11 @@
"trends.count_by_accounts": "{count} {rawCount, plural, one {osoba rozmawia} few {osoby rozmawiają} other {osób rozmawia}} o tym",
"ui.beforeunload": "Utracisz tworzony wpis, jeżeli opuścisz Mastodona.",
"upload_area.title": "Przeciągnij i upuść aby wysłać",
- "upload_button.label": "Dodaj zawartość multimedialną",
+ "upload_button.label": "Dodaj zawartość multimedialną (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_form.description": "Wprowadź opis dla niewidomych i niedowidzących",
"upload_form.focus": "Przytnij",
"upload_form.undo": "Usuń",
- "upload_progress.label": "Wysyłanie",
+ "upload_progress.label": "Wysyłanie...",
"video.close": "Zamknij film",
"video.exit_fullscreen": "Opuść tryb pełnoekranowy",
"video.expand": "Rozszerz film",
diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json
index 4ee02f757..ed6ea3674 100644
--- a/app/javascript/mastodon/locales/pt-BR.json
+++ b/app/javascript/mastodon/locales/pt-BR.json
@@ -7,9 +7,12 @@
"account.disclaimer_full": "As informações abaixo podem refletir o perfil do usuário de maneira incompleta.",
"account.domain_blocked": "Domínio escondido",
"account.edit_profile": "Editar perfil",
+ "account.endorse": "Destacar no perfil",
"account.follow": "Seguir",
"account.followers": "Seguidores",
+ "account.followers.empty": "No one follows this user yet.",
"account.follows": "Segue",
+ "account.follows.empty": "This user doesn't follow anyone yet.",
"account.follows_you": "Segue você",
"account.hide_reblogs": "Esconder compartilhamentos de @{name}",
"account.media": "Mídia",
@@ -26,6 +29,7 @@
"account.show_reblogs": "Mostra compartilhamentos de @{name}",
"account.unblock": "Desbloquear @{name}",
"account.unblock_domain": "Desbloquear {domain}",
+ "account.unendorse": "Não destacar no perfil",
"account.unfollow": "Deixar de seguir",
"account.unmute": "Não silenciar @{name}",
"account.unmute_notifications": "Retirar silêncio das notificações vindas de @{name}",
@@ -104,18 +108,25 @@
"emoji_button.search_results": "Resultados da busca",
"emoji_button.symbols": "Símbolos",
"emoji_button.travel": "Viagens & Lugares",
+ "empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "A timeline local está vazia. Escreva algo publicamente para começar!",
"empty_column.direct": "Você não tem nenhuma mensagem direta ainda. Quando você enviar ou receber uma, as mensagens aparecerão por aqui.",
+ "empty_column.domain_blocks": "There are no hidden domains yet.",
+ "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
+ "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
+ "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
"empty_column.hashtag": "Ainda não há qualquer conteúdo com essa hashtag.",
"empty_column.home": "Você ainda não segue usuário algum. Visite a timeline {public} ou use o buscador para procurar e conhecer outros usuários.",
"empty_column.home.public_timeline": "global",
"empty_column.list": "Ainda não há nada nesta lista. Quando membros dessa lista fizerem novas postagens, elas aparecerão aqui.",
+ "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
+ "empty_column.mutes": "You haven't muted any users yet.",
"empty_column.notifications": "Você ainda não possui notificações. Interaja com outros usuários para começar a conversar.",
"empty_column.public": "Não há nada aqui! Escreva algo publicamente ou siga manualmente usuários de outras instâncias",
"follow_request.authorize": "Autorizar",
"follow_request.reject": "Rejeitar",
"getting_started.developers": "Desenvolvedores",
- "getting_started.documentation": "Documentation",
+ "getting_started.documentation": "Documentação",
"getting_started.find_friends": "Encontre amizades do Twitter",
"getting_started.heading": "Primeiros passos",
"getting_started.invite": "Convide pessoas",
@@ -126,19 +137,32 @@
"home.column_settings.show_reblogs": "Mostrar compartilhamentos",
"home.column_settings.show_replies": "Mostrar as respostas",
"keyboard_shortcuts.back": "para navegar de volta",
+ "keyboard_shortcuts.blocked": "to open blocked users list",
"keyboard_shortcuts.boost": "para compartilhar",
"keyboard_shortcuts.column": "Focar um status em uma das colunas",
"keyboard_shortcuts.compose": "para focar a área de redação",
- "keyboard_shortcuts.description": "Description",
+ "keyboard_shortcuts.description": "Descrição",
+ "keyboard_shortcuts.direct": "to open direct messages column",
"keyboard_shortcuts.down": "para mover para baixo na lista",
- "keyboard_shortcuts.enter": "to open status",
+ "keyboard_shortcuts.enter": "para expandir um status",
"keyboard_shortcuts.favourite": "para adicionar aos favoritos",
- "keyboard_shortcuts.heading": "Keyboard Shortcuts",
+ "keyboard_shortcuts.favourites": "to open favourites list",
+ "keyboard_shortcuts.federated": "to open federated timeline",
+ "keyboard_shortcuts.heading": "Atalhos de teclado",
+ "keyboard_shortcuts.home": "to open home timeline",
"keyboard_shortcuts.hotkey": "Atalho",
"keyboard_shortcuts.legend": "para mostrar essa legenda",
+ "keyboard_shortcuts.local": "to open local timeline",
"keyboard_shortcuts.mention": "para mencionar o autor",
+ "keyboard_shortcuts.muted": "to open muted users list",
+ "keyboard_shortcuts.my_profile": "to open your profile",
+ "keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.pinned": "to open pinned toots list",
+ "keyboard_shortcuts.profile": "para abrir o perfil do autor",
"keyboard_shortcuts.reply": "para responder",
+ "keyboard_shortcuts.requests": "to open follow requests list",
"keyboard_shortcuts.search": "para focar a pesquisa",
+ "keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "mostrar/esconder o texto com aviso de conteúdo",
"keyboard_shortcuts.toot": "para compor um novo toot",
"keyboard_shortcuts.unfocus": "para remover o foco da área de composição/pesquisa",
@@ -159,14 +183,16 @@
"missing_indicator.label": "Não encontrado",
"missing_indicator.sublabel": "Esse recurso não pôde ser encontrado",
"mute_modal.hide_notifications": "Esconder notificações deste usuário?",
+ "navigation_bar.apps": "Apps",
"navigation_bar.blocks": "Usuários bloqueados",
"navigation_bar.community_timeline": "Local",
+ "navigation_bar.compose": "Compose new toot",
"navigation_bar.direct": "Mensagens diretas",
"navigation_bar.discover": "Descobrir",
"navigation_bar.domain_blocks": "Domínios escondidos",
"navigation_bar.edit_profile": "Editar perfil",
"navigation_bar.favourites": "Favoritos",
- "navigation_bar.filters": "Muted words",
+ "navigation_bar.filters": "Palavras silenciadas",
"navigation_bar.follow_requests": "Seguidores pendentes",
"navigation_bar.info": "Mais informações",
"navigation_bar.keyboard_shortcuts": "Atalhos de teclado",
@@ -254,6 +280,7 @@
"status.cancel_reblog_private": "Desfazer compartilhamento",
"status.cannot_reblog": "Esta postagem não pode ser compartilhada",
"status.delete": "Excluir",
+ "status.detailed_status": "Detailed conversation view",
"status.direct": "Enviar mensagem direta a @{name}",
"status.embed": "Incorporar",
"status.favourite": "Adicionar aos favoritos",
@@ -270,6 +297,7 @@
"status.reblog": "Compartilhar",
"status.reblog_private": "Compartilhar com a audiência original",
"status.reblogged_by": "{name} compartilhou",
+ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.redraft": "Apagar & usar como rascunho",
"status.reply": "Responder",
"status.replyAll": "Responder à sequência",
diff --git a/app/javascript/mastodon/locales/pt.json b/app/javascript/mastodon/locales/pt.json
index 686c05d72..2f601cb32 100644
--- a/app/javascript/mastodon/locales/pt.json
+++ b/app/javascript/mastodon/locales/pt.json
@@ -7,9 +7,12 @@
"account.disclaimer_full": "As informações abaixo podem refletir o perfil do usuário de forma incompleta.",
"account.domain_blocked": "Domain hidden",
"account.edit_profile": "Editar perfil",
+ "account.endorse": "Feature on profile",
"account.follow": "Seguir",
"account.followers": "Seguidores",
+ "account.followers.empty": "No one follows this user yet.",
"account.follows": "Segue",
+ "account.follows.empty": "This user doesn't follow anyone yet.",
"account.follows_you": "É teu seguidor",
"account.hide_reblogs": "Esconder partilhas de @{name}",
"account.media": "Media",
@@ -26,6 +29,7 @@
"account.show_reblogs": "Mostrar partilhas de @{name}",
"account.unblock": "Não bloquear @{name}",
"account.unblock_domain": "Mostrar {domain}",
+ "account.unendorse": "Don't feature on profile",
"account.unfollow": "Deixar de seguir",
"account.unmute": "Não silenciar @{name}",
"account.unmute_notifications": "Deixar de silenciar @{name}",
@@ -104,12 +108,19 @@
"emoji_button.search_results": "Resultados da pesquisa",
"emoji_button.symbols": "Símbolos",
"emoji_button.travel": "Viagens & Lugares",
+ "empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "Ainda não existe conteúdo local para mostrar!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
+ "empty_column.domain_blocks": "There are no hidden domains yet.",
+ "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
+ "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
+ "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
"empty_column.hashtag": "Não foram encontradas publicações com essa hashtag.",
"empty_column.home": "Ainda não segues qualquer utilizador. Visita {public} ou utiliza a pesquisa para procurar outros utilizadores.",
"empty_column.home.public_timeline": "global",
"empty_column.list": "Ainda não existem publicações nesta lista. Quando membros desta lista fizerem novas publicações, elas aparecerão aqui.",
+ "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
+ "empty_column.mutes": "You haven't muted any users yet.",
"empty_column.notifications": "Não tens notificações. Interage com outros utilizadores para iniciar uma conversa.",
"empty_column.public": "Não há nada aqui! Escreve algo publicamente ou segue outros utilizadores para ver aqui os conteúdos públicos",
"follow_request.authorize": "Autorizar",
@@ -126,19 +137,32 @@
"home.column_settings.show_reblogs": "Mostrar as partilhas",
"home.column_settings.show_replies": "Mostrar as respostas",
"keyboard_shortcuts.back": "para voltar",
+ "keyboard_shortcuts.blocked": "to open blocked users list",
"keyboard_shortcuts.boost": "para partilhar",
"keyboard_shortcuts.column": "para focar uma publicação numa das colunas",
"keyboard_shortcuts.compose": "para focar na área de publicação",
"keyboard_shortcuts.description": "Descrição",
+ "keyboard_shortcuts.direct": "to open direct messages column",
"keyboard_shortcuts.down": "para mover para baixo na lista",
"keyboard_shortcuts.enter": "para expandir uma publicação",
"keyboard_shortcuts.favourite": "para adicionar aos favoritos",
+ "keyboard_shortcuts.favourites": "to open favourites list",
+ "keyboard_shortcuts.federated": "to open federated timeline",
"keyboard_shortcuts.heading": "Atalhos do teclado",
+ "keyboard_shortcuts.home": "to open home timeline",
"keyboard_shortcuts.hotkey": "Atalho",
"keyboard_shortcuts.legend": "para mostrar esta legenda",
+ "keyboard_shortcuts.local": "to open local timeline",
"keyboard_shortcuts.mention": "para mencionar o autor",
+ "keyboard_shortcuts.muted": "to open muted users list",
+ "keyboard_shortcuts.my_profile": "to open your profile",
+ "keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.pinned": "to open pinned toots list",
+ "keyboard_shortcuts.profile": "to open author's profile",
"keyboard_shortcuts.reply": "para responder",
+ "keyboard_shortcuts.requests": "to open follow requests list",
"keyboard_shortcuts.search": "para focar na pesquisa",
+ "keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
"keyboard_shortcuts.toot": "para compor um novo post",
"keyboard_shortcuts.unfocus": "para remover o foco da área de publicação/pesquisa",
@@ -159,8 +183,10 @@
"missing_indicator.label": "Não encontrado",
"missing_indicator.sublabel": "Este recurso não foi encontrado",
"mute_modal.hide_notifications": "Esconder notificações deste utilizador?",
+ "navigation_bar.apps": "Mobile apps",
"navigation_bar.blocks": "Utilizadores bloqueados",
"navigation_bar.community_timeline": "Local",
+ "navigation_bar.compose": "Compose new toot",
"navigation_bar.direct": "Direct messages",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Hidden domains",
@@ -254,6 +280,7 @@
"status.cancel_reblog_private": "Unboost",
"status.cannot_reblog": "Este post não pode ser partilhado",
"status.delete": "Eliminar",
+ "status.detailed_status": "Detailed conversation view",
"status.direct": "Direct message @{name}",
"status.embed": "Incorporar",
"status.favourite": "Adicionar aos favoritos",
@@ -270,6 +297,7 @@
"status.reblog": "Partilhar",
"status.reblog_private": "Boost to original audience",
"status.reblogged_by": "{name} partilhou",
+ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.redraft": "Delete & re-draft",
"status.reply": "Responder",
"status.replyAll": "Responder à conversa",
diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json
new file mode 100644
index 000000000..f3c540f2e
--- /dev/null
+++ b/app/javascript/mastodon/locales/ro.json
@@ -0,0 +1,336 @@
+{
+ "account.badges.bot": "Bot",
+ "account.block": "Blocheaza @{name}",
+ "account.block_domain": "Ascunde tot de la {domain}",
+ "account.blocked": "Blocat",
+ "account.direct": "Mesaj direct @{name}",
+ "account.disclaimer_full": "Informatiile de la jos pot reflecta profilul incomplet al utilizatorului.",
+ "account.domain_blocked": "Domeniu ascuns",
+ "account.edit_profile": "Editeaza profilul",
+ "account.endorse": "Promoveaza pe profil",
+ "account.follow": "Urmareste",
+ "account.followers": "Urmaritori",
+ "account.followers.empty": "Nimeni nu urmareste acest utilizator inca.",
+ "account.follows": "Urmareste",
+ "account.follows.empty": "Acest utilizator nu urmareste pe nimeni inca.",
+ "account.follows_you": "Te urmareste",
+ "account.hide_reblogs": "Ascunde promovarile de la @{name}",
+ "account.media": "Media",
+ "account.mention": "Mentioneaza @{name}",
+ "account.moved_to": "{name} a fost mutat la:",
+ "account.mute": "Opreste @{name}",
+ "account.mute_notifications": "Opreste notificarile de la @{name}",
+ "account.muted": "Oprit",
+ "account.posts": "Postare",
+ "account.posts_with_replies": "Postari si replici",
+ "account.report": "Raporteaza @{name}",
+ "account.requested": "Asteapta aprobare. Apasa pentru a anula cererea de urmarire",
+ "account.share": "Distribuie profilul lui @{name}",
+ "account.show_reblogs": "Arata promovarile de la @{name}",
+ "account.unblock": "Deblocheaza @{name}",
+ "account.unblock_domain": "Arata {domain}",
+ "account.unendorse": "Nu promova pe profil",
+ "account.unfollow": "Nu mai urmari",
+ "account.unmute": "Porneste notificarile @{name}",
+ "account.unmute_notifications": "Porneste notificarile de la @{name}",
+ "account.view_full_profile": "Vezi profilul complet",
+ "alert.unexpected.message": "A aparut o eroare neasteptata.",
+ "alert.unexpected.title": "Hopa!",
+ "boost_modal.combo": "Poti apasa {combo} pentru a sari peste asta data viitoare",
+ "bundle_column_error.body": "Ceva nu a functionat la incarcarea acestui component.",
+ "bundle_column_error.retry": "Incearca din nou",
+ "bundle_column_error.title": "Eoare de retea",
+ "bundle_modal_error.close": "Inchis",
+ "bundle_modal_error.message": "Ceva nu a functionat in timupul incacarii acestui component.",
+ "bundle_modal_error.retry": "Incearca din nou",
+ "column.blocks": "Utilizatori blocati",
+ "column.community": "Fluxul Local",
+ "column.direct": "Mesaje directe",
+ "column.domain_blocks": "Domenii ascunse",
+ "column.favourites": "Favorite",
+ "column.follow_requests": "Cereri de urmarire",
+ "column.home": "Acasa",
+ "column.lists": "Liste",
+ "column.mutes": "Utilizatori opriti",
+ "column.notifications": "Notificari",
+ "column.pins": "Postari fixate",
+ "column.public": "Flux global",
+ "column_back_button.label": "Inapoi",
+ "column_header.hide_settings": "Ascunde setarile",
+ "column_header.moveLeft_settings": "Muta coloana la stanga",
+ "column_header.moveRight_settings": "Muta coloaba la dreapta",
+ "column_header.pin": "Fixeaza",
+ "column_header.show_settings": "Arata setarile",
+ "column_header.unpin": "Elibereaza",
+ "column_subheading.settings": "Setari",
+ "community.column_settings.media_only": "Doar media",
+ "compose_form.direct_message_warning": "Aceasta postare va fi trimisa doar utilizatorilor mentionati.",
+ "compose_form.direct_message_warning_learn_more": "Afla mai multe",
+ "compose_form.hashtag_warning": "Aceasta postare nu va fi listata sub nici un hastag. Doar postarile publice pot fi gasite dupa un hastag.",
+ "compose_form.lock_disclaimer": "Contul tau nu este {locked}. Toata lumea te poate urmari pentru a vedea postarile doar pentru utilizatori.",
+ "compose_form.lock_disclaimer.lock": "blocat",
+ "compose_form.placeholder": "La ce te gandesti?",
+ "compose_form.publish": "Postare",
+ "compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.marked": "Continutul media este marcat ca sensibil",
+ "compose_form.sensitive.unmarked": "Continutul media nu este marcat ca sensibil",
+ "compose_form.spoiler.marked": "Textul este ascuns sub advertizare",
+ "compose_form.spoiler.unmarked": "Textul nu este ascuns",
+ "compose_form.spoiler_placeholder": "Scrie adveritzarea aici",
+ "confirmation_modal.cancel": "Anuleaza",
+ "confirmations.block.confirm": "Blocheaza",
+ "confirmations.block.message": "Esti sigur ca vrei sa blochezi {name}?",
+ "confirmations.delete.confirm": "Sterge",
+ "confirmations.delete.message": "Esti sigur ca vrei sa stergi asta?",
+ "confirmations.delete_list.confirm": "Sterge",
+ "confirmations.delete_list.message": "Esti sigur ca vrei sa stergi permanent aceasta lista?",
+ "confirmations.domain_block.confirm": "Ascunde tot domeniul",
+ "confirmations.domain_block.message": "Esti absolut sigur ca vrei sa blochezi complet {domain}? In cele mai multe cazuti raportarea sau oprirea anumitor lucruri este sufucienta si de preferat. Nu vei mai vedea nici un continut de la acest domeniu in nici un flux public sau in notificarile tale. Urmaritorii tai de la acele domenii vor fi retrasi.",
+ "confirmations.mute.confirm": "Opreste",
+ "confirmations.mute.message": "Esti sigur ca vrei sa opresti {name}?",
+ "confirmations.redraft.confirm": "Strge si salveaza din nou",
+ "confirmations.redraft.message": "Esti sigur ca vrei sa faci asta? Tot ce tine de aceasta postare, inclusiv raspunsurile vor fi deconectate.",
+ "confirmations.unfollow.confirm": "Nu mai urmari",
+ "confirmations.unfollow.message": "Esti sigur ca nu mai vrei sa urmaresti {name}?",
+ "embed.instructions": "Insereaza aceasta postare pe site-ul tau adaugand codul de mai jos.",
+ "embed.preview": "Cam asa va arata:",
+ "emoji_button.activity": "Activitate",
+ "emoji_button.custom": "Personalizat",
+ "emoji_button.flags": "Marcaje",
+ "emoji_button.food": "Mancare si Bauturi",
+ "emoji_button.label": "Insereaza un emoji",
+ "emoji_button.nature": "Natura",
+ "emoji_button.not_found": "Fara emojiuri (╯°□°)╯︵ ┻━┻",
+ "emoji_button.objects": "Obiecte",
+ "emoji_button.people": "Persoane",
+ "emoji_button.recent": "Utilizate frecvent",
+ "emoji_button.search": "Cauta...",
+ "emoji_button.search_results": "Rezultatele cautarii",
+ "emoji_button.symbols": "Simboluri",
+ "emoji_button.travel": "Calatorii si Locuri",
+ "empty_column.blocks": "Nu ai blocat nici un utilizator inca.",
+ "empty_column.community": "Nimic in fluxul local. Scrie ceva public pentru a impinge bila la deal!",
+ "empty_column.direct": "Nu ai nici un mesaj direct inca. Cand trimiti sau primesti unul, vor fi afisare aici.",
+ "empty_column.domain_blocks": "Nu sunt domenii ascunse inca.",
+ "empty_column.favourited_statuses": "Nu ai nici o postare favorita inca. Cand vei avea, vor fi afisare inca.",
+ "empty_column.favourites": "Nimeni nu are inca nici o postare favorita. Cand cineva va adauga la favorite, vor aparea aici.",
+ "empty_column.follow_requests": "Nu ai inca nici o cerete de urmarire. Cand vei primi una, va fi afisata aici.",
+ "empty_column.hashtag": "Acest hastag nu a fost folosit in nici o postare inca.",
+ "empty_column.home": "Fluxul tau este gol. Viziteaza {public} sau fa o cautare pentru a incepe a incepe si a cunoaste alti oameni.",
+ "empty_column.home.public_timeline": "fluxul public",
+ "empty_column.list": "Nu este nimic inca in aceasta lista. Cand membri acestei liste vor incepe sa posteze, va aparea aici.",
+ "empty_column.lists": "Nu ai inca nici o lista. Cand vei crea una, va aparea aici.",
+ "empty_column.mutes": "Nu ai oprit nici un utilizator inca.",
+ "empty_column.notifications": "Nu ai nici o notificare inca. Interactioneaza cu altii pentru a incepe o conversatie.",
+ "empty_column.public": "Nu este nimci aici inca! Scrie ceva public, sau urmareste alti utilizatori din alte medii pentru a porni fluxul",
+ "follow_request.authorize": "Autorizeaza",
+ "follow_request.reject": "Respinge",
+ "getting_started.developers": "Dezvolatori",
+ "getting_started.documentation": "Documentatie",
+ "getting_started.find_friends": "Gaseste prietenii de pe Twitter",
+ "getting_started.heading": "Incepe",
+ "getting_started.invite": "Invita oameni",
+ "getting_started.open_source_notice": "Mastodon este o retea de socializare de tip open source. Poti contribui la dezvoltarea ei sau sa semnalezi erorirle pe GitHub la {github}.",
+ "getting_started.security": "Securitate",
+ "getting_started.terms": "Termenii de Utilizare",
+ "home.column_settings.basic": "De baza",
+ "home.column_settings.show_reblogs": "Arata promovarile",
+ "home.column_settings.show_replies": "Arata raspunsurile",
+ "keyboard_shortcuts.back": "navigheaza inapoi",
+ "keyboard_shortcuts.blocked": "sa deschida lista utilizatorilor blocati",
+ "keyboard_shortcuts.boost": "sa promoveze",
+ "keyboard_shortcuts.column": "sa focuzeze o postare in una dintre coloane",
+ "keyboard_shortcuts.compose": "sa focuzeze zona de compunere",
+ "keyboard_shortcuts.description": "Descriere",
+ "keyboard_shortcuts.direct": "sa deschida coloane de mesaje directe",
+ "keyboard_shortcuts.down": "sa fie mutata jos in lista",
+ "keyboard_shortcuts.enter": "sa deschisa status",
+ "keyboard_shortcuts.favourite": "sa adauge la favorite",
+ "keyboard_shortcuts.favourites": "sa deschida lista cu favorite",
+ "keyboard_shortcuts.federated": "sa deschida fluxul global",
+ "keyboard_shortcuts.heading": "Comenzi din tastature",
+ "keyboard_shortcuts.home": "sa deschida fluxul principal",
+ "keyboard_shortcuts.hotkey": "Prescurtari",
+ "keyboard_shortcuts.legend": "sa afiseze aceasta legenda",
+ "keyboard_shortcuts.local": "sa deschida fluxul local",
+ "keyboard_shortcuts.mention": "sa mentioneze autorul",
+ "keyboard_shortcuts.muted": "sa deschida lista utilizatorilor opriti",
+ "keyboard_shortcuts.my_profile": "sa deschida profilul tau",
+ "keyboard_shortcuts.notifications": "sa deschida coloana cu notificari",
+ "keyboard_shortcuts.pinned": "sa deschida lista postarilor fixate",
+ "keyboard_shortcuts.profile": "sa deschida porfilul autorului",
+ "keyboard_shortcuts.reply": "sa raspunda",
+ "keyboard_shortcuts.requests": "sa deschida lista cu cereri de urmarire",
+ "keyboard_shortcuts.search": "sa focuseze cautarea",
+ "keyboard_shortcuts.start": "sa deschida coloana \"Incepere\"",
+ "keyboard_shortcuts.toggle_hidden": "sa arate/ascunda textul in spatele CW",
+ "keyboard_shortcuts.toot": "sa inceapa o noua postare",
+ "keyboard_shortcuts.unfocus": "sa dezactiveze compunerea/cautarea",
+ "keyboard_shortcuts.up": "sa mute mai sus in lista",
+ "lightbox.close": "Inchide",
+ "lightbox.next": "Urmatorul",
+ "lightbox.previous": "Precedentul",
+ "lists.account.add": "Adauga in lista",
+ "lists.account.remove": "Elimina din lista",
+ "lists.delete": "Sterge lista",
+ "lists.edit": "Editeaza lista",
+ "lists.new.create": "Adauga lista",
+ "lists.new.title_placeholder": "Titlul pentru noua lista",
+ "lists.search": "Cauta printre persoanale pe care le urmaresti",
+ "lists.subheading": "Listele tale",
+ "loading_indicator.label": "Incarcare...",
+ "media_gallery.toggle_visible": "Comutati vizibilitatea",
+ "missing_indicator.label": "Nu a fost gasit",
+ "missing_indicator.sublabel": "Aceasta resursa nu a putut fi gasita",
+ "mute_modal.hide_notifications": "Ascunzi notificarile de la acest utilizator?",
+ "navigation_bar.apps": "Aplicatii mobile",
+ "navigation_bar.blocks": "Utilizatori blocati",
+ "navigation_bar.community_timeline": "Flux local",
+ "navigation_bar.compose": "Compune o noua postare",
+ "navigation_bar.direct": "Mesaje directe",
+ "navigation_bar.discover": "Descopera",
+ "navigation_bar.domain_blocks": "Domenii ascunse",
+ "navigation_bar.edit_profile": "Editeaza profilul",
+ "navigation_bar.favourites": "Favorite",
+ "navigation_bar.filters": "Cuvinte oprite",
+ "navigation_bar.follow_requests": "Cereri de urmarire",
+ "navigation_bar.info": "Despre aceasta instanta",
+ "navigation_bar.keyboard_shortcuts": "Prescurtari",
+ "navigation_bar.lists": "Liste",
+ "navigation_bar.logout": "Deconectare",
+ "navigation_bar.mutes": "Utilizatori opriti",
+ "navigation_bar.personal": "Personal",
+ "navigation_bar.pins": "Postari fixate",
+ "navigation_bar.preferences": "Preferinte",
+ "navigation_bar.public_timeline": "Flux global",
+ "navigation_bar.security": "Securitate",
+ "notification.favourite": "{name} a adaugat statusul tau la favorite",
+ "notification.follow": "{name} te urmareste",
+ "notification.mention": "{name} te-a mentionat",
+ "notification.reblog": "{name} a redistribuit postarea ta",
+ "notifications.clear": "Sterge notificarile",
+ "notifications.clear_confirmation": "Esti sigur ca vrei sa stergi toate notificarile?",
+ "notifications.column_settings.alert": "Notificari desktop",
+ "notifications.column_settings.favourite": "Favorite:",
+ "notifications.column_settings.follow": "Noi urmaritori:",
+ "notifications.column_settings.mention": "Mentiuni:",
+ "notifications.column_settings.push": "Notificari push",
+ "notifications.column_settings.push_meta": "Acest dispozitiv",
+ "notifications.column_settings.reblog": "Redistribuite:",
+ "notifications.column_settings.show": "Arata in coloana",
+ "notifications.column_settings.sound": "Reda sunet",
+ "notifications.group": "{count} notificari",
+ "onboarding.done": "Gata",
+ "onboarding.next": "Urmatorul",
+ "onboarding.page_five.public_timelines": "Fluxul local afiseaza postarile publice de la toti utilizatorii pe {domain}. Fluxul global afiseaza postarile publice de la toti utilizatorii din reteaua mastodon pe care utilizatorii de pe {domain} ii urmaresc. Acestea sunt fluxurile publice, un mod grozav de a descoperi oameni noi.",
+ "onboarding.page_four.home": "Fluxul Acasa arata postarile celor pe care ii urmaresti.",
+ "onboarding.page_four.notifications": "Coloana de notificari arata cand cineva interactioneaza cu tine.",
+ "onboarding.page_one.federation": "Mastodon este o retea independenta de servere care impreuna formeaza o imensa retea de socializare. Noi numim aceste servere istante.",
+ "onboarding.page_one.full_handle": "Id-ul tau complet",
+ "onboarding.page_one.handle_hint": "Aceasta este ceea ce trebuie sa le spuneti prietenilor cand vor sa va caute.",
+ "onboarding.page_one.welcome": "Bun venit la Mastodon!",
+ "onboarding.page_six.admin": "Administatorul acestei instante este {admin}.",
+ "onboarding.page_six.almost_done": "Aproape gata...",
+ "onboarding.page_six.appetoot": "Distractie placuta!",
+ "onboarding.page_six.apps_available": "Acestea sunt {apps} disponibile pentru iOS, Android si alte platforme.",
+ "onboarding.page_six.github": "Mastodon este un software de tip open source. Poti raporta erori, cere facilitati, sau sa contribuiti pe {github}.",
+ "onboarding.page_six.guidelines": "instructiunile comunitatii",
+ "onboarding.page_six.read_guidelines": "Va rugam cititi {domain} {guidelines}!",
+ "onboarding.page_six.various_app": "aplicatii mobile",
+ "onboarding.page_three.profile": "Editeaza poriflul pentru a schimba avatarul, bio si numele. Tot acolo vei gasi si alte preferinte.",
+ "onboarding.page_three.search": "Utilizeaza bara de cautare pentru a gasi oameni sau hastaguri precum {illustration} si {introductions}. Pentru a gasi o persoana care nu este inscrisa pe aceasta instanta foloseste id-ul lor complet.",
+ "onboarding.page_two.compose": "Scrie postari din coloana pentru compunere. Poti incarca imagini, schimba setarile de confidentialitate, si adauga advertisemente asupra continutului cu ajutorul iconitelor.",
+ "onboarding.skip": "Omite",
+ "privacy.change": "Ajusteaza confidentialitatea statusului",
+ "privacy.direct.long": "Posteaza doar pentru utilizatorii mentionati",
+ "privacy.direct.short": "Direct",
+ "privacy.private.long": "Posteaza doar pentru urmaritori",
+ "privacy.private.short": "Doar urmaritori",
+ "privacy.public.long": "Posteaza in fluxul public",
+ "privacy.public.short": "Public",
+ "privacy.unlisted.long": "Nu afisa in fluxul public",
+ "privacy.unlisted.short": "Nelistat",
+ "regeneration_indicator.label": "Incarcare…",
+ "regeneration_indicator.sublabel": "Fluxul tau este in preparare!",
+ "relative_time.days": "{number}z",
+ "relative_time.hours": "{number}h",
+ "relative_time.just_now": "acum",
+ "relative_time.minutes": "{number}l",
+ "relative_time.seconds": "{number}s",
+ "reply_indicator.cancel": "Anuleaza",
+ "report.forward": "Redirectioneaza catre {target}",
+ "report.forward_hint": "Acest cont este de pe un alt server. Trimitem o copie anonima a raportului si acolo?",
+ "report.hint": "Sesizarea va fi trimsa catre moderatorii acestei instante. Poti oferi o explicatie pentru aceasta sesizare mai jos:",
+ "report.placeholder": "Comentarii optionale",
+ "report.submit": "Trimite",
+ "report.target": "Raporteaza {target}",
+ "search.placeholder": "Cauta",
+ "search_popout.search_format": "Formate pentru cautare avansata",
+ "search_popout.tips.full_text": "Textele simple returneaza statusuri pe care le-ai scris, favorizat, redistribuit, sau in care au fost mentionate, deasmenea si utilizatorii sau hastagurile care se potrivesc.",
+ "search_popout.tips.hashtag": "hashtag",
+ "search_popout.tips.status": "status",
+ "search_popout.tips.text": "Textele simple returneaza numele, numele de utilizarori si hastagurile care se potrivesc",
+ "search_popout.tips.user": "utilizator",
+ "search_results.accounts": "Oameni",
+ "search_results.hashtags": "Hashtaguri",
+ "search_results.statuses": "Postari",
+ "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
+ "standalone.public_title": "O privire in interior...",
+ "status.block": "Blocheaza @{name}",
+ "status.cancel_reblog_private": "Nedistribuit",
+ "status.cannot_reblog": "Aceasta postare nu poate fi redistribuita",
+ "status.delete": "Sterge",
+ "status.detailed_status": "Conversatia detailata",
+ "status.direct": "Mesaj direct @{name}",
+ "status.embed": "Incorporare",
+ "status.favourite": "Favorite",
+ "status.filtered": "Sortate",
+ "status.load_more": "Incarca mai multe",
+ "status.media_hidden": "Media ascunsa",
+ "status.mention": "Mentioneaza @{name}",
+ "status.more": "Mai mult",
+ "status.mute": "Opreste @{name}",
+ "status.mute_conversation": "Opreste conversatia",
+ "status.open": "Extinde acest status",
+ "status.pin": "Fixeaza pe profil",
+ "status.pinned": "Postare fixata",
+ "status.reblog": "Redistribuie",
+ "status.reblog_private": "Redistribuie la audienta originala",
+ "status.reblogged_by": "{name} redistribuit",
+ "status.reblogs.empty": "Nimeni nu a redistribuit aceasta postare inca. Cand cineva o va face, va aparea aici.",
+ "status.redraft": "Sterge si adauga la ciorne",
+ "status.reply": "Raspunde",
+ "status.replyAll": "Raspunde la topic",
+ "status.report": "Raporteaza @{name}",
+ "status.sensitive_toggle": "Afiseaza",
+ "status.sensitive_warning": "Continut sensibil",
+ "status.share": "Distribuie",
+ "status.show_less": "Arata mai putin",
+ "status.show_less_all": "Arata mai putin pentru toti",
+ "status.show_more": "Arata mai mult",
+ "status.show_more_all": "Arata mai mult pentru toti",
+ "status.unmute_conversation": "Reporneste conversatia",
+ "status.unpin": "Elibereaza din profil",
+ "tabs_bar.federated_timeline": "Global",
+ "tabs_bar.home": "Acasa",
+ "tabs_bar.local_timeline": "Local",
+ "tabs_bar.notifications": "Notificari",
+ "tabs_bar.search": "Cautare",
+ "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} vorbesc",
+ "ui.beforeunload": "Ciorna se va priede daca parasesti pagina.",
+ "upload_area.title": "Trage si elibereaza pentru a incarca",
+ "upload_button.label": "Adauga media (JPEG, PNG, GIF, WebM, MP4, MOV)",
+ "upload_form.description": "Adauga o descriere pentru persoanele cu deficiente de vedere",
+ "upload_form.focus": "Taie",
+ "upload_form.undo": "Sterge",
+ "upload_progress.label": "Se Incarca...",
+ "video.close": "Inchide video",
+ "video.exit_fullscreen": "Inchide",
+ "video.expand": "Extinde video",
+ "video.fullscreen": "Ecran intreg",
+ "video.hide": "Ascunde video",
+ "video.mute": "Opreste sonorul",
+ "video.pause": "Pauza",
+ "video.play": "Redare",
+ "video.unmute": "Reporneste sunetul"
+}
diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json
index ecde3fb2c..83cbb5240 100644
--- a/app/javascript/mastodon/locales/ru.json
+++ b/app/javascript/mastodon/locales/ru.json
@@ -7,25 +7,29 @@
"account.disclaimer_full": "Нижеуказанная информация может не полностью отражать профиль пользователя.",
"account.domain_blocked": "Домен скрыт",
"account.edit_profile": "Изменить профиль",
+ "account.endorse": "Рекомендовать в профиле",
"account.follow": "Подписаться",
"account.followers": "Подписаны",
+ "account.followers.empty": "Никто не подписан на этого пользователя.",
"account.follows": "Подписки",
+ "account.follows.empty": "Этот пользователь ни на кого не подписан.",
"account.follows_you": "Подписан(а) на Вас",
"account.hide_reblogs": "Скрыть продвижения от @{name}",
- "account.media": "Медиаконтент",
+ "account.media": "Медиа",
"account.mention": "Упомянуть",
"account.moved_to": "Ищите {name} здесь:",
"account.mute": "Заглушить",
"account.mute_notifications": "Скрыть уведомления от @{name}",
"account.muted": "Приглушён",
"account.posts": "Посты",
- "account.posts_with_replies": "Посты с ответами",
+ "account.posts_with_replies": "Посты и ответы",
"account.report": "Пожаловаться",
"account.requested": "Ожидает подтверждения",
"account.share": "Поделиться профилем @{name}",
"account.show_reblogs": "Показывать продвижения от @{name}",
"account.unblock": "Разблокировать",
"account.unblock_domain": "Разблокировать {domain}",
+ "account.unendorse": "Не рекомендовать в профиле",
"account.unfollow": "Отписаться",
"account.unmute": "Снять глушение",
"account.unmute_notifications": "Показывать уведомления от @{name}",
@@ -59,9 +63,9 @@
"column_header.show_settings": "Показать настройки",
"column_header.unpin": "Открепить",
"column_subheading.settings": "Настройки",
- "community.column_settings.media_only": "Media Only",
+ "community.column_settings.media_only": "Только медиа",
"compose_form.direct_message_warning": "Этот статус будет виден только упомянутым пользователям.",
- "compose_form.direct_message_warning_learn_more": "Learn more",
+ "compose_form.direct_message_warning_learn_more": "Узнать больше",
"compose_form.hashtag_warning": "Этот пост не будет показывается в поиске по хэштегу, т.к. он непубличный. Только публичные посты можно найти в поиске по хэштегу.",
"compose_form.lock_disclaimer": "Ваш аккаунт не {locked}. Любой человек может подписаться на Вас и просматривать посты для подписчиков.",
"compose_form.lock_disclaimer.lock": "закрыт",
@@ -84,8 +88,8 @@
"confirmations.domain_block.message": "Вы на самом деле уверены, что хотите блокировать весь {domain}? В большинстве случаев нескольких отдельных блокировок или глушений достаточно.",
"confirmations.mute.confirm": "Заглушить",
"confirmations.mute.message": "Вы уверены, что хотите заглушить {name}?",
- "confirmations.redraft.confirm": "Delete & redraft",
- "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
+ "confirmations.redraft.confirm": "Удалить и исправить",
+ "confirmations.redraft.message": "Вы уверены, что хотите удалить этот статус и превратить в черновик? Вы потеряете все ответы, продвижения и отметки 'нравится' к нему.",
"confirmations.unfollow.confirm": "Отписаться",
"confirmations.unfollow.message": "Вы уверены, что хотите отписаться от {name}?",
"embed.instructions": "Встройте этот статус на Вашем сайте, скопировав код внизу.",
@@ -104,41 +108,61 @@
"emoji_button.search_results": "Результаты поиска",
"emoji_button.symbols": "Символы",
"emoji_button.travel": "Путешествия",
+ "empty_column.blocks": "Вы ещё никого не заблокировали.",
"empty_column.community": "Локальная лента пуста. Напишите что-нибудь, чтобы разогреть народ!",
"empty_column.direct": "У Вас пока нет личных сообщений. Когда Вы начнёте их отправлять или получать, они появятся здесь.",
+ "empty_column.domain_blocks": "Скрытых доменов пока нет.",
+ "empty_column.favourited_statuses": "Вы не добавили ни одного статуса в 'Избранное'. Как только Вы это сделаете, они появятся здесь.",
+ "empty_column.favourites": "Никто ещё не добавил этот статус в 'Избранное'. Как только кто-то это сделает, они появятся здесь.",
+ "empty_column.follow_requests": "Вам ещё не приходили запросы на подписку. Все новые запросы будут показаны здесь.",
"empty_column.hashtag": "Статусов с таким хэштегом еще не существует.",
"empty_column.home": "Пока Вы ни на кого не подписаны. Полистайте {public} или используйте поиск, чтобы освоиться и завести новые знакомства.",
"empty_column.home.public_timeline": "публичные ленты",
"empty_column.list": "В этом списке пока ничего нет.",
+ "empty_column.lists": "У Вас ещё нет списков. Все созданные Вами списки будут показаны здесь.",
+ "empty_column.mutes": "Вы ещё никого не заглушили.",
"empty_column.notifications": "У Вас еще нет уведомлений. Заведите знакомство с другими пользователями, чтобы начать разговор.",
"empty_column.public": "Здесь ничего нет! Опубликуйте что-нибудь или подпишитесь на пользователей с других узлов, чтобы заполнить ленту.",
"follow_request.authorize": "Авторизовать",
"follow_request.reject": "Отказать",
- "getting_started.developers": "Developers",
- "getting_started.documentation": "Documentation",
- "getting_started.find_friends": "Find friends from Twitter",
+ "getting_started.developers": "Для разработчиков",
+ "getting_started.documentation": "Документация",
+ "getting_started.find_friends": "Найти друзей из Twitter",
"getting_started.heading": "Добро пожаловать",
- "getting_started.invite": "Invite people",
- "getting_started.open_source_notice": "Mastodon - программа с открытым исходным кодом. Вы можете помочь проекту или сообщить о проблемах на GitHub по адресу {github}.",
- "getting_started.security": "Security",
- "getting_started.terms": "Terms of service",
+ "getting_started.invite": "Пригласить людей",
+ "getting_started.open_source_notice": "Mastodon - сервис с открытым исходным кодом. Вы можете помочь проекту или сообщить о проблемах на GitHub по адресу {github}.",
+ "getting_started.security": "Безопасность",
+ "getting_started.terms": "Условия использования",
"home.column_settings.basic": "Основные",
"home.column_settings.show_reblogs": "Показывать продвижения",
"home.column_settings.show_replies": "Показывать ответы",
"keyboard_shortcuts.back": "перейти назад",
+ "keyboard_shortcuts.blocked": "чтобы открыть список заблокированных",
"keyboard_shortcuts.boost": "продвинуть пост",
"keyboard_shortcuts.column": "фокус на одном из столбцов",
"keyboard_shortcuts.compose": "фокус на поле ввода",
"keyboard_shortcuts.description": "Описание",
+ "keyboard_shortcuts.direct": "чтобы показать колонку личных сообщений",
"keyboard_shortcuts.down": "вниз по списку",
"keyboard_shortcuts.enter": "развернуть пост",
"keyboard_shortcuts.favourite": "в избранное",
+ "keyboard_shortcuts.favourites": "открыть 'Избранное'",
+ "keyboard_shortcuts.federated": "перейти к глобальной ленте",
"keyboard_shortcuts.heading": "Сочетания клавиш",
+ "keyboard_shortcuts.home": "перейти к домашней ленте",
"keyboard_shortcuts.hotkey": "Гор. клавиша",
"keyboard_shortcuts.legend": "показать это окно",
+ "keyboard_shortcuts.local": "перейти к локальной ленте",
"keyboard_shortcuts.mention": "упомянуть автора поста",
+ "keyboard_shortcuts.muted": "открыть список заглушённых",
+ "keyboard_shortcuts.my_profile": "перейти к своему профилю",
+ "keyboard_shortcuts.notifications": "перейти к уведомлениям",
+ "keyboard_shortcuts.pinned": "перейти к закреплённым статусам",
+ "keyboard_shortcuts.profile": "перейти к профилю автора",
"keyboard_shortcuts.reply": "ответить",
+ "keyboard_shortcuts.requests": "перейти к запросам на подписку",
"keyboard_shortcuts.search": "перейти к поиску",
+ "keyboard_shortcuts.start": "перейти к разделу \"добро пожаловать\"",
"keyboard_shortcuts.toggle_hidden": "показать/скрыть текст за предупреждением",
"keyboard_shortcuts.toot": "начать писать новый пост",
"keyboard_shortcuts.unfocus": "убрать фокус с поля ввода/поиска",
@@ -159,25 +183,27 @@
"missing_indicator.label": "Не найдено",
"missing_indicator.sublabel": "Запрашиваемый ресурс не найден",
"mute_modal.hide_notifications": "Убрать уведомления от этого пользователя?",
+ "navigation_bar.apps": "Mobile apps",
"navigation_bar.blocks": "Список блокировки",
"navigation_bar.community_timeline": "Локальная лента",
+ "navigation_bar.compose": "Создать новый статус",
"navigation_bar.direct": "Личные сообщения",
- "navigation_bar.discover": "Discover",
+ "navigation_bar.discover": "Изучайте",
"navigation_bar.domain_blocks": "Скрытые домены",
"navigation_bar.edit_profile": "Изменить профиль",
"navigation_bar.favourites": "Понравившееся",
- "navigation_bar.filters": "Muted words",
+ "navigation_bar.filters": "Заглушенные слова",
"navigation_bar.follow_requests": "Запросы на подписку",
"navigation_bar.info": "Об узле",
"navigation_bar.keyboard_shortcuts": "Сочетания клавиш",
"navigation_bar.lists": "Списки",
"navigation_bar.logout": "Выйти",
"navigation_bar.mutes": "Список глушения",
- "navigation_bar.personal": "Personal",
+ "navigation_bar.personal": "Личное",
"navigation_bar.pins": "Закреплённые посты",
"navigation_bar.preferences": "Опции",
"navigation_bar.public_timeline": "Глобальная лента",
- "navigation_bar.security": "Security",
+ "navigation_bar.security": "Безопасность",
"notification.favourite": "{name} понравился Ваш статус",
"notification.follow": "{name} подписался(-лась) на Вас",
"notification.mention": "{name} упомянул(а) Вас",
@@ -193,7 +219,7 @@
"notifications.column_settings.reblog": "Продвижения:",
"notifications.column_settings.show": "Показывать в колонке",
"notifications.column_settings.sound": "Проигрывать звук",
- "notifications.group": "{count} notifications",
+ "notifications.group": "{count} уведомл.",
"onboarding.done": "Готово",
"onboarding.next": "Далее",
"onboarding.page_five.public_timelines": "Локальная лента показывает публичные посты всех пользователей {domain}. Глобальная лента показывает публичные посты всех людей, на которых подписаны пользователи {domain}. Это - публичные ленты, отличный способ найти новые знакомства.",
@@ -254,12 +280,13 @@
"status.cancel_reblog_private": "Не продвигать",
"status.cannot_reblog": "Этот статус не может быть продвинут",
"status.delete": "Удалить",
+ "status.detailed_status": "Подробный просмотр обсуждения",
"status.direct": "Написать @{name}",
"status.embed": "Встроить",
"status.favourite": "Нравится",
- "status.filtered": "Filtered",
+ "status.filtered": "Отфильтровано",
"status.load_more": "Показать еще",
- "status.media_hidden": "Медиаконтент скрыт",
+ "status.media_hidden": "Медиа скрыто",
"status.mention": "Упомянуть @{name}",
"status.more": "Больше",
"status.mute": "Заглушить @{name}",
@@ -270,7 +297,8 @@
"status.reblog": "Продвинуть",
"status.reblog_private": "Продвинуть для своей аудитории",
"status.reblogged_by": "{name} продвинул(а)",
- "status.redraft": "Delete & re-draft",
+ "status.reblogs.empty": "Никто ещё не продвинул этот статус. Как только кто-то это сделает, они появятся здесь.",
+ "status.redraft": "Удалить и исправить",
"status.reply": "Ответить",
"status.replyAll": "Ответить на тред",
"status.report": "Пожаловаться",
@@ -288,7 +316,7 @@
"tabs_bar.local_timeline": "Локальная",
"tabs_bar.notifications": "Уведомления",
"tabs_bar.search": "Поиск",
- "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
+ "trends.count_by_accounts": "Популярно у {count} {rawCount, plural, one {человека} few {человек} many {человек} other {человек}}",
"ui.beforeunload": "Ваш черновик будет утерян, если вы покинете Mastodon.",
"upload_area.title": "Перетащите сюда, чтобы загрузить",
"upload_button.label": "Добавить медиаконтент",
diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json
index 47271f98f..edfd69a25 100644
--- a/app/javascript/mastodon/locales/sk.json
+++ b/app/javascript/mastodon/locales/sk.json
@@ -7,9 +7,12 @@
"account.disclaimer_full": "Inofrmácie uvedené nižšie nemusia byť úplným odrazom uživateľovho účtu.",
"account.domain_blocked": "Doména ukrytá",
"account.edit_profile": "Upraviť profil",
- "account.follow": "Následovať",
+ "account.endorse": "Zobrazuj na profile",
+ "account.follow": "Následuj",
"account.followers": "Sledujúci",
+ "account.followers.empty": "Tohto užívateľa ešte nikto nenásleduje.",
"account.follows": "Následuje",
+ "account.follows.empty": "Tento užívateľ ešte nikoho nenásleduje.",
"account.follows_you": "Následuje ťa",
"account.hide_reblogs": "Skryť povýšenia od @{name}",
"account.media": "Médiá",
@@ -26,6 +29,7 @@
"account.show_reblogs": "Ukáž povýšenia od @{name}",
"account.unblock": "Odblokovať @{name}",
"account.unblock_domain": "Prestať blokovať {domain}",
+ "account.unendorse": "Nezobrazuj na profile",
"account.unfollow": "Prestať nasledovať",
"account.unmute": "Prestať ignorovať @{name}",
"account.unmute_notifications": "Odtĺmiť notifikácie od @{name}",
@@ -85,7 +89,7 @@
"confirmations.mute.confirm": "Ignoruj",
"confirmations.mute.message": "Naozaj chcete ignorovať {name}?",
"confirmations.redraft.confirm": "Vyčistiť a prepísať",
- "confirmations.redraft.message": "Si si istý/á, že chceš vymazať a prepísať tento príspevok? Stratíš všetky jeho nadobudnuté odpovede, povýšenia a obľúbenia.",
+ "confirmations.redraft.message": "Si si istý/á, že chceš vymazať a prepísať tento príspevok? Jeho nadobudnuté odpovede, povýšenia a obľúbenia, ale i odpovede na pôvodný príspevok budú odlúčené.",
"confirmations.unfollow.confirm": "Nesledovať",
"confirmations.unfollow.message": "Naozaj chcete prestať sledovať {name}?",
"embed.instructions": "Umiestni kód uvedený nižšie pre pridanie tohto statusu na tvoju web stránku.",
@@ -104,12 +108,19 @@
"emoji_button.search_results": "Nájdené",
"emoji_button.symbols": "Symboly",
"emoji_button.travel": "Cestovanie a miesta",
+ "empty_column.blocks": "Ešte si nikoho nezablokoval/a.",
"empty_column.community": "Lokálna časová os je prázdna. Napíšte niečo, aby sa to tu začalo hýbať!",
"empty_column.direct": "Ešte nemáš žiadne súkromné správy. Keď nejakú pošleš, alebo dostaneš, ukáže sa tu.",
+ "empty_column.domain_blocks": "There are no hidden domains yet.",
+ "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
+ "empty_column.favourites": "Tento toot si ešte nikto neobľúbil. Ten kto si ho obľúbi, bude zobrazený tu.",
+ "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
"empty_column.hashtag": "Pod týmto hashtagom sa ešte nič nenachádza.",
"empty_column.home": "Tvoja lokálna osa je zatiaľ prázdna! Pre začiatok navštív {public}, alebo použi vyhľadávanie a nájdi tak aj iných užívateľov.",
"empty_column.home.public_timeline": "verejná časová os",
"empty_column.list": "Tento zoznam je ešte prázdny. Keď ale členovia tohoto zoznamu napíšu nové správy, tak tie sa objavia priamo tu.",
+ "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
+ "empty_column.mutes": "You haven't muted any users yet.",
"empty_column.notifications": "Nemáš ešte žiadne oznámenia. Zapoj sa s niekym do debaty a komunikuj s ostatnými aby diskusia mohla začať.",
"empty_column.public": "Ešte tu nič nie je. Napíš niečo verejne alebo začnite sledovať užívateľov z iných Mastodon serverov, aby tu tak niečo pribudlo",
"follow_request.authorize": "Povoľ prístup",
@@ -126,19 +137,32 @@
"home.column_settings.show_reblogs": "Zobraziť povýšené",
"home.column_settings.show_replies": "Ukázať odpovede",
"keyboard_shortcuts.back": "dostať sa naspäť",
+ "keyboard_shortcuts.blocked": "to open blocked users list",
"keyboard_shortcuts.boost": "vyzdvihnúť",
"keyboard_shortcuts.column": "zamerať sa na status v jednom zo stĺpcov",
"keyboard_shortcuts.compose": "zamerať sa na písaciu plochu",
"keyboard_shortcuts.description": "Popis",
+ "keyboard_shortcuts.direct": "to open direct messages column",
"keyboard_shortcuts.down": "posunúť sa dole v zozname",
"keyboard_shortcuts.enter": "otvoriť správu",
"keyboard_shortcuts.favourite": "pridať do obľúbených",
+ "keyboard_shortcuts.favourites": "to open favourites list",
+ "keyboard_shortcuts.federated": "to open federated timeline",
"keyboard_shortcuts.heading": "Klávesové skratky",
+ "keyboard_shortcuts.home": "to open home timeline",
"keyboard_shortcuts.hotkey": "Klávesa",
"keyboard_shortcuts.legend": "zobraziť túto legendu",
+ "keyboard_shortcuts.local": "to open local timeline",
"keyboard_shortcuts.mention": "spomenúť autora",
+ "keyboard_shortcuts.muted": "to open muted users list",
+ "keyboard_shortcuts.my_profile": "to open your profile",
+ "keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.pinned": "to open pinned toots list",
+ "keyboard_shortcuts.profile": "to open author's profile",
"keyboard_shortcuts.reply": "odpovedať",
+ "keyboard_shortcuts.requests": "to open follow requests list",
"keyboard_shortcuts.search": "zamerať sa na vyhľadávanie",
+ "keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "ukáž/skry text za CW",
"keyboard_shortcuts.toot": "začať úplne novú hlášku",
"keyboard_shortcuts.unfocus": "nesústrediť sa na písaciu plochu, alebo hľadanie",
@@ -159,14 +183,16 @@
"missing_indicator.label": "Nenájdené",
"missing_indicator.sublabel": "Tento zdroj sa nepodarilo nájsť",
"mute_modal.hide_notifications": "Skryť notifikácie od tohoto užívateľa?",
+ "navigation_bar.apps": "Mobile apps",
"navigation_bar.blocks": "Blokovaní užívatelia",
"navigation_bar.community_timeline": "Lokálna časová os",
+ "navigation_bar.compose": "Compose new toot",
"navigation_bar.direct": "Súkromné správy",
"navigation_bar.discover": "Objavuj",
"navigation_bar.domain_blocks": "Skryté domény",
"navigation_bar.edit_profile": "Upraviť profil",
"navigation_bar.favourites": "Obľúbené",
- "navigation_bar.filters": "Muted words",
+ "navigation_bar.filters": "Utĺmené slová",
"navigation_bar.follow_requests": "Žiadosti o sledovanie",
"navigation_bar.info": "O tomto Mastodon serveri",
"navigation_bar.keyboard_shortcuts": "Klávesové skratky",
@@ -254,10 +280,11 @@
"status.cancel_reblog_private": "Nezdieľaj",
"status.cannot_reblog": "Tento príspevok nemôže byť re-tootnutý",
"status.delete": "Zmazať",
+ "status.detailed_status": "Detailed conversation view",
"status.direct": "Súkromná správa @{name}",
"status.embed": "Vložiť",
"status.favourite": "Páči sa mi",
- "status.filtered": "Filtered",
+ "status.filtered": "Filtrované",
"status.load_more": "Ukáž viac",
"status.media_hidden": "Skryté médiá",
"status.mention": "Spomeň @{name}",
@@ -270,6 +297,7 @@
"status.reblog": "Povýšiť",
"status.reblog_private": "Povýš k pôvodnému publiku",
"status.reblogged_by": "{name} povýšil/a",
+ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.redraft": "Vymaž a prepíš",
"status.reply": "Odpovedať",
"status.replyAll": "Odpovedať na diskusiu",
@@ -291,7 +319,7 @@
"trends.count_by_accounts": "{count} {rawCount, viacerí, jeden {person} iní {people}} diskutujú",
"ui.beforeunload": "Čo máš rozpísané sa stratí, ak opustíš Mastodon.",
"upload_area.title": "Pretiahni a pusť pre nahratie",
- "upload_button.label": "Pridať médiá",
+ "upload_button.label": "Pridať médiálny súbor (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_form.description": "Opis pre slabo vidiacich",
"upload_form.focus": "Vystrihni",
"upload_form.undo": "Vymaž",
diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json
index 73f31e8cf..8f6c2e3d5 100644
--- a/app/javascript/mastodon/locales/sl.json
+++ b/app/javascript/mastodon/locales/sl.json
@@ -7,9 +7,12 @@
"account.disclaimer_full": "Spodnje informacije lahko nepopolno prikazujejo profil uporabnika.",
"account.domain_blocked": "Skrita domena",
"account.edit_profile": "Uredi profil",
+ "account.endorse": "Feature on profile",
"account.follow": "Sledi",
"account.followers": "Sledilci",
+ "account.followers.empty": "No one follows this user yet.",
"account.follows": "Sledi",
+ "account.follows.empty": "This user doesn't follow anyone yet.",
"account.follows_you": "Ti sledi",
"account.hide_reblogs": "Skrij napuhke od @{name}",
"account.media": "Mediji",
@@ -26,6 +29,7 @@
"account.show_reblogs": "Pokaži delitve osebe @{name}",
"account.unblock": "Odblokiraj @{name}",
"account.unblock_domain": "Razkrij {domain}",
+ "account.unendorse": "Don't feature on profile",
"account.unfollow": "Prenehaj slediti",
"account.unmute": "Odtišaj @{name}",
"account.unmute_notifications": "Vklopi obvestila od @{name}",
@@ -104,12 +108,19 @@
"emoji_button.search_results": "Rezultati iskanja",
"emoji_button.symbols": "Simboli",
"emoji_button.travel": "Potovanja in Kraji",
+ "empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "Lokalna časovnica je prazna. Napišite nekaj javnega, da se bo žoga zakotalila!",
"empty_column.direct": "Nimate še nobenih neposrednih sporočil. Ko ga pošljete ali prejmete, se prikaže tukaj.",
+ "empty_column.domain_blocks": "There are no hidden domains yet.",
+ "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
+ "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
+ "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
"empty_column.hashtag": "V tem hashtagu še ni nič.",
"empty_column.home": "Vaša domača časovnica je prazna! Obiščite {public} ali uporabite iskanje, da se boste srečali druge uporabnike.",
"empty_column.home.public_timeline": "javna časovnica",
"empty_column.list": "Na tem seznamu ni ničesar. Ko bodo člani tega seznama objavili nove statuse, se bodo pojavili tukaj.",
+ "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
+ "empty_column.mutes": "You haven't muted any users yet.",
"empty_column.notifications": "Nimate še nobenih obvestil. Poveži se z drugimi, da začnete pogovor.",
"empty_column.public": "Tukaj ni ničesar! Da ga napolnite, napišite nekaj javnega ali pa ročno sledite uporabnikom iz drugih vozlišč",
"follow_request.authorize": "Odobri",
@@ -126,19 +137,32 @@
"home.column_settings.show_reblogs": "Pokaži sunke",
"home.column_settings.show_replies": "Pokaži odgovore",
"keyboard_shortcuts.back": "za krmarjenje nazaj",
+ "keyboard_shortcuts.blocked": "to open blocked users list",
"keyboard_shortcuts.boost": "suniti",
"keyboard_shortcuts.column": "osredotočiti status v enega od stolpcev",
"keyboard_shortcuts.compose": "osredotočiti na sestavljanje besedila",
"keyboard_shortcuts.description": "Opis",
+ "keyboard_shortcuts.direct": "to open direct messages column",
"keyboard_shortcuts.down": "premakniti navzdol po seznamu",
"keyboard_shortcuts.enter": "odpreti status",
"keyboard_shortcuts.favourite": "to favourite",
+ "keyboard_shortcuts.favourites": "to open favourites list",
+ "keyboard_shortcuts.federated": "to open federated timeline",
"keyboard_shortcuts.heading": "Tipkovne bližnjice",
+ "keyboard_shortcuts.home": "to open home timeline",
"keyboard_shortcuts.hotkey": "Hitra tipka",
"keyboard_shortcuts.legend": "to display this legend",
+ "keyboard_shortcuts.local": "to open local timeline",
"keyboard_shortcuts.mention": "to mention author",
+ "keyboard_shortcuts.muted": "to open muted users list",
+ "keyboard_shortcuts.my_profile": "to open your profile",
+ "keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.pinned": "to open pinned toots list",
+ "keyboard_shortcuts.profile": "to open author's profile",
"keyboard_shortcuts.reply": "to reply",
+ "keyboard_shortcuts.requests": "to open follow requests list",
"keyboard_shortcuts.search": "to focus search",
+ "keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
"keyboard_shortcuts.toot": "da začnete povsem nov tut",
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
@@ -159,8 +183,10 @@
"missing_indicator.label": "Not found",
"missing_indicator.sublabel": "This resource could not be found",
"mute_modal.hide_notifications": "Hide notifications from this user?",
+ "navigation_bar.apps": "Mobile apps",
"navigation_bar.blocks": "Blocked users",
"navigation_bar.community_timeline": "Local timeline",
+ "navigation_bar.compose": "Compose new toot",
"navigation_bar.direct": "Direct messages",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Hidden domains",
@@ -254,6 +280,7 @@
"status.cancel_reblog_private": "Unboost",
"status.cannot_reblog": "This post cannot be boosted",
"status.delete": "Delete",
+ "status.detailed_status": "Detailed conversation view",
"status.direct": "Direct message @{name}",
"status.embed": "Embed",
"status.favourite": "Favourite",
@@ -270,6 +297,7 @@
"status.reblog": "Suni",
"status.reblog_private": "Suni v prvotno občinstvo",
"status.reblogged_by": "{name} sunjen",
+ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.redraft": "Delete & re-draft",
"status.reply": "Odgovori",
"status.replyAll": "Odgovori na objavo",
diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json
index e3bf2189b..0f56f642a 100644
--- a/app/javascript/mastodon/locales/sr-Latn.json
+++ b/app/javascript/mastodon/locales/sr-Latn.json
@@ -7,9 +7,12 @@
"account.disclaimer_full": "Navedene informacije možda ne odslikavaju korisnički profil u potpunosti.",
"account.domain_blocked": "Domain hidden",
"account.edit_profile": "Izmeni profil",
+ "account.endorse": "Feature on profile",
"account.follow": "Zaprati",
"account.followers": "Pratioca",
+ "account.followers.empty": "No one follows this user yet.",
"account.follows": "Prati",
+ "account.follows.empty": "This user doesn't follow anyone yet.",
"account.follows_you": "Prati Vas",
"account.hide_reblogs": "Sakrij podrške koje daje korisnika @{name}",
"account.media": "Mediji",
@@ -26,6 +29,7 @@
"account.show_reblogs": "Prikaži podrške od korisnika @{name}",
"account.unblock": "Odblokiraj korisnika @{name}",
"account.unblock_domain": "Odblokiraj domen {domain}",
+ "account.unendorse": "Don't feature on profile",
"account.unfollow": "Otprati",
"account.unmute": "Ukloni ućutkavanje korisniku @{name}",
"account.unmute_notifications": "Uključi nazad obaveštenja od korisnika @{name}",
@@ -104,12 +108,19 @@
"emoji_button.search_results": "Rezultati pretrage",
"emoji_button.symbols": "Simboli",
"emoji_button.travel": "Putovanja & mesta",
+ "empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "Lokalna lajna je prazna. Napišite nešto javno da lajna produva!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
+ "empty_column.domain_blocks": "There are no hidden domains yet.",
+ "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
+ "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
+ "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
"empty_column.hashtag": "Trenutno nema ništa na ovom heštegu.",
"empty_column.home": "Vaša lajna je prazna! Posetite {public} ili koristite pretragu da počnete i upoznajete nove ljude.",
"empty_column.home.public_timeline": "javna lajna",
"empty_column.list": "U ovoj listi još nema ničega. Kada članovi liste objave nove statuse, oni će se pojavljivati ovde.",
+ "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
+ "empty_column.mutes": "You haven't muted any users yet.",
"empty_column.notifications": "Trenutno nemate obaveštenja. Družite se malo da započnete razgovore.",
"empty_column.public": "Ovde nema ničega! Napišite nešto javno, ili nađite korisnike sa drugih instanci koje ćete zapratiti da popunite ovu prazninu",
"follow_request.authorize": "Odobri",
@@ -126,19 +137,32 @@
"home.column_settings.show_reblogs": "Prikaži i podržavanja",
"home.column_settings.show_replies": "Prikaži odgovore",
"keyboard_shortcuts.back": "da odete nazad",
+ "keyboard_shortcuts.blocked": "to open blocked users list",
"keyboard_shortcuts.boost": "da podržite",
"keyboard_shortcuts.column": "da se prebacite na status u jednoj od kolona",
"keyboard_shortcuts.compose": "da se prebacite na pisanje novog tuta",
"keyboard_shortcuts.description": "Opis",
+ "keyboard_shortcuts.direct": "to open direct messages column",
"keyboard_shortcuts.down": "da se pomerite na dole u listi",
"keyboard_shortcuts.enter": "da otvorite status",
"keyboard_shortcuts.favourite": "da označite kao omiljeno",
+ "keyboard_shortcuts.favourites": "to open favourites list",
+ "keyboard_shortcuts.federated": "to open federated timeline",
"keyboard_shortcuts.heading": "Prečice na tastaturi",
+ "keyboard_shortcuts.home": "to open home timeline",
"keyboard_shortcuts.hotkey": "Prečica",
"keyboard_shortcuts.legend": "da prikažete ovaj podsetnik",
+ "keyboard_shortcuts.local": "to open local timeline",
"keyboard_shortcuts.mention": "da pomenete autora",
+ "keyboard_shortcuts.muted": "to open muted users list",
+ "keyboard_shortcuts.my_profile": "to open your profile",
+ "keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.pinned": "to open pinned toots list",
+ "keyboard_shortcuts.profile": "to open author's profile",
"keyboard_shortcuts.reply": "da odgovorite",
+ "keyboard_shortcuts.requests": "to open follow requests list",
"keyboard_shortcuts.search": "da se prebacite na pretragu",
+ "keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
"keyboard_shortcuts.toot": "da započnete skroz novi tut",
"keyboard_shortcuts.unfocus": "da ne budete više na pretrazi/pravljenju novog tuta",
@@ -159,8 +183,10 @@
"missing_indicator.label": "Nije pronađeno",
"missing_indicator.sublabel": "This resource could not be found",
"mute_modal.hide_notifications": "Sakrij obaveštenja od ovog korisnika?",
+ "navigation_bar.apps": "Mobile apps",
"navigation_bar.blocks": "Blokirani korisnici",
"navigation_bar.community_timeline": "Lokalna lajna",
+ "navigation_bar.compose": "Compose new toot",
"navigation_bar.direct": "Direct messages",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Hidden domains",
@@ -254,6 +280,7 @@
"status.cancel_reblog_private": "Unboost",
"status.cannot_reblog": "Ovaj status ne može da se podrži",
"status.delete": "Obriši",
+ "status.detailed_status": "Detailed conversation view",
"status.direct": "Direct message @{name}",
"status.embed": "Ugradi na sajt",
"status.favourite": "Omiljeno",
@@ -270,6 +297,7 @@
"status.reblog": "Podrži",
"status.reblog_private": "Boost to original audience",
"status.reblogged_by": "{name} podržao(la)",
+ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.redraft": "Delete & re-draft",
"status.reply": "Odgovori",
"status.replyAll": "Odgovori na diskusiju",
diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json
index ba84a4d24..81a37cc4c 100644
--- a/app/javascript/mastodon/locales/sr.json
+++ b/app/javascript/mastodon/locales/sr.json
@@ -1,15 +1,18 @@
{
- "account.badges.bot": "Bot",
+ "account.badges.bot": "Бот",
"account.block": "Блокирај корисника @{name}",
"account.block_domain": "Сакриј све са домена {domain}",
- "account.blocked": "Blocked",
- "account.direct": "Direct Message @{name}",
+ "account.blocked": "Блокиран",
+ "account.direct": "Директна порука @{name}",
"account.disclaimer_full": "Наведене информације можда не одсликавају кориснички профил у потпуности.",
- "account.domain_blocked": "Domain hidden",
+ "account.domain_blocked": "Домен сакривен",
"account.edit_profile": "Измени профил",
+ "account.endorse": "Приказати на профилу",
"account.follow": "Запрати",
"account.followers": "Пратиоца",
+ "account.followers.empty": "Нико још увек не прати овог корисника.",
"account.follows": "Прати",
+ "account.follows.empty": "Овај корисник не прати никога за сад.",
"account.follows_you": "Прати Вас",
"account.hide_reblogs": "Сакриј подршке које даје корисника @{name}",
"account.media": "Медији",
@@ -17,21 +20,22 @@
"account.moved_to": "{name} се померио на:",
"account.mute": "Ућуткај корисника @{name}",
"account.mute_notifications": "Искључи обавештења од корисника @{name}",
- "account.muted": "Muted",
- "account.posts": "Статуса",
- "account.posts_with_replies": "Toots with replies",
+ "account.muted": "Ућуткан",
+ "account.posts": "Трубе",
+ "account.posts_with_replies": "Трубе са одговорима",
"account.report": "Пријави @{name}",
"account.requested": "Чекам одобрење. Кликните да поништите захтев за праћење",
"account.share": "Подели профил корисника @{name}",
"account.show_reblogs": "Прикажи подршке од корисника @{name}",
"account.unblock": "Одблокирај корисника @{name}",
"account.unblock_domain": "Одблокирај домен {domain}",
+ "account.unendorse": "Не истичи на профилу",
"account.unfollow": "Отпрати",
"account.unmute": "Уклони ућуткавање кориснику @{name}",
"account.unmute_notifications": "Укључи назад обавештења од корисника @{name}",
"account.view_full_profile": "Види цео профил",
- "alert.unexpected.message": "An unexpected error occurred.",
- "alert.unexpected.title": "Oops!",
+ "alert.unexpected.message": "Појавила се неочекивана грешка.",
+ "alert.unexpected.title": "Упс!",
"boost_modal.combo": "Можете притиснути {combo} да прескочите ово следећи пут",
"bundle_column_error.body": "Нешто је пошло по злу приликом учитавања ове компоненте.",
"bundle_column_error.retry": "Покушајте поново",
@@ -41,8 +45,8 @@
"bundle_modal_error.retry": "Покушајте поново",
"column.blocks": "Блокирани корисници",
"column.community": "Локална лајна",
- "column.direct": "Direct messages",
- "column.domain_blocks": "Hidden domains",
+ "column.direct": "Директне поруке",
+ "column.domain_blocks": "Скривени домени",
"column.favourites": "Омиљени",
"column.follow_requests": "Захтеви за праћење",
"column.home": "Почетна",
@@ -59,19 +63,19 @@
"column_header.show_settings": "Прикажи поставке",
"column_header.unpin": "Откачи",
"column_subheading.settings": "Поставке",
- "community.column_settings.media_only": "Media Only",
- "compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.",
- "compose_form.direct_message_warning_learn_more": "Learn more",
- "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
+ "community.column_settings.media_only": "Само Медији",
+ "compose_form.direct_message_warning": "Ова труба ће бити послата споменутим корисницима.",
+ "compose_form.direct_message_warning_learn_more": "Сазнајте више",
+ "compose_form.hashtag_warning": "Ова труба неће бити излистана под било којом тарабом јер је сакривена. Само јавне трубе могу бити претражене тарабом.",
"compose_form.lock_disclaimer": "Ваш налог није {locked}. Свако може да Вас запрати и да види објаве намењене само Вашим пратиоцима.",
"compose_form.lock_disclaimer.lock": "закључан",
"compose_form.placeholder": "Шта Вам је на уму?",
"compose_form.publish": "Тутни",
"compose_form.publish_loud": "{publish}!",
- "compose_form.sensitive.marked": "Media is marked as sensitive",
- "compose_form.sensitive.unmarked": "Media is not marked as sensitive",
- "compose_form.spoiler.marked": "Text is hidden behind warning",
- "compose_form.spoiler.unmarked": "Text is not hidden",
+ "compose_form.sensitive.marked": "Медији су означени као осетљиви",
+ "compose_form.sensitive.unmarked": "Медији су означени као не-осетљиви",
+ "compose_form.spoiler.marked": "Текст је скривен иза упозорења",
+ "compose_form.spoiler.unmarked": "Текст није скривен",
"compose_form.spoiler_placeholder": "Овде упишите упозорење",
"confirmation_modal.cancel": "Поништи",
"confirmations.block.confirm": "Блокирај",
@@ -81,11 +85,11 @@
"confirmations.delete_list.confirm": "Обриши",
"confirmations.delete_list.message": "Да ли сте сигурни да желите да бесповратно обришете ову листу?",
"confirmations.domain_block.confirm": "Сакриј цео домен",
- "confirmations.domain_block.message": "Да ли сте стварно, стварно сигурно да желите да блокирате цео домен {domain}? У већини случајева, пар добрих блокирања или ућуткавања су довољна и препоручљива.",
+ "confirmations.domain_block.message": "Да ли сте заиста сигурни да желите да блокирате цео домен {domain}? У већини случајева, неколико добро промишљених блокирања или ућуткавања су довољна и препоручљива.",
"confirmations.mute.confirm": "Ућуткај",
"confirmations.mute.message": "Да ли стварно желите да ућуткате корисника {name}?",
- "confirmations.redraft.confirm": "Delete & redraft",
- "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
+ "confirmations.redraft.confirm": "Избриши и преправи",
+ "confirmations.redraft.message": "Да ли сте сигурно да желите да избришете овај статус и да га преправите*? Омиљеновање и подршке ће бити изгубљене, а одговори на оригинални пост ће бити поништени.",
"confirmations.unfollow.confirm": "Отпрати",
"confirmations.unfollow.message": "Да ли сте сигурни да желите да отпратите корисника {name}?",
"embed.instructions": "Угради овај статус на Ваш веб сајт копирањем кода испод.",
@@ -104,44 +108,64 @@
"emoji_button.search_results": "Резултати претраге",
"emoji_button.symbols": "Симболи",
"emoji_button.travel": "Путовања & места",
+ "empty_column.blocks": "Још увек немате блокираних корисника.",
"empty_column.community": "Локална лајна је празна. Напишите нешто јавно да лајна продува!",
- "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
+ "empty_column.direct": "Још увек немате директних порука. Када пошаљете или примите једну, појавиће се овде.",
+ "empty_column.domain_blocks": "Још увек нема сакривених домена.",
+ "empty_column.favourited_statuses": "Још увек немате труба које су вам се свиделе. Када вам се једна свиди, појавиће се овде.",
+ "empty_column.favourites": "Још увек се никоме није свидела ова труба. Када се некоме свиди, појавиће се овде.",
+ "empty_column.follow_requests": "Још увек немате захтева за праћење. Када примите захтев, појавиће се овде.",
"empty_column.hashtag": "Тренутно нема ништа на овом хештегу.",
- "empty_column.home": "Ваша лајна је празна! Посетите {public} или користите претрагу да почнете и упознајете нове људе.",
- "empty_column.home.public_timeline": "јавна лајна",
- "empty_column.list": "У овој листи још нема ничега. Када чланови листе објаве нове статусе, они ће се појављивати овде.",
- "empty_column.notifications": "Тренутно немате обавештења. Дружите се мало да започнете разговоре.",
+ "empty_column.home": "Ваша временска линија је празна! Посетите {public} или користите претрагу да почнете и да упознате нове људе.",
+ "empty_column.home.public_timeline": "јавна временска линија",
+ "empty_column.list": "У овој листи још нема ничега. Када чланови листе објаве нове статусе, они ће се појавити овде.",
+ "empty_column.lists": "Још увек немате ниједну листу. Када направите једну, појавиће се овде.",
+ "empty_column.mutes": "Још увек немате ућутканих корисника.",
+ "empty_column.notifications": "Тренутно немате обавештења. Дружите се мало да започнете разговор.",
"empty_column.public": "Овде нема ничега! Напишите нешто јавно, или нађите кориснике са других инстанци које ћете запратити да попуните ову празнину",
"follow_request.authorize": "Одобри",
"follow_request.reject": "Одбиј",
- "getting_started.developers": "Developers",
- "getting_started.documentation": "Documentation",
- "getting_started.find_friends": "Find friends from Twitter",
+ "getting_started.developers": "Програмери",
+ "getting_started.documentation": "Документација",
+ "getting_started.find_friends": "Пронађите пријатеље са Твитера",
"getting_started.heading": "Да почнете",
- "getting_started.invite": "Invite people",
- "getting_started.open_source_notice": "Мастoдонт је софтвер отвореног кода. Можете му допринети или пријавити проблеме преко GitHub-а на {github}.",
- "getting_started.security": "Security",
- "getting_started.terms": "Terms of service",
+ "getting_started.invite": "Позовите људе",
+ "getting_started.open_source_notice": "Мастoдон је софтвер отвореног кода. Можете му допринети или пријавити проблеме преко ГитХаба на {github}.",
+ "getting_started.security": "Безбедност",
+ "getting_started.terms": "Услови коришћења",
"home.column_settings.basic": "Основно",
"home.column_settings.show_reblogs": "Прикажи и подржавања",
"home.column_settings.show_replies": "Прикажи одговоре",
"keyboard_shortcuts.back": "да одете назад",
+ "keyboard_shortcuts.blocked": "да отворите листу блокираних корисника",
"keyboard_shortcuts.boost": "да подржите",
"keyboard_shortcuts.column": "да се пребаците на статус у једној од колона",
"keyboard_shortcuts.compose": "да се пребаците на писање новог тута",
"keyboard_shortcuts.description": "Опис",
+ "keyboard_shortcuts.direct": "да отворите колону за директне поруке",
"keyboard_shortcuts.down": "да се померите на доле у листи",
"keyboard_shortcuts.enter": "да отворите статус",
"keyboard_shortcuts.favourite": "да означите као омиљено",
+ "keyboard_shortcuts.favourites": "да отворите листу фаворита",
+ "keyboard_shortcuts.federated": "да отворите федерализовану временску линију",
"keyboard_shortcuts.heading": "Пречице на тастатури",
+ "keyboard_shortcuts.home": "да отворите временску линију почетне",
"keyboard_shortcuts.hotkey": "Пречица",
"keyboard_shortcuts.legend": "да прикажете овај подсетник",
+ "keyboard_shortcuts.local": "да отворите локалну временску линију",
"keyboard_shortcuts.mention": "да поменете аутора",
+ "keyboard_shortcuts.muted": "да отворите листу ућутканих корисника",
+ "keyboard_shortcuts.my_profile": "да отворите ваш профил",
+ "keyboard_shortcuts.notifications": "да отворите колону обавештења",
+ "keyboard_shortcuts.pinned": "да отворите листу закачених труба",
+ "keyboard_shortcuts.profile": "да отворите профил аутора",
"keyboard_shortcuts.reply": "да одговорите",
+ "keyboard_shortcuts.requests": "да отворите листу примљених захтева за праћење",
"keyboard_shortcuts.search": "да се пребаците на претрагу",
- "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
- "keyboard_shortcuts.toot": "да започнете скроз нови тут",
- "keyboard_shortcuts.unfocus": "да не будете више на претрази/прављењу новог тута",
+ "keyboard_shortcuts.start": "да отворите колону \"почнимо\"",
+ "keyboard_shortcuts.toggle_hidden": "да прикажете/сакријте текст иза CW-а",
+ "keyboard_shortcuts.toot": "да започнете скроз нову трубу",
+ "keyboard_shortcuts.unfocus": "да одфокусирате/не будете више на претрази/прављењу нове трубе",
"keyboard_shortcuts.up": "да се померите на горе у листи",
"lightbox.close": "Затвори",
"lightbox.next": "Следећи",
@@ -157,16 +181,18 @@
"loading_indicator.label": "Учитавам...",
"media_gallery.toggle_visible": "Укључи/искључи видљивост",
"missing_indicator.label": "Није пронађено",
- "missing_indicator.sublabel": "This resource could not be found",
+ "missing_indicator.sublabel": "Овај ресурс није пронађен",
"mute_modal.hide_notifications": "Сакриј обавештења од овог корисника?",
+ "navigation_bar.apps": "Мобилне апликације",
"navigation_bar.blocks": "Блокирани корисници",
"navigation_bar.community_timeline": "Локална лајна",
- "navigation_bar.direct": "Direct messages",
- "navigation_bar.discover": "Discover",
- "navigation_bar.domain_blocks": "Hidden domains",
+ "navigation_bar.compose": "Саставите нову трубу",
+ "navigation_bar.direct": "Директне поруке",
+ "navigation_bar.discover": "Откриј",
+ "navigation_bar.domain_blocks": "Сакривени домени",
"navigation_bar.edit_profile": "Измени профил",
"navigation_bar.favourites": "Омиљени",
- "navigation_bar.filters": "Muted words",
+ "navigation_bar.filters": "Пригушене речи",
"navigation_bar.follow_requests": "Захтеви за праћење",
"navigation_bar.info": "О овој инстанци",
"navigation_bar.keyboard_shortcuts": "Пречице на тастатури",
@@ -177,7 +203,7 @@
"navigation_bar.pins": "Прикачени тутови",
"navigation_bar.preferences": "Подешавања",
"navigation_bar.public_timeline": "Федерисана лајна",
- "navigation_bar.security": "Security",
+ "navigation_bar.security": "Сигурност",
"notification.favourite": "{name} је ставио Ваш статус као омиљени",
"notification.follow": "{name} Вас је запратио",
"notification.mention": "{name} Вас је поменуо",
@@ -193,15 +219,15 @@
"notifications.column_settings.reblog": "Подршки:",
"notifications.column_settings.show": "Прикажи у колони",
"notifications.column_settings.sound": "Пуштај звук",
- "notifications.group": "{count} notifications",
+ "notifications.group": "{count} обавештења",
"onboarding.done": "Готово",
"onboarding.next": "Следеће",
"onboarding.page_five.public_timelines": "Локална лајна приказује све јавне статусе од свих на домену {domain}. Федерисана лајна приказује јавне статусе од свих људи које прате корисници са домена {domain}. Ово су јавне лајне, сјајан начин да откријете нове људе.",
"onboarding.page_four.home": "Почетна лајна приказује статусе људи које Ви пратите.",
"onboarding.page_four.notifications": "Колона са обавештењима Вам приказује када неко прича са Вама.",
"onboarding.page_one.federation": "Мастодонт је мрежа независних сервера који се увезују да направе једну већу друштвену мрежу. Ове сервере зовемо инстанцама.",
- "onboarding.page_one.full_handle": "Your full handle",
- "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.",
+ "onboarding.page_one.full_handle": "Ваш пун надимак",
+ "onboarding.page_one.handle_hint": "Ово бисте рекли својим пријатељима да траже.",
"onboarding.page_one.welcome": "Добродошли на Мастодонт!",
"onboarding.page_six.admin": "Администратор Ваше инстанце је {admin}.",
"onboarding.page_six.almost_done": "Још мало, па готово...",
@@ -224,53 +250,55 @@
"privacy.public.short": "Јавно",
"privacy.unlisted.long": "Не објављуј на јавним лајнама",
"privacy.unlisted.short": "Неизлистано",
- "regeneration_indicator.label": "Loading…",
- "regeneration_indicator.sublabel": "Your home feed is being prepared!",
+ "regeneration_indicator.label": "Учитавање…",
+ "regeneration_indicator.sublabel": "Ваша почетна страница се припрема!",
"relative_time.days": "{number}d",
"relative_time.hours": "{number}h",
"relative_time.just_now": "сада",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
"reply_indicator.cancel": "Поништи",
- "report.forward": "Forward to {target}",
- "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
- "report.hint": "The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:",
+ "report.forward": "Проследити {target}",
+ "report.forward_hint": "Налог је са другог сервера. Послати анонимну копију пријаве и тамо?",
+ "report.hint": "Пријава ће бити послата модераторима ваше инстанце. Можете додати објашњење зашто пријављујете овај налог у наставку:",
"report.placeholder": "Додатни коментари",
"report.submit": "Пошаљи",
"report.target": "Пријављујем {target}",
"search.placeholder": "Претрага",
"search_popout.search_format": "Напредни формат претраге",
- "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
+ "search_popout.tips.full_text": "Једноставан текст враћа статусе које сте написали, фаворизовали, подржали или били поменути, као и подударање корисничких имена, приказаних имена, и тараба.",
"search_popout.tips.hashtag": "хештег",
"search_popout.tips.status": "статус",
"search_popout.tips.text": "Тражењем обичног текста ћете добити сва пронађена имена, сва корисничка имена и све нађене хештегове",
"search_popout.tips.user": "корисник",
- "search_results.accounts": "People",
- "search_results.hashtags": "Hashtags",
- "search_results.statuses": "Toots",
+ "search_results.accounts": "Људи",
+ "search_results.hashtags": "Тарабе",
+ "search_results.statuses": "Трубе",
"search_results.total": "{count, number} {count, plural, one {резултат} few {резултата} other {резултата}}",
"standalone.public_title": "Поглед изнутра...",
- "status.block": "Block @{name}",
- "status.cancel_reblog_private": "Unboost",
+ "status.block": "Блокирај @{name}",
+ "status.cancel_reblog_private": "Уклони подршку",
"status.cannot_reblog": "Овај статус не може да се подржи",
"status.delete": "Обриши",
- "status.direct": "Direct message @{name}",
+ "status.detailed_status": "Детаљни преглед разговора",
+ "status.direct": "Директна порука @{name}",
"status.embed": "Угради на сајт",
"status.favourite": "Омиљено",
- "status.filtered": "Filtered",
+ "status.filtered": "Филтрирано",
"status.load_more": "Учитај још",
"status.media_hidden": "Мултимедија сакривена",
"status.mention": "Помени корисника @{name}",
"status.more": "Још",
- "status.mute": "Mute @{name}",
+ "status.mute": "Ућуткај @{name}",
"status.mute_conversation": "Ућуткај преписку",
"status.open": "Прошири овај статус",
- "status.pin": "Прикачи на профил",
- "status.pinned": "Pinned toot",
+ "status.pin": "Закачи на профил",
+ "status.pinned": "Закачена труба",
"status.reblog": "Подржи",
- "status.reblog_private": "Boost to original audience",
- "status.reblogged_by": "{name} подржао(ла)",
- "status.redraft": "Delete & re-draft",
+ "status.reblog_private": "Подржи да види првобитна публика",
+ "status.reblogged_by": "{name} подржао/ла",
+ "status.reblogs.empty": "Још увек нико није подржао ову трубу. Када буде подржана, појавиће се овде.",
+ "status.redraft": "Избриши и преправи",
"status.reply": "Одговори",
"status.replyAll": "Одговори на дискусију",
"status.report": "Пријави корисника @{name}",
@@ -291,10 +319,10 @@
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"ui.beforeunload": "Ако напустите Мастодонт, изгубићете написани нацрт.",
"upload_area.title": "Превуците овде да отпремите",
- "upload_button.label": "Додај мултимедију",
- "upload_form.description": "Опиши за слабовиде особе",
- "upload_form.focus": "Crop",
- "upload_form.undo": "Опозови",
+ "upload_button.label": "Додај мултимедију (JPEG, PNG, GIF, WebM, MP4, MOV)",
+ "upload_form.description": "Опишите за особе са оштећеним видом",
+ "upload_form.focus": "Подесите",
+ "upload_form.undo": "Избриши",
"upload_progress.label": "Отпремам...",
"video.close": "Затвори видео",
"video.exit_fullscreen": "Напусти цео екран",
diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json
index 64d488324..498f6b411 100644
--- a/app/javascript/mastodon/locales/sv.json
+++ b/app/javascript/mastodon/locales/sv.json
@@ -3,13 +3,16 @@
"account.block": "Blockera @{name}",
"account.block_domain": "Dölj allt från {domain}",
"account.blocked": "Blockerad",
- "account.direct": "Direct Message @{name}",
+ "account.direct": "Direktmeddelande @{name}",
"account.disclaimer_full": "Informationen nedan kan spegla användarens profil ofullständigt.",
- "account.domain_blocked": "Domän gömd",
+ "account.domain_blocked": "Domän dold",
"account.edit_profile": "Redigera profil",
+ "account.endorse": "Feature on profile",
"account.follow": "Följ",
"account.followers": "Följare",
+ "account.followers.empty": "No one follows this user yet.",
"account.follows": "Följer",
+ "account.follows.empty": "This user doesn't follow anyone yet.",
"account.follows_you": "Följer dig",
"account.hide_reblogs": "Dölj knuffar från @{name}",
"account.media": "Media",
@@ -26,6 +29,7 @@
"account.show_reblogs": "Visa knuffar från @{name}",
"account.unblock": "Avblockera @{name}",
"account.unblock_domain": "Ta fram {domain}",
+ "account.unendorse": "Don't feature on profile",
"account.unfollow": "Sluta följa",
"account.unmute": "Ta bort tystad @{name}",
"account.unmute_notifications": "Återaktivera notifikationer från @{name}",
@@ -104,12 +108,19 @@
"emoji_button.search_results": "Sökresultat",
"emoji_button.symbols": "Symboler",
"emoji_button.travel": "Resor & Platser",
+ "empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "Den lokala tidslinjen är tom. Skriv något offentligt för att få bollen att rulla!",
"empty_column.direct": "Du har inga direktmeddelanden än. När du skickar eller tar emot kommer den att dyka upp här.",
+ "empty_column.domain_blocks": "There are no hidden domains yet.",
+ "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
+ "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
+ "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
"empty_column.hashtag": "Det finns inget i denna hashtag ännu.",
"empty_column.home": "Din hemma-tidslinje är tom! Besök {public} eller använd sökning för att komma igång och träffa andra användare.",
"empty_column.home.public_timeline": "den publika tidslinjen",
"empty_column.list": "Det finns inget i denna lista än. När medlemmar i denna lista lägger till nya statusar kommer de att visas här.",
+ "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
+ "empty_column.mutes": "You haven't muted any users yet.",
"empty_column.notifications": "Du har inga meddelanden än. Interagera med andra för att starta konversationen.",
"empty_column.public": "Det finns inget här! Skriv något offentligt, eller följ manuellt användarna från andra instanser för att fylla på det",
"follow_request.authorize": "Godkänn",
@@ -126,19 +137,32 @@
"home.column_settings.show_reblogs": "Visa knuffar",
"home.column_settings.show_replies": "Visa svar",
"keyboard_shortcuts.back": "att navigera tillbaka",
+ "keyboard_shortcuts.blocked": "to open blocked users list",
"keyboard_shortcuts.boost": "att knuffa",
"keyboard_shortcuts.column": "att fokusera en status i en av kolumnerna",
"keyboard_shortcuts.compose": "att fokusera komponera text fältet",
"keyboard_shortcuts.description": "Description",
+ "keyboard_shortcuts.direct": "to open direct messages column",
"keyboard_shortcuts.down": "att flytta ner i listan",
"keyboard_shortcuts.enter": "to open status",
"keyboard_shortcuts.favourite": "att favorisera",
+ "keyboard_shortcuts.favourites": "to open favourites list",
+ "keyboard_shortcuts.federated": "to open federated timeline",
"keyboard_shortcuts.heading": "Keyboard Shortcuts",
+ "keyboard_shortcuts.home": "to open home timeline",
"keyboard_shortcuts.hotkey": "Snabbvalstangent",
"keyboard_shortcuts.legend": "att visa denna översikt",
+ "keyboard_shortcuts.local": "to open local timeline",
"keyboard_shortcuts.mention": "att nämna författaren",
+ "keyboard_shortcuts.muted": "to open muted users list",
+ "keyboard_shortcuts.my_profile": "to open your profile",
+ "keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.pinned": "to open pinned toots list",
+ "keyboard_shortcuts.profile": "to open author's profile",
"keyboard_shortcuts.reply": "att svara",
+ "keyboard_shortcuts.requests": "to open follow requests list",
"keyboard_shortcuts.search": "att fokusera sökfältet",
+ "keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "att visa/gömma text bakom CW",
"keyboard_shortcuts.toot": "att börja en helt ny toot",
"keyboard_shortcuts.unfocus": "att avfokusera komponera text fält / sökfält",
@@ -159,8 +183,10 @@
"missing_indicator.label": "Hittades inte",
"missing_indicator.sublabel": "Den här resursen kunde inte hittas",
"mute_modal.hide_notifications": "Dölj notifikationer från denna användare?",
+ "navigation_bar.apps": "Mobile apps",
"navigation_bar.blocks": "Blockerade användare",
"navigation_bar.community_timeline": "Lokal tidslinje",
+ "navigation_bar.compose": "Compose new toot",
"navigation_bar.direct": "Direktmeddelanden",
"navigation_bar.discover": "Upptäck",
"navigation_bar.domain_blocks": "Dolda domäner",
@@ -254,6 +280,7 @@
"status.cancel_reblog_private": "Ta bort knuff",
"status.cannot_reblog": "Detta inlägg kan inte knuffas",
"status.delete": "Ta bort",
+ "status.detailed_status": "Detailed conversation view",
"status.direct": "Direktmeddela @{name}",
"status.embed": "Bädda in",
"status.favourite": "Favorit",
@@ -270,6 +297,7 @@
"status.reblog": "Knuff",
"status.reblog_private": "Knuffa till de ursprungliga åhörarna",
"status.reblogged_by": "{name} knuffade",
+ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.redraft": "Radera & gör om",
"status.reply": "Svara",
"status.replyAll": "Svara på tråden",
diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json
new file mode 100644
index 000000000..d80eba2c1
--- /dev/null
+++ b/app/javascript/mastodon/locales/ta.json
@@ -0,0 +1,336 @@
+{
+ "account.badges.bot": "Bot",
+ "account.block": "Block @{name}",
+ "account.block_domain": "Hide everything from {domain}",
+ "account.blocked": "Blocked",
+ "account.direct": "Direct message @{name}",
+ "account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
+ "account.domain_blocked": "Domain hidden",
+ "account.edit_profile": "Edit profile",
+ "account.endorse": "Feature on profile",
+ "account.follow": "Follow",
+ "account.followers": "Followers",
+ "account.followers.empty": "No one follows this user yet.",
+ "account.follows": "Follows",
+ "account.follows.empty": "This user doesn't follow anyone yet.",
+ "account.follows_you": "Follows you",
+ "account.hide_reblogs": "Hide boosts from @{name}",
+ "account.media": "Media",
+ "account.mention": "Mention @{name}",
+ "account.moved_to": "{name} has moved to:",
+ "account.mute": "Mute @{name}",
+ "account.mute_notifications": "Mute notifications from @{name}",
+ "account.muted": "Muted",
+ "account.posts": "Toots",
+ "account.posts_with_replies": "Toots and replies",
+ "account.report": "Report @{name}",
+ "account.requested": "Awaiting approval. Click to cancel follow request",
+ "account.share": "Share @{name}'s profile",
+ "account.show_reblogs": "Show boosts from @{name}",
+ "account.unblock": "Unblock @{name}",
+ "account.unblock_domain": "Unhide {domain}",
+ "account.unendorse": "Don't feature on profile",
+ "account.unfollow": "Unfollow",
+ "account.unmute": "Unmute @{name}",
+ "account.unmute_notifications": "Unmute notifications from @{name}",
+ "account.view_full_profile": "View full profile",
+ "alert.unexpected.message": "An unexpected error occurred.",
+ "alert.unexpected.title": "Oops!",
+ "boost_modal.combo": "You can press {combo} to skip this next time",
+ "bundle_column_error.body": "Something went wrong while loading this component.",
+ "bundle_column_error.retry": "Try again",
+ "bundle_column_error.title": "Network error",
+ "bundle_modal_error.close": "Close",
+ "bundle_modal_error.message": "Something went wrong while loading this component.",
+ "bundle_modal_error.retry": "Try again",
+ "column.blocks": "Blocked users",
+ "column.community": "Local timeline",
+ "column.direct": "Direct messages",
+ "column.domain_blocks": "Hidden domains",
+ "column.favourites": "Favourites",
+ "column.follow_requests": "Follow requests",
+ "column.home": "Home",
+ "column.lists": "Lists",
+ "column.mutes": "Muted users",
+ "column.notifications": "Notifications",
+ "column.pins": "Pinned toot",
+ "column.public": "Federated timeline",
+ "column_back_button.label": "Back",
+ "column_header.hide_settings": "Hide settings",
+ "column_header.moveLeft_settings": "Move column to the left",
+ "column_header.moveRight_settings": "Move column to the right",
+ "column_header.pin": "Pin",
+ "column_header.show_settings": "Show settings",
+ "column_header.unpin": "Unpin",
+ "column_subheading.settings": "Settings",
+ "community.column_settings.media_only": "Media Only",
+ "compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.",
+ "compose_form.direct_message_warning_learn_more": "Learn more",
+ "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
+ "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
+ "compose_form.lock_disclaimer.lock": "locked",
+ "compose_form.placeholder": "What is on your mind?",
+ "compose_form.publish": "Toot",
+ "compose_form.publish_loud": "{publish}!",
+ "compose_form.sensitive.marked": "Media is marked as sensitive",
+ "compose_form.sensitive.unmarked": "Media is not marked as sensitive",
+ "compose_form.spoiler.marked": "Text is hidden behind warning",
+ "compose_form.spoiler.unmarked": "Text is not hidden",
+ "compose_form.spoiler_placeholder": "Write your warning here",
+ "confirmation_modal.cancel": "Cancel",
+ "confirmations.block.confirm": "Block",
+ "confirmations.block.message": "Are you sure you want to block {name}?",
+ "confirmations.delete.confirm": "Delete",
+ "confirmations.delete.message": "Are you sure you want to delete this status?",
+ "confirmations.delete_list.confirm": "Delete",
+ "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
+ "confirmations.domain_block.confirm": "Hide entire domain",
+ "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
+ "confirmations.mute.confirm": "Mute",
+ "confirmations.mute.message": "Are you sure you want to mute {name}?",
+ "confirmations.redraft.confirm": "Delete & redraft",
+ "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.",
+ "confirmations.unfollow.confirm": "Unfollow",
+ "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
+ "embed.instructions": "Embed this status on your website by copying the code below.",
+ "embed.preview": "Here is what it will look like:",
+ "emoji_button.activity": "Activity",
+ "emoji_button.custom": "Custom",
+ "emoji_button.flags": "Flags",
+ "emoji_button.food": "Food & Drink",
+ "emoji_button.label": "Insert emoji",
+ "emoji_button.nature": "Nature",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
+ "emoji_button.objects": "Objects",
+ "emoji_button.people": "People",
+ "emoji_button.recent": "Frequently used",
+ "emoji_button.search": "Search...",
+ "emoji_button.search_results": "Search results",
+ "emoji_button.symbols": "Symbols",
+ "emoji_button.travel": "Travel & Places",
+ "empty_column.blocks": "You haven't blocked any users yet.",
+ "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
+ "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
+ "empty_column.domain_blocks": "There are no hidden domains yet.",
+ "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
+ "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
+ "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
+ "empty_column.hashtag": "There is nothing in this hashtag yet.",
+ "empty_column.home": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.",
+ "empty_column.home.public_timeline": "the public timeline",
+ "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
+ "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
+ "empty_column.mutes": "You haven't muted any users yet.",
+ "empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
+ "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other instances to fill it up",
+ "follow_request.authorize": "Authorize",
+ "follow_request.reject": "Reject",
+ "getting_started.developers": "Developers",
+ "getting_started.documentation": "Documentation",
+ "getting_started.find_friends": "Find friends from Twitter",
+ "getting_started.heading": "Getting started",
+ "getting_started.invite": "Invite people",
+ "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.",
+ "getting_started.security": "Security",
+ "getting_started.terms": "Terms of service",
+ "home.column_settings.basic": "Basic",
+ "home.column_settings.show_reblogs": "Show boosts",
+ "home.column_settings.show_replies": "Show replies",
+ "keyboard_shortcuts.back": "to navigate back",
+ "keyboard_shortcuts.blocked": "to open blocked users list",
+ "keyboard_shortcuts.boost": "to boost",
+ "keyboard_shortcuts.column": "to focus a status in one of the columns",
+ "keyboard_shortcuts.compose": "to focus the compose textarea",
+ "keyboard_shortcuts.description": "Description",
+ "keyboard_shortcuts.direct": "to open direct messages column",
+ "keyboard_shortcuts.down": "to move down in the list",
+ "keyboard_shortcuts.enter": "to open status",
+ "keyboard_shortcuts.favourite": "to favourite",
+ "keyboard_shortcuts.favourites": "to open favourites list",
+ "keyboard_shortcuts.federated": "to open federated timeline",
+ "keyboard_shortcuts.heading": "Keyboard Shortcuts",
+ "keyboard_shortcuts.home": "to open home timeline",
+ "keyboard_shortcuts.hotkey": "Hotkey",
+ "keyboard_shortcuts.legend": "to display this legend",
+ "keyboard_shortcuts.local": "to open local timeline",
+ "keyboard_shortcuts.mention": "to mention author",
+ "keyboard_shortcuts.muted": "to open muted users list",
+ "keyboard_shortcuts.my_profile": "to open your profile",
+ "keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.pinned": "to open pinned toots list",
+ "keyboard_shortcuts.profile": "to open author's profile",
+ "keyboard_shortcuts.reply": "to reply",
+ "keyboard_shortcuts.requests": "to open follow requests list",
+ "keyboard_shortcuts.search": "to focus search",
+ "keyboard_shortcuts.start": "to open \"get started\" column",
+ "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+ "keyboard_shortcuts.toot": "to start a brand new toot",
+ "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
+ "keyboard_shortcuts.up": "to move up in the list",
+ "lightbox.close": "Close",
+ "lightbox.next": "Next",
+ "lightbox.previous": "Previous",
+ "lists.account.add": "Add to list",
+ "lists.account.remove": "Remove from list",
+ "lists.delete": "Delete list",
+ "lists.edit": "Edit list",
+ "lists.new.create": "Add list",
+ "lists.new.title_placeholder": "New list title",
+ "lists.search": "Search among people you follow",
+ "lists.subheading": "Your lists",
+ "loading_indicator.label": "Loading...",
+ "media_gallery.toggle_visible": "Toggle visibility",
+ "missing_indicator.label": "Not found",
+ "missing_indicator.sublabel": "This resource could not be found",
+ "mute_modal.hide_notifications": "Hide notifications from this user?",
+ "navigation_bar.apps": "Mobile apps",
+ "navigation_bar.blocks": "Blocked users",
+ "navigation_bar.community_timeline": "Local timeline",
+ "navigation_bar.compose": "Compose new toot",
+ "navigation_bar.direct": "Direct messages",
+ "navigation_bar.discover": "Discover",
+ "navigation_bar.domain_blocks": "Hidden domains",
+ "navigation_bar.edit_profile": "Edit profile",
+ "navigation_bar.favourites": "Favourites",
+ "navigation_bar.filters": "Muted words",
+ "navigation_bar.follow_requests": "Follow requests",
+ "navigation_bar.info": "About this instance",
+ "navigation_bar.keyboard_shortcuts": "Hotkeys",
+ "navigation_bar.lists": "Lists",
+ "navigation_bar.logout": "Logout",
+ "navigation_bar.mutes": "Muted users",
+ "navigation_bar.personal": "Personal",
+ "navigation_bar.pins": "Pinned toots",
+ "navigation_bar.preferences": "Preferences",
+ "navigation_bar.public_timeline": "Federated timeline",
+ "navigation_bar.security": "Security",
+ "notification.favourite": "{name} favourited your status",
+ "notification.follow": "{name} followed you",
+ "notification.mention": "{name} mentioned you",
+ "notification.reblog": "{name} boosted your status",
+ "notifications.clear": "Clear notifications",
+ "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
+ "notifications.column_settings.alert": "Desktop notifications",
+ "notifications.column_settings.favourite": "Favourites:",
+ "notifications.column_settings.follow": "New followers:",
+ "notifications.column_settings.mention": "Mentions:",
+ "notifications.column_settings.push": "Push notifications",
+ "notifications.column_settings.push_meta": "This device",
+ "notifications.column_settings.reblog": "Boosts:",
+ "notifications.column_settings.show": "Show in column",
+ "notifications.column_settings.sound": "Play sound",
+ "notifications.group": "{count} notifications",
+ "onboarding.done": "Done",
+ "onboarding.next": "Next",
+ "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.",
+ "onboarding.page_four.home": "The home timeline shows posts from people you follow.",
+ "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.",
+ "onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
+ "onboarding.page_one.full_handle": "Your full handle",
+ "onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.",
+ "onboarding.page_one.welcome": "Welcome to Mastodon!",
+ "onboarding.page_six.admin": "Your instance's admin is {admin}.",
+ "onboarding.page_six.almost_done": "Almost done...",
+ "onboarding.page_six.appetoot": "Bon Appetoot!",
+ "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.",
+ "onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
+ "onboarding.page_six.guidelines": "community guidelines",
+ "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!",
+ "onboarding.page_six.various_app": "mobile apps",
+ "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.",
+ "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.",
+ "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.",
+ "onboarding.skip": "Skip",
+ "privacy.change": "Adjust status privacy",
+ "privacy.direct.long": "Post to mentioned users only",
+ "privacy.direct.short": "Direct",
+ "privacy.private.long": "Post to followers only",
+ "privacy.private.short": "Followers-only",
+ "privacy.public.long": "Post to public timelines",
+ "privacy.public.short": "Public",
+ "privacy.unlisted.long": "Do not show in public timelines",
+ "privacy.unlisted.short": "Unlisted",
+ "regeneration_indicator.label": "Loading…",
+ "regeneration_indicator.sublabel": "Your home feed is being prepared!",
+ "relative_time.days": "{number}d",
+ "relative_time.hours": "{number}h",
+ "relative_time.just_now": "now",
+ "relative_time.minutes": "{number}m",
+ "relative_time.seconds": "{number}s",
+ "reply_indicator.cancel": "Cancel",
+ "report.forward": "Forward to {target}",
+ "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
+ "report.hint": "The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:",
+ "report.placeholder": "Additional comments",
+ "report.submit": "Submit",
+ "report.target": "Report {target}",
+ "search.placeholder": "Search",
+ "search_popout.search_format": "Advanced search format",
+ "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
+ "search_popout.tips.hashtag": "hashtag",
+ "search_popout.tips.status": "status",
+ "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
+ "search_popout.tips.user": "user",
+ "search_results.accounts": "People",
+ "search_results.hashtags": "Hashtags",
+ "search_results.statuses": "Toots",
+ "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
+ "standalone.public_title": "A look inside...",
+ "status.block": "Block @{name}",
+ "status.cancel_reblog_private": "Unboost",
+ "status.cannot_reblog": "This post cannot be boosted",
+ "status.delete": "Delete",
+ "status.detailed_status": "Detailed conversation view",
+ "status.direct": "Direct message @{name}",
+ "status.embed": "Embed",
+ "status.favourite": "Favourite",
+ "status.filtered": "Filtered",
+ "status.load_more": "Load more",
+ "status.media_hidden": "Media hidden",
+ "status.mention": "Mention @{name}",
+ "status.more": "More",
+ "status.mute": "Mute @{name}",
+ "status.mute_conversation": "Mute conversation",
+ "status.open": "Expand this status",
+ "status.pin": "Pin on profile",
+ "status.pinned": "Pinned toot",
+ "status.reblog": "Boost",
+ "status.reblog_private": "Boost to original audience",
+ "status.reblogged_by": "{name} boosted",
+ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
+ "status.redraft": "Delete & re-draft",
+ "status.reply": "Reply",
+ "status.replyAll": "Reply to thread",
+ "status.report": "Report @{name}",
+ "status.sensitive_toggle": "Click to view",
+ "status.sensitive_warning": "Sensitive content",
+ "status.share": "Share",
+ "status.show_less": "Show less",
+ "status.show_less_all": "Show less for all",
+ "status.show_more": "Show more",
+ "status.show_more_all": "Show more for all",
+ "status.unmute_conversation": "Unmute conversation",
+ "status.unpin": "Unpin from profile",
+ "tabs_bar.federated_timeline": "Federated",
+ "tabs_bar.home": "Home",
+ "tabs_bar.local_timeline": "Local",
+ "tabs_bar.notifications": "Notifications",
+ "tabs_bar.search": "Search",
+ "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
+ "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
+ "upload_area.title": "Drag & drop to upload",
+ "upload_button.label": "Add media (JPEG, PNG, GIF, WebM, MP4, MOV)",
+ "upload_form.description": "Describe for the visually impaired",
+ "upload_form.focus": "Crop",
+ "upload_form.undo": "Delete",
+ "upload_progress.label": "Uploading...",
+ "video.close": "Close video",
+ "video.exit_fullscreen": "Exit full screen",
+ "video.expand": "Expand video",
+ "video.fullscreen": "Full screen",
+ "video.hide": "Hide video",
+ "video.mute": "Mute sound",
+ "video.pause": "Pause",
+ "video.play": "Play",
+ "video.unmute": "Unmute sound"
+}
diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json
index 7e405b8c2..bbe575fde 100644
--- a/app/javascript/mastodon/locales/te.json
+++ b/app/javascript/mastodon/locales/te.json
@@ -7,9 +7,12 @@
"account.disclaimer_full": "క్రింది సమాచారం వాడుకరి యొక్క ప్రొఫైల్ను అసంపూర్తిగా ప్రతిబింబించవచ్చు.",
"account.domain_blocked": "డొమైన్ దాచిపెట్టబడినది",
"account.edit_profile": "ప్రొఫైల్ని సవరించండి",
+ "account.endorse": "Feature on profile",
"account.follow": "అనుసరించు",
"account.followers": "అనుచరులు",
+ "account.followers.empty": "No one follows this user yet.",
"account.follows": "అనుసరిస్తున్నవి",
+ "account.follows.empty": "This user doesn't follow anyone yet.",
"account.follows_you": "మిమ్మల్ని అనుసరిస్తున్నారు",
"account.hide_reblogs": "@{name} నుంచి బూస్ట్ లను దాచిపెట్టు",
"account.media": "మీడియా",
@@ -26,6 +29,7 @@
"account.show_reblogs": "@{name}నుంచి బూస్ట్ లను చూపించు",
"account.unblock": "@{name}పై బ్లాక్ ను తొలగించు",
"account.unblock_domain": "{domain}ను దాచవద్దు",
+ "account.unendorse": "Don't feature on profile",
"account.unfollow": "అనుసరించవద్దు",
"account.unmute": "@{name}పై మ్యూట్ ని తొలగించు",
"account.unmute_notifications": "@{name} నుంచి ప్రకటనలపై మ్యూట్ ని తొలగించు",
@@ -65,7 +69,7 @@
"compose_form.hashtag_warning": "ఈ టూట్ అన్లిస్టెడ్ కాబట్టి ఏ హాష్ ట్యాగ్ క్రిందకూ రాదు. పబ్లిక్ టూట్ లను మాత్రమే హాష్ ట్యాగ్ ద్వారా శోధించవచ్చు.",
"compose_form.lock_disclaimer": "మీ ఖాతా {locked} చేయబడలేదు. ఎవరైనా మిమ్మల్ని అనుసరించి మీ అనుచరులకు-మాత్రమే పోస్ట్లను వీక్షించవచ్చు.",
"compose_form.lock_disclaimer.lock": "బిగించబడినది",
- "compose_form.placeholder": "మీ మనస్సులో ఏమి ఉంది?",
+ "compose_form.placeholder": "మీ మనస్సులో ఏముంది?",
"compose_form.publish": "టూట్",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.marked": "మీడియా సున్నితమైనదిగా గుర్తించబడింది",
@@ -104,18 +108,25 @@
"emoji_button.search_results": "శోధన ఫలితాలు",
"emoji_button.symbols": "చిహ్నాలు",
"emoji_button.travel": "ప్రయాణం & ప్రదేశాలు",
+ "empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "స్థానిక కాలక్రమం ఖాళీగా ఉంది. మొదలుపెట్టడానికి బహిరంగంగా ఏదో ఒకటి వ్రాయండి!",
"empty_column.direct": "మీకు ఇంకా ఏ ప్రత్యక్ష సందేశాలు లేవు. మీరు ఒకదాన్ని పంపినప్పుడు లేదా స్వీకరించినప్పుడు, అది ఇక్కడ చూపబడుతుంది.",
+ "empty_column.domain_blocks": "There are no hidden domains yet.",
+ "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
+ "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
+ "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
"empty_column.hashtag": "ఇంకా హాష్ ట్యాగ్లో ఏమీ లేదు.",
"empty_column.home": "మీ హోమ్ కాలక్రమం ఖాళీగా ఉంది! {Public} ను సందర్శించండి లేదా ఇతర వినియోగదారులను కలుసుకోవడానికి మరియు అన్వేషణ కోసం శోధనను ఉపయోగించండి.",
"empty_column.home.public_timeline": "ప్రజా కాలక్రమం",
"empty_column.list": "ఇంకా ఈ జాబితాలో ఏదీ లేదు. ఈ జాబితాలోని సభ్యులు కొత్త స్టేటస్ లను పోస్ట్ చేసినప్పుడు, అవి ఇక్కడ కనిపిస్తాయి.",
+ "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
+ "empty_column.mutes": "You haven't muted any users yet.",
"empty_column.notifications": "మీకు ఇంకా ఏ నోటిఫికేషన్లు లేవు. సంభాషణను ప్రారంభించడానికి ఇతరులతో ప్రతిస్పందించండి.",
"empty_column.public": "ఇక్కడ ఏమీ లేదు! దీన్ని నింపడానికి బహిరంగంగా ఏదైనా వ్రాయండి, లేదా ఇతర దృష్టాంతాల్లోని వినియోగదారులను అనుసరించండి",
"follow_request.authorize": "అనుమతించు",
"follow_request.reject": "తిరస్కరించు",
"getting_started.developers": "డెవలపర్లు",
- "getting_started.documentation": "Documentation",
+ "getting_started.documentation": "డాక్యుమెంటేషన్",
"getting_started.find_friends": "ట్విట్టర్ నుండి స్నేహితులను కనుగొనండి",
"getting_started.heading": "మొదలుపెడదాం",
"getting_started.invite": "వ్యక్తులను ఆహ్వానించండి",
@@ -126,19 +137,32 @@
"home.column_settings.show_reblogs": "బూస్ట్ లను చూపించు",
"home.column_settings.show_replies": "ప్రత్యుత్తరాలను చూపించు",
"keyboard_shortcuts.back": "వెనక్కి తిరిగి వెళ్ళడానికి",
+ "keyboard_shortcuts.blocked": "to open blocked users list",
"keyboard_shortcuts.boost": "బూస్ట్ చేయడానికి",
"keyboard_shortcuts.column": "నిలువు వరుసలలో ఒకదానిపై దృష్టి పెట్టడానికి",
"keyboard_shortcuts.compose": "కంపోజ్ టెక్స్ట్ఏరియా పై దృష్టి పెట్టడానికి",
"keyboard_shortcuts.description": "Description",
+ "keyboard_shortcuts.direct": "to open direct messages column",
"keyboard_shortcuts.down": "జాబితాలో క్రిందికి వెళ్ళడానికి",
"keyboard_shortcuts.enter": "to open status",
"keyboard_shortcuts.favourite": "ఇష్టపడడానికి",
+ "keyboard_shortcuts.favourites": "to open favourites list",
+ "keyboard_shortcuts.federated": "to open federated timeline",
"keyboard_shortcuts.heading": "కీబోర్డ్ సత్వరమార్గాలు",
+ "keyboard_shortcuts.home": "to open home timeline",
"keyboard_shortcuts.hotkey": "హాట్ కీ",
"keyboard_shortcuts.legend": "ఈ లెజెండ్ ప్రదర్శించడానికి",
+ "keyboard_shortcuts.local": "to open local timeline",
"keyboard_shortcuts.mention": "రచయితను ప్రస్తావించడానికి",
+ "keyboard_shortcuts.muted": "to open muted users list",
+ "keyboard_shortcuts.my_profile": "to open your profile",
+ "keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.pinned": "to open pinned toots list",
+ "keyboard_shortcuts.profile": "రచయిత ప్రొఫైల్ ను తెరవాలంటే",
"keyboard_shortcuts.reply": "ప్రత్యుత్తరం ఇవ్వడానికి",
+ "keyboard_shortcuts.requests": "to open follow requests list",
"keyboard_shortcuts.search": "శోధనపై దృష్టి పెట్టండి",
+ "keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "CW వెనుక ఉన్న పాఠ్యాన్ని చూపడానికి / దాచడానికి",
"keyboard_shortcuts.toot": "ఒక సరికొత్త టూట్ను ప్రారంభించడానికి",
"keyboard_shortcuts.unfocus": "పాఠ్యం వ్రాసే ఏరియా/శోధన పట్టిక నుండి బయటకు రావడానికి",
@@ -159,14 +183,16 @@
"missing_indicator.label": "దొరకలేదు",
"missing_indicator.sublabel": "ఈ వనరు కనుగొనబడలేదు",
"mute_modal.hide_notifications": "ఈ వినియోగదారు నుండి నోటిఫికేషన్లను దాచాలా?",
+ "navigation_bar.apps": "Mobile apps",
"navigation_bar.blocks": "బ్లాక్ చేయబడిన వినియోగదారులు",
"navigation_bar.community_timeline": "స్థానిక కాలక్రమం",
+ "navigation_bar.compose": "Compose new toot",
"navigation_bar.direct": "ప్రత్యక్ష సందేశాలు",
"navigation_bar.discover": "కనుగొను",
"navigation_bar.domain_blocks": "దాచిన డొమైన్లు",
"navigation_bar.edit_profile": "ప్రొఫైల్ని సవరించండి",
"navigation_bar.favourites": "ఇష్టపడినవి",
- "navigation_bar.filters": "Muted words",
+ "navigation_bar.filters": "మ్యూట్ చేయబడిన పదాలు",
"navigation_bar.follow_requests": "అనుసరించడానికి అభ్యర్ధనలు",
"navigation_bar.info": "ఈ దృష్టాంతం గురించి",
"navigation_bar.keyboard_shortcuts": "హాట్ కీలు",
@@ -254,10 +280,11 @@
"status.cancel_reblog_private": "బూస్ట్ను తొలగించు",
"status.cannot_reblog": "ఈ పోస్ట్ను బూస్ట్ చేయడం సాధ్యం కాదు",
"status.delete": "తొలగించు",
+ "status.detailed_status": "Detailed conversation view",
"status.direct": "@{name}కు నేరుగా సందేశం పంపు",
"status.embed": "ఎంబెడ్",
"status.favourite": "ఇష్టపడు",
- "status.filtered": "Filtered",
+ "status.filtered": "వడకట్టబడిన",
"status.load_more": "మరిన్ని లోడ్ చేయి",
"status.media_hidden": "మీడియా దాచబడింది",
"status.mention": "@{name}ను ప్రస్తావించు",
@@ -270,6 +297,7 @@
"status.reblog": "బూస్ట్",
"status.reblog_private": "అసలు ప్రేక్షకులకు బూస్ట్ చేయి",
"status.reblogged_by": "{name} బూస్ట్ చేసారు",
+ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.redraft": "తొలగించు & తిరగరాయు",
"status.reply": "ప్రత్యుత్తరం",
"status.replyAll": "సంభాషణకు ప్రత్యుత్తరం ఇవ్వండి",
diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json
index 1d76735a2..5340fda92 100644
--- a/app/javascript/mastodon/locales/th.json
+++ b/app/javascript/mastodon/locales/th.json
@@ -7,9 +7,12 @@
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
"account.domain_blocked": "Domain hidden",
"account.edit_profile": "Edit profile",
+ "account.endorse": "Feature on profile",
"account.follow": "Follow",
"account.followers": "Followers",
+ "account.followers.empty": "No one follows this user yet.",
"account.follows": "Follows",
+ "account.follows.empty": "This user doesn't follow anyone yet.",
"account.follows_you": "Follows you",
"account.hide_reblogs": "Hide boosts from @{name}",
"account.media": "Media",
@@ -26,6 +29,7 @@
"account.show_reblogs": "Show boosts from @{name}",
"account.unblock": "Unblock @{name}",
"account.unblock_domain": "Unhide {domain}",
+ "account.unendorse": "Don't feature on profile",
"account.unfollow": "Unfollow",
"account.unmute": "Unmute @{name}",
"account.unmute_notifications": "Unmute notifications from @{name}",
@@ -104,12 +108,19 @@
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places",
+ "empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
+ "empty_column.domain_blocks": "There are no hidden domains yet.",
+ "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
+ "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
+ "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
"empty_column.hashtag": "There is nothing in this hashtag yet.",
"empty_column.home": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.",
"empty_column.home.public_timeline": "the public timeline",
"empty_column.list": "There is nothing in this list yet.",
+ "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
+ "empty_column.mutes": "You haven't muted any users yet.",
"empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
"empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other instances to fill it up",
"follow_request.authorize": "Authorize",
@@ -126,19 +137,32 @@
"home.column_settings.show_reblogs": "Show boosts",
"home.column_settings.show_replies": "Show replies",
"keyboard_shortcuts.back": "to navigate back",
+ "keyboard_shortcuts.blocked": "to open blocked users list",
"keyboard_shortcuts.boost": "to boost",
"keyboard_shortcuts.column": "to focus a status in one of the columns",
"keyboard_shortcuts.compose": "to focus the compose textarea",
"keyboard_shortcuts.description": "Description",
+ "keyboard_shortcuts.direct": "to open direct messages column",
"keyboard_shortcuts.down": "to move down in the list",
"keyboard_shortcuts.enter": "to open status",
"keyboard_shortcuts.favourite": "to favourite",
+ "keyboard_shortcuts.favourites": "to open favourites list",
+ "keyboard_shortcuts.federated": "to open federated timeline",
"keyboard_shortcuts.heading": "Keyboard Shortcuts",
+ "keyboard_shortcuts.home": "to open home timeline",
"keyboard_shortcuts.hotkey": "Hotkey",
"keyboard_shortcuts.legend": "to display this legend",
+ "keyboard_shortcuts.local": "to open local timeline",
"keyboard_shortcuts.mention": "to mention author",
+ "keyboard_shortcuts.muted": "to open muted users list",
+ "keyboard_shortcuts.my_profile": "to open your profile",
+ "keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.pinned": "to open pinned toots list",
+ "keyboard_shortcuts.profile": "to open author's profile",
"keyboard_shortcuts.reply": "to reply",
+ "keyboard_shortcuts.requests": "to open follow requests list",
"keyboard_shortcuts.search": "to focus search",
+ "keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
"keyboard_shortcuts.toot": "to start a brand new toot",
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
@@ -159,8 +183,10 @@
"missing_indicator.label": "Not found",
"missing_indicator.sublabel": "This resource could not be found",
"mute_modal.hide_notifications": "Hide notifications from this user?",
+ "navigation_bar.apps": "Mobile apps",
"navigation_bar.blocks": "Blocked users",
"navigation_bar.community_timeline": "Local timeline",
+ "navigation_bar.compose": "Compose new toot",
"navigation_bar.direct": "Direct messages",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Hidden domains",
@@ -254,6 +280,7 @@
"status.cancel_reblog_private": "Unboost",
"status.cannot_reblog": "This post cannot be boosted",
"status.delete": "Delete",
+ "status.detailed_status": "Detailed conversation view",
"status.direct": "Direct message @{name}",
"status.embed": "Embed",
"status.favourite": "Favourite",
@@ -270,6 +297,7 @@
"status.reblog": "Boost",
"status.reblog_private": "Boost to original audience",
"status.reblogged_by": "{name} boosted",
+ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.redraft": "Delete & re-draft",
"status.reply": "Reply",
"status.replyAll": "Reply to thread",
diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json
index 03a09019f..cec07b87e 100644
--- a/app/javascript/mastodon/locales/tr.json
+++ b/app/javascript/mastodon/locales/tr.json
@@ -7,9 +7,12 @@
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
"account.domain_blocked": "Domain hidden",
"account.edit_profile": "Profili düzenle",
+ "account.endorse": "Feature on profile",
"account.follow": "Takip et",
"account.followers": "Takipçiler",
+ "account.followers.empty": "No one follows this user yet.",
"account.follows": "Takip ettikleri",
+ "account.follows.empty": "This user doesn't follow anyone yet.",
"account.follows_you": "Seni takip ediyor",
"account.hide_reblogs": "Hide boosts from @{name}",
"account.media": "Media",
@@ -26,6 +29,7 @@
"account.show_reblogs": "Show boosts from @{name}",
"account.unblock": "Engeli kaldır @{name}",
"account.unblock_domain": "Unhide {domain}",
+ "account.unendorse": "Don't feature on profile",
"account.unfollow": "Takipten vazgeç",
"account.unmute": "Sesi aç @{name}",
"account.unmute_notifications": "Unmute notifications from @{name}",
@@ -104,12 +108,19 @@
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Semboller",
"emoji_button.travel": "Seyahat ve Yerler",
+ "empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "Yerel zaman tüneliniz boş. Daha fazla eğlence için herkese açık bir gönderi paylaşın.",
"empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
+ "empty_column.domain_blocks": "There are no hidden domains yet.",
+ "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
+ "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
+ "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
"empty_column.hashtag": "Henüz bu hashtag’e sahip hiçbir gönderi yok.",
"empty_column.home": "Henüz kimseyi takip etmiyorsunuz. {public} ziyaret edebilir veya arama kısmını kullanarak diğer kullanıcılarla iletişime geçebilirsiniz.",
"empty_column.home.public_timeline": "herkese açık zaman tüneli",
"empty_column.list": "There is nothing in this list yet.",
+ "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
+ "empty_column.mutes": "You haven't muted any users yet.",
"empty_column.notifications": "Henüz hiçbir bildiriminiz yok. Diğer insanlarla sobhet edebilmek için etkileşime geçebilirsiniz.",
"empty_column.public": "Burada hiçbir gönderi yok! Herkese açık bir şeyler yazın, veya diğer sunucudaki insanları takip ederek bu alanın dolmasını sağlayın",
"follow_request.authorize": "Yetkilendir",
@@ -126,19 +137,32 @@
"home.column_settings.show_reblogs": "Boost edilenleri göster",
"home.column_settings.show_replies": "Cevapları göster",
"keyboard_shortcuts.back": "to navigate back",
+ "keyboard_shortcuts.blocked": "to open blocked users list",
"keyboard_shortcuts.boost": "to boost",
"keyboard_shortcuts.column": "to focus a status in one of the columns",
"keyboard_shortcuts.compose": "to focus the compose textarea",
"keyboard_shortcuts.description": "Description",
+ "keyboard_shortcuts.direct": "to open direct messages column",
"keyboard_shortcuts.down": "to move down in the list",
"keyboard_shortcuts.enter": "to open status",
"keyboard_shortcuts.favourite": "to favourite",
+ "keyboard_shortcuts.favourites": "to open favourites list",
+ "keyboard_shortcuts.federated": "to open federated timeline",
"keyboard_shortcuts.heading": "Keyboard Shortcuts",
+ "keyboard_shortcuts.home": "to open home timeline",
"keyboard_shortcuts.hotkey": "Hotkey",
"keyboard_shortcuts.legend": "to display this legend",
+ "keyboard_shortcuts.local": "to open local timeline",
"keyboard_shortcuts.mention": "to mention author",
+ "keyboard_shortcuts.muted": "to open muted users list",
+ "keyboard_shortcuts.my_profile": "to open your profile",
+ "keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.pinned": "to open pinned toots list",
+ "keyboard_shortcuts.profile": "to open author's profile",
"keyboard_shortcuts.reply": "to reply",
+ "keyboard_shortcuts.requests": "to open follow requests list",
"keyboard_shortcuts.search": "to focus search",
+ "keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
"keyboard_shortcuts.toot": "to start a brand new toot",
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
@@ -159,8 +183,10 @@
"missing_indicator.label": "Bulunamadı",
"missing_indicator.sublabel": "This resource could not be found",
"mute_modal.hide_notifications": "Hide notifications from this user?",
+ "navigation_bar.apps": "Mobile apps",
"navigation_bar.blocks": "Engellenen kullanıcılar",
"navigation_bar.community_timeline": "Yerel zaman tüneli",
+ "navigation_bar.compose": "Compose new toot",
"navigation_bar.direct": "Direct messages",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Hidden domains",
@@ -196,7 +222,7 @@
"notifications.group": "{count} notifications",
"onboarding.done": "Tamam",
"onboarding.next": "Sıradaki",
- "onboarding.page_five.public_timelines": "Yerel zaman tüneli, bu sunucudaki herkesten gelen gönderileri gösterir.Federe zaman tüneli, kullanıcıların diğer sunuculardan takip ettiği kişilerin herkese açık gönderilerini gösterir. Bunlar herkese açık zaman tünelleridir ve yeni insanlarla tanışmak için harika yerlerdir. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new ",
+ "onboarding.page_five.public_timelines": "Yerel zaman tüneli, bu sunucudaki herkesten gelen gönderileri gösterir.Federe zaman tüneli, kullanıcıların diğer sunuculardan takip ettiği kişilerin herkese açık gönderilerini gösterir. Bunlar herkese açık zaman tünelleridir ve yeni insanlarla tanışmak için harika yerlerdir. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new",
"onboarding.page_four.home": "Takip ettiğiniz insanlardan gelen gönderileri gosteren zaman tünelidir",
"onboarding.page_four.notifications": "Herkimse sizinle iletişime geçtiğinde gelen bildirimleri gösterir.",
"onboarding.page_one.federation": "Mastodon, geniş bir sosyal ağ kurmak için birleşen bağımsız sunuculardan oluşan bir ağdır.",
@@ -254,6 +280,7 @@
"status.cancel_reblog_private": "Unboost",
"status.cannot_reblog": "Bu gönderi boost edilemez",
"status.delete": "Sil",
+ "status.detailed_status": "Detailed conversation view",
"status.direct": "Direct message @{name}",
"status.embed": "Embed",
"status.favourite": "Favorilere ekle",
@@ -270,6 +297,7 @@
"status.reblog": "Boost'la",
"status.reblog_private": "Boost to original audience",
"status.reblogged_by": "{name} boost etti",
+ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.redraft": "Delete & re-draft",
"status.reply": "Cevapla",
"status.replyAll": "Konuşmayı cevapla",
diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json
index 7bb2476d0..9a2c18e36 100644
--- a/app/javascript/mastodon/locales/uk.json
+++ b/app/javascript/mastodon/locales/uk.json
@@ -1,218 +1,244 @@
{
- "account.badges.bot": "Bot",
- "account.block": "Заблокувати",
+ "account.badges.bot": "Бот",
+ "account.block": "Заблокувати @{name}",
"account.block_domain": "Заглушити {domain}",
- "account.blocked": "Blocked",
- "account.direct": "Direct Message @{name}",
- "account.disclaimer_full": "Information below may reflect the user's profile incompletely.",
- "account.domain_blocked": "Domain hidden",
- "account.edit_profile": "Налаштування профілю",
+ "account.blocked": "Заблоковані",
+ "account.direct": "Пряме повідомлення @{name}",
+ "account.disclaimer_full": "Інфомація знизу може відображати профіль користувача неповністю.",
+ "account.domain_blocked": "Домен приховано",
+ "account.edit_profile": "Редагувати профіль",
+ "account.endorse": "Feature on profile",
"account.follow": "Підписатися",
"account.followers": "Підписники",
+ "account.followers.empty": "No one follows this user yet.",
"account.follows": "Підписки",
+ "account.follows.empty": "This user doesn't follow anyone yet.",
"account.follows_you": "Підписаний(-а) на Вас",
- "account.hide_reblogs": "Hide boosts from @{name}",
- "account.media": "Медія",
- "account.mention": "Згадати",
- "account.moved_to": "{name} has moved to:",
- "account.mute": "Заглушити",
- "account.mute_notifications": "Mute notifications from @{name}",
- "account.muted": "Muted",
- "account.posts": "Пости",
- "account.posts_with_replies": "Toots with replies",
- "account.report": "Поскаржитися",
- "account.requested": "Очікує підтвердження",
- "account.share": "Share @{name}'s profile",
- "account.show_reblogs": "Show boosts from @{name}",
+ "account.hide_reblogs": "Сховати передмухи від @{name}",
+ "account.media": "Медіа",
+ "account.mention": "Згадати @{name}",
+ "account.moved_to": "{name} переїхав на:",
+ "account.mute": "Заглушити @{name}",
+ "account.mute_notifications": "Не показувати сповіщення від @{name}",
+ "account.muted": "Заглушений",
+ "account.posts": "Дмухи",
+ "account.posts_with_replies": "Дмухи й відповіді",
+ "account.report": "Поскаржитися на @{name}",
+ "account.requested": "Очікує підтвердження. Натисніть щоб відмінити запит",
+ "account.share": "Поширити профіль @{name}",
+ "account.show_reblogs": "Показати передмухи від @{name}",
"account.unblock": "Розблокувати",
"account.unblock_domain": "Розблокувати {domain}",
+ "account.unendorse": "Don't feature on profile",
"account.unfollow": "Відписатися",
- "account.unmute": "Зняти глушення",
- "account.unmute_notifications": "Unmute notifications from @{name}",
- "account.view_full_profile": "View full profile",
- "alert.unexpected.message": "An unexpected error occurred.",
- "alert.unexpected.title": "Oops!",
+ "account.unmute": "Зняти глушення @{name}",
+ "account.unmute_notifications": "Показувати сповіщення від @{name}",
+ "account.view_full_profile": "Показати профіль повністю",
+ "alert.unexpected.message": "Трапилась неочікувана помилка.",
+ "alert.unexpected.title": "Ой!",
"boost_modal.combo": "Ви можете натиснути {combo}, щоб пропустити це наступного разу",
- "bundle_column_error.body": "Something went wrong while loading this component.",
- "bundle_column_error.retry": "Try again",
- "bundle_column_error.title": "Network error",
- "bundle_modal_error.close": "Close",
- "bundle_modal_error.message": "Something went wrong while loading this component.",
- "bundle_modal_error.retry": "Try again",
+ "bundle_column_error.body": "Щось пішло не так при завантаженні компоненту.",
+ "bundle_column_error.retry": "Спробуйте ще",
+ "bundle_column_error.title": "Помилка мережі",
+ "bundle_modal_error.close": "Закрити",
+ "bundle_modal_error.message": "Щось пішло не так при завантаженні компоненту.",
+ "bundle_modal_error.retry": "Спробувати ще",
"column.blocks": "Заблоковані користувачі",
"column.community": "Локальна стрічка",
- "column.direct": "Direct messages",
- "column.domain_blocks": "Hidden domains",
+ "column.direct": "Прямі повідомлення",
+ "column.domain_blocks": "Приховані домени",
"column.favourites": "Вподобане",
"column.follow_requests": "Запити на підписку",
"column.home": "Головна",
- "column.lists": "Lists",
+ "column.lists": "Списки",
"column.mutes": "Заглушені користувачі",
"column.notifications": "Сповіщення",
- "column.pins": "Pinned toot",
+ "column.pins": "Закріплені дмухи",
"column.public": "Глобальна стрічка",
"column_back_button.label": "Назад",
- "column_header.hide_settings": "Hide settings",
+ "column_header.hide_settings": "Приховати налаштування",
"column_header.moveLeft_settings": "Move column to the left",
- "column_header.moveRight_settings": "Move column to the right",
- "column_header.pin": "Pin",
- "column_header.show_settings": "Show settings",
- "column_header.unpin": "Unpin",
+ "column_header.moveRight_settings": "Змістити колонку вправо",
+ "column_header.pin": "Закріпити",
+ "column_header.show_settings": "Показати налаштування",
+ "column_header.unpin": "Відкріпити",
"column_subheading.settings": "Налаштування",
- "community.column_settings.media_only": "Media Only",
- "compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.",
- "compose_form.direct_message_warning_learn_more": "Learn more",
- "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
+ "community.column_settings.media_only": "Тільки медіа",
+ "compose_form.direct_message_warning": "Цей дмух буде видимий тільки згаданим користувачам.",
+ "compose_form.direct_message_warning_learn_more": "Дізнатись більше",
+ "compose_form.hashtag_warning": "Цей дмух не буде відображений у жодній стрічці хештеґу, так як він прихований. Тільки публічні дмухи можуть бути знайдені за хештеґом.",
"compose_form.lock_disclaimer": "Ваш акаунт не {locked}. Кожен може підписатися на Вас та бачити Ваші приватні пости.",
"compose_form.lock_disclaimer.lock": "приватний",
"compose_form.placeholder": "Що у Вас на думці?",
"compose_form.publish": "Дмухнути",
"compose_form.publish_loud": "{publish}!",
- "compose_form.sensitive.marked": "Media is marked as sensitive",
- "compose_form.sensitive.unmarked": "Media is not marked as sensitive",
- "compose_form.spoiler.marked": "Text is hidden behind warning",
- "compose_form.spoiler.unmarked": "Text is not hidden",
+ "compose_form.sensitive.marked": "Медіа відмічене
несприйнятливим",
+ "compose_form.sensitive.unmarked": "Медіа відмічене сприйнятливим",
+ "compose_form.spoiler.marked": "Текст приховано за попередженням",
+ "compose_form.spoiler.unmarked": "Текст видимий",
"compose_form.spoiler_placeholder": "Попередження щодо прихованого тексту",
"confirmation_modal.cancel": "Відмінити",
"confirmations.block.confirm": "Заблокувати",
"confirmations.block.message": "Ви впевнені, що хочете заблокувати {name}?",
"confirmations.delete.confirm": "Видалити",
"confirmations.delete.message": "Ви впевнені, що хочете видалити цей допис?",
- "confirmations.delete_list.confirm": "Delete",
- "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
+ "confirmations.delete_list.confirm": "Видалити",
+ "confirmations.delete_list.message": "Ви впевнені, що хочете видалити цей список назавжди?",
"confirmations.domain_block.confirm": "Сховати весь домен",
- "confirmations.domain_block.message": "Ви точно, точно впевнені, що хочете заблокувати весь домен {domain}? У більшості випадків для нормальної роботи краще заблокувати/заглушити лише деяких користувачів.",
+ "confirmations.domain_block.message": "Ви точно, точно впевнені, що хочете заблокувати весь домен {domain}? У більшості випадків для нормальної роботи краще заблокувати/заглушити лише деяких користувачів. Ви не зможете бачити контент з цього домену у будь-яких стрічках або ваших сповіщеннях. Ваші підписники з цього домену будуть відписані від вас.",
"confirmations.mute.confirm": "Заглушити",
"confirmations.mute.message": "Ви впевнені, що хочете заглушити {name}?",
- "confirmations.redraft.confirm": "Delete & redraft",
- "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
- "confirmations.unfollow.confirm": "Unfollow",
- "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
- "embed.instructions": "Embed this status on your website by copying the code below.",
- "embed.preview": "Here is what it will look like:",
+ "confirmations.redraft.confirm": "Видалити і перестворити",
+ "confirmations.redraft.message": "Ви впевнені, що хочете видалити допис і перестворити його? Ви втратите всі відповіді, передмухи та вподобайки допису.",
+ "confirmations.unfollow.confirm": "Відписатися",
+ "confirmations.unfollow.message": "Ви впевнені, що хочете відписатися від {name}?",
+ "embed.instructions": "Інтегруйте цей статус на вашому вебсайті, скопіювавши код нижче.",
+ "embed.preview": "Ось як він виглядатиме:",
"emoji_button.activity": "Заняття",
- "emoji_button.custom": "Custom",
+ "emoji_button.custom": "Особливі",
"emoji_button.flags": "Прапори",
"emoji_button.food": "Їжа та напої",
"emoji_button.label": "Вставити емодзі",
"emoji_button.nature": "Природа",
- "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
+ "emoji_button.not_found": "Немає емодзі!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Предмети",
"emoji_button.people": "Люди",
- "emoji_button.recent": "Frequently used",
+ "emoji_button.recent": "Часто використовувані",
"emoji_button.search": "Знайти...",
- "emoji_button.search_results": "Search results",
+ "emoji_button.search_results": "Результати пошуку",
"emoji_button.symbols": "Символи",
"emoji_button.travel": "Подорожі",
+ "empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "Локальна стрічка пуста. Напишіть щось, щоб розігріти народ!",
- "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
+ "empty_column.direct": "У вас ще немає прямих повідомлень. Коли ви відправите чи отримаєте якесь, воно з'явиться тут.",
+ "empty_column.domain_blocks": "There are no hidden domains yet.",
+ "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
+ "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
+ "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
"empty_column.hashtag": "Дописів з цим хештегом поки не існує.",
"empty_column.home": "Ви поки ні на кого не підписані. Погортайте {public}, або скористуйтесь пошуком, щоб освоїтися та познайомитися з іншими користувачами.",
"empty_column.home.public_timeline": "публічні стрічки",
- "empty_column.list": "There is nothing in this list yet.",
+ "empty_column.list": "Немає нічого в цьому списку. Коли його учасники дмухнуть нові статуси, вони з'являться тут.",
+ "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
+ "empty_column.mutes": "You haven't muted any users yet.",
"empty_column.notifications": "У вас ще немає сповіщень. Переписуйтесь з іншими користувачами, щоб почати розмову.",
- "empty_column.public": "Тут поки нічого немає! Опублікуйте щось, або вручну підпишіться на користувачів інших інстанцій, щоб заповнити стрічку.",
+ "empty_column.public": "Тут поки нічого немає! Опублікуйте щось, або вручну підпишіться на користувачів інших інстанцій, щоб заповнити стрічку",
"follow_request.authorize": "Авторизувати",
"follow_request.reject": "Відмовити",
- "getting_started.developers": "Developers",
- "getting_started.documentation": "Documentation",
- "getting_started.find_friends": "Find friends from Twitter",
+ "getting_started.developers": "Розробникам",
+ "getting_started.documentation": "Документація",
+ "getting_started.find_friends": "Знайдіть друзів із Twitter",
"getting_started.heading": "Ласкаво просимо",
- "getting_started.invite": "Invite people",
+ "getting_started.invite": "Запросіть людей",
"getting_started.open_source_notice": "Mastodon - програма з відкритим вихідним кодом. Ви можете допомогти проекту, або повідомити про проблеми на GitHub за адресою {github}.",
- "getting_started.security": "Security",
- "getting_started.terms": "Terms of service",
+ "getting_started.security": "Безпека",
+ "getting_started.terms": "Умови використання",
"home.column_settings.basic": "Основні",
"home.column_settings.show_reblogs": "Показувати передмухи",
"home.column_settings.show_replies": "Показувати відповіді",
- "keyboard_shortcuts.back": "to navigate back",
- "keyboard_shortcuts.boost": "to boost",
- "keyboard_shortcuts.column": "to focus a status in one of the columns",
- "keyboard_shortcuts.compose": "to focus the compose textarea",
- "keyboard_shortcuts.description": "Description",
- "keyboard_shortcuts.down": "to move down in the list",
- "keyboard_shortcuts.enter": "to open status",
- "keyboard_shortcuts.favourite": "to favourite",
- "keyboard_shortcuts.heading": "Keyboard Shortcuts",
- "keyboard_shortcuts.hotkey": "Hotkey",
- "keyboard_shortcuts.legend": "to display this legend",
- "keyboard_shortcuts.mention": "to mention author",
- "keyboard_shortcuts.reply": "to reply",
- "keyboard_shortcuts.search": "to focus search",
- "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
- "keyboard_shortcuts.toot": "to start a brand new toot",
- "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
- "keyboard_shortcuts.up": "to move up in the list",
+ "keyboard_shortcuts.back": "переходити назад",
+ "keyboard_shortcuts.blocked": "to open blocked users list",
+ "keyboard_shortcuts.boost": "передмухувати",
+ "keyboard_shortcuts.column": "фокусуватися на одній з колонок",
+ "keyboard_shortcuts.compose": "фокусуватися на полі введення",
+ "keyboard_shortcuts.description": "Опис",
+ "keyboard_shortcuts.direct": "to open direct messages column",
+ "keyboard_shortcuts.down": "рухатися вниз стрічкою",
+ "keyboard_shortcuts.enter": "відкрити статус",
+ "keyboard_shortcuts.favourite": "вподобати",
+ "keyboard_shortcuts.favourites": "to open favourites list",
+ "keyboard_shortcuts.federated": "to open federated timeline",
+ "keyboard_shortcuts.heading": "Гарячі клавіші",
+ "keyboard_shortcuts.home": "to open home timeline",
+ "keyboard_shortcuts.hotkey": "Гаряча клавіша",
+ "keyboard_shortcuts.legend": "показати підказку",
+ "keyboard_shortcuts.local": "to open local timeline",
+ "keyboard_shortcuts.mention": "згадати автора",
+ "keyboard_shortcuts.muted": "to open muted users list",
+ "keyboard_shortcuts.my_profile": "to open your profile",
+ "keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.pinned": "to open pinned toots list",
+ "keyboard_shortcuts.profile": "відкрити профіль автора",
+ "keyboard_shortcuts.reply": "відповісти",
+ "keyboard_shortcuts.requests": "to open follow requests list",
+ "keyboard_shortcuts.search": "сфокусуватися на пошуку",
+ "keyboard_shortcuts.start": "to open \"get started\" column",
+ "keyboard_shortcuts.toggle_hidden": "показати/приховати прихований текст",
+ "keyboard_shortcuts.toot": "почати писати новий дмух",
+ "keyboard_shortcuts.unfocus": "розфокусуватися з нового допису чи пошуку",
+ "keyboard_shortcuts.up": "рухатися вверх списком",
"lightbox.close": "Закрити",
- "lightbox.next": "Next",
- "lightbox.previous": "Previous",
- "lists.account.add": "Add to list",
- "lists.account.remove": "Remove from list",
- "lists.delete": "Delete list",
- "lists.edit": "Edit list",
- "lists.new.create": "Add list",
- "lists.new.title_placeholder": "New list title",
- "lists.search": "Search among people you follow",
- "lists.subheading": "Your lists",
+ "lightbox.next": "Далі",
+ "lightbox.previous": "Назад",
+ "lists.account.add": "Додати до списку",
+ "lists.account.remove": "Видалити зі списку",
+ "lists.delete": "Видалити список",
+ "lists.edit": "Редагувати список",
+ "lists.new.create": "Додати список",
+ "lists.new.title_placeholder": "Нова назва списку",
+ "lists.search": "Шукати серед людей, на яких ви підписані",
+ "lists.subheading": "Ваші списки",
"loading_indicator.label": "Завантаження...",
"media_gallery.toggle_visible": "Показати/приховати",
"missing_indicator.label": "Не знайдено",
- "missing_indicator.sublabel": "This resource could not be found",
- "mute_modal.hide_notifications": "Hide notifications from this user?",
+ "missing_indicator.sublabel": "Ресурс не знайдений",
+ "mute_modal.hide_notifications": "Приховати сповіщення від користувача?",
+ "navigation_bar.apps": "Mobile apps",
"navigation_bar.blocks": "Заблоковані користувачі",
"navigation_bar.community_timeline": "Локальна стрічка",
- "navigation_bar.direct": "Direct messages",
- "navigation_bar.discover": "Discover",
- "navigation_bar.domain_blocks": "Hidden domains",
+ "navigation_bar.compose": "Compose new toot",
+ "navigation_bar.direct": "Прямі повідомлення",
+ "navigation_bar.discover": "Знайти",
+ "navigation_bar.domain_blocks": "Приховані домени",
"navigation_bar.edit_profile": "Редагувати профіль",
"navigation_bar.favourites": "Вподобане",
- "navigation_bar.filters": "Muted words",
+ "navigation_bar.filters": "Приховані слова",
"navigation_bar.follow_requests": "Запити на підписку",
- "navigation_bar.info": "Про інстанцію",
- "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
- "navigation_bar.lists": "Lists",
+ "navigation_bar.info": "Про сайт",
+ "navigation_bar.keyboard_shortcuts": "Гарячі клавіши",
+ "navigation_bar.lists": "Списки",
"navigation_bar.logout": "Вийти",
"navigation_bar.mutes": "Заглушені користувачі",
- "navigation_bar.personal": "Personal",
- "navigation_bar.pins": "Pinned toots",
+ "navigation_bar.personal": "Особисте",
+ "navigation_bar.pins": "Закріплені дмухи",
"navigation_bar.preferences": "Налаштування",
"navigation_bar.public_timeline": "Глобальна стрічка",
- "navigation_bar.security": "Security",
- "notification.favourite": "{name} сподобався ваш допис",
+ "navigation_bar.security": "Безпека",
+ "notification.favourite": "{name} вподобав(-ла) ваш допис",
"notification.follow": "{name} підписався(-лась) на Вас",
"notification.mention": "{name} згадав(-ла) Вас",
"notification.reblog": "{name} передмухнув(-ла) Ваш допис",
"notifications.clear": "Очистити сповіщення",
- "notifications.clear_confirmation": "Ви впевнені, що хочете видалити всі сповіщеня?",
- "notifications.column_settings.alert": "Десктопні сповіщення",
+ "notifications.clear_confirmation": "Ви впевнені, що хочете назавжди видалити всі сповіщеня?",
+ "notifications.column_settings.alert": "Сповіщення на комп'ютері",
"notifications.column_settings.favourite": "Вподобане:",
"notifications.column_settings.follow": "Нові підписники:",
- "notifications.column_settings.mention": "Сповіщення:",
- "notifications.column_settings.push": "Push notifications",
- "notifications.column_settings.push_meta": "This device",
+ "notifications.column_settings.mention": "Згадки:",
+ "notifications.column_settings.push": "Push-сповіщення",
+ "notifications.column_settings.push_meta": "Цей пристрій",
"notifications.column_settings.reblog": "Передмухи:",
"notifications.column_settings.show": "Показати в колонці",
- "notifications.column_settings.sound": "Відтворювати звук",
- "notifications.group": "{count} notifications",
+ "notifications.column_settings.sound": "Відтворювати звуки",
+ "notifications.group": "{count} сповіщень",
"onboarding.done": "Готово",
"onboarding.next": "Далі",
- "onboarding.page_five.public_timelines": "Локальна стрічка показує публічні пости усіх користувачів {domain}. Глобальна стрічка показує публічні пости усіх людей, на яких підписані користувачі {domain}. Це публичні стрічки, відмінний спосіб знайти нових людей.",
+ "onboarding.page_five.public_timelines": "Локальна стрічка показує публічні пости усіх користувачів {domain}. Глобальна стрічка показує публічні пости усіх людей, на яких підписані користувачі {domain}. Це публічні стрічки, відмінний спосіб знайти нових людей.",
"onboarding.page_four.home": "Домашня стрічка показує пости користувачів, на яких Ви підписані.",
- "onboarding.page_four.notifications": "Колонка сповіщень показує моменти, коли хтось звертається до Вас.",
- "onboarding.page_one.federation": "Mastodon - це мережа незалежних серверів, які разом образовують єдину соціальну мережу. Ми называємо ці сервери інстанціями.",
+ "onboarding.page_four.notifications": "Колонка сповіщень показує моменти, коли хтось взаємодії з Вами.",
+ "onboarding.page_one.federation": "Mastodon - це мережа незалежних серверів, які разом формують єдину соціальну мережу. Ми називаємо ці сервери сайтами.",
"onboarding.page_one.full_handle": "Your full handle",
"onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.",
"onboarding.page_one.welcome": "Ласкаво просимо до Mastodon!",
- "onboarding.page_six.admin": "Адміністратором Вашої інстанції є {admin}.",
+ "onboarding.page_six.admin": "Адміністратором Вашого сайту є {admin}.",
"onboarding.page_six.almost_done": "Майже готово...",
- "onboarding.page_six.appetoot": "Bon Appetoot!",
+ "onboarding.page_six.appetoot": "Смачного дудіння!",
"onboarding.page_six.apps_available": "Для Mastodon існують {apps}, доступні для iOS, Android та інших платформ.",
- "onboarding.page_six.github": "Ви можете допомогти проектові чи сповістити про проблеми на GitHub за адресою {github}.",
- "onboarding.page_six.guidelines": "правила",
+ "onboarding.page_six.github": "Mastodon - це вільне відкрите програмне забезпечення. Ви можете допомогти проектові чи сповістити про проблеми на GitHub за адресою {github}.",
+ "onboarding.page_six.guidelines": "правила спільноти",
"onboarding.page_six.read_guidelines": "Будь ласка, прочитайте {guidelines} домену {domain}!",
- "onboarding.page_six.various_app": "мобільні додатки",
+ "onboarding.page_six.various_app": "мобільні застосунки",
"onboarding.page_three.profile": "Відредагуйте Ваш профіль, щоб змінити Ваши аватарку, інформацію та відображуване ім'я. Там Ви зможете знайти і інші налаштування.",
- "onboarding.page_three.search": "Використовуйте рядок пошуку, щоб знайти інших людей та подивитися хештеги накшталт {illustration} та {introductions}. Для того, щоб знайти людину з іншої інстанції, використовуйте їхній повний нікнейм.",
+ "onboarding.page_three.search": "Використовуйте рядок пошуку, щоб знайти інших людей та подивитися хештеги на кшталт {illustration} та {introductions}. Для того, щоб знайти людину з іншого сайту, використовуйте їхній повний нікнейм.",
"onboarding.page_two.compose": "Пишіть пости у колонці 'Написати'. Ви можете завантажувати зображення, міняти налаштування приватності та додавати попередження за допомогою піктограм знизу.",
"onboarding.skip": "Пропустити",
"privacy.change": "Змінити видимість допису",
@@ -224,17 +250,17 @@
"privacy.public.short": "Публічний",
"privacy.unlisted.long": "Не показувати у публічних стрічках",
"privacy.unlisted.short": "Прихований",
- "regeneration_indicator.label": "Loading…",
- "regeneration_indicator.sublabel": "Your home feed is being prepared!",
- "relative_time.days": "{number}d",
- "relative_time.hours": "{number}h",
- "relative_time.just_now": "now",
- "relative_time.minutes": "{number}m",
- "relative_time.seconds": "{number}s",
+ "regeneration_indicator.label": "Завантаження…",
+ "regeneration_indicator.sublabel": "Ваша домашня стрічка готова!",
+ "relative_time.days": "{number}д",
+ "relative_time.hours": "{number}г",
+ "relative_time.just_now": "щойно",
+ "relative_time.minutes": "{number}х",
+ "relative_time.seconds": "{number}с",
"reply_indicator.cancel": "Відмінити",
- "report.forward": "Forward to {target}",
- "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
- "report.hint": "The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:",
+ "report.forward": "Надіслати до {target}",
+ "report.forward_hint": "Це аккаунт з іншого серверу. Відправити анонімізовану копію скарги і туди?",
+ "report.hint": "Скаргу буде відправлено модераторам Вашого сайту. Ви можете надати їм пояснення, чому ви скаржитесь на аккаунт нижче:",
"report.placeholder": "Додаткові коментарі",
"report.submit": "Відправити",
"report.target": "Скаржимося на",
@@ -254,6 +280,7 @@
"status.cancel_reblog_private": "Unboost",
"status.cannot_reblog": "Цей допис не може бути передмухнутий",
"status.delete": "Видалити",
+ "status.detailed_status": "Detailed conversation view",
"status.direct": "Direct message @{name}",
"status.embed": "Embed",
"status.favourite": "Подобається",
@@ -270,6 +297,7 @@
"status.reblog": "Передмухнути",
"status.reblog_private": "Boost to original audience",
"status.reblogged_by": "{name} передмухнув(-ла)",
+ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.redraft": "Delete & re-draft",
"status.reply": "Відповісти",
"status.replyAll": "Відповісти на тред",
@@ -287,22 +315,22 @@
"tabs_bar.home": "Головна",
"tabs_bar.local_timeline": "Локальна",
"tabs_bar.notifications": "Сповіщення",
- "tabs_bar.search": "Search",
+ "tabs_bar.search": "Пошук",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
- "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
+ "ui.beforeunload": "Вашу чернетку буде втрачено, якщо ви покинете Mastodon.",
"upload_area.title": "Перетягніть сюди, щоб завантажити",
"upload_button.label": "Додати медіаконтент",
- "upload_form.description": "Describe for the visually impaired",
- "upload_form.focus": "Crop",
- "upload_form.undo": "Відмінити",
+ "upload_form.description": "Опишіть для людей з вадами зору",
+ "upload_form.focus": "Обрізати",
+ "upload_form.undo": "Видалити",
"upload_progress.label": "Завантаження...",
- "video.close": "Close video",
- "video.exit_fullscreen": "Exit full screen",
- "video.expand": "Expand video",
- "video.fullscreen": "Full screen",
- "video.hide": "Hide video",
- "video.mute": "Mute sound",
- "video.pause": "Pause",
- "video.play": "Play",
- "video.unmute": "Unmute sound"
+ "video.close": "Закрити відео",
+ "video.exit_fullscreen": "Вийти з повного екрану",
+ "video.expand": "Розширити відео",
+ "video.fullscreen": "На весь екран",
+ "video.hide": "Приховати відео",
+ "video.mute": "Вимкнути звук",
+ "video.pause": "Призупинити",
+ "video.play": "Програвати",
+ "video.unmute": "Увімкнути звук"
}
diff --git a/app/javascript/mastodon/locales/whitelist_ast.json b/app/javascript/mastodon/locales/whitelist_ast.json
new file mode 100644
index 000000000..0d4f101c7
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_ast.json
@@ -0,0 +1,2 @@
+[
+]
diff --git a/app/javascript/mastodon/locales/whitelist_cy.json b/app/javascript/mastodon/locales/whitelist_cy.json
new file mode 100644
index 000000000..0d4f101c7
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_cy.json
@@ -0,0 +1,2 @@
+[
+]
diff --git a/app/javascript/mastodon/locales/whitelist_ka.json b/app/javascript/mastodon/locales/whitelist_ka.json
new file mode 100644
index 000000000..0d4f101c7
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_ka.json
@@ -0,0 +1,2 @@
+[
+]
diff --git a/app/javascript/mastodon/locales/whitelist_ro.json b/app/javascript/mastodon/locales/whitelist_ro.json
new file mode 100644
index 000000000..0d4f101c7
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_ro.json
@@ -0,0 +1,2 @@
+[
+]
diff --git a/app/javascript/mastodon/locales/whitelist_ta.json b/app/javascript/mastodon/locales/whitelist_ta.json
new file mode 100644
index 000000000..0d4f101c7
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_ta.json
@@ -0,0 +1,2 @@
+[
+]
diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json
index 8b73bb8f9..cf2e1a640 100644
--- a/app/javascript/mastodon/locales/zh-CN.json
+++ b/app/javascript/mastodon/locales/zh-CN.json
@@ -7,9 +7,12 @@
"account.disclaimer_full": "此处显示的信息可能不是全部内容。",
"account.domain_blocked": "网站已屏蔽",
"account.edit_profile": "修改个人资料",
+ "account.endorse": "Feature on profile",
"account.follow": "关注",
"account.followers": "关注者",
+ "account.followers.empty": "No one follows this user yet.",
"account.follows": "正在关注",
+ "account.follows.empty": "This user doesn't follow anyone yet.",
"account.follows_you": "关注了你",
"account.hide_reblogs": "隐藏来自 @{name} 的转嘟",
"account.media": "媒体",
@@ -26,6 +29,7 @@
"account.show_reblogs": "显示来自 @{name} 的转嘟",
"account.unblock": "不再屏蔽 @{name}",
"account.unblock_domain": "不再隐藏来自 {domain} 的内容",
+ "account.unendorse": "Don't feature on profile",
"account.unfollow": "取消关注",
"account.unmute": "不再隐藏 @{name}",
"account.unmute_notifications": "不再隐藏来自 @{name} 的通知",
@@ -104,12 +108,19 @@
"emoji_button.search_results": "搜索结果",
"emoji_button.symbols": "符号",
"emoji_button.travel": "旅行和地点",
+ "empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "本站时间轴暂时没有内容,快嘟几个来抢头香啊!",
"empty_column.direct": "你还没有使用过私信。当你发出或者收到私信时,它会在这里显示。",
+ "empty_column.domain_blocks": "There are no hidden domains yet.",
+ "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
+ "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
+ "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
"empty_column.hashtag": "这个话题标签下暂时没有内容。",
"empty_column.home": "你还没有关注任何用户。快看看{public},向其他用户搭讪吧。",
"empty_column.home.public_timeline": "公共时间轴",
"empty_column.list": "这个列表中暂时没有内容。列表中用户所发送的的新嘟文将会在这里显示。",
+ "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
+ "empty_column.mutes": "You haven't muted any users yet.",
"empty_column.notifications": "你还没有收到过任何通知,快向其他用户搭讪吧。",
"empty_column.public": "这里神马都没有!写一些公开的嘟文,或者关注其他实例的用户后,这里就会有嘟文出现了哦!",
"follow_request.authorize": "同意",
@@ -126,19 +137,32 @@
"home.column_settings.show_reblogs": "显示转嘟",
"home.column_settings.show_replies": "显示回复",
"keyboard_shortcuts.back": "返回上一页",
+ "keyboard_shortcuts.blocked": "to open blocked users list",
"keyboard_shortcuts.boost": "转嘟",
"keyboard_shortcuts.column": "选择第 X 栏中的嘟文",
"keyboard_shortcuts.compose": "选择嘟文撰写框",
"keyboard_shortcuts.description": "说明",
+ "keyboard_shortcuts.direct": "to open direct messages column",
"keyboard_shortcuts.down": "在列表中让光标下移",
"keyboard_shortcuts.enter": "展开嘟文",
"keyboard_shortcuts.favourite": "收藏嘟文",
+ "keyboard_shortcuts.favourites": "to open favourites list",
+ "keyboard_shortcuts.federated": "to open federated timeline",
"keyboard_shortcuts.heading": "快捷键列表",
+ "keyboard_shortcuts.home": "to open home timeline",
"keyboard_shortcuts.hotkey": "快捷键",
"keyboard_shortcuts.legend": "显示此列表",
+ "keyboard_shortcuts.local": "to open local timeline",
"keyboard_shortcuts.mention": "提及嘟文作者",
+ "keyboard_shortcuts.muted": "to open muted users list",
+ "keyboard_shortcuts.my_profile": "to open your profile",
+ "keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.pinned": "to open pinned toots list",
+ "keyboard_shortcuts.profile": "to open author's profile",
"keyboard_shortcuts.reply": "回复嘟文",
+ "keyboard_shortcuts.requests": "to open follow requests list",
"keyboard_shortcuts.search": "选择搜索框",
+ "keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "显示或隐藏被折叠的正文",
"keyboard_shortcuts.toot": "发送新嘟文",
"keyboard_shortcuts.unfocus": "取消输入",
@@ -159,8 +183,10 @@
"missing_indicator.label": "找不到内容",
"missing_indicator.sublabel": "无法找到此资源",
"mute_modal.hide_notifications": "同时隐藏来自这个用户的通知",
+ "navigation_bar.apps": "Mobile apps",
"navigation_bar.blocks": "已屏蔽的用户",
"navigation_bar.community_timeline": "本站时间轴",
+ "navigation_bar.compose": "Compose new toot",
"navigation_bar.direct": "私信",
"navigation_bar.discover": "发现",
"navigation_bar.domain_blocks": "已屏蔽的网站",
@@ -254,6 +280,7 @@
"status.cancel_reblog_private": "取消转嘟",
"status.cannot_reblog": "无法转嘟这条嘟文",
"status.delete": "删除",
+ "status.detailed_status": "Detailed conversation view",
"status.direct": "发送私信给 @{name}",
"status.embed": "嵌入",
"status.favourite": "收藏",
@@ -270,6 +297,7 @@
"status.reblog": "转嘟",
"status.reblog_private": "转嘟给原有关注者",
"status.reblogged_by": "{name} 转嘟了",
+ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.redraft": "删除并重新编辑",
"status.reply": "回复",
"status.replyAll": "回复所有人",
diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json
index 21c3e6154..dbad69191 100644
--- a/app/javascript/mastodon/locales/zh-HK.json
+++ b/app/javascript/mastodon/locales/zh-HK.json
@@ -7,9 +7,12 @@
"account.disclaimer_full": "下列資料不一定完整。",
"account.domain_blocked": "服務站被隱藏",
"account.edit_profile": "修改個人資料",
+ "account.endorse": "Feature on profile",
"account.follow": "關注",
"account.followers": "關注的人",
+ "account.followers.empty": "No one follows this user yet.",
"account.follows": "正關注",
+ "account.follows.empty": "This user doesn't follow anyone yet.",
"account.follows_you": "關注你",
"account.hide_reblogs": "隱藏 @{name} 的轉推",
"account.media": "媒體",
@@ -26,6 +29,7 @@
"account.show_reblogs": "顯示 @{name} 的推文",
"account.unblock": "解除對 @{name} 的封鎖",
"account.unblock_domain": "不再隱藏 {domain}",
+ "account.unendorse": "Don't feature on profile",
"account.unfollow": "取消關注",
"account.unmute": "取消 @{name} 的靜音",
"account.unmute_notifications": "取消來自 @{name} 通知的靜音",
@@ -104,12 +108,19 @@
"emoji_button.search_results": "搜尋結果",
"emoji_button.symbols": "符號",
"emoji_button.travel": "旅遊景物",
+ "empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.community": "本站時間軸暫時未有內容,快寫一點東西來搶頭香啊!",
"empty_column.direct": "你沒有個人訊息。當你發出或接收個人訊息,就會在這裡出現。",
+ "empty_column.domain_blocks": "There are no hidden domains yet.",
+ "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
+ "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
+ "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
"empty_column.hashtag": "這個標籤暫時未有內容。",
"empty_column.home": "你還沒有關注任何用戶。快看看{public},向其他用戶搭訕吧。",
"empty_column.home.public_timeline": "公共時間軸",
"empty_column.list": "這個列表暫時未有內容。",
+ "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
+ "empty_column.mutes": "You haven't muted any users yet.",
"empty_column.notifications": "你沒有任何通知紀錄,快向其他用戶搭訕吧。",
"empty_column.public": "跨站時間軸暫時沒有內容!快寫一些公共的文章,或者關注另一些服務站的用戶吧!你和本站、友站的交流,將決定這裏出現的內容。",
"follow_request.authorize": "批准",
@@ -126,19 +137,32 @@
"home.column_settings.show_reblogs": "顯示被轉推的文章",
"home.column_settings.show_replies": "顯示回應文章",
"keyboard_shortcuts.back": "後退",
+ "keyboard_shortcuts.blocked": "to open blocked users list",
"keyboard_shortcuts.boost": "轉推",
"keyboard_shortcuts.column": "把標示移動到其中一列",
"keyboard_shortcuts.compose": "把標示移動到文字輸入區",
"keyboard_shortcuts.description": "描述",
+ "keyboard_shortcuts.direct": "to open direct messages column",
"keyboard_shortcuts.down": "在列表往下移動",
"keyboard_shortcuts.enter": "打開文章",
"keyboard_shortcuts.favourite": "收藏",
+ "keyboard_shortcuts.favourites": "to open favourites list",
+ "keyboard_shortcuts.federated": "to open federated timeline",
"keyboard_shortcuts.heading": "鍵盤快速鍵",
+ "keyboard_shortcuts.home": "to open home timeline",
"keyboard_shortcuts.hotkey": "快速鍵",
"keyboard_shortcuts.legend": "顯示這個說明",
+ "keyboard_shortcuts.local": "to open local timeline",
"keyboard_shortcuts.mention": "提及作者",
+ "keyboard_shortcuts.muted": "to open muted users list",
+ "keyboard_shortcuts.my_profile": "to open your profile",
+ "keyboard_shortcuts.notifications": "to open notifications column",
+ "keyboard_shortcuts.pinned": "to open pinned toots list",
+ "keyboard_shortcuts.profile": "to open author's profile",
"keyboard_shortcuts.reply": "回覆",
+ "keyboard_shortcuts.requests": "to open follow requests list",
"keyboard_shortcuts.search": "把標示移動到搜索",
+ "keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "顯示或隱藏被標為敏感的文字",
"keyboard_shortcuts.toot": "新的推文",
"keyboard_shortcuts.unfocus": "把標示移離文字輸入和搜索",
@@ -159,8 +183,10 @@
"missing_indicator.label": "找不到內容",
"missing_indicator.sublabel": "無法找到內容",
"mute_modal.hide_notifications": "隱藏來自這用戶的通知嗎?",
+ "navigation_bar.apps": "Mobile apps",
"navigation_bar.blocks": "被你封鎖的用戶",
"navigation_bar.community_timeline": "本站時間軸",
+ "navigation_bar.compose": "Compose new toot",
"navigation_bar.direct": "個人訊息",
"navigation_bar.discover": "探索",
"navigation_bar.domain_blocks": "隱藏的服務站",
@@ -254,6 +280,7 @@
"status.cancel_reblog_private": "取消轉推",
"status.cannot_reblog": "這篇文章無法被轉推",
"status.delete": "刪除",
+ "status.detailed_status": "Detailed conversation view",
"status.direct": "私訊 @{name}",
"status.embed": "鑲嵌",
"status.favourite": "收藏",
@@ -270,6 +297,7 @@
"status.reblog": "轉推",
"status.reblog_private": "轉推到原讀者",
"status.reblogged_by": "{name} 轉推",
+ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.redraft": "刪除並編輯",
"status.reply": "回應",
"status.replyAll": "回應所有人",
diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json
index b4a70ef70..4e437f0e0 100644
--- a/app/javascript/mastodon/locales/zh-TW.json
+++ b/app/javascript/mastodon/locales/zh-TW.json
@@ -1,15 +1,18 @@
{
"account.badges.bot": "機器人",
"account.block": "封鎖 @{name}",
- "account.block_domain": "隱藏來自 {domain} 的一切貼文",
+ "account.block_domain": "隱藏來自 {domain} 的一切嘟文",
"account.blocked": "已被封鎖的",
"account.direct": "發送私訊給 @{name}",
"account.disclaimer_full": "下列資料不一定完整。",
"account.domain_blocked": "站點被隱藏",
"account.edit_profile": "編輯使用者資訊",
+ "account.endorse": "在個人資訊頁面上推薦對方",
"account.follow": "關注",
"account.followers": "關注者",
+ "account.followers.empty": "還沒有人關注這個使用者",
"account.follows": "正在關注",
+ "account.follows.empty": "這個使用者還沒有關注任何人",
"account.follows_you": "關注你",
"account.hide_reblogs": "隱藏來自 @{name} 的轉推",
"account.media": "媒體",
@@ -26,6 +29,7 @@
"account.show_reblogs": "顯示來自 @{name} 的嘟文",
"account.unblock": "取消封鎖 @{name}",
"account.unblock_domain": "不再隱藏 {domain}",
+ "account.unendorse": "不再於個人資訊頁面上推薦對方",
"account.unfollow": "取消關注",
"account.unmute": "不再靜音 @{name}",
"account.unmute_notifications": "不再對來自 @{name} 的通知靜音",
@@ -63,10 +67,10 @@
"compose_form.direct_message_warning": "這條嘟文僅對有被提及的使用者才能看到。",
"compose_form.direct_message_warning_learn_more": "了解更多",
"compose_form.hashtag_warning": "此則推文將不會在任何主題標籤中看見,只有公開的推文可以用主題標籤來搜尋。",
- "compose_form.lock_disclaimer": "你的帳號沒有{locked}。任何人都可以關注你,看到發給關注者的貼文。",
+ "compose_form.lock_disclaimer": "你的帳號沒有{locked}。任何人都可以關注你,看到發給關注者的嘟文。",
"compose_form.lock_disclaimer.lock": "上鎖",
"compose_form.placeholder": "在想些什麼?",
- "compose_form.publish": "貼掉",
+ "compose_form.publish": "嘟掉",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.marked": "此媒體已被標註為敏感的",
"compose_form.sensitive.unmarked": "此媒體未被標註為敏感的",
@@ -88,7 +92,7 @@
"confirmations.redraft.message": "你確定要刪除這條嘟文並重新編輯它嗎? 所有相關的回覆、轉嘟與最愛都會被刪除。",
"confirmations.unfollow.confirm": "取消關注",
"confirmations.unfollow.message": "真的不要繼續關注 {name} 了嗎?",
- "embed.instructions": "要內嵌此貼文,請將以下代碼貼進你的網站。",
+ "embed.instructions": "要內嵌此嘟文,請將以下代碼貼進你的網站。",
"embed.preview": "看上去會變成這樣:",
"emoji_button.activity": "活動",
"emoji_button.custom": "自訂",
@@ -104,18 +108,25 @@
"emoji_button.search_results": "搜尋結果",
"emoji_button.symbols": "符號",
"emoji_button.travel": "旅遊與地點",
+ "empty_column.blocks": "你還沒有封鎖任何使用者。",
"empty_column.community": "本地時間軸是空的。公開寫點什麼吧!",
"empty_column.direct": "你還沒有使用過私訊。當你發出或著收到私訊時,它會在這裡顯示。",
+ "empty_column.domain_blocks": "還沒有隱藏任何網域。",
+ "empty_column.favourited_statuses": "你還沒有收藏任何嘟文。收藏後的嘟文會顯示在這裡。",
+ "empty_column.favourites": "還沒有人收藏此嘟文。如果有人收藏,會顯示在這裡。",
+ "empty_column.follow_requests": "還沒有人請求關注你。如果收到關注請求,會顯示在這裡。",
"empty_column.hashtag": "這個主題標籤下什麼都沒有。",
"empty_column.home": "你還沒關注任何人。造訪{public}或利用搜尋功能找到其他用者。",
"empty_column.home.public_timeline": "公開時間軸",
- "empty_column.list": "此份清單尚未有東西。當此清單的成員貼出了新的狀態時,它們就會出現在這裡。",
+ "empty_column.list": "此份名單尚未有東西。當此名單的成員嘟出了新的狀態時,它們就會出現在這裡。",
+ "empty_column.lists": "你還沒有建立任何名單。你建立的名單將會顯示在這裡。",
+ "empty_column.mutes": "你還沒有靜音任何使用者。",
"empty_column.notifications": "還沒有任何通知。和別的使用者互動來開始對話。",
"empty_column.public": "這裡什麼都沒有! 寫一些公開的嘟文,或著關注其他站點的使用者後,這裡就會有嘟文出現了",
"follow_request.authorize": "授權",
"follow_request.reject": "拒絕",
"getting_started.developers": "開發",
- "getting_started.documentation": "Documentation",
+ "getting_started.documentation": "文件",
"getting_started.find_friends": "尋找 Twitter 好友",
"getting_started.heading": "馬上開始",
"getting_started.invite": "邀請使用者",
@@ -126,19 +137,32 @@
"home.column_settings.show_reblogs": "顯示轉推",
"home.column_settings.show_replies": "顯示回應",
"keyboard_shortcuts.back": "回到上一個",
+ "keyboard_shortcuts.blocked": "到封鎖的使用者名單",
"keyboard_shortcuts.boost": "到轉推",
"keyboard_shortcuts.column": "選擇第 X 欄中的嘟文",
"keyboard_shortcuts.compose": "焦點移至撰寫文字區塊",
"keyboard_shortcuts.description": "描述",
+ "keyboard_shortcuts.direct": "到私訊欄",
"keyboard_shortcuts.down": "在列表往下移動",
- "keyboard_shortcuts.enter": "to open status",
+ "keyboard_shortcuts.enter": "看嘟文",
"keyboard_shortcuts.favourite": "收藏",
+ "keyboard_shortcuts.favourites": "到收藏名單",
+ "keyboard_shortcuts.federated": "到其他站點時間軸",
"keyboard_shortcuts.heading": "鍵盤快速鍵",
+ "keyboard_shortcuts.home": "到主頁時間軸",
"keyboard_shortcuts.hotkey": "快速鍵",
"keyboard_shortcuts.legend": "顯示這個說明",
+ "keyboard_shortcuts.local": "到本地時間軸",
"keyboard_shortcuts.mention": "到提到的作者",
+ "keyboard_shortcuts.muted": "到靜音的使用者列表",
+ "keyboard_shortcuts.my_profile": "到你的個人資訊頁",
+ "keyboard_shortcuts.notifications": "打開通知欄",
+ "keyboard_shortcuts.pinned": "到收藏的嘟文名單",
+ "keyboard_shortcuts.profile": "到嘟文作者的個人資訊頁",
"keyboard_shortcuts.reply": "到回應",
+ "keyboard_shortcuts.requests": "打開關注請求名單",
"keyboard_shortcuts.search": "把滑鼠移動到搜尋",
+ "keyboard_shortcuts.start": "到「馬上開始」",
"keyboard_shortcuts.toggle_hidden": "顯示或隱藏被標為敏感的嘟文",
"keyboard_shortcuts.toot": "新的嘟文",
"keyboard_shortcuts.unfocus": "取消輸入",
@@ -159,14 +183,16 @@
"missing_indicator.label": "找不到",
"missing_indicator.sublabel": "找不到此資源",
"mute_modal.hide_notifications": "隱藏來自這個使用者的通知?",
+ "navigation_bar.apps": "Mobile apps",
"navigation_bar.blocks": "封鎖的使用者",
"navigation_bar.community_timeline": "本地時間軸",
+ "navigation_bar.compose": "寫新的嘟文",
"navigation_bar.direct": "私訊",
"navigation_bar.discover": "探索",
"navigation_bar.domain_blocks": "隱藏的站點",
"navigation_bar.edit_profile": "編輯使用者資訊",
"navigation_bar.favourites": "最愛",
- "navigation_bar.filters": "Muted words",
+ "navigation_bar.filters": "消音的詞",
"navigation_bar.follow_requests": "關注請求",
"navigation_bar.info": "關於本站",
"navigation_bar.keyboard_shortcuts": "快捷鍵",
@@ -220,7 +246,7 @@
"privacy.direct.short": "私訊",
"privacy.private.long": "只有關注你的使用者能看到",
"privacy.private.short": "僅關注者",
- "privacy.public.long": "貼到公開時間軸",
+ "privacy.public.long": "嘟到公開時間軸",
"privacy.public.short": "公開",
"privacy.unlisted.long": "公開,但不會顯示在公開時間軸",
"privacy.unlisted.short": "不公開",
@@ -254,6 +280,7 @@
"status.cancel_reblog_private": "取消轉嘟",
"status.cannot_reblog": "這篇嘟文無法被轉嘟",
"status.delete": "刪除",
+ "status.detailed_status": "對話的詳細內容",
"status.direct": "發送私訊給 @{name}",
"status.embed": "嵌入",
"status.favourite": "最愛",
@@ -270,6 +297,7 @@
"status.reblog": "轉嘟",
"status.reblog_private": "轉嘟給原有關注者",
"status.reblogged_by": "{name} 轉嘟了",
+ "status.reblogs.empty": "還沒有人轉嘟。如果有,會顯示在這裡。",
"status.redraft": "刪除 & 編輯",
"status.reply": "回覆",
"status.replyAll": "回覆所有人",
diff --git a/app/javascript/mastodon/reducers/compose.js b/app/javascript/mastodon/reducers/compose.js
index 552f659c9..67d55f66f 100644
--- a/app/javascript/mastodon/reducers/compose.js
+++ b/app/javascript/mastodon/reducers/compose.js
@@ -131,7 +131,7 @@ const updateSuggestionTags = (state, token) => {
return state.merge({
suggestions: state.get('tagHistory')
- .filter(tag => tag.startsWith(prefix))
+ .filter(tag => tag.toLowerCase().startsWith(prefix.toLowerCase()))
.slice(0, 4)
.map(tag => '#' + tag),
suggestion_token: token,
diff --git a/app/javascript/mastodon/reducers/notifications.js b/app/javascript/mastodon/reducers/notifications.js
index 84d4fc698..0b29f19fa 100644
--- a/app/javascript/mastodon/reducers/notifications.js
+++ b/app/javascript/mastodon/reducers/notifications.js
@@ -26,6 +26,7 @@ const notificationToMap = notification => ImmutableMap({
id: notification.id,
type: notification.type,
account: notification.account.id,
+ created_at: notification.created_at,
status: notification.status ? notification.status.id : null,
});
diff --git a/app/javascript/mastodon/reducers/relationships.js b/app/javascript/mastodon/reducers/relationships.js
index d1caabc1c..f46049297 100644
--- a/app/javascript/mastodon/reducers/relationships.js
+++ b/app/javascript/mastodon/reducers/relationships.js
@@ -5,6 +5,8 @@ import {
ACCOUNT_UNBLOCK_SUCCESS,
ACCOUNT_MUTE_SUCCESS,
ACCOUNT_UNMUTE_SUCCESS,
+ ACCOUNT_PIN_SUCCESS,
+ ACCOUNT_UNPIN_SUCCESS,
RELATIONSHIPS_FETCH_SUCCESS,
} from '../actions/accounts';
import {
@@ -41,6 +43,8 @@ export default function relationships(state = initialState, action) {
case ACCOUNT_UNBLOCK_SUCCESS:
case ACCOUNT_MUTE_SUCCESS:
case ACCOUNT_UNMUTE_SUCCESS:
+ case ACCOUNT_PIN_SUCCESS:
+ case ACCOUNT_UNPIN_SUCCESS:
return normalizeRelationship(state, action.relationship);
case RELATIONSHIPS_FETCH_SUCCESS:
return normalizeRelationships(state, action.relationships);
diff --git a/app/javascript/mastodon/reducers/statuses.js b/app/javascript/mastodon/reducers/statuses.js
index 3abe69bce..6e3d830da 100644
--- a/app/javascript/mastodon/reducers/statuses.js
+++ b/app/javascript/mastodon/reducers/statuses.js
@@ -49,11 +49,19 @@ export default function statuses(state = initialState, action) {
return state.setIn([action.id, 'muted'], false);
case STATUS_REVEAL:
return state.withMutations(map => {
- action.ids.forEach(id => map.setIn([id, 'hidden'], false));
+ action.ids.forEach(id => {
+ if (!(state.get(id) === undefined)) {
+ map.setIn([id, 'hidden'], false);
+ }
+ });
});
case STATUS_HIDE:
return state.withMutations(map => {
- action.ids.forEach(id => map.setIn([id, 'hidden'], true));
+ action.ids.forEach(id => {
+ if (!(state.get(id) === undefined)) {
+ map.setIn([id, 'hidden'], true);
+ }
+ });
});
case TIMELINE_DELETE:
return deleteStatus(state, action.id, action.references);
diff --git a/app/javascript/mastodon/selectors/index.js b/app/javascript/mastodon/selectors/index.js
index 106198f74..70f08a8eb 100644
--- a/app/javascript/mastodon/selectors/index.js
+++ b/app/javascript/mastodon/selectors/index.js
@@ -1,5 +1,6 @@
import { createSelector } from 'reselect';
import { List as ImmutableList } from 'immutable';
+import { me } from '../initial_state';
const getAccountBase = (state, id) => state.getIn(['accounts', id], null);
const getAccountCounters = (state, id) => state.getIn(['accounts_counters', id], null);
@@ -83,7 +84,7 @@ export const makeGetStatus = () => {
statusReblog = null;
}
- const regex = regexFromFilters(filters);
+ const regex = (accountReblog || accountBase).get('id') !== me && regexFromFilters(filters);
const filtered = regex && regex.test(statusBase.get('reblog') ? statusReblog.get('search_index') : statusBase.get('search_index'));
return statusBase.withMutations(map => {
diff --git a/app/javascript/mastodon/service_worker/web_push_notifications.js b/app/javascript/mastodon/service_worker/web_push_notifications.js
index 3318bbadc..d61d916b1 100644
--- a/app/javascript/mastodon/service_worker/web_push_notifications.js
+++ b/app/javascript/mastodon/service_worker/web_push_notifications.js
@@ -80,15 +80,7 @@ const handlePush = (event) => {
// Placeholder until more information can be loaded
event.waitUntil(
- notify({
- title,
- body,
- icon,
- tag: notification_id,
- timestamp: new Date(),
- badge: '/badge.png',
- data: { access_token, preferred_locale, url: '/web/notifications' },
- }).then(() => fetchFromApi(`/api/v1/notifications/${notification_id}`, 'get', access_token)).then(notification => {
+ fetchFromApi(`/api/v1/notifications/${notification_id}`, 'get', access_token).then(notification => {
const options = {};
options.title = formatMessage(`notification.${notification.type}`, preferred_locale, { name: notification.account.display_name.length > 0 ? notification.account.display_name : notification.account.username });
@@ -112,6 +104,16 @@ const handlePush = (event) => {
}
return notify(options);
+ }).catch(() => {
+ return notify({
+ title,
+ body,
+ icon,
+ tag: notification_id,
+ timestamp: new Date(),
+ badge: '/badge.png',
+ data: { access_token, preferred_locale, url: '/web/notifications' },
+ });
})
);
};
diff --git a/app/javascript/mastodon/utils/resize_image.js b/app/javascript/mastodon/utils/resize_image.js
index 279a858ca..d1608094f 100644
--- a/app/javascript/mastodon/utils/resize_image.js
+++ b/app/javascript/mastodon/utils/resize_image.js
@@ -1,6 +1,6 @@
import EXIF from 'exif-js';
-const MAX_IMAGE_DIMENSION = 1280;
+const MAX_IMAGE_PIXELS = 1638400; // 1280x1280px
const getImageUrl = inputFile => new Promise((resolve, reject) => {
if (window.URL && URL.createObjectURL) {
@@ -73,18 +73,8 @@ const processImage = (img, { width, height, orientation, type = 'image/png' }) =
const resizeImage = (img, type = 'image/png') => new Promise((resolve, reject) => {
const { width, height } = img;
- let newWidth, newHeight;
-
- if (width > height) {
- newHeight = height * MAX_IMAGE_DIMENSION / width;
- newWidth = MAX_IMAGE_DIMENSION;
- } else if (height > width) {
- newWidth = width * MAX_IMAGE_DIMENSION / height;
- newHeight = MAX_IMAGE_DIMENSION;
- } else {
- newWidth = MAX_IMAGE_DIMENSION;
- newHeight = MAX_IMAGE_DIMENSION;
- }
+ const newWidth = Math.round(Math.sqrt(MAX_IMAGE_PIXELS * (width / height)));
+ const newHeight = Math.round(Math.sqrt(MAX_IMAGE_PIXELS * (height / width)));
getOrientation(img, type)
.then(orientation => processImage(img, {
@@ -104,7 +94,7 @@ export default inputFile => new Promise((resolve, reject) => {
}
loadImage(inputFile).then(img => {
- if (img.width < MAX_IMAGE_DIMENSION && img.height < MAX_IMAGE_DIMENSION) {
+ if (img.width * img.height < MAX_IMAGE_PIXELS) {
resolve(inputFile);
return;
}
diff --git a/app/javascript/packs/about.js b/app/javascript/packs/about.js
index 63e12da42..843cb2c87 100644
--- a/app/javascript/packs/about.js
+++ b/app/javascript/packs/about.js
@@ -1,4 +1,7 @@
import loadPolyfills from '../mastodon/load_polyfills';
+import { start } from '../mastodon/common';
+
+start();
function loaded() {
const TimelineContainer = require('../mastodon/containers/timeline_container').default;
diff --git a/app/javascript/packs/admin.js b/app/javascript/packs/admin.js
index 5dbcc03d3..ce5f70ee7 100644
--- a/app/javascript/packs/admin.js
+++ b/app/javascript/packs/admin.js
@@ -39,3 +39,10 @@ delegate(document, '.media-spoiler-hide-button', 'click', () => {
element.click();
});
});
+
+delegate(document, '#domain_block_severity', 'change', ({ target }) => {
+ const rejectMediaDiv = document.querySelector('.input.with_label.domain_block_reject_media');
+ if (rejectMediaDiv) {
+ rejectMediaDiv.style.display = (target.value === 'suspend') ? 'none' : 'block';
+ }
+});
diff --git a/app/javascript/packs/application.js b/app/javascript/packs/application.js
index 116632dea..c65ebed74 100644
--- a/app/javascript/packs/application.js
+++ b/app/javascript/packs/application.js
@@ -1,4 +1,7 @@
import loadPolyfills from '../mastodon/load_polyfills';
+import { start } from '../mastodon/common';
+
+start();
loadPolyfills().then(() => {
require('../mastodon/main').default();
diff --git a/app/javascript/packs/common.js b/app/javascript/packs/common.js
deleted file mode 100644
index 96e6f4b16..000000000
--- a/app/javascript/packs/common.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import { start } from 'rails-ujs';
-import 'font-awesome/css/font-awesome.css';
-
-require.context('../images/', true);
-
-start();
diff --git a/app/javascript/packs/public.js b/app/javascript/packs/public.js
index cc2fed3f1..c83e2889a 100644
--- a/app/javascript/packs/public.js
+++ b/app/javascript/packs/public.js
@@ -1,5 +1,8 @@
import loadPolyfills from '../mastodon/load_polyfills';
import ready from '../mastodon/ready';
+import { start } from '../mastodon/common';
+
+start();
window.addEventListener('message', e => {
const data = e.data || {};
@@ -19,15 +22,16 @@ window.addEventListener('message', e => {
function main() {
const { length } = require('stringz');
- const IntlRelativeFormat = require('intl-relativeformat').default;
+ const IntlMessageFormat = require('intl-messageformat').default;
+ const { timeAgoString } = require('../mastodon/components/relative_timestamp');
const { delegate } = require('rails-ujs');
const emojify = require('../mastodon/features/emoji/emoji').default;
const { getLocale } = require('../mastodon/locales');
- const { localeData } = getLocale();
+ const { messages } = getLocale();
const React = require('react');
const ReactDOM = require('react-dom');
-
- localeData.forEach(IntlRelativeFormat.__addLocaleData);
+ const Rellax = require('rellax');
+ const createHistory = require('history').createBrowserHistory;
ready(() => {
const locale = document.documentElement.lang;
@@ -40,8 +44,6 @@ function main() {
minute: 'numeric',
});
- const relativeFormat = new IntlRelativeFormat(locale);
-
[].forEach.call(document.querySelectorAll('.emojify'), (content) => {
content.innerHTML = emojify(content.innerHTML);
});
@@ -56,16 +58,13 @@ function main() {
[].forEach.call(document.querySelectorAll('time.time-ago'), (content) => {
const datetime = new Date(content.getAttribute('datetime'));
+ const now = new Date();
content.title = dateTimeFormat.format(datetime);
- content.textContent = relativeFormat.format(datetime);
- });
-
- [].forEach.call(document.querySelectorAll('.logo-button'), (content) => {
- content.addEventListener('click', (e) => {
- e.preventDefault();
- window.open(e.target.href, 'mastodon-intent', 'width=445,height=600,resizable=no,menubar=no,status=no,scrollbars=yes');
- });
+ content.textContent = timeAgoString({
+ formatMessage: ({ id, defaultMessage }, values) => (new IntlMessageFormat(messages[id] || defaultMessage, locale)).format(values),
+ formatDate: (date, options) => (new Intl.DateTimeFormat(locale, options)).format(date),
+ }, datetime, now, datetime.getFullYear());
});
const reactComponents = document.querySelectorAll('[data-component]');
@@ -79,6 +78,19 @@ function main() {
})
.catch(error => console.error(error));
}
+
+ const parallaxComponents = document.querySelectorAll('.parallax');
+ if (parallaxComponents.length > 0 ) {
+ new Rellax('.parallax', { speed: -1 });
+ }
+
+ const history = createHistory();
+ const detailedStatuses = document.querySelectorAll('.public-layout .detailed-status');
+ const location = history.location;
+ if (detailedStatuses.length === 1 && (!location.state || !location.state.scrolledToDetailedStatus)) {
+ detailedStatuses[0].scrollIntoView();
+ history.replace(location.pathname, { ...location.state, scrolledToDetailedStatus: true });
+ }
});
delegate(document, '.webapp-btn', 'click', ({ target, button }) => {
@@ -103,15 +115,34 @@ function main() {
return false;
});
- delegate(document, '.account_display_name', 'input', ({ target }) => {
+ delegate(document, '.modal-button', 'click', e => {
+ e.preventDefault();
+
+ let href;
+
+ if (e.target.nodeName !== 'A') {
+ href = e.target.parentNode.href;
+ } else {
+ href = e.target.href;
+ }
+
+ window.open(href, 'mastodon-intent', 'width=445,height=600,resizable=no,menubar=no,status=no,scrollbars=yes');
+ });
+
+ delegate(document, '#account_display_name', 'input', ({ target }) => {
const nameCounter = document.querySelector('.name-counter');
+ const name = document.querySelector('.card .display-name strong');
if (nameCounter) {
nameCounter.textContent = 30 - length(target.value);
}
+
+ if (name) {
+ name.innerHTML = emojify(target.value);
+ }
});
- delegate(document, '.account_note', 'input', ({ target }) => {
+ delegate(document, '#account_note', 'input', ({ target }) => {
const noteCounter = document.querySelector('.note-counter');
if (noteCounter) {
@@ -120,7 +151,7 @@ function main() {
});
delegate(document, '#account_avatar', 'change', ({ target }) => {
- const avatar = document.querySelector('.card.compact .avatar img');
+ const avatar = document.querySelector('.card .avatar img');
const [file] = target.files || [];
const url = file ? URL.createObjectURL(file) : avatar.dataset.originalSrc;
@@ -128,11 +159,21 @@ function main() {
});
delegate(document, '#account_header', 'change', ({ target }) => {
- const header = document.querySelector('.card.compact');
+ const header = document.querySelector('.card .card__img img');
const [file] = target.files || [];
const url = file ? URL.createObjectURL(file) : header.dataset.originalSrc;
- header.style.backgroundImage = `url(${url})`;
+ header.src = url;
+ });
+
+ delegate(document, '#account_locked', 'change', ({ target }) => {
+ const lock = document.querySelector('.card .display-name i');
+
+ if (target.checked) {
+ lock.style.display = 'inline';
+ } else {
+ lock.style.display = 'none';
+ }
});
}
diff --git a/app/javascript/packs/share.js b/app/javascript/packs/share.js
index e9580f648..4ef23e1b2 100644
--- a/app/javascript/packs/share.js
+++ b/app/javascript/packs/share.js
@@ -1,4 +1,7 @@
import loadPolyfills from '../mastodon/load_polyfills';
+import { start } from '../mastodon/common';
+
+start();
function loaded() {
const ComposeContainer = require('../mastodon/containers/compose_container').default;
diff --git a/app/javascript/styles/application.scss b/app/javascript/styles/application.scss
index f207c02a6..0990a4f25 100644
--- a/app/javascript/styles/application.scss
+++ b/app/javascript/styles/application.scss
@@ -10,7 +10,7 @@
@import 'mastodon/lists';
@import 'mastodon/footer';
@import 'mastodon/compact_header';
-@import 'mastodon/landing_strip';
+@import 'mastodon/widgets';
@import 'mastodon/forms';
@import 'mastodon/accounts';
@import 'mastodon/stream_entries';
@@ -21,5 +21,6 @@
@import 'mastodon/about';
@import 'mastodon/tables';
@import 'mastodon/admin';
+@import 'mastodon/dashboard';
@import 'mastodon/rtl';
@import 'mastodon/accessibility';
diff --git a/app/javascript/styles/mastodon-light/diff.scss b/app/javascript/styles/mastodon-light/diff.scss
index 84ccd326e..ac161a004 100644
--- a/app/javascript/styles/mastodon-light/diff.scss
+++ b/app/javascript/styles/mastodon-light/diff.scss
@@ -169,6 +169,10 @@
color: $white;
}
+.dropdown-menu__separator {
+ border-bottom-color: lighten($ui-base-color, 12%);
+}
+
// Change the background colors of modals
.actions-modal,
.boost-modal,
@@ -281,3 +285,87 @@
}
}
}
+
+.flash-message {
+ box-shadow: none;
+
+ &.notice {
+ background: rgba($success-green, 0.5);
+ color: lighten($success-green, 12%);
+ }
+
+ &.alert {
+ background: rgba($error-red, 0.5);
+ color: lighten($error-red, 12%);
+ }
+}
+
+.simple_form,
+.table-form {
+ .warning {
+ box-shadow: none;
+ background: rgba($error-red, 0.5);
+ text-shadow: none;
+ }
+}
+
+.status__content,
+.reply-indicator__content {
+ a {
+ color: $highlight-text-color;
+ }
+}
+
+.button.logo-button {
+ color: $white;
+
+ svg path:first-child {
+ fill: $white;
+ }
+}
+
+.public-layout {
+ .header,
+ .public-account-header,
+ .public-account-bio {
+ box-shadow: none;
+ }
+
+ .header {
+ background: lighten($ui-base-color, 12%);
+ }
+
+ .public-account-header {
+ &__image {
+ background: lighten($ui-base-color, 12%);
+
+ &::after {
+ box-shadow: none;
+ }
+ }
+
+ &__tabs {
+ &__name {
+ h1,
+ h1 small {
+ color: $white;
+ }
+ }
+ }
+ }
+}
+
+.account__section-headline a.active::after {
+ border-color: transparent transparent $white;
+}
+
+.hero-widget,
+.box-widget,
+.contact-widget,
+.landing-page__information.contact-widget,
+.moved-account-widget,
+.memoriam-widget,
+.activity-stream,
+.nothing-here {
+ box-shadow: none;
+}
diff --git a/app/javascript/styles/mastodon/about.scss b/app/javascript/styles/mastodon/about.scss
index 19e14fe95..228dd96f0 100644
--- a/app/javascript/styles/mastodon/about.scss
+++ b/app/javascript/styles/mastodon/about.scss
@@ -15,6 +15,276 @@ $small-breakpoint: 960px;
}
}
+.rich-formatting {
+ font-family: 'mastodon-font-sans-serif', sans-serif;
+ font-size: 16px;
+ font-weight: 400;
+ font-size: 16px;
+ line-height: 30px;
+ color: $darker-text-color;
+ padding-right: 10px;
+
+ a {
+ color: $highlight-text-color;
+ text-decoration: underline;
+ }
+
+ p,
+ li {
+ font-family: 'mastodon-font-sans-serif', sans-serif;
+ font-size: 16px;
+ font-weight: 400;
+ font-size: 16px;
+ line-height: 30px;
+ margin-bottom: 12px;
+ color: $darker-text-color;
+
+ a {
+ color: $highlight-text-color;
+ text-decoration: underline;
+ }
+
+ &:last-child {
+ margin-bottom: 0;
+ }
+ }
+
+ em {
+ display: inline;
+ margin: 0;
+ padding: 0;
+ font-weight: 700;
+ background: transparent;
+ font-family: inherit;
+ font-size: inherit;
+ line-height: inherit;
+ color: lighten($darker-text-color, 10%);
+ }
+
+ h1 {
+ font-family: 'mastodon-font-display', sans-serif;
+ font-size: 26px;
+ line-height: 30px;
+ font-weight: 500;
+ margin-bottom: 20px;
+ color: $secondary-text-color;
+
+ small {
+ font-family: 'mastodon-font-sans-serif', sans-serif;
+ display: block;
+ font-size: 18px;
+ font-weight: 400;
+ color: lighten($darker-text-color, 10%);
+ }
+ }
+
+ h2 {
+ font-family: 'mastodon-font-display', sans-serif;
+ font-size: 22px;
+ line-height: 26px;
+ font-weight: 500;
+ margin-bottom: 20px;
+ color: $secondary-text-color;
+ }
+
+ h3 {
+ font-family: 'mastodon-font-display', sans-serif;
+ font-size: 18px;
+ line-height: 24px;
+ font-weight: 500;
+ margin-bottom: 20px;
+ color: $secondary-text-color;
+ }
+
+ h4 {
+ font-family: 'mastodon-font-display', sans-serif;
+ font-size: 16px;
+ line-height: 24px;
+ font-weight: 500;
+ margin-bottom: 20px;
+ color: $secondary-text-color;
+ }
+
+ h5 {
+ font-family: 'mastodon-font-display', sans-serif;
+ font-size: 14px;
+ line-height: 24px;
+ font-weight: 500;
+ margin-bottom: 20px;
+ color: $secondary-text-color;
+ }
+
+ h6 {
+ font-family: 'mastodon-font-display', sans-serif;
+ font-size: 12px;
+ line-height: 24px;
+ font-weight: 500;
+ margin-bottom: 20px;
+ color: $secondary-text-color;
+ }
+
+ ul,
+ ol {
+ margin-left: 20px;
+
+ &[type='a'] {
+ list-style-type: lower-alpha;
+ }
+
+ &[type='i'] {
+ list-style-type: lower-roman;
+ }
+ }
+
+ ul {
+ list-style: disc;
+ }
+
+ ol {
+ list-style: decimal;
+ }
+
+ li > ol,
+ li > ul {
+ margin-top: 6px;
+ }
+
+ hr {
+ width: 100%;
+ height: 0;
+ border: 0;
+ border-bottom: 1px solid rgba($ui-base-lighter-color, .6);
+ margin: 20px 0;
+
+ &.spacer {
+ height: 1px;
+ border: 0;
+ }
+ }
+}
+
+.information-board {
+ background: darken($ui-base-color, 4%);
+ padding: 20px 0;
+
+ .container-alt {
+ position: relative;
+ padding-right: 280px + 15px;
+ }
+
+ &__sections {
+ display: flex;
+ justify-content: space-between;
+ flex-wrap: wrap;
+ }
+
+ &__section {
+ flex: 1 0 0;
+ font-family: 'mastodon-font-sans-serif', sans-serif;
+ font-size: 16px;
+ line-height: 28px;
+ color: $primary-text-color;
+ text-align: right;
+ padding: 10px 15px;
+
+ span,
+ strong {
+ display: block;
+ }
+
+ span {
+ &:last-child {
+ color: $secondary-text-color;
+ }
+ }
+
+ strong {
+ font-weight: 500;
+ font-size: 32px;
+ line-height: 48px;
+ }
+
+ @media screen and (max-width: $column-breakpoint) {
+ text-align: center;
+ }
+ }
+
+ .panel {
+ position: absolute;
+ width: 280px;
+ box-sizing: border-box;
+ background: darken($ui-base-color, 8%);
+ padding: 20px;
+ padding-top: 10px;
+ border-radius: 4px 4px 0 0;
+ right: 0;
+ bottom: -40px;
+
+ .panel-header {
+ font-family: 'mastodon-font-display', sans-serif;
+ font-size: 14px;
+ line-height: 24px;
+ font-weight: 500;
+ color: $darker-text-color;
+ padding-bottom: 5px;
+ margin-bottom: 15px;
+ border-bottom: 1px solid lighten($ui-base-color, 4%);
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ overflow: hidden;
+
+ a,
+ span {
+ font-weight: 400;
+ color: darken($darker-text-color, 10%);
+ }
+
+ a {
+ text-decoration: none;
+ }
+ }
+ }
+
+ .owner {
+ text-align: center;
+
+ .avatar {
+ width: 80px;
+ height: 80px;
+ margin: 0 auto;
+ margin-bottom: 15px;
+
+ img {
+ display: block;
+ width: 80px;
+ height: 80px;
+ border-radius: 48px;
+ }
+ }
+
+ .name {
+ font-size: 14px;
+
+ a {
+ display: block;
+ color: $primary-text-color;
+ text-decoration: none;
+
+ &:hover {
+ .display_name {
+ text-decoration: underline;
+ }
+ }
+ }
+
+ .username {
+ display: block;
+ color: $darker-text-color;
+ }
+ }
+ }
+}
+
.landing-page {
.grid {
display: grid;
@@ -486,128 +756,6 @@ $small-breakpoint: 960px;
}
}
- .information-board {
- background: darken($ui-base-color, 4%);
- padding: 20px 0;
-
- .container-alt {
- position: relative;
- padding-right: 280px + 15px;
- }
-
- &__sections {
- display: flex;
- justify-content: space-between;
- flex-wrap: wrap;
- }
-
- &__section {
- flex: 1 0 0;
- font-family: 'mastodon-font-sans-serif', sans-serif;
- font-size: 16px;
- line-height: 28px;
- color: $primary-text-color;
- text-align: right;
- padding: 10px 15px;
-
- span,
- strong {
- display: block;
- }
-
- span {
- &:last-child {
- color: $secondary-text-color;
- }
- }
-
- strong {
- font-weight: 500;
- font-size: 32px;
- line-height: 48px;
- }
-
- @media screen and (max-width: $column-breakpoint) {
- text-align: center;
- }
- }
-
- .panel {
- position: absolute;
- width: 280px;
- box-sizing: border-box;
- background: darken($ui-base-color, 8%);
- padding: 20px;
- padding-top: 10px;
- border-radius: 4px 4px 0 0;
- right: 0;
- bottom: -40px;
-
- .panel-header {
- font-family: 'mastodon-font-display', sans-serif;
- font-size: 14px;
- line-height: 24px;
- font-weight: 500;
- color: $darker-text-color;
- padding-bottom: 5px;
- margin-bottom: 15px;
- border-bottom: 1px solid lighten($ui-base-color, 4%);
- text-overflow: ellipsis;
- white-space: nowrap;
- overflow: hidden;
-
- a,
- span {
- font-weight: 400;
- color: darken($darker-text-color, 10%);
- }
-
- a {
- text-decoration: none;
- }
- }
- }
-
- .owner {
- text-align: center;
-
- .avatar {
- width: 80px;
- height: 80px;
- margin: 0 auto;
- margin-bottom: 15px;
-
- img {
- display: block;
- width: 80px;
- height: 80px;
- border-radius: 48px;
- }
- }
-
- .name {
- font-size: 14px;
-
- a {
- display: block;
- color: $primary-text-color;
- text-decoration: none;
-
- &:hover {
- .display_name {
- text-decoration: underline;
- }
- }
- }
-
- .username {
- display: block;
- color: $darker-text-color;
- }
- }
- }
- }
-
&.alternative {
padding: 10px 0;
@@ -642,8 +790,10 @@ $small-breakpoint: 960px;
border-radius: 4px;
padding: 25px 40px;
overflow: hidden;
+ box-sizing: border-box;
.row {
+ width: 100%;
display: flex;
flex-direction: row-reverse;
flex-wrap: wrap;
@@ -660,11 +810,20 @@ $small-breakpoint: 960px;
flex: 1 0 auto;
padding: 0 10px;
}
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ width: 100%;
+ justify-content: space-between;
+ }
}
.row__mascot {
flex: 1;
margin: 10px -50px 0 0;
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ display: none;
+ }
}
}
@@ -923,7 +1082,7 @@ $small-breakpoint: 960px;
}
@media screen and (max-width: $column-breakpoint) {
- height: 90vh;
+ display: none;
}
}
@@ -983,21 +1142,6 @@ $small-breakpoint: 960px;
}
}
- .extended-description {
- padding: 50px 0;
- font-family: 'mastodon-font-sans-serif', sans-serif;
- font-size: 16px;
- font-weight: 400;
- font-size: 16px;
- line-height: 30px;
- color: $darker-text-color;
-
- a {
- color: $highlight-text-color;
- text-decoration: underline;
- }
- }
-
.footer-links {
padding-bottom: 50px;
text-align: right;
@@ -1115,6 +1259,21 @@ $small-breakpoint: 960px;
}
&.tag-page {
+ @media screen and (max-width: $column-breakpoint) {
+ padding: 0;
+
+ .container {
+ padding: 0;
+ }
+
+ #mastodon-timeline {
+ display: block;
+ width: 100vw;
+ height: 100vh;
+ border-radius: 0;
+ }
+ }
+
.grid {
@media screen and (min-width: $small-breakpoint) {
grid-template-columns: 33% 67%;
@@ -1146,23 +1305,16 @@ $small-breakpoint: 960px;
@media screen and (max-width: $column-breakpoint) {
.grid {
- .column-1 {
- grid-column: 1;
- grid-row: 2;
- }
+ grid-gap: 0;
- .column-2 {
+ .column-1 {
grid-column: 1;
grid-row: 1;
}
- }
- .brand {
- margin: 0;
- }
-
- .landing-page__features {
- display: none;
+ .column-2 {
+ display: none;
+ }
}
}
}
diff --git a/app/javascript/styles/mastodon/accounts.scss b/app/javascript/styles/mastodon/accounts.scss
index b4612b063..c27bc0df3 100644
--- a/app/javascript/styles/mastodon/accounts.scss
+++ b/app/javascript/styles/mastodon/accounts.scss
@@ -1,243 +1,100 @@
.card {
- background-color: $base-shadow-color;
- background-size: cover;
- background-position: center;
- border-radius: 4px 4px 0 0;
- box-shadow: 0 0 15px rgba($base-shadow-color, 0.2);
- overflow: hidden;
- position: relative;
- display: flex;
-
- &::after {
- background: rgba(darken($ui-base-color, 8%), 0.5);
+ & > a {
display: block;
- content: "";
- position: absolute;
- left: 0;
- top: 0;
- width: 100%;
- height: 100%;
- z-index: 1;
- }
+ text-decoration: none;
+ color: inherit;
+ box-shadow: 0 0 15px rgba($base-shadow-color, 0.2);
- @media screen and (max-width: 740px) {
- border-radius: 0;
- box-shadow: none;
- }
+ @media screen and (max-width: $no-gap-breakpoint) {
+ box-shadow: none;
+ }
- .card__illustration {
- padding: 60px 0;
- position: relative;
- flex: 1 1 auto;
- display: flex;
- justify-content: center;
- align-items: center;
- }
-
- .card__bio {
- max-width: 260px;
- flex: 1 1 auto;
- display: flex;
- flex-direction: column;
- justify-content: space-between;
- background: rgba(darken($ui-base-color, 8%), 0.8);
- position: relative;
- z-index: 2;
- }
-
- &.compact {
- padding: 30px 0;
- border-radius: 4px;
-
- .avatar {
- margin-bottom: 0;
-
- img {
- object-fit: cover;
+ &:hover,
+ &:active,
+ &:focus {
+ .card__bar {
+ background: lighten($ui-base-color, 8%);
}
}
}
- .name {
- display: block;
- font-size: 20px;
- line-height: 18px * 1.5;
- color: $primary-text-color;
- padding: 10px 15px;
- padding-bottom: 0;
- font-weight: 500;
+ &__img {
+ height: 130px;
position: relative;
- z-index: 2;
- margin-bottom: 30px;
- overflow: hidden;
- text-overflow: ellipsis;
-
- small {
- display: block;
- font-size: 14px;
- color: $highlight-text-color;
- font-weight: 400;
- overflow: hidden;
- text-overflow: ellipsis;
-
- .fa {
- margin-left: 3px;
- }
- }
- }
-
- .avatar {
- width: 120px;
- margin: 0 auto;
- position: relative;
- z-index: 2;
+ background: darken($ui-base-color, 12%);
+ border-radius: 4px 4px 0 0;
img {
- width: 120px;
- height: 120px;
display: block;
- border-radius: 120px;
- box-shadow: 0 0 15px rgba($base-shadow-color, 0.2);
- }
- }
-
- .roles {
- margin-bottom: 30px;
- padding: 0 15px;
- }
-
- .details-counters {
- margin-top: 30px;
- display: flex;
- flex-direction: row;
- width: 100%;
- }
-
- .counter {
- width: 33.3%;
- box-sizing: border-box;
- flex: 0 0 auto;
- color: $darker-text-color;
- padding: 5px 10px 0;
- margin-bottom: 10px;
- border-right: 1px solid lighten($ui-base-color, 4%);
- cursor: default;
- text-align: center;
- position: relative;
-
- a {
- display: block;
- }
-
- &:last-child {
- border-right: 0;
- }
-
- &::after {
- display: block;
- content: "";
- position: absolute;
- bottom: -10px;
- left: 0;
width: 100%;
- border-bottom: 4px solid $ui-primary-color;
- opacity: 0.5;
- transition: all 400ms ease;
+ height: 100%;
+ margin: 0;
+ object-fit: cover;
+ border-radius: 4px 4px 0 0;
}
- &.active {
- &::after {
- border-bottom: 4px solid $highlight-text-color;
- opacity: 1;
+ @media screen and (max-width: 600px) {
+ height: 200px;
+ }
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ display: none;
+ }
+ }
+
+ &__bar {
+ position: relative;
+ padding: 15px;
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ background: lighten($ui-base-color, 4%);
+ border-radius: 0 0 4px 4px;
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ border-radius: 0;
+ }
+
+ .avatar {
+ flex: 0 0 auto;
+ width: 48px;
+ height: 48px;
+ padding-top: 2px;
+
+ img {
+ width: 100%;
+ height: 100%;
+ display: block;
+ margin: 0;
+ border-radius: 4px;
+ background: darken($ui-base-color, 8%);
}
}
- &:hover {
- &::after {
- opacity: 1;
- transition-duration: 100ms;
+ .display-name {
+ margin-left: 15px;
+ text-align: left;
+
+ strong {
+ font-size: 15px;
+ color: $primary-text-color;
+ font-weight: 500;
+ overflow: hidden;
+ text-overflow: ellipsis;
}
- }
- a {
- text-decoration: none;
- color: inherit;
- }
-
- .counter-label {
- font-size: 12px;
- display: block;
- margin-bottom: 5px;
- }
-
- .counter-number {
- font-weight: 500;
- font-size: 18px;
- color: $primary-text-color;
- font-family: 'mastodon-font-display', sans-serif;
- }
- }
-
- .bio {
- font-size: 14px;
- line-height: 18px;
- padding: 0 15px;
- color: $secondary-text-color;
- }
-
- @media screen and (max-width: 480px) {
- display: block;
-
- .card__bio {
- max-width: none;
- }
-
- .name,
- .roles {
- text-align: center;
- margin-bottom: 15px;
- }
-
- .bio {
- margin-bottom: 15px;
- }
- }
-}
-
-.card,
-.account-grid-card {
- .controls {
- position: absolute;
- top: 15px;
- left: 15px;
- z-index: 2;
-
- .icon-button {
- color: rgba($white, 0.8);
- text-decoration: none;
- font-size: 13px;
- line-height: 13px;
- font-weight: 500;
-
- .fa {
+ span {
+ display: block;
+ font-size: 14px;
+ color: $darker-text-color;
font-weight: 400;
- margin-right: 5px;
- }
-
- &:hover,
- &:active,
- &:focus {
- color: $white;
+ overflow: hidden;
+ text-overflow: ellipsis;
}
}
}
}
-.account-grid-card .controls {
- left: auto;
- right: 15px;
-}
-
.pagination {
padding: 30px 0;
text-align: center;
@@ -314,289 +171,23 @@
}
}
-.accounts-grid {
- box-shadow: 0 0 15px rgba($base-shadow-color, 0.2);
- background: darken($simple-background-color, 8%);
- border-radius: 0 0 4px 4px;
- padding: 20px 5px;
- padding-bottom: 10px;
- overflow: hidden;
- display: flex;
- flex-wrap: wrap;
- z-index: 2;
- position: relative;
-
- &.empty img {
- position: absolute;
- opacity: 0.2;
- height: 200px;
- left: 0;
- bottom: 0;
- pointer-events: none;
- }
-
- @media screen and (max-width: 740px) {
- border-radius: 0;
- box-shadow: none;
- }
-
- .account-grid-card {
- box-sizing: border-box;
- width: 335px;
- background: $simple-background-color;
- border-radius: 4px;
- color: $inverted-text-color;
- margin: 0 5px 10px;
- position: relative;
-
- @media screen and (max-width: 740px) {
- width: calc(100% - 10px);
- }
-
- .account-grid-card__header {
- overflow: hidden;
- height: 100px;
- border-radius: 4px 4px 0 0;
- background-color: lighten($inverted-text-color, 4%);
- background-size: cover;
- background-position: center;
- position: relative;
-
- &::after {
- background: rgba(darken($ui-base-color, 8%), 0.5);
- display: block;
- content: "";
- position: absolute;
- left: 0;
- top: 0;
- width: 100%;
- height: 100%;
- z-index: 1;
- }
- }
-
- .account-grid-card__avatar {
- box-sizing: border-box;
- padding: 15px;
- position: absolute;
- z-index: 2;
- top: 100px - (40px + 2px);
- left: -2px;
- }
-
- .avatar {
- width: 80px;
- height: 80px;
-
- img {
- display: block;
- width: 80px;
- height: 80px;
- border-radius: 80px;
- border: 2px solid $simple-background-color;
- background: $simple-background-color;
- }
- }
-
- .name {
- padding: 15px;
- padding-top: 10px;
- padding-left: 15px + 80px + 15px;
-
- a {
- display: block;
- color: $inverted-text-color;
- text-decoration: none;
- text-overflow: ellipsis;
- overflow: hidden;
- font-weight: 500;
-
- &:hover {
- .display_name {
- text-decoration: underline;
- }
- }
- }
- }
-
- .display_name {
- font-size: 16px;
- display: block;
- text-overflow: ellipsis;
- overflow: hidden;
- }
-
- .username {
- color: $lighter-text-color;
- font-size: 14px;
- font-weight: 400;
- }
-
- .account__header__content {
- padding: 10px 15px;
- padding-top: 15px;
- color: $lighter-text-color;
- word-wrap: break-word;
- overflow: hidden;
- text-overflow: ellipsis;
- height: 5.5em;
- position: relative;
-
- &::after {
- display: block;
- content: "";
- width: 100%;
- height: 100px;
- position: absolute;
- bottom: 0;
- background: linear-gradient(to bottom, rgba($simple-background-color, 0.01) 0%, rgba($simple-background-color, 1) 100%);
- left: 0;
- border-radius: 0 0 4px 4px;
- pointer-events: none;
- }
- }
- }
-}
-
.nothing-here {
- width: 100%;
- display: block;
+ background: $ui-base-color;
+ box-shadow: 0 0 15px rgba($base-shadow-color, 0.2);
color: $light-text-color;
font-size: 14px;
font-weight: 500;
text-align: center;
- padding: 130px 0;
- padding-top: 125px;
- margin: 0 auto;
+ display: flex;
+ justify-content: center;
+ align-items: center;
cursor: default;
-}
-
-.account-card {
border-radius: 4px;
- text-align: left;
- box-shadow: 0 0 15px rgba($base-shadow-color, 0.2);
- background: $simple-background-color;
+ padding: 20px;
+ min-height: 30vh;
- &__header {
- background: $base-shadow-color;
- background-size: cover;
- background-position: center center;
- height: 90px;
- border-radius: 4px 4px 0 0;
- }
-
- & > .detailed-status__display-name {
- display: block;
- overflow: hidden;
- display: flex;
- align-items: center;
- padding: 10px;
-
- &:last-child {
- margin-bottom: 0;
- }
-
- & > div:first-child {
- flex: 0 0 auto;
- margin-right: 10px;
- width: 48px;
- height: 48px;
- }
-
- .avatar {
- display: block;
- border-radius: 4px;
- margin: 0;
- }
-
- .display-name {
- flex: 1 0 auto;
- display: block;
- max-width: 100%;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
- cursor: default;
-
- & > .detailed-status__display-name {
- margin-bottom: 0;
- }
-
- strong {
- font-weight: 500;
- color: $ui-base-color;
-
- @each $lang in $cjk-langs {
- &:lang(#{$lang}) {
- font-weight: 700;
- }
- }
- }
-
- span {
- font-size: 14px;
- color: $light-text-color;
- }
- }
-
- &:hover {
- .display-name {
- strong {
- text-decoration: none;
- }
- }
- }
- }
-
- .counter {
- box-sizing: border-box;
- flex: 0 0 auto;
- color: $light-text-color;
- padding: 0 10px;
- cursor: default;
- text-align: center;
- position: relative;
- line-height: 24px;
-
- .counter-label {
- font-size: 12px;
- display: block;
- text-transform: uppercase;
- }
-
- .counter-number {
- font-weight: 500;
- font-size: 16px;
- color: $inverted-text-color;
- font-family: 'mastodon-font-display', sans-serif;
- }
- }
-}
-
-.activity-stream-tabs {
- background: $simple-background-color;
- border-bottom: 1px solid $ui-secondary-color;
- position: relative;
- z-index: 2;
-
- a {
- display: inline-block;
- padding: 15px;
- text-decoration: none;
- color: $highlight-text-color;
- text-transform: uppercase;
- font-weight: 500;
-
- &:hover,
- &:active,
- &:focus {
- color: lighten($highlight-text-color, 8%);
- }
-
- &.active {
- color: $inverted-text-color;
- cursor: default;
- }
+ &--under-tabs {
+ border-radius: 0 0 4px 4px;
}
}
@@ -629,14 +220,14 @@
padding: 0;
margin: 15px -15px -15px;
border: 0 none;
- border-top: 1px solid lighten($ui-base-color, 4%);
- border-bottom: 1px solid lighten($ui-base-color, 4%);
+ border-top: 1px solid lighten($ui-base-color, 12%);
+ border-bottom: 1px solid lighten($ui-base-color, 12%);
font-size: 14px;
line-height: 20px;
dl {
display: flex;
- border-bottom: 1px solid lighten($ui-base-color, 4%);
+ border-bottom: 1px solid lighten($ui-base-color, 12%);
}
dt,
diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss
index 560b11ddf..42f507296 100644
--- a/app/javascript/styles/mastodon/admin.scss
+++ b/app/javascript/styles/mastodon/admin.scss
@@ -165,6 +165,11 @@
color: $valid-value-color;
font-weight: 500;
}
+
+ .negative-hint {
+ color: $error-value-color;
+ font-weight: 500;
+ }
}
.simple_form {
diff --git a/app/javascript/styles/mastodon/basics.scss b/app/javascript/styles/mastodon/basics.scss
index c52e069be..7a6a1c490 100644
--- a/app/javascript/styles/mastodon/basics.scss
+++ b/app/javascript/styles/mastodon/basics.scss
@@ -1,13 +1,10 @@
body {
font-family: 'mastodon-font-sans-serif', sans-serif;
- background: $ui-base-color;
- background-size: cover;
- background-attachment: fixed;
+ background: darken($ui-base-color, 8%);
font-size: 13px;
line-height: 18px;
font-weight: 400;
color: $primary-text-color;
- padding-bottom: 20px;
text-rendering: optimizelegibility;
font-feature-settings: "kern";
text-size-adjust: none;
@@ -35,16 +32,24 @@ body {
height: 100%;
padding: 0;
background: $ui-base-color;
+
+ &.with-modals--active {
+ overflow-y: hidden;
+ }
}
- &.about-body {
- background: darken($ui-base-color, 8%);
- padding-bottom: 0;
+ &.lighter {
+ background: $ui-base-color;
}
- &.tag-body {
- background: darken($ui-base-color, 8%);
- padding-bottom: 0;
+ &.with-modals {
+ overflow-x: hidden;
+ overflow-y: scroll;
+
+ &--active {
+ overflow-y: hidden;
+ margin-right: 13px;
+ }
}
&.player {
@@ -52,7 +57,7 @@ body {
}
&.embed {
- background: transparent;
+ background: lighten($ui-base-color, 4%);
margin: 0;
padding-bottom: 0;
diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss
index 5fa73d58a..c2965a5d7 100644
--- a/app/javascript/styles/mastodon/components.scss
+++ b/app/javascript/styles/mastodon/components.scss
@@ -35,6 +35,17 @@
transition: all 200ms ease-out;
}
+ &--destructive {
+ transition: none;
+
+ &:active,
+ &:focus,
+ &:hover {
+ background-color: $error-red;
+ transition: none;
+ }
+ }
+
&:disabled {
background-color: $ui-primary-color;
cursor: default;
@@ -219,7 +230,6 @@
.dropdown-menu {
position: absolute;
- transform-origin: 50% 0;
}
.invisible {
@@ -628,6 +638,7 @@
overflow: hidden;
white-space: pre-wrap;
padding-top: 2px;
+ color: $primary-text-color;
&:focus {
outline: 0;
@@ -921,15 +932,31 @@
align-items: center;
display: flex;
margin-top: 8px;
+
+ &__counter {
+ display: inline-flex;
+ margin-right: 11px;
+ align-items: center;
+
+ .status__action-bar-button {
+ margin-right: 4px;
+ }
+
+ &__label {
+ display: inline-block;
+ width: 14px;
+ font-size: 12px;
+ font-weight: 500;
+ color: $action-button-color;
+ }
+ }
}
.status__action-bar-button {
- float: left;
margin-right: 18px;
}
.status__action-bar-dropdown {
- float: left;
height: 23.15px;
width: 23.15px;
}
@@ -946,6 +973,18 @@
background: lighten($ui-base-color, 4%);
padding: 14px 10px;
+ &--flex {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
+ align-items: flex-start;
+
+ .status__content,
+ .detailed-status__meta {
+ flex: 100%;
+ }
+ }
+
.status__content {
font-size: 19px;
line-height: 24px;
@@ -1224,7 +1263,6 @@ a .account__avatar {
}
.account__action-bar-dropdown {
- flex: 0 1 calc(50% - 140px);
padding: 10px;
.icon-button {
@@ -1256,9 +1294,9 @@ a .account__avatar {
.account__action-bar__tab {
text-decoration: none;
overflow: hidden;
- flex: 0 1 80px;
+ flex: 0 1 100%;
border-right: 1px solid lighten($ui-base-color, 8%);
- padding: 10px 5px;
+ padding: 10px 0;
& > span {
display: block;
@@ -1478,6 +1516,7 @@ a.account__display-name {
display: flex;
align-items: center;
justify-content: center;
+ flex-direction: column;
.image-loader__preview-canvas {
max-width: $media-modal-media-max-width;
@@ -1486,8 +1525,8 @@ a.account__display-name {
object-fit: contain;
}
- &.image-loader--loading .image-loader__preview-canvas {
- filter: blur(2px);
+ .loading-bar {
+ position: relative;
}
&.image-loader--amorphous .image-loader__preview-canvas {
@@ -1594,6 +1633,22 @@ a.account__display-name {
ul {
list-style: none;
}
+
+ &.left {
+ transform-origin: 100% 50%;
+ }
+
+ &.top {
+ transform-origin: 50% 100%;
+ }
+
+ &.bottom {
+ transform-origin: 50% 0;
+ }
+
+ &.right {
+ transform-origin: 0 50%;
+ }
}
.dropdown-menu__arrow {
@@ -2010,6 +2065,7 @@ a.account__display-name {
cursor: pointer;
flex: 0 0 auto;
font-size: 16px;
+ line-height: inherit;
border: 0;
text-align: unset;
padding: 15px;
@@ -2223,28 +2279,6 @@ a.account__display-name {
.getting-started {
color: $dark-text-color;
- p {
- color: $dark-text-color;
- font-size: 13px;
- margin-bottom: 20px;
-
- a {
- color: $dark-text-color;
- text-decoration: underline;
- }
- }
-
- a {
- text-decoration: none;
- color: $darker-text-color;
-
- &:hover,
- &:focus,
- &:active {
- text-decoration: underline;
- }
- }
-
&__footer {
flex: 0 0 auto;
padding: 10px;
@@ -2257,6 +2291,28 @@ a.account__display-name {
ul li {
display: inline;
}
+
+ p {
+ color: $dark-text-color;
+ font-size: 13px;
+ margin-bottom: 20px;
+
+ a {
+ color: $dark-text-color;
+ text-decoration: underline;
+ }
+ }
+
+ a {
+ text-decoration: none;
+ color: $darker-text-color;
+
+ &:hover,
+ &:focus,
+ &:active {
+ text-decoration: underline;
+ }
+ }
}
&__trends {
@@ -3259,7 +3315,14 @@ a.status-card {
border-radius: 4px;
margin-left: 40px;
overflow: hidden;
- transform-origin: 50% 0;
+
+ &.top {
+ transform-origin: 50% 100%;
+ }
+
+ &.bottom {
+ transform-origin: 50% 0;
+ }
}
.privacy-dropdown__option {
@@ -3331,6 +3394,10 @@ a.status-card {
}
}
+ &.top .privacy-dropdown__value {
+ border-radius: 0 0 4px 4px;
+ }
+
.privacy-dropdown__dropdown {
display: block;
box-shadow: 2px 4px 6px rgba($base-shadow-color, 0.1);
@@ -4135,6 +4202,10 @@ a.status-card {
color: $highlight-text-color;
}
+ .status__content p {
+ color: $inverted-text-color;
+ }
+
@media screen and (max-width: 480px) {
max-height: 10vh;
}
@@ -5296,7 +5367,7 @@ noscript {
dt,
dd {
box-sizing: border-box;
- padding: 14px 20px;
+ padding: 14px 5px;
text-align: center;
max-height: 48px;
overflow: hidden;
diff --git a/app/javascript/styles/mastodon/containers.scss b/app/javascript/styles/mastodon/containers.scss
index ac648c868..2c2ce5d3b 100644
--- a/app/javascript/styles/mastodon/containers.scss
+++ b/app/javascript/styles/mastodon/containers.scss
@@ -60,10 +60,6 @@
}
}
-.media-standalone__body {
- overflow: hidden;
-}
-
.account-header {
width: 400px;
margin: 0 auto;
@@ -118,3 +114,687 @@
margin-left: 8px;
}
}
+
+.grid-3 {
+ display: grid;
+ grid-gap: 10px;
+ grid-template-columns: 3fr 1fr;
+ grid-auto-columns: 25%;
+ grid-auto-rows: max-content;
+
+ .column-0 {
+ grid-column: 1/3;
+ grid-row: 1;
+ }
+
+ .column-1 {
+ grid-column: 1;
+ grid-row: 2;
+ }
+
+ .column-2 {
+ grid-column: 2;
+ grid-row: 2;
+ }
+
+ .column-3 {
+ grid-column: 1/3;
+ grid-row: 3;
+ }
+
+ .landing-page__call-to-action {
+ min-height: 100%;
+ }
+
+ @media screen and (max-width: 738px) {
+ grid-template-columns: minmax(0, 50%) minmax(0, 50%);
+
+ .landing-page__call-to-action {
+ padding: 20px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+
+ .row__information-board {
+ width: 100%;
+ justify-content: center;
+ align-items: center;
+ }
+
+ .row__mascot {
+ display: none;
+ }
+ }
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ grid-gap: 0;
+ grid-template-columns: minmax(0, 100%);
+
+ .column-0 {
+ grid-column: 1;
+ }
+
+ .column-1 {
+ grid-column: 1;
+ grid-row: 3;
+ }
+
+ .column-2 {
+ grid-column: 1;
+ grid-row: 2;
+ }
+
+ .column-3 {
+ grid-column: 1;
+ grid-row: 4;
+ }
+ }
+}
+
+.public-layout {
+ @media screen and (max-width: $no-gap-breakpoint) {
+ padding-top: 48px;
+ }
+
+ .container {
+ max-width: 960px;
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ padding: 0;
+ }
+ }
+
+ .header {
+ background: lighten($ui-base-color, 8%);
+ box-shadow: 0 0 15px rgba($base-shadow-color, 0.2);
+ border-radius: 4px;
+ height: 48px;
+ margin: 10px 0;
+ display: flex;
+ align-items: stretch;
+ justify-content: center;
+ flex-wrap: nowrap;
+ overflow: hidden;
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ position: fixed;
+ width: 100%;
+ top: 0;
+ left: 0;
+ margin: 0;
+ border-radius: 0;
+ box-shadow: none;
+ z-index: 110;
+ }
+
+ & > div {
+ flex: 1 1 33.3%;
+ min-height: 1px;
+ }
+
+ .nav-left {
+ display: flex;
+ align-items: stretch;
+ justify-content: flex-start;
+ flex-wrap: nowrap;
+ }
+
+ .nav-center {
+ display: flex;
+ align-items: stretch;
+ justify-content: center;
+ flex-wrap: nowrap;
+ }
+
+ .nav-right {
+ display: flex;
+ align-items: stretch;
+ justify-content: flex-end;
+ flex-wrap: nowrap;
+ }
+
+ .brand {
+ display: block;
+ padding: 15px;
+
+ img {
+ display: block;
+ height: 18px;
+ width: auto;
+ position: relative;
+ bottom: -2px;
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ height: 20px;
+ }
+ }
+
+ &:hover,
+ &:focus,
+ &:active {
+ background: lighten($ui-base-color, 12%);
+ }
+ }
+
+ .nav-link {
+ display: flex;
+ align-items: center;
+ padding: 0 1rem;
+ font-size: 12px;
+ font-weight: 500;
+ text-decoration: none;
+ color: $darker-text-color;
+ white-space: nowrap;
+ text-align: center;
+
+ &:hover,
+ &:focus,
+ &:active {
+ text-decoration: underline;
+ color: $primary-text-color;
+ }
+ }
+
+ .nav-button {
+ background: lighten($ui-base-color, 16%);
+ margin: 8px;
+ margin-left: 0;
+ border-radius: 4px;
+
+ &:hover,
+ &:focus,
+ &:active {
+ text-decoration: none;
+ background: lighten($ui-base-color, 20%);
+ }
+ }
+ }
+
+ $no-columns-breakpoint: 600px;
+
+ .grid {
+ display: grid;
+ grid-gap: 10px;
+ grid-template-columns: minmax(300px, 3fr) minmax(298px, 1fr);
+ grid-auto-columns: 25%;
+ grid-auto-rows: max-content;
+
+ .column-0 {
+ grid-row: 1;
+ grid-column: 1;
+ }
+
+ .column-1 {
+ grid-row: 1;
+ grid-column: 2;
+ }
+
+ @media screen and (max-width: $no-columns-breakpoint) {
+ grid-template-columns: 100%;
+ grid-gap: 0;
+
+ .column-1 {
+ display: none;
+ }
+ }
+ }
+
+ .public-account-header {
+ overflow: hidden;
+ margin-bottom: 10px;
+ box-shadow: 0 0 15px rgba($base-shadow-color, 0.2);
+
+ &.inactive {
+ opacity: 0.5;
+
+ .public-account-header__image,
+ .avatar {
+ filter: grayscale(100%);
+ }
+
+ .logo-button {
+ background-color: $secondary-text-color;
+
+ svg path:last-child {
+ fill: $secondary-text-color;
+ }
+ }
+ }
+
+ &__image {
+ border-radius: 4px 4px 0 0;
+ overflow: hidden;
+ height: 300px;
+ position: relative;
+ background: darken($ui-base-color, 12%);
+
+ &::after {
+ content: "";
+ display: block;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ box-shadow: inset 0 -1px 1px 1px rgba($base-shadow-color, 0.15);
+ top: 0;
+ left: 0;
+ }
+
+ img {
+ object-fit: cover;
+ display: block;
+ width: 100%;
+ height: 100%;
+ margin: 0;
+ border-radius: 4px 4px 0 0;
+ }
+
+ @media screen and (max-width: 600px) {
+ height: 200px;
+ }
+ }
+
+ &--no-bar {
+ margin-bottom: 0;
+
+ .public-account-header__image,
+ .public-account-header__image img {
+ border-radius: 4px;
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ border-radius: 0;
+ }
+ }
+ }
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ margin-bottom: 0;
+ box-shadow: none;
+
+ &__image::after {
+ display: none;
+ }
+
+ &__image,
+ &__image img {
+ border-radius: 0;
+ }
+ }
+
+ &__bar {
+ position: relative;
+ margin-top: -80px;
+ display: flex;
+ justify-content: flex-start;
+
+ &::before {
+ content: "";
+ display: block;
+ background: lighten($ui-base-color, 4%);
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ height: 60px;
+ border-radius: 0 0 4px 4px;
+ z-index: -1;
+ }
+
+ .avatar {
+ display: block;
+ width: 120px;
+ height: 120px;
+ padding-left: 20px - 4px;
+ flex: 0 0 auto;
+
+ img {
+ display: block;
+ width: 100%;
+ height: 100%;
+ margin: 0;
+ border-radius: 50%;
+ border: 4px solid lighten($ui-base-color, 4%);
+ background: darken($ui-base-color, 8%);
+ }
+ }
+
+ @media screen and (max-width: 600px) {
+ margin-top: 0;
+ background: lighten($ui-base-color, 4%);
+ border-radius: 0 0 4px 4px;
+ padding: 5px;
+
+ &::before {
+ display: none;
+ }
+
+ .avatar {
+ width: 48px;
+ height: 48px;
+ padding: 7px 0;
+ padding-left: 10px;
+
+ img {
+ border: 0;
+ border-radius: 4px;
+ }
+
+ @media screen and (max-width: 360px) {
+ display: none;
+ }
+ }
+ }
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ border-radius: 0;
+ }
+
+ @media screen and (max-width: $no-columns-breakpoint) {
+ flex-wrap: wrap;
+ }
+ }
+
+ &__tabs {
+ flex: 1 1 auto;
+ margin-left: 20px;
+
+ &__name {
+ padding-top: 20px;
+ padding-bottom: 8px;
+
+ h1 {
+ font-size: 20px;
+ line-height: 18px * 1.5;
+ color: $primary-text-color;
+ font-weight: 500;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ text-shadow: 1px 1px 1px $base-shadow-color;
+
+ small {
+ display: block;
+ font-size: 14px;
+ color: $primary-text-color;
+ font-weight: 400;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+ }
+ }
+
+ @media screen and (max-width: 600px) {
+ margin-left: 15px;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+
+ &__name {
+ padding-top: 0;
+ padding-bottom: 0;
+
+ h1 {
+ font-size: 16px;
+ line-height: 24px;
+ text-shadow: none;
+
+ small {
+ color: $darker-text-color;
+ }
+ }
+ }
+ }
+
+ &__tabs {
+ display: flex;
+ justify-content: flex-start;
+ align-items: stretch;
+ height: 58px;
+
+ .details-counters {
+ display: flex;
+ flex-direction: row;
+ min-width: 300px;
+ }
+
+ @media screen and (max-width: $no-columns-breakpoint) {
+ .details-counters {
+ display: none;
+ }
+ }
+
+ .counter {
+ width: 33.3%;
+ box-sizing: border-box;
+ flex: 0 0 auto;
+ color: $darker-text-color;
+ padding: 10px;
+ border-right: 1px solid lighten($ui-base-color, 4%);
+ cursor: default;
+ text-align: center;
+ position: relative;
+
+ a {
+ display: block;
+ }
+
+ &:last-child {
+ border-right: 0;
+ }
+
+ &::after {
+ display: block;
+ content: "";
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ border-bottom: 4px solid $ui-primary-color;
+ opacity: 0.5;
+ transition: all 400ms ease;
+ }
+
+ &.active {
+ &::after {
+ border-bottom: 4px solid $highlight-text-color;
+ opacity: 1;
+ }
+
+ &.inactive::after {
+ border-bottom-color: $secondary-text-color;
+ }
+ }
+
+ &:hover {
+ &::after {
+ opacity: 1;
+ transition-duration: 100ms;
+ }
+ }
+
+ a {
+ text-decoration: none;
+ color: inherit;
+ }
+
+ .counter-label {
+ font-size: 12px;
+ display: block;
+ }
+
+ .counter-number {
+ font-weight: 500;
+ font-size: 18px;
+ margin-bottom: 5px;
+ color: $primary-text-color;
+ font-family: 'mastodon-font-display', sans-serif;
+ }
+ }
+
+ .spacer {
+ flex: 1 1 auto;
+ height: 1px;
+ }
+
+ &__buttons {
+ padding: 7px 8px;
+ }
+ }
+ }
+
+ &__extra {
+ display: none;
+ margin-top: 4px;
+
+ .public-account-bio {
+ border-radius: 0;
+ box-shadow: none;
+ background: transparent;
+ margin: 0 -5px;
+
+ .account__header__fields {
+ border-top: 1px solid lighten($ui-base-color, 12%);
+ }
+
+ .roles {
+ display: none;
+ }
+ }
+
+ &__links {
+ margin-top: -15px;
+ font-size: 14px;
+ color: $darker-text-color;
+
+ a {
+ display: inline-block;
+ color: $darker-text-color;
+ text-decoration: none;
+ padding: 15px;
+
+ strong {
+ font-weight: 700;
+ color: $primary-text-color;
+ }
+ }
+ }
+
+ @media screen and (max-width: $no-columns-breakpoint) {
+ display: block;
+ flex: 100%;
+ }
+ }
+ }
+
+ .account__section-headline {
+ border-radius: 4px 4px 0 0;
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ border-radius: 0;
+ }
+ }
+
+ .detailed-status__meta {
+ margin-top: 25px;
+ }
+
+ .public-account-bio {
+ background: lighten($ui-base-color, 8%);
+ box-shadow: 0 0 15px rgba($base-shadow-color, 0.2);
+ border-radius: 4px;
+ overflow: hidden;
+ margin-bottom: 10px;
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ box-shadow: none;
+ margin-bottom: 0;
+ border-radius: 0;
+ }
+
+ .account__header__fields {
+ margin: 0;
+ border-top: 0;
+
+ a {
+ color: lighten($ui-highlight-color, 8%);
+ }
+ }
+
+ .account__header__content {
+ padding: 20px;
+ padding-bottom: 0;
+ color: $primary-text-color;
+ }
+
+ &__extra,
+ .roles {
+ padding: 20px;
+ font-size: 14px;
+ color: $darker-text-color;
+ }
+
+ .roles {
+ padding-bottom: 0;
+ }
+ }
+
+ .static-icon-button {
+ color: $action-button-color;
+ font-size: 18px;
+
+ & > span {
+ font-size: 14px;
+ font-weight: 500;
+ }
+ }
+
+ .card-grid {
+ display: flex;
+ flex-wrap: wrap;
+ min-width: 100%;
+ margin: 0 -5px;
+
+ & > div {
+ box-sizing: border-box;
+ flex: 1 0 auto;
+ width: 300px;
+ padding: 0 5px;
+ margin-bottom: 10px;
+ max-width: 33.333%;
+
+ @media screen and (max-width: 900px) {
+ max-width: 50%;
+ }
+
+ @media screen and (max-width: 600px) {
+ max-width: 100%;
+ }
+ }
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ margin: 0;
+ border-top: 1px solid lighten($ui-base-color, 8%);
+
+ & > div {
+ width: 100%;
+ padding: 0;
+ margin-bottom: 0;
+ border-bottom: 1px solid lighten($ui-base-color, 8%);
+
+ &:last-child {
+ border-bottom: 0;
+ }
+
+ .card__bar {
+ background: $ui-base-color;
+
+ &:hover,
+ &:active,
+ &:focus {
+ background: lighten($ui-base-color, 4%);
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/app/javascript/styles/mastodon/dashboard.scss b/app/javascript/styles/mastodon/dashboard.scss
new file mode 100644
index 000000000..949ca733f
--- /dev/null
+++ b/app/javascript/styles/mastodon/dashboard.scss
@@ -0,0 +1,69 @@
+.dashboard__counters {
+ display: flex;
+ flex-wrap: wrap;
+ margin: 0 -5px;
+ margin-bottom: 20px;
+
+ & > div {
+ box-sizing: border-box;
+ flex: 0 0 33.333%;
+ padding: 0 5px;
+ margin-bottom: 10px;
+
+ & > div,
+ & > a {
+ padding: 20px;
+ background: lighten($ui-base-color, 4%);
+ border-radius: 4px;
+ }
+
+ & > a {
+ text-decoration: none;
+ color: inherit;
+ display: block;
+
+ &:hover,
+ &:focus,
+ &:active {
+ background: lighten($ui-base-color, 8%);
+ }
+ }
+ }
+
+ &__num {
+ text-align: center;
+ font-weight: 500;
+ font-size: 24px;
+ color: $primary-text-color;
+ font-family: 'mastodon-font-display', sans-serif;
+ margin-bottom: 20px;
+ }
+
+ &__label {
+ font-size: 14px;
+ color: $darker-text-color;
+ text-align: center;
+ font-weight: 500;
+ }
+}
+
+.dashboard__widgets {
+ display: flex;
+ flex-wrap: wrap;
+ margin: 0 -5px;
+
+ & > div {
+ flex: 0 0 33.333%;
+ margin-bottom: 20px;
+
+ & > div {
+ padding: 0 5px;
+ }
+ }
+
+ a:not(.name-tag) {
+ color: $ui-secondary-color;
+ font-weight: 500;
+ text-decoration: none;
+ }
+}
diff --git a/app/javascript/styles/mastodon/footer.scss b/app/javascript/styles/mastodon/footer.scss
index 81eb1ce2d..4d75477e0 100644
--- a/app/javascript/styles/mastodon/footer.scss
+++ b/app/javascript/styles/mastodon/footer.scss
@@ -1,39 +1,140 @@
-.footer {
- text-align: center;
- margin-top: 30px;
- padding-bottom: 60px;
- font-size: 12px;
- color: $darker-text-color;
+.public-layout {
+ .footer {
+ text-align: left;
+ padding-top: 20px;
+ padding-bottom: 60px;
+ font-size: 12px;
+ color: lighten($ui-base-color, 34%);
- .footer__domain {
- font-weight: 500;
-
- a {
- color: inherit;
- text-decoration: none;
+ @media screen and (max-width: $no-gap-breakpoint) {
+ padding-left: 20px;
+ padding-right: 20px;
}
- }
- .powered-by,
- .single-user-login {
- font-weight: 400;
+ .grid {
+ display: grid;
+ grid-gap: 10px;
+ grid-template-columns: 1fr 1fr 2fr 1fr 1fr;
- a {
- color: inherit;
- text-decoration: underline;
- font-weight: 500;
+ .column-0 {
+ grid-column: 1;
+ grid-row: 1;
+ min-width: 0;
+ }
- &:hover {
+ .column-1 {
+ grid-column: 2;
+ grid-row: 1;
+ min-width: 0;
+ }
+
+ .column-2 {
+ grid-column: 3;
+ grid-row: 1;
+ min-width: 0;
+ text-align: center;
+
+ h4 a {
+ color: lighten($ui-base-color, 34%);
+ }
+ }
+
+ .column-3 {
+ grid-column: 4;
+ grid-row: 1;
+ min-width: 0;
+ }
+
+ .column-4 {
+ grid-column: 5;
+ grid-row: 1;
+ min-width: 0;
+ }
+
+ @media screen and (max-width: 690px) {
+ grid-template-columns: 1fr 2fr 1fr;
+
+ .column-0,
+ .column-1 {
+ grid-column: 1;
+ }
+
+ .column-1 {
+ grid-row: 2;
+ }
+
+ .column-2 {
+ grid-column: 2;
+ }
+
+ .column-3,
+ .column-4 {
+ grid-column: 3;
+ }
+
+ .column-4 {
+ grid-row: 2;
+ }
+ }
+
+ @media screen and (max-width: 600px) {
+ .column-1 {
+ display: block;
+ }
+ }
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ .column-0,
+ .column-1,
+ .column-3,
+ .column-4 {
+ display: none;
+ }
+ }
+ }
+
+ h4 {
+ text-transform: uppercase;
+ font-weight: 700;
+ margin-bottom: 8px;
+ color: $darker-text-color;
+
+ a {
+ color: inherit;
text-decoration: none;
}
}
- img {
- margin: 0 4px;
- position: relative;
- bottom: -1px;
- height: 18px;
- vertical-align: top;
+ ul a {
+ text-decoration: none;
+ color: lighten($ui-base-color, 34%);
+
+ &:hover,
+ &:active,
+ &:focus {
+ text-decoration: underline;
+ }
+ }
+
+ .brand {
+ svg {
+ display: block;
+ height: 36px;
+ width: auto;
+ margin: 0 auto;
+
+ path {
+ fill: lighten($ui-base-color, 34%);
+ }
+ }
+
+ &:hover,
+ &:focus,
+ &:active {
+ svg path {
+ fill: lighten($ui-base-color, 38%);
+ }
+ }
}
}
}
diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss
index 375c7b64b..144b4a519 100644
--- a/app/javascript/styles/mastodon/forms.scss
+++ b/app/javascript/styles/mastodon/forms.scss
@@ -50,6 +50,12 @@ code {
color: $highlight-text-color;
}
}
+
+ code {
+ border-radius: 3px;
+ padding: 0.2em 0.4em;
+ background: darken($ui-base-color, 12%);
+ }
}
.card {
@@ -154,9 +160,8 @@ code {
margin-bottom: 15px;
}
- li {
- float: left;
- width: 50%;
+ ul {
+ columns: 2;
}
}
@@ -616,3 +621,14 @@ code {
.scope-danger {
color: $warning-red;
}
+
+.form_admin_settings_site_short_description,
+.form_admin_settings_site_description,
+.form_admin_settings_site_extended_description,
+.form_admin_settings_site_terms,
+.form_admin_settings_custom_css,
+.form_admin_settings_closed_registrations_message {
+ textarea {
+ font-family: 'mastodon-font-monospace', monospace;
+ }
+}
diff --git a/app/javascript/styles/mastodon/landing_strip.scss b/app/javascript/styles/mastodon/landing_strip.scss
deleted file mode 100644
index 86614b89b..000000000
--- a/app/javascript/styles/mastodon/landing_strip.scss
+++ /dev/null
@@ -1,111 +0,0 @@
-.landing-strip,
-.memoriam-strip {
- background: rgba(darken($ui-base-color, 7%), 0.8);
- color: $darker-text-color;
- font-weight: 400;
- padding: 14px;
- border-radius: 4px;
- margin-bottom: 20px;
- display: flex;
- align-items: center;
-
- strong,
- a {
- font-weight: 500;
-
- @each $lang in $cjk-langs {
- &:lang(#{$lang}) {
- font-weight: 700;
- }
- }
- }
-
- a {
- color: inherit;
- text-decoration: underline;
- }
-
- .logo {
- width: 30px;
- height: 30px;
- flex: 0 0 auto;
- margin-right: 15px;
- }
-
- @media screen and (max-width: 740px) {
- margin-bottom: 0;
- }
-}
-
-.memoriam-strip {
- background: rgba($base-shadow-color, 0.7);
-}
-
-.moved-strip {
- padding: 14px;
- border-radius: 4px;
- background: rgba(darken($ui-base-color, 7%), 0.8);
- color: $secondary-text-color;
- font-weight: 400;
- margin-bottom: 20px;
-
- strong,
- a {
- font-weight: 500;
-
- @each $lang in $cjk-langs {
- &:lang(#{$lang}) {
- font-weight: 700;
- }
- }
- }
-
- a {
- color: inherit;
- text-decoration: underline;
-
- &.mention {
- text-decoration: none;
-
- span {
- text-decoration: none;
- }
-
- &:focus,
- &:hover,
- &:active {
- text-decoration: none;
-
- span {
- text-decoration: underline;
- }
- }
- }
- }
-
- &__message {
- margin-bottom: 15px;
-
- .fa {
- margin-right: 5px;
- color: $darker-text-color;
- }
- }
-
- &__card {
- .detailed-status__display-avatar {
- position: relative;
- cursor: pointer;
- }
-
- .detailed-status__display-name {
- margin-bottom: 0;
- text-decoration: none;
-
- span {
- color: $highlight-text-color;
- font-weight: 400;
- }
- }
- }
-}
diff --git a/app/javascript/styles/mastodon/stream_entries.scss b/app/javascript/styles/mastodon/stream_entries.scss
index 9188c2206..14306c8bd 100644
--- a/app/javascript/styles/mastodon/stream_entries.scss
+++ b/app/javascript/styles/mastodon/stream_entries.scss
@@ -1,363 +1,166 @@
.activity-stream {
- clear: both;
box-shadow: 0 0 15px rgba($base-shadow-color, 0.2);
+ border-radius: 4px;
+ overflow: hidden;
+ margin-bottom: 10px;
+ text-align: left;
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ margin-bottom: 0;
+ border-radius: 0;
+ box-shadow: none;
+ }
+
+ &--headless {
+ border-radius: 0;
+ margin: 0;
+ box-shadow: none;
+
+ .detailed-status,
+ .status {
+ border-radius: 0 !important;
+ }
+ }
+
+ div[data-component] {
+ width: 100%;
+ }
.entry {
- background: $simple-background-color;
+ background: $ui-base-color;
- .detailed-status.light,
- .status.light,
- .more.light {
- border-bottom: 1px solid $ui-secondary-color;
+ .detailed-status,
+ .status,
+ .load-more {
animation: none;
}
&:last-child {
- &,
- .detailed-status.light,
- .status.light {
+ .detailed-status,
+ .status,
+ .load-more {
border-bottom: 0;
border-radius: 0 0 4px 4px;
}
}
&:first-child {
- &,
- .detailed-status.light,
- .status.light {
+ .detailed-status,
+ .status,
+ .load-more {
border-radius: 4px 4px 0 0;
}
&:last-child {
- &,
- .detailed-status.light,
- .status.light {
+ .detailed-status,
+ .status,
+ .load-more {
border-radius: 4px;
}
}
}
@media screen and (max-width: 740px) {
- &,
- .detailed-status.light,
- .status.light {
+ .detailed-status,
+ .status,
+ .load-more {
border-radius: 0 !important;
}
}
}
- &.with-header {
- .entry {
- &:first-child {
- &,
- .detailed-status.light,
- .status.light {
- border-radius: 0;
- }
+ &--highlighted .entry {
+ background: lighten($ui-base-color, 8%);
+ }
+}
- &:last-child {
- &,
- .detailed-status.light,
- .status.light {
- border-radius: 0 0 4px 4px;
- }
- }
- }
+.button.logo-button {
+ flex: 0 auto;
+ font-size: 14px;
+ background: $ui-highlight-color;
+ color: $primary-text-color;
+ text-transform: none;
+ line-height: 36px;
+ height: auto;
+ padding: 3px 15px;
+ border: 0;
+
+ svg {
+ width: 20px;
+ height: auto;
+ vertical-align: middle;
+ margin-right: 5px;
+
+ path:first-child {
+ fill: $primary-text-color;
+ }
+
+ path:last-child {
+ fill: $ui-highlight-color;
}
}
- .media-gallery__gifv__label {
- bottom: 9px;
- }
+ &:active,
+ &:focus,
+ &:hover {
+ background: lighten($ui-highlight-color, 10%);
- .status.light {
- padding: 14px 14px 14px (48px + 14px * 2);
- position: relative;
- min-height: 48px;
- cursor: default;
-
- .status__header {
- font-size: 15px;
-
- .status__meta {
- float: right;
- font-size: 14px;
-
- .status__relative-time {
- color: $lighter-text-color;
- }
- }
- }
-
- .status__display-name {
- display: block;
- max-width: 100%;
- padding-right: 25px;
- color: $inverted-text-color;
- }
-
- .status__avatar {
- position: absolute;
- left: 14px;
- top: 14px;
- width: 48px;
- height: 48px;
-
- & > div {
- width: 48px;
- height: 48px;
- }
-
- img {
- display: block;
- border-radius: 4px;
- }
- }
-
- .display-name {
- display: block;
- max-width: 100%;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
-
- strong {
- font-weight: 500;
- color: $inverted-text-color;
-
- @each $lang in $cjk-langs {
- &:lang(#{$lang}) {
- font-weight: 700;
- }
- }
- }
-
- span {
- font-size: 14px;
- color: $light-text-color;
- }
- }
-
- .status__content {
- color: $inverted-text-color;
-
- a {
- color: $highlight-text-color;
- }
-
- a.status__content__spoiler-link {
- color: $primary-text-color;
- background: $ui-base-color;
-
- &:hover {
- background: lighten($ui-base-color, 8%);
- }
- }
+ svg path:last-child {
+ fill: lighten($ui-highlight-color, 10%);
}
}
- .detailed-status.light {
- padding: 14px;
- background: $simple-background-color;
- cursor: default;
-
- .detailed-status__display-name {
- display: block;
- overflow: hidden;
- margin-bottom: 15px;
-
- & > div {
- float: left;
- margin-right: 10px;
- }
-
- .display-name {
- display: block;
- max-width: 100%;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
-
- strong {
- font-weight: 500;
- color: $inverted-text-color;
-
- @each $lang in $cjk-langs {
- &:lang(#{$lang}) {
- font-weight: 700;
- }
- }
- }
-
- span {
- font-size: 14px;
- color: $light-text-color;
- }
- }
- }
-
- .avatar {
- width: 48px;
- height: 48px;
-
- img {
- display: block;
- border-radius: 4px;
- }
- }
-
- .status__content {
- color: $inverted-text-color;
-
- a {
- color: $highlight-text-color;
- }
-
- a.status__content__spoiler-link {
- color: $primary-text-color;
- background: $ui-base-color;
-
- &:hover {
- background: lighten($ui-base-color, 8%);
- }
- }
- }
-
- .detailed-status__meta {
- margin-top: 15px;
- color: $light-text-color;
- font-size: 14px;
- line-height: 18px;
-
- a {
- color: inherit;
- }
-
- span > span {
- font-weight: 500;
- font-size: 12px;
- margin-left: 6px;
- display: inline-block;
- }
- }
-
- .status-card {
- border-color: lighten($ui-secondary-color, 4%);
- color: $lighter-text-color;
-
- &:hover {
- background: lighten($ui-secondary-color, 4%);
- }
- }
-
- .status-card__title,
- .status-card__description {
- color: $inverted-text-color;
- }
-
- .status-card__image {
- background: $ui-secondary-color;
- }
- }
-
- .media-spoiler {
- background: $ui-base-color;
- color: $darker-text-color;
- }
-
- .pre-header {
- padding: 14px 0;
- padding-left: (48px + 14px * 2);
- padding-bottom: 0;
- margin-bottom: -4px;
- color: $light-text-color;
- font-size: 14px;
- position: relative;
-
- .pre-header__icon {
- position: absolute;
- left: (48px + 14px * 2 - 30px);
- }
-
- .status__display-name.muted strong {
- color: $light-text-color;
- }
- }
-
- .open-in-web-link {
- text-decoration: none;
-
+ &.button--destructive {
+ &:active,
+ &:focus,
&:hover {
- text-decoration: underline;
- }
- }
+ background: $error-red;
- .more {
- color: $darker-text-color;
- display: block;
- padding: 14px;
- text-align: center;
-
- &:not(:hover) {
- text-decoration: none;
- }
- }
-}
-
-.embed {
- .activity-stream {
- box-shadow: none;
- }
-}
-
-.entry {
- .detailed-status.light {
- display: flex;
- flex-wrap: wrap;
- justify-content: space-between;
- align-items: flex-start;
-
- .detailed-status__display-name {
- flex: 1;
- margin: 0 5px 15px 0;
- }
-
- .button.button-secondary.logo-button {
- flex: 0 auto;
- font-size: 14px;
- background: $ui-highlight-color;
- color: $primary-text-color;
- border: 0;
-
- svg {
- width: 20px;
- height: auto;
- vertical-align: middle;
- margin-right: 5px;
-
- path:first-child {
- fill: $primary-text-color;
- }
-
- path:last-child {
- fill: $ui-highlight-color;
- }
- }
-
- &:active,
- &:focus,
- &:hover {
- background: lighten($ui-highlight-color, 10%);
-
- svg path:last-child {
- fill: lighten($ui-highlight-color, 10%);
- }
+ svg path:last-child {
+ fill: $error-red;
}
}
+ }
- .status__content,
- .detailed-status__meta {
- flex: 100%;
+ @media screen and (max-width: $no-gap-breakpoint) {
+ svg {
+ display: none;
+ }
+ }
+}
+
+.embed,
+.public-layout {
+ .detailed-status {
+ padding: 15px;
+ }
+
+ .status {
+ padding: 15px 15px 15px (48px + 15px * 2);
+ min-height: 48px + 2px;
+
+ &__avatar {
+ left: 15px;
+ top: 17px;
+ }
+
+ &__content {
+ padding-top: 5px;
+ }
+
+ &__prepend {
+ margin-left: 48px + 15px * 2;
+ padding-top: 15px;
+ }
+
+ &__prepend-icon-wrapper {
+ left: -32px;
+ }
+
+ .media-gallery,
+ &__action-bar,
+ .video-player {
+ margin-top: 10px;
}
}
}
diff --git a/app/javascript/styles/mastodon/tables.scss b/app/javascript/styles/mastodon/tables.scss
index e54c55947..c2206cf55 100644
--- a/app/javascript/styles/mastodon/tables.scss
+++ b/app/javascript/styles/mastodon/tables.scss
@@ -1,9 +1,3 @@
-@keyframes Swag {
- 0% { background-position: 0% 0%; }
- 50% { background-position: 100% 0%; }
- 100% { background-position: 200% 0%; }
-}
-
.table {
width: 100%;
max-width: 100%;
@@ -191,14 +185,12 @@ a.table-action-link {
.status__content {
padding-top: 0;
+ summary {
+ display: list-item;
+ }
+
strong {
font-weight: 700;
- background: linear-gradient(to right, orange , yellow, green, cyan, blue, violet,orange , yellow, green, cyan, blue, violet);
- background-size: 200% 100%;
- -webkit-background-clip: text;
- background-clip: text;
- color: transparent;
- animation: Swag 2s linear 0s infinite;
}
}
}
diff --git a/app/javascript/styles/mastodon/variables.scss b/app/javascript/styles/mastodon/variables.scss
index 40aeb4afc..009f0a3c9 100644
--- a/app/javascript/styles/mastodon/variables.scss
+++ b/app/javascript/styles/mastodon/variables.scss
@@ -46,3 +46,5 @@ $cjk-langs: ja, ko, zh-CN, zh-HK, zh-TW;
$media-modal-media-max-width: 100%;
// put margins on top and bottom of image to avoid the screen covered by image.
$media-modal-media-max-height: 80%;
+
+$no-gap-breakpoint: 415px;
diff --git a/app/javascript/styles/mastodon/widgets.scss b/app/javascript/styles/mastodon/widgets.scss
new file mode 100644
index 000000000..f843f0b42
--- /dev/null
+++ b/app/javascript/styles/mastodon/widgets.scss
@@ -0,0 +1,242 @@
+.hero-widget {
+ margin-bottom: 10px;
+ box-shadow: 0 0 15px rgba($base-shadow-color, 0.2);
+
+ &__img {
+ width: 100%;
+ height: 167px;
+ position: relative;
+ overflow: hidden;
+ border-radius: 4px 4px 0 0;
+ background: $base-shadow-color;
+
+ img {
+ object-fit: cover;
+ display: block;
+ width: 100%;
+ height: 100%;
+ margin: 0;
+ border-radius: 4px 4px 0 0;
+ }
+ }
+
+ &__text {
+ background: $ui-base-color;
+ padding: 20px;
+ border-radius: 0 0 4px 4px;
+ font-size: 15px;
+ color: $darker-text-color;
+ line-height: 20px;
+ word-wrap: break-word;
+ font-weight: 400;
+
+ .emojione {
+ width: 20px;
+ height: 20px;
+ margin: -3px 0 0;
+ }
+
+ p {
+ margin-bottom: 20px;
+
+ &:last-child {
+ margin-bottom: 0;
+ }
+ }
+
+ em {
+ display: inline;
+ margin: 0;
+ padding: 0;
+ font-weight: 700;
+ background: transparent;
+ font-family: inherit;
+ font-size: inherit;
+ line-height: inherit;
+ color: lighten($darker-text-color, 10%);
+ }
+
+ a {
+ color: $secondary-text-color;
+ text-decoration: none;
+
+ &:hover {
+ text-decoration: underline;
+ }
+ }
+ }
+
+ @media screen and (max-width: $no-gap-breakpoint) {
+ display: none;
+ }
+}
+
+.endorsements-widget {
+ margin-bottom: 10px;
+ padding-bottom: 10px;
+
+ h4 {
+ padding: 10px;
+ text-transform: uppercase;
+ font-weight: 700;
+ font-size: 13px;
+ color: $darker-text-color;
+ }
+
+ .account {
+ padding: 10px 0;
+
+ &:last-child {
+ border-bottom: 0;
+ }
+
+ .account__display-name {
+ display: flex;
+ align-items: center;
+ }
+
+ .account__avatar {
+ width: 44px;
+ height: 44px;
+ background-size: 44px 44px;
+ }
+ }
+}
+
+.box-widget {
+ padding: 20px;
+ border-radius: 4px;
+ background: $ui-base-color;
+ box-shadow: 0 0 15px rgba($base-shadow-color, 0.2);
+}
+
+.contact-widget,
+.landing-page__information.contact-widget {
+ box-sizing: border-box;
+ padding: 20px;
+ min-height: 100%;
+ border-radius: 4px;
+ background: $ui-base-color;
+ box-shadow: 0 0 15px rgba($base-shadow-color, 0.2);
+}
+
+.contact-widget {
+ font-size: 15px;
+ color: $darker-text-color;
+ line-height: 20px;
+ word-wrap: break-word;
+ font-weight: 400;
+
+ strong {
+ font-weight: 500;
+ }
+
+ p {
+ margin-bottom: 10px;
+
+ &:last-child {
+ margin-bottom: 0;
+ }
+ }
+
+ &__mail {
+ margin-top: 10px;
+
+ a {
+ color: $primary-text-color;
+ text-decoration: none;
+ }
+ }
+}
+
+.moved-account-widget {
+ padding: 15px;
+ padding-bottom: 20px;
+ border-radius: 4px;
+ background: $ui-base-color;
+ box-shadow: 0 0 15px rgba($base-shadow-color, 0.2);
+ color: $secondary-text-color;
+ font-weight: 400;
+ margin-bottom: 10px;
+
+ strong,
+ a {
+ font-weight: 500;
+
+ @each $lang in $cjk-langs {
+ &:lang(#{$lang}) {
+ font-weight: 700;
+ }
+ }
+ }
+
+ a {
+ color: inherit;
+ text-decoration: underline;
+
+ &.mention {
+ text-decoration: none;
+
+ span {
+ text-decoration: none;
+ }
+
+ &:focus,
+ &:hover,
+ &:active {
+ text-decoration: none;
+
+ span {
+ text-decoration: underline;
+ }
+ }
+ }
+ }
+
+ &__message {
+ margin-bottom: 15px;
+
+ .fa {
+ margin-right: 5px;
+ color: $darker-text-color;
+ }
+ }
+
+ &__card {
+ .detailed-status__display-avatar {
+ position: relative;
+ cursor: pointer;
+ }
+
+ .detailed-status__display-name {
+ margin-bottom: 0;
+ text-decoration: none;
+
+ span {
+ font-weight: 400;
+ }
+ }
+ }
+}
+
+.memoriam-widget {
+ padding: 20px;
+ border-radius: 4px;
+ background: $base-shadow-color;
+ box-shadow: 0 0 15px rgba($base-shadow-color, 0.2);
+ font-size: 14px;
+ color: $darker-text-color;
+ margin-bottom: 10px;
+}
+
+.moved-account-widget,
+.memoriam-widget,
+.box-widget,
+.contact-widget,
+.landing-page__information.contact-widget {
+ @media screen and (max-width: $no-gap-breakpoint) {
+ margin-bottom: 0;
+ box-shadow: none;
+ border-radius: 0;
+ }
+}
diff --git a/app/lib/activitypub/activity.rb b/app/lib/activitypub/activity.rb
index 03476920b..3a39b723e 100644
--- a/app/lib/activitypub/activity.rb
+++ b/app/lib/activitypub/activity.rb
@@ -104,7 +104,9 @@ class ActivityPub::Activity
def crawl_links(status)
return if status.spoiler_text?
- LinkCrawlWorker.perform_async(status.id)
+
+ # Spread out crawling randomly to avoid DDoSing the link
+ LinkCrawlWorker.perform_in(rand(1..59).seconds, status.id)
end
def distribute_to_followers(status)
diff --git a/app/lib/activitypub/activity/accept.rb b/app/lib/activitypub/activity/accept.rb
index bd90c9019..7e60b2c00 100644
--- a/app/lib/activitypub/activity/accept.rb
+++ b/app/lib/activitypub/activity/accept.rb
@@ -11,6 +11,8 @@ class ActivityPub::Activity::Accept < ActivityPub::Activity
private
def accept_follow
+ return accept_follow_for_relay if relay_follow?
+
target_account = account_from_uri(target_uri)
return if target_account.nil? || !target_account.local?
@@ -19,6 +21,18 @@ class ActivityPub::Activity::Accept < ActivityPub::Activity
follow_request&.authorize!
end
+ def accept_follow_for_relay
+ relay.update!(state: :accepted)
+ end
+
+ def relay
+ @relay ||= Relay.find_by(follow_activity_id: object_uri)
+ end
+
+ def relay_follow?
+ relay.present?
+ end
+
def target_uri
@target_uri ||= value_or_id(@object['actor'])
end
diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb
index 00479fd9a..f40e1fa3e 100644
--- a/app/lib/activitypub/activity/create.rb
+++ b/app/lib/activitypub/activity/create.rb
@@ -48,7 +48,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
account: @account,
text: text_from_content || '',
language: detected_language,
- spoiler_text: @object['summary'] || '',
+ spoiler_text: text_from_summary || '',
created_at: @object['published'],
override_timestamps: @options[:override_timestamps],
reply: @object['inReplyTo'].present?,
@@ -107,7 +107,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
updated = tag['updated']
emoji = CustomEmoji.find_by(shortcode: shortcode, domain: @account.domain)
- return unless emoji.nil? || emoji.updated_at >= updated
+ return unless emoji.nil? || image_url != emoji.image_remote_url || (updated && emoji.updated_at >= updated)
emoji ||= CustomEmoji.new(domain: @account.domain, shortcode: shortcode, uri: uri)
emoji.image_remote_url = image_url
@@ -193,6 +193,14 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
end
end
+ def text_from_summary
+ if @object['summary'].present?
+ @object['summary']
+ elsif summary_language_map?
+ @object['summaryMap'].values.first
+ end
+ end
+
def text_from_name
if @object['name'].present?
@object['name']
@@ -206,6 +214,8 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
@object['contentMap'].keys.first
elsif name_language_map?
@object['nameMap'].keys.first
+ elsif summary_language_map?
+ @object['summaryMap'].keys.first
elsif supported_object_type?
LanguageDetector.instance.detect(text_from_content, @account)
end
@@ -223,6 +233,10 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
end
end
+ def summary_language_map?
+ @object['summaryMap'].is_a?(Hash) && !@object['summaryMap'].empty?
+ end
+
def content_language_map?
@object['contentMap'].is_a?(Hash) && !@object['contentMap'].empty?
end
diff --git a/app/lib/activitypub/activity/follow.rb b/app/lib/activitypub/activity/follow.rb
index 826dcf18e..c45832648 100644
--- a/app/lib/activitypub/activity/follow.rb
+++ b/app/lib/activitypub/activity/follow.rb
@@ -13,7 +13,7 @@ class ActivityPub::Activity::Follow < ActivityPub::Activity
# Fast-forward repeat follow requests
if @account.following?(target_account)
- AuthorizeFollowService.new.call(@account, target_account, skip_follow_request: true)
+ AuthorizeFollowService.new.call(@account, target_account, skip_follow_request: true, follow_request_uri: @json['id'])
return
end
diff --git a/app/lib/activitypub/activity/reject.rb b/app/lib/activitypub/activity/reject.rb
index 28d472883..d81b157de 100644
--- a/app/lib/activitypub/activity/reject.rb
+++ b/app/lib/activitypub/activity/reject.rb
@@ -11,6 +11,8 @@ class ActivityPub::Activity::Reject < ActivityPub::Activity
private
def reject_follow
+ return reject_follow_for_relay if relay_follow?
+
target_account = account_from_uri(target_uri)
return if target_account.nil? || !target_account.local?
@@ -21,6 +23,18 @@ class ActivityPub::Activity::Reject < ActivityPub::Activity
UnfollowService.new.call(target_account, @account) if target_account.following?(@account)
end
+ def reject_follow_for_relay
+ relay.update!(state: :rejected)
+ end
+
+ def relay
+ @relay ||= Relay.find_by(follow_activity_id: object_uri)
+ end
+
+ def relay_follow?
+ relay.present?
+ end
+
def target_uri
@target_uri ||= value_or_id(@object['actor'])
end
diff --git a/app/lib/activitypub/activity/undo.rb b/app/lib/activitypub/activity/undo.rb
index cbed417c4..64c2be7d9 100644
--- a/app/lib/activitypub/activity/undo.rb
+++ b/app/lib/activitypub/activity/undo.rb
@@ -5,6 +5,8 @@ class ActivityPub::Activity::Undo < ActivityPub::Activity
case @object['type']
when 'Announce'
undo_announce
+ when 'Accept'
+ undo_accept
when 'Follow'
undo_follow
when 'Like'
@@ -27,6 +29,10 @@ class ActivityPub::Activity::Undo < ActivityPub::Activity
end
end
+ def undo_accept
+ ::Follow.find_by(target_account: @account, uri: target_uri)&.revoke_request!
+ end
+
def undo_follow
target_account = account_from_uri(target_uri)
diff --git a/app/lib/activitypub/activity/update.rb b/app/lib/activitypub/activity/update.rb
index aa5907f03..6eebc3b5c 100644
--- a/app/lib/activitypub/activity/update.rb
+++ b/app/lib/activitypub/activity/update.rb
@@ -11,6 +11,6 @@ class ActivityPub::Activity::Update < ActivityPub::Activity
def update_account
return if @account.uri != object_uri
- ActivityPub::ProcessAccountService.new.call(@account.username, @account.domain, @object)
+ ActivityPub::ProcessAccountService.new.call(@account.username, @account.domain, @object, signed_with_known_key: true)
end
end
diff --git a/app/lib/activitypub/adapter.rb b/app/lib/activitypub/adapter.rb
index e880499f1..d35cae889 100644
--- a/app/lib/activitypub/adapter.rb
+++ b/app/lib/activitypub/adapter.rb
@@ -9,7 +9,7 @@ class ActivityPub::Adapter < ActiveModelSerializers::Adapter::Base
{
'manuallyApprovesFollowers' => 'as:manuallyApprovesFollowers',
'sensitive' => 'as:sensitive',
- 'movedTo' => 'as:movedTo',
+ 'movedTo' => { '@id' => 'as:movedTo', '@type' => '@id' },
'Hashtag' => 'as:Hashtag',
'ostatus' => 'http://ostatus.org#',
'atomUri' => 'ostatus:atomUri',
@@ -18,7 +18,7 @@ class ActivityPub::Adapter < ActiveModelSerializers::Adapter::Base
'toot' => 'http://joinmastodon.org/ns#',
'Emoji' => 'toot:Emoji',
'focalPoint' => { '@container' => '@list', '@id' => 'toot:focalPoint' },
- 'featured' => 'toot:featured',
+ 'featured' => { '@id' => 'toot:featured', '@type' => '@id' },
'schema' => 'http://schema.org#',
'PropertyValue' => 'schema:PropertyValue',
'value' => 'schema:value',
diff --git a/app/lib/activitypub/linked_data_signature.rb b/app/lib/activitypub/linked_data_signature.rb
index 16142a6ff..f52a8f406 100644
--- a/app/lib/activitypub/linked_data_signature.rb
+++ b/app/lib/activitypub/linked_data_signature.rb
@@ -32,7 +32,7 @@ class ActivityPub::LinkedDataSignature
end
end
- def sign!(creator)
+ def sign!(creator, sign_with: nil)
options = {
'type' => 'RsaSignature2017',
'creator' => [ActivityPub::TagManager.instance.uri_for(creator), '#main-key'].join,
@@ -42,8 +42,9 @@ class ActivityPub::LinkedDataSignature
options_hash = hash(options.without('type', 'id', 'signatureValue').merge('@context' => CONTEXT))
document_hash = hash(@json.without('signature'))
to_be_signed = options_hash + document_hash
+ keypair = sign_with.present? ? OpenSSL::PKey::RSA.new(sign_with) : creator.keypair
- signature = Base64.strict_encode64(creator.keypair.sign(OpenSSL::Digest::SHA256.new, to_be_signed))
+ signature = Base64.strict_encode64(keypair.sign(OpenSSL::Digest::SHA256.new, to_be_signed))
@json.merge('signature' => options.merge('signatureValue' => signature))
end
diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb
index 14cba70dc..b59a9f1cd 100644
--- a/app/lib/feed_manager.rb
+++ b/app/lib/feed_manager.rb
@@ -288,7 +288,7 @@ class FeedManager
# remains in the set. We could pick a random element, but this
# set should generally be small, and it seems ideal to show the
# oldest potential such reblog.
- other_reblog = redis.smembers(reblog_set_key).map(&:to_i).sort.first
+ other_reblog = redis.smembers(reblog_set_key).map(&:to_i).min
redis.zadd(timeline_key, other_reblog, other_reblog) if other_reblog
diff --git a/app/lib/formatter.rb b/app/lib/formatter.rb
index e1ab05cc0..8b694536c 100644
--- a/app/lib/formatter.rb
+++ b/app/lib/formatter.rb
@@ -23,7 +23,7 @@ class Formatter
unless status.local?
html = reformat(raw_content)
- html = encode_custom_emojis(html, status.emojis) if options[:custom_emojify]
+ html = encode_custom_emojis(html, status.emojis, options[:autoplay]) if options[:custom_emojify]
return html.html_safe # rubocop:disable Rails/OutputSafety
end
@@ -33,7 +33,7 @@ class Formatter
html = raw_content
html = "RT @#{prepend_reblog} #{html}" if prepend_reblog
html = encode_and_link_urls(html, linkable_accounts)
- html = encode_custom_emojis(html, status.emojis) if options[:custom_emojify]
+ html = encode_custom_emojis(html, status.emojis, options[:autoplay]) if options[:custom_emojify]
html = simple_format(html, {}, sanitize: false)
html = html.delete("\n")
@@ -53,7 +53,7 @@ class Formatter
def simplified_format(account, **options)
html = account.local? ? linkify(account.note) : reformat(account.note)
- html = encode_custom_emojis(html, account.emojis) if options[:custom_emojify]
+ html = encode_custom_emojis(html, account.emojis, options[:autoplay]) if options[:custom_emojify]
html.html_safe # rubocop:disable Rails/OutputSafety
end
@@ -61,22 +61,22 @@ class Formatter
Sanitize.fragment(html, config)
end
- def format_spoiler(status)
+ def format_spoiler(status, **options)
html = encode(status.spoiler_text)
- html = encode_custom_emojis(html, status.emojis)
+ html = encode_custom_emojis(html, status.emojis, options[:autoplay])
html.html_safe # rubocop:disable Rails/OutputSafety
end
def format_display_name(account, **options)
html = encode(account.display_name.presence || account.username)
- html = encode_custom_emojis(html, account.emojis) if options[:custom_emojify]
+ html = encode_custom_emojis(html, account.emojis, options[:autoplay]) if options[:custom_emojify]
html.html_safe # rubocop:disable Rails/OutputSafety
end
def format_field(account, str, **options)
return reformat(str).html_safe unless account.local? # rubocop:disable Rails/OutputSafety
html = encode_and_link_urls(str, me: true)
- html = encode_custom_emojis(html, account.emojis) if options[:custom_emojify]
+ html = encode_custom_emojis(html, account.emojis, options[:autoplay]) if options[:custom_emojify]
html.html_safe # rubocop:disable Rails/OutputSafety
end
@@ -120,10 +120,14 @@ class Formatter
end
end
- def encode_custom_emojis(html, emojis)
+ def encode_custom_emojis(html, emojis, animate = false)
return html if emojis.empty?
- emoji_map = emojis.map { |e| [e.shortcode, full_asset_url(e.image.url(:static))] }.to_h
+ emoji_map = if animate
+ emojis.map { |e| [e.shortcode, full_asset_url(e.image.url)] }.to_h
+ else
+ emojis.map { |e| [e.shortcode, full_asset_url(e.image.url(:static))] }.to_h
+ end
i = -1
tag_open_index = nil
diff --git a/app/lib/language_detector.rb b/app/lib/language_detector.rb
index c6f52f0c7..688d21fd8 100644
--- a/app/lib/language_detector.rb
+++ b/app/lib/language_detector.rb
@@ -3,12 +3,16 @@
class LanguageDetector
include Singleton
+ CHARACTER_THRESHOLD = 140
+
def initialize
@identifier = CLD3::NNetLanguageIdentifier.new(1, 2048)
end
def detect(text, account)
- detect_language_code(text) || default_locale(account)
+ input_text = prepare_text(text)
+ return if input_text.blank?
+ detect_language_code(input_text) || default_locale(account)
end
def language_names
@@ -23,8 +27,13 @@ class LanguageDetector
simplify_text(text).strip
end
+ def unreliable_input?(text)
+ text.size < CHARACTER_THRESHOLD
+ end
+
def detect_language_code(text)
- result = @identifier.find_language(prepare_text(text))
+ return if unreliable_input?(text)
+ result = @identifier.find_language(text)
iso6391(result.language.to_s).to_sym if result.reliable?
end
@@ -66,6 +75,6 @@ class LanguageDetector
end
def default_locale(account)
- account.user_locale&.to_sym
+ account.user_locale&.to_sym || I18n.default_locale
end
end
diff --git a/app/lib/ostatus/atom_serializer.rb b/app/lib/ostatus/atom_serializer.rb
index 5c6ff4f9b..1a0a635b3 100644
--- a/app/lib/ostatus/atom_serializer.rb
+++ b/app/lib/ostatus/atom_serializer.rb
@@ -352,7 +352,7 @@ class OStatus::AtomSerializer
append_element(entry, 'link', nil, rel: :alternate, type: 'application/activity+json', href: ActivityPub::TagManager.instance.uri_for(status)) if status.account.local?
append_element(entry, 'summary', status.spoiler_text, 'xml:lang': status.language) if status.spoiler_text?
- append_element(entry, 'content', Formatter.instance.format(status).to_str, type: 'html', 'xml:lang': status.language)
+ append_element(entry, 'content', Formatter.instance.format(status).to_str || '.', type: 'html', 'xml:lang': status.language)
status.mentions.sort_by(&:id).each do |mentioned|
append_element(entry, 'link', nil, rel: :mentioned, 'ostatus:object-type': OStatus::TagManager::TYPES[:person], href: OStatus::TagManager.instance.uri_for(mentioned.account))
diff --git a/app/lib/potential_friendship_tracker.rb b/app/lib/potential_friendship_tracker.rb
index 362482669..017a9748d 100644
--- a/app/lib/potential_friendship_tracker.rb
+++ b/app/lib/potential_friendship_tracker.rb
@@ -12,6 +12,8 @@ class PotentialFriendshipTracker
class << self
def record(account_id, target_account_id, action)
+ return if account_id == target_account_id
+
key = "interactions:#{account_id}"
weight = WEIGHTS[action]
diff --git a/app/lib/request.rb b/app/lib/request.rb
index 576ed23ca..36c211dbf 100644
--- a/app/lib/request.rb
+++ b/app/lib/request.rb
@@ -22,10 +22,11 @@ class Request
set_digest! if options.key?(:body)
end
- def on_behalf_of(account, key_id_format = :acct)
+ def on_behalf_of(account, key_id_format = :acct, sign_with: nil)
raise ArgumentError unless account.local?
@account = account
+ @keypair = sign_with.present? ? OpenSSL::PKey::RSA.new(sign_with) : @account.keypair
@key_id_format = key_id_format
self
@@ -70,17 +71,17 @@ class Request
def signature
algorithm = 'rsa-sha256'
- signature = Base64.strict_encode64(@account.keypair.sign(OpenSSL::Digest::SHA256.new, signed_string))
+ signature = Base64.strict_encode64(@keypair.sign(OpenSSL::Digest::SHA256.new, signed_string))
- "keyId=\"#{key_id}\",algorithm=\"#{algorithm}\",headers=\"#{signed_headers}\",signature=\"#{signature}\""
+ "keyId=\"#{key_id}\",algorithm=\"#{algorithm}\",headers=\"#{signed_headers.keys.join(' ').downcase}\",signature=\"#{signature}\""
end
def signed_string
- @headers.map { |key, value| "#{key.downcase}: #{value}" }.join("\n")
+ signed_headers.map { |key, value| "#{key.downcase}: #{value}" }.join("\n")
end
def signed_headers
- @headers.keys.join(' ').downcase
+ @headers.without('User-Agent', 'Accept-Encoding')
end
def key_id
diff --git a/app/lib/sanitize_config.rb b/app/lib/sanitize_config.rb
index c2b466924..1bba4a5a6 100644
--- a/app/lib/sanitize_config.rb
+++ b/app/lib/sanitize_config.rb
@@ -2,7 +2,7 @@
class Sanitize
module Config
- HTTP_PROTOCOLS ||= ['http', 'https', :relative].freeze
+ HTTP_PROTOCOLS ||= ['http', 'https', 'dat', 'dweb', 'ipfs', 'ipns', 'ssb', 'gopher', :relative].freeze
CLASS_WHITELIST_TRANSFORMER = lambda do |env|
node = env[:node]
diff --git a/app/lib/settings/scoped_settings.rb b/app/lib/settings/scoped_settings.rb
index de4af3009..5ee30825d 100644
--- a/app/lib/settings/scoped_settings.rb
+++ b/app/lib/settings/scoped_settings.rb
@@ -2,6 +2,10 @@
module Settings
class ScopedSettings
+ DEFAULTING_TO_UNSCOPED = %w(
+ theme
+ ).freeze
+
def initialize(object)
@object = object
end
@@ -50,15 +54,22 @@ module Settings
Rails.cache.fetch(Setting.cache_key(key, @object)) do
db_val = thing_scoped.find_by(var: key.to_s)
if db_val
- default_value = Setting.default_settings[key]
+ default_value = ScopedSettings.default_settings[key]
return default_value.with_indifferent_access.merge!(db_val.value) if default_value.is_a?(Hash)
db_val.value
else
- Setting.default_settings[key]
+ ScopedSettings.default_settings[key]
end
end
end
+ class << self
+ def default_settings
+ defaulting = DEFAULTING_TO_UNSCOPED.map { |k| [k, Setting[k]] }.to_h
+ Setting.default_settings.merge!(defaulting)
+ end
+ end
+
protected
def thing_scoped
diff --git a/app/mailers/user_mailer.rb b/app/mailers/user_mailer.rb
index 9848c34a2..aa76b4dfe 100644
--- a/app/mailers/user_mailer.rb
+++ b/app/mailers/user_mailer.rb
@@ -16,7 +16,7 @@ class UserMailer < Devise::Mailer
return if @resource.disabled?
I18n.with_locale(@resource.locale || I18n.default_locale) do
- mail to: @resource.unconfirmed_email.blank? ? @resource.email : @resource.unconfirmed_email,
+ mail to: @resource.unconfirmed_email.presence || @resource.email,
subject: I18n.t(@resource.pending_reconfirmation? ? 'devise.mailer.reconfirmation_instructions.subject' : 'devise.mailer.confirmation_instructions.subject', instance: @instance),
template_name: @resource.pending_reconfirmation? ? 'reconfirmation_instructions' : 'confirmation_instructions'
end
diff --git a/app/models/account.rb b/app/models/account.rb
index 1f720bf88..440a731e3 100644
--- a/app/models/account.rb
+++ b/app/models/account.rb
@@ -68,6 +68,7 @@ class Account < ApplicationRecord
# Remote user validations
validates :username, uniqueness: { scope: :domain, case_sensitive: true }, if: -> { !local? && will_save_change_to_username? }
+ validates :username, format: { with: /\A#{USERNAME_RE}\z/i }, if: -> { !local? && will_save_change_to_username? }
# Local user validations
validates :username, format: { with: /\A[a-z0-9_]+\z/i }, length: { maximum: 30 }, if: -> { local? && will_save_change_to_username? }
@@ -88,6 +89,10 @@ class Account < ApplicationRecord
has_many :status_pins, inverse_of: :account, dependent: :destroy
has_many :pinned_statuses, -> { reorder('status_pins.created_at DESC') }, through: :status_pins, class_name: 'Status', source: :status
+ # Endorsements
+ has_many :account_pins, inverse_of: :account, dependent: :destroy
+ has_many :endorsed_accounts, through: :account_pins, class_name: 'Account', source: :target_account
+
# Media
has_many :media_attachments, dependent: :destroy
@@ -188,6 +193,13 @@ class Account < ApplicationRecord
ResolveAccountService.new.call(acct)
end
+ def suspend!
+ transaction do
+ user&.disable! if local?
+ update!(suspended: true)
+ end
+ end
+
def unsuspend!
transaction do
user&.enable! if local?
diff --git a/app/models/account_pin.rb b/app/models/account_pin.rb
new file mode 100644
index 000000000..b51d3d4cd
--- /dev/null
+++ b/app/models/account_pin.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+# == Schema Information
+#
+# Table name: account_pins
+#
+# id :bigint(8) not null, primary key
+# account_id :bigint(8)
+# target_account_id :bigint(8)
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+
+class AccountPin < ApplicationRecord
+ include Paginable
+ include RelationshipCacheable
+
+ belongs_to :account
+ belongs_to :target_account, class_name: 'Account'
+
+ validate :validate_follow_relationship
+
+ private
+
+ def validate_follow_relationship
+ errors.add(:base, I18n.t('accounts.pin_errors.following')) unless account.following?(target_account)
+ end
+end
diff --git a/app/models/concerns/account_header.rb b/app/models/concerns/account_header.rb
index ef40b8126..067e166eb 100644
--- a/app/models/concerns/account_header.rb
+++ b/app/models/concerns/account_header.rb
@@ -5,11 +5,12 @@ module AccountHeader
IMAGE_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif'].freeze
LIMIT = 2.megabytes
+ MAX_PIXELS = 750_000 # 1500x500px
class_methods do
def header_styles(file)
- styles = { original: { geometry: '700x335#', file_geometry_parser: FastGeometryParser } }
- styles[:static] = { geometry: '700x335#', format: 'png', convert_options: '-coalesce', file_geometry_parser: FastGeometryParser } if file.content_type == 'image/gif'
+ styles = { original: { pixels: MAX_PIXELS, file_geometry_parser: FastGeometryParser } }
+ styles[:static] = { format: 'png', convert_options: '-coalesce', file_geometry_parser: FastGeometryParser } if file.content_type == 'image/gif'
styles
end
diff --git a/app/models/concerns/account_interactions.rb b/app/models/concerns/account_interactions.rb
index e14e041f6..f5f833446 100644
--- a/app/models/concerns/account_interactions.rb
+++ b/app/models/concerns/account_interactions.rb
@@ -40,6 +40,10 @@ module AccountInteractions
end
end
+ def endorsed_map(target_account_ids, account_id)
+ follow_mapping(AccountPin.where(account_id: account_id, target_account_id: target_account_ids), :target_account_id)
+ end
+
def domain_blocking_map(target_account_ids, account_id)
accounts_map = Account.where(id: target_account_ids).select('id, domain').map { |a| [a.id, a.domain] }.to_h
blocked_domains = domain_blocking_map_by_domain(accounts_map.values.compact, account_id)
@@ -190,6 +194,10 @@ module AccountInteractions
status_pins.where(status: status).exists?
end
+ def endorsed?(account)
+ account_pins.where(target_account: account).exists?
+ end
+
def followers_for_local_distribution
followers.local
.joins(:user)
diff --git a/app/models/concerns/expireable.rb b/app/models/concerns/expireable.rb
index 444ccdfdb..2c0631476 100644
--- a/app/models/concerns/expireable.rb
+++ b/app/models/concerns/expireable.rb
@@ -9,7 +9,7 @@ module Expireable
attr_reader :expires_in
def expires_in=(interval)
- self.expires_at = interval.to_i.seconds.from_now unless interval.blank?
+ self.expires_at = interval.to_i.seconds.from_now if interval.present?
@expires_in = interval
end
diff --git a/app/models/concerns/remotable.rb b/app/models/concerns/remotable.rb
index c17f19a60..9372a963b 100644
--- a/app/models/concerns/remotable.rb
+++ b/app/models/concerns/remotable.rb
@@ -18,7 +18,7 @@ module Remotable
return
end
- return if !%w(http https).include?(parsed_url.scheme) || parsed_url.host.empty? || self[attribute_name] == url
+ return if !%w(http https).include?(parsed_url.scheme) || parsed_url.host.blank? || self[attribute_name] == url
begin
Request.new(:get, url).perform do |response|
diff --git a/app/models/export.rb b/app/models/export.rb
index f0d5dd255..0eeac0dc0 100644
--- a/app/models/export.rb
+++ b/app/models/export.rb
@@ -24,8 +24,16 @@ class Export
account.media_attachments.sum(:file_file_size)
end
+ def total_statuses
+ account.statuses_count
+ end
+
def total_follows
- account.following.count
+ account.following_count
+ end
+
+ def total_followers
+ account.followers_count
end
def total_blocks
diff --git a/app/models/favourite.rb b/app/models/favourite.rb
index 0fce82f6f..17f8c9fa6 100644
--- a/app/models/favourite.rb
+++ b/app/models/favourite.rb
@@ -32,20 +32,11 @@ class Favourite < ApplicationRecord
private
def increment_cache_counters
- if association(:status).loaded?
- status.update_attribute(:favourites_count, status.favourites_count + 1)
- else
- Status.where(id: status_id).update_all('favourites_count = COALESCE(favourites_count, 0) + 1')
- end
+ status&.increment_count!(:favourites_count)
end
def decrement_cache_counters
return if association(:status).loaded? && (status.marked_for_destruction? || status.marked_for_mass_destruction?)
-
- if association(:status).loaded?
- status.update_attribute(:favourites_count, [status.favourites_count - 1, 0].max)
- else
- Status.where(id: status_id).update_all('favourites_count = GREATEST(COALESCE(favourites_count, 0) - 1, 0)')
- end
+ status&.decrement_count!(:favourites_count)
end
end
diff --git a/app/models/follow.rb b/app/models/follow.rb
index eaf8445f3..714f4e898 100644
--- a/app/models/follow.rb
+++ b/app/models/follow.rb
@@ -32,11 +32,21 @@ class Follow < ApplicationRecord
false # Force uri_for to use uri attribute
end
+ def revoke_request!
+ FollowRequest.create!(account: account, target_account: target_account, show_reblogs: show_reblogs, uri: uri)
+ destroy!
+ end
+
before_validation :set_uri, only: :create
+ after_destroy :remove_endorsements
private
def set_uri
self.uri = ActivityPub::TagManager.instance.generate_uri_for(self) if uri.nil?
end
+
+ def remove_endorsements
+ AccountPin.where(target_account_id: target_account_id, account_id: account_id).delete_all
+ end
end
diff --git a/app/models/form/admin_settings.rb b/app/models/form/admin_settings.rb
index 723480bdd..9fef7da97 100644
--- a/app/models/form/admin_settings.rb
+++ b/app/models/form/admin_settings.rb
@@ -10,6 +10,8 @@ class Form::AdminSettings
:site_contact_email=,
:site_title,
:site_title=,
+ :site_short_description,
+ :site_short_description=,
:site_description,
:site_description=,
:site_extended_description,
@@ -28,6 +30,8 @@ class Form::AdminSettings
:show_staff_badge=,
:bootstrap_timeline_accounts,
:bootstrap_timeline_accounts=,
+ :theme,
+ :theme=,
:min_invite_role,
:min_invite_role=,
:activity_api_enabled,
@@ -38,6 +42,8 @@ class Form::AdminSettings
:show_known_fediverse_at_about_page=,
:preview_sensitive_media,
:preview_sensitive_media=,
+ :custom_css,
+ :custom_css=,
to: Setting
)
end
diff --git a/app/models/form/admin_suspension_confirmation.rb b/app/models/form/admin_suspension_confirmation.rb
new file mode 100644
index 000000000..c34b5b30e
--- /dev/null
+++ b/app/models/form/admin_suspension_confirmation.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+class Form::AdminSuspensionConfirmation
+ include ActiveModel::Model
+
+ attr_accessor :acct, :report_id
+end
diff --git a/app/models/form/status_batch.rb b/app/models/form/status_batch.rb
index 4f08a3049..8f5fd1fa2 100644
--- a/app/models/form/status_batch.rb
+++ b/app/models/form/status_batch.rb
@@ -23,7 +23,7 @@ class Form::StatusBatch
media_attached_status_ids = MediaAttachment.where(status_id: status_ids).pluck(:status_id)
ApplicationRecord.transaction do
- Status.where(id: media_attached_status_ids).find_each do |status|
+ Status.where(id: media_attached_status_ids).reorder(nil).find_each do |status|
status.update!(sensitive: sensitive)
log_action :update, status
end
@@ -35,7 +35,7 @@ class Form::StatusBatch
end
def delete_statuses
- Status.where(id: status_ids).find_each do |status|
+ Status.where(id: status_ids).reorder(nil).find_each do |status|
RemovalWorker.perform_async(status.id)
log_action :destroy, status
end
diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb
index f9a8f322e..1e4fae3de 100644
--- a/app/models/media_attachment.rb
+++ b/app/models/media_attachment.rb
@@ -25,19 +25,20 @@ class MediaAttachment < ApplicationRecord
enum type: [:image, :gifv, :video, :unknown]
IMAGE_FILE_EXTENSIONS = ['.jpg', '.jpeg', '.png', '.gif'].freeze
- VIDEO_FILE_EXTENSIONS = ['.webm', '.mp4', '.m4v'].freeze
+ VIDEO_FILE_EXTENSIONS = ['.webm', '.mp4', '.m4v', '.mov'].freeze
- IMAGE_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif'].freeze
- VIDEO_MIME_TYPES = ['video/webm', 'video/mp4'].freeze
+ IMAGE_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif'].freeze
+ VIDEO_MIME_TYPES = ['video/webm', 'video/mp4', 'video/quicktime'].freeze
+ VIDEO_CONVERTIBLE_MIME_TYPES = ['video/webm', 'video/quicktime'].freeze
IMAGE_STYLES = {
original: {
- geometry: '1280x1280>',
+ pixels: 1_638_400, # 1280x1280px
file_geometry_parser: FastGeometryParser,
},
small: {
- geometry: '400x400>',
+ pixels: 160_000, # 400x400px
file_geometry_parser: FastGeometryParser,
},
}.freeze
@@ -54,7 +55,25 @@ class MediaAttachment < ApplicationRecord
},
}.freeze
- LIMIT = 8.megabytes
+ VIDEO_FORMAT = {
+ format: 'mp4',
+ convert_options: {
+ output: {
+ 'movflags' => 'faststart',
+ 'pix_fmt' => 'yuv420p',
+ 'vf' => 'scale=\'trunc(iw/2)*2:trunc(ih/2)*2\'',
+ 'vsync' => 'cfr',
+ 'c:v' => 'h264',
+ 'b:v' => '500K',
+ 'maxrate' => '1300K',
+ 'bufsize' => '1300K',
+ 'crf' => 18,
+ },
+ },
+ }.freeze
+
+ IMAGE_LIMIT = 8.megabytes
+ VIDEO_LIMIT = 40.megabytes
belongs_to :account, inverse_of: :media_attachments, optional: true
belongs_to :status, inverse_of: :media_attachments, optional: true
@@ -65,8 +84,9 @@ class MediaAttachment < ApplicationRecord
convert_options: { all: '-quality 90 -strip' }
validates_attachment_content_type :file, content_type: IMAGE_MIME_TYPES + VIDEO_MIME_TYPES
- validates_attachment_size :file, less_than: LIMIT
- remotable_attachment :file, LIMIT
+ validates_attachment_size :file, less_than: IMAGE_LIMIT, unless: :video?
+ validates_attachment_size :file, less_than: VIDEO_LIMIT, if: :video?
+ remotable_attachment :file, VIDEO_LIMIT
include Attachmentable
@@ -122,25 +142,15 @@ class MediaAttachment < ApplicationRecord
if f.instance.file_content_type == 'image/gif'
{
small: IMAGE_STYLES[:small],
- original: {
- format: 'mp4',
- convert_options: {
- output: {
- 'movflags' => 'faststart',
- 'pix_fmt' => 'yuv420p',
- 'vf' => 'scale=\'trunc(iw/2)*2:trunc(ih/2)*2\'',
- 'vsync' => 'cfr',
- 'c:v' => 'h264',
- 'b:v' => '500K',
- 'maxrate' => '1300K',
- 'bufsize' => '1300K',
- 'crf' => 18,
- },
- },
- },
+ original: VIDEO_FORMAT,
}
elsif IMAGE_MIME_TYPES.include? f.instance.file_content_type
IMAGE_STYLES
+ elsif VIDEO_CONVERTIBLE_MIME_TYPES.include?(f.instance.file_content_type)
+ {
+ small: VIDEO_STYLES[:small],
+ original: VIDEO_FORMAT,
+ }
else
VIDEO_STYLES
end
@@ -152,7 +162,7 @@ class MediaAttachment < ApplicationRecord
elsif VIDEO_MIME_TYPES.include? f.file_content_type
[:video_transcoder]
else
- [:thumbnail]
+ [:lazy_thumbnail]
end
end
end
diff --git a/app/models/notification.rb b/app/models/notification.rb
index 4f6ec8e8e..b9bec0808 100644
--- a/app/models/notification.rb
+++ b/app/models/notification.rb
@@ -39,8 +39,6 @@ class Notification < ApplicationRecord
validates :account_id, uniqueness: { scope: [:activity_type, :activity_id] }
validates :activity_type, inclusion: { in: TYPE_CLASS_MAP.values }
- scope :cache_ids, -> { select(:id, :updated_at, :activity_type, :activity_id) }
-
scope :browserable, ->(exclude_types = []) {
types = TYPE_CLASS_MAP.values - activity_types_from_types(exclude_types + [:follow_request])
where(activity_type: types)
@@ -68,6 +66,10 @@ class Notification < ApplicationRecord
end
class << self
+ def cache_ids
+ select(:id, :updated_at, :activity_type, :activity_id)
+ end
+
def reload_stale_associations!(cached_items)
account_ids = (cached_items.map(&:from_account_id) + cached_items.map { |item| item.target_status&.account_id }.compact).uniq
diff --git a/app/models/relay.rb b/app/models/relay.rb
new file mode 100644
index 000000000..75cb060b2
--- /dev/null
+++ b/app/models/relay.rb
@@ -0,0 +1,78 @@
+# frozen_string_literal: true
+# == Schema Information
+#
+# Table name: relays
+#
+# id :bigint(8) not null, primary key
+# inbox_url :string default(""), not null
+# follow_activity_id :string
+# created_at :datetime not null
+# updated_at :datetime not null
+# state :integer default("idle"), not null
+#
+
+class Relay < ApplicationRecord
+ PRESET_RELAY = 'https://relay.joinmastodon.org/inbox'
+
+ validates :inbox_url, presence: true, uniqueness: true, url: true, if: :will_save_change_to_inbox_url?
+
+ enum state: [:idle, :pending, :accepted, :rejected]
+
+ scope :enabled, -> { accepted }
+
+ before_destroy :ensure_disabled
+
+ alias enabled? accepted?
+
+ def enable!
+ activity_id = ActivityPub::TagManager.instance.generate_uri_for(nil)
+ payload = Oj.dump(follow_activity(activity_id))
+
+ update!(state: :pending, follow_activity_id: activity_id)
+ ActivityPub::DeliveryWorker.perform_async(payload, some_local_account.id, inbox_url)
+ end
+
+ def disable!
+ activity_id = ActivityPub::TagManager.instance.generate_uri_for(nil)
+ payload = Oj.dump(unfollow_activity(activity_id))
+
+ update!(state: :idle, follow_activity_id: nil)
+ ActivityPub::DeliveryWorker.perform_async(payload, some_local_account.id, inbox_url)
+ end
+
+ private
+
+ def follow_activity(activity_id)
+ {
+ '@context': ActivityPub::TagManager::CONTEXT,
+ id: activity_id,
+ type: 'Follow',
+ actor: ActivityPub::TagManager.instance.uri_for(some_local_account),
+ object: ActivityPub::TagManager::COLLECTIONS[:public],
+ }
+ end
+
+ def unfollow_activity(activity_id)
+ {
+ '@context': ActivityPub::TagManager::CONTEXT,
+ id: activity_id,
+ type: 'Undo',
+ actor: ActivityPub::TagManager.instance.uri_for(some_local_account),
+ object: {
+ id: follow_activity_id,
+ type: 'Follow',
+ actor: ActivityPub::TagManager.instance.uri_for(some_local_account),
+ object: ActivityPub::TagManager::COLLECTIONS[:public],
+ },
+ }
+ end
+
+ def some_local_account
+ @some_local_account ||= Account.local.find_by(suspended: false)
+ end
+
+ def ensure_disabled
+ return unless enabled?
+ disable!
+ end
+end
diff --git a/app/models/remote_follow.rb b/app/models/remote_follow.rb
index 070144e2d..2537de36c 100644
--- a/app/models/remote_follow.rb
+++ b/app/models/remote_follow.rb
@@ -22,6 +22,10 @@ class RemoteFollow
addressable_template.expand(uri: account.local_username_and_domain).to_s
end
+ def interact_address_for(status)
+ addressable_template.expand(uri: ActivityPub::TagManager.instance.uri_for(status)).to_s
+ end
+
private
def populate_template
diff --git a/app/models/report.rb b/app/models/report.rb
index efe385b2d..2804020f5 100644
--- a/app/models/report.rb
+++ b/app/models/report.rb
@@ -60,6 +60,10 @@ class Report < ApplicationRecord
!action_taken?
end
+ def unresolved_siblings?
+ Report.where.not(id: id).where(target_account_id: target_account_id).unresolved.exists?
+ end
+
def history
time_range = created_at..updated_at
diff --git a/app/models/status.rb b/app/models/status.rb
index e7dd0df29..35655bff2 100644
--- a/app/models/status.rb
+++ b/app/models/status.rb
@@ -15,8 +15,6 @@
# visibility :integer default("public"), not null
# spoiler_text :text default(""), not null
# reply :boolean default(FALSE), not null
-# favourites_count :integer default(0), not null
-# reblogs_count :integer default(0), not null
# language :string
# conversation_id :bigint(8)
# local :boolean
@@ -59,6 +57,7 @@ class Status < ApplicationRecord
has_one :notification, as: :activity, dependent: :destroy
has_one :stream_entry, as: :activity, inverse_of: :status
+ has_one :status_stat, inverse_of: :status
validates :uri, uniqueness: true, presence: true, unless: :local?
validates :text, presence: true, unless: -> { with_media? || reblog? }
@@ -81,7 +80,25 @@ class Status < ApplicationRecord
scope :not_excluded_by_account, ->(account) { where.not(account_id: account.excluded_from_timeline_account_ids) }
scope :not_domain_blocked_by_account, ->(account) { account.excluded_from_timeline_domains.blank? ? left_outer_joins(:account) : left_outer_joins(:account).where('accounts.domain IS NULL OR accounts.domain NOT IN (?)', account.excluded_from_timeline_domains) }
- cache_associated :account, :application, :media_attachments, :conversation, :tags, :stream_entry, mentions: :account, reblog: [:account, :application, :stream_entry, :tags, :media_attachments, :conversation, mentions: :account], thread: :account
+ cache_associated :account,
+ :application,
+ :media_attachments,
+ :conversation,
+ :status_stat,
+ :tags,
+ :stream_entry,
+ mentions: :account,
+ reblog: [
+ :account,
+ :application,
+ :stream_entry,
+ :tags,
+ :media_attachments,
+ :conversation,
+ :status_stat,
+ mentions: :account,
+ ],
+ thread: :account
delegate :domain, to: :account, prefix: true
@@ -175,6 +192,26 @@ class Status < ApplicationRecord
@marked_for_mass_destruction
end
+ def replies_count
+ status_stat&.replies_count || 0
+ end
+
+ def reblogs_count
+ status_stat&.reblogs_count || 0
+ end
+
+ def favourites_count
+ status_stat&.favourites_count || 0
+ end
+
+ def increment_count!(key)
+ update_status_stat!(key => public_send(key) + 1)
+ end
+
+ def decrement_count!(key)
+ update_status_stat!(key => [public_send(key) - 1, 0].max)
+ end
+
after_create :increment_counter_caches
after_destroy :decrement_counter_caches
@@ -190,6 +227,10 @@ class Status < ApplicationRecord
before_validation :set_local
class << self
+ def cache_ids
+ left_outer_joins(:status_stat).select('statuses.id, greatest(statuses.updated_at, status_stats.updated_at) AS updated_at')
+ end
+
def in_chosen_languages(account)
where(language: nil).or where(language: account.chosen_languages)
end
@@ -343,7 +384,8 @@ class Status < ApplicationRecord
def account_silencing_filter(account)
if account.silenced?
- including_silenced_accounts
+ including_myself = left_outer_joins(:account).where(account_id: account.id).references(:accounts)
+ excluding_silenced_accounts.or(including_myself)
else
excluding_silenced_accounts
end
@@ -352,6 +394,13 @@ class Status < ApplicationRecord
private
+ def update_status_stat!(attrs)
+ return if marked_for_destruction? || destroyed?
+
+ record = status_stat || build_status_stat
+ record.update(attrs)
+ end
+
def store_uri
update_attribute(:uri, ActivityPub::TagManager.instance.uri_for(self)) if uri.nil?
end
@@ -408,13 +457,8 @@ class Status < ApplicationRecord
Account.where(id: account_id).update_all('statuses_count = COALESCE(statuses_count, 0) + 1')
end
- return unless reblog?
-
- if association(:reblog).loaded?
- reblog.update_attribute(:reblogs_count, reblog.reblogs_count + 1)
- else
- Status.where(id: reblog_of_id).update_all('reblogs_count = COALESCE(reblogs_count, 0) + 1')
- end
+ reblog&.increment_count!(:reblogs_count) if reblog?
+ thread&.increment_count!(:replies_count) if in_reply_to_id.present? && (public_visibility? || unlisted_visibility?)
end
def decrement_counter_caches
@@ -426,12 +470,7 @@ class Status < ApplicationRecord
Account.where(id: account_id).update_all('statuses_count = GREATEST(COALESCE(statuses_count, 0) - 1, 0)')
end
- return unless reblog?
-
- if association(:reblog).loaded?
- reblog.update_attribute(:reblogs_count, [reblog.reblogs_count - 1, 0].max)
- else
- Status.where(id: reblog_of_id).update_all('reblogs_count = GREATEST(COALESCE(reblogs_count, 0) - 1, 0)')
- end
+ reblog&.decrement_count!(:reblogs_count) if reblog?
+ thread&.decrement_count!(:replies_count) if in_reply_to_id.present? && (public_visibility? || unlisted_visibility?)
end
end
diff --git a/app/models/status_stat.rb b/app/models/status_stat.rb
new file mode 100644
index 000000000..9d358776b
--- /dev/null
+++ b/app/models/status_stat.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+# == Schema Information
+#
+# Table name: status_stats
+#
+# id :bigint(8) not null, primary key
+# status_id :bigint(8) not null
+# replies_count :bigint(8) default(0), not null
+# reblogs_count :bigint(8) default(0), not null
+# favourites_count :bigint(8) default(0), not null
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+
+class StatusStat < ApplicationRecord
+ belongs_to :status, inverse_of: :status_stat
+end
diff --git a/app/models/trending_tags.rb b/app/models/trending_tags.rb
index c3641d7fd..c559651c6 100644
--- a/app/models/trending_tags.rb
+++ b/app/models/trending_tags.rb
@@ -1,7 +1,10 @@
# frozen_string_literal: true
class TrendingTags
+ KEY = 'trending_tags'
EXPIRE_HISTORY_AFTER = 7.days.seconds
+ EXPIRE_TRENDS_AFTER = 1.day.seconds
+ THRESHOLD = 5
class << self
def record_use!(tag, account, at_time = Time.now.utc)
@@ -9,6 +12,14 @@ class TrendingTags
increment_historical_use!(tag.id, at_time)
increment_unique_use!(tag.id, account.id, at_time)
+ increment_vote!(tag.id, at_time)
+ end
+
+ def get(limit)
+ key = "#{KEY}:#{Time.now.utc.beginning_of_day.to_i}"
+ tag_ids = redis.zrevrange(key, 0, limit - 1).map(&:to_i)
+ tags = Tag.where(id: tag_ids).to_a.map { |tag| [tag.id, tag] }.to_h
+ tag_ids.map { |tag_id| tags[tag_id] }.compact
end
private
@@ -25,6 +36,22 @@ class TrendingTags
redis.expire(key, EXPIRE_HISTORY_AFTER)
end
+ def increment_vote!(tag_id, at_time)
+ key = "#{KEY}:#{at_time.beginning_of_day.to_i}"
+ expected = redis.pfcount("activity:tags:#{tag_id}:#{(at_time - 1.day).beginning_of_day.to_i}:accounts").to_f
+ expected = 1.0 if expected.zero?
+ observed = redis.pfcount("activity:tags:#{tag_id}:#{at_time.beginning_of_day.to_i}:accounts").to_f
+
+ if expected > observed || observed < THRESHOLD
+ redis.zrem(key, tag_id.to_s)
+ else
+ score = ((observed - expected)**2) / expected
+ redis.zadd(key, score, tag_id.to_s)
+ end
+
+ redis.expire(key, EXPIRE_TRENDS_AFTER)
+ end
+
def disallowed_hashtags
return @disallowed_hashtags if defined?(@disallowed_hashtags)
diff --git a/app/models/user.rb b/app/models/user.rb
index c820c553a..d83df28c2 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -42,7 +42,14 @@ class User < ApplicationRecord
include Settings::Extend
include Omniauthable
- ACTIVE_DURATION = 7.days
+ # The home and list feeds will be stored in Redis for this amount
+ # of time, and status fan-out to followers will include only people
+ # within this time frame. Lowering the duration may improve performance
+ # if lots of people sign up, but not a lot of them check their feed
+ # every day. Raising the duration reduces the amount of expensive
+ # RegenerationWorker jobs that need to be run when those people come
+ # to check their feed
+ ACTIVE_DURATION = ENV.fetch('USER_ACTIVE_DAYS', 7).to_i.days
devise :two_factor_authenticatable,
otp_secret_encryption_key: Rails.configuration.x.otp_secret
@@ -91,7 +98,7 @@ class User < ApplicationRecord
:reduce_motion, :system_font_ui, :noindex, :theme, :display_sensitive_media, :hide_network,
:default_language, to: :settings, prefix: :setting, allow_nil: false
- attr_accessor :invite_code
+ attr_reader :invite_code
def pam_conflict(_)
# block pam login tries on traditional account
@@ -209,10 +216,6 @@ class User < ApplicationRecord
save!
end
- def active_for_authentication?
- super && !disabled?
- end
-
def setting_default_privacy
settings.default_privacy || (account.locked? ? 'private' : 'public')
end
@@ -221,6 +224,10 @@ class User < ApplicationRecord
settings.notification_emails['digest']
end
+ def allows_report_emails?
+ settings.notification_emails['report']
+ end
+
def hides_network?
@hides_network ||= settings.hide_network
end
@@ -255,7 +262,7 @@ class User < ApplicationRecord
end
def invite_code=(code)
- self.invite = Invite.find_by(code: code) unless code.blank?
+ self.invite = Invite.find_by(code: code) if code.present?
@invite_code = code
end
diff --git a/app/policies/invite_policy.rb b/app/policies/invite_policy.rb
index a2a65f934..14236f78b 100644
--- a/app/policies/invite_policy.rb
+++ b/app/policies/invite_policy.rb
@@ -9,6 +9,10 @@ class InvitePolicy < ApplicationPolicy
min_required_role?
end
+ def deactivate_all?
+ admin?
+ end
+
def destroy?
owner? || (Setting.min_invite_role == 'admin' ? admin? : staff?)
end
diff --git a/app/policies/relay_policy.rb b/app/policies/relay_policy.rb
new file mode 100644
index 000000000..bd75e2197
--- /dev/null
+++ b/app/policies/relay_policy.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+class RelayPolicy < ApplicationPolicy
+ def update?
+ admin?
+ end
+end
diff --git a/app/policies/user_policy.rb b/app/policies/user_policy.rb
index dabdf707a..57af5c61c 100644
--- a/app/policies/user_policy.rb
+++ b/app/policies/user_policy.rb
@@ -18,11 +18,11 @@ class UserPolicy < ApplicationPolicy
end
def enable?
- admin?
+ staff?
end
def disable?
- admin? && !record.admin?
+ staff? && !record.admin?
end
def promote?
diff --git a/app/presenters/account_relationships_presenter.rb b/app/presenters/account_relationships_presenter.rb
index b1e99b31b..e4aaa65f6 100644
--- a/app/presenters/account_relationships_presenter.rb
+++ b/app/presenters/account_relationships_presenter.rb
@@ -2,7 +2,8 @@
class AccountRelationshipsPresenter
attr_reader :following, :followed_by, :blocking,
- :muting, :requested, :domain_blocking
+ :muting, :requested, :domain_blocking,
+ :endorsed
def initialize(account_ids, current_account_id, **options)
@account_ids = account_ids.map { |a| a.is_a?(Account) ? a.id : a }
@@ -14,6 +15,7 @@ class AccountRelationshipsPresenter
@muting = cached[:muting].merge(Account.muting_map(@uncached_account_ids, @current_account_id))
@requested = cached[:requested].merge(Account.requested_map(@uncached_account_ids, @current_account_id))
@domain_blocking = cached[:domain_blocking].merge(Account.domain_blocking_map(@uncached_account_ids, @current_account_id))
+ @endorsed = cached[:endorsed].merge(Account.endorsed_map(@uncached_account_ids, @current_account_id))
cache_uncached!
@@ -23,6 +25,7 @@ class AccountRelationshipsPresenter
@muting.merge!(options[:muting_map] || {})
@requested.merge!(options[:requested_map] || {})
@domain_blocking.merge!(options[:domain_blocking_map] || {})
+ @endorsed.merge!(options[:endorsed_map] || {})
end
private
@@ -37,6 +40,7 @@ class AccountRelationshipsPresenter
muting: {},
requested: {},
domain_blocking: {},
+ endorsed: {},
}
@uncached_account_ids = []
@@ -63,6 +67,7 @@ class AccountRelationshipsPresenter
muting: { account_id => muting[account_id] },
requested: { account_id => requested[account_id] },
domain_blocking: { account_id => domain_blocking[account_id] },
+ endorsed: { account_id => endorsed[account_id] },
}
Rails.cache.write("relationship:#{@current_account_id}:#{account_id}", maps_for_account, expires_in: 1.day)
diff --git a/app/presenters/instance_presenter.rb b/app/presenters/instance_presenter.rb
index e4972c962..a4e4af889 100644
--- a/app/presenters/instance_presenter.rb
+++ b/app/presenters/instance_presenter.rb
@@ -6,6 +6,7 @@ class InstancePresenter
:site_contact_email,
:open_registrations,
:site_title,
+ :site_short_description,
:site_description,
:site_extended_description,
:site_terms,
@@ -13,7 +14,7 @@ class InstancePresenter
)
def contact_account
- Account.find_local(Setting.site_contact_username)
+ Account.find_local(Setting.site_contact_username.gsub(/\A@/, ''))
end
def user_count
diff --git a/app/serializers/activitypub/actor_serializer.rb b/app/serializers/activitypub/actor_serializer.rb
index 41c9aa44e..5054bd683 100644
--- a/app/serializers/activitypub/actor_serializer.rb
+++ b/app/serializers/activitypub/actor_serializer.rb
@@ -93,11 +93,11 @@ class ActivityPub::ActorSerializer < ActiveModel::Serializer
end
def avatar_exists?
- object.avatar.exists?
+ object.avatar?
end
def header_exists?
- object.header.exists?
+ object.header?
end
def manually_approves_followers
diff --git a/app/serializers/activitypub/delete_actor_serializer.rb b/app/serializers/activitypub/delete_actor_serializer.rb
index dfea9db4a..ddf59be97 100644
--- a/app/serializers/activitypub/delete_actor_serializer.rb
+++ b/app/serializers/activitypub/delete_actor_serializer.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
class ActivityPub::DeleteActorSerializer < ActiveModel::Serializer
- attributes :id, :type, :actor
+ attributes :id, :type, :actor, :to
attribute :virtual_object, key: :object
def id
@@ -19,4 +19,8 @@ class ActivityPub::DeleteActorSerializer < ActiveModel::Serializer
def virtual_object
actor
end
+
+ def to
+ [ActivityPub::TagManager::COLLECTIONS[:public]]
+ end
end
diff --git a/app/serializers/activitypub/delete_serializer.rb b/app/serializers/activitypub/delete_serializer.rb
index 2bb65135f..5012a8383 100644
--- a/app/serializers/activitypub/delete_serializer.rb
+++ b/app/serializers/activitypub/delete_serializer.rb
@@ -17,7 +17,7 @@ class ActivityPub::DeleteSerializer < ActiveModel::Serializer
end
end
- attributes :id, :type, :actor
+ attributes :id, :type, :actor, :to
has_one :object, serializer: TombstoneSerializer
@@ -32,4 +32,8 @@ class ActivityPub::DeleteSerializer < ActiveModel::Serializer
def actor
ActivityPub::TagManager.instance.uri_for(object.account)
end
+
+ def to
+ [ActivityPub::TagManager::COLLECTIONS[:public]]
+ end
end
diff --git a/app/serializers/activitypub/undo_announce_serializer.rb b/app/serializers/activitypub/undo_announce_serializer.rb
index 839847e22..4fc042727 100644
--- a/app/serializers/activitypub/undo_announce_serializer.rb
+++ b/app/serializers/activitypub/undo_announce_serializer.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
class ActivityPub::UndoAnnounceSerializer < ActiveModel::Serializer
- attributes :id, :type, :actor
+ attributes :id, :type, :actor, :to
has_one :object, serializer: ActivityPub::ActivitySerializer
@@ -16,4 +16,8 @@ class ActivityPub::UndoAnnounceSerializer < ActiveModel::Serializer
def actor
ActivityPub::TagManager.instance.uri_for(object.account)
end
+
+ def to
+ [ActivityPub::TagManager::COLLECTIONS[:public]]
+ end
end
diff --git a/app/serializers/activitypub/update_serializer.rb b/app/serializers/activitypub/update_serializer.rb
index ebc667d96..48d7a1929 100644
--- a/app/serializers/activitypub/update_serializer.rb
+++ b/app/serializers/activitypub/update_serializer.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
class ActivityPub::UpdateSerializer < ActiveModel::Serializer
- attributes :id, :type, :actor
+ attributes :id, :type, :actor, :to
has_one :object, serializer: ActivityPub::ActorSerializer
@@ -16,4 +16,8 @@ class ActivityPub::UpdateSerializer < ActiveModel::Serializer
def actor
ActivityPub::TagManager.instance.uri_for(object)
end
+
+ def to
+ [ActivityPub::TagManager::COLLECTIONS[:public]]
+ end
end
diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb
index 42d0e4bf3..78b96298c 100644
--- a/app/serializers/initial_state_serializer.rb
+++ b/app/serializers/initial_state_serializer.rb
@@ -14,6 +14,7 @@ class InitialStateSerializer < ActiveModel::Serializer
domain: Rails.configuration.x.local_domain,
admin: object.admin&.id&.to_s,
search_enabled: Chewy.enabled?,
+ version: Mastodon::Version.to_s,
invites_enabled: Setting.min_invite_role == 'user',
}
diff --git a/app/serializers/rest/relationship_serializer.rb b/app/serializers/rest/relationship_serializer.rb
index 45bfd4d6e..c6c722a54 100644
--- a/app/serializers/rest/relationship_serializer.rb
+++ b/app/serializers/rest/relationship_serializer.rb
@@ -2,7 +2,8 @@
class REST::RelationshipSerializer < ActiveModel::Serializer
attributes :id, :following, :showing_reblogs, :followed_by, :blocking,
- :muting, :muting_notifications, :requested, :domain_blocking
+ :muting, :muting_notifications, :requested, :domain_blocking,
+ :endorsed
def id
object.id.to_s
@@ -41,4 +42,8 @@ class REST::RelationshipSerializer < ActiveModel::Serializer
def domain_blocking
instance_options[:relationships].domain_blocking[object.id] || false
end
+
+ def endorsed
+ instance_options[:relationships].endorsed[object.id] || false
+ end
end
diff --git a/app/serializers/rest/status_serializer.rb b/app/serializers/rest/status_serializer.rb
index fe3dc9bfc..61423f961 100644
--- a/app/serializers/rest/status_serializer.rb
+++ b/app/serializers/rest/status_serializer.rb
@@ -3,7 +3,8 @@
class REST::StatusSerializer < ActiveModel::Serializer
attributes :id, :created_at, :in_reply_to_id, :in_reply_to_account_id,
:sensitive, :spoiler_text, :visibility, :language,
- :uri, :content, :url, :reblogs_count, :favourites_count
+ :uri, :content, :url, :replies_count, :reblogs_count,
+ :favourites_count
attribute :favourited, if: :current_user?
attribute :reblogged, if: :current_user?
diff --git a/app/serializers/web/notification_serializer.rb b/app/serializers/web/notification_serializer.rb
index 43ba4d92a..ee83ec8b2 100644
--- a/app/serializers/web/notification_serializer.rb
+++ b/app/serializers/web/notification_serializer.rb
@@ -33,7 +33,7 @@ class Web::NotificationSerializer < ActiveModel::Serializer
end
def body
- str = truncate(strip_tags(object.target_status&.spoiler_text&.presence || object.target_status&.text || object.from_account.note), length: 140)
- HTMLEntities.new.decode(str.to_str) # Do not encode entities, since this value will not be used in HTML
+ str = strip_tags(object.target_status&.spoiler_text&.presence || object.target_status&.text || object.from_account.note)
+ truncate(HTMLEntities.new.decode(str.to_str), length: 140) # Do not encode entities, since this value will not be used in HTML
end
end
diff --git a/app/serializers/webfinger_serializer.rb b/app/serializers/webfinger_serializer.rb
index f80d12c02..8c0b07702 100644
--- a/app/serializers/webfinger_serializer.rb
+++ b/app/serializers/webfinger_serializer.rb
@@ -20,7 +20,7 @@ class WebfingerSerializer < ActiveModel::Serializer
{ rel: 'self', type: 'application/activity+json', href: account_url(object) },
{ rel: 'salmon', href: api_salmon_url(object.id) },
{ rel: 'magic-public-key', href: "data:application/magic-public-key,#{object.magic_key}" },
- { rel: 'http://ostatus.org/schema/1.0/subscribe', template: "#{authorize_follow_url}?acct={uri}" },
+ { rel: 'http://ostatus.org/schema/1.0/subscribe', template: "#{authorize_interaction_url}?uri={uri}" },
]
end
end
diff --git a/app/services/activitypub/process_account_service.rb b/app/services/activitypub/process_account_service.rb
index 7f95678b0..670a0e4d6 100644
--- a/app/services/activitypub/process_account_service.rb
+++ b/app/services/activitypub/process_account_service.rb
@@ -5,9 +5,10 @@ class ActivityPub::ProcessAccountService < BaseService
# Should be called with confirmed valid JSON
# and WebFinger-resolved username and domain
- def call(username, domain, json)
+ def call(username, domain, json, options = {})
return if json['inbox'].blank? || unsupported_uri_scheme?(json['id'])
+ @options = options
@json = json
@uri = @json['id']
@username = username
@@ -31,7 +32,7 @@ class ActivityPub::ProcessAccountService < BaseService
return if @account.nil?
after_protocol_change! if protocol_changed?
- after_key_change! if key_changed?
+ after_key_change! if key_changed? && !@options[:signed_with_known_key]
check_featured_collection! if @account.featured_collection_url.present?
@account
@@ -226,7 +227,7 @@ class ActivityPub::ProcessAccountService < BaseService
updated = tag['updated']
emoji = CustomEmoji.find_by(shortcode: shortcode, domain: @account.domain)
- return unless emoji.nil? || emoji.updated_at >= updated
+ return unless emoji.nil? || image_url != emoji.image_remote_url || (updated && emoji.updated_at >= updated)
emoji ||= CustomEmoji.new(domain: @account.domain, shortcode: shortcode, uri: uri)
emoji.image_remote_url = image_url
diff --git a/app/services/after_block_domain_from_account_service.rb b/app/services/after_block_domain_from_account_service.rb
index 0f1a8505d..56cc819fb 100644
--- a/app/services/after_block_domain_from_account_service.rb
+++ b/app/services/after_block_domain_from_account_service.rb
@@ -15,13 +15,13 @@ class AfterBlockDomainFromAccountService < BaseService
private
def reject_existing_followers!
- @account.passive_relationships.where(account: Account.where(domain: @domain)).includes(:account).find_each do |follow|
+ @account.passive_relationships.where(account: Account.where(domain: @domain)).includes(:account).reorder(nil).find_each do |follow|
reject_follow!(follow)
end
end
def reject_pending_follow_requests!
- FollowRequest.where(target_account: @account).where(account: Account.where(domain: @domain)).includes(:account).find_each do |follow_request|
+ FollowRequest.where(target_account: @account).where(account: Account.where(domain: @domain)).includes(:account).reorder(nil).find_each do |follow_request|
reject_follow!(follow_request)
end
end
diff --git a/app/services/authorize_follow_service.rb b/app/services/authorize_follow_service.rb
index f47d488f1..1674239df 100644
--- a/app/services/authorize_follow_service.rb
+++ b/app/services/authorize_follow_service.rb
@@ -3,7 +3,7 @@
class AuthorizeFollowService < BaseService
def call(source_account, target_account, **options)
if options[:skip_follow_request]
- follow_request = FollowRequest.new(account: source_account, target_account: target_account)
+ follow_request = FollowRequest.new(account: source_account, target_account: target_account, uri: options[:follow_request_uri])
else
follow_request = FollowRequest.find_by!(account: source_account, target_account: target_account)
follow_request.authorize!
diff --git a/app/services/backup_service.rb b/app/services/backup_service.rb
index 8492c1117..4cfa22ab8 100644
--- a/app/services/backup_service.rb
+++ b/app/services/backup_service.rb
@@ -18,7 +18,7 @@ class BackupService < BaseService
def build_json!
@collection = serialize(collection_presenter, ActivityPub::CollectionSerializer)
- account.statuses.with_includes.find_in_batches do |statuses|
+ account.statuses.with_includes.reorder(nil).find_in_batches do |statuses|
statuses.each do |status|
item = serialize(status, ActivityPub::ActivitySerializer)
item.delete(:'@context')
@@ -44,6 +44,7 @@ class BackupService < BaseService
Gem::Package::TarWriter.new(gz) do |tar|
dump_media_attachments!(tar)
dump_outbox!(tar)
+ dump_likes!(tar)
dump_actor!(tar)
end
end
@@ -60,7 +61,7 @@ class BackupService < BaseService
end
def dump_media_attachments!(tar)
- MediaAttachment.attached.where(account: account).find_in_batches do |media_attachments|
+ MediaAttachment.attached.where(account: account).reorder(nil).find_in_batches do |media_attachments|
media_attachments.each do |m|
download_to_tar(tar, m.file, m.file.path)
end
@@ -82,6 +83,8 @@ class BackupService < BaseService
actor[:icon][:url] = 'avatar' + File.extname(actor[:icon][:url]) if actor[:icon]
actor[:image][:url] = 'header' + File.extname(actor[:image][:url]) if actor[:image]
+ actor[:outbox] = 'outbox.json'
+ actor[:likes] = 'likes.json'
download_to_tar(tar, account.avatar, 'avatar' + File.extname(account.avatar.path)) if account.avatar.exists?
download_to_tar(tar, account.header, 'header' + File.extname(account.header.path)) if account.header.exists?
@@ -91,15 +94,30 @@ class BackupService < BaseService
tar.add_file_simple('actor.json', 0o444, json.bytesize) do |io|
io.write(json)
end
+ end
- tar.add_file_simple('key.pem', 0o444, account.private_key.bytesize) do |io|
- io.write(account.private_key)
+ def dump_likes!(tar)
+ collection = serialize(ActivityPub::CollectionPresenter.new(id: 'likes.json', type: :ordered, size: 0, items: []), ActivityPub::CollectionSerializer)
+
+ Status.reorder(nil).joins(:favourites).includes(:account).merge(account.favourites).find_in_batches do |statuses|
+ statuses.each do |status|
+ collection[:totalItems] += 1
+ collection[:orderedItems] << ActivityPub::TagManager.instance.uri_for(status)
+ end
+
+ GC.start
+ end
+
+ json = Oj.dump(collection)
+
+ tar.add_file_simple('likes.json', 0o444, json.bytesize) do |io|
+ io.write(json)
end
end
def collection_presenter
ActivityPub::CollectionPresenter.new(
- id: account_outbox_url(account),
+ id: 'outbox.json',
type: :ordered,
size: account.statuses_count,
items: []
diff --git a/app/services/block_domain_service.rb b/app/services/block_domain_service.rb
index d082de40b..a1fe93665 100644
--- a/app/services/block_domain_service.rb
+++ b/app/services/block_domain_service.rb
@@ -43,14 +43,14 @@ class BlockDomainService < BaseService
end
def suspend_accounts!
- blocked_domain_accounts.where(suspended: false).find_each do |account|
+ blocked_domain_accounts.where(suspended: false).reorder(nil).find_each do |account|
UnsubscribeService.new.call(account) if account.subscribed?
SuspendAccountService.new.call(account)
end
end
def clear_account_images!
- blocked_domain_accounts.find_each do |account|
+ blocked_domain_accounts.reorder(nil).find_each do |account|
account.avatar.destroy if account.avatar.exists?
account.header.destroy if account.header.exists?
account.save
@@ -58,7 +58,7 @@ class BlockDomainService < BaseService
end
def clear_account_attachments!
- media_from_blocked_domain.find_each do |attachment|
+ media_from_blocked_domain.reorder(nil).find_each do |attachment|
@affected_status_ids << attachment.status_id if attachment.status_id.present?
attachment.file.destroy if attachment.file.exists?
diff --git a/app/services/favourite_service.rb b/app/services/favourite_service.rb
index 6e1ac3ba9..b565bcc32 100644
--- a/app/services/favourite_service.rb
+++ b/app/services/favourite_service.rb
@@ -37,6 +37,7 @@ class FavouriteService < BaseService
end
def bump_potential_friendship(account, status)
+ ActivityTracker.increment('activity:interactions')
return if account.following?(status.account_id)
PotentialFriendshipTracker.record(account.id, status.account_id, :favourite)
end
diff --git a/app/services/follow_service.rb b/app/services/follow_service.rb
index 60a389afd..f6888a68d 100644
--- a/app/services/follow_service.rb
+++ b/app/services/follow_service.rb
@@ -27,6 +27,8 @@ class FollowService < BaseService
return
end
+ ActivityTracker.increment('activity:interactions')
+
if target_account.locked? || target_account.activitypub?
request_follow(source_account, target_account, reblogs: reblogs)
else
diff --git a/app/services/notify_service.rb b/app/services/notify_service.rb
index 6490d2735..7d0dcc7ad 100644
--- a/app/services/notify_service.rb
+++ b/app/services/notify_service.rb
@@ -123,7 +123,7 @@ class NotifyService < BaseService
def send_email
return if @notification.activity.nil?
- NotificationMailer.public_send(@notification.type, @recipient, @notification).deliver_later
+ NotificationMailer.public_send(@notification.type, @recipient, @notification).deliver_later(wait: 2.minutes)
end
def email_enabled?
diff --git a/app/services/post_status_service.rb b/app/services/post_status_service.rb
index 4c3485853..300eae547 100644
--- a/app/services/post_status_service.rb
+++ b/app/services/post_status_service.rb
@@ -83,7 +83,9 @@ class PostStatusService < BaseService
end
def bump_potential_friendship(account, status)
- return if !status.reply? || account.following?(status.in_reply_to_account_id)
+ return if !status.reply? || account.id == status.in_reply_to_account_id
+ ActivityTracker.increment('activity:interactions')
+ return if account.following?(status.in_reply_to_account_id)
PotentialFriendshipTracker.record(account.id, status.in_reply_to_account_id, :reply)
end
end
diff --git a/app/services/process_mentions_service.rb b/app/services/process_mentions_service.rb
index 2ed6698cf..b4641c4b4 100644
--- a/app/services/process_mentions_service.rb
+++ b/app/services/process_mentions_service.rb
@@ -25,7 +25,7 @@ class ProcessMentionsService < BaseService
end
end
- next match if mention_undeliverable?(mentioned_account)
+ next match if mention_undeliverable?(mentioned_account) || mentioned_account&.suspended
mentions << mentioned_account.mentions.where(status: status).first_or_create(status: status)
diff --git a/app/services/reblog_service.rb b/app/services/reblog_service.rb
index 0ee8bac2f..33ddef8b8 100644
--- a/app/services/reblog_service.rb
+++ b/app/services/reblog_service.rb
@@ -44,6 +44,7 @@ class ReblogService < BaseService
end
def bump_potential_friendship(account, reblog)
+ ActivityTracker.increment('activity:interactions')
return if account.following?(reblog.reblog.account_id)
PotentialFriendshipTracker.record(account.id, reblog.reblog.account_id, :reblog)
end
diff --git a/app/services/remove_status_service.rb b/app/services/remove_status_service.rb
index 238099169..1a53093b8 100644
--- a/app/services/remove_status_service.rb
+++ b/app/services/remove_status_service.rb
@@ -43,13 +43,13 @@ class RemoveStatusService < BaseService
end
def remove_from_followers
- @account.followers_for_local_distribution.find_each do |follower|
+ @account.followers_for_local_distribution.reorder(nil).find_each do |follower|
FeedManager.instance.unpush_from_home(follower, @status)
end
end
def remove_from_lists
- @account.lists_for_local_distribution.select(:id, :account_id).find_each do |list|
+ @account.lists_for_local_distribution.select(:id, :account_id).reorder(nil).find_each do |list|
FeedManager.instance.unpush_from_list(list, @status)
end
end
@@ -90,6 +90,18 @@ class RemoveStatusService < BaseService
ActivityPub::DeliveryWorker.push_bulk(@account.followers.inboxes) do |inbox_url|
[signed_activity_json, @account.id, inbox_url]
end
+
+ relay! if relayable?
+ end
+
+ def relayable?
+ @status.public_visibility?
+ end
+
+ def relay!
+ ActivityPub::DeliveryWorker.push_bulk(Relay.enabled.pluck(:inbox_url)) do |inbox_url|
+ [signed_activity_json, @account.id, inbox_url]
+ end
end
def salmon_xml
diff --git a/app/services/report_service.rb b/app/services/report_service.rb
index c06488a6d..057d05ab9 100644
--- a/app/services/report_service.rb
+++ b/app/services/report_service.rb
@@ -26,7 +26,10 @@ class ReportService < BaseService
end
def notify_staff!
+ return if @report.unresolved_siblings?
+
User.staff.includes(:account).each do |u|
+ next unless u.allows_report_emails?
AdminMailer.new_report(u.account, @report).deliver_later
end
end
diff --git a/app/services/resolve_url_service.rb b/app/services/resolve_url_service.rb
index a068c1ed8..1db1917e2 100644
--- a/app/services/resolve_url_service.rb
+++ b/app/services/resolve_url_service.rb
@@ -2,11 +2,13 @@
class ResolveURLService < BaseService
include JsonLdHelper
+ include Authorization
attr_reader :url
- def call(url)
+ def call(url, on_behalf_of: nil)
@url = url
+ @on_behalf_of = on_behalf_of
return process_local_url if local_url?
@@ -84,6 +86,10 @@ class ResolveURLService < BaseService
def check_local_status(status)
return if status.nil?
- status if status.public_visibility? || status.unlisted_visibility?
+ authorize_with @on_behalf_of, status, :show?
+ status
+ rescue Mastodon::NotPermittedError
+ # Do not disclose the existence of status the user is not authorized to see
+ nil
end
end
diff --git a/app/services/search_service.rb b/app/services/search_service.rb
index 5bb395942..cc1fcb52f 100644
--- a/app/services/search_service.rb
+++ b/app/services/search_service.rb
@@ -53,7 +53,7 @@ class SearchService < BaseService
end
def url_resource
- @_url_resource ||= ResolveURLService.new.call(query)
+ @_url_resource ||= ResolveURLService.new.call(query, on_behalf_of: @account)
end
def url_resource_symbol
diff --git a/app/services/suspend_account_service.rb b/app/services/suspend_account_service.rb
index 708d15e37..8fc79b8ad 100644
--- a/app/services/suspend_account_service.rb
+++ b/app/services/suspend_account_service.rb
@@ -22,7 +22,11 @@ class SuspendAccountService < BaseService
end
def purge_content!
- ActivityPub::RawDistributionWorker.perform_async(delete_actor_json, @account.id) if @account.local?
+ if @account.local?
+ ActivityPub::DeliveryWorker.push_bulk(delivery_inboxes) do |inbox_url|
+ [delete_actor_json, @account.id, inbox_url]
+ end
+ end
@account.statuses.reorder(nil).find_in_batches do |statuses|
BatchedRemoveStatusService.new.call(statuses)
@@ -59,12 +63,18 @@ class SuspendAccountService < BaseService
end
def delete_actor_json
+ return @delete_actor_json if defined?(@delete_actor_json)
+
payload = ActiveModelSerializers::SerializableResource.new(
@account,
serializer: ActivityPub::DeleteActorSerializer,
adapter: ActivityPub::Adapter
).as_json
- Oj.dump(ActivityPub::LinkedDataSignature.new(payload).sign!(@account))
+ @delete_actor_json = Oj.dump(ActivityPub::LinkedDataSignature.new(payload).sign!(@account))
+ end
+
+ def delivery_inboxes
+ Account.inboxes + Relay.enabled.pluck(:inbox_url)
end
end
diff --git a/app/validators/email_mx_validator.rb b/app/validators/email_mx_validator.rb
index e9e6b56e8..8d1e58b38 100644
--- a/app/validators/email_mx_validator.rb
+++ b/app/validators/email_mx_validator.rb
@@ -16,7 +16,7 @@ class EmailMxValidator < ActiveModel::Validator
return true if domain.nil?
records = Resolv::DNS.new.getresources(domain, Resolv::DNS::Resource::IN::MX).to_a.map { |e| e.exchange.to_s }
- records = Resolv::DNS.new.getresources(domain, Resolv::DNS::Resource::IN::A).to_a.map { |e| e.exchange.to_s } if records.empty?
+ records = Resolv::DNS.new.getresources(domain, Resolv::DNS::Resource::IN::A).to_a.map { |e| e.address.to_s } if records.empty?
records.empty? || on_blacklist?(records)
end
diff --git a/app/views/about/_administration.html.haml b/app/views/about/_administration.html.haml
deleted file mode 100644
index 02286d68b..000000000
--- a/app/views/about/_administration.html.haml
+++ /dev/null
@@ -1,19 +0,0 @@
-.account
- .account__wrapper
- - if @instance_presenter.contact_account
- = link_to TagManager.instance.url_for(@instance_presenter.contact_account), class: 'account__display-name' do
- .account__avatar-wrapper
- .account__avatar{ style: "background-image: url(#{@instance_presenter.contact_account.avatar.url})" }
- %span.display-name
- %bdi
- %strong.display-name__html.emojify= display_name(@instance_presenter.contact_account, custom_emojify: true)
- %span.display-name__account @#{@instance_presenter.contact_account.acct}
- - else
- .account__display-name
- .account__avatar-wrapper
- .account__avatar{ style: "background-image: url(#{full_asset_url('avatars/original/missing.png', skip_pipeline: true)})" }
- %span.display-name
- %strong= t 'about.contact_missing'
- %span.display-name__account= t 'about.contact_unavailable'
-
- = link_to t('about.learn_more'), about_more_path, class: 'button button-alternative'
diff --git a/app/views/about/_contact.html.haml b/app/views/about/_contact.html.haml
deleted file mode 100644
index 3215d50b5..000000000
--- a/app/views/about/_contact.html.haml
+++ /dev/null
@@ -1,22 +0,0 @@
-.panel
- .panel-header
- = succeed ':' do
- = t 'about.contact'
- - if contact.site_contact_email.present?
- = mail_to contact.site_contact_email, nil, title: contact.site_contact_email
- - else
- %span= t 'about.contact_unavailable'
- .panel-body
- - if contact.contact_account
- .owner
- .avatar= image_tag contact.contact_account.avatar.url
- .name
- = link_to TagManager.instance.url_for(contact.contact_account) do
- %span.display_name.emojify= display_name(contact.contact_account, custom_emojify: true)
- %span.username @#{contact.contact_account.acct}
- - else
- .owner
- .avatar= image_tag full_asset_url('avatars/original/missing.png', skip_pipeline: true)
- .name
- %span.display_name= t 'about.contact_missing'
- %span.username= t 'about.contact_unavailable'
diff --git a/app/views/about/more.html.haml b/app/views/about/more.html.haml
index df072b8ae..20d5a262b 100644
--- a/app/views/about/more.html.haml
+++ b/app/views/about/more.html.haml
@@ -5,39 +5,43 @@
= javascript_pack_tag 'public', integrity: true, crossorigin: 'anonymous'
= render partial: 'shared/og'
-.landing-page
- .header-wrapper.compact
- .header
- = render 'links'
+.grid-3
+ .column-0
+ .public-account-header.public-account-header--no-bar
+ .public-account-header__image
+ = image_tag @instance_presenter.hero&.file&.url || @instance_presenter.thumbnail&.file&.url || asset_pack_path('preview.jpg'), alt: @instance_presenter.site_title, class: 'parallax'
- .container-alt.hero
- .heading
- %h3= t('about.description_headline', domain: site_hostname)
- %p= @instance_presenter.site_description.html_safe.presence || t('about.generic_description', domain: site_hostname)
+ .column-1
+ .landing-page__call-to-action{ dir: 'ltr' }
+ .row
+ .row__information-board
+ .information-board__section
+ %span= t 'about.user_count_before'
+ %strong= number_with_delimiter @instance_presenter.user_count
+ %span= t 'about.user_count_after', count: @instance_presenter.user_count
+ .information-board__section
+ %span= t 'about.status_count_before'
+ %strong= number_with_delimiter @instance_presenter.status_count
+ %span= t 'about.status_count_after', count: @instance_presenter.status_count
+ .row__mascot
+ .landing-page__mascot
+ = image_tag asset_pack_path('elephant_ui_plane.svg')
- .information-board
- .container-alt
- .information-board__sections
- .information-board__section
- %span= t 'about.user_count_before'
- %strong= number_with_delimiter @instance_presenter.user_count
- %span= t 'about.user_count_after'
- .information-board__section
- %span= t 'about.status_count_before'
- %strong= number_with_delimiter @instance_presenter.status_count
- %span= t 'about.status_count_after'
- .information-board__section
- %span= t 'about.domain_count_before'
- %strong= number_with_delimiter @instance_presenter.domain_count
- %span= t 'about.domain_count_after'
- = render 'contact', contact: @instance_presenter
-
- .extended-description
- .container-alt
- = @instance_presenter.site_extended_description.html_safe.presence || t('about.extended_description_html')
-
- .footer-links
- .container-alt
+ .column-2
+ .landing-page__information.contact-widget
%p
- = link_to t('about.source_code'), @instance_presenter.source_url
- = " (#{@instance_presenter.version_number})"
+ %strong= t 'about.administered_by'
+
+ = account_link_to(@instance_presenter.contact_account)
+
+ - if @instance_presenter.site_contact_email.present?
+ %p.contact-widget__mail
+ %strong
+ = succeed ':' do
+ = t 'about.contact'
+ %br/
+ = mail_to @instance_presenter.site_contact_email, nil, title: @instance_presenter.site_contact_email
+
+ .column-3
+ .box-widget
+ .rich-formatting= @instance_presenter.site_extended_description.html_safe.presence || t('about.extended_description_html')
diff --git a/app/views/about/show.html.haml b/app/views/about/show.html.haml
index fba46d54b..229b0f55b 100644
--- a/app/views/about/show.html.haml
+++ b/app/views/about/show.html.haml
@@ -56,11 +56,11 @@
.information-board__section
%span= t 'about.user_count_before'
%strong= number_with_delimiter @instance_presenter.user_count
- %span= t 'about.user_count_after'
+ %span= t 'about.user_count_after', count: @instance_presenter.user_count
.information-board__section
%span= t 'about.status_count_before'
%strong= number_with_delimiter @instance_presenter.status_count
- %span= t 'about.status_count_after'
+ %span= t 'about.status_count_after', count: @instance_presenter.status_count
.row__mascot
.landing-page__mascot
= image_tag asset_pack_path('elephant_ui_plane.svg')
@@ -88,11 +88,11 @@
.information-board__section
%span= t 'about.user_count_before'
%strong= number_with_delimiter @instance_presenter.user_count
- %span= t 'about.user_count_after'
+ %span= t 'about.user_count_after', count: @instance_presenter.user_count
.information-board__section
%span= t 'about.status_count_before'
%strong= number_with_delimiter @instance_presenter.status_count
- %span= t 'about.status_count_after'
+ %span= t 'about.status_count_after', count: @instance_presenter.status_count
.row__mascot
.landing-page__mascot
= image_tag asset_pack_path('elephant_ui_plane.svg')
@@ -110,7 +110,7 @@
%p= t 'about.about_mastodon_html'
%div.contact
%h3= t 'about.administered_by'
- = render 'administration'
+ = account_link_to(@instance_presenter.contact_account, link_to(t('about.learn_more'), about_more_path, class: 'button button-alternative'))
= render 'features'
@@ -131,7 +131,7 @@
%p= t 'about.about_mastodon_html'
%div.contact
%h3= t 'about.administered_by'
- = render 'administration'
+ = account_link_to(@instance_presenter.contact_account, link_to(t('about.learn_more'), about_more_path, class: 'button button-alternative'))
= render 'features'
diff --git a/app/views/about/terms.html.haml b/app/views/about/terms.html.haml
index c7d36ed47..9d076a91b 100644
--- a/app/views/about/terms.html.haml
+++ b/app/views/about/terms.html.haml
@@ -1,11 +1,9 @@
- content_for :page_title do
= t('terms.title', instance: site_hostname)
-.landing-page
- .header-wrapper.compact
- .header
- = render 'links'
-
- .extended-description
- .container-alt
- = @instance_presenter.site_terms.html_safe.presence || t('terms.body_html')
+.grid
+ .column-0
+ .box-widget
+ .rich-formatting= @instance_presenter.site_terms.html_safe.presence || t('terms.body_html')
+ .column-1
+ = render 'application/sidebar'
diff --git a/app/views/accounts/_bio.html.haml b/app/views/accounts/_bio.html.haml
new file mode 100644
index 000000000..4e674beff
--- /dev/null
+++ b/app/views/accounts/_bio.html.haml
@@ -0,0 +1,15 @@
+.public-account-bio
+ - unless account.fields.empty?
+ .account__header__fields
+ - account.fields.each do |field|
+ %dl
+ %dt.emojify{ title: field.name }= Formatter.instance.format_field(account, field.name, custom_emojify: true)
+ %dd.emojify{ title: field.value }= Formatter.instance.format_field(account, field.value, custom_emojify: true)
+
+ = account_badge(account)
+
+ - if account.note.present?
+ .account__header__content.emojify= Formatter.instance.simplified_format(account, custom_emojify: true)
+
+ .public-account-bio__extra
+ = t 'accounts.joined', date: l(account.created_at, format: :month)
diff --git a/app/views/accounts/_follow_button.html.haml b/app/views/accounts/_follow_button.html.haml
deleted file mode 100644
index 558ced010..000000000
--- a/app/views/accounts/_follow_button.html.haml
+++ /dev/null
@@ -1,28 +0,0 @@
-- relationships ||= nil
-
-- unless account.memorial? || account.moved?
- - if user_signed_in?
- - requested = relationships ? relationships.requested[account.id].present? : current_account.requested?(account)
- - following = relationships ? relationships.following[account.id].present? : current_account.following?(account)
-
- - if user_signed_in? && current_account.id != account.id && !requested
- .controls
- - if following
- = link_to (account.local? ? account_unfollow_path(account) : remote_unfollow_path(acct: account.acct)), data: { method: :post }, class: 'icon-button' do
- = fa_icon 'user-times'
- = t('accounts.unfollow')
- - else
- = link_to (account.local? ? account_follow_path(account) : authorize_follow_path(acct: account.acct)), data: { method: :post }, class: 'icon-button' do
- = fa_icon 'user-plus'
- = t('accounts.follow')
- - elsif user_signed_in? && current_account.id == account.id
- .controls
- = link_to settings_profile_url, class: 'icon-button' do
- = fa_icon 'pencil'
- = t('settings.edit_profile')
- - elsif !user_signed_in?
- .controls
- .remote-follow
- = link_to (account.local? ? account_remote_follow_path(account) : "web+mastodon://follow?uri=#{account.uri}"), class: 'icon-button' do
- = fa_icon 'user-plus'
- = t('accounts.remote_follow')
diff --git a/app/views/accounts/_follow_grid.html.haml b/app/views/accounts/_follow_grid.html.haml
deleted file mode 100644
index fdcef84be..000000000
--- a/app/views/accounts/_follow_grid.html.haml
+++ /dev/null
@@ -1,8 +0,0 @@
-.accounts-grid{ class: accounts.empty? ? 'empty' : '' }
- - if accounts.empty?
- = image_tag asset_pack_path('elephant_ui_greeting.svg'), alt: '', role: 'presentational'
- = render partial: 'accounts/nothing_here'
- - else
- = render partial: 'accounts/grid_card', collection: accounts, as: :account, cached: !user_signed_in?
-
-= paginate follows
diff --git a/app/views/accounts/_follow_grid_hidden.html.haml b/app/views/accounts/_follow_grid_hidden.html.haml
deleted file mode 100644
index e970350e6..000000000
--- a/app/views/accounts/_follow_grid_hidden.html.haml
+++ /dev/null
@@ -1,3 +0,0 @@
-.accounts-grid.empty
- = image_tag asset_pack_path('elephant_ui_greeting.svg'), alt: '', role: 'presentational'
- %p.nothing-here= t('accounts.network_hidden')
diff --git a/app/views/accounts/_grid_card.html.haml b/app/views/accounts/_grid_card.html.haml
deleted file mode 100644
index a59ed128e..000000000
--- a/app/views/accounts/_grid_card.html.haml
+++ /dev/null
@@ -1,12 +0,0 @@
-.account-grid-card
- .account-grid-card__header{ style: "background-image: url(#{account.header.url(:original)})" }
- = render 'accounts/follow_button', account: account, relationships: @relationships
- .account-grid-card__avatar
- .avatar= image_tag account.avatar.url(:original)
- .name
- = link_to TagManager.instance.url_for(account) do
- %span.display_name.emojify= display_name(account, custom_emojify: true)
- %span.username
- @#{account.local? ? account.local_username_and_domain : account.acct}
- = fa_icon('lock') if account.locked?
- .account__header__content.p-note.emojify= Formatter.instance.simplified_format(account)
diff --git a/app/views/accounts/_header.html.haml b/app/views/accounts/_header.html.haml
index 4098d6778..95e55a1b0 100644
--- a/app/views/accounts/_header.html.haml
+++ b/app/views/accounts/_header.html.haml
@@ -1,51 +1,43 @@
-.card.h-card.p-author{ style: "background-image: url(#{account.header.url(:original)})" }
- .card__illustration
- = render 'accounts/follow_button', account: account
- .avatar= image_tag account.avatar.url(:original), class: 'u-photo'
+.public-account-header{:class => ("inactive" if account.moved?)}
+ .public-account-header__image
+ = image_tag account.header.url, class: 'parallax'
+ .public-account-header__bar
+ = link_to short_account_url(account), class: 'avatar' do
+ = image_tag account.avatar.url
+ .public-account-header__tabs
+ .public-account-header__tabs__name
+ %h1
+ = display_name(account, custom_emojify: true)
+ %small
+ = acct(account)
+ = fa_icon('lock') if account.locked?
+ .public-account-header__tabs__tabs
+ .details-counters
+ .counter{ class: active_nav_class(short_account_url(account)) }
+ = link_to short_account_url(account), class: 'u-url u-uid', title: number_with_delimiter(account.statuses_count) do
+ %span.counter-number= number_to_human account.statuses_count, strip_insignificant_zeros: true
+ %span.counter-label= t('accounts.posts', count: account.statuses_count)
- .card__bio
- %h1.name
- %span.p-name.emojify= display_name(account, custom_emojify: true)
- %small<
- %span>< @#{account.local_username_and_domain}
- = fa_icon('lock') if account.locked?
+ .counter{ class: active_nav_class(account_following_index_url(account)) }
+ = link_to account_following_index_url(account), title: number_with_delimiter(account.following_count) do
+ %span.counter-number= number_to_human account.following_count, strip_insignificant_zeros: true
+ %span.counter-label= t('accounts.following', count: account.following_count)
- - if account.bot?
- .roles
- .account-role.bot
- = t 'accounts.roles.bot'
- - elsif Setting.show_staff_badge
- - if account.user_admin?
- .roles
- .account-role.admin
- = t 'accounts.roles.admin'
- - elsif account.user_moderator?
- .roles
- .account-role.moderator
- = t 'accounts.roles.moderator'
+ .counter{ class: active_nav_class(account_followers_url(account)) }
+ = link_to account_followers_url(account), title: number_with_delimiter(account.followers_count) do
+ %span.counter-number= number_to_human account.followers_count, strip_insignificant_zeros: true
+ %span.counter-label= t('accounts.followers', count: account.followers_count)
+ .spacer
+ .public-account-header__tabs__tabs__buttons
+ = account_action_button(account)
- .bio
- .account__header__content.p-note.emojify= Formatter.instance.simplified_format(account, custom_emojify: true)
+ .public-account-header__extra
+ = render 'accounts/bio', account: account
- - unless account.fields.empty?
- .account__header__fields
- - account.fields.each do |field|
- %dl
- %dt.emojify{ title: field.name }= field.name
- %dd.emojify{ title: field.value }= Formatter.instance.format_field(account, field.value, custom_emojify: true)
-
- .details-counters
- .counter{ class: active_nav_class(short_account_url(account)) }
- = link_to short_account_url(account), class: 'u-url u-uid' do
- %span.counter-number= number_to_human account.statuses_count, strip_insignificant_zeros: true
- %span.counter-label= t('accounts.posts')
-
- .counter{ class: active_nav_class(account_following_index_url(account)) }
+ .public-account-header__extra__links
= link_to account_following_index_url(account) do
- %span.counter-number= number_to_human account.following_count, strip_insignificant_zeros: true
- %span.counter-label= t('accounts.following')
-
- .counter{ class: active_nav_class(account_followers_url(account)) }
+ %strong= number_to_human account.following_count, strip_insignificant_zeros: true
+ = t('accounts.following', count: account.following_count)
= link_to account_followers_url(account) do
- %span.counter-number= number_to_human account.followers_count, strip_insignificant_zeros: true
- %span.counter-label= t('accounts.followers')
+ %strong= number_to_human account.followers_count, strip_insignificant_zeros: true
+ = t('accounts.followers', count: account.followers_count)
diff --git a/app/views/accounts/_moved_strip.html.haml b/app/views/accounts/_moved.html.haml
similarity index 54%
rename from app/views/accounts/_moved_strip.html.haml
rename to app/views/accounts/_moved.html.haml
index ae18c6dc7..f99328dbd 100644
--- a/app/views/accounts/_moved_strip.html.haml
+++ b/app/views/accounts/_moved.html.haml
@@ -1,11 +1,11 @@
- moved_to_account = account.moved_to_account
-.moved-strip
- .moved-strip__message
+.moved-account-widget
+ .moved-account-widget__message
= fa_icon 'suitcase'
- = t('accounts.moved_html', name: content_tag(:strong, display_name(account, custom_emojify: true), class: :emojify), new_profile_link: link_to(content_tag(:strong, safe_join(['@', content_tag(:span, moved_to_account.acct)])), TagManager.instance.url_for(moved_to_account), class: 'mention'))
+ = t('accounts.moved_html', name: content_tag(:bdi, content_tag(:strong, display_name(account, custom_emojify: true), class: :emojify)), new_profile_link: link_to(content_tag(:strong, safe_join(['@', content_tag(:span, moved_to_account.acct)])), TagManager.instance.url_for(moved_to_account), class: 'mention'))
- .moved-strip__card
+ .moved-account-widget__card
= link_to TagManager.instance.url_for(moved_to_account), class: 'detailed-status__display-name p-author h-card', target: '_blank', rel: 'noopener' do
.detailed-status__display-avatar
.account__avatar-overlay
@@ -13,5 +13,6 @@
.account__avatar-overlay-overlay{ style: "background-image: url('#{account.avatar.url(:original)}')" }
%span.display-name
- %strong.emojify= display_name(moved_to_account, custom_emojify: true)
+ %bdi
+ %strong.emojify= display_name(moved_to_account, custom_emojify: true)
%span @#{moved_to_account.acct}
diff --git a/app/views/accounts/_nothing_here.html.haml b/app/views/accounts/_nothing_here.html.haml
deleted file mode 100644
index 0c6dc1168..000000000
--- a/app/views/accounts/_nothing_here.html.haml
+++ /dev/null
@@ -1 +0,0 @@
-%p.nothing-here= t('accounts.nothing_here')
diff --git a/app/views/accounts/show.html.haml b/app/views/accounts/show.html.haml
index cfdd3a945..b825b82cb 100644
--- a/app/views/accounts/show.html.haml
+++ b/app/views/accounts/show.html.haml
@@ -20,36 +20,47 @@
= opengraph 'og:type', 'profile'
= render 'og', account: @account, url: short_account_url(@account, only_path: false)
-- if @account.memorial?
- .memoriam-strip= t('in_memoriam_html')
-- elsif @account.moved?
- = render partial: 'moved_strip', locals: { account: @account }
-- elsif show_landing_strip?
- = render partial: 'shared/landing_strip', locals: { account: @account }
-.h-feed
- %data.p-name{ value: "#{@account.username} on #{site_hostname}" }/
+= render 'header', account: @account, with_bio: true
- = render 'header', account: @account
+.grid
+ .column-0
+ .h-feed
+ %data.p-name{ value: "#{@account.username} on #{site_hostname}" }/
- .activity-stream-tabs
- = active_link_to t('accounts.posts'), short_account_url(@account)
- = active_link_to t('accounts.posts_with_replies'), short_account_with_replies_url(@account)
- = active_link_to t('accounts.media'), short_account_media_url(@account)
+ .account__section-headline
+ = active_link_to t('accounts.posts_tab_heading'), short_account_url(@account)
+ = active_link_to t('accounts.posts_with_replies'), short_account_with_replies_url(@account)
+ = active_link_to t('accounts.media'), short_account_media_url(@account)
- - if @statuses.empty?
- .accounts-grid
- = render 'nothing_here'
- - else
- .activity-stream.with-header
- - if params[:page].to_i.zero?
- = render partial: 'stream_entries/status', collection: @pinned_statuses, as: :status, locals: { pinned: true }
+ - if @statuses.empty?
+ = nothing_here 'nothing-here--under-tabs'
+ - else
+ .activity-stream
+ - if params[:page].to_i.zero?
+ = render partial: 'stream_entries/status', collection: @pinned_statuses, as: :status, locals: { pinned: true }
- = render partial: 'stream_entries/status', collection: @statuses, as: :status
+ - if @newer_url
+ .entry= link_to_more @newer_url
- - if @newer_url || @older_url
- .pagination
- - if @older_url
- = link_to safe_join([fa_icon('chevron-left'), t('pagination.older')], ' '), @older_url, class: 'older', rel: 'next'
- - if @newer_url
- = link_to safe_join([t('pagination.newer'), fa_icon('chevron-right')], ' '), @newer_url, class: 'newer', rel: 'prev'
+ = render partial: 'stream_entries/status', collection: @statuses, as: :status
+
+ - if @older_url
+ .entry= link_to_more @older_url
+
+ .column-1
+ - if @account.memorial?
+ .memoriam-widget= t('in_memoriam_html')
+ - elsif @account.moved?
+ = render 'moved', account: @account
+
+ = render 'bio', account: @account
+
+ - unless @endorsed_accounts.empty?
+ .endorsements-widget
+ %h4= t 'accounts.choices_html', name: content_tag(:bdi, display_name(@account, custom_emojify: true))
+
+ - @endorsed_accounts.each do |account|
+ = account_link_to account
+
+ = render 'application/sidebar'
diff --git a/app/views/admin/accounts/show.html.haml b/app/views/admin/accounts/show.html.haml
index ed8190af5..f2c53e3fe 100644
--- a/app/views/admin/accounts/show.html.haml
+++ b/app/views/admin/accounts/show.html.haml
@@ -123,7 +123,7 @@
- if @account.suspended?
= link_to t('admin.accounts.undo_suspension'), admin_account_suspension_path(@account.id), method: :delete, class: 'button' if can?(:unsuspend, @account)
- else
- = link_to t('admin.accounts.perform_full_suspension'), admin_account_suspension_path(@account.id), method: :post, data: { confirm: t('admin.accounts.are_you_sure') }, class: 'button' if can?(:suspend, @account)
+ = link_to t('admin.accounts.perform_full_suspension'), new_admin_account_suspension_path(@account.id), class: 'button' if can?(:suspend, @account)
- if !@account.local? && @account.hub_url.present?
%hr.spacer/
diff --git a/app/views/admin/dashboard/index.html.haml b/app/views/admin/dashboard/index.html.haml
new file mode 100644
index 000000000..1996eef4d
--- /dev/null
+++ b/app/views/admin/dashboard/index.html.haml
@@ -0,0 +1,149 @@
+- content_for :page_title do
+ = t('admin.dashboard.title')
+
+.dashboard__counters
+ %div
+ = link_to admin_accounts_url(local: 1, recent: 1) do
+ .dashboard__counters__num= number_with_delimiter @users_count
+ .dashboard__counters__label= t 'admin.dashboard.total_users'
+ %div
+ %div
+ .dashboard__counters__num= number_with_delimiter @registrations_week
+ .dashboard__counters__label= t 'admin.dashboard.week_users_new'
+ %div
+ %div
+ .dashboard__counters__num= number_with_delimiter @logins_week
+ .dashboard__counters__label= t 'admin.dashboard.week_users_active'
+ %div
+ %div
+ .dashboard__counters__num= number_with_delimiter @interactions_week
+ .dashboard__counters__label= t 'admin.dashboard.week_interactions'
+ %div
+ = link_to admin_reports_url do
+ .dashboard__counters__num= number_with_delimiter @reports_count
+ .dashboard__counters__label= t 'admin.dashboard.open_reports'
+ %div
+ = link_to sidekiq_url do
+ .dashboard__counters__num= number_with_delimiter @queue_backlog
+ .dashboard__counters__label= t 'admin.dashboard.backlog'
+
+.dashboard__widgets
+ .dashboard__widgets__users
+ %div
+ %h4= t 'admin.dashboard.recent_users'
+ %ul
+ - @recent_users.each do |user|
+ %li= admin_account_link_to(user.account)
+
+ .dashboard__widgets__features
+ %div
+ %h4= t 'admin.dashboard.features'
+ %ul
+ %li
+ = link_to t('admin.dashboard.feature_registrations'), edit_admin_settings_path
+ - if @registrations_enabled
+ %span.pull-right.positive-hint= fa_icon 'check fw'
+ - else
+ %span.pull-right.negative-hint= fa_icon 'times fw'
+ %li
+ = link_to t('admin.dashboard.feature_invites'), edit_admin_settings_path
+ - if @invites_enabled
+ %span.pull-right.positive-hint= fa_icon 'check fw'
+ - else
+ %span.pull-right.negative-hint= fa_icon 'times fw'
+ %li
+ = link_to t('admin.dashboard.feature_deletions'), edit_admin_settings_path
+ - if @deletions_enabled
+ %span.pull-right.positive-hint= fa_icon 'check fw'
+ - else
+ %span.pull-right.negative-hint= fa_icon 'times fw'
+ %li
+ = link_to t('admin.dashboard.feature_relay'), admin_relays_path
+ - if @relay_enabled
+ %span.pull-right.positive-hint= fa_icon 'check fw'
+ - else
+ %span.pull-right.negative-hint= fa_icon 'times fw'
+
+ .dashboard__widgets__versions
+ %div
+ %h4= t 'admin.dashboard.software'
+ %ul
+ %li
+ Mastodon
+ %span.pull-right= @version
+ %li
+ Ruby
+ %span.pull-right= "#{RUBY_VERSION}p#{RUBY_PATCHLEVEL}"
+ %li
+ PostgreSQL
+ %span.pull-right= @database_version
+ %li
+ Redis
+ %span.pull-right= @redis_version
+
+ .dashboard__widgets__space
+ %div
+ %h4= t 'admin.dashboard.space'
+ %ul
+ %li
+ PostgreSQL
+ %span.pull-right= number_to_human_size @database_size
+ %li
+ Redis
+ %span.pull-right= number_to_human_size @redis_size
+
+ .dashboard__widgets__config
+ %div
+ %h4= t 'admin.dashboard.config'
+ %ul
+ %li
+ = t('admin.dashboard.search')
+ - if @search_enabled
+ %span.pull-right.positive-hint= fa_icon 'check fw'
+ - else
+ %span.pull-right.negative-hint= fa_icon 'times fw'
+ %li
+ = t('admin.dashboard.single_user_mode')
+ - if @single_user_mode
+ %span.pull-right.positive-hint= fa_icon 'check fw'
+ - else
+ %span.pull-right.negative-hint= fa_icon 'times fw'
+ %li
+ LDAP
+ - if @ldap_enabled
+ %span.pull-right.positive-hint= fa_icon 'check fw'
+ - else
+ %span.pull-right.negative-hint= fa_icon 'times fw'
+ %li
+ CAS
+ - if @cas_enabled
+ %span.pull-right.positive-hint= fa_icon 'check fw'
+ - else
+ %span.pull-right.negative-hint= fa_icon 'times fw'
+ %li
+ SAML
+ - if @saml_enabled
+ %span.pull-right.positive-hint= fa_icon 'check fw'
+ - else
+ %span.pull-right.negative-hint= fa_icon 'times fw'
+ %li
+ PAM
+ - if @pam_enabled
+ %span.pull-right.positive-hint= fa_icon 'check fw'
+ - else
+ %span.pull-right.negative-hint= fa_icon 'times fw'
+ %li
+ = t 'admin.dashboard.hidden_service'
+ - if @hidden_service
+ %span.pull-right.positive-hint= fa_icon 'check fw'
+ - else
+ %span.pull-right.negative-hint= fa_icon 'times fw'
+
+ .dashboard__widgets__trends
+ %div
+ %h4= t 'admin.dashboard.trends'
+ %ul
+ - @trending_hashtags.each do |tag|
+ %li
+ = link_to "##{tag.name}", web_url("timelines/tag/#{tag.name}")
+ %span.pull-right= number_with_delimiter(tag.history[0][:accounts].to_i)
diff --git a/app/views/admin/domain_blocks/new.html.haml b/app/views/admin/domain_blocks/new.html.haml
index 38fa90169..2b8b24e23 100644
--- a/app/views/admin/domain_blocks/new.html.haml
+++ b/app/views/admin/domain_blocks/new.html.haml
@@ -1,3 +1,6 @@
+- content_for :header_tags do
+ = javascript_pack_tag 'admin', integrity: true, async: true, crossorigin: 'anonymous'
+
- content_for :page_title do
= t('.title')
diff --git a/app/views/admin/invites/index.html.haml b/app/views/admin/invites/index.html.haml
index 944a60471..42159e9f3 100644
--- a/app/views/admin/invites/index.html.haml
+++ b/app/views/admin/invites/index.html.haml
@@ -9,22 +9,28 @@
%li= filter_link_to t('admin.invites.filter.available'), available: 1, expired: nil
%li= filter_link_to t('admin.invites.filter.expired'), available: nil, expired: 1
+%hr.spacer/
+
- if policy(:invite).create?
%p= t('invites.prompt')
= render 'invites/form'
- %hr/
+ %hr.spacer/
-%table.table
- %thead
- %tr
- %th
- %th= t('invites.table.uses')
- %th= t('invites.table.expires_at')
- %th
- %th
- %tbody
- = render @invites
+.table-wrapper
+ %table.table
+ %thead
+ %tr
+ %th
+ %th= t('invites.table.uses')
+ %th= t('invites.table.expires_at')
+ %th
+ %th
+ %tbody
+ = render @invites
= paginate @invites
+
+- if policy(:invite).deactivate_all?
+ = link_to t('admin.invites.deactivate_all'), deactivate_all_admin_invites_path, method: :post, data: { confirm: t('admin.accounts.are_you_sure') }, class: 'button'
diff --git a/app/views/admin/relays/_relay.html.haml b/app/views/admin/relays/_relay.html.haml
new file mode 100644
index 000000000..667821894
--- /dev/null
+++ b/app/views/admin/relays/_relay.html.haml
@@ -0,0 +1,25 @@
+%tr
+ %td
+ %samp= relay.inbox_url
+ %td
+ - if relay.accepted?
+ %span.positive-hint
+ = fa_icon('check')
+ = ' '
+ = t 'admin.relays.enabled'
+ - elsif relay.pending?
+ = fa_icon('hourglass')
+ = ' '
+ = t 'admin.relays.pending'
+ - else
+ %span.negative-hint
+ = fa_icon('times')
+ = ' '
+ = t 'admin.relays.disabled'
+ %td
+ - if relay.accepted?
+ = table_link_to 'power-off', t('admin.relays.disable'), disable_admin_relay_path(relay), method: :post, data: { confirm: t('admin.accounts.are_you_sure') }
+ - elsif !relay.pending?
+ = table_link_to 'power-off', t('admin.relays.enable'), enable_admin_relay_path(relay), method: :post, data: { confirm: t('admin.accounts.are_you_sure') }
+
+ = table_link_to 'times', t('admin.relays.delete'), admin_relay_path(relay), method: :delete, data: { confirm: t('admin.accounts.are_you_sure') }
diff --git a/app/views/admin/relays/index.html.haml b/app/views/admin/relays/index.html.haml
new file mode 100644
index 000000000..1636a53f8
--- /dev/null
+++ b/app/views/admin/relays/index.html.haml
@@ -0,0 +1,20 @@
+- content_for :page_title do
+ = t('admin.relays.title')
+
+.simple_form
+ %p.hint= t('admin.relays.description_html')
+ = link_to @relays.empty? ? t('admin.relays.setup') : t('admin.relays.add_new'), new_admin_relay_path, class: 'block-button'
+
+- unless @relays.empty?
+ %hr.spacer
+
+ .table-wrapper
+ %table.table
+ %thead
+ %tr
+ %th= t('admin.relays.inbox_url')
+ %th= t('admin.relays.status')
+ %th
+ %tbody
+ = render @relays
+
diff --git a/app/views/admin/relays/new.html.haml b/app/views/admin/relays/new.html.haml
new file mode 100644
index 000000000..126794acf
--- /dev/null
+++ b/app/views/admin/relays/new.html.haml
@@ -0,0 +1,13 @@
+- content_for :page_title do
+ = t('admin.relays.add_new')
+
+= simple_form_for @relay, url: admin_relays_path do |f|
+ = render 'shared/error_messages', object: @relay
+
+ .field-group
+ = f.input :inbox_url, as: :string, wrapper: :with_block_label
+
+ .actions
+ = f.button :button, t('admin.relays.save_and_enable'), type: :submit
+
+ %p.hint.subtle-hint= t('admin.relays.enable_hint')
diff --git a/app/views/admin/reports/_status.html.haml b/app/views/admin/reports/_status.html.haml
index 5e174f312..4d557b071 100644
--- a/app/views/admin/reports/_status.html.haml
+++ b/app/views/admin/reports/_status.html.haml
@@ -3,16 +3,18 @@
= f.check_box :status_ids, { multiple: true, include_hidden: false }, status.id
.batch-table__row__content
.status__content><
- - unless status.proper.spoiler_text.blank?
- %p><
- %strong> Content warning: #{Formatter.instance.format_spoiler(status.proper)}
-
- = Formatter.instance.format(status.proper, custom_emojify: true)
+ - if status.proper.spoiler_text.blank?
+ = Formatter.instance.format(status.proper, custom_emojify: true)
+ - else
+ %details<
+ %summary><
+ %strong> Content warning: #{Formatter.instance.format_spoiler(status.proper)}
+ = Formatter.instance.format(status.proper, custom_emojify: true)
- unless status.proper.media_attachments.empty?
- if status.proper.media_attachments.first.video?
- video = status.proper.media_attachments.first
- = react_component :video, src: video.file.url(:original), preview: video.file.url(:small), sensitive: status.proper.sensitive? && !current_account&.user&.setting_display_sensitive_media, width: 610, height: 343, inline: true
+ = react_component :video, src: video.file.url(:original), preview: video.file.url(:small), sensitive: status.proper.sensitive? && !current_account&.user&.setting_display_sensitive_media, width: 610, height: 343, inline: true, alt: video.description
- else
= react_component :media_gallery, height: 343, sensitive: status.proper.sensitive? && !current_account&.user&.setting_display_sensitive_media, 'autoPlayGif': current_account&.user&.setting_auto_play_gif, media: status.proper.media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json }
diff --git a/app/views/admin/reports/show.html.haml b/app/views/admin/reports/show.html.haml
index b13bb5303..ef0e4aa41 100644
--- a/app/views/admin/reports/show.html.haml
+++ b/app/views/admin/reports/show.html.haml
@@ -8,7 +8,7 @@
- if @report.unresolved?
%div{ style: 'float: right' }
= link_to t('admin.reports.silence_account'), admin_report_path(@report, outcome: 'silence'), method: :put, class: 'button'
- = link_to t('admin.reports.suspend_account'), admin_report_path(@report, outcome: 'suspend'), method: :put, class: 'button'
+ = link_to t('admin.reports.suspend_account'), new_admin_account_suspension_path(@report.target_account_id, report_id: @report.id), class: 'button'
%div{ style: 'float: left' }
= link_to t('admin.reports.mark_as_resolved'), admin_report_path(@report, outcome: 'resolve'), method: :put, class: 'button'
- else
diff --git a/app/views/admin/settings/edit.html.haml b/app/views/admin/settings/edit.html.haml
index f5c5deca8..f40edc35a 100644
--- a/app/views/admin/settings/edit.html.haml
+++ b/app/views/admin/settings/edit.html.haml
@@ -7,13 +7,15 @@
.fields-group
= f.input :site_title, placeholder: t('admin.settings.site_title')
- = f.input :site_description, wrapper: :with_block_label, as: :text, label: t('admin.settings.site_description.title'), hint: t('admin.settings.site_description.desc_html'), input_html: { rows: 8 }
+ = f.input :site_short_description, wrapper: :with_block_label, as: :text, label: t('admin.settings.site_short_description.title'), hint: t('admin.settings.site_short_description.desc_html'), input_html: { rows: 2 }
+ = f.input :site_description, wrapper: :with_block_label, as: :text, label: t('admin.settings.site_description.title'), hint: t('admin.settings.site_description.desc_html'), input_html: { rows: 4 }
= f.input :site_contact_username, placeholder: t('admin.settings.contact_information.username')
= f.input :site_contact_email, placeholder: t('admin.settings.contact_information.email')
%hr/
.fields-group
+ = f.input :theme, collection: Themes.instance.names, label_method: lambda { |theme| I18n.t("themes.#{theme}", default: theme) }, wrapper: :with_label, include_blank: false
= f.input :thumbnail, as: :file, wrapper: :with_block_label, label: t('admin.settings.thumbnail.title'), hint: t('admin.settings.thumbnail.desc_html')
= f.input :hero, as: :file, wrapper: :with_block_label, label: t('admin.settings.hero.title'), hint: t('admin.settings.hero.desc_html')
@@ -47,7 +49,7 @@
.fields-group
= f.input :site_extended_description, wrapper: :with_block_label, as: :text, label: t('admin.settings.site_description_extended.title'), hint: t('admin.settings.site_description_extended.desc_html'), input_html: { rows: 8 }
= f.input :site_terms, wrapper: :with_block_label, as: :text, label: t('admin.settings.site_terms.title'), hint: t('admin.settings.site_terms.desc_html'), input_html: { rows: 8 }
-
+ = f.input :custom_css, wrapper: :with_block_label, as: :text, input_html: { rows: 8 }, label: t('admin.settings.custom_css.title'), hint: t('admin.settings.custom_css.desc_html')
%hr/
.fields-group
diff --git a/app/views/admin/suspensions/new.html.haml b/app/views/admin/suspensions/new.html.haml
new file mode 100644
index 000000000..f03ecacc3
--- /dev/null
+++ b/app/views/admin/suspensions/new.html.haml
@@ -0,0 +1,25 @@
+- content_for :page_title do
+ = t('admin.suspensions.title', acct: @account.acct)
+
+= simple_form_for @suspension, url: admin_account_suspension_path(@account.id), method: :post do |f|
+ %p.hint= t('admin.suspensions.warning_html')
+
+ .fields-group
+ %ul
+ %li.negative-hint
+ = number_to_human @account.statuses_count, strip_insignificant_zeros: true
+ = t('accounts.posts', count: @account.statuses_count)
+ %li.negative-hint
+ = number_to_human @account.following_count, strip_insignificant_zeros: true
+ = t('accounts.following', count: @account.following_count)
+ %li.negative-hint
+ = number_to_human @account.followers_count, strip_insignificant_zeros: true
+ = t('accounts.followers', count: @account.followers_count)
+
+ %p.hint= t('admin.suspensions.hint_html', value: content_tag(:code, @account.acct))
+
+ = f.input :acct
+ = f.input_field :report_id, as: :hidden
+
+ .actions
+ = f.button :button, t('admin.suspensions.proceed'), type: :submit, class: 'negative'
diff --git a/app/views/application/_card.html.haml b/app/views/application/_card.html.haml
new file mode 100644
index 000000000..9cf8f8ff2
--- /dev/null
+++ b/app/views/application/_card.html.haml
@@ -0,0 +1,16 @@
+- account_url = local_assigns[:admin] ? admin_account_path(account.id) : TagManager.instance.url_for(account)
+
+.card.h-card
+ = link_to account_url, target: '_blank', rel: 'noopener' do
+ .card__img
+ = image_tag account.header.url, alt: ''
+ .card__bar
+ .avatar
+ = image_tag account.avatar.url, alt: '', width: 48, height: 48, class: 'u-photo'
+
+ .display-name
+ %bdi
+ %strong.emojify.p-name= display_name(account, custom_emojify: true)
+ %span
+ = acct(account)
+ = fa_icon('lock') if account.locked?
diff --git a/app/views/application/_sidebar.html.haml b/app/views/application/_sidebar.html.haml
new file mode 100644
index 000000000..2ff14b252
--- /dev/null
+++ b/app/views/application/_sidebar.html.haml
@@ -0,0 +1,6 @@
+.hero-widget
+ .hero-widget__img
+ = image_tag @instance_presenter.hero&.file&.url || @instance_presenter.thumbnail&.file&.url || asset_pack_path('preview.jpg'), alt: @instance_presenter.site_title
+
+ .hero-widget__text
+ %p= @instance_presenter.site_short_description.html_safe.presence || @instance_presenter.site_description.html_safe.presence || t('about.generic_description', domain: site_hostname)
diff --git a/app/views/auth/registrations/new.html.haml b/app/views/auth/registrations/new.html.haml
index 0fac8e10d..200ed42de 100644
--- a/app/views/auth/registrations/new.html.haml
+++ b/app/views/auth/registrations/new.html.haml
@@ -10,7 +10,7 @@
- if @invite.present? && @invite.autofollow?
.fields-group{ style: 'margin-bottom: 30px' }
%p.hint{ style: 'text-align: center' }= t('invites.invited_by')
- = render 'authorize_follows/card', account: @invite.user.account
+ = render 'application/card', account: @invite.user.account
= f.simple_fields_for :account do |ff|
.input-with-append
diff --git a/app/views/auth/shared/_links.html.haml b/app/views/auth/shared/_links.html.haml
index 08b385092..516c625a6 100644
--- a/app/views/auth/shared/_links.html.haml
+++ b/app/views/auth/shared/_links.html.haml
@@ -3,7 +3,7 @@
%li= link_to t('auth.login'), new_session_path(resource_name)
- if devise_mapping.registerable? && controller_name != 'registrations'
- %li= link_to t('auth.register'), new_registration_path(resource_name)
+ %li= link_to t('auth.register'), open_registrations? ? new_registration_path(resource_name) : 'https://joinmastodon.org/#getting-started'
- if devise_mapping.recoverable? && controller_name != 'passwords' && controller_name != 'registrations'
%li= link_to t('auth.forgot_password'), new_password_path(resource_name)
diff --git a/app/views/authorize_follows/_card.html.haml b/app/views/authorize_follows/_card.html.haml
deleted file mode 100644
index edc03131f..000000000
--- a/app/views/authorize_follows/_card.html.haml
+++ /dev/null
@@ -1,23 +0,0 @@
-.account-card
- .account-card__header{ style: "background-image: url(#{account.header.url(:original)})" }
- .detailed-status__display-name
- %div
- = image_tag account.avatar.url(:original), alt: '', width: 48, height: 48, class: 'avatar'
-
- %span.display-name
- - account_url = local_assigns[:admin] ? admin_account_path(account.id) : TagManager.instance.url_for(account)
- = link_to account_url, class: 'detailed-status__display-name p-author h-card', target: '_blank', rel: 'noopener' do
- %strong.emojify= display_name(account, custom_emojify: true)
- %span @#{account.acct}
-
- .counter
- %span.counter-number= number_to_human account.statuses_count, strip_insignificant_zeros: true
- %span.counter-label= t('accounts.posts')
-
- .counter
- %span.counter-number= number_to_human account.following_count, strip_insignificant_zeros: true
- %span.counter-label= t('accounts.following')
-
- .counter
- %span.counter-number= number_to_human account.followers_count, strip_insignificant_zeros: true
- %span.counter-label= t('accounts.followers')
diff --git a/app/views/authorize_follows/show.html.haml b/app/views/authorize_follows/show.html.haml
deleted file mode 100644
index a1fd01dd6..000000000
--- a/app/views/authorize_follows/show.html.haml
+++ /dev/null
@@ -1,17 +0,0 @@
-- content_for :page_title do
- = t('authorize_follow.title', acct: @account.acct)
-
-.form-container
- .follow-prompt
- = render 'card', account: @account
-
- - if current_account.following?(@account)
- .flash-message
- %strong
- = t('authorize_follow.already_following')
- = render 'post_follow_actions'
-
- - else
- = form_tag authorize_follow_path, method: :post, class: 'simple_form' do
- = hidden_field_tag :acct, @account.acct
- = button_tag t('authorize_follow.follow'), type: :submit
diff --git a/app/views/authorize_follows/_post_follow_actions.html.haml b/app/views/authorize_interactions/_post_follow_actions.html.haml
similarity index 61%
rename from app/views/authorize_follows/_post_follow_actions.html.haml
rename to app/views/authorize_interactions/_post_follow_actions.html.haml
index 2a9c062e9..561c60137 100644
--- a/app/views/authorize_follows/_post_follow_actions.html.haml
+++ b/app/views/authorize_interactions/_post_follow_actions.html.haml
@@ -1,4 +1,4 @@
.post-follow-actions
- %div= link_to t('authorize_follow.post_follow.web'), web_url("accounts/#{@account.id}"), class: 'button button--block'
- %div= link_to t('authorize_follow.post_follow.return'), TagManager.instance.url_for(@account), class: 'button button--block'
+ %div= link_to t('authorize_follow.post_follow.web'), web_url("accounts/#{@resource.id}"), class: 'button button--block'
+ %div= link_to t('authorize_follow.post_follow.return'), TagManager.instance.url_for(@resource), class: 'button button--block'
%div= t('authorize_follow.post_follow.close')
diff --git a/app/views/authorize_follows/error.html.haml b/app/views/authorize_interactions/error.html.haml
similarity index 100%
rename from app/views/authorize_follows/error.html.haml
rename to app/views/authorize_interactions/error.html.haml
diff --git a/app/views/authorize_interactions/show.html.haml b/app/views/authorize_interactions/show.html.haml
new file mode 100644
index 000000000..7ca9b98c1
--- /dev/null
+++ b/app/views/authorize_interactions/show.html.haml
@@ -0,0 +1,18 @@
+- content_for :page_title do
+ = t('authorize_follow.title', acct: @resource.acct)
+
+.form-container
+ .follow-prompt
+ = render 'application/card', account: @resource
+
+ - if current_account.following?(@resource)
+ .flash-message
+ %strong
+ = t('authorize_follow.already_following')
+
+ = render 'post_follow_actions'
+ - else
+ = form_tag authorize_interaction_path, method: :post, class: 'simple_form' do
+ = hidden_field_tag :action, :follow
+ = hidden_field_tag :acct, @resource.acct
+ = button_tag t('authorize_follow.follow'), type: :submit
diff --git a/app/views/authorize_follows/success.html.haml b/app/views/authorize_interactions/success.html.haml
similarity index 60%
rename from app/views/authorize_follows/success.html.haml
rename to app/views/authorize_interactions/success.html.haml
index fa59b24b8..47fd09767 100644
--- a/app/views/authorize_follows/success.html.haml
+++ b/app/views/authorize_interactions/success.html.haml
@@ -1,13 +1,13 @@
- content_for :page_title do
- = t('authorize_follow.title', acct: @account.acct)
+ = t('authorize_follow.title', acct: @resource.acct)
.form-container
.follow-prompt
- - if @account.locked?
+ - if @resource.locked?
%h2= t('authorize_follow.follow_request')
- else
%h2= t('authorize_follow.following')
- = render 'card', account: @account
+ = render 'application/card', account: @resource
= render 'post_follow_actions'
diff --git a/app/views/follower_accounts/index.html.haml b/app/views/follower_accounts/index.html.haml
index 65af81a5b..31dab68bf 100644
--- a/app/views/follower_accounts/index.html.haml
+++ b/app/views/follower_accounts/index.html.haml
@@ -8,6 +8,11 @@
= render 'accounts/header', account: @account
- if @account.user_hides_network?
- = render 'accounts/follow_grid_hidden'
+ .nothing-here= t('accounts.network_hidden')
+- elsif @follows.empty?
+ = nothing_here
- else
- = render 'accounts/follow_grid', follows: @follows, accounts: @follows.map(&:account)
+ .card-grid
+ = render partial: 'application/card', collection: @follows.map(&:account), as: :account
+
+ = paginate @follows
diff --git a/app/views/following_accounts/index.html.haml b/app/views/following_accounts/index.html.haml
index 8fd95a0b4..8b49b529b 100644
--- a/app/views/following_accounts/index.html.haml
+++ b/app/views/following_accounts/index.html.haml
@@ -8,6 +8,11 @@
= render 'accounts/header', account: @account
- if @account.user_hides_network?
- = render 'accounts/follow_grid_hidden'
+ .nothing-here= t('accounts.network_hidden')
+- elsif @follows.empty?
+ = nothing_here
- else
- = render 'accounts/follow_grid', follows: @follows, accounts: @follows.map(&:target_account)
+ .card-grid
+ = render partial: 'application/card', collection: @follows.map(&:target_account), as: :account
+
+ = paginate @follows
diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml
index df898d5a2..436864237 100755
--- a/app/views/layouts/application.html.haml
+++ b/app/views/layouts/application.html.haml
@@ -19,11 +19,10 @@
= javascript_pack_tag "locale_#{I18n.locale}", integrity: true, crossorigin: 'anonymous'
= csrf_meta_tags
+ - if Setting.custom_css.present?
+ = stylesheet_link_tag custom_css_path, media: 'all'
+
= yield :header_tags
- - body_classes ||= @body_classes || ''
- - body_classes += ' system-font' if current_account&.user&.setting_system_font_ui
- - body_classes += current_account&.user&.setting_reduce_motion ? ' reduce-motion' : ' no-reduce-motion'
-
- %body{ class: add_rtl_body_class(body_classes) }
+ %body{ class: body_classes }
= content_for?(:content) ? yield(:content) : yield
diff --git a/app/views/layouts/modal.html.haml b/app/views/layouts/modal.html.haml
index 325b4ec72..b73068459 100644
--- a/app/views/layouts/modal.html.haml
+++ b/app/views/layouts/modal.html.haml
@@ -2,7 +2,7 @@
= javascript_pack_tag 'public', integrity: true, crossorigin: 'anonymous'
- content_for :content do
- - if user_signed_in?
+ - if user_signed_in? && !@hide_header
.account-header
.avatar= image_tag current_account.avatar.url(:original)
.name
diff --git a/app/views/layouts/public.html.haml b/app/views/layouts/public.html.haml
index 600290297..6bf7efb23 100644
--- a/app/views/layouts/public.html.haml
+++ b/app/views/layouts/public.html.haml
@@ -2,16 +2,49 @@
= javascript_pack_tag 'public', integrity: true, crossorigin: 'anonymous'
- content_for :content do
- .container-alt= yield
- .footer
- - if !user_signed_in? && single_user_mode?
- %span.single-user-login
- = link_to t('auth.login'), new_user_session_path
- —
- %span.footer__domain= link_to site_hostname, about_path
- - else
- %span.footer__domain= link_to site_hostname, root_path
- %span.powered-by
- != t('generic.powered_by', link: link_to('https://joinmastodon.org') { image_tag asset_pack_path('logo_full.svg'), alt: 'Mastodon' })
+ .public-layout
+ .container
+ %nav.header
+ .nav-left
+ = link_to root_url, class: 'brand' do
+ = image_tag asset_pack_path('logo_full.svg'), alt: 'Mastodon'
+ .nav-center
+ .nav-right
+ - if user_signed_in?
+ = link_to t('settings.back'), root_url, class: 'nav-link nav-button webapp-btn'
+ - else
+ = link_to t('auth.login'), new_user_session_path, class: 'webapp-btn nav-link nav-button'
+ = link_to t('auth.register'), open_registrations? ? new_user_registration_path : 'https://joinmastodon.org/#getting-started', class: 'webapp-btn nav-link nav-button'
+
+ .container= yield
+
+ .container
+ .footer
+ .grid
+ .column-0
+ %h4= t 'footer.resources'
+ %ul
+ %li= link_to t('about.terms'), terms_path
+ %li= link_to t('about.privacy_policy'), terms_path
+ .column-1
+ %h4= t 'footer.developers'
+ %ul
+ %li= link_to t('about.documentation'), 'https://github.com/tootsuite/documentation'
+ %li= link_to t('about.api'), 'https://github.com/tootsuite/documentation/blob/master/Using-the-API/API.md'
+ .column-2
+ %h4= link_to t('about.what_is_mastodon'), 'https://joinmastodon.org/'
+
+ = link_to root_url, class: 'brand' do
+ = render file: Rails.root.join('app', 'javascript', 'images', 'logo_transparent.svg')
+ .column-3
+ %h4= site_hostname
+ %ul
+ %li= link_to t('about.about_this'), about_more_path
+ %li= "v#{Mastodon::Version.to_s}"
+ .column-4
+ %h4= t 'footer.more'
+ %ul
+ %li= link_to t('about.source_code'), Mastodon::Version.source_url
+ %li= link_to t('about.apps'), 'https://joinmastodon.org/apps'
= render template: 'layouts/application'
diff --git a/app/views/remote_follow/new.html.haml b/app/views/remote_follow/new.html.haml
index 9b22fda5f..9b679015f 100644
--- a/app/views/remote_follow/new.html.haml
+++ b/app/views/remote_follow/new.html.haml
@@ -6,7 +6,7 @@
.follow-prompt
%h2= t('remote_follow.prompt')
- = render partial: 'authorize_follows/card', locals: { account: @account }
+ = render partial: 'application/card', locals: { account: @account }
= simple_form_for @remote_follow, as: :remote_follow, url: account_remote_follow_path(@account) do |f|
= render 'shared/error_messages', object: @remote_follow
diff --git a/app/views/remote_interaction/new.html.haml b/app/views/remote_interaction/new.html.haml
new file mode 100644
index 000000000..7357546b6
--- /dev/null
+++ b/app/views/remote_interaction/new.html.haml
@@ -0,0 +1,17 @@
+.form-container
+ .follow-prompt
+ %h2= t('remote_interaction.prompt')
+
+ .public-layout
+ .activity-stream.activity-stream--highlighted
+ = render 'stream_entries/status', status: @status
+
+ = simple_form_for @remote_follow, as: :remote_follow, url: remote_interaction_path(@status) do |f|
+ = render 'shared/error_messages', object: @remote_follow
+
+ = f.input :acct, placeholder: t('remote_follow.acct'), input_html: { autocapitalize: 'none', autocorrect: 'off' }
+
+ .actions
+ = f.button :button, t('remote_interaction.proceed'), type: :submit
+
+ %p.hint.subtle-hint= t('remote_follow.no_account_html', sign_up_path: open_registrations? ? new_user_registration_path : 'https://joinmastodon.org/#getting-started')
diff --git a/app/views/remote_unfollows/success.html.haml b/app/views/remote_unfollows/success.html.haml
index aa3c838a0..b007eedc7 100644
--- a/app/views/remote_unfollows/success.html.haml
+++ b/app/views/remote_unfollows/success.html.haml
@@ -5,6 +5,6 @@
.follow-prompt
%h2= t('remote_unfollow.unfollowed')
- = render 'card', account: @account
+ = render 'application/card', account: @account
= render 'post_follow_actions'
diff --git a/app/views/settings/exports/show.html.haml b/app/views/settings/exports/show.html.haml
index 30cd26914..792dccd9e 100644
--- a/app/views/settings/exports/show.html.haml
+++ b/app/views/settings/exports/show.html.haml
@@ -8,17 +8,25 @@
%th= t('exports.storage')
%td= number_to_human_size @export.total_storage
%td
+ %tr
+ %th= t('accounts.statuses', count: @export.total_statuses)
+ %td= number_with_delimiter @export.total_statuses
+ %td
%tr
%th= t('exports.follows')
- %td= number_to_human @export.total_follows
+ %td= number_with_delimiter @export.total_follows
%td= table_link_to 'download', t('exports.csv'), settings_exports_follows_path(format: :csv)
+ %tr
+ %th= t('accounts.followers', count: @export.total_followers)
+ %td= number_with_delimiter @export.total_followers
+ %td
%tr
%th= t('exports.blocks')
- %td= number_to_human @export.total_blocks
+ %td= number_with_delimiter @export.total_blocks
%td= table_link_to 'download', t('exports.csv'), settings_exports_blocks_path(format: :csv)
%tr
%th= t('exports.mutes')
- %td= number_to_human @export.total_mutes
+ %td= number_with_delimiter @export.total_mutes
%td= table_link_to 'download', t('exports.csv'), settings_exports_mutes_path(format: :csv)
%p.muted-hint= t('exports.archive_takeout.hint_html')
diff --git a/app/views/settings/imports/show.html.haml b/app/views/settings/imports/show.html.haml
index 991dd4e94..2b43cb134 100644
--- a/app/views/settings/imports/show.html.haml
+++ b/app/views/settings/imports/show.html.haml
@@ -1,11 +1,14 @@
- content_for :page_title do
= t('settings.import')
-%p.hint= t('imports.preface')
-
= simple_form_for @import, url: settings_import_path do |f|
- = f.input :type, collection: Import.types.keys, wrapper: :with_label, include_blank: false, label_method: lambda { |type| I18n.t("imports.types.#{type}") }, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li'
- = f.input :data, wrapper: :with_label, hint: t('simple_form.hints.imports.data')
+ %p.hint= t('imports.preface')
+
+ .field-group
+ = f.input :type, collection: Import.types.keys, wrapper: :with_label, include_blank: false, label_method: lambda { |type| I18n.t("imports.types.#{type}") }, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li'
+
+ .field-group
+ = f.input :data, wrapper: :with_block_label, hint: t('simple_form.hints.imports.data')
.actions
= f.button :button, t('imports.upload'), type: :submit
diff --git a/app/views/settings/migrations/show.html.haml b/app/views/settings/migrations/show.html.haml
index b7c34761f..c69061d50 100644
--- a/app/views/settings/migrations/show.html.haml
+++ b/app/views/settings/migrations/show.html.haml
@@ -6,7 +6,7 @@
%p.hint= t('migrations.currently_redirecting')
.fields-group
- = render partial: 'authorize_follows/card', locals: { account: @migration.account }
+ = render partial: 'application/card', locals: { account: @migration.account }
= render 'shared/error_messages', object: @migration
diff --git a/app/views/settings/notifications/show.html.haml b/app/views/settings/notifications/show.html.haml
index b718b62df..8aaac043b 100644
--- a/app/views/settings/notifications/show.html.haml
+++ b/app/views/settings/notifications/show.html.haml
@@ -12,6 +12,9 @@
= ff.input :favourite, as: :boolean, wrapper: :with_label
= ff.input :mention, as: :boolean, wrapper: :with_label
+ - if current_user.staff?
+ = ff.input :report, as: :boolean, wrapper: :with_label
+
.fields-group
= f.simple_fields_for :notification_emails, hash_to_object(current_user.settings.notification_emails) do |ff|
= ff.input :digest, as: :boolean, wrapper: :with_label
diff --git a/app/views/settings/profiles/show.html.haml b/app/views/settings/profiles/show.html.haml
index a84f8a7da..9518bcb61 100644
--- a/app/views/settings/profiles/show.html.haml
+++ b/app/views/settings/profiles/show.html.haml
@@ -8,13 +8,12 @@
= f.input :display_name, placeholder: t('simple_form.labels.defaults.display_name'), hint: t('simple_form.hints.defaults.display_name', count: 30 - @account.display_name.size).html_safe
= f.input :note, placeholder: t('simple_form.labels.defaults.note'), hint: t('simple_form.hints.defaults.note', count: 160 - @account.note.size).html_safe
- .card.compact{ style: "background-image: url(#{@account.header.url(:original)})", data: { original_src: @account.header.url(:original) } }
- .avatar= image_tag @account.avatar.url(:original), data: { original_src: @account.avatar.url(:original) }
+ = render 'application/card', account: @account
.fields-group
- = f.input :avatar, wrapper: :with_label, input_html: { accept: AccountAvatar::IMAGE_MIME_TYPES.join(',') }, hint: t('simple_form.hints.defaults.avatar')
+ = f.input :avatar, wrapper: :with_label, input_html: { accept: AccountAvatar::IMAGE_MIME_TYPES.join(',') }, hint: t('simple_form.hints.defaults.avatar', dimensions: '400x400', size: number_to_human_size(AccountAvatar::LIMIT))
- = f.input :header, wrapper: :with_label, input_html: { accept: AccountHeader::IMAGE_MIME_TYPES.join(',') }, hint: t('simple_form.hints.defaults.header')
+ = f.input :header, wrapper: :with_label, input_html: { accept: AccountHeader::IMAGE_MIME_TYPES.join(',') }, hint: t('simple_form.hints.defaults.header', dimensions: '1500x500', size: number_to_human_size(AccountHeader::LIMIT))
.fields-group
= f.input :locked, as: :boolean, wrapper: :with_label, hint: t('simple_form.hints.defaults.locked')
diff --git a/app/views/shared/_landing_strip.html.haml b/app/views/shared/_landing_strip.html.haml
deleted file mode 100644
index 9a4144723..000000000
--- a/app/views/shared/_landing_strip.html.haml
+++ /dev/null
@@ -1,6 +0,0 @@
-.landing-strip
- = image_tag asset_pack_path('logo.svg'), class: 'logo'
-
- %div
- = t('landing_strip_html', name: content_tag(:span, display_name(account, custom_emojify: true), class: :emojify), link_to_root_path: link_to(content_tag(:strong, site_hostname), root_path))
- = t('landing_strip_signup_html', sign_up_path: open_registrations? ? new_user_registration_path : 'https://joinmastodon.org/#getting-started')
diff --git a/app/views/shared/_og.html.haml b/app/views/shared/_og.html.haml
index a6d805bea..76db511cd 100644
--- a/app/views/shared/_og.html.haml
+++ b/app/views/shared/_og.html.haml
@@ -3,7 +3,7 @@
= opengraph 'og:url', url_for(only_path: false)
= opengraph 'og:type', 'website'
= opengraph 'og:title', @instance_presenter.site_title
-= opengraph 'og:description', strip_tags(@instance_presenter.site_description.presence || t('about.about_mastodon_html'))
+= opengraph 'og:description', strip_tags(@instance_presenter.site_short_description.presence || @instance_presenter.site_description.presence || t('about.about_mastodon_html'))
= opengraph 'og:image', full_asset_url(thumbnail&.file&.url || asset_pack_path('preview.jpg', protocol: :request))
= opengraph 'og:image:width', thumbnail ? thumbnail.meta['width'] : '1200'
= opengraph 'og:image:height', thumbnail ? thumbnail.meta['height'] : '630'
diff --git a/app/views/stream_entries/_content_spoiler.html.haml b/app/views/stream_entries/_content_spoiler.html.haml
deleted file mode 100644
index 798dfce67..000000000
--- a/app/views/stream_entries/_content_spoiler.html.haml
+++ /dev/null
@@ -1,7 +0,0 @@
-.media-spoiler-wrapper{ class: sensitive == false && 'media-spoiler-wrapper__visible' }
- .spoiler-button
- .icon-button.overlayed
- %i.fa.fa-fw.fa-eye
- .media-spoiler
- %span= t('stream_entries.sensitive_content')
- %span= t('stream_entries.click_to_show')
diff --git a/app/views/stream_entries/_detailed_status.html.haml b/app/views/stream_entries/_detailed_status.html.haml
index 85e90a237..d0d9cc5fc 100644
--- a/app/views/stream_entries/_detailed_status.html.haml
+++ b/app/views/stream_entries/_detailed_status.html.haml
@@ -1,35 +1,38 @@
-.detailed-status.light
+.detailed-status.detailed-status--flex
= link_to TagManager.instance.url_for(status.account), class: 'detailed-status__display-name p-author h-card', target: stream_link_target, rel: 'noopener' do
- %div
- .avatar
- = image_tag status.account.avatar.url(:original), width: 48, height: 48, alt: '', class: 'u-photo'
+ .detailed-status__display-avatar
+ - if current_account&.user&.setting_auto_play_gif || autoplay
+ = image_tag status.account.avatar_original_url, width: 48, height: 48, alt: '', class: 'account__avatar u-photo'
+ - else
+ = image_tag status.account.avatar_static_url, width: 48, height: 48, alt: '', class: 'account__avatar u-photo'
%span.display-name
- %strong.p-name.emojify= display_name(status.account, custom_emojify: true)
- %span= acct(status.account)
+ %bdi
+ %strong.display-name__html.p-name.emojify= display_name(status.account, custom_emojify: true, autoplay: autoplay)
+ %span.display-name__account
+ = acct(status.account)
+ = fa_icon('lock') if status.account.locked?
- - if !user_signed_in? || embedded_view?
- = link_to account_remote_follow_path(status.account), class: 'button button-secondary logo-button', target: '_new' do
- = render file: Rails.root.join('app', 'javascript', 'images', 'logo.svg')
- = t('accounts.follow')
+ = account_action_button(status.account)
.status__content.emojify<
- if status.spoiler_text?
%p{ style: 'margin-bottom: 0' }<
- %span.p-summary> #{Formatter.instance.format_spoiler(status)}
+ %span.p-summary> #{Formatter.instance.format_spoiler(status, autoplay: autoplay)}
%a.status__content__spoiler-link{ href: '#' }= t('statuses.show_more')
- .e-content{ lang: status.language, style: "display: #{status.spoiler_text? ? 'none' : 'block'}; direction: #{rtl_status?(status) ? 'rtl' : 'ltr'}" }= Formatter.instance.format(status, custom_emojify: true)
+ .e-content{ lang: status.language, style: "display: #{status.spoiler_text? ? 'none' : 'block'}; direction: #{rtl_status?(status) ? 'rtl' : 'ltr'}" }= Formatter.instance.format(status, custom_emojify: true, autoplay: autoplay)
- if !status.media_attachments.empty?
- if status.media_attachments.first.video?
- video = status.media_attachments.first
- = react_component :video, src: video.file.url(:original), preview: video.file.url(:small), sensitive: status.sensitive? && !current_account&.user&.setting_display_sensitive_media, width: 670, height: 380, detailed: true, inline: true
+ = react_component :video, src: video.file.url(:original), preview: video.file.url(:small), sensitive: status.sensitive? && !current_account&.user&.setting_display_sensitive_media, width: 670, height: 380, detailed: true, inline: true, alt: video.description
- else
- = react_component :media_gallery, height: 380, sensitive: status.sensitive? && !current_account&.user&.setting_display_sensitive_media, standalone: true, 'autoPlayGif': current_account&.user&.setting_auto_play_gif, 'reduceMotion': current_account&.user&.setting_reduce_motion, media: status.media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json }
+ = react_component :media_gallery, height: 380, sensitive: status.sensitive? && !current_account&.user&.setting_display_sensitive_media, standalone: true, 'autoPlayGif': current_account&.user&.setting_auto_play_gif || autoplay, 'reduceMotion': current_account&.user&.setting_reduce_motion, media: status.media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json }
- elsif status.preview_cards.first
= react_component :card, 'maxDescription': 160, card: ActiveModelSerializers::SerializableResource.new(status.preview_cards.first, serializer: REST::PreviewCardSerializer).as_json
.detailed-status__meta
%data.dt-published{ value: status.created_at.to_time.iso8601 }
+
= link_to TagManager.instance.url_for(status), class: 'detailed-status__datetime u-url u-uid', target: stream_link_target, rel: 'noopener' do
%time.formatted{ datetime: status.created_at.iso8601, title: l(status.created_at) }= l(status.created_at)
·
@@ -39,21 +42,28 @@
- else
= link_to status.application.name, status.application.website, class: 'detailed-status__application', target: '_blank', rel: 'noopener'
·
+ = link_to remote_interaction_path(status), class: 'modal-button detailed-status__link' do
+ = fa_icon('reply')
+ %span.detailed-status__reblogs>= number_to_human status.replies_count, strip_insignificant_zeros: true
+ = " "
+ ·
- if status.direct_visibility?
- %span<
+ %span.detailed-status__link<
= fa_icon('envelope')
- elsif status.private_visibility?
- %span<
+ %span.detailed-status__link<
= fa_icon('lock')
- else
- %span<
+ = link_to remote_interaction_path(status), class: 'modal-button detailed-status__link' do
= fa_icon('retweet')
- %span= status.reblogs_count
+ %span.detailed-status__reblogs>= number_to_human status.reblogs_count, strip_insignificant_zeros: true
+ = " "
·
- %span<
+ = link_to remote_interaction_path(status), class: 'modal-button detailed-status__link' do
= fa_icon('star')
- %span= status.favourites_count
+ %span.detailed-status__favorites>= number_to_human status.favourites_count, strip_insignificant_zeros: true
+ = " "
- if user_signed_in?
·
- = link_to t('statuses.open_in_web'), web_url("statuses/#{status.id}"), class: 'open-in-web-link', target: '_blank'
+ = link_to t('statuses.open_in_web'), web_url("statuses/#{status.id}"), class: 'detailed-status__application', target: '_blank'
diff --git a/app/views/stream_entries/_media.html.haml b/app/views/stream_entries/_media.html.haml
deleted file mode 100644
index 779f02c8d..000000000
--- a/app/views/stream_entries/_media.html.haml
+++ /dev/null
@@ -1,4 +0,0 @@
-.media-item
- = link_to media.remote_url.blank? ? media.file.url(:original) : media.remote_url, style: media.image? ? "background-image: url(#{media.file.url(:original)})" : '', target: '_blank', rel: 'noopener', class: "u-#{media.video? || media.gifv? ? 'video' : 'photo'}" do
- - unless media.image?
- %video{ src: media.file.url(:original), autoplay: true, loop: true }/
diff --git a/app/views/stream_entries/_more.html.haml b/app/views/stream_entries/_more.html.haml
deleted file mode 100644
index 9b1dfe4a7..000000000
--- a/app/views/stream_entries/_more.html.haml
+++ /dev/null
@@ -1,2 +0,0 @@
-= link_to url, class: 'more light' do
- = t('statuses.show_more')
diff --git a/app/views/stream_entries/_simple_status.html.haml b/app/views/stream_entries/_simple_status.html.haml
index 0f27585a1..fc2cacf30 100644
--- a/app/views/stream_entries/_simple_status.html.haml
+++ b/app/views/stream_entries/_simple_status.html.haml
@@ -1,28 +1,47 @@
-.status.light
- .status__header
- .status__meta
- = link_to TagManager.instance.url_for(status), class: 'status__relative-time u-url u-uid', target: stream_link_target, rel: 'noopener' do
- %time.time-ago{ datetime: status.created_at.iso8601, title: l(status.created_at) }= l(status.created_at)
- %data.dt-published{ value: status.created_at.to_time.iso8601 }
+.status
+ .status__info
+ = link_to TagManager.instance.url_for(status), class: 'status__relative-time u-url u-uid', target: stream_link_target, rel: 'noopener' do
+ %time.time-ago{ datetime: status.created_at.iso8601, title: l(status.created_at) }= l(status.created_at)
+ %data.dt-published{ value: status.created_at.to_time.iso8601 }
= link_to TagManager.instance.url_for(status.account), class: 'status__display-name p-author h-card', target: stream_link_target, rel: 'noopener' do
.status__avatar
%div
- = image_tag status.account.avatar(:original), width: 48, height: 48, alt: '', class: 'u-photo'
+ - if current_account&.user&.setting_auto_play_gif || autoplay
+ = image_tag status.account.avatar_original_url, width: 48, height: 48, alt: '', class: 'u-photo account__avatar'
+ - else
+ = image_tag status.account.avatar_static_url, width: 48, height: 48, alt: '', class: 'u-photo account__avatar'
%span.display-name
- %strong.p-name.emojify= display_name(status.account, custom_emojify: true)
- %span= acct(status.account)
-
+ %bdi
+ %strong.display-name__html.p-name.emojify= display_name(status.account, custom_emojify: true, autoplay: autoplay)
+ %span.display-name__account
+ = acct(status.account)
+ = fa_icon('lock') if status.account.locked?
.status__content.emojify<
- if status.spoiler_text?
%p{ style: 'margin-bottom: 0' }<
- %span.p-summary> #{Formatter.instance.format_spoiler(status)}
+ %span.p-summary> #{Formatter.instance.format_spoiler(status, autoplay: autoplay)}
%a.status__content__spoiler-link{ href: '#' }= t('statuses.show_more')
- .e-content{ lang: status.language, style: "display: #{status.spoiler_text? ? 'none' : 'block'}; direction: #{rtl_status?(status) ? 'rtl' : 'ltr'}" }= Formatter.instance.format(status, custom_emojify: true)
+ .e-content{ lang: status.language, style: "display: #{status.spoiler_text? ? 'none' : 'block'}; direction: #{rtl_status?(status) ? 'rtl' : 'ltr'}" }= Formatter.instance.format(status, custom_emojify: true, autoplay: autoplay)
- unless status.media_attachments.empty?
- if status.media_attachments.first.video?
- video = status.media_attachments.first
- = react_component :video, src: video.file.url(:original), preview: video.file.url(:small), sensitive: status.sensitive? && !current_account&.user&.setting_display_sensitive_media, width: 610, height: 343, inline: true
+ = react_component :video, src: video.file.url(:original), preview: video.file.url(:small), sensitive: status.sensitive? && !current_account&.user&.setting_display_sensitive_media, width: 610, height: 343, inline: true, alt: video.description
- else
- = react_component :media_gallery, height: 343, sensitive: status.sensitive? && !current_account&.user&.setting_display_sensitive_media, 'autoPlayGif': current_account&.user&.setting_auto_play_gif, media: status.media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json }
+ = react_component :media_gallery, height: 343, sensitive: status.sensitive? && !current_account&.user&.setting_display_sensitive_media, 'autoPlayGif': current_account&.user&.setting_auto_play_gif || autoplay, media: status.media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json }
+
+ .status__action-bar
+ .status__action-bar__counter
+ = link_to remote_interaction_path(status), class: 'status__action-bar-button icon-button modal-button', style: 'font-size: 18px; width: 23.1429px; height: 23.1429px; line-height: 23.15px;' do
+ = fa_icon 'reply fw'
+ .status__action-bar__counter__label= obscured_counter status.replies_count
+ = link_to remote_interaction_path(status), class: 'status__action-bar-button icon-button modal-button', style: 'font-size: 18px; width: 23.1429px; height: 23.1429px; line-height: 23.15px;' do
+ - if status.public_visibility? || status.unlisted_visibility?
+ = fa_icon 'retweet fw'
+ - elsif status.private_visibility?
+ = fa_icon 'lock fw'
+ - else
+ = fa_icon 'envelope fw'
+ = link_to remote_interaction_path(status), class: 'status__action-bar-button icon-button modal-button', style: 'font-size: 18px; width: 23.1429px; height: 23.1429px; line-height: 23.15px;' do
+ = fa_icon 'star fw'
diff --git a/app/views/stream_entries/_status.html.haml b/app/views/stream_entries/_status.html.haml
index b87ca2177..83887cd87 100644
--- a/app/views/stream_entries/_status.html.haml
+++ b/app/views/stream_entries/_status.html.haml
@@ -5,6 +5,7 @@
is_successor ||= false
direct_reply_id ||= false
parent_id ||= false
+ autoplay ||= current_account&.user&.setting_auto_play_gif
is_direct_parent = direct_reply_id == status.id
is_direct_child = parent_id == status.in_reply_to_id
centered ||= include_threads && !is_predecessor && !is_successor
@@ -16,39 +17,46 @@
- if status.reply? && include_threads
- if @next_ancestor
.entry{ class: entry_classes }
- = render 'stream_entries/more', url: TagManager.instance.url_for(@next_ancestor)
+ = link_to_more TagManager.instance.url_for(@next_ancestor)
- = render partial: 'stream_entries/status', collection: @ancestors, as: :status, locals: { is_predecessor: true, direct_reply_id: status.in_reply_to_id }
+ = render partial: 'stream_entries/status', collection: @ancestors, as: :status, locals: { is_predecessor: true, direct_reply_id: status.in_reply_to_id }, autoplay: autoplay
.entry{ class: entry_classes }
- if status.reblog?
- .pre-header
- .pre-header__icon
- = fa_icon('retweet fw')
+ .status__prepend
+ .status__prepend-icon-wrapper
+ %i.status__prepend-icon.fa.fa-fw.fa-retweet
%span
= link_to TagManager.instance.url_for(status.account), class: 'status__display-name muted' do
- %strong.emojify= display_name(status.account, custom_emojify: true)
+ %bdi
+ %strong.emojify= display_name(status.account, custom_emojify: true)
= t('stream_entries.reblogged')
- elsif pinned
- .pre-header
- .pre-header__icon
- = fa_icon('thumb-tack fw')
+ .status__prepend
+ .status__prepend-icon-wrapper
+ %i.status__prepend-icon.fa.fa-fw.fa-thumb-tack
%span
= t('stream_entries.pinned')
- = render (centered ? 'stream_entries/detailed_status' : 'stream_entries/simple_status'), status: status.proper
+ = render (centered ? 'stream_entries/detailed_status' : 'stream_entries/simple_status'), status: status.proper, autoplay: autoplay
- if include_threads
- if @since_descendant_thread_id
.entry{ class: entry_classes }
- = render 'stream_entries/more', url: short_account_status_url(status.account.username, status, max_descendant_thread_id: @since_descendant_thread_id + 1)
+ = link_to_more short_account_status_url(status.account.username, status, max_descendant_thread_id: @since_descendant_thread_id + 1)
- @descendant_threads.each do |thread|
- = render partial: 'stream_entries/status', collection: thread[:statuses], as: :status, locals: { is_successor: true, parent_id: status.id }
+ = render partial: 'stream_entries/status', collection: thread[:statuses], as: :status, locals: { is_successor: true, parent_id: status.id }, autoplay: autoplay
- if thread[:next_status]
.entry{ class: entry_classes }
- = render 'stream_entries/more', url: TagManager.instance.url_for(thread[:next_status])
+ = link_to_more TagManager.instance.url_for(thread[:next_status])
- if @next_descendant_thread
.entry{ class: entry_classes }
- = render 'stream_entries/more', url: short_account_status_url(status.account.username, status, since_descendant_thread_id: @max_descendant_thread_id - 1)
+ = link_to_more short_account_status_url(status.account.username, status, since_descendant_thread_id: @max_descendant_thread_id - 1)
+
+- if include_threads && !embedded_view? && !user_signed_in?
+ .entry{ class: entry_classes }
+ = link_to new_user_session_path, class: 'load-more load-gap' do
+ = fa_icon 'comments'
+ = t('statuses.sign_in_to_participate')
diff --git a/app/views/stream_entries/embed.html.haml b/app/views/stream_entries/embed.html.haml
index b703c15d2..4871c101e 100644
--- a/app/views/stream_entries/embed.html.haml
+++ b/app/views/stream_entries/embed.html.haml
@@ -1,3 +1,3 @@
- cache @stream_entry.activity do
- .activity-stream.activity-stream-headless
- = render "stream_entries/#{@type}", @type.to_sym => @stream_entry.activity, centered: true
+ .activity-stream.activity-stream--headless
+ = render "stream_entries/#{@type}", @type.to_sym => @stream_entry.activity, centered: true, autoplay: @autoplay
diff --git a/app/views/stream_entries/show.html.haml b/app/views/stream_entries/show.html.haml
index dfb83e747..2edc155bf 100644
--- a/app/views/stream_entries/show.html.haml
+++ b/app/views/stream_entries/show.html.haml
@@ -17,8 +17,9 @@
= render 'stream_entries/og_description', activity: @stream_entry.activity
= render 'stream_entries/og_image', activity: @stream_entry.activity, account: @account
-- if show_landing_strip?
- = render partial: 'shared/landing_strip', locals: { account: @stream_entry.account }
-
-.activity-stream.activity-stream-headless.h-entry
- = render partial: "stream_entries/#{@type}", locals: { @type.to_sym => @stream_entry.activity, include_threads: true }
+.grid
+ .column-0
+ .activity-stream.h-entry
+ = render partial: "stream_entries/#{@type}", locals: { @type.to_sym => @stream_entry.activity, include_threads: true }
+ .column-1
+ = render 'application/sidebar'
diff --git a/app/views/well_known/webfinger/show.xml.ruby b/app/views/well_known/webfinger/show.xml.ruby
index 4352a24e9..968c8c138 100644
--- a/app/views/well_known/webfinger/show.xml.ruby
+++ b/app/views/well_known/webfinger/show.xml.ruby
@@ -37,7 +37,7 @@ doc << Ox::Element.new('XRD').tap do |xrd|
xrd << Ox::Element.new('Link').tap do |link|
link['rel'] = 'http://ostatus.org/schema/1.0/subscribe'
- link['template'] = "#{authorize_follow_url}?acct={uri}"
+ link['template'] = "#{authorize_interaction_url}?acct={uri}"
end
end
diff --git a/app/workers/activitypub/delivery_worker.rb b/app/workers/activitypub/delivery_worker.rb
index 323a9f85b..adbb496d9 100644
--- a/app/workers/activitypub/delivery_worker.rb
+++ b/app/workers/activitypub/delivery_worker.rb
@@ -10,7 +10,8 @@ class ActivityPub::DeliveryWorker
HEADERS = { 'Content-Type' => 'application/activity+json' }.freeze
- def perform(json, source_account_id, inbox_url)
+ def perform(json, source_account_id, inbox_url, options = {})
+ @options = options.with_indifferent_access
@json = json
@source_account = Account.find(source_account_id)
@inbox_url = inbox_url
@@ -27,7 +28,7 @@ class ActivityPub::DeliveryWorker
def build_request
request = Request.new(:post, @inbox_url, body: @json)
- request.on_behalf_of(@source_account, :uri)
+ request.on_behalf_of(@source_account, :uri, sign_with: @options[:sign_with])
request.add_headers(HEADERS)
end
diff --git a/app/workers/activitypub/distribution_worker.rb b/app/workers/activitypub/distribution_worker.rb
index 14bb933c0..c2bfd4f2f 100644
--- a/app/workers/activitypub/distribution_worker.rb
+++ b/app/workers/activitypub/distribution_worker.rb
@@ -14,6 +14,8 @@ class ActivityPub::DistributionWorker
ActivityPub::DeliveryWorker.push_bulk(inboxes) do |inbox_url|
[signed_payload, @account.id, inbox_url]
end
+
+ relay! if relayable?
rescue ActiveRecord::RecordNotFound
true
end
@@ -24,6 +26,10 @@ class ActivityPub::DistributionWorker
@status.direct_visibility?
end
+ def relayable?
+ @status.public_visibility?
+ end
+
def inboxes
@inboxes ||= @account.followers.inboxes
end
@@ -39,4 +45,10 @@ class ActivityPub::DistributionWorker
adapter: ActivityPub::Adapter
).as_json
end
+
+ def relay!
+ ActivityPub::DeliveryWorker.push_bulk(Relay.enabled.pluck(:inbox_url)) do |inbox_url|
+ [signed_payload, @account.id, inbox_url]
+ end
+ end
end
diff --git a/app/workers/activitypub/update_distribution_worker.rb b/app/workers/activitypub/update_distribution_worker.rb
index f3377dcec..b9e5ff064 100644
--- a/app/workers/activitypub/update_distribution_worker.rb
+++ b/app/workers/activitypub/update_distribution_worker.rb
@@ -5,11 +5,16 @@ class ActivityPub::UpdateDistributionWorker
sidekiq_options queue: 'push'
- def perform(account_id)
+ def perform(account_id, options = {})
+ @options = options.with_indifferent_access
@account = Account.find(account_id)
ActivityPub::DeliveryWorker.push_bulk(inboxes) do |inbox_url|
- [payload, @account.id, inbox_url]
+ [signed_payload, @account.id, inbox_url]
+ end
+
+ ActivityPub::DeliveryWorker.push_bulk(Relay.enabled.pluck(:inbox_url)) do |inbox_url|
+ [signed_payload, @account.id, inbox_url]
end
rescue ActiveRecord::RecordNotFound
true
@@ -21,11 +26,15 @@ class ActivityPub::UpdateDistributionWorker
@inboxes ||= @account.followers.inboxes
end
+ def signed_payload
+ @signed_payload ||= Oj.dump(ActivityPub::LinkedDataSignature.new(payload).sign!(@account, sign_with: @options[:sign_with]))
+ end
+
def payload
@payload ||= ActiveModelSerializers::SerializableResource.new(
@account,
serializer: ActivityPub::UpdateSerializer,
adapter: ActivityPub::Adapter
- ).to_json
+ ).as_json
end
end
diff --git a/app/workers/maintenance/destroy_media_worker.rb b/app/workers/maintenance/destroy_media_worker.rb
index 5f052983b..cde33d6d7 100644
--- a/app/workers/maintenance/destroy_media_worker.rb
+++ b/app/workers/maintenance/destroy_media_worker.rb
@@ -6,7 +6,7 @@ class Maintenance::DestroyMediaWorker
sidekiq_options queue: 'pull'
def perform(media_attachment_id)
- media = MediaAttachment.find(media_attachment_id)
+ media = media_attachment_id.is_a?(MediaAttachment) ? media_attachment_id : MediaAttachment.find(media_attachment_id)
media.destroy
rescue ActiveRecord::RecordNotFound
true
diff --git a/app/workers/maintenance/redownload_account_media_worker.rb b/app/workers/maintenance/redownload_account_media_worker.rb
index fc26815f2..6afbe6e19 100644
--- a/app/workers/maintenance/redownload_account_media_worker.rb
+++ b/app/workers/maintenance/redownload_account_media_worker.rb
@@ -6,7 +6,7 @@ class Maintenance::RedownloadAccountMediaWorker
sidekiq_options queue: 'pull', retry: false
def perform(account_id)
- account = Account.find(account_id)
+ account = account_id.is_a?(Account) ? account_id : Account.find(account_id)
account.reset_avatar!
account.reset_header!
account.save
diff --git a/app/workers/maintenance/uncache_media_worker.rb b/app/workers/maintenance/uncache_media_worker.rb
index f6a51a1b8..4bc62ef75 100644
--- a/app/workers/maintenance/uncache_media_worker.rb
+++ b/app/workers/maintenance/uncache_media_worker.rb
@@ -6,9 +6,9 @@ class Maintenance::UncacheMediaWorker
sidekiq_options queue: 'pull'
def perform(media_attachment_id)
- media = MediaAttachment.find(media_attachment_id)
+ media = media_attachment_id.is_a?(MediaAttachment) ? media_attachment_id : MediaAttachment.find(media_attachment_id)
- return unless media.file.exists?
+ return if media.file.blank?
media.file.destroy
media.save
diff --git a/app/workers/refollow_worker.rb b/app/workers/refollow_worker.rb
index 66bcd27c3..12f2bf671 100644
--- a/app/workers/refollow_worker.rb
+++ b/app/workers/refollow_worker.rb
@@ -9,7 +9,7 @@ class RefollowWorker
target_account = Account.find(target_account_id)
return unless target_account.protocol == :activitypub
- target_account.followers.where(domain: nil).find_each do |follower|
+ target_account.followers.where(domain: nil).reorder(nil).find_each do |follower|
# Locally unfollow remote account
follower.unfollow!(target_account)
diff --git a/app/workers/scheduler/backup_cleanup_scheduler.rb b/app/workers/scheduler/backup_cleanup_scheduler.rb
index 5ab16c057..d43660699 100644
--- a/app/workers/scheduler/backup_cleanup_scheduler.rb
+++ b/app/workers/scheduler/backup_cleanup_scheduler.rb
@@ -3,8 +3,10 @@
class Scheduler::BackupCleanupScheduler
include Sidekiq::Worker
+ sidekiq_options unique: :until_executed, retry: 0
+
def perform
- old_backups.find_each(&:destroy!)
+ old_backups.reorder(nil).find_each(&:destroy!)
end
private
diff --git a/app/workers/scheduler/doorkeeper_cleanup_scheduler.rb b/app/workers/scheduler/doorkeeper_cleanup_scheduler.rb
index bab4ae886..e5e5f6bc4 100644
--- a/app/workers/scheduler/doorkeeper_cleanup_scheduler.rb
+++ b/app/workers/scheduler/doorkeeper_cleanup_scheduler.rb
@@ -3,6 +3,8 @@
class Scheduler::DoorkeeperCleanupScheduler
include Sidekiq::Worker
+ sidekiq_options unique: :until_executed, retry: 0
+
def perform
Doorkeeper::AccessToken.where('revoked_at IS NOT NULL').where('revoked_at < NOW()').delete_all
Doorkeeper::AccessGrant.where('revoked_at IS NOT NULL').where('revoked_at < NOW()').delete_all
diff --git a/app/workers/scheduler/email_scheduler.rb b/app/workers/scheduler/email_scheduler.rb
index 36866061b..24ec89b29 100644
--- a/app/workers/scheduler/email_scheduler.rb
+++ b/app/workers/scheduler/email_scheduler.rb
@@ -3,8 +3,10 @@
class Scheduler::EmailScheduler
include Sidekiq::Worker
+ sidekiq_options unique: :until_executed, retry: 0
+
def perform
- eligible_users.find_each do |user|
+ eligible_users.reorder(nil).find_each do |user|
next unless user.allows_digest_emails?
DigestMailerWorker.perform_async(user.id)
end
diff --git a/app/workers/scheduler/feed_cleanup_scheduler.rb b/app/workers/scheduler/feed_cleanup_scheduler.rb
index 42cf14128..cd2273418 100644
--- a/app/workers/scheduler/feed_cleanup_scheduler.rb
+++ b/app/workers/scheduler/feed_cleanup_scheduler.rb
@@ -3,6 +3,8 @@
class Scheduler::FeedCleanupScheduler
include Sidekiq::Worker
+ sidekiq_options unique: :until_executed, retry: 0
+
def perform
clean_home_feeds!
clean_list_feeds!
diff --git a/app/workers/scheduler/ip_cleanup_scheduler.rb b/app/workers/scheduler/ip_cleanup_scheduler.rb
index 613a5e336..42620332e 100644
--- a/app/workers/scheduler/ip_cleanup_scheduler.rb
+++ b/app/workers/scheduler/ip_cleanup_scheduler.rb
@@ -5,6 +5,8 @@ class Scheduler::IpCleanupScheduler
RETENTION_PERIOD = 1.year
+ sidekiq_options unique: :until_executed, retry: 0
+
def perform
time_ago = RETENTION_PERIOD.ago
SessionActivation.where('updated_at < ?', time_ago).destroy_all
diff --git a/app/workers/scheduler/media_cleanup_scheduler.rb b/app/workers/scheduler/media_cleanup_scheduler.rb
index c35686fcb..fb01aa70c 100644
--- a/app/workers/scheduler/media_cleanup_scheduler.rb
+++ b/app/workers/scheduler/media_cleanup_scheduler.rb
@@ -3,6 +3,8 @@
class Scheduler::MediaCleanupScheduler
include Sidekiq::Worker
+ sidekiq_options unique: :until_executed, retry: 0
+
def perform
unattached_media.find_each(&:destroy)
end
diff --git a/app/workers/scheduler/subscriptions_cleanup_scheduler.rb b/app/workers/scheduler/subscriptions_cleanup_scheduler.rb
index af2ae3120..5fba120f6 100644
--- a/app/workers/scheduler/subscriptions_cleanup_scheduler.rb
+++ b/app/workers/scheduler/subscriptions_cleanup_scheduler.rb
@@ -3,6 +3,8 @@
class Scheduler::SubscriptionsCleanupScheduler
include Sidekiq::Worker
+ sidekiq_options unique: :until_executed, retry: 0
+
def perform
Subscription.expired.in_batches.delete_all
end
diff --git a/app/workers/scheduler/subscriptions_scheduler.rb b/app/workers/scheduler/subscriptions_scheduler.rb
index dc16e85c2..d5873bccb 100644
--- a/app/workers/scheduler/subscriptions_scheduler.rb
+++ b/app/workers/scheduler/subscriptions_scheduler.rb
@@ -3,6 +3,8 @@
class Scheduler::SubscriptionsScheduler
include Sidekiq::Worker
+ sidekiq_options unique: :until_executed, retry: 0
+
def perform
Pubsubhubbub::SubscribeWorker.push_bulk(expiring_accounts.pluck(:id))
end
diff --git a/app/workers/scheduler/user_cleanup_scheduler.rb b/app/workers/scheduler/user_cleanup_scheduler.rb
index 245536cea..881b911be 100644
--- a/app/workers/scheduler/user_cleanup_scheduler.rb
+++ b/app/workers/scheduler/user_cleanup_scheduler.rb
@@ -3,8 +3,10 @@
class Scheduler::UserCleanupScheduler
include Sidekiq::Worker
+ sidekiq_options unique: :until_executed, retry: 0
+
def perform
- User.where('confirmed_at is NULL AND confirmation_sent_at <= ?', 2.days.ago).find_in_batches do |batch|
+ User.where('confirmed_at is NULL AND confirmation_sent_at <= ?', 2.days.ago).reorder(nil).find_in_batches do |batch|
Account.where(id: batch.map(&:account_id)).delete_all
User.where(id: batch.map(&:id)).delete_all
end
diff --git a/bin/tootctl b/bin/tootctl
new file mode 100755
index 000000000..2fe02523a
--- /dev/null
+++ b/bin/tootctl
@@ -0,0 +1,4 @@
+#!/usr/bin/env ruby
+APP_PATH = File.expand_path('../config/application', __dir__)
+require_relative '../lib/cli'
+Mastodon::CLI.start(ARGV)
diff --git a/config/application.rb b/config/application.rb
index b100d7fcc..24f75d3a2 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -38,9 +38,11 @@ module Mastodon
config.i18n.available_locales = [
:en,
:ar,
+ :ast,
:bg,
:ca,
:co,
+ :cy,
:da,
:de,
:el,
@@ -59,6 +61,7 @@ module Mastodon
:io,
:it,
:ja,
+ :ka,
:ko,
:nl,
:no,
@@ -66,12 +69,14 @@ module Mastodon
:pl,
:pt,
:'pt-BR',
+ :ro,
:ru,
:sk,
:sl,
:sr,
:'sr-Latn',
:sv,
+ :ta,
:te,
:th,
:tr,
@@ -82,6 +87,7 @@ module Mastodon
]
config.i18n.default_locale = ENV['DEFAULT_LOCALE']&.to_sym
+
unless config.i18n.available_locales.include?(config.i18n.default_locale)
config.i18n.default_locale = :en
end
diff --git a/config/brakeman.ignore b/config/brakeman.ignore
index e8956639c..e5a5c16b4 100644
--- a/config/brakeman.ignore
+++ b/config/brakeman.ignore
@@ -1,5 +1,25 @@
{
"ignored_warnings": [
+ {
+ "warning_type": "SQL Injection",
+ "warning_code": 0,
+ "fingerprint": "04dbbc249b989db2e0119bbb0f59c9818e12889d2b97c529cdc0b1526002ba4b",
+ "check_name": "SQL",
+ "message": "Possible SQL injection",
+ "file": "app/models/report.rb",
+ "line": 86,
+ "link": "https://brakemanscanner.org/docs/warning_types/sql_injection/",
+ "code": "Admin::ActionLog.from(\"(#{[Admin::ActionLog.where(:target_type => \"Report\", :target_id => id, :created_at => ((created_at..updated_at))).unscope(:order), Admin::ActionLog.where(:target_type => \"Account\", :target_id => target_account_id, :created_at => ((created_at..updated_at))).unscope(:order), Admin::ActionLog.where(:target_type => \"Status\", :target_id => status_ids, :created_at => ((created_at..updated_at))).unscope(:order)].map do\n \"(#{query.to_sql})\"\n end.join(\" UNION ALL \")}) AS admin_action_logs\")",
+ "render_path": null,
+ "location": {
+ "type": "method",
+ "class": "Report",
+ "method": "history"
+ },
+ "user_input": "Admin::ActionLog.where(:target_type => \"Status\", :target_id => status_ids, :created_at => ((created_at..updated_at))).unscope(:order)",
+ "confidence": "High",
+ "note": ""
+ },
{
"warning_type": "Cross-Site Scripting",
"warning_code": 4,
@@ -7,8 +27,8 @@
"check_name": "LinkToHref",
"message": "Potentially unsafe model attribute in link_to href",
"file": "app/views/admin/accounts/show.html.haml",
- "line": 147,
- "link": "http://brakemanscanner.org/docs/warning_types/link_to_href",
+ "line": 167,
+ "link": "https://brakemanscanner.org/docs/warning_types/link_to_href",
"code": "link_to(Account.find(params[:id]).inbox_url, Account.find(params[:id]).inbox_url)",
"render_path": [{"type":"controller","class":"Admin::AccountsController","method":"show","line":18,"file":"app/controllers/admin/accounts_controller.rb"}],
"location": {
@@ -26,8 +46,8 @@
"check_name": "LinkToHref",
"message": "Potentially unsafe model attribute in link_to href",
"file": "app/views/admin/accounts/show.html.haml",
- "line": 153,
- "link": "http://brakemanscanner.org/docs/warning_types/link_to_href",
+ "line": 173,
+ "link": "https://brakemanscanner.org/docs/warning_types/link_to_href",
"code": "link_to(Account.find(params[:id]).shared_inbox_url, Account.find(params[:id]).shared_inbox_url)",
"render_path": [{"type":"controller","class":"Admin::AccountsController","method":"show","line":18,"file":"app/controllers/admin/accounts_controller.rb"}],
"location": {
@@ -45,8 +65,8 @@
"check_name": "LinkToHref",
"message": "Potentially unsafe model attribute in link_to href",
"file": "app/views/admin/accounts/show.html.haml",
- "line": 57,
- "link": "http://brakemanscanner.org/docs/warning_types/link_to_href",
+ "line": 75,
+ "link": "https://brakemanscanner.org/docs/warning_types/link_to_href",
"code": "link_to(Account.find(params[:id]).url, Account.find(params[:id]).url)",
"render_path": [{"type":"controller","class":"Admin::AccountsController","method":"show","line":18,"file":"app/controllers/admin/accounts_controller.rb"}],
"location": {
@@ -58,22 +78,23 @@
"note": ""
},
{
- "warning_type": "Dynamic Render Path",
- "warning_code": 15,
- "fingerprint": "44d3f14e05d8fbb5b23e13ac02f15aa38b2a2f0f03b9ba76bab7f98e155a4a4e",
- "check_name": "Render",
- "message": "Render path contains parameter value",
- "file": "app/views/stream_entries/embed.html.haml",
- "line": 3,
- "link": "http://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
- "code": "render(action => \"stream_entries/#{Account.find_local!(params[:account_username]).statuses.find(params[:id]).stream_entry.activity_type.downcase}\", { Account.find_local!(params[:account_username]).statuses.find(params[:id]).stream_entry.activity_type.downcase.to_sym => Account.find_local!(params[:account_username]).statuses.find(params[:id]).stream_entry.activity, :centered => true })",
- "render_path": [{"type":"controller","class":"StatusesController","method":"embed","line":45,"file":"app/controllers/statuses_controller.rb"}],
+ "warning_type": "Mass Assignment",
+ "warning_code": 105,
+ "fingerprint": "28d81cc22580ef76e912b077b245f353499aa27b3826476667224c00227af2a9",
+ "check_name": "PermitAttributes",
+ "message": "Potentially dangerous key allowed for mass assignment",
+ "file": "app/controllers/admin/reports_controller.rb",
+ "line": 80,
+ "link": "https://brakemanscanner.org/docs/warning_types/mass_assignment/",
+ "code": "params.permit(:account_id, :resolved, :target_account_id)",
+ "render_path": null,
"location": {
- "type": "template",
- "template": "stream_entries/embed"
+ "type": "method",
+ "class": "Admin::ReportsController",
+ "method": "filter_params"
},
- "user_input": "params[:id]",
- "confidence": "Weak",
+ "user_input": ":account_id",
+ "confidence": "High",
"note": ""
},
{
@@ -83,8 +104,8 @@
"check_name": "Render",
"message": "Render path contains parameter value",
"file": "app/views/admin/action_logs/index.html.haml",
- "line": 5,
- "link": "http://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
+ "line": 4,
+ "link": "https://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
"code": "render(action => Admin::ActionLog.page(params[:page]), {})",
"render_path": [{"type":"controller","class":"Admin::ActionLogsController","method":"index","line":7,"file":"app/controllers/admin/action_logs_controller.rb"}],
"location": {
@@ -95,6 +116,26 @@
"confidence": "Weak",
"note": ""
},
+ {
+ "warning_type": "Redirect",
+ "warning_code": 18,
+ "fingerprint": "5fad11cd67f905fab9b1d5739d01384a1748ebe78c5af5ac31518201925265a7",
+ "check_name": "Redirect",
+ "message": "Possible unprotected redirect",
+ "file": "app/controllers/remote_interaction_controller.rb",
+ "line": 20,
+ "link": "https://brakemanscanner.org/docs/warning_types/redirect/",
+ "code": "redirect_to(RemoteFollow.new(resource_params).interact_address_for(Status.find(params[:id])))",
+ "render_path": null,
+ "location": {
+ "type": "method",
+ "class": "RemoteInteractionController",
+ "method": "create"
+ },
+ "user_input": "RemoteFollow.new(resource_params).interact_address_for(Status.find(params[:id]))",
+ "confidence": "High",
+ "note": ""
+ },
{
"warning_type": "Cross-Site Scripting",
"warning_code": 4,
@@ -102,8 +143,8 @@
"check_name": "LinkToHref",
"message": "Potentially unsafe model attribute in link_to href",
"file": "app/views/admin/accounts/show.html.haml",
- "line": 156,
- "link": "http://brakemanscanner.org/docs/warning_types/link_to_href",
+ "line": 176,
+ "link": "https://brakemanscanner.org/docs/warning_types/link_to_href",
"code": "link_to(Account.find(params[:id]).followers_url, Account.find(params[:id]).followers_url)",
"render_path": [{"type":"controller","class":"Admin::AccountsController","method":"show","line":18,"file":"app/controllers/admin/accounts_controller.rb"}],
"location": {
@@ -114,6 +155,25 @@
"confidence": "Weak",
"note": ""
},
+ {
+ "warning_type": "Dynamic Render Path",
+ "warning_code": 15,
+ "fingerprint": "67afc0d5f7775fa5bd91d1912e1b5505aeedef61876347546fa20f92fd6915e6",
+ "check_name": "Render",
+ "message": "Render path contains parameter value",
+ "file": "app/views/stream_entries/embed.html.haml",
+ "line": 3,
+ "link": "https://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
+ "code": "render(action => \"stream_entries/#{Account.find_local!(params[:account_username]).statuses.find(params[:id]).stream_entry.activity_type.downcase}\", { Account.find_local!(params[:account_username]).statuses.find(params[:id]).stream_entry.activity_type.downcase.to_sym => Account.find_local!(params[:account_username]).statuses.find(params[:id]).stream_entry.activity, :centered => true, :autoplay => ActiveModel::Type::Boolean.new.cast(params[:autoplay]) })",
+ "render_path": [{"type":"controller","class":"StatusesController","method":"embed","line":59,"file":"app/controllers/statuses_controller.rb"}],
+ "location": {
+ "type": "template",
+ "template": "stream_entries/embed"
+ },
+ "user_input": "params[:id]",
+ "confidence": "Weak",
+ "note": ""
+ },
{
"warning_type": "Cross-Site Scripting",
"warning_code": 4,
@@ -121,8 +181,8 @@
"check_name": "LinkToHref",
"message": "Potentially unsafe model attribute in link_to href",
"file": "app/views/admin/accounts/show.html.haml",
- "line": 130,
- "link": "http://brakemanscanner.org/docs/warning_types/link_to_href",
+ "line": 149,
+ "link": "https://brakemanscanner.org/docs/warning_types/link_to_href",
"code": "link_to(Account.find(params[:id]).salmon_url, Account.find(params[:id]).salmon_url)",
"render_path": [{"type":"controller","class":"Admin::AccountsController","method":"show","line":18,"file":"app/controllers/admin/accounts_controller.rb"}],
"location": {
@@ -141,7 +201,7 @@
"message": "Render path contains parameter value",
"file": "app/views/admin/custom_emojis/index.html.haml",
"line": 45,
- "link": "http://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
+ "link": "https://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
"code": "render(action => filtered_custom_emojis.eager_load(:local_counterpart).page(params[:page]), {})",
"render_path": [{"type":"controller","class":"Admin::CustomEmojisController","method":"index","line":11,"file":"app/controllers/admin/custom_emojis_controller.rb"}],
"location": {
@@ -160,7 +220,7 @@
"message": "Possible SQL injection",
"file": "lib/mastodon/snowflake.rb",
"line": 87,
- "link": "http://brakemanscanner.org/docs/warning_types/sql_injection/",
+ "link": "https://brakemanscanner.org/docs/warning_types/sql_injection/",
"code": "connection.execute(\" CREATE OR REPLACE FUNCTION timestamp_id(table_name text)\\n RETURNS bigint AS\\n $$\\n DECLARE\\n time_part bigint;\\n sequence_base bigint;\\n tail bigint;\\n BEGIN\\n time_part := (\\n -- Get the time in milliseconds\\n ((date_part('epoch', now()) * 1000))::bigint\\n -- And shift it over two bytes\\n << 16);\\n\\n sequence_base := (\\n 'x' ||\\n -- Take the first two bytes (four hex characters)\\n substr(\\n -- Of the MD5 hash of the data we documented\\n md5(table_name ||\\n '#{SecureRandom.hex(16)}' ||\\n time_part::text\\n ),\\n 1, 4\\n )\\n -- And turn it into a bigint\\n )::bit(16)::bigint;\\n\\n -- Finally, add our sequence number to our base, and chop\\n -- it to the last two bytes\\n tail := (\\n (sequence_base + nextval(table_name || '_id_seq'))\\n & 65535);\\n\\n -- Return the time part and the sequence part. OR appears\\n -- faster here than addition, but they're equivalent:\\n -- time_part has no trailing two bytes, and tail is only\\n -- the last two bytes.\\n RETURN time_part | tail;\\n END\\n $$ LANGUAGE plpgsql VOLATILE;\\n\")",
"render_path": null,
"location": {
@@ -180,7 +240,7 @@
"message": "Render path contains parameter value",
"file": "app/views/admin/accounts/index.html.haml",
"line": 67,
- "link": "http://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
+ "link": "https://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
"code": "render(action => filtered_accounts.page(params[:page]), {})",
"render_path": [{"type":"controller","class":"Admin::AccountsController","method":"index","line":12,"file":"app/controllers/admin/accounts_controller.rb"}],
"location": {
@@ -191,25 +251,6 @@
"confidence": "Weak",
"note": ""
},
- {
- "warning_type": "Cross-Site Request Forgery",
- "warning_code": 7,
- "fingerprint": "ab491f72606337a348482d006eb67a3b1616685fd48644d5ac909bbcd62a5000",
- "check_name": "ForgerySetting",
- "message": "'protect_from_forgery' should be called in WellKnown::HostMetaController",
- "file": "app/controllers/well_known/host_meta_controller.rb",
- "line": 4,
- "link": "http://brakemanscanner.org/docs/warning_types/cross-site_request_forgery/",
- "code": null,
- "render_path": null,
- "location": {
- "type": "controller",
- "controller": "WellKnown::HostMetaController"
- },
- "user_input": null,
- "confidence": "High",
- "note": ""
- },
{
"warning_type": "Redirect",
"warning_code": 18,
@@ -218,7 +259,7 @@
"message": "Possible unprotected redirect",
"file": "app/controllers/media_controller.rb",
"line": 10,
- "link": "http://brakemanscanner.org/docs/warning_types/redirect/",
+ "link": "https://brakemanscanner.org/docs/warning_types/redirect/",
"code": "redirect_to(MediaAttachment.attached.find_by!(:shortcode => ((params[:id] or params[:medium_id]))).file.url(:original))",
"render_path": null,
"location": {
@@ -237,8 +278,8 @@
"check_name": "LinkToHref",
"message": "Potentially unsafe model attribute in link_to href",
"file": "app/views/admin/accounts/show.html.haml",
- "line": 119,
- "link": "http://brakemanscanner.org/docs/warning_types/link_to_href",
+ "line": 138,
+ "link": "https://brakemanscanner.org/docs/warning_types/link_to_href",
"code": "link_to(Account.find(params[:id]).remote_url, Account.find(params[:id]).remote_url)",
"render_path": [{"type":"controller","class":"Admin::AccountsController","method":"show","line":18,"file":"app/controllers/admin/accounts_controller.rb"}],
"location": {
@@ -256,8 +297,8 @@
"check_name": "Redirect",
"message": "Possible unprotected redirect",
"file": "app/controllers/remote_follow_controller.rb",
- "line": 18,
- "link": "http://brakemanscanner.org/docs/warning_types/redirect/",
+ "line": 19,
+ "link": "https://brakemanscanner.org/docs/warning_types/redirect/",
"code": "redirect_to(RemoteFollow.new(resource_params).subscribe_address_for(Account.find_local!(params[:account_username])))",
"render_path": null,
"location": {
@@ -276,8 +317,8 @@
"check_name": "Render",
"message": "Render path contains parameter value",
"file": "app/views/admin/reports/index.html.haml",
- "line": 25,
- "link": "http://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
+ "line": 22,
+ "link": "https://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
"code": "render(action => filtered_reports.page(params[:page]), {})",
"render_path": [{"type":"controller","class":"Admin::ReportsController","method":"index","line":10,"file":"app/controllers/admin/reports_controller.rb"}],
"location": {
@@ -288,25 +329,6 @@
"confidence": "Weak",
"note": ""
},
- {
- "warning_type": "Cross-Site Request Forgery",
- "warning_code": 7,
- "fingerprint": "d4278f04e807ec58a23925f8ab31fad5e84692f2fb9f2f57e7931aff05d57cf8",
- "check_name": "ForgerySetting",
- "message": "'protect_from_forgery' should be called in WellKnown::WebfingerController",
- "file": "app/controllers/well_known/webfinger_controller.rb",
- "line": 4,
- "link": "http://brakemanscanner.org/docs/warning_types/cross-site_request_forgery/",
- "code": null,
- "render_path": null,
- "location": {
- "type": "controller",
- "controller": "WellKnown::WebfingerController"
- },
- "user_input": null,
- "confidence": "High",
- "note": ""
- },
{
"warning_type": "Cross-Site Scripting",
"warning_code": 4,
@@ -314,8 +336,8 @@
"check_name": "LinkToHref",
"message": "Potentially unsafe model attribute in link_to href",
"file": "app/views/admin/accounts/show.html.haml",
- "line": 150,
- "link": "http://brakemanscanner.org/docs/warning_types/link_to_href",
+ "line": 170,
+ "link": "https://brakemanscanner.org/docs/warning_types/link_to_href",
"code": "link_to(Account.find(params[:id]).outbox_url, Account.find(params[:id]).outbox_url)",
"render_path": [{"type":"controller","class":"Admin::AccountsController","method":"show","line":18,"file":"app/controllers/admin/accounts_controller.rb"}],
"location": {
@@ -326,6 +348,26 @@
"confidence": "Weak",
"note": ""
},
+ {
+ "warning_type": "Mass Assignment",
+ "warning_code": 105,
+ "fingerprint": "e867661b2c9812bc8b75a5df12b28e2a53ab97015de0638b4e732fe442561b28",
+ "check_name": "PermitAttributes",
+ "message": "Potentially dangerous key allowed for mass assignment",
+ "file": "app/controllers/api/v1/reports_controller.rb",
+ "line": 42,
+ "link": "https://brakemanscanner.org/docs/warning_types/mass_assignment/",
+ "code": "params.permit(:account_id, :comment, :forward, :status_ids => ([]))",
+ "render_path": null,
+ "location": {
+ "type": "method",
+ "class": "Api::V1::ReportsController",
+ "method": "report_params"
+ },
+ "user_input": ":account_id",
+ "confidence": "High",
+ "note": ""
+ },
{
"warning_type": "Dynamic Render Path",
"warning_code": 15,
@@ -333,10 +375,10 @@
"check_name": "Render",
"message": "Render path contains parameter value",
"file": "app/views/stream_entries/show.html.haml",
- "line": 24,
- "link": "http://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
+ "line": 23,
+ "link": "https://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
"code": "render(partial => \"stream_entries/#{Account.find_local!(params[:account_username]).statuses.find(params[:id]).stream_entry.activity_type.downcase}\", { :locals => ({ Account.find_local!(params[:account_username]).statuses.find(params[:id]).stream_entry.activity_type.downcase.to_sym => Account.find_local!(params[:account_username]).statuses.find(params[:id]).stream_entry.activity, :include_threads => true }) })",
- "render_path": [{"type":"controller","class":"StatusesController","method":"show","line":22,"file":"app/controllers/statuses_controller.rb"}],
+ "render_path": [{"type":"controller","class":"StatusesController","method":"show","line":30,"file":"app/controllers/statuses_controller.rb"}],
"location": {
"type": "template",
"template": "stream_entries/show"
@@ -346,6 +388,6 @@
"note": ""
}
],
- "updated": "2018-02-16 06:42:53 +0100",
- "brakeman_version": "4.0.1"
+ "updated": "2018-08-30 21:55:10 +0200",
+ "brakeman_version": "4.2.1"
}
diff --git a/config/initializers/0_post_deployment_migrations.rb b/config/initializers/0_post_deployment_migrations.rb
new file mode 100644
index 000000000..61121ccd7
--- /dev/null
+++ b/config/initializers/0_post_deployment_migrations.rb
@@ -0,0 +1,15 @@
+# Post deployment migrations are included by default. This file must be loaded
+# before other initializers as Rails may otherwise memoize a list of migrations
+# excluding the post deployment migrations.
+
+unless ENV['SKIP_POST_DEPLOYMENT_MIGRATIONS']
+ Rails.application.config.paths['db'].each do |db_path|
+ path = Rails.root.join(db_path, 'post_migrate').to_s
+
+ Rails.application.config.paths['db/migrate'] << path
+
+ # Rails memoizes migrations at certain points where it won't read the above
+ # path just yet. As such we must also update the following list of paths.
+ ActiveRecord::Migrator.migrations_paths << path
+ end
+end
diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb
index e0d263f16..cd9bacf68 100644
--- a/config/initializers/devise.rb
+++ b/config/initializers/devise.rb
@@ -9,6 +9,7 @@ Warden::Manager.after_set_user except: :fetch do |user, warden|
value: session_id,
expires: 1.year.from_now,
httponly: true,
+ secure: (Rails.env.production? || ENV['LOCAL_HTTPS'] == 'true'),
}
end
@@ -18,6 +19,7 @@ Warden::Manager.after_fetch do |user, warden|
value: warden.cookies.signed['_session_id'] || warden.raw_session['auth_id'],
expires: 1.year.from_now,
httponly: true,
+ secure: (Rails.env.production? || ENV['LOCAL_HTTPS'] == 'true'),
}
else
warden.logout
@@ -57,6 +59,8 @@ module Devise
@@ldap_password = nil
mattr_accessor :ldap_tls_no_verify
@@ldap_tls_no_verify = false
+ mattr_accessor :ldap_search_filter
+ @@ldap_search_filter = nil
class Strategies::PamAuthenticatable
def valid?
@@ -360,5 +364,6 @@ Devise.setup do |config|
config.ldap_password = ENV.fetch('LDAP_PASSWORD')
config.ldap_uid = ENV.fetch('LDAP_UID', 'cn')
config.ldap_tls_no_verify = ENV['LDAP_TLS_NO_VERIFY'] == 'true'
+ config.ldap_search_filter = ENV.fetch('LDAP_SEARCH_FILTER', '%{uid}=%{email}')
end
end
diff --git a/config/initializers/paperclip.rb b/config/initializers/paperclip.rb
index c134bc5b8..df0205879 100644
--- a/config/initializers/paperclip.rb
+++ b/config/initializers/paperclip.rb
@@ -47,10 +47,10 @@ if ENV['S3_ENABLED'] == 'true'
Paperclip::Attachment.default_options[:url] = ':s3_path_url'
end
- if ENV.has_key?('S3_CLOUDFRONT_HOST')
+ if ENV.has_key?('S3_ALIAS_HOST') || ENV.has_key?('S3_CLOUDFRONT_HOST')
Paperclip::Attachment.default_options.merge!(
url: ':s3_alias_url',
- s3_host_alias: ENV['S3_CLOUDFRONT_HOST']
+ s3_host_alias: ENV['S3_ALIAS_HOST'] || ENV['S3_CLOUDFRONT_HOST']
)
end
elsif ENV['SWIFT_ENABLED'] == 'true'
@@ -74,14 +74,10 @@ elsif ENV['SWIFT_ENABLED'] == 'true'
fog_public: true
)
else
- require 'fog/local'
-
Paperclip::Attachment.default_options.merge!(
- fog_credentials: {
- provider: 'Local',
- local_root: ENV.fetch('PAPERCLIP_ROOT_PATH') { Rails.root.join('public', 'system') },
- },
- fog_directory: '',
- fog_host: ENV.fetch('PAPERCLIP_ROOT_URL') { '/system' }
+ storage: :filesystem,
+ use_timestamp: true,
+ path: (ENV['PAPERCLIP_ROOT_PATH'] || ':rails_root/public/system') + '/:class/:attachment/:id_partition/:style/:filename',
+ url: (ENV['PAPERCLIP_ROOT_URL'] || '/system') + '/:class/:attachment/:id_partition/:style/:filename',
)
end
diff --git a/config/locales/activerecord.ast.yml b/config/locales/activerecord.ast.yml
new file mode 100644
index 000000000..0b77eecf2
--- /dev/null
+++ b/config/locales/activerecord.ast.yml
@@ -0,0 +1,2 @@
+---
+ast:
diff --git a/config/locales/activerecord.cs.yml b/config/locales/activerecord.cs.yml
index 006d3e600..838dee15f 100644
--- a/config/locales/activerecord.cs.yml
+++ b/config/locales/activerecord.cs.yml
@@ -10,4 +10,4 @@ cs:
status:
attributes:
reblog:
- taken: stavu již existuje
+ taken: příspěvku již existuje
diff --git a/config/locales/activerecord.cy.yml b/config/locales/activerecord.cy.yml
new file mode 100644
index 000000000..f1dabe347
--- /dev/null
+++ b/config/locales/activerecord.cy.yml
@@ -0,0 +1,3 @@
+---
+cy:
+ activerecord: {}
diff --git a/config/locales/activerecord.ka.yml b/config/locales/activerecord.ka.yml
new file mode 100644
index 000000000..cdd4f9c4c
--- /dev/null
+++ b/config/locales/activerecord.ka.yml
@@ -0,0 +1,13 @@
+---
+ka:
+ activerecord:
+ errors:
+ models:
+ account:
+ attributes:
+ username:
+ invalid: მხოლოდ ასოები, ციფრები და "ქვედა-ტირე"
+ status:
+ attributes:
+ reblog:
+ taken: სტატუსის უკვე არსებობს
diff --git a/config/locales/activerecord.ru.yml b/config/locales/activerecord.ru.yml
index 1a7ac9978..2a2d62a7e 100644
--- a/config/locales/activerecord.ru.yml
+++ b/config/locales/activerecord.ru.yml
@@ -6,7 +6,7 @@ ru:
account:
attributes:
username:
- invalid: только буквы, цифры и символ подеркивания
+ invalid: только буквы, цифры и символ подчёркивания
status:
attributes:
reblog:
diff --git a/config/locales/ar.yml b/config/locales/ar.yml
index c1d7cca58..eee2bb0b9 100644
--- a/config/locales/ar.yml
+++ b/config/locales/ar.yml
@@ -1,25 +1,25 @@
---
ar:
about:
- about_hashtag_html: هذه هي الرسائل العامة مع الكلمات الدلالية
1#%{hashtag}. يمكنك التفاعل معهم إذا كان لديك حساب في أي مكان على الإنترنت المتحد.
- about_mastodon_html: ماستدون شبكة إجتماعية
حرة و مفتوحة المصدر. هو بديل
لامركزي لمنصات تجارية ، يمكنك من تجنب احتكار شركة واحدة للإتصالات الخاصة بك. يمكنك اختيار أي خادم تثق فيه. أيهما تختار، يمكنك التفاعل مع أي شخص آخر على الشبكة. يمكن لأي شخص تنصيب و تشغيل خادم ماستدون خاص به والمشاركة في
الشبكات الاجتماعية بكل شفافية.
+ about_hashtag_html: هذه تبويقات متاحة للجمهور تحتوي على الكلمات الدلالية
#%{hashtag}. يمكنك التفاعل معها إن كان لديك حساب في أي مكان على الفديفرس.
+ about_mastodon_html: ماستدون شبكة إجتماعية مبنية على أسُس بروتوكولات برمجيات الويب الحرة و مفتوحة المصدر. و هو لامركزي تمامًا كالبريد الإلكتروني.
about_this: عن مثيل الخادوم هذا
- administered_by: 'يديره :'
- closed_registrations: التسجيلات في مثيل الخادوم هذا مُغلقة حاليًا.
+ administered_by: 'يُديره :'
+ api: واجهة برمجة التطبيقات
+ apps: تطبيقات الأجهزة المحمولة
+ closed_registrations: التسجيلات في مثيل الخادوم هذا مُغلقة حاليًا. غير أنه بامكانك العثور على خادم آخر لإنشاء حسابك و مِن ثم النفاذ إلى نفس الشبكة مِن هناك.
contact: للتواصل معنا
- contact_missing: غير محدد
+ contact_missing: لم يتم تعيينه
contact_unavailable: غير متوفر
- description_headline: ما هو %{domain}?
- domain_count_after: خوادم أخرى
- domain_count_before: متصل بـ
+ documentation: الدليل
extended_description_html: |
مكان جيد للقواعد
-
لا يوجد تفصيل طويل حتى الآن.
+
لم يتم بعد إدخال الوصف الطويل.
features:
humane_approach_body: تعلُّمًا مِن فشل الشبكات الأخرى، غاية ماستدون هي بلوغ الخيارات الأخلاقية في التصميم لمُحارَبة إسائة إستعمال شبكات التواصل الإجتماعية.
- humane_approach_title: أسلوب يعيد الإعتبار للإنسان
+ humane_approach_title: أسلوب يُعيد الإعتبار للفَرد
not_a_product_body: ماستدون ليس شبكة تجارية. لا يحتوي على إعلانات و لا يقوم باستغلال البيانات و لا هو بِبُستان مُسيَّج. لا تحكم فيه وليس له أية هيئةٍ مركزيةٍ.
- not_a_product_title: إنك إنسان و لست سلعة
+ not_a_product_title: إنك فرد و لست سلعة
real_conversation_body: يُمكنكم التعبير عن آرائكم بكل حرية بفضل 500 حرف و انتقاء دقيق للمحتوى و الوسائط بفضل أدوات التحذير التي هي بين أيديكم.
real_conversation_title: مبني لتحقيق تواصل حقيقي
within_reach_body: إبقوا على اتصال دائم بأصدقائكم حيثما كانوا عبر عدة تطبيقات لنظام آي أواس و أندرويد و عدة منصات أخرى بفضل واجهة برمجية للتطبيقات و بيئة صديقة للتطوير.
@@ -28,25 +28,31 @@ ar:
hosted_on: ماستدون مُستضاف على %{domain}
learn_more: تعلم المزيد
other_instances: خوادم أخرى
+ privacy_policy: سياسة الخصوصية
source_code: الشفرة المصدرية
- status_count_after: منشورا
+ status_count_after: منشورات
status_count_before: نشروا
- user_count_after: مستخدم
+ terms: شروط الخدمة
+ user_count_after: مستخدِمين
user_count_before: يستضيف
what_is_mastodon: ما هو ماستدون ؟
accounts:
+ choices_html: 'توصيات %{name} :'
follow: إتبع
followers: متابِعون
following: يتابعون
+ joined: انضم·ت في %{date}
media: الوسائط
moved_html: "%{name} إنتقلَ إلى %{new_profile_link} :"
network_hidden: إنّ المعطيات غير متوفرة
nothing_here: لا يوجد أي شيء هنا !
people_followed_by: الأشخاص الذين يتبعهم %{name}
people_who_follow: الأشخاص الذين يتبعون %{name}
- posts: منشورات
+ pin_errors:
+ following: يجب أن تكون مِن متابعي حساب الشخص الذي تريد إبرازه
+ posts: تبويقات
+ posts_tab_heading: تبويقات
posts_with_replies: التبويقات و الردود
- remote_follow: إتبع عن بعد
reserved_username: إسم المستخدم محجوز
roles:
admin: المدير
@@ -180,6 +186,7 @@ ar:
unsuspend_account: لقد قام %{name} بإلغاء التعليق المفروض على حساب %{target}
update_custom_emoji: "%{name} قام بتحديث الإيموجي %{target}"
update_status: لقد قام %{name} بتحديث منشور %{target}
+ deleted_status: "(منشور محذوف)"
title: سِجلّ التفتيش و المعاينة
custom_emojis:
by_domain: النطاق
@@ -206,6 +213,27 @@ ar:
update_failed_msg: تعذرت عملية تحذيث ذاك الإيموجي
updated_msg: تم تحديث الإيموجي بنجاح !
upload: رفع
+ dashboard:
+ backlog: الأعمال المتراكمة
+ config: الإعداد
+ feature_deletions: الحسابات المحذوفة
+ feature_invites: روابط الدعوات
+ feature_registrations: التسجيلات
+ feature_relay: المُرحّل الفديرالي
+ features: الميّزات
+ hidden_service: الفيديرالية مع الخدمات الخفية
+ open_reports: فتح التقريرات
+ recent_users: أحدث المستخدِمين
+ search: البحث النصي الكامل
+ single_user_mode: وضع المستخدِم الأوحد
+ software: البرنامج
+ space: المساحة المستخدَمة
+ title: لوح المراقبة
+ total_users: إجمالي المستخدِمين
+ trends: المؤشرات
+ week_interactions: تفاعُلات هذا الأسبوع
+ week_users_active: نشط هذا الأسبوع
+ week_users_new: مستخدِمين هذا الأسبوع
domain_blocks:
add_new: إضافة نطاق جديد
created_msg: إنّ حجب النطاق حيز التشغيل
@@ -228,9 +256,7 @@ ar:
suspend: تعليق
severity: الشدة
show:
- affected_accounts:
- one: هناك حساب واحد متأثر في قاعدة البيانات
- other: هناك %{count} حسابات في قاعدة البيانات متأثرة بذلك
+ affected_accounts: هناك %{count} حسابات في قاعدة البيانات متأثرة بذلك
retroactive:
silence: إلغاء الكتم عن كافة الحسابات المتواجدة على هذا النطاق
suspend: إلغاء التعليق المفروض على كافة حسابات هذا النطاق
@@ -255,12 +281,22 @@ ar:
search: البحث
title: مثيلات الخوادم المعروفة
invites:
+ deactivate_all: تعطيلها كافة
filter:
all: الكل
available: المتوفرة
expired: المنتهي صلاحيتها
title: التصفية
title: الدعوات
+ relays:
+ add_new: إضافة مُرحّل جديد
+ enable_hint: عندما تقوم بتنشيط هذه الميزة، سوف يشترك خادومك في جميع التبويقات القادمة مِن هذا المُرحِّل و سيشرع كذلك بإرسال كافة التبويقات العمومية إليه.
+ inbox_url: رابط المُرحّل
+ pending: في انتظار تسريح المُرحِّل
+ save_and_enable: حفظ وتشغيل
+ setup: إعداد اتصال بمُرحّل
+ status: الحالة
+ title: المُرحّلات
report_notes:
created_msg: |-
41/5000
@@ -312,12 +348,17 @@ ar:
contact_information:
email: البريد الإلكتروني المهني
username: الإتصال بالمستخدِم
+ custom_css:
+ desc_html: يقوم بتغيير المظهر بواسطة سي أس أس يُحمَّل على كافة الصفحات
+ title: سي أس أس مخصص
hero:
desc_html: معروض على الصفحة الأولى. لا يقل عن 600 × 100 بكسل. عند عدم التعيين ، تعود الصورة إلى النسخة المصغرة على سبيل المثال
title: الصورة الرأسية
peers_api_enabled:
desc_html: أسماء النطاقات التي إلتقى بها مثيل الخادوم على البيئة الموحَّدة فيديفرس
title: نشر عدد مثيلات الخوادم التي تم مصادفتها
+ preview_sensitive_media:
+ title: إظهار الصور الحساسة في مُعاينات أوبن غراف
registrations:
closed_message:
desc_html: يتم عرضه على الصفحة الرئيسية عندما يتم غلق تسجيل الحسابات الجديدة. يمكنكم إستخدام علامات الأيتش تي أم أل HTML
@@ -338,11 +379,14 @@ ar:
desc_html: عرض شارة الموظفين على صفحة المستخدم
title: إظهار شارة الموظفين
site_description:
- desc_html: فقرة تمهيدية على الصفحة الأولى وفي العلامات الوصفية. يمكنك استخدام علامات HTML ، ولا سيما
<a>
و
<em>
.
+ desc_html: فقرة تمهيدية على الصفحة الأولى. صف ميزات خادوم ماستدون هذا و ما يميّزه عن الآخرين. يمكنك استخدام علامات HTML ، ولا سيما
<a>
و
<em>
.
title: وصف مثيل الخادوم
site_description_extended:
desc_html: مكان جيد لمدونة قواعد السلوك والقواعد والإرشادات وغيرها من الأمور التي تحدد حالتك. يمكنك استخدام علامات HTML
title: الوصف المُفصّل للموقع
+ site_short_description:
+ desc_html: يتم عرضه في لوحة جانبية و في البيانات الوصفية. قم بوصف ماستدون و ما يميز هذا السيرفر عن الآخرين في فقرة موجزة. إن تركت الحقل فارغا فسوف يتم عرض الوصف الإفتراضي لمثيل الخادوم.
+ title: مقدمة وصفية قصيرة عن مثيل الخادوم
site_terms:
desc_html: يمكنك كتابة سياسة الخصوصية الخاصة بك ، شروط الخدمة أو غيرها من القوانين. يمكنك استخدام علامات HTML
title: شروط الخدمة المخصصة
@@ -364,6 +408,7 @@ ar:
media:
title: الوسائط
no_media: لا يوجد وسائط
+ no_status_selected: لم يطرأ أي تغيير على أي منشور بما أنه لم يتم اختيار أي واحد
title: منشورات الحساب
with_media: بالوسائط
subscriptions:
@@ -373,6 +418,11 @@ ar:
last_delivery: آخر إيداع
title: WebSub
topic: الموضوع
+ suspensions:
+ bad_acct_msg: قيمة التأكيد غير متطابقة. متأكد مِن أنك بصدد تعليق الحساب الصحيح؟
+ hint_html: 'لتأكيد إجراء تعليق الحساب، يُرجى إدخال %{value} في الحقل التالي:'
+ proceed: مواصلة
+ title: تعليق الحساب %{acct}
title: الإدارة
admin_mailer:
new_report:
@@ -492,17 +542,18 @@ ar:
followers_count: عدد المتابِعين
lock_link: قم بتجميد حسابك
purge: تنحية من بين متابعيك
- success:
- one: جارية عملية حظر المتابِعين بسلاسة من نطاق آخر ...
- other: جارية عملية حظر المتابِعين بسلاسة من %{count} نطاقات أخرى ...
+ success: جارية عملية حظر المتابِعين بسلاسة من %{count} نطاقات أخرى ...
+ true_privacy_html: تذكر دائمًا أنّ
الخصوصية التامة لا يمكن بلوغها إلّا بالتعمية و التشفير من طرف إلى آخَر.
+ unlocked_warning_html: يمكن لأي كان متابعة حسابك و الإطلاع مباشرة على تبويقاتك. إستخدِم %{lock_link} لمُعاينة أو رفض طلبات المتابِعين الجُدُد.
unlocked_warning_title: إنّ حسابك غير مقفل
+ footer:
+ developers: المطورون
+ more: المزيد …
+ resources: الموارد
generic:
changes_saved_msg: تم حفظ التعديلات بنجاح !
- powered_by: مدعوم بـ %{link}
save_changes: حفظ التغييرات
- validation_errors:
- one: لا يزال هناك خلل ما إلى حد الآن. يُرجى إعادة النظر في الخطأ أسفله
- other: هناك شيء ليس على ما يرام ! رجاءًا تحقق من الأخطاء الـ %{count} أسفله
+ validation_errors: هناك شيء ليس على ما يرام ! رجاءًا تحقق من الأخطاء الـ %{count} أسفله
imports:
preface: You can import certain data like all the people you are following or blocking into your account on this instance, from files created by an export on another instance.
success: تم تحميل بياناتك بنجاح وسيتم معالجتها في الوقت المناسب
@@ -511,6 +562,7 @@ ar:
following: قائمة المستخدمين المتبوعين
muting: قائمة الكتم
upload: تحميل
+ in_memoriam_html: في ذكرى.
invites:
delete: تعطيل
expired: إنتهت صلاحيتها
@@ -524,17 +576,13 @@ ar:
expires_in_prompt: أبدا
generate: توليد
invited_by: 'تمت دعوتك من طرف :'
- max_uses:
- one: إستعمال واحد
- other: "%{count} استخدامات"
+ max_uses: "%{count} استخدامات"
max_uses_prompt: بلا حدود
prompt: توليد و مشاركة روابط للسماح للآخَرين بالنفاذ إلى مثيل الخادوم هذا
table:
expires_at: تنتهي مدة صلاحيتها في
uses: يستخدِم
title: دعوة أشخاص
- landing_strip_html: "
%{name} هو أحد مُستخدِمي %{link_to_root_path}. بإمكانك متابعته أو التواصل معه إن كنت تملك حسابًا أيا كان على البيئة الموحَّدة فيديفرس."
- landing_strip_signup_html: إن كنت لا تملك واحدا، يمكنك
التسجيل مِن هنا.
lists:
errors:
limit: لقد بلغت الحد الأقصى للقوائم
@@ -554,12 +602,8 @@ ar:
action: معاينة كافة الإشعارات
body: هذا هو مُلَخَّص الرسائل التي فاتتك وذلك منذ آخر زيارة لك في %{since}
mention: "%{name} أشار إليك في :"
- new_followers_summary:
- one: و لقد حصلت على متابع جديد أثناء فترة غيابك ! مرحى !
- other: و لقد تحصلت على %{count} متتبعين جدد أثناء فترة غيابك ! رائع !
- subject:
- one: "إشعار واحد منذ زيارتك الأخيرة \U0001F418"
- other: "%{count} إشعارات جديدة منذ زيارتك الأخيرة \U0001F418"
+ new_followers_summary: و لقد تحصلت على %{count} متتبعين جدد أثناء فترة غيابك ! رائع !
+ subject: "%{count} إشعارات جديدة منذ زيارتك الأخيرة \U0001F418"
title: أثناء فترة غيابك …
favourite:
body: 'أُعجب %{name} بمنشورك :'
@@ -606,11 +650,14 @@ ar:
publishing: النشر
web: الويب
remote_follow:
- acct: قم بإدخال عنوان حسابك username@domain الذي من خلاله تود المتابعة
+ acct: قم بإدخال عنوان حسابك username@domain الذي من خلاله تود النشاط
missing_resource: تعذر العثور على رابط التحويل المطلوب الخاص بحسابك
no_account_html: أليس عندك حساب بعدُ ؟ يُمْكنك
التسجيل مِن هنا
proceed: أكمل المتابعة
prompt: 'إنك بصدد متابعة :'
+ remote_interaction:
+ proceed: إبدأ التفاعل
+ prompt: 'تريد التفاعُل مع هذا التبويق:'
remote_unfollow:
error: خطأ
title: العنوان
@@ -674,25 +721,21 @@ ar:
statuses:
attached:
description: 'مُرفَق : %{attached}'
- image:
- one: "%{count} صورة"
- other: "%{count} صور"
- video:
- one: "%{count} فيديو"
- other: "%{count} فيديوهات"
+ image: "%{count} صور"
+ video: "%{count} فيديوهات"
+ boosted_from_html: تم إعادة ترقيته مِن %{acct_link}
content_warning: 'تحذير عن المحتوى : %{warning}'
- disallowed_hashtags:
- one: 'يحتوي على وسم ممنوع : %{tags}'
- other: 'يحتوي على وسوم ممنوعة : %{tags}'
+ disallowed_hashtags: 'يحتوي على وسوم ممنوعة : %{tags}'
language_detection: اكتشاف اللغة تلقائيا
open_in_web: إفتح في الويب
over_character_limit: تم تجاوز حد الـ %{max} حرف المسموح بها
pin_errors:
limit: لقد بلغت الحد الأقصى للتبويقات المدبسة
ownership: لا يمكن تدبيس تبويق نشره شخص آخر
- private: لا يمكن تثبيت تبويق لم يُنشر للعامة
+ private: لا يمكن تدبيس تبويق لم يُنشر للعامة
reblog: لا يمكن تثبيت ترقية
show_more: أظهر المزيد
+ sign_in_to_participate: قم بتسجيل الدخول للمشاركة في هذه المحادثة
title: '%{name} : "%{quote}"'
visibilities:
private: إعرض فقط لمتتبعيك
@@ -702,7 +745,6 @@ ar:
unlisted: غير مُدرَج
unlisted_long: يُمكن لأيٍ كان رُؤيتَه و لكن لن يُعرَض على الخيوط العامة
stream_entries:
- click_to_show: إضغط للعرض
pinned: تبويق مثبّت
reblogged: رقى
sensitive_content: محتوى حساس
@@ -715,6 +757,7 @@ ar:
time:
formats:
default: "%b %d, %Y, %H:%M"
+ month: "%b %Y"
two_factor_authentication:
code_hint: قم بإدخال الرمز المُوَلّد عبر تطبيق المصادقة للتأكيد
description_html: في حال تفعيل
المصادقة بخطوتين ، فتسجيل الدخول يتطلب منك أن يكون بحوزتك هاتفك النقال قصد توليد الرمز الذي سيتم إدخاله.
@@ -724,6 +767,7 @@ ar:
enabled_success: تم تفعيل المصادقة بخطوتين بنجاح
generate_recovery_codes: توليد رموز الإسترجاع
instructions_html: "
قم بمسح رمز الكيو آر عبر Google Authenticator أو أي تطبيق TOTP على جهازك. من الآن فصاعدا سوف يقوم ذاك التطبيق بتوليد رموز يجب عليك إدخالها عند تسجيل الدخول."
+ lost_recovery_codes: تُمكّنك رموز الإسترجاع الإحتاطية مِن استرجاع النفاذ إلى حسابك في حالة فقدان جهازك المحمول. إن ضاعت منك هذه الرموز فبإمكانك إعادة توليدها مِن هنا و إبطال الرموز القديمة.
manual_instructions: 'في حالة تعذّر مسح رمز الكيو آر أو طُلب منك إدخال يدوي، يُمْكِنك إدخال هذا النص السري على التطبيق :'
recovery_codes: النسخ الإحتياطي لرموز الإسترجاع
recovery_codes_regenerated: تم إعادة توليد رموز الإسترجاع الإحتياطية بنجاح
@@ -731,16 +775,25 @@ ar:
wrong_code: الرمز الذي أدخلته غير صالح ! تحقق من صحة الوقت على الخادم و الجهاز ؟
user_mailer:
backup_ready:
- explanation: ''
+ explanation: لقد قمت بطلب نسخة كاملة لحسابك على ماستدون. إنها متوفرة الآن للتنزيل !
subject: نسخة بيانات حسابك جاهزة للتنزيل
title: المغادرة بأرشيف الحساب
welcome:
edit_profile_action: تهيئة الملف الشخصي
+ edit_profile_step: يُمكنك·كي تخصيص ملفك الشخصي عن طريق تحميل صورة رمزية ورأسية و بتعديل إسمك·كي العلني وأكثر. و إن أردت·تي معاينة المتابِعين و المتابعات الجُدد قبيل السماح لهم·ن بمتابَعتك فيمكنك·كي تأمين حسابك·كي.
explanation: ها هي بعض النصائح قبل بداية الإستخدام
final_action: اشرَع في النشر
+ final_step: |-
+ يمكنك الشروع في النشر في الحين ! حتى و إن لم كنت لا تمتلك متابِعين بعدُ، يمكن للآخرين الإطلاع على منشوراتك الموجهة للجمهور على الخيط المحلي أو إن قمت باستخدام وسوم.
+ إبدأ بتقديم نفسك باستعمال وسم #introductions.
full_handle: عنوانك الكامل
+ full_handle_hint: هذا هو ما يجب تقديمه لأصدقائك قصد أن يكون بإمكانهم متابَعتك أو مُراسَلتك حتى و إن كانت حساباتهم على خوادم أخرى.
review_preferences_action: تعديل التفضيلات
subject: أهلًا بك على ماستدون
+ tip_bridge_html: إن كنت قادما مِن تويتر، باستطاعتك العثور على أصدقائك على ماستدون باستخدام
تطبيق الجسر بشرط أن يكون أصدقاؤك قد سجلوا حساباتهم على الجسر مِن قبل، و إلّا فلن تنجح العملية !
+ tip_federated_timeline: الخيط الزمني الفديرالي هو بمثابة شبه نظرة شاملة على شبكة ماستدون. غير أنه لا يشمل إلا على الأشخاص المتابَعين مِن طرف جيرانك و جاراتك، لذا فهذا الخيط لا يعكس كافة الشبكة برُمّتها.
+ tip_following: أنت تتبع تلقائيا مديري و مديرات الخادم. للعثور على أشخاص مميزين أو قد تهمك حساباتهم بإمكانك الإطلاع على الخيوط المحلية و كذا الفدرالية.
+ tip_local_timeline: الخيط الزمني المحلي هو بمثابة نظرة سريعة على الأشخاص المتواجدين على %{instance} يمكن اعتبارهم كجيرانك وجاراتك الأقرب إليك!
tips: نصائح
title: أهلاً بك، %{name} !
users:
diff --git a/config/locales/ast.yml b/config/locales/ast.yml
new file mode 100644
index 000000000..9cc80ef16
--- /dev/null
+++ b/config/locales/ast.yml
@@ -0,0 +1,282 @@
+---
+ast:
+ about:
+ about_mastodon_html: Mastodon ye una rede social basada en protocolos abiertos y software de códigu llibre. Ye descentralizada, como'l corréu electrónicu.
+ about_this: Tocante a
+ administered_by: 'Alministráu por:'
+ contact: Contautu
+ contact_unavailable: N/D
+ extended_description_html: |
+
Un llugar bonu pa les regles
+
Entá nun se configuró la descripción estendida.
+ features:
+ humane_approach_title: Una visión más humana
+ not_a_product_body: Mastodon nun ye una rede comercial, nun hai anuncios, nun recueye datos o nun pon muries a xardinos. Nin siquier tien una autoridá central.
+ not_a_product_title: Yes una persona, non un productu
+ real_conversation_title: Fechu pa conversaciones de verdá
+ within_reach_title: Siempres al algame
+ hosted_on: Mastodon ta agospiáu en %{domain}
+ learn_more: Deprendi más
+ source_code: Códigu fonte
+ status_count_after: estaos
+ user_count_after: usuarios
+ what_is_mastodon: "¿Qué ye Mastodon?"
+ accounts:
+ followers: Siguidores
+ moved_html: "%{name} mudóse a %{new_profile_link}:"
+ network_hidden: Esta información nun ta disponible
+ nothing_here: "¡Equí nun hai nada!"
+ people_followed_by: Persones a les que sigue %{name}
+ people_who_follow: Persones que siguen a %{name}
+ reserved_username: El nome d'usuariu ta acutáu
+ roles:
+ bot: Robó
+ admin:
+ accounts:
+ are_you_sure: "¿De xuru?"
+ avatar: Avatar
+ by_domain: Dominiu
+ domain: Dominiu
+ email: Corréu
+ followers: Siguidores
+ ip: IP
+ location:
+ local: Llocal
+ title: Allugamientu
+ protocol: Protocolu
+ resend_confirmation:
+ already_confirmed: Esti usuariu yá ta confirmáu
+ role: Permisos
+ roles:
+ admin: Alministrador
+ moderator: Llendador
+ user: Usuariu
+ title: Cuentes
+ username: Nome d'usuariu
+ web: Web
+ action_logs:
+ actions:
+ create_domain_block: "%{name} bloquió'l dominiu %{target}"
+ disable_user: "%{name} desactivó l'aniciu de sesión del usuariu %{target}"
+ custom_emojis:
+ by_domain: Dominiu
+ copy_failed_msg: Nun pudo facese una copia llocal d'esi fustaxe
+ emoji: Fustaxe
+ update_failed_msg: Nun pudo anovase esi fustaxe
+ dashboard:
+ config: Configuración
+ feature_registrations: Rexistros
+ features: Carauterístiques
+ hidden_service: Federación con servicios anubríos
+ recent_users: Usuarios recientes
+ software: Software
+ total_users: usuarios en total
+ week_interactions: interaiciones d'esta selmana
+ week_users_new: usuarios d'esta selmana
+ domain_blocks:
+ domain: Dominiu
+ email_domain_blocks:
+ domain: Dominiu
+ instances:
+ account_count: Cuentes conocíes
+ domain_name: Dominiu
+ title: Instancies conocíes
+ invites:
+ filter:
+ available: Disponible
+ expired: Caducó
+ title: Invitaciones
+ reports:
+ are_you_sure: "¿De xuru?"
+ id: ID
+ status: Estáu
+ settings:
+ registrations:
+ min_invite_role:
+ disabled: Naide
+ site_description:
+ title: Descipción de la instancia
+ site_title: Nome de la instancia
+ title: Axustes del sitiu
+ statuses:
+ failed_to_execute: Fallu al executar
+ subscriptions:
+ title: WebSub
+ title: Alministración
+ admin_mailer:
+ new_report:
+ body_remote: Daquién dende %{domain} informó de %{target}
+ application_mailer:
+ salutation: "%{name},"
+ applications:
+ invalid_url: La URL apurrida nun ye válida
+ warning: Ten curiáu con estos datos, ¡enxamás nun los compartas con naide!
+ auth:
+ change_password: Contraseña
+ delete_account_html: Si deseyes desaniciar la to cuenta, pues
siguir equí. Va pidísete la confirmación.
+ forgot_password: "¿Escaeciesti la contraseña?"
+ providers:
+ cas: CAS
+ saml: SAML
+ security: Seguranza
+ authorize_follow:
+ already_following: Yá tas siguiendo a esta cuenta
+ error: Desafortunadamente, hebo un fallu guetando la cuenta remota
+ follow_request: 'Unviesti una solicitú de siguimientu a:'
+ post_follow:
+ close: O pues zarrar esta ventana.
+ return: Amosar el perfil del usuariu
+ web: Dir a la web
+ datetime:
+ distance_in_words:
+ half_a_minute: Púramente agora
+ less_than_x_seconds: Púramente agora
+ deletes:
+ bad_password_msg: "¡Bon intentu, crackers! Contraseña incorreuta"
+ confirm_password: Introduz la contraseña pa verificar la to identidá
+ errors:
+ '403': Nun tienes permisu pa ver esta páxina.
+ '404': La páxina que tabes guetando nun esiste.
+ '410': La páxina que tabes guetando yá nun esiste.
+ '422':
+ content: Falló la verificación de seguranza. ¿Tas bloquiando les cookies?
+ title: Falló la verificación de seguranza
+ '429': Ficiéronse milenta solicitúes
+ exports:
+ archive_takeout:
+ date: Data
+ hint_html: Pues solicitar un archivu colos tos
toots y ficheros xubíos. Los datos esportaos van tar nel formatu ActivityPub, llexible pa cualesquier software que seya compatible. Pues solicitar un archivu cada 7 díes.
+ size: Tamañu
+ csv: CSV
+ filters:
+ contexts:
+ public: Llinies temporales públiques
+ thread: Conversaciones
+ followers:
+ domain: Dominiu
+ followers_count: Númberu de siguidores
+ invites:
+ expires_in:
+ '1800': 30 minutos
+ '21600': 6 hores
+ '3600': 1 hora
+ '43200': 12 hores
+ '604800': 1 selmana
+ '86400': 1 día
+ expires_in_prompt: Enxamás
+ invited_by: 'Convidóte:'
+ max_uses:
+ one: 1 usu
+ other: "%{count} usos"
+ table:
+ uses: Usos
+ lists:
+ errors:
+ limit: Algamesti la cantidá máxima de llistes
+ media_attachments:
+ validations:
+ images_and_video: Nun pue axuntase un videu a un estáu que yá contién imáxenes
+ too_many: Nun puen axuntase más de 4 ficheros
+ migrations:
+ acct: nome_usuariu@dominiu de la cuenta nueva
+ notification_mailer:
+ digest:
+ mention: "%{name} mentóte en:"
+ subject:
+ other: "%{count} avisos nuevos dende la última visita \U0001F418"
+ follow:
+ body: "¡Agora %{name} ta siguiéndote!"
+ title: Siguidor nuevu
+ follow_request:
+ body: "%{name} solicitó siguite"
+ title: Petición nueva de siguimientu
+ mention:
+ body: "%{name} mentóte en:"
+ subject: "%{name} mentóte"
+ title: Mención nueva
+ number:
+ human:
+ decimal_units:
+ format: "%n%u"
+ pagination:
+ next: Siguiente
+ preferences:
+ languages: Llingües
+ web: Web
+ remote_follow:
+ no_account_html: "¿Nun tienes una cuenta? Pues
rexistrate equí"
+ prompt: 'Vas siguir a:'
+ remote_unfollow:
+ error: Fallu
+ sessions:
+ browser: Restolador
+ browsers:
+ alipay: Alipay
+ blackberry: Blackberry
+ chrome: Chrome
+ edge: Microsoft Edge
+ electron: Electron
+ firefox: Firefox
+ generic: Restolador desconocíu
+ ie: Internet Explorer
+ micro_messenger: MicroMessenger
+ opera: Opera
+ otter: Otter
+ phantom_js: PhantomJS
+ qq: QQ Browser
+ safari: Safari
+ uc_browser: UCBrowser
+ weibo: Weibo
+ current_session: Sesión actual
+ description: "%{browser} en %{platform}"
+ ip: IP
+ platforms:
+ adobe_air: Adobe Air
+ android: Android
+ blackberry: Blackberry
+ chrome_os: ChromeOS
+ firefox_os: Firefox OS
+ ios: iOS
+ linux: Linux
+ mac: Mac
+ other: plataforma desconocida
+ windows: Windows
+ windows_mobile: Windows Mobile
+ windows_phone: Windows Phone
+ title: Sesiones
+ settings:
+ authorized_apps: Aplicaciones autorizaes
+ back: Volver a Mastodon
+ edit_profile: Edición del perfil
+ notifications: Avisos
+ preferences: Preferencies
+ settings: Axustes
+ statuses:
+ attached:
+ image:
+ one: "%{count} imaxe"
+ other: "%{count} imáxenes"
+ video:
+ one: "%{count} videu"
+ other: "%{count} vídeos"
+ pin_errors:
+ limit: Yá fixesti'l númberu máxiumu de toots
+ show_more: Amosar más
+ title: "%{name}: «%{quote}»"
+ stream_entries:
+ sensitive_content: Conteníu sensible
+ themes:
+ default: Mastodon
+ two_factor_authentication:
+ code_hint: Introduz el códigu xeneráu pola aplicación autenticadora pa confirmar
+ enabled: L'autenticación en dos pasos ta activada
+ enabled_success: L'autenticación en dos pasos activóse con ésitu
+ manual_instructions: 'Si nun pues escaniar el códigu QR y precises introducilu a mano, equí ta''l secretu en testu planu:'
+ user_mailer:
+ welcome:
+ full_handle_hint: Esto ye lo que-yos diríes a los collacios pa que puean unviate mensaxes o siguite dende otra instancia.
+ subject: Afáyate en Mastodon
+ tips: Conseyos
+ users:
+ invalid_email: La direición de corréu nun ye válida
+ seamless_external_login: Aniciesti sesión pente un serviciu esternu, polo que los axustes de la contraseña y corréu nun tán disponibles.
diff --git a/config/locales/bg.yml b/config/locales/bg.yml
index cb3ed2244..8c11ac7b7 100644
--- a/config/locales/bg.yml
+++ b/config/locales/bg.yml
@@ -5,9 +5,6 @@ bg:
about_this: За тази инстанция
closed_registrations: В момента регистрациите за тази инстанция са затворени.
contact: За контакти
- description_headline: Какво е %{domain}?
- domain_count_after: други инстанции
- domain_count_before: Свързани към
other_instances: Други инстанции
source_code: Програмен код
status_count_after: публикации
@@ -22,7 +19,6 @@ bg:
people_followed_by: Хора, които %{name} следва
people_who_follow: Хора, които следват %{name}
posts: Публикации
- remote_follow: Последвай
unfollow: Не следвай
application_mailer:
settings: 'Промяна на предпочитанията за e-mail: %{link}'
@@ -64,7 +60,6 @@ bg:
storage: Съхранение на мултимедия
generic:
changes_saved_msg: Успешно запазване на промените!
- powered_by: поддържано от %{link}
save_changes: Запази промените
validation_errors:
one: Нещо все още не е наред! Моля, прегледай грешката по-долу
@@ -76,8 +71,6 @@ bg:
blocking: Списък на блокираните
following: Списък на последователите
upload: Качване
- landing_strip_html: "
%{name} е потребител от %{link_to_root_path}. Можеш да ги следваш, или да контактуваш с тях, ако имаш акаунт където и да е из федерираната вселена на Mastodon."
- landing_strip_signup_html: Ако нямаш акаунт, можеш да си
създадеш ето тук.
media_attachments:
validations:
images_and_video: Не мога да прикача видеоклип към публикация, която вече съдържа изображения
@@ -144,7 +137,6 @@ bg:
public: Публично
unlisted: Публично, но не показвай в публичния канал
stream_entries:
- click_to_show: Покажи
reblogged: споделено
sensitive_content: Деликатно съдържание
time:
diff --git a/config/locales/ca.yml b/config/locales/ca.yml
index 45430f541..73cb608c6 100644
--- a/config/locales/ca.yml
+++ b/config/locales/ca.yml
@@ -5,13 +5,13 @@ ca:
about_mastodon_html: Mastodon és una xarxa social basada en protocols web oberts i en programari lliure i de codi obert. Està descentralitzat com el correu electrònic.
about_this: Quant a
administered_by: 'Administrat per:'
+ api: API
+ apps: Apps mòbil
closed_registrations: Actualment, el registre està tancat en aquesta instància. Malgrat això! Pots trobar una altra instància per fer-te un compte i obtenir accés a la mateixa xarxa des d'allà.
contact: Contacte
contact_missing: No configurat
contact_unavailable: N/D
- description_headline: Què es %{domain}?
- domain_count_after: altres instàncies
- domain_count_before: Connectada a
+ documentation: Documentació
extended_description_html: |
Un bon lloc per les regles
Encara no s'ha configurat la descripció ampliada.
@@ -28,25 +28,39 @@ ca:
hosted_on: Mastodon allotjat a %{domain}
learn_more: Més informació
other_instances: Altres instàncies
+ privacy_policy: Política de privacitat
source_code: Codi font
- status_count_after: estats
+ status_count_after:
+ one: estat
+ other: estats
status_count_before: Que han escrit
- user_count_after: usuaris registrats
+ terms: Termes del servei
+ user_count_after:
+ one: usuari
+ other: usuaris
user_count_before: Tenim
what_is_mastodon: Què és Mastodon?
accounts:
+ choices_html: 'Eleccions de %{name}:'
follow: Segueix
- followers: Seguidors
+ followers:
+ one: Seguidor
+ other: Seguidors
following: Seguint
+ joined: Unit des de %{date}
media: Mèdia
moved_html: "%{name} s'ha mogut a %{new_profile_link}:"
network_hidden: Aquesta informació no està disponible
nothing_here: No hi ha res aquí!
people_followed_by: Usuaris seguits per %{name}
people_who_follow: Usuaris que segueixen %{name}
- posts: Toots
+ pin_errors:
+ following: Has d'estar seguint la persona que vulguis avalar
+ posts:
+ one: Toot
+ other: Toots
+ posts_tab_heading: Toots
posts_with_replies: Toots i respostes
- remote_follow: Seguiment remot
reserved_username: El nom d'usuari està reservat
roles:
admin: Administrador
@@ -180,6 +194,7 @@ ca:
unsuspend_account: "%{name} ha llevat la suspensió del compte de %{target}"
update_custom_emoji: "%{name} ha actualitzat l'emoji %{target}"
update_status: "%{name} estat actualitzat per %{target}"
+ deleted_status: "(toot suprimit)"
title: Registre d'auditoria
custom_emojis:
by_domain: Domini
@@ -206,6 +221,27 @@ ca:
update_failed_msg: No s'ha pogut actualitzar aquest emoji
updated_msg: Emoji s'ha actualitzat correctament!
upload: Carrega
+ dashboard:
+ backlog: treballs en espera
+ config: Configuració
+ feature_deletions: Supressions del compte
+ feature_invites: Enllaços de convits
+ feature_registrations: Registres
+ feature_relay: Relay de la Federació
+ features: Característiques
+ hidden_service: Federació amb serveis ocults
+ open_reports: informes oberts
+ recent_users: Usuaris recents
+ search: Cerca de text complet
+ single_user_mode: Mode d'usuari únic
+ software: Programari
+ space: Ús d’espai
+ title: Panell
+ total_users: usuaris en total
+ trends: Tendències
+ week_interactions: interaccions d'aquesta setmana
+ week_users_active: actiu aquesta setmana
+ week_users_new: usuaris aquesta setmana
domain_blocks:
add_new: Afegeix
created_msg: El bloqueig de domini ara s'està processant
@@ -255,12 +291,23 @@ ca:
search: Cerca
title: Instàncies conegudes
invites:
+ deactivate_all: Desactiva-ho tot
filter:
all: Totes
available: Disponible
expired: Caducat
title: Filtre
title: Convida
+ relays:
+ add_new: Afegiu un nou relay
+ description_html: Un
relay de federació és un servidor intermediari que intercanvia grans volums de toots públics entre servidors que es subscriuen i publiquen en ell.
Pot ajudar a servidors petits i mitjans a descobrir contingut del fedivers, no fent necessari que els usuaris locals manualment segueixin altres persones de servidors remots.
+ enable_hint: Una vegada habilitat, el teu servidor es subscriurà a tots els toots públics d'aquest relay i començarà a enviar-hi tots els toots públics d'aquest servidor.
+ inbox_url: URL del Relay
+ pending: S'està esperant l'aprovació del relay
+ save_and_enable: Desa i activa
+ setup: Configura una connexió de relay
+ status: Estat
+ title: Relays
report_notes:
created_msg: La nota del informe s'ha creat correctament!
destroyed_msg: La nota del informe s'ha esborrat correctament!
@@ -310,12 +357,18 @@ ca:
contact_information:
email: Introdueix una adreça de correu electrònic píblica
username: Nom d'usuari del contacte
+ custom_css:
+ desc_html: Modifica l'aspecte amb CSS carregat a cada pàgina
+ title: CSS personalitzat
hero:
desc_html: Es mostra en pàgina frontal. Recomanat 600x100px al menys. Si no es configura es mostrarà el de la instància
title: Imatge d’heroi
peers_api_enabled:
desc_html: Els noms de domini que ha trobat aquesta instància al fediverse
title: Publica la llista d'instàncies descobertes
+ preview_sensitive_media:
+ desc_html: Les visualitzacions prèvies d'enllaços d'altres llocs web mostraran una miniatura encara que els mitjans de comunicació estiguin marcats com a sensibles
+ title: Mostra els mitjans sensibles a les previsualitzacions d'OpenGraph
registrations:
closed_message:
desc_html: Apareix en la primera pàgina quan es tanquen els registres. Pots utilitzar etiquetes HTML
@@ -341,6 +394,9 @@ ca:
site_description_extended:
desc_html: Un bon lloc per al codi de conducta, regles, directrius i altres coses que distingeixen la vostra instància. Pots utilitzar etiquetes HTML
title: Descripció ampliada del lloc
+ site_short_description:
+ desc_html: Es mostra a la barra lateral i a metaetiquetes. Descriu en un únic paràgraf què és Mastodon i què fa que aquest servidor sigui especial. Si està buit, s'estableix per defecte la descripció de la instància.
+ title: Descripció curta de l’instància
site_terms:
desc_html: Pots escriure la teva pròpia política de privadesa, els termes del servei o d'altres normes legals. Pots utilitzar etiquetes HTML
title: Termes del servei personalitzats
@@ -362,6 +418,7 @@ ca:
media:
title: Contingut multimèdia
no_media: Sense contingut multimèdia
+ no_status_selected: No s’han canviat els estatus perquè cap no ha estat seleccionat
title: Estats del compte
with_media: Amb contingut multimèdia
subscriptions:
@@ -371,6 +428,12 @@ ca:
last_delivery: Últim lliurament
title: WebSub
topic: Tema
+ suspensions:
+ bad_acct_msg: El valor de confirmació no s'ha trobat. Estàs suspenen el compte correcte?
+ hint_html: 'Per confirmar la suspensió del compte, introdueix %{value} al camp següent:'
+ proceed: Procedeix
+ title: Suspèn %{acct}
+ warning_html: 'Suspenen aquest compte esborrarà
irreversiblement les dades del compte, incloent:'
title: Administració
admin_mailer:
new_report:
@@ -502,9 +565,12 @@ ca:
true_privacy_html: Considera que
la autèntica privacitat només es pot aconseguir amb xifratge d'extrem a extrem.
unlocked_warning_html: Tothom pot seguir-te per a veure inmediatament les teves publicacions privades. %{lock_link} per poder revisar i rebutjar seguidors.
unlocked_warning_title: El teu compte no està blocat
+ footer:
+ developers: Desenvolupadors
+ more: Més…
+ resources: Recursos
generic:
changes_saved_msg: Els canvis s'han desat correctament!
- powered_by: amb tecnologia %{link}
save_changes: Desa els canvis
validation_errors:
one: Alguna cosa no va bé! Si us plau, revisa l'error
@@ -540,8 +606,6 @@ ca:
expires_at: Caduca
uses: Usos
title: Convida persones
- landing_strip_html: "
%{name} és un usuari/a de %{link_to_root_path}. Pots seguir-lo/la o interactuar amb ell/a si tens un compte a qualsevol node del fediverse."
- landing_strip_signup_html: Si no en tens, pots
registrar-te aquí.
lists:
errors:
limit: Has assolit la quantitat màxima de llistes
@@ -618,6 +682,9 @@ ca:
no_account_html: No tens cap compte? Pots
registrar-te aquí
proceed: Comença a seguir
prompt: 'Seguiràs a:'
+ remote_interaction:
+ proceed: Procedeix a interactuar
+ prompt: 'Vols interactuar amb aquest toot:'
remote_unfollow:
error: Error
title: Títol
@@ -701,6 +768,7 @@ ca:
private: No es pot fixar el toot no públic
reblog: No es pot fixar un impuls
show_more: Mostrar més
+ sign_in_to_participate: Inicia la sessió per participar a la conversa
title: '%{name}: "%{quote}"'
visibilities:
private: Només seguidors
@@ -710,7 +778,6 @@ ca:
unlisted: No llistat
unlisted_long: Tothom ho pot veure, però no es mostra en la història federada
stream_entries:
- click_to_show: Clic per mostrar
pinned: Toot fixat
reblogged: ha impulsat
sensitive_content: Contingut sensible
@@ -804,6 +871,7 @@ ca:
time:
formats:
default: "%b %d, %Y, %H:%M"
+ month: "%b %Y"
two_factor_authentication:
code_hint: Introdueix el codi generat per l'aplicació autenticadora per a confirmar
description_html: Si habilites l'
autenticació de dos factors, et caldrà tenir el teu telèfon, que generarà tokens per a que puguis iniciar sessió.
diff --git a/config/locales/co.yml b/config/locales/co.yml
index 6608f05a9..f21471ff7 100644
--- a/config/locales/co.yml
+++ b/config/locales/co.yml
@@ -5,13 +5,13 @@ co:
about_mastodon_html: Mastodon ghjè una rete suciale custruita incù prutucolli web aperti è lugiziali liberi. Hè decentralizatu cumu l’e-mail.
about_this: À prupositu
administered_by: 'Amministratu da:'
+ api: API
+ apps: Applicazione per u telefuninu
closed_registrations: Pè avà, l’arregistramenti sò chjosi nant’à st’istanza. Mà pudete truvà un’altr’istanza per fà un contu è avè accessu à listessa reta da quallà.
contact: Cuntattu
contact_missing: Mancante
contact_unavailable: Micca dispunibule
- description_headline: Quale hè %{domain} ?
- domain_count_after: altre istanze
- domain_count_before: Cunnettati à
+ documentation: Ducumentazione
extended_description_html: |
Una bona piazza per e regule
A descrizzione stesa ùn hè micca stata riempiuta.
@@ -28,25 +28,39 @@ co:
hosted_on: Mastodon allughjatu nant’à %{domain}
learn_more: Amparà di più
other_instances: Lista di l’istanze
+ privacy_policy: Pulitica di vita privata
source_code: Codice di fonte
- status_count_after: statuti
+ status_count_after:
+ one: statutu
+ other: statuti
status_count_before: chì anu pubblicatu
- user_count_after: parsone quì
+ terms: Cundizione di u serviziu
+ user_count_after:
+ one: utilizatore
+ other: utilizatori
user_count_before: Ci sò
what_is_mastodon: Quale hè Mastodon?
accounts:
+ choices_html: "%{name} ricumanda:"
follow: Siguità
- followers: Abbunati
+ followers:
+ one: Abbunatu·a
+ other: Abbunati
following: Abbunamenti
+ joined: Quì dapoi %{date}
media: Media
moved_html: "%{name} hà cambiatu di contu, avà hè nant’à %{new_profile_link}:"
network_hidden: St'infurmazione ùn hè micca dispunibule
nothing_here: Ùn c’hè nunda quì!
people_followed_by: Seguitati da %{name}
people_who_follow: Seguitanu %{name}
- posts: Statuti
+ pin_errors:
+ following: Duvete digià siguità a persona che vulete ricumandà
+ posts:
+ one: Statutu
+ other: Statuti
+ posts_tab_heading: Statuti
posts_with_replies: Statuti è risposte
- remote_follow: Siguità d’altrò
reserved_username: Stu cugnome hè riservatu
roles:
admin: Amministratore
@@ -180,6 +194,7 @@ co:
unsuspend_account: "%{name} hà fattu che u contu di %{target} ùn hè più suspesu"
update_custom_emoji: "%{name} hà messu à ghjornu l’emoji %{target}"
update_status: "%{name} hà cambiatu u statutu di %{target}"
+ deleted_status: "(statutu sguassatu)"
title: Ghjurnale d’audit
custom_emojis:
by_domain: Duminiu
@@ -206,6 +221,27 @@ co:
update_failed_msg: Ùn s’hè micca pussutu mette à ghjornu l’emoji
updated_msg: L’emoji hè stata messa à ghjornu!
upload: Caricà
+ dashboard:
+ backlog: travagli in attesa
+ config: Cunfigurazione
+ feature_deletions: Sguassamenti di conti
+ feature_invites: Ligami d'invitazione
+ feature_registrations: Arregistramenti
+ feature_relay: Ripetitore di federazione
+ features: Funziunalità
+ hidden_service: Federazione cù servizii piattati
+ open_reports: signalamenti aperti
+ recent_users: Utilizatori ricenti
+ search: Ricerca di testu sanu
+ single_user_mode: Modu utilizatore unicu
+ software: Lugiziale
+ space: Usu di u spaziu
+ title: Dashboard
+ total_users: utilizatori in tutale
+ trends: Tindenze
+ week_interactions: interazzione sta settimana
+ week_users_active: attivi sta settimana
+ week_users_new: utilizatori sta settimana
domain_blocks:
add_new: Aghjustà
created_msg: U blucchime di u duminiu hè attivu
@@ -255,12 +291,23 @@ co:
search: Cercà
title: Istanze cunnisciute
invites:
+ deactivate_all: Disattivà tuttu
filter:
all: Tuttu
available: Dispunibuli
expired: Spirati
title: Filtrà
title: Invitazione
+ relays:
+ add_new: Aghjustà un ripetitore
+ description_html: Un
ripetitore di federazione ghjè un servore intermediariu chì manda statuti pubblichi trà l'istanze abbunate.
Pò aiutà l'istanze chjuche è mezane à scuprì u cuntinutu di u fediverse senza chì l'utilizatori appianu bisognu di seguità tutti i conti di l'altri servori.
+ enable_hint: Quandu sarà attivatu, u vostru servore hà da seguità i statuti pubblichi di u ripetitore, è mandarà i so statuti pubblichi quallà.
+ inbox_url: URL di u ripetitore
+ pending: In attesa di l'apprubazione di u ripetitore
+ save_and_enable: Salvà è attivà
+ setup: Creà una cunnessione cù un ripetitore
+ status: Statutu
+ title: Ripetitori
report_notes:
created_msg: Nota di signalamentu creata!
destroyed_msg: Nota di signalamentu sguassata!
@@ -310,18 +357,24 @@ co:
contact_information:
email: E-mail prufissiunale
username: Identificatore di cuntattu
+ custom_css:
+ desc_html: Mudificà l'apparenza cù CSS caricatu nant'à ogni pagina
+ title: CSS persunalizatu
hero:
desc_html: Affissatu nant’a pagina d’accolta. Ricumandemu almenu 600x100px. S’ellu ùn hè micca definiti, a vignetta di l’istanza sarà usata
title: Ritrattu di cuprendula
peers_api_enabled:
desc_html: Indirizzi st’istanza hà vistu indè u fediverse
title: Pubblicà a lista d’istanza cunnisciute
+ preview_sensitive_media:
+ desc_html: E priviste di i ligami nant'à l'altri siti mustreranu una vignetta ancu s'ellu hè marcatu cum'è sensibile u media
+ title: Vede media sensibili in e viste OpenGraph
registrations:
closed_message:
desc_html: Affissatu nant’a pagina d’accolta quandu l’arregistramenti sò chjosi. Pudete fà usu di u furmattu HTML
title: Missaghju per l’arregistramenti chjosi
deletion:
- desc_html: Auturizà tuttu u mondu di sguassà u so propiu contu
+ desc_html: Auturizà tuttu u mondu à sguassà u so propiu contu
title: Auturizà à sguassà i conti
min_invite_role:
disabled: Nisunu
@@ -336,11 +389,14 @@ co:
desc_html: Mustrerà un badge Squadra nant’à un prufile d’utilizatore
title: Mustrà un badge staff
site_description:
- desc_html: Paragrafu di prisentazione nant’a pagina d’accolta è i marchi meta. Pudete fà usu di marchi HTML, in particulare
<a>
è
<em>
.
+ desc_html: Paragrafu di prisentazione nant’a pagina d’accolta. Parlate di cio chì rende stu servore speziale, o d'altre cose impurtante. Pudete fà usu di marchi HTML, in particulare
<a>
è
<em>
.
title: Discrizzione di l’istanza
site_description_extended:
desc_html: Una bona piazza per e regule, infurmazione è altre cose chì l’utilizatori duverìanu sapè. Pudete fà usu di marchi HTML
title: Discrizzione stesa di u situ
+ site_short_description:
+ desc_html: Mustratu indè a barra laterala è i tag meta. Spiegate quale hè Mastodon è ciò chì rende u vostru servore speciale in un paragrafu. S'ella hè lasciata viota, a discrizzione di l'istanza sarà utilizata.
+ title: Descrizzione corta di l'istanza
site_terms:
desc_html: Quì pudete scrive e vostre regule di cunfidenzialità, cundizione d’usu o altre menzione legale. Pudete fà usu di marchi HTML
title: Termini persunalizati
@@ -362,6 +418,7 @@ co:
media:
title: Media
no_media: Nisun media
+ no_status_selected: I statuti ùn sò micca stati mudificati perchè manc'unu era selezziunatu
title: Statutu di u contu
with_media: Cù media
subscriptions:
@@ -371,6 +428,12 @@ co:
last_delivery: Ultima arricata
title: WebSub
topic: Sughjettu
+ suspensions:
+ bad_acct_msg: U valore di cunfirmazione ùn era micca curretta. Site sicuru·a di suspende u bonu contu?
+ hint_html: 'Per cunfirmà a suspensione di u contu, entrate %{value} quì sottu:'
+ proceed: Cuntinuà
+ title: Suspende %{acct}
+ warning_html: 'A suspensione di u contu sguasserà di manera
irreversibile i so dati, cum''è:'
title: Amministrazione
admin_mailer:
new_report:
@@ -424,7 +487,7 @@ co:
following: 'Eccu! Avà seguitate:'
post_follow:
close: O pudete ancu chjude sta finestra.
- return: Rivultà à u prufile di l’utilizatore
+ return: Vede u prufile di l’utilizatore
web: Andà à l’interfaccia web
title: Siguità %{acct}
datetime:
@@ -474,6 +537,22 @@ co:
follows: Seguitate
mutes: Piattate
storage: I vostri media
+ filters:
+ contexts:
+ home: Accolta
+ notifications: Nutificazione
+ public: Linee pubbliche
+ thread: Cunversazione
+ edit:
+ title: Mudificà u filtru
+ errors:
+ invalid_context: Micca abbastanza cuntestu
+ invalid_irreversible: A filtrazione irreversibile marchja solu per l'accolta è e nutificazione
+ index:
+ delete: Toglie
+ title: Filtri
+ new:
+ title: Aghjustà un novu filtru
followers:
domain: Duminiu
explanation_html: Per assicuravi di a cunfidenzialità di i vostri statuti, duvete avè primura di quale vi seguita.
I vostri statuti privati sò mandati à tutte l’istanze induve avete abbunati. Pensate à u vostru livellu di cunfidenza in i so amministratori.
@@ -486,9 +565,12 @@ co:
true_privacy_html: Ùn vi scurdate chì
una vera cunfidenzialità pò solu esse ottenuta cù crittografia da un capu à l’altru.
unlocked_warning_html: Tuttu u mondu pò seguitavi è vede i vostri statuti privati. %{lock_link} per pudè cunfirmà o righjittà abbunamenti.
unlocked_warning_title: U vostru contu hè pubblicu
+ footer:
+ developers: Sviluppatori
+ more: Di più…
+ resources: Risorze
generic:
changes_saved_msg: Cambiamenti salvati!
- powered_by: mossu da %{link}
save_changes: Salvà e mudificazione
validation_errors:
one: Qualcosa ùn và bè! Verificate u prublemu quì sottu
@@ -514,6 +596,7 @@ co:
'86400': 1 ghjornu
expires_in_prompt: Mai
generate: Creà
+ invited_by: 'Site statu·a invitatu·a da:'
max_uses:
one: 1 usu
other: "%{count} usi"
@@ -523,8 +606,6 @@ co:
expires_at: Spira
uses: Utiliza
title: Invità ghjente
- landing_strip_html: "
%{name} hè nant’à %{link_to_root_path}. Pudete seguitallu·a o cumunicà cù ellu·a cù un contu in qualche parte di u fediverse."
- landing_strip_signup_html: Pudete ancu
arrigistravi quì.
lists:
errors:
limit: Ùn pudete più creà altre liste
@@ -598,8 +679,12 @@ co:
remote_follow:
acct: Entrate u vostru cugnome@istanza da induve vulete siguità stu contu
missing_resource: Ùn avemu pussutu à truvà l’indirizzu di ridirezzione
+ no_account_html: Ùn avete micca un contu? Pudete
arregistravi quì
proceed: Cuntinuà per siguità
prompt: 'Avete da siguità:'
+ remote_interaction:
+ proceed: Cunfirmà l'interazzione
+ prompt: 'Vulete interagisce cù u statutu:'
remote_unfollow:
error: Errore
title: Titulu
@@ -674,6 +759,7 @@ co:
disallowed_hashtags:
one: 'cuntene l’hashtag disattivatu: %{tags}'
other: 'cuntene l’hashtag disattivati: %{tags}'
+ language_detection: Truvà a lingua autumaticamente
open_in_web: Apre nant’à u web
over_character_limit: Site sopr’à a limita di %{max} caratteri
pin_errors:
@@ -682,6 +768,7 @@ co:
private: Ùn pudete micca puntarulà un statutu ch’ùn hè micca pubblicu
reblog: Ùn pudete micca puntarulà una spartera
show_more: Vede di più
+ sign_in_to_participate: Cunnettatevi per participà à a cunversazione
title: '%{name}: "%{quote}"'
visibilities:
private: Solu per l’abbunati
@@ -691,11 +778,91 @@ co:
unlisted: Micca listatu
unlisted_long: Tuttu u mondu pò vede, mà micca indè e linee pubbliche
stream_entries:
- click_to_show: Cliccà per vede
pinned: Statutu puntarulatu
reblogged: spartutu
sensitive_content: Cuntenutu sensibile
terms:
+ body_html: |
+
Politique de confidentialité
+
Quelles informations collectons-nous ?
+
+
+ - Informations de base sur votre compte : Si vous vous inscrivez sur ce serveur, il vous sera demandé de rentrer un identifiant, une adresse électronique et un mot de passe. Vous pourrez également ajouter des informations additionnelles sur votre profil, telles qu’un nom public et une biographie, ainsi que téléverser une image de profil et une image d’en-tête. Vos identifiant, nom public, biographie, image de profil et image d’en-tête seront toujours affichés publiquement.
+ - Posts, liste d’abonnements et autres informations publiques : La liste de vos abonnements ainsi que la liste de vos abonné·e·s sont publiques. Quand vous postez un message, la date et l’heure d’envoi ainsi que le nom de l’application utilisée pour sa transmission sont enregistré·e·s. Des médias, tels que des images ou des vidéos, peuvent être joints aux messages. Les posts publics et non listés sont affichés publiquement. Quand vous mettez en avant un post sur votre profil, ce post est également affiché publiquement. Vos messages sont délivrés à vos abonné·e·s, ce qui, dans certains cas, signifie qu’ils sont délivrés à des serveurs tiers et que ces derniers en stockent une copie. Quand vous supprimer un post, il est probable que vos abonné·e·s en soient informé·e·s. Partager un message ou le marquer comme favori est toujours une action publique.
+ - Posts directs et abonné·e·s uniquement : Tous les posts sont stockés et traités par le serveur. Les messages abonné·e·s uniquement ne sont transmis qu’à vos abonné·e·s et aux personnes mentionnées dans le corps du message, tandis que les messages directs ne sont transmis qu’aux personnes mentionnées. Dans certains cas, cela signifie qu’ils sont délivrés à des serveurs tiers et que ces derniers en stockent une copie. Nous faisons un effort de bonne fois pour en limiter l’accès uniquement aux personnes autorisées, mais ce n’est pas nécessairement le cas des autres serveurs. Il est donc très important que vous vérifiiez les serveurs auxquels appartiennent vos abonné·e·s. Il vous est possible d’activer une option dans les paramètres afin d’approuver et de rejeter manuellement les nouveaux·lles abonné·e·s. Gardez s’il-vous-plaît en mémoire que les opérateur·rice·s du serveur ainsi que celles et ceux de n’importe quel serveur récepteur peuvent voir ces messages et qu’il est possible pour les destinataires de faire des captures d’écran, de copier et plus généralement de repartager ces messages. Ne partager aucune information sensible à l’aide de Mastodon.
+ - IP et autres métadonnées : Quand vous vous connectez, nous enregistrons votre adresse IP ainsi que le nom de votre navigateur web. Toutes les sessions enregistrées peuvent être consultées dans les paramètres, afin que vous puissiez les surveiller et éventuellement les révoquer. La dernière adresse IP utilisée est conservée pour une durée de 12 mois. Nous sommes également susceptibles de conserver les journaux du serveur, ce qui inclut l’adresse IP de chaque requête reçue.
+
+
+
+
+
Que faisons-nous des informations que nous collectons ?
+
+
Toutes les informations que nous collectons sur vous peuvent être utilisées d’une des manières suivantes :
+
+
+ - Pour vous fournir les fonctionnalités de base de Mastodon. Vous ne pouvez interagir avec le contenu des autres et poster votre propre contenu que lorsque vous êtes connecté·e. Par exemple, vous pouvez vous abonner à plusieurs autres comptes pour voir l’ensemble de leurs posts dans votre fil d’accueil personnalisé.
+ - Pour aider à la modération de la communauté, par exemple, comparer votre adresse IP à d’autres afin de déterminer si un bannissement a été contourné ou si une autre violation aux règles a été commise.
+ - L’adresse électronique que vous nous avez fournie peut être utilisée pour vous envoyez des informations, des notifications lorsque d’autres personnes interagissent avec votre contenu ou vous envoient des messages, pour répondre à des demandes de votre part ainsi que pour tout autres requêtes ou questions.
+
+
+
+
+
Comment protégeons-nous vos informations ?
+
+
Nous mettons en œuvre une variété de mesures de sécurité afin de garantir la sécurité de vos informations personnelles quand vous les saisissez, les soumettez et les consultez. Entre autres choses, votre session de navigation ainsi que le trafic entre votre application et l’API sont sécurisés à l’aide de TLS tandis que votre mot de passe est haché en utilisant un puissant algorithme à sens unique. Vous pouvez également activer l’authentification à deux facteurs pour sécuriser encore plus l’accès à votre compte.
+
+
+
+
Quelle est notre politique de conservation des données ?
+
+
Nous ferons un effort de bonne foi :
+
+
+ - Pour ne pas conserver plus de 90 jours les journaux systèmes contenant les adresses IP de toutes les requêtes reçues par ce serveur.
+ - Pour ne pas conserver plus de 12 mois les adresses IP associées aux utilisateur·ice·s enregistré·e·s.
+
+
+
Vous pouvez demander une archive de votre contenu, incluant vos posts, vos médias joints, votre image de profil et votre image d’en-tête.
+
+
Vous pouvez, à n’importe quel moment, supprimer votre compte de manière définitive.
+
+
+
+
Utilisons-nous des témoins de connexion ?
+
+
Oui. Les témoins de connexion sont de petits fichiers qu’un site ou un service transféres sur le disque dur de votre ordinateur via votre navigateur web (si vous l’avez autorisé). Ces témoins permettent au site de reconnaître votre navigateur et de, dans le cas où vous possédez un compte, de vous associer avec ce dernier.
+
+
Nous utilisons les témoins de connexion comme un moyen de comprendre et de nous souvenir de vos préférences pour vos prochaines visites.
+
+
+
+
Divulguons-nous des informations à des tierces parties ?
+
+
Nous ne vendons, n’échangeons ou ne transférons d’une quelque manière que soit des informations permettant de vous identifier personnellement. Cela n’inclut pas les tierces parties de confiance qui nous aident à opérer ce site, à conduire nos activités commerciales ou à vous servir, tant qu’elles acceptent de garder ces informations confidentielles. Nous sommes également susceptibles de partager vos informations quand nous pensons que c’est nécessaire pour nous conformer à la loi, pour appliquer les politiques de notre site ainsi que pour défendre nos droits, notre propriété, notre sécurité et celles et ceux d’autres personnes.
+
+
Votre contenu public peut être téléchargé par d’autres serveurs du réseau. Dans le cas où vos abonné·e·s et vos destinataires résideraient sur des serveurs différents du vôtre, vos posts publics et abonné·e·s uniquement peuvent être délivrés vers les serveurs de vos abonné·e·s tandis que vos messages directs sont délivrés aux serveurs de vos destinataires.
+
+
Quand vous autorisez une application à utiliser votre compte, en fonction de l’étendue des permissions que vous approuvez, il est possible qu’elle puisse accéder aux informations publiques de votre profil, votre liste d’abonnements, votre liste d’abonné·e·s, vos listes, tout vos posts et vos favoris. Les applications ne peuvent en aucun cas accéder à votre adresse électronique et à votre mot de passe.
+
+
+
+
Utilisation de ce site par les enfants
+
+
Si ce serveur est situé dans dans l’UE ou l’EEE : Notre site, produits et services sont tous destinés à des personnes âgées de 16 ans ou plus. Si vous avez moins de 16 ans, en application du RGPD (Règlement Général sur la Protection des Données), merci de ne pas utiliser ce site.
+
+
Si ce serveur est situé dans aux États-Unis d’Amérique : Notre site, produits et services sont tous destinés à des personnes âgées de 13 ans ou plus. Si vous avez moins de 13 ans, en application du COPPA (Children's Online Privacy Protection Act), merci de ne pas utiliser ce site.
+
+
Les exigences légales peuvent être différentes si ce serveur se trouve dans une autre juridiction.
+
+
+
+
Modifications de notre politique de confidentialité
+
+
Dans le cas où nous déciderions de changer notre politique de confidentialité, nous posterons les modifications sur cette page.
+
+
Ce document est publié sous lincence CC-BY-SA. Il a été mis à jours pour la dernière fois le 7 mars 2018.
+
+
Originellement adapté de la politique de confidentialité de Discourse.
title: Termini d’usu è di cunfidenzialità per %{instance}
themes:
contrast: Cuntrastu altu
@@ -704,6 +871,7 @@ co:
time:
formats:
default: "%d %b %Y, %H:%M"
+ month: "%b %Y"
two_factor_authentication:
code_hint: Entrate u codice generatu da l’applicazione per cunfirmà
description_html: S’ella hè attivata
l’identificazione à dui fattori, duvete avè u vostru telefuninu pè ottene un codice di cunnezzione.
diff --git a/config/locales/cs.yml b/config/locales/cs.yml
index 7b6021f13..ae2d3c04f 100644
--- a/config/locales/cs.yml
+++ b/config/locales/cs.yml
@@ -1,44 +1,918 @@
---
cs:
about:
- about_hashtag_html: Toto jsou veřejné příspěvky typu označené jako
#%{hashtag}. Pokud máte účet kdekoliv na fediverse, můžete s nimi interagovat.
+ about_hashtag_html: Toto jsou veřejné tooty označené hashtagem
#%{hashtag}. Pokud máte účet kdekoliv na fediverse, můžete s nimi interagovat.
about_mastodon_html: Mastodon je sociální síť založená na otevřených webových protokolech a svobodném, otevřeném softwaru. Je decentrovalizovaná jako e-mail.
about_this: O této instanci
administered_by: 'Server spravuje:'
+ api: API
+ apps: Mobilní aplikace
closed_registrations: Registrace na této instanci jsou momentálně uzavřené. Můžete si však najít jinou instanci, vytvořit si na ní účet a získat z ní přístup do naprosto stejné sítě.
contact: Kontakt
contact_missing: Nenastaveno
contact_unavailable: Neuvedeno
- description_headline: Co je %{domain}?
- domain_count_after: dalším instancím
- domain_count_before: Připojeno k
+ documentation: Dokumentace
extended_description_html: |
Dobré místo pro pravidla
Rozšířený popis ještě nebyl nastaven.
features:
humane_approach_body: Mastodon, poučen z chyb jiných sociálních sítí, se snaží bojovat se zneužíváním sociálních sítí vytvářením etických možností.
humane_approach_title: Lidštější přístup
- not_a_product_title: Jste osoba, ne produkt.
- generic_description: "%{domain} je jedním serverem v síti"
+ not_a_product_body: Mastodon není komerční síť. Žádné reklamy, žádné dolování dat, žádné hranice. Žádná centrální autorita.
+ not_a_product_title: Jste osoba, ne produkt
+ real_conversation_body: S 500 znaky k vaší dispozici a podporou pro varování o obsahu a médiích se můžete vyjadřovat tak, jak chcete.
+ real_conversation_title: Vytvořen pro opravdovou konverzaci
+ within_reach_body: Několik aplikací pro iOS, Android a jiné platformy vám díky jednoduchému API ekosystému dovolují držet krok s vašimi přáteli, ať už jste kdekoliv.
+ within_reach_title: Vždy v dosahu
+ generic_description: "%{domain} je jedním ze serverů v síti"
+ hosted_on: Mastodon hostovaný na %{domain}
learn_more: Zjistit více
+ other_instances: Seznam instancí
+ privacy_policy: Zásady soukromí
source_code: Zdrojový kód
- status_count_after: příspěvků
- status_count_before: Kdo je autorem
- user_count_after: uživatelů
- user_count_before: Domov pro
+ status_count_after:
+ one: příspěvek
+ other: příspěvků
+ status_count_before: Kteří napsali
+ terms: Podmínky používání
+ user_count_after:
+ one: uživatele
+ other: uživatelů
+ user_count_before: Domov
what_is_mastodon: Co je Mastodon?
accounts:
+ choices_html: 'Volby uživatele %{name}:'
follow: Sledovat
- followers: Sledovatelé
+ followers:
+ one: Sledovatel
+ other: Sledovatelé
following: Sleduje
+ joined: Připojil/a se %{date}
media: Média
moved_html: 'Účet %{name} byl přesunut na %{new_profile_link}:'
network_hidden: Tato informace není k dispozici
nothing_here: Tady nic není!
+ people_followed_by: Lidé, které %{name} sleduje
+ people_who_follow: Lidé, kteří sledují uživatele %{name}
+ pin_errors:
+ following: Musíte již sledovat osobu, kterou chcete podpořit
+ posts:
+ one: Toot
+ other: Tooty
+ posts_tab_heading: Tooty
+ posts_with_replies: Tooty a odpovědi
+ reserved_username: Toto uživatelské jméno je rezervováno
+ roles:
+ admin: Administrátor
+ bot: Robot
+ moderator: Moderátor
+ unfollow: Přestat sledovat
+ admin:
+ account_moderation_notes:
+ create: Zanechat poznámku
+ created_msg: Poznámka moderátora byla úspěšně vytvořena!
+ delete: Smazat
+ destroyed_msg: Poznámka moderátora byla úspěšně zničena!
+ accounts:
+ are_you_sure: Jste si jistý/á?
+ avatar: Avatar
+ by_domain: Doména
+ change_email:
+ changed_msg: E-mail k tomuto účtu byl úspěšně změněn!
+ current_email: Současný e-mail
+ label: Změnit e-mail
+ new_email: Nový e-mail
+ submit: Změnit e-mail
+ title: Změnit e-mail pro uživatele %{username}
+ confirm: Potvrdit
+ confirmed: Potvrzeno
+ confirming: Potvrzující
+ demote: Degradovat
+ disable: Zablokovat
+ disable_two_factor_authentication: Zakázat 2FA
+ disabled: Blokováno
+ display_name: Zobrazované jméno
+ domain: Doména
+ edit: Upravit
+ email: E-mail
+ email_status: Stav e-mailu
+ enable: Povolit
+ enabled: Povoleno
+ feed_url: URL proudu
+ followers: Sledovatelé
+ followers_url: URL sledovatelů
+ follows: Sleduje
+ inbox_url: URL přijatých zpráv
+ ip: IP
+ location:
+ all: Vše
+ local: Místní
+ remote: Vzdálené
+ title: Umístění
+ login_status: Stav přihlášení
+ media_attachments: Mediální přílohy
+ memorialize: Změnit na "in memoriam"
+ moderation:
+ all: Vše
+ silenced: Utišen
+ suspended: Suspendován
+ title: Moderace
+ moderation_notes: Moderační poznámky
+ most_recent_activity: Nejnovější aktivita
+ most_recent_ip: Nejnovější IP
+ not_subscribed: Neodebírá
+ order:
+ alphabetic: Abecedně
+ most_recent: Nejnovější
+ title: Pořadí
+ outbox_url: URL odchozích zpráv
+ perform_full_suspension: Provést plnou suspenzaci
+ profile_url: URL profilu
+ promote: Povýšit
+ protocol: Protokol
+ public: Veřejný
+ push_subscription_expires: Odebírání PuSH expiruje
+ redownload: Obnovit avatar
+ remove_avatar: Odstranit avatar
+ resend_confirmation:
+ already_confirmed: Tento uživatel je již potvrzen
+ send: Znovu odeslat potvrzovací e-mail
+ success: Potvrzovací e-mail byl úspěšně odeslán!
+ reset: Resetovat
+ reset_password: Obnovit heslo
+ resubscribe: Znovu odebírat
+ role: Oprávnění
+ roles:
+ admin: Administrátor
+ moderator: Moderátor
+ staff: Personál
+ user: Uživatel
+ salmon_url: URL Salmon
+ search: Hledat
+ shared_inbox_url: URL sdílené schránky
+ show:
+ created_reports: Nahlášení vytvořené z tohoto účtu
+ report: nahlášení
+ targeted_reports: Nahlášení vytvořena o tomto účtu
+ silence: Utišit
+ statuses: Příspěvky
+ subscribe: Odebírat
+ title: Účty
+ unconfirmed_email: Nepotvrzený e-mail
+ undo_silenced: Zrušit utišení
+ undo_suspension: Zrušit suspenzaci
+ unsubscribe: Přestat odebírat
+ username: Uživatelské jméno
+ web: Web
+ action_logs:
+ actions:
+ assigned_to_self_report: "%{name} přidělil/a hlášení %{target} sobě"
+ change_email_user: "%{name} změnil/a e-mailovou adresu uživatele %{target}"
+ confirm_user: "%{name} potvrdil/a e-mailovou adresu uživatele %{target}"
+ create_custom_emoji: "%{name} nahrál/a nové emoji %{target}"
+ create_domain_block: "%{name} zablokoval/a doménu %{target}"
+ create_email_domain_block: "%{name} přidal/a e-mailovou doménu %{target} na černou listinu"
+ demote_user: "%{name} degradoval/a uživatele %{target}"
+ destroy_domain_block: "%{name} odblokoval/a doménu %{target}"
+ destroy_email_domain_block: "%{name} odebral/a e-mailovou doménu %{target} z černé listiny"
+ destroy_status: "%{name} odstranil/a příspěvek uživatele %{target}"
+ disable_2fa_user: "%{name} vypnul/a požadavek pro dvoufaktorovou autentikaci pro uživatele %{target}"
+ disable_custom_emoji: "%{name} zakázal/a emoji %{target}"
+ disable_user: "%{name} zakázal/a přihlašování pro uživatele %{target}"
+ enable_custom_emoji: "%{name} povolil/a emoji %{target}"
+ enable_user: "%{name} povolil/a přihlašování pro uživatele %{target}"
+ memorialize_account: '%{name} změnil/a účet %{target} na stránku "in memoriam"'
+ promote_user: "%{name} povýšil/a uživatele %{target}"
+ remove_avatar_user: "%{name} odstranil/a avatar uživatele %{target}"
+ reopen_report: "%{name} znovuotevřel/a nahlášení %{target}"
+ reset_password_user: "%{name} resetoval/a heslo uživatele %{target}"
+ resolve_report: "%{name} vyřešil/a nahlášení %{target}"
+ silence_account: "%{name} utišil/a účet uživatele %{target}"
+ suspend_account: "%{name} suspendoval/a účet uživatele %{target}"
+ unassigned_report: "%{name} odebral/a nahlášení %{target}"
+ unsilence_account: "%{name} odtišil/a účet uživatele %{target}"
+ unsuspend_account: "%{name} zrušil/a suspenzaci účtu uživatele %{target}"
+ update_custom_emoji: "%{name} aktualizoval/a emoji %{target}"
+ update_status: "%{name} aktualizoval/a příspěvek uživatele %{target}"
+ deleted_status: "(smazaný příspěvek)"
+ title: Záznam auditu
+ custom_emojis:
+ by_domain: Doména
+ copied_msg: Místní kopie emoji byla úspěšně vytvořena
+ copy: Kopírovat
+ copy_failed_msg: Nebylo možné vytvořit místní kopii tohoto emoji
+ created_msg: Emoji úspěšně vytvořeno!
+ delete: Smazat
+ destroyed_msg: Emoji úspěšně zničeno!
+ disable: Zakázat
+ disabled_msg: Emoji bylo úspěšně zakázáno
+ emoji: Emoji
+ enable: Povolit
+ enabled_msg: Emoji bylo úspěšně povoleno
+ image_hint: PNG až do 50KB
+ listed: Uvedené
+ new:
+ title: Přidat nové vlastní emoji
+ overwrite: Přepsat
+ shortcode: Zkratka
+ shortcode_hint: Alespoň 2 znaky, pouze alfanumerické znaky a podtržítka
+ title: Vlastní emoji
+ unlisted: Neuvedené
+ update_failed_msg: Nebylo možné aktualizovat toto emoji
+ updated_msg: Emoji úspěšně aktualizováno!
+ upload: Nahrát
+ dashboard:
+ backlog: opožděné úlohy
+ config: Konfigurace
+ feature_deletions: Smazání účtů
+ feature_invites: Pozvánky
+ feature_registrations: Registrace
+ feature_relay: Federovací most
+ features: Vlastnosti
+ hidden_service: Federace se skrytými službami
+ open_reports: otevřená hlášení
+ recent_users: Nedávní uživatelé
+ search: Fulltextové vyhledávání
+ single_user_mode: Režim jednoho uživatele
+ software: Software
+ space: Využití prostoru
+ title: Přehled
+ total_users: uživatelů celkem
+ trends: Trendy
+ week_interactions: interakcí tento týden
+ week_users_active: aktivních tento týden
+ week_users_new: uživatelů tento týden
+ domain_blocks:
+ add_new: Přidat nové
+ created_msg: Blokace domény se právě vyřizuje
+ destroyed_msg: Blokace domény byla zrušena
+ domain: Doména
+ new:
+ create: Vytvořit blokaci
+ hint: Blokace domény nezakáže vytváření účtových záznamů v databázi, ale bude na tyto účty zpětně a automaticky aplikovat specifické metody moderace.
+ severity:
+ desc_html: Funkce
Utišit zneviditelní příspěvky z účtu komukoliv, kdo jej nesleduje. Funkce
Suspendovat odstraní všechen obsah, média a profilová data účtu. Pro pouhé odmítnutí mediálních souborů použijte funkci
Žádné.
+ noop: Žádné
+ silence: Utišit
+ suspend: Suspendovat
+ title: Nová doménová blokace
+ reject_media: Odmítat mediální soubory
+ reject_media_hint: Odstraní lokálně uložené soubory a odmítne jejich stažení v budoucnosti. Irelevantní pro suspenzace
+ severities:
+ noop: Žádné
+ silence: Utišit
+ suspend: Suspendovat
+ severity: Přísnost
+ show:
+ affected_accounts:
+ one: Jeden účet v databázi byl ovlivněn
+ other: "%{count} účtů v databázi byl ovlivněn"
+ retroactive:
+ silence: Odtišit všechny existující účty z této domény
+ suspend: Zrušit suspenzaci všech existujících účtů z této domény
+ title: Zrušit blokaci domény %{domain}
+ undo: Odvolat
+ title: Doménové blokace
+ undo: Odvolat
+ email_domain_blocks:
+ add_new: Přidat nový
+ created_msg: E-mailová doména úspěšně přidána na černou listinu
+ delete: Smazat
+ destroyed_msg: E-mailová doména úspěšně odstraněna z černé listiny
+ domain: Doména
+ new:
+ create: Přidat doménu
+ title: Nový e-mail pro zablokování
+ title: Černá listina e-mailů
+ instances:
+ account_count: Známé účty
+ domain_name: Doména
+ reset: Resetovat
+ search: Hledat
+ title: Známé instance
+ invites:
+ deactivate_all: Deaktivovat vše
+ filter:
+ all: Vše
+ available: Dostupné
+ expired: Vypršelé
+ title: Filtrovat
+ title: Pozvánky
+ relays:
+ add_new: Přidat nový most
+ description_html: "
Federovací most je přechodný server, který vyměňuje velká množství veřejných tootů mezi servery, které z něj odebírají a poblikují na něj.
Může pomoci malým a středně velkým serverům objevovat obsah z fediverse, což by jinak vyžadovalo, aby místní uživatelé manuálně sledovali jiné lidi na vzdálených serverech."
+ enable_hint: Je-li tohle povoleno, začne váš server odebírat všechny veřejné tooty z tohoto mostu a odesílat na něj své vlastní veřejné tooty.
+ inbox_url: URL mostu
+ pending: Čekám na souhlas mostu
+ save_and_enable: Uložit a povolit
+ setup: Nastavit připojení k mostu
+ status: Stav
+ title: Mosty
+ report_notes:
+ created_msg: Poznámka o nahlášení úspěšně vytvořena!
+ destroyed_msg: Poznámka o nahlášení úspěšně smazána!
+ reports:
+ account:
+ note: poznámka
+ report: nahlášení
+ action_taken_by: Akci vykonal/a
+ are_you_sure: Jste si jistý/á?
+ assign_to_self: Přidělit ke mně
+ assigned: Přiřazený moderátor
+ comment:
+ none: Žádné
+ created_at: Nahlášené
+ id: ID
+ mark_as_resolved: Označit jako vyřešené
+ mark_as_unresolved: Označit jako nevyřešené
+ notes:
+ create: Přidat poznámku
+ create_and_resolve: Vyřešit s poznámkou
+ create_and_unresolve: Znovu otevřít s poznámkou
+ delete: Smazat
+ placeholder: Popište, jaké akce byly vykonány, nebo jakékoliv jiné související aktuality...
+ reopen: Znovu otevřít nahlášení
+ report: 'Nahlásit #%{id}'
+ report_contents: Obsah
+ reported_account: Nahlášený účet
+ reported_by: Nahlášeno uživatelem
+ resolved: Vyřešeno
+ resolved_msg: Nahlášení úspěšně vyřešeno!
+ silence_account: Utišit účet
+ status: Stav
+ suspend_account: Suspendovat účet
+ target: Cíl
+ title: Nahlášení
+ unassign: Odebrat
+ unresolved: Nevyřešeno
+ updated_at: Aktualizováno
+ view: Zobrazit
+ settings:
+ activity_api_enabled:
+ desc_html: Počty lokálně publikovaných příspěvků, aktivních uživatelů a nových registrací, v týdenních intervalech
+ title: Publikovat hromadné statistiky o uživatelské aktivitě
+ bootstrap_timeline_accounts:
+ desc_html: Je-li uživatelskch jmen více, oddělujte je čárkami. Lze zadat pouze místní a odemknuté účty. Je-li tohle prázdné, jsou výchozí hodnotou všichni místní administrátoři.
+ title: Výchozí sledování pro nové uživatele
+ contact_information:
+ email: Pracovní e-mail
+ username: Uživatelské jméno kontaktu
+ custom_css:
+ desc_html: Pozměnit vzhled pomocí šablony CSS načtené na každé stránce
+ title: Vlastní CSS
+ hero:
+ desc_html: Zobrazuje se na hlavní stránce. Doporučuje se rozlišení alespoň 600x100px. Pokud toto není nastavené, bude zobrazena miniatura instance
+ title: Hlavní obrázek
+ peers_api_enabled:
+ desc_html: Domény, na které tato instance narazila ve fediverse
+ title: Zveřejnit seznam objevených instancí
+ preview_sensitive_media:
+ desc_html: Náhledy odkazů na jiných stránkách budou zobrazeny i pokud jsou media označena jako citlivá
+ title: Zobrazovat v náhledech OpenGraph i citlivá média
+ registrations:
+ closed_message:
+ desc_html: Zobrazí se na hlavní stránce, jsou-li registrace uzavřeny. Můžete použít i HTML značky
+ title: Zpráva o uzavřených registracích
+ deletion:
+ desc_html: Dovolit každému smazání svého účtu
+ title: Zpřístupnit smazání účtu
+ min_invite_role:
+ disabled: Nikdo
+ title: Povolit pozvánky od
+ open:
+ desc_html: Povolit každému vytvořit si účet
+ title: Zpřístupnit registraci
+ show_known_fediverse_at_about_page:
+ desc_html: Je-li toto zapnuto, zobrazí se v náhledu tooty ze všech známých serverů na fediverse. Jinak budou zobrazeny pouze místní tooty.
+ title: Zobrazit celou známou fediverse na náhledu časové osy
+ show_staff_badge:
+ desc_html: Zobrazit na stránce uživatele odznak člena personálu
+ title: Zobrazit odznak personálu
+ site_description:
+ desc_html: Úvodní odstavec na hlavní straně. Popište, díky čemu je tento server Mastodon zvláštní, a cokoliv jiného, co je důležité. Můžete zde používat HTML značky, hlavně
<a>
a
<em>
.
+ title: Popis instance
+ site_description_extended:
+ desc_html: Dobré místo pro vaše pravidla, pokyny a jiné věci, které vaši instanci odlišují od ostatních. Lze použít HTML značky
+ title: Vlastní doplňující informace
+ site_short_description:
+ desc_html: Zobrazen v postranním panelu a meta značkách. Popište, co je Mastodon a díky čemu je tento server zvláštní v jediném odstavci. Je-li tohle prázdné, zobrazí se popis instance.
+ title: Krátký popis instance
+ site_terms:
+ desc_html: Můžete si napsat vlastní zásady soukromí, podmínky používání či jiné legality. Můžete použít HTML značky
+ title: Vlastní podmínky používání
+ site_title: Název instance
+ thumbnail:
+ desc_html: Používáno pro náhledy přes OpenGraph a API. Doporučuje se rozlišení 1200x630px
+ title: Miniatura instance
+ timeline_preview:
+ desc_html: Zobrazit na hlavní straně veřejnou časovou osu
+ title: Náhled časové osy
+ title: Nastavení stránky
+ statuses:
+ back_to_account: Zpět na stránku účtu
+ batch:
+ delete: Vymazat
+ nsfw_off: Označit, že není citlivý
+ nsfw_on: Označit jako citlivý
+ failed_to_execute: Nepodařilo se vykonat
+ media:
+ title: Média
+ no_media: Žádná média
+ no_status_selected: Nebyly změněny žádné příspěvky, neboť žádné nebyly vybrány
+ title: Příspěvky účtu
+ with_media: S médii
+ subscriptions:
+ callback_url: Zpáteční URL
+ confirmed: Potvrzeno
+ expires_in: Vyprší v
+ last_delivery: Poslední doručení
+ title: WebSub
+ topic: Téma
+ suspensions:
+ bad_acct_msg: Hodnota pro potvrzení neodpovídá. Suspendujete správný účet?
+ hint_html: 'Pro potvrzení suspenzace účtu prosím zadejte do pole níže %{value}:'
+ proceed: Pokračovat
+ title: Suspendovat účet %{acct}
+ warning_html: 'Suspenzace tohoto účtu
nenávratně smaže z tohoto účtu data, včetně:'
+ title: Administrace
+ admin_mailer:
+ new_report:
+ body: "%{reporter} nahlásil/a uživatele %{target}"
+ body_remote: Někdo z %{domain} nahlásil uživatele %{target}
+ subject: Nové nahlášení pro %{instance} (#%{id})
+ application_mailer:
+ notification_preferences: Změnit volby e-mailu
+ salutation: "%{name},"
+ settings: 'Změnit volby e-mailu: %{link}'
+ view: 'Zobrazit:'
+ view_profile: Zobrazit profil
+ view_status: Zobrazit příspěvek
+ applications:
+ created: Aplikace úspěšně vytvořena
+ destroyed: Aplikace úspěšně smazána
+ invalid_url: Zadaná adresa URL je neplatná
+ regenerate_token: Znovu vygenerovat přístupový token
+ token_regenerated: Přístupový token byl úspěšně vygenerován
+ warning: Buďte s těmito daty velmi opatrní. Nikdy je s nikým nesdílejte!
+ your_token: Váš přístupový token
+ auth:
+ agreement_html: Registrací souhlasíte s následováním
pravidel této instance a
našich podmínek používání.
+ change_password: Heslo
+ confirm_email: Potvrdit e-mail
+ delete_account: Odstranit účet
+ delete_account_html: Chcete-li odstranit svůj účet,
pokračujte zde. Budete požádán/a o potvrzení.
+ didnt_get_confirmation: Neobdržel/a jste pokyny pro potvrzení?
+ forgot_password: Zapomněl/a jste heslo?
+ invalid_reset_password_token: Token na obnovu hesla je buď neplatný, nebo vypršel. Prosím vyžádejte si nový.
+ login: Přihlásit
+ logout: Odhlásit
+ migrate_account: Přesunout se na jiný účet
+ migrate_account_html: Chcete-li přesměrovat tento účet na jiný, můžete to
nastavit zde.
+ or: nebo
+ or_log_in_with: Nebo se přihlaste pomocí
+ providers:
+ cas: CAS
+ saml: SAML
+ register: Registrovat
+ register_elsewhere: Registrovat na jiném serveru
+ resend_confirmation: Znovu odeslat pokyny pro potvrzení
+ reset_password: Obnovit heslo
+ security: Zabezpečení
+ set_new_password: Nastavit nové heslo
+ authorize_follow:
+ already_following: Tento účet již sledujete
+ error: Při hledání vzdáleného účtu bohužel nastala chyba
+ follow: Sledovat
+ follow_request: 'Poslal/a jste žádost o sledování uživateli:'
+ following: 'Podařilo se! Nyní sledujete uživatele:'
+ post_follow:
+ close: Nebo můžete toto okno klidně zavřít.
+ return: Zobrazit profil uživatele
+ web: Přejít na web
+ title: Sledovat uživatele %{acct}
+ datetime:
+ distance_in_words:
+ about_x_hours: "%{count} hod"
+ about_x_months: "%{count} měsíců"
+ about_x_years: "%{count} let"
+ almost_x_years: "%{count} let"
+ half_a_minute: Právě teď
+ less_than_x_minutes: "%{count} min"
+ less_than_x_seconds: Právě teď
+ over_x_years: "%{count} let"
+ x_days: "%{count} dní"
+ x_minutes: "%{count} min"
+ x_months: "%{count} mesíců"
+ x_seconds: "%{count} s"
+ deletes:
+ bad_password_msg: Dobrý pokus, hackeři! Nesprávné heslo
+ confirm_password: Zadejte svoje současné heslo pro ověření vaší identity
+ description_html: Tímto
trvale a nenávratně odstraníte obsah z vašeho účtu a deaktivuje ho. Vaše uživatelské jméno zůstane rezervované pro zabránění budoucím napodobováním.
+ proceed: Odstranit účet
+ success_msg: Váš účet byl úspěšně odstraněn
+ warning_html: Pouze vymazání obsahu z této konkrétní instance je zaručeno. Obsah, který byl široce sdílen, po sobě pravděpodobně zanechá stopy. U offline serverů a serverů, které vaše aktualizace již neodebírají, nebudou databáze aktualizovány.
+ warning_title: Dostupnost rozšířeného obsahu
+ errors:
+ '403': Nemáte povolení zobrazit tuto stránku.
+ '404': Stránka, kterou hledáte, neexistuje.
+ '410': Stránka, kterou hledáte, již neexistuje.
+ '422':
+ content: Bezpečnostní ověření selhalo. Neblokujete cookoes?
+ title: Bezpečnostní ověření selhalo
+ '429': Příliš mnoho požadavků
+ '500':
+ content: Omlouváme se, ale něco se pokazilo u nás.
+ title: Tato stránka není správná
+ noscript_html: Pro použití webové aplikace Mastodon prosím povolte JavaScript. Nebo zkuste jednu z
nativních aplikací pro Mastodon pro vaši platformu.
+ exports:
+ archive_takeout:
+ date: Datum
+ download: Stáhnout svůj archiv
+ hint_html: Můžete si vyžádat archiv vašich
tootů a nahraných médií. Exportovaná data budou ve formátu ActivityPub a budou čitelné kterýmkoliv kompatibilním softwarem. Archiv si můžete vyžádat každých 7 dní.
+ in_progress: Kompiluji váš archiv...
+ request: Vyžádat svůj archiv
+ size: Velikost
+ blocks: Blokujete
+ csv: CSV
+ follows: Sledujete
+ mutes: Ignorujete
+ storage: Úložisko médií
+ filters:
+ contexts:
+ home: Domovská časová osa
+ notifications: Oznámení
+ public: Veřejný časové osy
+ thread: Konverzace
+ edit:
+ title: Upravit filtr
+ errors:
+ invalid_context: Nebylo poskytnuto nic, nebo má neplatný kontext
+ invalid_irreversible: Nezvratné filtrování funguje pouze v souvislosti s domovskou osou či oznámeními
+ index:
+ delete: Smazat
+ title: Filtry
+ new:
+ title: Přidat nový filtr
+ followers:
+ domain: Doména
+ explanation_html: Chcete-li zaručit soukromí vašich příspěvků, musíte mít na vědomí, kdo vás sleduje.
Vaše soukromé příspěvky jsou doručeny na všechny instance, kde máte sledovatele. Nejspíš si je budete chtít zkontrolovat a odstranit sledovatele na instancích, jejichž personálu či softwaru nedůvěřujete s respektováním vašeho soukromí.
+ followers_count: Počet sledovatelů
+ lock_link: Zamkněte svůj účet
+ purge: Odstranit ze sledovatelů
+ success:
+ one: V průběhu utišování sledovatelů z jedné domény...
+ other: V průběhu utišování sledovatelů z %{count} domén...
+ true_privacy_html: Berte prosím na vědomí, že
skutečného soukromí se dá dosáhnout pouze za pomoci end-to-end šifrování.
+ unlocked_warning_html: Kdokoliv vás může sledovat a okamžitě vidět vaše soukromé příspěvky. %{lock_link}, abyste mohl/a zkontrolovat a odmítnout sledovatele.
+ unlocked_warning_title: Váš účet není zamknutý
+ footer:
+ developers: Vývojáři
+ more: Více…
+ resources: Zdroje
+ generic:
+ changes_saved_msg: Změny byly úspěšně uloženy!
+ save_changes: Uložit změny
+ validation_errors:
+ one: Něco ještě není úplně v pořádku! Prosím zkontrolujte chybu níže
+ other: Něco ještě není úplně v pořádku! Prosím zkontrolujte %{count} chyb níže
+ imports:
+ preface: Můžete importovat data, která jste exportoval/a z jiné instance, jako například seznam lidí, které sledujete či blokujete.
+ success: Vaše data byla úspěšně nahrána a nyní budou zpracována v daný čas
+ types:
+ blocking: Seznam blokovaných
+ following: Seznam sledovaných
+ muting: Seznam ignorovaných
+ upload: Nahrát
+ in_memoriam_html: Navždy budeme vzpomínat.
+ invites:
+ delete: Deaktivovat
+ expired: Vypršelé
+ expires_in:
+ '1800': 30 minut
+ '21600': 6 hodin
+ '3600': 1 hodina
+ '43200': 12 hodin
+ '604800': 1 týden
+ '86400': 1 den
+ expires_in_prompt: Nikdy
+ generate: Vygenerovat
+ invited_by: 'Byl/a jste pozván/a uživatelem:'
+ max_uses:
+ one: 1 použití
+ other: "%{count} použití"
+ max_uses_prompt: Bez limitu
+ prompt: Vygenerujte a sdílejte s ostatními odkazy a umožněte jim přístup na tuto instanci
+ table:
+ expires_at: Vyprší
+ uses: Použití
+ title: Pozvěte lidi
+ lists:
+ errors:
+ limit: Dosáhl/a jste maximálního počtu seznamů
+ media_attachments:
+ validations:
+ images_and_video: K příspěvku, který již obsahuje obrázky, nelze připojit video
+ too_many: Nelze připojit více než 4 soubory
+ migrations:
+ acct: přezdívka@doména nového účtu
+ currently_redirecting: 'Váš profil má nastaveno přesměrování na:'
+ proceed: Uložit
+ updated_msg: Vaše nastavení migrace účtu bylo úspěšně aktualizováno!
+ moderation:
+ title: Moderace
+ notification_mailer:
+ digest:
+ action: Zobrazit všechna oznámení
+ body: Zde najdete stručný souhrn zpráv, které jste zmeškal/a od vaší poslední návštěvy %{since}
+ mention: "%{name} vás zmínil/a v:"
+ new_followers_summary:
+ one: Navíc jste získal/a jednoho nového sledovatele, zatímco jste byl/a pryč! Hurá!
+ other: Navíc jste získal/a %{count} nových sledovatelů, zatímco jste byl/a pryč! Hurá!
+ subject:
+ one: "Jedno nové oznámení od vaší poslední návštěvy \U0001F418"
+ other: "%{count} nových oznámení od vaší poslední návštěvy \U0001F418"
+ title: Ve vaší absenci...
+ favourite:
+ body: 'Váš příspěvek si oblíbil/a %{name}:'
+ subject: "%{name} si oblíbil/a váš příspěvek"
+ title: Nové oblíbení
+ follow:
+ body: "%{name} vás nyní sleduje!"
+ subject: "%{name} vás nyní sleduje"
+ title: Nový sledovatel
+ follow_request:
+ action: Spravovat žádosti o sledování
+ body: "%{name} žádá o povolení vás následovat"
+ subject: 'Čekající sledovatel: %{name}'
+ title: Nová žádost o sledování
+ mention:
+ action: Odpovědět
+ body: 'Byl/a jste zmíněn/a uživatelem %{name} v:'
+ subject: Byl/a jste zmíněn/a uživatelem %{name}
+ title: Nová zmínka
+ reblog:
+ body: 'Váš příspěvek byl boostnutý uživatelem %{name}:'
+ subject: "%{name} boostnul/a váš příspěvek"
+ title: Nové boostnutí
+ number:
+ human:
+ decimal_units:
+ format: "%n %u"
+ units:
+ billion: mld
+ million: mil
+ quadrillion: bld
+ thousand: tis
+ trillion: bil
+ pagination:
+ newer: Novější
+ next: Starší
+ older: Starší
+ prev: Před
+ truncate: "…"
+ preferences:
+ languages: Jazyky
+ other: Ostatní
+ publishing: Publikování
+ web: Web
+ remote_follow:
+ acct: Napište svou přezdívku@doménu, ze které chcete jednat
+ missing_resource: Nemůžeme najít požadované přesměrovací URL pro váš účet
+ no_account_html: Ještě nemáte účet? Můžete se
registrovat zde
+ proceed: Pokračujte pro sledování
+ prompt: 'Budete sledovat:'
+ remote_interaction:
+ proceed: Pokračujte k interakci
+ prompt: 'Chcete interagovat s tímto tootem:'
+ remote_unfollow:
+ error: Chyba
+ title: Nadpis
+ unfollowed: Už nesledujete
+ sessions:
+ activity: Nejnovější aktivita
+ browser: Prohlížeč
+ browsers:
+ alipay: Alipay
+ blackberry: Blackberry
+ chrome: Chrome
+ edge: Microsoft Edge
+ electron: Electron
+ firefox: Firefox
+ generic: Neznámý prohlížeč
+ ie: Internet Explorer
+ micro_messenger: MicroMessenger
+ nokia: Nokia S40 Ovi Browser
+ opera: Opera
+ otter: Otter
+ phantom_js: PhantomJS
+ qq: QQ Browser
+ safari: Safari
+ uc_browser: UCBrowser
+ weibo: Weibo
+ current_session: Aktuální relace
+ description: "%{browser} na %{platform}"
+ explanation: Toto jsou webové prohlížeče aktuálně přihlášené na váš účet Mastodon.
+ ip: IP
+ platforms:
+ adobe_air: Adobe Air
+ android: Android
+ blackberry: Blackberry
+ chrome_os: Chrome OS
+ firefox_os: Firefox OS
+ ios: iOS
+ linux: Linux
+ mac: Mac
+ other: neznámé platformě
+ windows: Windows
+ windows_mobile: Windows Mobile
+ windows_phone: Windows Phone
+ revoke: Zamítnout
+ revoke_success: Relace úspěšně zamítnuta
+ title: Relace
+ settings:
+ authorized_apps: Autorizované aplikace
+ back: Zpět na Mastodon
+ delete: Smazání účtu
+ development: Vývoj
+ edit_profile: Upravit profil
+ export: Export dat
+ followers: Autorizovaní sledovatelé
+ import: Import
+ migrate: Přesunutí účtu
+ notifications: Oznámení
+ preferences: Předvolby
+ settings: Nastavení
+ two_factor_authentication: Dvoufaktorové ověřování
+ your_apps: Vaše aplikace
+ statuses:
+ attached:
+ description: 'Přiloženo: %{attached}'
+ image:
+ one: "%{count} obrázek"
+ other: "%{count} obrázků"
+ video:
+ one: "%{count} video"
+ other: "%{count} videí"
+ boosted_from_html: Boostnuto z %{acct_link}
+ content_warning: 'Varování o obsahu: %{warning}'
+ disallowed_hashtags:
+ one: 'obsahuje nepovolený hashtag: %{tags}'
+ other: 'obsahuje nepovolené hashtagy: %{tags}'
+ language_detection: Zjistit jazyk automaticky
+ open_in_web: Otevřít na webu
+ over_character_limit: limit %{max} znaků byl překročen
+ pin_errors:
+ limit: Už jste si připnul/a maximální počet tootů
+ ownership: Nelže připnout toot někoho jiného
+ private: Nelze připnout neveřejné tooty
+ reblog: Nelze připnout boostnutí
+ show_more: Zobrazit více
+ sign_in_to_participate: Chcete-li se účastnit této konverzace, přihlaste se
+ title: '%{name}: "%{quote}"'
+ visibilities:
+ private: Pouze pro sledovatele
+ private_long: Zobrazit pouze sledovatelům
+ public: Veřejné
+ public_long: Všichni mohou vidět
+ unlisted: Neuvedené
+ unlisted_long: Všichni mohou vidět, ale není zahrnut ve veřejných časových osách
+ stream_entries:
+ pinned: Připnutý toot
+ reblogged: boostnutý
+ sensitive_content: Citlivý obsah
+ terms:
+ body_html: |
+
Zásady soukromí
+
Jaké informace sbíráme?
+
+
+ - Základní informace o účtu: Pokud se na tomto serveru zaregistrujete, můžeme vás požádat o zadání uživatelského jména, e-mailové adresy a hesla. Můžete také zadat dodatečné profilové informace, jako například zobrazované jméno a krátký životopis, a nahrát si profilovou fotografii a hlavičkový obrázek. Uživatelské i zobrazované jméno, životopis, profilová fotografie a hlavičkový obrázek jsou vždy uvedeny veřejně.
+ - Příspěvky, sledovatelé a další veřejné informace: Seznam lidí, které sledujete, je uveden veřejně, totéž platí i pro vaše sledovatele. Když sem nahrajete zprávu, bude uloženo datum a čas, společně s aplikací, ze které jste zprávu odeslali. Zprávy mohou obsahovat mediální přílohy, jako jsou obrázky a videa. Veřejné a nezobrazované příspěvky jsou dostupné veřejně. Pokud na vašem profilu uvedete příspěvek, je to také veřejně dostupná informace. Vaše příspěvky jsou doručeny vašim sledovatelům, což v některých případech znamená, že budou doručeny na různé servery, na kterých budou ukládány kopie. Pokud příspěvky smažete, bude tohle taktéž doručeno vašim sledovatelům. Akce znovusdílení nebo oblíbení jiného příspěvku je vždy veřejná.
+ - Příspěvky přímé a pouze pro sledovatele: Všechny příspěvky jsou uloženy a zpracovány na serveru. Příspěvky pouze pro sledovatele jsou doručeny vašim sledovatelům a uživateům v nich zmíněných a přímé příspěvky jsou doručeny pouze uživatelům v nich zmíněných. V některých případech tohle znamená, že budou doručeny na různé servery, na kterých budou ukládány kopie. Snažíme se omezit přístup k těmto příspěvkům pouze na autorizované uživatele, ovšem jiné servery tak nemusejí učinit. Proto je důležité posoudit servery, ke kterým vaši sledovatelé patří. V nastavení si můžete zapnout volbu pro manuální schvalování či odmítnutí nových sledovatelů. Prosím mějte na paměti, že operátoři tohoto serveru a kteréhokoliv přijímacího serveru mohou tyto zprávy vidět a příjemci mohou vytvořit jejich snímek, zkopírovat je, nebo je jinak sdílet. Nesdílejte přes Mastodon jakékoliv nebezpečné informace.
+ - IP adresy a další metadata: Když se přihlásíte, zaznamenáváme IP adresu, ze které se přihlašujete, jakožto i název vašeho webového prohlížeče. Všechny vaše webové relace jsou v nastavení přístupné k vašemu posouzení a odvolání. Nejpozdější IP adresa použita je uložena maximálně do 12 měsíců. Můžeme také uchovávat serverové záznamy, které obsahují IP adresy každého požadavku odeslaného na náš server.
+
+
+
+
+
Na co používáme vaše informace?
+
+
Jakékoliv informace, které sbíráme, mohou být použity následujícími způsoby:
+
+
+ - K poskytnutí základních funkcí Mastodonu. Interagovat s obsahem od jiných lidí a přispívat svým vlastním obsahem můžete pouze, pokud jste přihlášeni. Můžete například sledovat jiné lidi a zobrazit si jejich kombinované příspěvky ve vaší vlastní personalizované časové ose.
+ - Pro pomoc moderaci komunity, například porovnáním vaší IP adresy s dalšími známými adresami pro určení vyhýbání se zákazům či jiných přestupků.
+ - E-mailová adresa, kterou nám poskytnete, může být použita pro zasílání informací, oznámení o interakcích jiných uživatelů s vaším obsahem nebo přijatých zprávách a k odpovědím na dotazy a/nebo další požadavky či otázky.
+
+
+
+
+
Jak vaše informace chráníme?
+
+
Implenentujeme různá bezpečnostní opatření pro udržování bezpečnosti vašich osobních dat, když zadáváte, odesíláte, či přistupujete k vašim osobním datům. Mimo jiné je vaše relace v prohlížeči, jakož i provoz mezi vašimi aplikacemi a API, zabezpečena pomocí SSL, a vaše heslo je hashováno pomocí silného jednosměrného algoritmu. Pro větší zabezpečení vašeho účtu můžete povolit dvoufaktorovou autentikaci.
+
+
+
+
Jaké jsou naše zásady o uchovávání údajů?
+
+
Budeme se snažit:
+
+
+ - Uchovávat serverové záznamy obsahující IP adresy všech požadavků pro tento server, pokud se takové záznamy uchovávají, maximálně 90 dní.
+ - Uchovávat IP adresy související s registrovanými uživateli maximálně 12 měsíců.
+
+
+
Kdykoliv si můžete vyžádat a stáhnout archiv vašeho obsahu, včetně vašich příspěvků, mediálních příloh, profilové fotografie a hlavičkového obrázku.
+
+
Kdykoliv můžete nenávratně smazat váš účet.
+
+
+
+
Používáme cookies?
+
+
Ano. Cookies jsou malé soubory, které stránka nebo její poskytovatel uloží na pevný disk vašeho počítače (pokud to dovolíte). Tyto cookies umožňují stránce rozpoznat váš prohlížeč a, pokud máte registrovaný účet, přidružit ho s vaším registrovaným účtem.
+
+
POužíváme cookies pro pochopení a ukládání vašich předvoleb pro budoucí návštěvy.
+
+
+
+
Zveřejňujeme jakékoliv informace třetím stranám?
+
+
Vaše osobně identifikovatelné informace neprodáváme, neobchodujeme s nimi, ani je nijak nepřenášíme vnějším stranám. Do tohoto se nepočítají důvěryhodné třetí strany, které nám pomáhají provozovat naši stránku, podnikat, nebo vás obsluhovat, pokud tyto strany souhlasí se zachováním důvěrnosti těchto informací. Můžeme také uvolnit vaše informace, pokud věříme, že je to nutné pro soulad se zákonem, prosazování našich zásad, nebo ochranu práv, majetku, či bezpečnost nás či ostatních.
+
+
Váš veřejný obsah může být stažen jinými servery na síti. Vaše příspěvky veřejné a pouze pro sledovatele budou doručeny na servery vašich sledovatelů a přímé zprávy budou doručeny na servery příjemců, pokud jsou tito sledovatelé nebo příjemci zaregistrováni na jiném serveru, než je tento.
+
+
Když autorizujete aplikaci, aby používala váš účet, může, v závislosti na rozsahu oprávnění, které jí udělíte, přistupovat k vašim veřejným profilovým informacím, seznamu lidí, které sledujete, vašim sledovatelům, vašim seznamům, všem vašim příspěvkům a příspěvkům, které jste si oblíbili. Aplikace nikdy nemohou získat vaši e-mailovou adresu či heslo.
+
+
+
+
Používání stránky dětmi
+
+
Pokud se tento server nachází v EU nebo EHP: Naše stránka, produkty a služby jsou všechny směřovány na lidi, kterým je alespoň 16 let. Pokud je vám méně než 16, dle požadavků nařízení GDPR (Obecné nařízení o ochě sobních údajů)
+
+
Pokud se tento server nachází v USA: Naše stránka, produkty a služby jsou všechny směřovány na lidi, kterým je alespoň 13 let. Pokud je vám méně než 13, dle požadavků zákona COPPA (Children's Online Privacy Protection Act) tuto stránku nepoužívejte.
+
+
Právní požadavky mohou být jiné, pokud se tento server nachází v jiné jurisdikci.
+
+
+
+
Změny v našich zásadách soukromí
+
+
Rozhodneme-li se naše zásady soukromí změnit, zveřejníme tyto změny na této stránce.
+
+
Tento dokument je dostupný pod licencí CC-BY-SA. Byl naposledy aktualizován 7 března 2018.
+
+
Původně adaptováno ze zásad soukromí Discourse.
+ title: Podmínky používání a zásady soukromí %{instance}
+ themes:
+ contrast: Vysoký kontrast
+ default: Mastodon
+ mastodon-light: Mastodon (světlý)
+ time:
+ formats:
+ default: "%d. %b %Y, %H:%M"
+ month: "%b %Y"
+ two_factor_authentication:
+ code_hint: Pro potvrzení zadejte kód vygenerovaný vaší autentikační aplikací
+ description_html: Povolíte-li
dvoufaktorové ověřování, budete při přihlášení potřebovat telefon, který vám vygeneruje přístupové tokeny, které musíte zadat.
+ disable: Zakázat
+ enable: Povolit
+ enabled: Dvoufaktorové ověřování je povoleno
+ enabled_success: Dvoufaktorové ověřování bylo úspěšně povoleno
+ generate_recovery_codes: Vygenerovat záložní kódy
+ instructions_html: "
Naskenujte tento QR kód Google Authenticatorem nebo jinou TOTP aplikací na vašem telefonu. Od teď bude tato aplikace generovat tokeny, které budete muset zadat při přihlášení."
+ lost_recovery_codes: Záložní kódy vám dovolí dostat se k vašemu účtu, pokud ztratíte telefon. Ztratíte-li záložní kódy, můžete je zde znovu vygenerovat. Vaše staré záložní kódy budou zneplatněny.
+ manual_instructions: 'Nemůžete-li oskenovat QR kód a je potřebovat ho zadat ručně, zde je tajemství v prostém textu:'
+ recovery_codes: Záložní kódy pro obnovu
+ recovery_codes_regenerated: Záložní kódy byly úspěšně znovu vygenerované
+ recovery_instructions_html: Ztratíte-li někdy přístup k vašemu telefonu, můžete k získání přístupu k účtu použít jeden ze záložních kódů.
Uchovávejte tyto kódy v bezpečí. Můžete si je například vytisknout a uložit je mezi jiné důležité dokumenty.
+ setup: Nastavit
+ wrong_code: Zadaný kód byl neplatný! Je serverový čas a čas na zařízení správný?
user_mailer:
+ backup_ready:
+ explanation: Vyžádal/a jste si úplnou zálohu svého účtu Mastodon. Nyní je připravena ke stažení!
+ subject: Váš archiv je připraven ke stažení
+ title: Stažení archivu
welcome:
+ edit_profile_action: Nastavit profil
+ edit_profile_step: Můžete si přizpůsobit svůj profil nahráním avataru a obrázku na hlavičce, změnou zobrazovaného jména a dalších. Chcete-li posoudit nové sledovatele předtím, než vás mohou sledovat, můžete svůj účet uzamknout.
+ explanation: Zde je pár tipů na začátek
+ final_action: Začněte přispívat
+ final_step: 'Začněte psát! I když nemáte sledovatele, mohou vaše zprávy vidět jiní lidé, například na místní časové ose a mezi hashtagy. Můžete se ostatním představit pomocí hashtagu #introductions.'
+ full_handle: Vaše celá adresa profilu
+ full_handle_hint: Tohle je, co byste řekl/a svým přátelům, aby vám mohli posílat zprávy nebo vás sledovat z jiné instance.
+ review_preferences_action: Změnit nastavení
+ review_preferences_step: Nezapomeňte si nastavit své volby, například jaké e-maily chcete přijímat či jak soukromé mají být vaše příspěvky ve výchozím stavu. Nemáte-li epilepsii, můžete si nastavit automatické přehrávání obrázků GIF.
+ subject: Vítejte na Mastodonu
+ tip_bridge_html: Pokud přicházíte z Twitteru, můžete najít vaše přátele na Mastodonu pomocí
mostové aplikace. Funguje ovšem pouze, pokud ji oni někdy také použili!
+ tip_federated_timeline: Federovaná časová osa je náhled celé sítě Mastodon. Zahrnuje ovšem pouze lidi, které sledují vaši sousedé, takže není úplná.
+ tip_following: Administrátora/y serveru sledujete automaticky. Chcete-li najít další zajímavé lidi, podívejte se na místní a federované časové osy.
+ tip_local_timeline: Místní časová osa je náhled lidí na %{instance}. Toto jsou vaši nejbližší sousedé!
+ tip_mobile_webapp: Pokud vám váš mobilní prohlížeč nabídne přidat si Mastodon na vaši domovskou obrazovku, můžete dostávat oznámení. V mnoha ohledech to funguje jako nativní aplikace!
tips: Tipy
title: Vítejte na palubě, %{name}!
users:
invalid_email: E-mailová adresa je neplatná
+ invalid_otp_token: Neplatný kód pro dvoufaktorovou autentikaci
+ otp_lost_help_html: Pokud jste ztratil/a přístup k oběma, můžete se spojit %{email}
+ seamless_external_login: Jste přihlášen/a přes externí službu, nastavení hesla a e-mailu proto nejsou dostupná.
signed_in_as: 'Přihlášen/a jako:'
diff --git a/config/locales/cy.yml b/config/locales/cy.yml
new file mode 100644
index 000000000..84e8d9e2b
--- /dev/null
+++ b/config/locales/cy.yml
@@ -0,0 +1,155 @@
+---
+cy:
+ about:
+ about_hashtag_html: Dyma dwtiau cyhoeddus wedi eu tagio gyda
#%{hashtag}. Gallwch ryngweithio gyda nhw os oes gennych gyfrif yn unrhywle yn y ffedysawd.
+ about_this: Ynghylch
+ administered_by: 'Gweinyddir gan:'
+ api: API
+ apps: Apiau symudol
+ contact: Cyswllt
+ documentation: Dogfennaeth
+ learn_more: Dysgu mwy
+ privacy_policy: Polisi preifatrwydd
+ source_code: Cod ffynhonnell
+ status_count_after:
+ one: statws
+ terms: Telerau Gwasanaeth
+ user_count_after:
+ one: defnyddiwr
+ other: defnyddiwyr
+ what_is_mastodon: Beth yw Mastodon?
+ accounts:
+ choices_html: 'Dewisiadau %{name}:'
+ follow: Dilynwch
+ followers:
+ one: Dilynwr
+ other: Dilynwyr
+ joined: Ymunodd %{date}
+ media: Cyfryngau
+ network_hidden: Nid yw'r wybodaeth hon ar gael
+ nothing_here: Does dim byd yma!
+ posts:
+ one: Twt
+ other: Twtiau
+ posts_tab_heading: Twtiau
+ roles:
+ admin: Gweinyddwr
+ bot: Bot
+ moderator: Safonwr
+ unfollow: Dad-ddilyn
+ admin:
+ account_moderation_notes:
+ create: Gadael nodyn
+ delete: Dileu
+ accounts:
+ are_you_sure: Ydych chi'n siŵr?
+ avatar: Afatar
+ by_domain: Parth
+ change_email:
+ current_email: E-bost Cyfredol
+ label: Newid E-bost
+ new_email: E-bost Newydd
+ submit: Newid E-bost
+ title: Newid E-bost i %{username}
+ confirm: Cadarnhau
+ confirmed: Cadarnhawyd
+ disable: Diffodd
+ domain: Parth
+ edit: Golygu
+ email: E-bost
+ email_status: Statws E-bost
+ enable: Galluogi
+ feed_url: Ffrwd URL
+ inbox_url: URL Mewnflwch
+ ip: IP
+ location:
+ all: Popeth
+ local: Leol
+ remote: Pell
+ title: Lleoliad
+ media_attachments: Atodiadau
+ moderation:
+ all: Popeth
+ title: Cymedroli
+ outbox_url: URL blwch allan
+ profile_url: URL proffil
+ public: Cyhoeddus
+ reset: Ailosod
+ reset_password: Newid cyfrinair
+ roles:
+ user: Defnyddiwr
+ search: Chwilio
+ show:
+ report: adrodd
+ subscribe: Tanysgrifio
+ title: Cyfrifon
+ username: Enw defnyddiwr
+ web: Gwe
+ custom_emojis:
+ by_domain: Parth
+ copy: Copïo
+ delete: Dileu
+ enable: Galluogi
+ listed: Rhestredig
+ upload: Lanlwytho
+ dashboard:
+ config: Cyfluniad
+ feature_registrations: Cofrestriadau
+ features: Nodweddion
+ software: Meddalwedd
+ title: Dangosfwrdd
+ trends: Tueddiadau
+ instances:
+ domain_name: Parth
+ settings:
+ contact_information:
+ email: E-bost busnes
+ auth:
+ change_password: Cyfrinair
+ authorize_follow:
+ follow: Dilynwch
+ title: Dilynwch %{acct}
+ invites:
+ expires_in:
+ '86400': 1 dydd
+ max_uses_prompt: Dim terfyn
+ table:
+ uses: Defnyddiau
+ migrations:
+ proceed: Cadw
+ moderation:
+ title: Cymedroli
+ notification_mailer:
+ favourite:
+ title: Ffefryn newydd
+ mention:
+ action: Ateb
+ pagination:
+ next: Nesaf
+ prev: Blaenorol
+ preferences:
+ languages: Ieithoedd
+ other: Arall
+ web: Gwe
+ remote_unfollow:
+ error: Gwall
+ title: Teitl
+ sessions:
+ browser: Porwr
+ browsers:
+ alipay: ''
+ blackberry: ''
+ current_session: Sesiwn cyfredol
+ description: "%{browser} ar %{platform}"
+ title: Sesiynau
+ themes:
+ contrast: Cyferbyniad uchel
+ default: ''
+ mastodon-light: Mastodon (golau)
+ time:
+ formats:
+ default: "%b %d, %Y, %H:%M"
+ month: "%b %Y"
+ user_mailer:
+ welcome:
+ subject: Croeso i Mastodon
diff --git a/config/locales/da.yml b/config/locales/da.yml
index 0e3da55f1..e469fd3c0 100644
--- a/config/locales/da.yml
+++ b/config/locales/da.yml
@@ -5,13 +5,13 @@ da:
about_mastodon_html: Mastodon er et socialt netværk der er baseret på åbne web protokoller og frit, open-source source software. Der er decentraliseret ligesom e-mail tjenester.
about_this: Om
administered_by: 'Administreret af:'
+ api: API
+ apps: Apps til mobilen
closed_registrations: Registreringer er på nuværrende tidspunkt lukkede for denne instans. Du kan dog finde andre instanser du kan oprette dig på og få adgang til det samme netværk derfra.
contact: Kontakt
contact_missing: Ikke sat
contact_unavailable: Ikke tilgængeligt
- description_headline: Hvad er %{domain}?
- domain_count_after: andre instancer
- domain_count_before: Forbundet til
+ documentation: Dokumentation
extended_description_html: |
Et godt sted for regler
Den udvidede beskrivelse er endnu ikke blevet opsat.
@@ -27,27 +27,41 @@ da:
generic_description: "%{domain} er en server i netværket"
hosted_on: Mostodon hostet på %{domain}
learn_more: Lær mere
- other_instances: Liste over instancer
+ other_instances: Liste over instanser
+ privacy_policy: Privatlivspolitik
source_code: Kildekode
- status_count_after: statusser
+ status_count_after:
+ one: status
+ other: statusser
status_count_before: Som har skrevet
- user_count_after: brugere
+ terms: Vilkår for service
+ user_count_after:
+ one: bruger
+ other: brugere
user_count_before: Hjem til
what_is_mastodon: Hvad er Mastodon?
accounts:
+ choices_html: "%{name}s valg:"
follow: Følg
- followers: Følgere
+ followers:
+ one: Følger
+ other: Følgere
following: Følger
+ joined: Tilmeldt den %{date}
media: Multimedia
moved_html: "%{name} er flyttet til %{new_profile_link}:"
network_hidden: Denne information er ikke tilgængelig
nothing_here: Der er intet her!
- people_followed_by: Folk some %{name} følger
+ people_followed_by: Folk som %{name} følger
people_who_follow: Folk der følger %{name}
- posts: Dyt
- posts_with_replies: Toots og svar
- remote_follow: Følg fra andre instancer
- reserved_username: Brugernavnet er reserveret
+ pin_errors:
+ following: Du er nødt til at følge den person du ønsker at støtte
+ posts:
+ one: Trut
+ other: Trut
+ posts_tab_heading: Trut
+ posts_with_replies: Trut og svar
+ reserved_username: Brugernavnet er allerede taget
roles:
admin: Administrator
bot: Robot
@@ -55,7 +69,7 @@ da:
unfollow: Følg ikke længere
admin:
account_moderation_notes:
- create: Læg en kommentar
+ create: Læg en note
created_msg: Moderator notat succesfuldt oprettet!
delete: Slet
destroyed_msg: Moderator notat succesfuldt destrueret!
@@ -137,8 +151,8 @@ da:
search: Søg
shared_inbox_url: Link til delt indbakke
show:
- created_reports: Rapporter oprettet af denne konto
- report: rapporter
+ created_reports: Anmeldelser oprettet af denne konto
+ report: anmeld
targeted_reports: Anmeldelser fra denne konto
silence: Dæmp
statuses: Statusser
@@ -180,6 +194,7 @@ da:
unsuspend_account: "%{name} fjernede udelukkelsen fra %{target}s konto"
update_custom_emoji: "%{name} opdaterede humørikonet %{target}"
update_status: "%{name} opdaterede status for %{target}"
+ deleted_status: "(slettet status)"
title: Revisionslog
custom_emojis:
by_domain: Domæne
@@ -206,6 +221,27 @@ da:
update_failed_msg: Kunne ikke opdatere det humørikon
updated_msg: Humørikon succesfuldt opdateret!
upload: Læg op
+ dashboard:
+ backlog: ophobede jobs
+ config: Konfiguration
+ feature_deletions: Konto sletninger
+ feature_invites: Invitations links
+ feature_registrations: Registreringer
+ feature_relay: Føderations relæ
+ features: Funktioner
+ hidden_service: Føderation med skjulte tjenester
+ open_reports: åbne anmeldelser
+ recent_users: Seneste brugere
+ search: Søg på fuld tekst
+ single_user_mode: Enkelt bruger mode
+ software: Software
+ space: Brugt lagerplads
+ title: Betjeningspanel
+ total_users: samlede antal brugere
+ trends: Tendenser
+ week_interactions: interaktioner denne uge
+ week_users_active: aktive denne uge
+ week_users_new: brugere denne uge
domain_blocks:
add_new: Tilføj ny
created_msg: Domæne blokade bliver nu behandlet
@@ -213,7 +249,9 @@ da:
domain: Domæne
new:
create: Opret blokering
+ hint: Domæne blokeringen vil ikke forhindre oprettelse af konto opslag i databasen, men vil retroaktivt og automatisk benytte specifikke moderator metoder på disse konti.
severity:
+ desc_html: "
Dæmp vil gøre denne kontos opslag usynlige til alle der ikke følger dem.
Udeluk vil fjerne al kontoens indhold, medie og profildata. Brug
Ingen hvis du bare ønsker at afvise medie filer."
noop: Ingen
silence: Dæmp
suspend: Udeluk
@@ -238,10 +276,13 @@ da:
undo: Fortryd
email_domain_blocks:
add_new: Tilføj ny
+ created_msg: Tilføjede succesfuldt email domænet til sortliste
delete: Slet
+ destroyed_msg: Fjernede succesfuldt email domænet fra sortliste
domain: Domæne
new:
create: Tilføj domæne
+ title: Ny email blokade opslag
title: Email sortliste
instances:
account_count: Kendte konti
@@ -250,12 +291,26 @@ da:
search: Søg
title: Kendte instanser
invites:
+ deactivate_all: Deaktiver alle
filter:
all: Alle
available: Tilgængelig
expired: Udløbet
title: Filtre
title: Invitationer
+ relays:
+ add_new: Tilføj nyt relay
+ description_html: Et
federation relay er en mellemleds server der udveksler store mængder af offentlige trut mellem servere der abonnerer på og offentliggør til det.
Det kan hjælpe små og mellemstore servere opdage indhold fra fediverset, hvilket der ellers ville kræve at lokale brugere manuelt følger andre folk på fjerne servere.
+ enable_hint: Når dette er aktiveret, vil serveren abonnere på alle offentlige trut fra dette relay, og vil begynde at sende offentlige trut fra denne server dertil.
+ inbox_url: Link til relay
+ pending: Venter på godkendelse fra relæet
+ save_and_enable: Gem og aktiver
+ setup: Opsæt en videresendelses forbindelse
+ status: Status
+ title: Videresendelser
+ report_notes:
+ created_msg: Anmeldelse note blev oprettet!
+ destroyed_msg: Anmeldelse note blev slettet!
reports:
account:
note: notat
@@ -288,16 +343,36 @@ da:
suspend_account: Udeluk konto
target: Mål
title: Anmeldelser
+ unassign: Utildel
unresolved: Uløst
updated_at: Opdateret
view: Se
settings:
+ activity_api_enabled:
+ desc_html: Antal af lokalt opslåede statusser, aktive brugere, og nye registreringer i ugentlige opdelinger
+ title: Offentliggør samlede statistikker vedrørende brugeraktivitet
+ bootstrap_timeline_accounts:
+ desc_html: Opdel flere brugernavne ved hjælp af komma. Kun lokale og ulåste konti vil virke. Standard hvis tom er alle lokale administratorer.
+ title: Standard følger for nye brugere
contact_information:
email: Forretnings email
username: Kontakt brugernavn
+ custom_css:
+ desc_html: Ændre udseendet med CSS indlæst på hver side
+ title: Brugerdefineret CSS
hero:
+ desc_html: Vist på forsiden. Mindst 600x100px anbefales. Hvis ikke sat, vil dette falde tilbage til billedet for instansen
title: Billede af helt
+ peers_api_enabled:
+ desc_html: Domæne navne denne instans er stødt på i fediverset
+ title: Udgiv liste over opdagede instanser
+ preview_sensitive_media:
+ desc_html: Forhåndsvisninger af links på andre websider vil vise et miniaturebillede selv hvis mediet er markeret som følsomt
+ title: Vis følsomt medie i OpenGraph forhåndsvisninger
registrations:
+ closed_message:
+ desc_html: Vist på forsiden når registreringer er lukkede. Du kan bruge HTML tags
+ title: Besked for lukkede registreringer
deletion:
desc_html: Tillad alle at slette deres konto
title: Åben konto sletning
@@ -307,14 +382,31 @@ da:
open:
desc_html: Tillad alle at oprette en konto
title: Åben registrering
+ show_known_fediverse_at_about_page:
+ desc_html: Når slået til, vil det vise trut fra hele det kendte fedivers på forhåndsvisning. Ellers vil det kun vise lokale trut.
+ title: Vis kendte fedivers på tidslinje forhåndsvisning
show_staff_badge:
desc_html: Vis personale emblem på en brugerside
title: Vis personale emblem
site_description:
+ desc_html: Introduktions afsnit på forsiden. Beskriv hvad der gør denne Mastodon server speciel og alt andet vigtigt. Du kan bruge HTML tags, især
<a>
og
<em>
.
title: Beskrivelse af instans
+ site_description_extended:
+ desc_html: Et godt sted for placering af adfærdskodes, regler, retningslinjer og andre ting der gør din instans unik. Du kan bruge HTML tags
+ title: Brugerdefineret udvidet information
+ site_short_description:
+ desc_html: Vist på sidelinjen og meta tags. Beskriv hvad Mastodon er og hvad der gør denne server speciel i et enkelt afsnit. Hvis tomt, vil standard være beskrivelsen af instansen.
+ title: Kort beskrivelse af instans
+ site_terms:
+ desc_html: Du kan skrive din egen privatlivpolitik, servicevilkår, eller lignende. Du kan bruge HTML tags
+ title: Brugerdefineret servicevilkår
site_title: Navn på instans
+ thumbnail:
+ desc_html: Brugt til forhåndsvisninger via OpenGraph og API. 1200x630px anbefales
+ title: Miniaturebillede for instans
timeline_preview:
desc_html: Vis offentlig tidslinje på landingssiden
+ title: Tidslinje forhåndsvisning
title: Indstillinger for side
statuses:
back_to_account: Tilbage til kontosiden
@@ -326,46 +418,70 @@ da:
media:
title: Multimedier
no_media: Ingen multimedier
+ no_status_selected: Ingen statusser blev ændret eller ingen blev valgt
title: Konto statusser
with_media: Med multimedier
subscriptions:
+ callback_url: Callback-URL
confirmed: Bekræftet
expires_in: Udløber om
last_delivery: Sidste levering
+ title: Websub
topic: Emne
+ suspensions:
+ bad_acct_msg: Bekræftelsværdien stemte ikke overens. Er du ved at udelukke den rigtige konto?
+ hint_html: 'For at bekræfte udelukkelsen af kontoen, indtast venligst %{value} i nedenstående felt:'
+ proceed: Fortsæt
+ title: Udeluk %{acct}
+ warning_html: 'Udelukkelse af denne konto vil
uigenkaldeligt slette al data fra denne konto, hvilket indebærer:'
title: Administration
admin_mailer:
new_report:
body: "%{reporter} har anmeldt %{target}"
body_remote: Nogen fra %{domain} har anmeldt %{target}
+ subject: Ny anmeldelse for %{instance} (#%{id})
application_mailer:
- notification_preferences: Ændre email indstillinger
+ notification_preferences: Ændre email præferencer
salutation: "%{name},"
- settings: 'Ændre email indstillinger: %{link}'
+ settings: 'Ændre email præferencer: %{link}'
view: 'Se:'
view_profile: Se profil
view_status: Se status
applications:
+ created: Applikation blev oprettet
+ destroyed: Applikation er blevet slettet
invalid_url: Det angivne URL er ugyldigt
+ regenerate_token: Regenerer adgangs token
+ token_regenerated: Adgangs token blev regenereret
warning: Vær meget forsigtig med disse data. Del dem aldrig med nogen!
+ your_token: Din adgangs token
auth:
+ agreement_html: Ved at oprette dig erklærer du dig enig i at følge
instanses regler og
vores servicevilkår.
change_password: Kodeord
confirm_email: Bekræft email
delete_account: Slet konto
+ delete_account_html: Hvis du ønsker at slette din konto, kan du
gøre det her. Du vil blive bedt om bekræftelse.
didnt_get_confirmation: Har du endnu ikke modtaget instrukser for bekræftelse?
forgot_password: Glemt dit kodeord?
+ invalid_reset_password_token: Adgangskode nulstillings token er ugyldig eller udløbet. Anmod venligst om en ny.
login: Log ind
logout: Log ud
migrate_account: Flyt til en anden konto
+ migrate_account_html: Hvis du ønsker at omdirigere denne konto til en anden, kan du
gøre det her.
or: eller
or_log_in_with: Eller log in med
+ providers:
+ cas: CAS
+ saml: SAML
register: Opret dig
register_elsewhere: Opret dig på en anden server
+ resend_confirmation: Gensend bekræftelses instrukser
reset_password: Nulstil kodeord
security: Sikkerhed
set_new_password: Sæt et nyt kodeord
authorize_follow:
already_following: Du følger allerede denne konto
+ error: Der opstod desværre en fejl under søgningen af denne fjerne konto
follow: Følg
follow_request: 'Du har anmodet om at følge:'
following: 'Succes! Du følger nu:'
@@ -378,31 +494,49 @@ da:
distance_in_words:
about_x_hours: "%{count}t"
about_x_months: "%{count} måneder"
+ about_x_years: "%{count}år"
+ almost_x_years: "%{count}år"
half_a_minute: Lige nu
+ less_than_x_minutes: "%{count}m"
less_than_x_seconds: Lige nu
+ over_x_years: "%{count}år"
+ x_days: "%{count}d"
+ x_minutes: "%{count}m"
+ x_months: "%{count}md"
x_seconds: "%{count}s"
deletes:
bad_password_msg: Godt forsøg, hackere! Forkert kodeord
confirm_password: Indtast dit nuværende kodeord for at bekræfte din identitet
+ description_html: Dette vil
permanent, uigenkaldeligt fjerne indhold fra din konto samt deaktivere den. Dit brugernavn vil forblive reserveret for at forhindre fremtidige efterligninger.
proceed: Slet konto
success_msg: Din konto er nu blevet slettet
+ warning_html: Kun sletning af indhold fra denne specifikke instans er garanteret. Indhold der er blevet delt rundt omkring vil sandsynligvis efterlade spor. Offline servere og servere der ikke længere abonnerer på dine opdateringer vil ikke opdatere deres databaser.
+ warning_title: Tilgængelighed af delt indhold
errors:
'403': Du har ikke tilladelse til at se denne side.
'404': Den side du leder efter findes ikke.
'410': Den side du leder efter findes ikke mere.
'422':
+ content: Sikkerhedsbekræftelse mislykkedes. Blokerer du cookies?
title: Sikkerheds godkendelse mislykkedes
+ '429': Droslet
'500':
content: Beklager men der gik noget galt i vores ende.
title: Siden er ikke korrekt
+ noscript_html: For at bruge Mastodon web applikationen, aktiver JavaScript. Alternativt kan du prøve en af disse
apps til Mastodon for din platform.
exports:
archive_takeout:
date: Dato
download: Hent dit arkiv
+ hint_html: Du kan anmode om et arkiv af dine
trut og oplagt medie. Den eksporterede data vil være i ActivityPub formattet, læseligt af enhvert kompatibel program. Du kan anmode om et arkiv en gang om ugen.
+ in_progress: Udarbejder dit arkiv...
+ request: Anmod om dit arkiv
size: Størrelse
blocks: Du blokerer
+ csv: CSV
follows: Du følger
mutes: Du dæmper
+ storage: Medie lager
filters:
contexts:
home: Hjemme tidslinje
@@ -411,6 +545,9 @@ da:
thread: Samtaler
edit:
title: Rediger filter
+ errors:
+ invalid_context: Ingen eller ugyldig kontekst angivet
+ invalid_irreversible: Uigenkaldelig filtrering virker kun med hjem eller notifikations kontekst
index:
delete: Slet
title: Filtrer
@@ -418,20 +555,35 @@ da:
title: Tilføj nyt filter
followers:
domain: Domæne
+ explanation_html: Hvis du vil sikre dig privatliv over dine statusser, skal du være klar over hvem der følger dig.
Dine private statusser leveres til alle instanser som du har følger fra. Det kan være en ide at gennemgå dem, og fjerne følgere hvis du ikke føler dit privatliv respekteres af personalet eller software fra disse instanser.
followers_count: Antal følgere
lock_link: Lås din konto
purge: Fjern fra følgere
+ success:
+ one: I gang med at soft-blokere følgere fra et domæne...
+ other: I gang med at soft-blokere følgere fra %{count} domæner...
+ true_privacy_html: Husk på, at
sand privatliv kan kun opnås via end-to-end kryptering.
+ unlocked_warning_html: Alle kan følge dig med det samme for at se dine private statusser. %{lock_link} for at være i stand til at gennemse og afvise følgere.
unlocked_warning_title: Din konto er ikke låst
+ footer:
+ developers: Udviklere
+ more: Mere…
+ resources: Ressourcer
generic:
changes_saved_msg: Ændringerne blev gemt!
- powered_by: drevet af %{link}
save_changes: Gem ændringer
+ validation_errors:
+ one: Der er noget der ikke er helt som det bør være! Tag lige et kig på følgende fejl forneden
+ other: Der er noget der ikke er helt som det bør være! Tag lige et kig på følgende %{count} fejl forneden
imports:
+ preface: Du kan importere data du har eksporteret fra en anden instans, så som en liste over folk du følger eller blokerer.
+ success: Dine data blev succesfuldt uploaded og vil nu blive behandlet hurtigst muligt
types:
blocking: Blokeringsliste
following: Følgningsliste
muting: Liste over dæmpninger
upload: Læg op
+ in_memoriam_html: Til minde om.
invites:
delete: Deaktiver
expired: Udløbet
@@ -445,28 +597,54 @@ da:
expires_in_prompt: Aldrig
generate: Generer
invited_by: 'Du er blevet inviteret af:'
+ max_uses:
+ one: 1 benyttelse
+ other: "%{count} benyttelser"
max_uses_prompt: Ubegrænset
+ prompt: Generer og del links med andre for at give dem adgang til denne instans
table:
expires_at: Udløber
+ uses: Benyttelser
title: Inviter folk
+ lists:
+ errors:
+ limit: Du har nået det højeste antal lister
media_attachments:
validations:
+ images_and_video: Kan ikke vedhæfte en video til en status der allerede har billeder
too_many: Kan ikke vedhæfte mere en 4 filer
migrations:
acct: username@domain af den nye konto
currently_redirecting: 'Din profil er sat til at henvise til:'
proceed: Gem
+ updated_msg: Dine konti migrærings indstillinger blev opdateret!
moderation:
title: Moderatering
notification_mailer:
digest:
action: Se alle notifikationer
+ body: Her er en kort gennemgang af de beskeder du gik glip af siden dit sidste besøg den %{since}
mention: "%{name} nævnte dig i:"
+ new_followers_summary:
+ one: Du har også fået dig en ny følger mens du var væk! Sådan!
+ other: Du har også fået %{count} nye følgere mens du var væk! Fantastisk!
+ subject:
+ one: "1 ny notifikation siden du sidst var her \U0001F418"
+ other: "%{count} nye notifikationer siden du sidst var her \U0001F418"
title: Mens du var væk...
+ favourite:
+ body: 'Din status blev favoriseret af %{name}:'
+ subject: "%{name} favoriserede din status"
+ title: Ny favorit
follow:
body: "%{name} følger dig nu!"
subject: "%{name} følger dig nu"
title: Ny følger
+ follow_request:
+ action: Håndter følgeranmodninger
+ body: "%{name} har anmodet om at følge dig"
+ subject: 'Følger afventer: %{name}'
+ title: Ny følgeranmodning
mention:
action: Svar
body: 'Du blev nævnt af %{name} i:'
@@ -479,49 +657,93 @@ da:
number:
human:
decimal_units:
+ format: "%n%u"
units:
billion: mia.
million: mio.
+ quadrillion: Q
+ thousand: K
+ trillion: T
+ unit: "\n"
pagination:
newer: Nyere
next: Næste
older: Ældre
prev: Forrige
+ truncate: "...…"
preferences:
languages: Sprog
other: Andet
+ publishing: Offentligører
web: Web
+ remote_follow:
+ acct: Indtast dit brugernavn@domæne du vil handle fra
+ missing_resource: Kunne ikke finde det påkrævede omdirigerings link for din konto
+ no_account_html: Har du ikke en konto? Du kan
oprette dig her
+ proceed: Fortsæt for at følge
+ prompt: 'Du er ved at følge:'
+ remote_interaction:
+ proceed: Fortsæt for at interagere
+ prompt: 'Du ønsker at interagere med dette trut:'
remote_unfollow:
error: Fejl
title: Titel
unfollowed: Følger ikke længere
sessions:
+ activity: Sidste aktivitet
+ browser: Browser
browsers:
+ alipay: Ali-pay
blackberry: Blackberry OS
chrome: Google Chrome
+ edge: Microsoft edge
+ electron: Elektron
firefox: Mozilla Firefox
generic: Ukendt browser
ie: IE
+ micro_messenger: Micromessenger
+ nokia: Nokia S40 ovi browser
+ opera: Opera browser
+ otter: Odder
+ phantom_js: FantomJS
+ qq: QQ browser
+ safari: Apple Safari
+ uc_browser: UCbrowser
+ weibo: Weibo browser
+ current_session: Nuværrende session
description: "%{browser} på %{platform}"
+ explanation: Disse er de web browsere der på nuværende tidspunkt er logget ind på din Mastodon konto.
ip: IP
platforms:
+ adobe_air: Adobe air
android: Android
+ blackberry: Blackberry OS
+ chrome_os: Chromeos
+ firefox_os: Firefox Os
ios: iOS
linux: Linux
mac: Mac.
other: ukendt platform
+ windows: Microsoft windows
+ windows_mobile: Windows mobil
+ windows_phone: Windows fon
+ revoke: Tilbagekald
+ revoke_success: Sessionen blev tilbagekaldt
+ title: Sessioner
settings:
authorized_apps: Godkendte apps
back: Tilbage til Mastodon
delete: Sletning af konto
development: Udvikling
edit_profile: Rediger profil
+ export: Data exportering
followers: Godkendte følgere
import: Importer
migrate: Konto migrering
notifications: Notifikationer
- preferences: Indstillinger
+ preferences: Præferencer
settings: Indstillinger
+ two_factor_authentication: To-faktor godkendelse
your_apps: Dine applikationer
statuses:
attached:
@@ -532,11 +754,21 @@ da:
video:
one: "%{count} video"
other: "%{count} videoer"
+ boosted_from_html: Fremhævet fra %{acct_link}
content_warning: 'Advarsel om indhold: %{warning}'
+ disallowed_hashtags:
+ one: 'indeholdte et ikke tilladt hashtag: %{tags}'
+ other: 'indeholdte de ikke tilladte hashtags: %{tags}'
language_detection: Opfang automatisk sprog
+ open_in_web: Åbn i browser
+ over_character_limit: grænsen på %{max} tegn er overskredet
pin_errors:
- ownership: Dun kan ikke fastgøre en anden persons toot
+ limit: Du har allerede fastgjort det maksimale antal trut
+ ownership: Du kan ikke fastgøre en anden persons trut
+ private: Ikke offentlige trut kan ikke blive fastgjort
+ reblog: Fremhævede trut kan ikke fastgøres
show_more: Vis mere
+ sign_in_to_participate: Log ind for at deltage i samtalen
title: '%{name}: "%{quote}"'
visibilities:
private: Kun-følgere
@@ -544,24 +776,36 @@ da:
public: Offentlig
public_long: Alle kan se
unlisted: Ikke listet
+ unlisted_long: Alle kan se, men vil ikke være listet på offentlige tidslinjer
stream_entries:
- click_to_show: Tryk for at vise
- pinned: Fastgjort toot
+ pinned: Fastgjort trut
+ reblogged: fremhævede
sensitive_content: Følsomt indhold
+ terms:
+ body_html: "
Privatlivspolitik
\n
Hvilke information indsamler vi?
\n\n
\n - Grundlæggende kontoinformation : Hvis du registrerer dig på denne server, bliver du måske bedt om at indtaste et brugernavn, en e-mail-adresse og et kodeord. Du kan også indtaste yderligere profiloplysninger, såsom et visningsnavn og biografi, og uploade et profilbillede og headerbillede. Brugernavnet, visningsnavnet, biografien, profilbilledet og hovedbilledet vises altid offentligt.
\n - Stillinger, følgende og andre offentlige oplysninger : Listen over personer du følger er offentliggjort, det samme gælder for dine tilhængere. Når du sender en besked, gemmes datoen og klokkeslættet såvel som det program, du sendte beskeden fra. Meddelelser kan indeholde medievedhæftninger, som f.eks. Billeder og videoer. Offentlige og unoterede indlæg er offentligt tilgængelige. Når du har et indlæg på din profil, er det også offentligt tilgængelig information. Dine indlæg leveres til dine tilhængere, i nogle tilfælde betyder det, at de leveres til forskellige servere, og der gemmes kopier der. Når du sletter indlæg, leveres det også til dine tilhængere. Handlingen med reblogging eller favorisering af et andet indlæg er altid offentligt.
\n - Direkte og efterfølger-kun indlæg em>: Alle indlæg gemmes og behandles på serveren. Følgere-kun indlæg leveres til dine tilhængere og brugere, der er nævnt i dem, og direkte indlæg leveres kun til brugere nævnt i dem. I nogle tilfælde betyder det, at de leveres til forskellige servere, og der gemmes kopier der. Vi gør en god tro for at begrænse adgangen til disse stillinger kun til autoriserede personer, men andre servere kan undlade at gøre det. Derfor er det vigtigt at gennemgå de servere, dine tilhængere tilhører. Du kan skifte en mulighed for at godkende og afvise nye følgere manuelt i indstillingerne. Vær opmærksom på, at operatørerne af serveren og enhver modtagende server muligvis kan se sådanne meddelelser , og at modtagere muligvis skærmbilleder, kopierer eller på anden vis deler dem igen. Del ikke nogen farlig information over Mastodon.
\n - IP'er og andre metadata : Når du logger ind, registrerer vi den IP-adresse, du logger ind fra, samt navnet på din browser-applikation. Alle indloggede sessioner er tilgængelige til din anmeldelse og tilbagekaldelse i indstillingerne. Den seneste anvendte IP-adresse gemmes i op til 12 måneder. Vi kan også beholde serverlogfiler, som indeholder IP-adressen til hver anmodning til vores server.
\n
\n\n
\n\n
Hvad bruger vi dine oplysninger til?
\n\n
Enhver af de oplysninger, vi indsamler fra dig, kan bruges på følgende måder:
\n\n
\n - At levere kernen funktionalitet Mastodon. Du kan kun interagere med andres indhold og indsende dit eget indhold, når du er logget ind. Du kan f.eks. Følge andre personer for at se deres kombinerede indlæg på din egen personlige tidslinje.
\n - For at hjælpe moderering af samfundet, f.eks. sammenligning af din IP-adresse med andre kendte, for at bestemme forbud mod unddragelse eller andre overtrædelser.
\n - Den e-mail-adresse, du angiver, kan bruges til at sende dig oplysninger, meddelelser om andre personer, der interagerer med dit indhold eller sender dig beskeder, og for at svare på henvendelser og / eller andre forespørgsler eller spørgsmål.
\n
\n\n
\n\n
Hvordan beskytter vi dine oplysninger?
\n\n
Vi implementerer en række sikkerhedsforanstaltninger for at opretholde sikkerheden for dine personlige oplysninger, når du indtaster, indsender eller har adgang til dine personlige oplysninger. Bl.a. er din browsersession samt trafikken mellem dine applikationer og API'en sikret med SSL, og din adgangskode er hashed ved hjælp af en stærk envejsalgoritme. Du kan muligvis aktivere tofaktors godkendelse for yderligere at sikre adgang til din konto.
\n\n
\n\n
Hvad er vores data retention politik?
\n\n
Vi vil gøre en god tro indsats for at:
\n\n
\n - Behold serverlogfiler, der indeholder IP-adressen på alle anmodninger til denne server, for så vidt som sådanne logfiler holdes, ikke mere end 90 dage.
\n - Behold de IP-adresser, der er forbundet med registrerede brugere, ikke mere end 12 måneder.
\n
\n\n
Du kan anmode om og downloade et arkiv af dit indhold, herunder dine indlæg, medievedhæftninger, profilbillede og headerbillede.
\n\n
Du kan til enhver tid slette din konto.
\n\n
\n\n
Bruger vi cookies?
\n\n
Ja. Cookies er små filer, som et websted eller dets tjenesteudbyder overfører til din computers harddisk via din webbrowser (hvis du tillader det). Disse cookies gør det muligt for webstedet at genkende din browser og, hvis du har en registreret konto, associerer den med din registrerede konto.
\n\n
Vi bruger cookies til at forstå og gemme dine præferencer til fremtidige besøg.
\n\n
\n\n
Viser vi nogen information til eksterne parter?
\n\n
Vi sælger ikke, handler eller på anden måde overfører dine personlige identificerbare oplysninger til eksterne parter. Dette omfatter ikke tillid til tredjeparter, der hjælper os med at drive vores hjemmeside, udføre vores forretning eller servicere dig, så længe parterne er enige om at holde disse oplysninger fortrolige. Vi kan også frigive dine oplysninger, når vi mener, at udgivelsen er hensigtsmæssig for at overholde loven, håndhæve vores webstedspolitikker eller beskytte vores eller andre rettigheder, ejendom eller sikkerhed.
\n\n
Dit offentlige indhold kan downloades af andre servere i netværket. Dine offentlige og efterfølger-kun indlæg leveres til de servere, hvor dine tilhængere er bosat, og direkte meddelelser leveres til modtagerens servere, for så vidt som disse tilhængere eller modtagere opholder sig på en anden server end dette.
\n\n
Når du autoriserer et program til at bruge din konto, afhænger det af omfanget af tilladelser, du godkender, det kan få adgang til dine offentlige profiloplysninger, din følgende liste, dine tilhængere, dine lister, alle dine indlæg og dine favoritter. Applikationer kan aldrig få adgang til din e-mail-adresse eller adgangskode.
\n\n
\n\n
Bebyggelse af børn
\n\n
Hvis denne server er i EU eller EØS: Vores websted, produkter og tjenester er alle rettet mod personer, der er mindst 16 år gamle. Hvis du er under 16 år, skal du ikke bruge dette websted efter kravene i GDPR ( Generel databeskyttelsesforordning ). .
\n\n
Hvis denne server er i USA: Vores websted, produkter og tjenester er alle rettet mod personer, der er mindst 13 år. Hvis du er under 13 år, skal du ikke bruge kravene i COPPA ( Børns online beskyttelse af personlige oplysninger ) dette websted.
\n\n
Lovkrav kan være anderledes, hvis denne server er i en anden jurisdiktion.
\n\n
\n\n
Ændringer i vores privatlivspolitik
\n\n
Hvis vi beslutter os for at ændre vores privatlivspolitik, vil vi sende disse ændringer på denne side.
\n\n
Dette dokument er CC-BY-SA. Det blev senest opdateret 7. marts 2018.
\n\n
Oprindelig tilpasset fra Discourse privacy policy .
\n"
+ title: Vilkår og privatlivpolitik for %{instance}
themes:
contrast: Høj kontrast
- default: Mastodon
+ default: Mastodont
mastodon-light: Mastodon (lys)
+ time:
+ formats:
+ default: "%b %d, %Y, %H:%M"
+ month: "%b %Y"
two_factor_authentication:
code_hint: Indtast koden der er genereret af din app for at bekræfte
+ description_html: Hvis du aktiverer
to-faktor godkendelse, vil du være nødt til at være i besiddelse af din telefon, der genererer tokens som du skal indtaste, når du logger ind.
disable: Deaktiver
enable: Aktiver
enabled: To-faktor godkendelse er aktiveret
enabled_success: To-faktor godkendelse succesfuldt aktiveret
generate_recovery_codes: Generer gendannelseskoder
+ instructions_html: "
Scan denne QR kode i Google Autehnticator eller lignende TOTP app på din telefon. Fra nu af vil den app generere koder som du vil være nødt til at indtaste når du logger ind."
+ lost_recovery_codes: Gendannelseskoder vil lade dig få adgang til din konto hvis du mister din telefon. Hvis du har mistet dine gendannelseskoder, kan du regenerere dem her. Dine gamle gendannelseskoder vil blive ugyldige.
manual_instructions: 'Hvis du ikke kan scanne QR koden er er nødt til at skrive koden ind manuelt, kan er din almindelig tekst secret:'
recovery_codes: Reserve koder
recovery_codes_regenerated: Reserve koder blev succesfuldt regenereret
+ recovery_instructions_html: Hvis du nogensinde mister adgang til din telefon, kan du bruge en af genoprettelses koderne forneden for at få adgang til din konto.
Gem gendannelses koderne et sikkert sted. Foreksempel kan du printe dem ud og gemme dem sammen med andre vigtige dokumenter.
setup: Sæt op
wrong_code: Den indtastede kode var ugyldig! Er serverens tid og enhedens tid korrekte?
user_mailer:
@@ -571,12 +815,17 @@ da:
title: Udpluk af arkiv
welcome:
edit_profile_action: Opsæt profil
+ edit_profile_step: Du kan skræddersy din profil ved at uploade et profilbillede, overskrift, ændre dit visningsnavn og mere. Hvis du kunne tænke dig at gennemse nye følgere før de må følge dig, kan du låse din konto.
explanation: Her er nogle råd til at starte med
final_action: Kom igang med at poste
+ final_step: 'Start med at skrive opslag! Selv uden følgere vil dine offentlige beskeder kunne ses af andre, foreksempel på den lokale tidslinje og i hashtags. Måske kunne du tænke dig at introducere dig selv på #introductions hashtagget.'
full_handle: Dit fulde brugernavn
full_handle_hint: Dette er hvad du vil fortælle dine venner så de kan sende dig beskeder eller følge dig fra andre instanser.
review_preferences_action: Ændre præferencer
+ review_preferences_step: Vær sikker på at sætte dine præferencer, så som hvilke emails du kunne tænke dig at modtage, eller hvilket niveau af privatliv der skal være standard for dine opslag. Hvis du kunne tænke dig ikke at blive køresyg, kan du vælge at aktivere automatisk afspilning af GIFfer.
subject: Velkommen til Mastodon
+ tip_bridge_html: Hvis du kommer fra Twitter, kan du finde dine venner på Mastodon ved at bruge
bridge appen. Den virker dog kun hvis de også bruger bridge appen!
+ tip_federated_timeline: Den delte tidslinje er et brandslange agtigt indblik over Mastodon netværket. Men det inkluderer kun folk dine naboer abonnerer på, så den er ikke fuldendt.
tip_following: Du følger som standard administratoren(e) for den server du er på. For at finde flere folk, tjek både den lokale og fælles tidslinje.
tip_local_timeline: Den lokale tidslinje er et have af folk i %{instance}. Disse er dine umiddelbare naboer!
tip_mobile_webapp: Hvis din mobil browser tilbyder dig at tilføje Mastodon til din hjemmeskærm, kan du modtage push meddelelser. Dette opfører sig på mange måder ligesom en almindelig app!
diff --git a/config/locales/de.yml b/config/locales/de.yml
index f86fce3ce..a68c64511 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -5,13 +5,13 @@ de:
about_mastodon_html: Mastodon ist ein soziales Netzwerk. Es basiert auf offenen Web-Protokollen und freier, quelloffener Software. Es ist dezentral (so wie E-Mail!).
about_this: Über diese Instanz
administered_by: 'Administriert von:'
+ api: API
+ apps: Mobile Apps
closed_registrations: Die Registrierung auf dieser Instanz ist momentan geschlossen. Aber du kannst dein Konto auch auf einer anderen Instanz erstellen! Von dort hast du genauso Zugriff auf das Mastodon-Netzwerk.
contact: Kontakt
contact_missing: Nicht angegeben
contact_unavailable: N/A
- description_headline: Was ist %{domain}?
- domain_count_after: anderen Instanzen
- domain_count_before: Vernetzt mit
+ documentation: Dokumentation
extended_description_html: |
Ein guter Platz für Regeln
Die erweiterte Beschreibung wurde noch nicht aufgesetzt.
@@ -28,25 +28,39 @@ de:
hosted_on: Mastodon, beherbergt auf %{domain}
learn_more: Mehr erfahren
other_instances: Andere Instanzen
+ privacy_policy: Datenschutzerklärung
source_code: Quellcode
- status_count_after: Beiträge verfassten
+ status_count_after:
+ one: Status
+ other: Status
status_count_before: die
- user_count_after: Wesen
+ terms: Nutzungsbedingungen
+ user_count_after:
+ one: Benutzer
+ other: Benutzer
user_count_before: Zuhause für
what_is_mastodon: Was ist Mastodon?
accounts:
+ choices_html: "%{name} empfielt:"
follow: Folgen
- followers: Folgende
+ followers:
+ one: Folgende
+ other: Follower
following: Folgt
+ joined: Beigetreten am %{date}
media: Medien
moved_html: "%{name} ist auf %{new_profile_link} umgezogen:"
network_hidden: Diese Informationen sind nicht verfügbar
nothing_here: Hier gibt es nichts!
people_followed_by: Profile, denen %{name} folgt
people_who_follow: Profile, die %{name} folgen
- posts: Beiträge
+ pin_errors:
+ following: Du musst dieser Person bereits folgen, um sie empfehlen zu können
+ posts:
+ one: Beitrag
+ other: Beiträge
+ posts_tab_heading: Beiträge
posts_with_replies: Beiträge mit Antworten
- remote_follow: Folgen
reserved_username: Dieser Profilname ist belegt
roles:
admin: Admin
@@ -55,7 +69,7 @@ de:
unfollow: Entfolgen
admin:
account_moderation_notes:
- create: Notiz hinterlassen
+ create: Notiz erstellen
created_msg: Moderationsnotiz erfolgreich erstellt!
delete: Löschen
destroyed_msg: Moderationsnotiz erfolgreich gelöscht!
@@ -180,6 +194,7 @@ de:
unsuspend_account: "%{name} hat die Sperrung von %{target}s Account aufgehoben"
update_custom_emoji: "%{name} hat das %{target} Emoji aktualisiert"
update_status: "%{name} hat den Status von %{target} aktualisiert"
+ deleted_status: "(gelöschter Beitrag)"
title: Überprüfungsprotokoll
custom_emojis:
by_domain: Domain
@@ -206,6 +221,27 @@ de:
update_failed_msg: Konnte dieses Emoji nicht aktualisieren
updated_msg: Emoji erfolgreich aktualisiert!
upload: Hochladen
+ dashboard:
+ backlog: Unerledigte Jobs
+ config: Konfiguration
+ feature_deletions: Kontolöschung
+ feature_invites: Einladungslinks
+ feature_registrations: Registrierung
+ feature_relay: Föderations-Relay
+ features: Eigenschaften
+ hidden_service: Föderation mit versteckten Diensten
+ open_reports: Offene Meldungen
+ recent_users: Neueste Nutzer
+ search: Volltextsuche
+ single_user_mode: Einzelnutzermodus
+ software: Software
+ space: Speicherverbrauch
+ title: Übersicht
+ total_users: Benutzer Insgesamt
+ trends: Trends
+ week_interactions: Interaktionen diese Woche
+ week_users_active: Aktiv diese Woche
+ week_users_new: Benutzer diese Woche
domain_blocks:
add_new: Neu hinzufügen
created_msg: Die Domain-Blockade wird nun durchgeführt
@@ -255,12 +291,22 @@ de:
search: Suchen
title: Bekannte Instanzen
invites:
+ deactivate_all: Alle deaktivieren
filter:
all: Alle
available: Verfügbar
expired: Ausgelaufen
title: Filter
title: Einladungen
+ relays:
+ add_new: Neues Relay hinzufügen
+ description_html: Ein
Föderierungsrelay ist ein vermittelnder Server, der eine große Anzahl öffentlicher Beiträge zwischen Servern austauscht, die es abonnieren und zu ihm veröffentlichen.
Es kann kleinen und mittleren Servern dabei helfen, Inhalte des Fediverse zu entdecken, was andernfalls das manuelle Folgen anderer Leute auf entfernten Servern durch lokale Nutzer erfordern würde.
+ enable_hint: Sobald aktiviert wird dein Server alle öffentlichen Beiträge dieses Relays abonnieren und wird alle öffentlichen Beiträge dieses Servers an es senden.
+ inbox_url: Relay-URL
+ pending: Warte auf Zustimmung des Relays
+ setup: Relayverbindung einrichten
+ status: Status
+ title: Relays
report_notes:
created_msg: Meldungs-Kommentar erfolgreich erstellt!
destroyed_msg: Meldungs-Kommentar erfolgreich gelöscht!
@@ -310,12 +356,18 @@ de:
contact_information:
email: Öffentliche E-Mail-Adresse
username: Profilname für die Kontaktaufnahme
+ custom_css:
+ desc_html: Verändere das Aussehen mit CSS, dass auf jeder Seite geladen wird
+ title: Benutzerdefiniertes CSS
hero:
desc_html: Wird auf der Startseite angezeigt. Mindestens 600x100px sind empfohlen. Wenn es nicht gesetzt wurde, wird das Instanz-Thumbnail dafür verwendet
title: Bild für Startseite
peers_api_enabled:
desc_html: Domain-Namen dieser Instanz, die im Fediverse gefunden wurden
title: Veröffentliche Liste von gefundenen Instanzen
+ preview_sensitive_media:
+ desc_html: Linkvorschauen auf anderen Webseiten werden ein Vorschaubild anzeigen, obwohl die Medien als heikel gekennzeichnet sind
+ title: Heikle Medien in OpenGraph-Vorschauen anzeigen
registrations:
closed_message:
desc_html: Wird auf der Frontseite angezeigt, wenn die Registrierung geschlossen ist. Du kannst HTML-Tags benutzen
@@ -336,11 +388,14 @@ de:
desc_html: Zeige Mitarbeiter-Badge auf Benutzerseite
title: Zeige Mitarbeiter-Badge
site_description:
- desc_html: Wird als Absatz auf der Frontseite angezeigt und als Meta-Tag benutzt. Du kannst HTML-Tags benutzen, insbesondere
<a>
und
<em>
.
+ desc_html: Einleitungsabschnitt auf der Frontseite. Beschreibe, was diese Mastodon-Instanz ausmacht. Du kannst HTML-Tags benutzen, insbesondere
<a>
und
<em>
.
title: Beschreibung der Instanz
site_description_extended:
desc_html: Bietet sich für Verhaltenskodizes, Regeln, Richtlinien und weiteres an, was deine Instanz auszeichnet. Du kannst HTML-Tags benutzen
title: Erweiterte Beschreibung der Instanz
+ site_short_description:
+ desc_html: Wird angezeigt in der Seitenleiste und in Meta-Tags. Beschreibe in einem einzigen Abschnitt, was Mastodon ist und was diesen Server ausmacht. Falls leer, wird die Instanz-Beschreibung verwendet.
+ title: Kurze Instanz-Beschreibung
site_terms:
desc_html: Hier kannst du deine eigenen Geschäftsbedingungen, Datenschutzerklärung und anderes rechtlich Relevante eintragen. Du kannst HTML-Tags benutzen
title: Eigene Geschäftsbedingungen
@@ -362,6 +417,7 @@ de:
media:
title: Medien
no_media: Keine Medien
+ no_status_selected: Keine Beiträge wurden verändert, weil keine ausgewählt wurden
title: Beiträge des Kontos
with_media: Mit Medien
subscriptions:
@@ -371,6 +427,12 @@ de:
last_delivery: Letzte Zustellung
title: WebSub
topic: Thema
+ suspensions:
+ bad_acct_msg: Der Bestätigungswert stimmt nicht überein. Sperrst du das richtige Benutzerkonto?
+ hint_html: 'Um die Sperrung des Benutzerkontos zu genehmigen tippe %{value} in das Feld unten ein:'
+ proceed: Fortfahren
+ title: "%{acct} sperren"
+ warning_html: 'Die Sperrung des Benutzerkontos wird
unwiederrufliche Schäden hervorrufen und alle Daten löschen, die folgendes beinhalten:'
title: Administration
admin_mailer:
new_report:
@@ -465,7 +527,7 @@ de:
archive_takeout:
date: Datum
download: Dein Archiv herunterladen
- hint_html: Du kannst ein Archiv deiner
Beiträge und hochgeladenen Medien anfragen. Die exportierten Daten werden im ActivityPub-Format gespeichert, welches mit jeder Software lesbar ist, die das Format unterstützt. Du kannst alle 7 Tage ein neues Archiv anfordern.
+ hint_html: Du kannst ein Archiv deiner
Beiträge und hochgeladenen Medien anfragen. Die exportierten Daten werden im ActivityPub-Format gespeichert, welches mit jeder Software lesbar ist die das Format unterstützt. Du kannst alle 7 Tage ein Archiv anfordern.
in_progress: Stelle dein Archiv zusammen...
request: Dein Archiv anfragen
size: Größe
@@ -502,9 +564,12 @@ de:
true_privacy_html: Bitte beachte, dass
wirklicher Schutz deiner Privatsphäre nur durch Ende-zu-Ende-Verschlüsselung erreicht werden kann..
unlocked_warning_html: Wer dir folgen will, kann dies jederzeit ohne deine vorige Einverständnis tun und erhält damit automatisch Zugriff auf deine privaten Beiträge. Wenn du %{lock_link}, kannst du vorab entscheiden, wer dir folgen darf und wer nicht.
unlocked_warning_title: Dein Konto ist nicht gesperrt
+ footer:
+ developers: Entwickler
+ more: Mehr…
+ resources: Ressourcen
generic:
changes_saved_msg: Änderungen gespeichert!
- powered_by: angetrieben von %{link}
save_changes: Änderungen speichern
validation_errors:
one: Etwas ist noch nicht ganz richtig! Bitte korrigiere den Fehler
@@ -540,8 +605,6 @@ de:
expires_at: Läuft ab
uses: Verwendungen
title: Leute Einladen
- landing_strip_html: "
%{name} hat ein Profil auf %{link_to_root_path}. Du kannst folgen oder interagieren, sofern du ein Konto irgendwo im Fediversum hast."
- landing_strip_signup_html: Wenn nicht, kannst du dich
hier anmelden.
lists:
errors:
limit: Du hast die maximale Anzahl an Listen erreicht
@@ -618,6 +681,9 @@ de:
no_account_html: Noch keinen Account? Du kannst dich
hier anmelden
proceed: Weiter
prompt: 'Du wirst dieser Person folgen:'
+ remote_interaction:
+ proceed: Fortfahren zum Interagieren
+ prompt: 'Du wirst mit diesem Beitrag interagieren:'
remote_unfollow:
error: Fehler
title: Titel
@@ -701,6 +767,7 @@ de:
private: Du kannst nur öffentliche Beiträge anheften
reblog: Du kannst keine geteilten Beiträge anheften
show_more: Mehr anzeigen
+ sign_in_to_participate: Melde dich an, um an der Konversation teilzuhaben
title: '%{name}: "%{quote}"'
visibilities:
private: Nur Folgende
@@ -710,11 +777,93 @@ de:
unlisted: Nicht gelistet
unlisted_long: Für alle sichtbar, aber nicht in öffentlichen Zeitleisten aufgelistet
stream_entries:
- click_to_show: Klicken, um zu zeigen
pinned: Angehefteter Beitrag
reblogged: teilte
sensitive_content: Heikle Inhalte
terms:
+ body_html: |
+
Datenschutzerklärung
+
Welche Informationen sammeln wir?
+
+
+ - Grundlegende Kontoinformationen: Wenn du dich auf diesem Server registrierst, wirst du darum gebeten, einen Benutzernamen, eine E-Mail-Adresse und ein Passwort einzugeben. Du kannst auch zusätzliche Profilinformationen wie etwa einen Anzeigenamen oder eine Biografie eingeben und ein Profilbild oder ein Headerbild hochladen. Der Benutzername, der Anzeigename, die Biografie, das Profilbild und das Headerbild werden immer öffentlich angezeigt.
+ - Beiträge, Folge- und andere öffentliche Informationen: Die Liste der Leute, denen du folgst, wird öffentlich gezeigt, das gleiche gilt für deine Folgenden (Follower). Sobald du eine Nachricht übermittelst, wird das Datum und die Uhrzeit gemeinsam mit der Information, welche Anwendung du dafür verwendet hast, gespeichert. Nachricht können Medienanhänge enthalten, etwa Bilder und Videos. Öffentliche und ungelistete Beiträge sind öffentlich verfügbar. Sobald du einen Beitrag auf deinem Profil featurest, sind dies auch öffentlich verfügbare Informationen. Deine Beiträge werden an deine Folgenden ausgeliefert, was in manchen Fällen bedeutet, dass sie an andere Server ausgeliefert werden und dort Kopien gespeichert werden. Sobald du Beiträge löschst, wird dies ebenso an deine Follower ausgeliefert. Die Handlungen des Teilens und Favorisieren eines anderen Beitrages ist immer öffentlich.
+ - Direkte und "Nur Folgende"-Beiträge: Alle Beiträge werden auf dem Server gespeichert und verarbeitet. "Nur Folgende"-Beiträge werden an deine Folgenden und an Benutzer, die du in ihnen erwähnst, ausgeliefert, direkte Beiträge nur an in ihnen erwähnte Benutzer. In manchen Fällen bedeutet dass, dass sie an andere Server ausgeliefert werden und dort Kopien gespeichert werden. Wir bemühen uns nach bestem Wissen und Gewissen, den Zugriff auf diese Beiträge auf nur autorisierte Personen einzuschränken, jedoch könnten andere Server dabei scheitern. Deswegen ist es wichtig, die Server, zu denen deine Folgenden gehören, zu überprüfen. Du kannst eine Option in den Einstellungen umschalten, um neue Folgenden manuell anzunehmen oder abzuweisen. Bitte beachte, dass die Betreiber des Server und jedes empfangenden Servers solche Nachrichten anschauen könnten und dass Empfänger von diesen eine Bildschirmkopie erstellen könnten, sie kopieren oder anderweitig weiterverteilen könnten. Teile nicht irgendwelche gefährlichen Informationen über Mastodon.
+ - Internet Protocol-Adressen (IP-Adressen) und andere Metadaten: Sobald du dich anmeldest, erfassen wir sowohl die IP-Adresse, von der aus du dich anmeldest, als auch den Namen deine Browseranwendung. Alle angemeldeten Sitzungen (Sessions) sind für deine Überprüfung und Widerruf in den Einstellungen verfügbar. Die letzte verwendete IP-Adresse wird bis zu 12 Monate lang gespeichert. Wir könnten auch Serverprotokoll behalten, welche die IP-Adresse von jeder Anfrage an unseren Server enthalten.
+
+
+
+
+
Für was verwenden wir deine Informationen?
+
+
Jede der von dir gesammelten Information kann in den folgenden Weisen verwendet werden:
+
+
+ - Um die Kernfunktionalität von Mastodon bereitzustellen. Du kannst du mit dem Inhalt anderer Leute interagieren und deine eigenen Inhalte beitragen, wenn du angemeldet bist. Zum Beispiel kannst du anderen folgen, um deren kombinierten Beiträge in deine personalisierten Start-Timeline zu sehen.
+ - Um Moderation der Community zu ermöglichen, zum Beispiel beim Vergleichen deiner IP-Adresse mit anderen bekannten, um Verbotsumgehung oder andere Vergehen festzustellen.
+ - Die E-Mail-Adresse, die du bereitstellst, kann dazu verwendet werden, dir Informationen, Benachrichtigungen über andere Leute, die mit deinen Inhalten interagieren oder dir Nachrichten senden, und auf Anfragen, Wünsche und/oder Fragen zu antworten.
+
+
+
+
+
Wie beschützen wir deine Informationen?
+
+
Wir implementieren eine Reihe von Sicherheitsmaßnahmen, um die Sicherheit deiner persönlichen Information sicherzustellen, wenn du persönliche Informationen eingibst, übermittelst oder auf sie zugreifst. Neben anderen Dingen, wird sowohl deine Browsersitzung, als auch der Datenverkehr zischen deinen Anwendungen und der Programmierschnittstelle (API) mit SSL gesichert, dein Passwort wird mit einem starken Einwegalgorithmus gehasht. Du kannst Zwei-Faktor-Authentifizierung aktivieren, um den Zugriff auf dein Konto zusätzlich abzusichern.
+
+
+
+
Was ist unsere Datenspeicherungsrichtlinie?
+
+
Wir werden mit bestem Wissen und Gewissen:
+
+
+ - Serverprotokolle, die IP-Adressen von allen deinen Anfragen an diesen Server, falls solche Protokolle behalten werden, für nicht mehr als 90 Tage behalten.
+ - registrierten Benutzern zu geordnete IP-Adressen nicht länger als 12 Monate behalten.
+
+
+
Du kannst ein Archiv deines Inhalts anfordern und herunterladen, inkludierend deiner Beiträge, Medienanhänge, Profilbilder und Headerbilder.
+
+
Du kannst dein Konto unwiderruflich jederzeit löschen.
+
+
+
+
Verwenden wir Cookies?
+
+
Ja. Cookies sind kleine Dateien, die eine Webseite oder ihr Serviceanbieter über deinen Webbrowser (sofern er es erlaubt) auf die Festplatte deines Computers überträgt. Diese Cookies ermöglichen es der Seite deinen Browser wiederzuerkennen und, sofern du ein registriertes Konto hast, diesen mit deinem registrierten Konto zu verknüpfen.
+
+
Wir verwenden Cookies, um deine Einstellungen zu verstehen und für zukünftige Besuche zu speichern.
+
+
+
+
Offenbaren wir Informationen an Dritte?
+
+
Wir verkaufen nicht, handeln nicht mit oder übertragen deine persönlich identifizierbaren Informationen nicht an Dritte. Dies beinhaltet nicht Dritte, die vertrauenswürdig sind und uns beim Betreiben unserer Seite, Leiten unseres Geschäftes oder dabei, die Dienste für dich bereitzustellen, unterstützen, sofern diese Dritte zustimmen, diese Informationen vertraulich zu halten. Wir können auch Informationen freigeben, wenn wir glauben, dass Freigabe angemessen ist, um dem Gesetz zu entsprechen, unsere Seitenrichtlinien durchzusetzen oder unsere Rechte, Eigentum und/oder Sicherheit oder die anderer zu beschützen.
+
+
Dein öffentlicher Inhalt kann durch andere Server im Netzwerk heruntergeladen werden. Deine öffentlichen und "Nur Folgende"-Beiträge werden an die Server ausgeliefert, bei denen sich deine Folgenden befinden und direkte Nachrichten werden an die Server des Empfängers ausgeliefert, falls diese Folgenden oder Empfänger sich auf einem anderen Server als diesen befinden.
+
+
Wenn du eine Anwendung autorisierst, dein Konto zu benutzen, kann diese – abhängig von den von dir genehmigten Befugnissen – auf deine öffentlichen Profilinformationen, deine Folgt- und Folgende-Liste, deine Listen, alle deine Beiträge und deine Favoriten zugreifen. Anwendungen können nie auf deine E-Mail-Adresse oder dein Passwort zugreifen
+
+
+
+
Webseitenbenutzung durch Kinder
+
+
Wenn sich dieser Server in der EU oder im Europäischen Wirtschaftsraum befinden: Unsere Website, Produkte und Dienstleistungen sind alle an Leute gerichtet, die mindestens 16 Jahre als sind. Wenn du unter 16 bist, darfst du nach den Bestimmungen der DSGVO (Datenschutz-Grundverordnung) diese Webseite nicht benutzen.
+
+
Wenn sich dieser Server in den USA befindet: Unsere Webseite, Produkte und Dienstleistungen sind alle an Leute gerichtet, die mindestens 13 Jahre alt sind. Wenn du unter 13 bist, darfst du nach den Bestimmungen des COPPA (Children's Online Privacy Protection Act, dt. "Gesetz zum Schutz der Privatsphäre von Kindern im Internet") diese Webseite nicht benutzen.
+
+
Gesetzesvorschriften können unterschiedlich sein, wenn sich dieser Server in anderer Gerichtsbarkeit befindet.
+
+
+
+
Änderung an unserer Datenschutzerklärung
+
+
Wenn wir uns entscheiden, Änderungen an unserer Datenschutzerklärung vorzunehmen, werden wird diese Änderungen auf dieser Seite bekannt geben.
+
+
Dies ist eine Übersetzung, Irrtümer und Übersetzungsfehler vorbehalten. Im Zweifelsfall gilt die englische Originalversion
+
+
Dieses Dokument ist CC-BY-SA. Es wurde zuletzt aktualisiert am 7. März 2018.
+
+
Ursprünglich übernommen von der Discourse-Datenschutzerklärung.
title: "%{instance} Nutzungsbedingungen und Datenschutzerklärung"
themes:
contrast: Hoher Kontrast
@@ -723,6 +872,7 @@ de:
time:
formats:
default: "%d.%m.%Y %H:%M"
+ month: "%b %Y"
two_factor_authentication:
code_hint: Gib zur Bestätigung den Code ein, den deine Authenticator-App generiert hat
description_html: Wenn du
Zwei-Faktor-Authentisierung (2FA) aktivierst, wirst du dein Telefon zum Anmelden benötigen. Darauf werden Tokens erzeugt, die du bei der Anmeldung eingeben musst.
@@ -765,6 +915,6 @@ de:
users:
invalid_email: Ungültige E-Mail-Adresse
invalid_otp_token: Ungültiger Zwei-Faktor-Authentisierungs-Code
- otp_lost_help_html: Wenn Sie zu beidem keinen Zugriff mehr haben, kontaktieren sie %{email}
+ otp_lost_help_html: Wenn Du beides nicht mehr weißt, melde Dich bei uns unter der E-Mailadresse %{email}
seamless_external_login: Du bist angemeldet über einen Drittanbieter-Dienst, weswegen Passwort- und E-Maileinstellungen nicht verfügbar sind.
signed_in_as: 'Angemeldet als:'
diff --git a/config/locales/devise.ast.yml b/config/locales/devise.ast.yml
new file mode 100644
index 000000000..0b77eecf2
--- /dev/null
+++ b/config/locales/devise.ast.yml
@@ -0,0 +1,2 @@
+---
+ast:
diff --git a/config/locales/devise.cs.yml b/config/locales/devise.cs.yml
index adaa40835..49814b368 100644
--- a/config/locales/devise.cs.yml
+++ b/config/locales/devise.cs.yml
@@ -8,3 +8,75 @@ cs:
failure:
already_authenticated: Již jste přihlášen/a.
inactive: Váš účet ještě není aktivován.
+ invalid: Neplatné %{authentication_keys} nebo heslo.
+ last_attempt: Máte ještě jeden pokus, než bude váš účet uzamčen.
+ locked: Váš účet je uzamčen.
+ not_found_in_database: Neplatné %{authentication_keys} nebo heslo.
+ timeout: Vaše relace vypršela. Pro pokračování se prosím přihlaste znovu.
+ unauthenticated: Před pokračováním se musíte přihlásit nebo registrovat.
+ unconfirmed: Před pokračováním musíte potvrdit svůj e-mail.
+ mailer:
+ confirmation_instructions:
+ action: Potvrdit e-mailovou adresu
+ explanation: S touto e-mailovou adresou jste si vytvořil/a účet na %{host}. K jeho aktivaci vám zbývá jedno kliknutí. Pokud jste to nebyl/a vy, ignorujte této e-mail.
+ extra_html: Prosím podívejte se také na
pravidla této instance a
naše podmínky používání.
+ subject: 'Mastodon: Potvrzovací instrukce pro %{instance}'
+ title: Potvrďte e-mailovou adresu
+ email_changed:
+ explanation: 'E-mailová adresa vašeho účtu byla změněna na:'
+ extra: Pokud jste si e-mail nezměnil/a, je pravděpodobné, že někdo jiný získal přístup k vašemu účtu. Prosím změňte si okamžitě heslo, nebo, pokud se nemůžete na účet přihlásit, kontaktujte administrátora instance.
+ subject: 'Mastodon: E-mail byl změněn'
+ title: Nová e-mailová adresa
+ password_change:
+ explanation: Heslo k vašemu účtu bylo změněno.
+ extra: Pokud jste si heslo nezměnil/a, je pravděpodobné, že někdo jiný získal přístup k vašemu účtu. Prosím změňte si okamžitě heslo, nebo, pokud se nemůžete na účet přihlásit, kontaktujte administrátora instance.
+ subject: 'Mastodon: Heslo bylo změněno'
+ title: Heslo bylo změněno
+ reconfirmation_instructions:
+ explanation: Potvrďte novou adresu pro změnu e-mailu.
+ extra: Pokud jste tuto změnu nevyžádal/a vy, prosím ignorujte tento e-mail. E-mailová adresa nebude změněna, dokud nepřejdete na výše uvedenou adresu.
+ subject: 'Mastodon: Potvrďte e-mail pro %{instance}'
+ title: Ověřit e-mailovou adresu
+ reset_password_instructions:
+ action: Změnit heslo
+ explanation: Vyžádal/a jste si pro svůj účet nové heslo.
+ extra: Pokud jste tohle nevyžádal/a, prosím ignorujte tento e-mail. Vaše heslo nebude změněno, dokud nepřejdete na výše uvedenou adresu a nevytvoříte si nové.
+ subject: 'Mastodon: Instrukce pro obnovu hesla'
+ title: Obnovení hesla
+ unlock_instructions:
+ subject: 'Mastodon: Instrukce pro odemčení účtu'
+ omniauth_callbacks:
+ failure: Nelze vás ověřit z %{kind}, protože "%{reason}".
+ success: Úspěšně ověřeno z účtu %{kind}.
+ passwords:
+ no_token: Tuto stránku nemůžete navštívit, pokud nepřicházíte z e-mailu pro obnovu hesla. Pokud jste z něj přišel/la, ujistěte se, že jste použil/a celé URL z e-mailu.
+ send_instructions: Pokud vaše e-mailová adresa existuje v naší databázi, obdržíte za pár minut ve vašem e-mailu odkaz pro obnovení hesla. Prosím zkontrolujte si složku spam, jestli jste tento e-mail neobdržel/a.
+ send_paranoid_instructions: Pokud vaše e-mailová adresa existuje v naší databázi, obdržíte za pár minut ve vašem e-mailu odkaz pro obnovení hesla. Prosím zkontrolujte si složku spam, jestli jste tento e-mail neobdržel/a.
+ updated: Vaše heslo bylo úspěšně změněno. Nyní jste přihlášen/a.
+ updated_not_active: Vaše heslo bylo úspěšně změněno.
+ registrations:
+ destroyed: Sbohem! Váš účet byl úspěšně zrušen. Doufáme, že vás opět brzy uvidíme.
+ signed_up: Vítejte! Registroval/a jste se úspěšně.
+ signed_up_but_inactive: Registroval/a jste se úspěšně. Nemohli jsme vás však přihlásit, protože váš účet ještě není aktivován.
+ signed_up_but_locked: Registroval/a jste se úspěšně. Nemohli jsme vás však přihlásit, protože váš účet je uzamčen.
+ signed_up_but_unconfirmed: Na vaši e-mailovou adresu byla poslána zpráva s potvrzovacím odkazem. Pro aktivaci účtu přejděte na danou adresu. Prosím zkontrolujte si složku spam, jestli jste tento e-mail neobdržel/a.
+ update_needs_confirmation: Váš účet byl úspěšně aktualizován, ale je potřeba ověřit vaši novou e-mailovou adresu. Prosím zkontrolujte si e-mail a klikněte na odkaz pro potvrzení vaši nové e-mailové adresy. Prosím zkontrolujte si složku spam, jestli jste tento e-mail neobdržel/a.
+ updated: Váš účet byl úspěšně aktualizován.
+ sessions:
+ already_signed_out: Odhlášení proběhlo úspěšně.
+ signed_in: Přihlášení proběhlo úspěšně.
+ signed_out: Odhlášení proběhlo úspěšně.
+ unlocks:
+ send_instructions: Za pár minut obdržíte e-mail s instrukcemi pro odemčení vašeho účtu. Prosím zkontrolujte si složku spam, jestli jste tento e-mail neobdržel/a.
+ send_paranoid_instructions: Pokud váš účet existuje, obdržíte za pár minut e-mail s instrukcemi pro odemčení vašeho účtu. Prosím zkontrolujte si složku spam, jestli jste tento e-mail neobdržel/a.
+ unlocked: Váš účet byl úspěšně odemčen. Pro pokračování se prosím přihlaste.
+ errors:
+ messages:
+ already_confirmed: byl již potvrzen, prosím zkuste se přihlásit
+ confirmation_period_expired: musí být potvrzen do %{period}, prosím vyžádejte si nový
+ expired: vypršel, prosím vyžádejte si nový
+ not_found: nenalezen
+ not_locked: nebyl uzamčen
+ not_saved:
+ one: '1 chyba zabránila uložení tohoto %{resource}:'
+ other: "%{count} chyb zabránila uložení tohoto %{resource}:"
diff --git a/config/locales/devise.cy.yml b/config/locales/devise.cy.yml
new file mode 100644
index 000000000..a60884c5b
--- /dev/null
+++ b/config/locales/devise.cy.yml
@@ -0,0 +1,6 @@
+---
+cy:
+ devise:
+ mailer:
+ reset_password_instructions:
+ action: Newid cyfrinair
diff --git a/config/locales/devise.da.yml b/config/locales/devise.da.yml
index 7c6ac8b19..b201b7ca8 100644
--- a/config/locales/devise.da.yml
+++ b/config/locales/devise.da.yml
@@ -4,6 +4,7 @@ da:
confirmations:
confirmed: Din email adresse er blevet succesfuldt bekræftet.
send_instructions: Du vil modtage en mail med instrukser for hvordan du bekræfter din email adresse om få minutter. Tjek venligst din spam mappe hvis du ikke har modtaget denne email.
+ send_paranoid_instructions: Hvis din email adresse allerede findes i vores database, vil du modtage en email med instrukser for hvordan du bekræfter din email adresse om få minutter. Tjek gerne din spam mappe hvis du ikke modtager denne email.
failure:
already_authenticated: Du er allerede logget ind.
inactive: Din konto er endnu ikke aktiveret.
@@ -18,6 +19,7 @@ da:
confirmation_instructions:
action: Bekræft email adresse
explanation: Du har oprettet en konto på %{host} med denne email adresse. Du er et klik fra at aktivere din konto. Hvis du ikke har oprettet dig, ignorer venligst denne email.
+ extra_html: Tjek også
reglerne for instansen og
vores betingelser.
subject: 'Mastodon: Bekræftelses instrukser for %{instance}'
title: Bekræft email adresse
email_changed:
@@ -32,14 +34,33 @@ da:
title: Kodeordet er blevet ændret
reconfirmation_instructions:
explanation: Bekræft den nye adresse for at ændre din email.
+ extra: Hvis denne ændring ikke blev foretaget af dig, ignorer denne email. Email adressen for denne Mastodon konto vil ikke blive ændret før du følger linket foroven.
subject: 'Mastodon: Bekræft email for %{instance}'
title: Bekræft email adresse
reset_password_instructions:
action: Ændre kodeord
- explanation: Du anmodede om et nyt kodeord for din konto.
+ explanation: Du anmodede om en ny adgangskode for din konto.
+ extra: Hvis du ikke har anmodet om dette, ignorer denne email. Din adgangskode vil ikke blive ændret før du har fulgt linket foroven og oprettet en ny.
+ subject: 'Mastodon: Instrukser for nulstilling af adgangskode'
title: Kodeordet er blevet nulstillet
+ unlock_instructions:
+ subject: 'Mastodon: Instruktioner for oplåsning'
+ omniauth_callbacks:
+ failure: Kunne ikke godkende dig fra %{kind} fordi "%{reason}".
+ success: Godkendelse fra %{kind} konto lykkedes.
+ passwords:
+ no_token: Du kan ikke tilgå denne side uden at komme fra en email om nulstilling af adgangskode. Hvis du kommer fra en email om nulstilling af adgangskode, tjek om du brugte det fulde link der blev angivet.
+ send_instructions: Hvis din email adresse allerede findes i vores database, vil du modtage et link til nulstilling af adgangskode til din email adresse om få minutter. Tjek din spam mappe hvis du ikke har modtaget denne email.
+ send_paranoid_instructions: Hvis din email adresse allerede findes i vores database, vil du modtage et link til nulstilling af adgangskode til din email adresse om få minutter. Tjek din spam mappe hvis du ikke har modtaget denne email.
+ updated: Din adgangskode er nu blevet ændret. Du er nu logget ind.
+ updated_not_active: Din adgangskode blev ændret.
registrations:
+ destroyed: Farvel! Din konto er nu annulleret. Vi håber snart at se dig igen.
signed_up: Velkommen! Du har nu tilmeldt dig.
+ signed_up_but_inactive: Du har nu oprettet dig. Vi kunne dog ikke logge dig ind da din konto endnu ikke er aktiveret.
+ signed_up_but_locked: Du har nu oprettet dig. Vi kunne dog ikke logge dig ind da din konto er låst.
+ signed_up_but_unconfirmed: En besked med et bekræftelses link er nu blevet sendt til din email adresse. Følg linket for at aktivere din konti. Tjek din spam mappe hvis du ikke har modtaget denne email.
+ update_needs_confirmation: Du har succesfuldt opdateret din konto, men vi er nødt til at bekræfte din email adresse. Tjek venligst din email og følg bekræftelses linket for at bekræfte din nye email adresse. Tjek venligst din spam mappe hvis du ikke har modtaget denne email.
updated: Din konto er nu blevet opdateret.
sessions:
already_signed_out: Du er nu logget ud.
diff --git a/config/locales/devise.fr.yml b/config/locales/devise.fr.yml
index 7e10f83b4..e9c98a63f 100644
--- a/config/locales/devise.fr.yml
+++ b/config/locales/devise.fr.yml
@@ -17,30 +17,30 @@ fr:
unconfirmed: Vous devez valider votre compte pour continuer.
mailer:
confirmation_instructions:
- action: Vérifier l'adresse courriel
- explanation: Vous avez créé un compte sur %{host} avec cette adresse courriel. Vous êtes à un clic de l'activer. Si ce n'était pas vous, veuillez ignorer ce courriel.
- extra_html: S'il vous plaît, consultez également
1les règles de l'instance 2 et
3nos termes de service 4.
+ action: Vérifier l’adresse courriel
+ explanation: Vous avez créé un compte sur %{host} avec cette adresse courriel. Vous êtes à un clic de l’activer. Si ce n’était pas vous, veuillez ignorer ce courriel.
+ extra_html: Merci de consultez également
les règles de l’instance et
nos conditions d’utilisation.
subject: Merci de confirmer votre inscription sur %{instance}
- title: Vérifier l'adresse courriel
+ title: Vérifier l’adresse courriel
email_changed:
- explanation: 'L''adresse courriel de votre compte est en cours de modification pour devenir :'
- extra: Si vous n'avez pas changé votre adresse courriel, il est probable que quelqu'un ait eu accès à votre compte. Veuillez changer votre mot de passe immédiatement ou contacter l'administrateur de l'instance si vous êtes bloqué hors de votre compte.
+ explanation: 'L’adresse courriel de votre compte est en cours de modification pour devenir :'
+ extra: Si vous n’avez pas changé votre adresse courriel, il est probable que quelqu’un ait eu accès à votre compte. Veuillez changer votre mot de passe immédiatement ou contacter l’administrateur·rice de l’instance si vous êtes bloqué·e hors de votre compte.
subject: 'Mastodon : Courriel modifié'
title: Nouvelle adresse courriel
password_change:
explanation: Le mot de passe de votre compte a été changé.
- extra: Si vous n'avez pas changé votre mot de passe, il est probable que quelqu'un ait eu accès à votre compte. Veuillez changer votre mot de passe immédiatement ou contacter l'administrateur de l'instance si vous êtes bloqué hors de votre compte.
+ extra: Si vous n’avez pas changé votre mot de passe, il est probable que quelqu’un ait eu accès à votre compte. Veuillez changer votre mot de passe immédiatement ou contacter l’administrateur·rice de l’instance si vous êtes bloqué·e hors de votre compte.
subject: Votre mot de passe a été modifié avec succès
title: Mot de passe modifié
reconfirmation_instructions:
explanation: Confirmez la nouvelle adresse pour changer votre courriel.
- extra: Si ce changement n' a pas été initié par vous, veuillez ignorer ce courriel. L'adresse courriel du compte Mastodon ne changera pas tant que vous n'aurez pas cliqué sur le lien ci-dessus.
- subject: 'Mastodon : Confirmez l''email pour %{instance}'
- title: Vérifier l'adresse courriel
+ extra: Si ce changement n’a pas été initié par vous, veuillez ignorer ce courriel. L’adresse courriel du compte Mastodon ne changera pas tant que vous n’aurez pas cliqué sur le lien ci-dessus.
+ subject: 'Mastodon : Confirmez l’adresse pour %{instance}'
+ title: Vérifier l’adresse courriel
reset_password_instructions:
action: Modifier le mot de passe
explanation: Vous avez demandé un nouveau mot de passe pour votre compte.
- extra: Si vous ne l'avez pas demandé, veuillez ignorer ce courriel. Votre mot de passe ne changera pas tant que vous n'aurez pas cliqué sur le lien ci-dessus et que vous n'en aurez pas créé un nouveau.
+ extra: Si vous ne l’avez pas demandé, veuillez ignorer ce courriel. Votre mot de passe ne changera pas tant que vous n’aurez pas cliqué sur le lien ci-dessus et que vous n’en aurez pas créé un nouveau.
subject: Instructions pour changer votre mot de passe
title: Réinitialisation du mot de passe
unlock_instructions:
diff --git a/config/locales/devise.ka.yml b/config/locales/devise.ka.yml
new file mode 100644
index 000000000..3267eb22e
--- /dev/null
+++ b/config/locales/devise.ka.yml
@@ -0,0 +1,82 @@
+---
+ka:
+ devise:
+ confirmations:
+ confirmed: თქვენი ელ-ფოსტის მისამართი წარმატებით დამოწმდა.
+ send_instructions: თქვენ მიიღებთ ელ-ფოსტას ინსტრუქციებით თუ როგორც დაამოწმოთ თქვენი ელ-ფოსტის მისამართი რამდენიმე წუთში. გთხოვთ შეხედოთ თქვენი სპამის ფოლდერს თუ არ მიიღებთ ამ წერილს.
+ send_paranoid_instructions: თუ თქვენი ელ-ფოსტა არსებობს ჩვენს მონაცემთა ბაზაში, თქვენ მიიღებთ ელ-ფოსტას ინსტრუქციებით თუ როგორც დაამოწმოთ თქვენი ელ-ფოსტის მისამართი რამდენიმე წუთში. გთხოვთ შეხედოთ თქვენი სპამის ფოლდერს თუ არ მიიღებთ ამ წერილს.
+ failure:
+ already_authenticated: უკვე შესული ხართ.
+ inactive: თქვენი ანგარიში ჯერ არაა აქტივირებული.
+ invalid: არასწორი %{authentication_keys} ან პაროლი.
+ last_attempt: თქვენი ანგარიშის ჩაკეტვამდე დაგრჩათ კიდევ ერთი მცდელობა.
+ locked: თქვენი ანგარიში ჩაიკეტა.
+ not_found_in_database: არასწორი %{authentication_keys} ან პაროლი.
+ timeout: თქვენს სესიას გაუვიდა ვადა. გთხოვთ შედით ახლიდან რომ გააგრძელოთ.
+ unauthenticated: გაგრძელებამდე საჭიროა შეხვიდეთ ან დარეგისტრირდეთ.
+ unconfirmed: გაგრძელებამდე საჭიროა დაამოწმოთ თქვენი ელ-ფოსტა.
+ mailer:
+ confirmation_instructions:
+ action: დაამოწმეთ ელ-ფოსტის მისამართი
+ explanation: თქვენ ამ ელ-ფოსტის მისამართი ანგარიში შექმენით %{host}-ზე. დარჩა ერთი დაწკაპუნება მის აქტივაციამდე. თუ ეს თქვენ არ იყავით, გთხოვთ არ მიაქციოთ ყურადღება ამ წერილს.
+ extra_html: გთხოვთ ასევე გაეცნოთ
ინსტანციის წესებს და
ჩვენს კონფინდენციალურობის პოლიტიკას.
+ subject: 'მასტოდონი: დამოწმების ინსტრუქციები %{instance}-თვის'
+ title: ელ-ფოსტის მისამართის დამოწმება
+ email_changed:
+ explanation: 'თქვენი ანგარიშის ელ-ფოსტის მისამართი იცვლება შემდეგზე:'
+ extra: თუ თქვენ არ შეგიცვლიათ თქვენი ელ-ფოსტის მისამართი, როგორც ჩანს სხვამ ხელთ იგდო თქვენი ანგარიში. გთოხვთ შეცვალოთ თქვენი პაროლი რაც შეიძლება მალე, ან დაუკავშირდეთ ინსტანციის ადმინისტრატორს თუ თქვენი ანგარიში ჩაიკეტა.
+ subject: 'მასტოდონი: ელ-ფოსტა შეიცვალა'
+ title: ახალი ელ-ფოსტის მისამართი
+ password_change:
+ explanation: თქვენი ანგარიშის პაროლი შეიცვალა.
+ extra: თუ თქვენ არ შეგიცვლიათ პაროლი, როგორც ჩანს სხვამ ხელთ იგდო თქვენი ანგარიში. გთოხვთ შეცვალოთ თქვენი პაროლი რაც შეიძლება მალე, ან დაუკავშირდეთ ინსტანციის ადმინისტრატორს თუ თქვენი ანგარიში ჩაიკეტა.
+ subject: 'მასტოდონი: პაროლი შეიცვალა'
+ title: პაროლი შეიცვალა
+ reconfirmation_instructions:
+ explanation: დაამოწმეთ ახალი ელ-ფოსტის მისამართი ცვლილებისთვის.
+ extra: თუ თქვენ არ გამოიწვიეთ ეს ცვლილება, გთხოვთ არ მიაქციოთ ყურადღება ამ წერილს. მასტოდონის ელ-ფოსტის მისამართი არ შეიცვლება სანამ არ გადახვალთ ზემოთ მოცემულ ბმულზე.
+ subject: 'მასტოდონი: დაამოწმეთ ელ-ფოსტის მისამართი %{instance}-თვის'
+ title: დაამოწმეთ ელ-ფოსტის მისამართი
+ reset_password_instructions:
+ action: შეცვალეთ პაროლი
+ explanation: თქვენ მოითხოვეთ ახალი პაროლი თქვენი ანგარიშისთვის.
+ extra: თუ ეს თქვენ არ მოგითხოვიათ, გთხოვთ არ მიაქციოთ ყურადღება ამ წერილს. თქვენი პაროლი არ შეიცვლება, სანამ არ გადახვალთ ზემოთ მოცემულ ბმულზე.
+ subject: 'მასტოდონი: პაროლის განახლების ინსტრუქცეიბი'
+ title: პაროლის განახლება
+ unlock_instructions:
+ subject: 'მასტოდონი: ჩაკეტვის მოხსნის ინსტრუქციები'
+ omniauth_callbacks:
+ failure: 'ვერ მოხდა აუტენტიფიკაცია %{kind}-თან. მიზეზი: "%{reason}".'
+ success: წარმატებით შედგა აუტენტიფიკაცია %{kind} ანგარიშთან.
+ passwords:
+ no_token: ამ გვერდზე წვდომა ვერ გექნებათ თუ არ მოდიხართ პაროლის აღდგენის ელ-ფოსტის წერილიდან. თუ მოდიხართ პაროლის აღგენის წერილიდან, დაამოწმეთ რომ გადადიხართ სრულ ურლ-ზე.
+ send_instructions: თუ თქვენი ელ-ფოსტა არსებობს ჩვენს მონაცემთა ბაზაში, თქვენ მიიღებთ ელ-ფოსტაზე წერილს პაროლის განახლების ბმულით, რამდენიმე წუთში. გთხოვთ შეხედოთ თქვენი სპამის ფოლდერს თუ არ მიიღებთ ამ წერილს.
+ send_paranoid_instructions: თუ თქვენი ელ-ფოსტა არსებობს ჩვენს მონაცემთა ბაზაში, თქვენ მიიღებთ ელ-ფოსტაზე წერილს პაროლის განახლების ბმულით, რამდენიმე წუთში. გთხოვთ შეხედოთ თქვენი სპამის ფოლდერს თუ არ მიიღებთ ამ წერილს.
+ updated: თქვენი პაროლი წარმატებით შეიცვალა. ახლა შესული ხართ.
+ updated_not_active: თქვენი პაროლი წარმატებით შეიცვალა.
+ registrations:
+ destroyed: ნახვამდის! თქვენი ანგარიში წარმატებით გაუქმდა. იმედი გვაქვს ისევ შევხვდებით.
+ signed_up: გამარჯობა! თქვენ წარმატებით დარეგისტრირდით.
+ signed_up_but_inactive: თქვენ წარმატებით დარეგისტრირდით. თუმცა, ავტორიზაცია ვერ შედგა, თქვენი ანგარიში ჯერ არაა გააქტიურებული.
+ signed_up_but_locked: თქვენ წარმატებით დარეგისტრირდით. თუმცა, აცტორიზაცია ვერ შედგა, თქვენი ანგარიში ჩაკეტილია.
+ signed_up_but_unconfirmed: წერილი დამოწმების ბმულით თქვენს ელ-ფოსტაზე გამოგზავნილია. გთხოვთ გაჰყევით ბმულს, რათა გაააქტიუროთ ანგარიში. გთხოვთ შეხედოთ თქვენი სპამის ფოლდერს თუ არ მიიღებთ ამ წერილს.
+ update_needs_confirmation: თქვენი ანგარიში წარმატებით განახლდა, მაგრამ გვესაჭიროება თქვენი ელ-ფოსტის მისამართის დამოწმება. შეამოწმეთ ელ-ფოსტა და დასამოწმებლად გადადით მიღებულ ბმულზე. გთხოვთ შეხედოთ თქვენი სპამის ფოლდერს თუ არ მიიღებთ ამ წერილს.
+ updated: თქვენი ანგარიში წარმატებით განახლდა.
+ sessions:
+ already_signed_out: წარმატებით გახვედით.
+ signed_in: წარმატებით შეხვედით.
+ signed_out: წარმატებით გახვედით.
+ unlocks:
+ send_instructions: წერილს, ინსტრუქციებით თუ როგორ მოხსნათ ჩაკეტვა თქვენს ანგარიშს, მიიღებთ რამდენიმე წუთში. გთხოვთ შეხედოთ თქვენი სპამის ფოლდერს თუ არ მიიღებთ ამ წერილს.
+ send_paranoid_instructions: თუ თქვენი ელ-ფოსტა არსებობს ჩვენს მონაცემთა ბაზაში, თქვენ მიიღებთ ელ-ფოსტაზე წერილს ჩაკეტვის მოხნის ინსტრუქციებით. გთხოვთ შეხედოთ თქვენი სპამის ფოლდერს თუ არ მიიღებთ ამ წერილს.
+ unlocked: თქვენს ანგარიშს ჩაკეტვა წარმატებით მოეხსნა. გაგრძელებისთვის, გთხოვთ გაიაროთ ავტორიზაცია.
+ errors:
+ messages:
+ already_confirmed: უკვე დამოწმდა, გთხოვთ სცადოთ ავტორიზაციის გავლა
+ confirmation_period_expired: საჭიროებს დამოწმებას პერიოდში %{period}, გთხოვთ მოითხოვოთ ახლიდან
+ expired: გაუვიდა ვადა, გთხოვთ მოითხოვოთ ახალი
+ not_found: ვერ იქნა ნაპოვნი
+ not_locked: არ ჩაკეტილა
+ not_saved:
+ one: "%{resource} ვერ დამახსოვრდა ერთი შეცდომის გამო:"
+ other: "%{resource} ვერ დამახსოვრდა %{count} შეცდომის გამო:"
diff --git a/config/locales/devise.pl.yml b/config/locales/devise.pl.yml
index 53a4f4552..49fcca024 100644
--- a/config/locales/devise.pl.yml
+++ b/config/locales/devise.pl.yml
@@ -6,7 +6,7 @@ pl:
send_instructions: W ciągu kilku minut otrzymasz wiadomosć e-mail z instrukcją jak potwierdzić Twój adres e-mail. Jeżeli nie otrzymano wiadomości, sprawdź folder ze spamem.
send_paranoid_instructions: Jeśli Twój adres e-mail już istnieje w naszej bazie danych, w ciągu kilku minut otrzymasz wiadomość e-mail z instrukcją jak potwierdzić Twój adres e-mail. Jeżeli nie otrzymano wiadomości, sprawdź folder ze spamem.
failure:
- already_authenticated: Jesteś już zalogowany/zalogowana.
+ already_authenticated: Jesteś już zalogowany(-a).
inactive: Twoje konto nie zostało jeszcze aktywowane.
invalid: Nieprawidłowy %{authentication_keys} lub hasło.
last_attempt: Masz jeszcze jedną próbę; Twoje konto zostanie zablokowane jeśli się nie powiedzie.
@@ -18,28 +18,28 @@ pl:
mailer:
confirmation_instructions:
action: Zweryfikuj adres e-mail
- explanation: Utworzyłeś konto na %{host} podając ten adres e-mail. Jedno kliknięcie dzieli Cię od aktywacji tego konta. Jeżeli to nie Ty, zignoruj ten e-mail.
+ explanation: Utworzyłeś(-aś) konto na %{host} podając ten adres e-mail. Jedno kliknięcie dzieli Cię od aktywacji tego konta. Jeżeli to nie Ty, zignoruj ten e-mail.
extra_html: Przeczytaj też
regulamin instancji i
nasze zasady użytkowania.
subject: 'Mastodon: Instrukcje weryfikacji adresu e-mail'
title: Zweryfikuj adres e-mail
email_changed:
explanation: 'Adres e-mail dla Twojego konta zostanie zmieniony na:'
- extra: Jeżeli nie próbowałeś zmienić adresu e-mail, prawdopodobnie ktoś uzyskał dostęp do Twojego konta. Zmień natychmiastowo hasło lub skontaktuj się z administratorem isntancji, jeżeli nie masz dostępu do konta.
+ extra: Jeżeli nie próbowałeś(-aś) zmienić adresu e-mail, prawdopodobnie ktoś uzyskał dostęp do Twojego konta. Zmień natychmiastowo hasło lub skontaktuj się z administratorem isntancji, jeżeli nie masz dostępu do konta.
subject: 'Mastodon: Zmieniono adres e-mail'
title: Nowy adres e-mail
password_change:
explanation: Hasło do Twojego konta zostało zmienione.
- extra: Jeżeli nie zmieniałeś hasła, prawdopodobnie ktoś uzyskał dostęp do Twojego konta. Zmień hasło natychmiastowo lub skontaktuj się z administratorem instancji, jeżeli nie masz dostępu do konta.
+ extra: Jeżeli nie zmieniałeś(-aś) hasła, prawdopodobnie ktoś uzyskał dostęp do Twojego konta. Zmień hasło natychmiastowo lub skontaktuj się z administratorem instancji, jeżeli nie masz dostępu do konta.
subject: 'Mastodon: Zmieniono hasło'
title: Zmieniono hasło
reconfirmation_instructions:
explanation: Potwierdź nowy adres aby zmienić e-mail.
- extra: Jeżeli nie próbowałeś zmienić e-maila, zignoruj tą wiadomość. Adres e-mail przypisany do konta Mastodona nie ulegnie zmianie, jeżeli nie użyjesz powyższego odnośniku.
+ extra: Jeżeli nie próbowałeś(-aś) zmienić e-maila, zignoruj tą wiadomość. Adres e-mail przypisany do konta Mastodona nie ulegnie zmianie, jeżeli nie użyjesz powyższego odnośniku.
subject: 'Mastodon: Potwierdź adres e-mail na &{instance}'
title: Zweryfikuj adres e-mail
reset_password_instructions:
action: Zmień hasło
- explanation: Próbowałeś uzyskać nowe hasło do swojego konta.
+ explanation: Próbowałeś(-aś) uzyskać nowe hasło do swojego konta.
extra: Jeżeli to nie Ty, zignoruj tą wiadomość. Twoje hasło nie ulegnie zmianie, jeżeli nie wykorzystasz powyższego odnośnika i nie utworzysz nowego hasła.
subject: 'Mastodon: Instrukcje ustawienia nowego hasła'
title: Przywracanie hasła
@@ -49,10 +49,10 @@ pl:
failure: 'Uwierzytelnienie przez %{kind} nie powiodło się, ponieważ: "%{reason}".'
success: Uwierzytelnienie przez %{kind} powiodło się.
passwords:
- no_token: Dostęp do tej strony możliwy jest wyłącznie za pomocą odnośnika z e-maila z instrukcjami ustawienia nowego hasła. Jeśli skorzystałeś/aś z takiego odnośnika, upewnij się, że został wykorzystany/skopiowany cały odnośnik.
+ no_token: Dostęp do tej strony możliwy jest wyłącznie za pomocą odnośnika z e-maila z instrukcjami ustawienia nowego hasła. Jeśli skorzystałeś(-aś) z takiego odnośnika, upewnij się, że został wykorzystany/skopiowany cały odnośnik.
send_instructions: W ciągu kilku minut otrzymasz wiadomość e-mail z instrukcją ustawienia nowego hasła. Jeżeli nie otrzymano wiadomości, sprawdź folder ze spamem.
send_paranoid_instructions: Jeśli Twój adres e-mail już istnieje w naszej bazie danych, w ciągu kilku minut otrzymasz wiadomość e-mail zawierającą odnośnik pozwalający na ustawienie nowego hasła. Jeżeli nie otrzymano wiadomości, sprawdź folder ze spamem.
- updated: Twoje hasło zostało zmienione. Jesteś zalogowany/a.
+ updated: Twoje hasło zostało zmienione. Jesteś zalogowany(-a).
updated_not_active: Twoje hasło zostało zmienione.
registrations:
destroyed: Twoje konto zostało zawieszone. Mamy jednak nadzieję, że do nas wrócisz. Do zobaczenia!
@@ -63,9 +63,9 @@ pl:
update_needs_confirmation: Konto zostało zaktualizowane, musimy jednak zweryfikować Twój nowy adres e-mail. Została na niego wysłana wiadomość z odnośnikiem potwierdzającym. Jeżeli nie otrzymano wiadomości, sprawdź folder ze spamem.
updated: Konto zostało zaktualizowane.
sessions:
- already_signed_out: Zostałeś/aś wylogowany/a.
- signed_in: Zostałeś/aś zalogowany/a.
- signed_out: Zostałeś/aś wylogowany/a.
+ already_signed_out: Zostałeś(-aś) wylogowany(-a).
+ signed_in: Zostałeś(-aś) zalogowany(-a).
+ signed_out: Zostałeś(-aś) wylogowany(-a).
unlocks:
send_instructions: W ciągu kilku minut otrzymasz wiadomość e-mail z instrukcjami odblokowania konta. Jeżeli nie otrzymano wiadomości, sprawdź folder ze spamem.
send_paranoid_instructions: Jeśli Twoje konto istnieje, instrukcje odblokowania go otrzymasz w wiadomości e-mail w ciągu kilku minut. Jeżeli nie otrzymano wiadomości, sprawdź folder ze spamem.
diff --git a/config/locales/devise.tr.yml b/config/locales/devise.tr.yml
deleted file mode 100644
index fb819978f..000000000
--- a/config/locales/devise.tr.yml
+++ /dev/null
@@ -1,51 +0,0 @@
----
-tr:
- simple_form:
- hints:
- defaults:
- avatar: En fazla 2MB olacak şekilde PNG, GIF veya JPG formatında yükleyiniz. 400x400px büyüklüğüne indirgenecektir
- display_name: "%{count} karakter kaldı"
- header: En fazla 2MB olacak şekilde PNG, GIF veya JPG formatında yükleyiniz. 700x335px büyüklüğüne indirgenecektir.
- locked: Takipçilerinizi manuel olarak kabul etmenizi ve gönderilerinizi varsayılan olarak sadece takipçilerinizin göreceği şekilde paylaşmanızı sağlar.
- note: "%{count} karakter kaldı"
- imports:
- data: Diğer Mastodon sunucusundan dışarı aktardığınız CSV dosyası
- sessions:
- otp: Telefonunuzdaki two-factor kodunuzu giriniz veya kurtarma kodlarınızdan birini giriniz.
- labels:
- defaults:
- avatar: Profil resmi
- confirm_new_password: Yeni parolanız (tekrar)
- confirm_password: Parolanız (tekrar)
- current_password: Mevcut parolanız
- data: Dosya
- display_name: Görünen adınız
- email: E-posta adresiniz
- header: Kapak resmi
- locale: Dil
- locked: Hesabımı kilitle
- new_password: Yeni parolanız
- note: Kişisel bilgiler
- otp_attempt: İki-faktörlü kod
- password: Parolanız
- setting_auto_play_gif: GIF'leri otomatik oynatt
- setting_boost_modal: Boost etmeden önce onay diyaloğu göster
- setting_default_privacy: Gönderi gizliliği
- severity: Zorluk
- type: Dosya türü
- username: Kullanıcı adınız
- interactions:
- must_be_follower: Takipçim olmayan kişilerden gelen bildirimleri engelle
- must_be_following: Takip etmediğim kişilerden gelen bildirimleri engelle
- notification_emails:
- digest: Özet e-postaları gönder
- favourite: Biri durumumu favorilerine eklediginde bana e-posta gönder
- follow: Biri beni takip ettiğinde bana e-posta gönder
- follow_request: Biri bana takip isteği gönderdiğinde, bana e-posta gönder
- mention: Biri benden bahsettiğinde, bana e-posta gönder
- reblog: Biri durumumu paylaştığında, bana e-posta gönder
- 'no': Hayır
- required:
- mark: "*"
- text: gerekli
- 'yes': Evet
diff --git a/config/locales/doorkeeper.ast.yml b/config/locales/doorkeeper.ast.yml
new file mode 100644
index 000000000..0b77eecf2
--- /dev/null
+++ b/config/locales/doorkeeper.ast.yml
@@ -0,0 +1,2 @@
+---
+ast:
diff --git a/config/locales/doorkeeper.co.yml b/config/locales/doorkeeper.co.yml
index 52777eaf0..542ad7c57 100644
--- a/config/locales/doorkeeper.co.yml
+++ b/config/locales/doorkeeper.co.yml
@@ -114,7 +114,29 @@ co:
application:
title: Auturizazione OAuth riquestata
scopes:
- follow: bluccà, sbluccà, è reghje l’abbunamenti
- push: Riceve nutificazione push per u vostru contu
- read: leghje l’infurmazione di u vostru contu
- write: mandà missaghji per voi
+ follow: Mudificà rilazione trà i conti
+ push: Riceve e vostre nutificazione push
+ read: leghje tutte l’infurmazioni di u vostru contu
+ read:accounts: Vede l'infurmazione di i conti
+ read:blocks: vede i vostri blucchimi
+ read:favourites: vede i vostri favuriti
+ read:filters: vede i vostri filtri
+ read:follows: vede i vostri abbunamenti
+ read:lists: vede e vostre liste
+ read:mutes: vede i vostri piattati
+ read:notifications: vede e vostre nutificazione
+ read:reports: vede i vostri signalamenti
+ read:search: ricercà per voi
+ read:statuses: vede tutti i statuti
+ write: mudificà i dati di u vostru contu
+ write:accounts: mudificà u prufile
+ write:blocks: bluccà conti è dumini
+ write:favourites: aghjustà statuti à i favuriti
+ write:filters: creà filtri
+ write:follows: siguità conti
+ write:lists: creà liste
+ write:media: caricà fugliali media
+ write:mutes: piattà persone è cunversazione
+ write:notifications: sguassà e nutificazione
+ write:reports: palisà altre persone
+ write:statuses: pubblicà statuti
diff --git a/config/locales/doorkeeper.cs.yml b/config/locales/doorkeeper.cs.yml
index 876f448c7..352b31895 100644
--- a/config/locales/doorkeeper.cs.yml
+++ b/config/locales/doorkeeper.cs.yml
@@ -4,3 +4,139 @@ cs:
attributes:
doorkeeper/application:
name: Název aplikace
+ redirect_uri: URI přesměrování
+ scopes: Rozsahy
+ website: Stránka aplikace
+ errors:
+ models:
+ doorkeeper/application:
+ attributes:
+ redirect_uri:
+ fragment_present: nesmí obsahovat fragment.
+ invalid_uri: musí být platné URI.
+ relative_uri: musí být apsolutní URI.
+ secured_uri: musí být URI HTTPS/SSL.
+ doorkeeper:
+ applications:
+ buttons:
+ authorize: Autorizovat
+ cancel: Zrušit
+ destroy: Zničit
+ edit: Upravit
+ submit: Odeslat
+ confirmations:
+ destroy: Jste si jistý/á?
+ edit:
+ title: Upravit aplikaci
+ form:
+ error: A jéje! Zkontrolujte svůj formulář kvůli případným chybám
+ help:
+ native_redirect_uri: Použijte %{native_redirect_uri} pro místní testy
+ redirect_uri: Jedno URI na řádek
+ scopes: Oddělujte rozsahy mezerami. Pro použití výchozích rozsahů zanechte prázdné.
+ index:
+ application: Aplikace
+ callback_url: Zpáteční URL
+ delete: Smazat
+ name: Název
+ new: Nová aplikace
+ scopes: Rozsahy
+ show: Zobrazit
+ title: Vaše aplikace
+ new:
+ title: Nová aplikace
+ show:
+ actions: Akce
+ application_id: Klientský klíč
+ callback_urls: Zpáteční URL
+ scopes: Rozsahy
+ secret: Klientské tajemství
+ title: 'Aplikace: %{name}'
+ authorizations:
+ buttons:
+ authorize: Ověřit
+ deny: Zamítnout
+ error:
+ title: Vyskytla se chyba
+ new:
+ able_to: Bude moci
+ prompt: Aplikace %{client_name} vyžaduje přístup k vašemu účtu
+ title: Je vyžadována autorizace
+ show:
+ title: Zkopírujte tento autorizační kód a vložte ho do aplikace.
+ authorized_applications:
+ buttons:
+ revoke: Zamítnout
+ confirmations:
+ revoke: Jste si jistý/á?
+ index:
+ application: Aplikace
+ created_at: Autorizováno
+ date_format: "%d.%m.%Y %H:%M:%S"
+ scopes: Rozsahy
+ title: Vaše autorizované aplikace
+ errors:
+ messages:
+ access_denied: Vlastník zdroje či autorizační server zamítl požadavek.
+ credential_flow_not_configured: Proud Resource Owner Password Credentials selhal, protože Doorkeeper.configure.resource_owner_from_credentials nebylo nakonfigurováno.
+ invalid_client: Ověření klienta selhalo kvůli neznámému klientovi, chybějící klientské autentikaci či nepodporované autentikační metodě.
+ invalid_grant: Poskytnuté oprávnění je neplatné, vypršelé, zamítnuté, neshoduje se s URI přesměrování použitým v požadavku o autorizaci, nebo bylo uděleno jinému klientu.
+ invalid_redirect_uri: Přesměrovací URI není platné.
+ invalid_request: Požadavku chybí pžadovaný parametr, obsahuje nepodporovanou hodnotu parametru, či je jinak malformovaný.
+ invalid_resource_owner: Poskytnuté přihlašovací údaje vlastníka zdroje nejsou platné, nebo vlastník zdroje nemůže být nalezen
+ invalid_scope: Požadovaný rozsah je neplatný, neznámý, nebo malformovaný.
+ invalid_token:
+ expired: Přístupový token vypršel
+ revoked: Přístupový token byl zamítnut
+ unknown: Přístupový token je neplatný
+ resource_owner_authenticator_not_configured: Nález Resource Owner selhal, protože Doorkeeper.configure.resource_owner_authenticator nebylo nakonfigurováno.
+ server_error: Autorizační server se setkal s neočekávanou chybou, která mu zabránila ve vykonání požadavku.
+ temporarily_unavailable: Autorizační server vás nyní nemůže obsloužit kvůli dočasnému přetížení či údržbě serveru.
+ unauthorized_client: Klient není autorizován k vykonání tohoto požadavku touto metodou.
+ unsupported_grant_type: Tento typ oprávnění není podporován autorizačním serverem.
+ unsupported_response_type: Autorizační server nepodporuje tento typ odpovědi.
+ flash:
+ applications:
+ create:
+ notice: Aplikace vytvořena.
+ destroy:
+ notice: Aplikace smazána.
+ update:
+ notice: Aplikace aktualizována.
+ authorized_applications:
+ destroy:
+ notice: Aplikace zamítnuta.
+ layouts:
+ admin:
+ nav:
+ applications: Aplikace
+ oauth2_provider: Poskytovatel OAuth2
+ application:
+ title: Je požadována autorizace OAuth
+ scopes:
+ follow: upravovat vztahy mezi profily
+ push: přijímat vaše push oznámení
+ read: vidět všechna data vašeho účtu
+ read:accounts: vidět informace o účtech
+ read:blocks: vidět vaše blokace
+ read:favourites: vidět vaše oblíbení
+ read:filters: vidět vaše filtry
+ read:follows: vidět vaše sledování
+ read:lists: vidět vaše seznamy
+ read:mutes: vidět vaše ignorace
+ read:notifications: vidět vaše oznámení
+ read:reports: vidět vaše nahlášení
+ read:search: vyhledávat za vás
+ read:statuses: vidět všechny příspěvky
+ write: měnit všechna data vašeho účtu
+ write:accounts: měnit váš profil
+ write:blocks: blokovat účty a domény
+ write:favourites: oblibovat si příspěvky
+ write:filters: vytvářet filtry
+ write:follows: sledovat lidi
+ write:lists: vytvářet seznamy
+ write:media: nahrávat mediální soubory
+ write:mutes: ignorovat lidi a konverzace
+ write:notifications: vymazávat vaše oznámení
+ write:reports: nahlašovat jiné uživatele
+ write:statuses: publikovat příspěvky
diff --git a/config/locales/doorkeeper.cy.yml b/config/locales/doorkeeper.cy.yml
new file mode 100644
index 000000000..2fb4902e8
--- /dev/null
+++ b/config/locales/doorkeeper.cy.yml
@@ -0,0 +1,3 @@
+---
+cy:
+ doorkeeper: {}
diff --git a/config/locales/doorkeeper.da.yml b/config/locales/doorkeeper.da.yml
index 051bfd237..df964e4b1 100644
--- a/config/locales/doorkeeper.da.yml
+++ b/config/locales/doorkeeper.da.yml
@@ -78,14 +78,22 @@ da:
errors:
messages:
access_denied: Ejeren af ressourcen eller godkendelses serveren afviste anmodningen.
+ credential_flow_not_configured: Flytning af ressourceejers adgangskode mislykkedes grundet Doorkeeper.configure.resource_owner_from_credentials ikke er opsat.
+ invalid_client: Klient autentikationen mislykkedes grundet en ukendt klient, ingen klient autentikation fulgte med, eller en ikke-understøttet metode.
+ invalid_grant: Autoriseringen er ugyldig, udløbet, ophævet, passer ikke med den henvisnings URI der blev brugt i autoriserings anmodningen, eller blev givet til en anden klient.
invalid_redirect_uri: Ormdirigerings-uri'en der blev angivet er ikke gyldig.
invalid_request: Anmodningen mangler en parametre, inkluderer en ikke understøttet parametre værdi eller er på en eller anden måde deformeret.
+ invalid_resource_owner: De angivne ressource ejer kredentialer er ikke gyldige, eller ressource ejeren kunne ikke blive fundet
invalid_scope: Det anmodede omfang er ugyldigt, ukendt eller deformeret.
invalid_token:
expired: Adgangs-beviset er udløbet
revoked: Adgangs-beviset er blevet ophævet
unknown: Adgangs-beviset er ugyldigt
+ resource_owner_authenticator_not_configured: Ressource ejeren kunne ikke blive fundet grundet Doorkeeper.configure.resource_owner_authenticator ikke er konfigureret.
+ server_error: Autoriserings serveren blev mødt med en uventet betingelse der forhindrede den i at færdiggøre anmodningen.
+ temporarily_unavailable: Autoriserings serveren er på nuværende tidspunkt ikke i stand til at håndtere anmodningen grundet midlertidig overlast eller serveren er ved at blive opdateret.
unauthorized_client: Klienten er ikke godkendt til at udføre denne anmodning ved at bruge denne metode.
+ unsupported_grant_type: Autoriserings typen understøttes ikke af autoriserings serveren.
unsupported_response_type: Godkendelses serveren understøtter ikke denne type respons.
flash:
applications:
diff --git a/config/locales/doorkeeper.de.yml b/config/locales/doorkeeper.de.yml
index 7f3764180..bf4b06e7c 100644
--- a/config/locales/doorkeeper.de.yml
+++ b/config/locales/doorkeeper.de.yml
@@ -15,7 +15,7 @@ de:
fragment_present: darf kein Fragment enthalten.
invalid_uri: muss ein valider URI sein.
relative_uri: muss ein absoluter URI sein.
- secured_uri: muss ein HTTPS/SSL-URI sein.
+ secured_uri: muss ein HTTPS-/SSL-URI sein.
doorkeeper:
applications:
buttons:
@@ -59,7 +59,7 @@ de:
error:
title: Ein Fehler ist aufgetreten
new:
- able_to: Es wird in der Lage sein zu
+ able_to: 'Es wird folgende Befugnisse haben:'
prompt: Die Anwendung %{client_name} verlangt Zugriff auf dein Konto
title: Autorisierung erforderlich
show:
@@ -115,13 +115,13 @@ de:
title: OAuth-Autorisierung nötig
scopes:
follow: Kontenbeziehungen verändern
- push: erhalte deine Push-Benachrichtigungen
+ push: deine Push-Benachrichtigungen erhalten
read: all deine Daten lesen
read:accounts: deine Konteninformationen einsehen
read:blocks: deine Blockaden einsehen
read:favourites: deine Favoriten ansehen
read:filters: deine Filter ansehen
- read:follows: deine Follows sehen
+ read:follows: sehen, wem du folgst
read:lists: deine Listen sehen
read:mutes: deine Stummschaltungen einsehen
read:notifications: deine Benachrichtigungen sehen
diff --git a/config/locales/doorkeeper.eo.yml b/config/locales/doorkeeper.eo.yml
index 9713c462c..e80ba3236 100644
--- a/config/locales/doorkeeper.eo.yml
+++ b/config/locales/doorkeeper.eo.yml
@@ -114,7 +114,29 @@ eo:
application:
title: OAuth-a rajtigo bezonata
scopes:
- follow: sekvi, bloki, malbloki kaj malsekvi kontojn
- push: ricevi puŝ-sciigojn por via konto
- read: legi la datumojn de via konto
- write: mesaĝi kiel vi
+ follow: ŝanĝi rilatojn al aliaj kontoj
+ push: ricevi viajn puŝ-sciigojn
+ read: legi ĉiujn datumojn de via konto
+ read:accounts: vidi la informojn de la konto
+ read:blocks: vidi viajn blokojn
+ read:favourites: vidi viajn stelumojn
+ read:filters: vidi viajn filtrilojn
+ read:follows: vidi viajn sekvatojn
+ read:lists: vidi viajn listojn
+ read:mutes: vidi viajn silentigojn
+ read:notifications: vidi viajn sciigojn
+ read:reports: vidi viajn signalojn
+ read:search: serĉi vianome
+ read:statuses: vidi ĉiujn mesaĝojn
+ write: ŝanĝi ĉiujn datumojn de via konto
+ write:accounts: ŝanĝi vian profilon
+ write:blocks: bloki kontojn kaj domajnojn
+ write:favourites: stelumitaj mesaĝoj
+ write:filters: krei filtrilojn
+ write:follows: sekvi homojn
+ write:lists: krei listojn
+ write:media: alŝuti aŭdovidaĵojn
+ write:mutes: silentigi homojn kaj konversaciojn
+ write:notifications: forigi viajn sciigojn
+ write:reports: signali aliajn homojn
+ write:statuses: publikigi mesaĝojn
diff --git a/config/locales/doorkeeper.eu.yml b/config/locales/doorkeeper.eu.yml
index aba3166ac..f98babae6 100644
--- a/config/locales/doorkeeper.eu.yml
+++ b/config/locales/doorkeeper.eu.yml
@@ -114,7 +114,29 @@ eu:
application:
title: OAuth autorizazioa behar da
scopes:
- follow: jarraitu kontuak, blokeatu, utzi jarraitzeari eta desblokeatu
- push: jaso zure kontuaren push jakinarazpenak
- read: irakurri zure kontuko datuak
- write: zure izenean argitaratu
+ follow: aldatu kontuaren erlazioak
+ push: jaso push jakinarazpenak
+ read: irakurri zure kontuko datu guztiak
+ read:accounts: ikusi kontuaren informazioa
+ read:blocks: ikusi zure blokeoak
+ read:favourites: ikusi zure gogokoak
+ read:filters: ikusi zure iragazkiak
+ read:follows: ikusi zuk jarraitutakoak
+ read:lists: ikusi zure zerrendak
+ read:mutes: ikusi zuk mutututakoak
+ read:notifications: ikusi zure jakinarazpenak
+ read:reports: ikusi zure salaketak
+ read:search: bilatu zure izenean
+ read:statuses: ikusi mezu guztiak
+ write: kontuaren datu guztiak aldatzea
+ write:accounts: zure profila aldatzea
+ write:blocks: kontuak eta domeinuak blokeatzea
+ write:favourites: gogoko mezuak
+ write:filters: sortu iragazkiak
+ write:follows: jarraitu jendea
+ write:lists: sortu zerrendak
+ write:media: igo multimedia fitxategiak
+ write:mutes: mututu pertsonak eta elkarrizketak
+ write:notifications: garbitu zure jakinarazpenak
+ write:reports: salatu beste jendea
+ write:statuses: argitaratu mezuak
diff --git a/config/locales/doorkeeper.fr.yml b/config/locales/doorkeeper.fr.yml
index 09660cb49..eae691659 100644
--- a/config/locales/doorkeeper.fr.yml
+++ b/config/locales/doorkeeper.fr.yml
@@ -7,7 +7,7 @@ fr:
redirect_uri: L’URL de redirection
scope: Portée
scopes: Étendues
- website: Site web de l'application
+ website: Site web de l’application
errors:
models:
doorkeeper/application:
@@ -64,7 +64,7 @@ fr:
prompt: Autoriser %{client_name} à utiliser votre compte ?
title: Autorisation requise
show:
- title: Copiez ce code d'autorisation et collez-le dans l'application.
+ title: Copiez ce code d’autorisation et collez-le dans l’application.
authorized_applications:
buttons:
revoke: Annuler
@@ -119,11 +119,12 @@ fr:
push: recevoir vos notifications
read: lire toutes les données de votre compte
read:accounts: voir les informations du compte
- read:blocks: voir vos bloqués
+ read:blocks: voir vos bloquages
read:favourites: voir vos favoris
read:filters: voir vos filtres
+ read:follows: voir vos suivis
read:lists: voir vos listes
- read:mutes: voir vos silenciés
+ read:mutes: voir vos masquages
read:notifications: voir vos notifications
read:reports: voir vos rapports
read:search: rechercher en votre nom
@@ -131,10 +132,12 @@ fr:
write: modifier toutes les données de votre compte
write:accounts: modifier votre profil
write:blocks: bloquer des comptes et des domaines
+ write:favourites: statuts favoris
write:filters: créer des filtres
write:follows: suivre les gens
write:lists: créer des listes
write:media: téléverser des fichiers-média
- write:mutes: silencier des gens et des conversations
+ write:mutes: masquer des gens et des conversations
write:notifications: nettoyer vos notifications
+ write:reports: rapporter d’autres personnes
write:statuses: publier des statuts
diff --git a/config/locales/doorkeeper.it.yml b/config/locales/doorkeeper.it.yml
index 37b6f1013..a76130bb9 100644
--- a/config/locales/doorkeeper.it.yml
+++ b/config/locales/doorkeeper.it.yml
@@ -138,4 +138,5 @@ it:
write:media: caricare media
write:mutes: silenziare persone e conversazioni
write:notifications: cancellare le tue notifiche
+ write:reports: fare rapporto su altre persone
write:statuses: pubblicare status
diff --git a/config/locales/doorkeeper.ja.yml b/config/locales/doorkeeper.ja.yml
index 76174ef79..9bc2d9a80 100644
--- a/config/locales/doorkeeper.ja.yml
+++ b/config/locales/doorkeeper.ja.yml
@@ -133,7 +133,7 @@ ja:
write:blocks: ユーザーのブロックやドメインの非表示
write:favourites: トゥートのお気に入り登録
write:filters: フィルターの変更
- write:follows: フォローの変更
+ write:follows: あなたの代わりにフォロー、アンフォロー
write:lists: リストの変更
write:media: メディアのアップロード
write:mutes: アカウントや会話のミュート
diff --git a/config/locales/doorkeeper.ka.yml b/config/locales/doorkeeper.ka.yml
new file mode 100644
index 000000000..e462e66f1
--- /dev/null
+++ b/config/locales/doorkeeper.ka.yml
@@ -0,0 +1,142 @@
+---
+ka:
+ activerecord:
+ attributes:
+ doorkeeper/application:
+ name: აპლიკაციის სახელი
+ redirect_uri: გადამისამართების ური
+ scopes: ფარგლები
+ website: აპლიკაციის ვებ-საიტი
+ errors:
+ models:
+ doorkeeper/application:
+ attributes:
+ redirect_uri:
+ fragment_present: ვერ ექნება ფრაგმეტი.
+ invalid_uri: უნდა იყოს ვალიდური ური.
+ relative_uri: უნდა იყოს აბსოლუტური ური.
+ secured_uri: უნდა იყოს ჰტტპს/სსლ ური.
+ doorkeeper:
+ applications:
+ buttons:
+ authorize: ავტორიზაცია
+ cancel: უარყოფა
+ destroy: გაუქმება
+ edit: შეცვლა
+ submit: გაგრძელება
+ confirmations:
+ destroy: დარწმუნებული ხართ?
+ edit:
+ title: აპლიკაციის შეცვლა
+ form:
+ error: უპს! შესაძლო შეცდომებზე შეამოწმეთ თქვენი ფორმა
+ help:
+ native_redirect_uri: ლოკალური ტესტებისთვის მოიხმარეთ %{native_redirect_uri}
+ redirect_uri: გამოიყენეთ ერთი ხაზი თითო ური-სთვის
+ scopes: ფარგლები გამოჰყავით სიცარიელით. საწყისი ფარგლის გამოსაყენებლად დატოვეთ ცარიელი.
+ index:
+ application: აპლიკაცია
+ callback_url: ქოლბექ ურლ
+ delete: გაუქმება
+ name: სახელი
+ new: ახალი აპლიკაცია
+ scopes: ფარგლები
+ show: ჩვენება
+ title: თქვენი აპლიკაციები
+ new:
+ title: ახალი აპლიკაცია
+ show:
+ actions: მოქმედებები
+ application_id: კლიენტის გასაღები
+ callback_urls: ქოლბექ ურლები
+ scopes: ფარგლები
+ secret: კლიენტის სერვერი
+ title: 'აპლიკაცია: %{name}'
+ authorizations:
+ buttons:
+ authorize: ავტორიზაცია
+ deny: აკრძალვა
+ error:
+ title: წარმოიშვა შეცდომა
+ new:
+ able_to: ის შეძლებს
+ prompt: აპლიკაცია %{client_name} ითხოვს წვდომას თქვენს ანგარიშზე
+ title: საჭიროა ავტორიზაცია
+ show:
+ title: დააკოპირეთ ეს ავტორიზაციის კოდი და ჩასვით აპლიკაციაში.
+ authorized_applications:
+ buttons:
+ revoke: გაუქმება
+ confirmations:
+ revoke: დარწმუნებული ხართ?
+ index:
+ application: აპლიკაცია
+ created_at: ავტორიზებული
+ date_format: "%Y-%m-%d %H:%M:%S"
+ scopes: ფარგლები
+ title: თქვენი ავტორიზებული აპლიკაციები
+ errors:
+ messages:
+ access_denied: რესურსის მფლობელმა ან აუტორიზაციის სერვერმა აკრძალა ეს მოთხოვნა.
+ credential_flow_not_configured: რესურის მფლობელის პაროლის რწმუნებულებების ნაკადი ვერ შესრულდა არაკონფიგურირებული Doorkeeper.configure.resource_owner_from_credentials გამო.
+ invalid_client: ამოუცნობი კლიენტის გამო კლიენტ აუტენტიფიკაცია ვერ მოხერხდა, კლიენტის აუტენტიფიკაცია არ იყო თან დართული, ან მხარდაუჭერელი აუტენტიფიკაციის მეთოდი.
+ invalid_grant: მოწოდებული ავტორიზაციის გრანტი არასწორია, ვადაგასულია, გაუქმებულია არ ემთხვევა გადამისამართების ურის, რომელიც მოიხმარება ავტორიზაცის მოთხოვნაში, ან მიეცა სხვა კლიენტს.
+ invalid_redirect_uri: მითითებული გადამისამართების ური არაა ვალიდური.
+ invalid_request: მოთხოვნას აკლია აუცილებელი პარამეტრი, მოიცავს მხარდაუჭერელ პარამეტრის მნიშვნელობას, ან სხვაგვარად არაა გამართული.
+ invalid_resource_owner: მოწოდებული რესურსის მფლობელის რწმუნებულებები არაა ვალიდური, ან მფლობელის პონვა ვერ ხერხდება
+ invalid_scope: მოთხოვნილი ფარგალი არასწორია, ამოუცნობია ან არაა გამართული.
+ invalid_token:
+ expired: წვდომის ტოკენს გაუვიდა ვადა
+ revoked: წვდომის ტოკენი გაუქმდა
+ unknown: წვდომის ტოკენი არაა ვალიდური
+ resource_owner_authenticator_not_configured: რესურსის მფლობელის მოპოვება არ შედგა Doorkeeper.configure.resource_owner_authenticator კონფიგურაციის არ არსებობის გამო.
+ server_error: აუტორიზაციის სერვერს შეხვდა მოულოდნელი მდგომარეობა, რამაც ხელი შეუშალა მას აღესრულებინა მოთხონვა.
+ temporarily_unavailable: ავტორიზაციის სერვერი ამჟამად ვერ ახერხებს მოთხოვნის შემუშავებას დროებითი გადატვირთვის ან სერვერის შენარჩუნების გამო.
+ unauthorized_client: კლიენტი არაა ავტორიზებული შეასრულოს ეს მოთხოვნა ამ მეთოდით.
+ unsupported_grant_type: ავტორიზაციის გრანტის სახეობა არაა მხარდაჭერილი ავტორიზაციის სერვერის მიერ.
+ unsupported_response_type: ავტორიზაციის სერვერი არ უჭერს მხარს ამ პასუხის სახეობას.
+ flash:
+ applications:
+ create:
+ notice: აპლიკაცია შეიქმნა.
+ destroy:
+ notice: აპლიკაცია გაუქმდა.
+ update:
+ notice: აპლიკაცია განახლდა.
+ authorized_applications:
+ destroy:
+ notice: აპლიკაცია წაიშალა.
+ layouts:
+ admin:
+ nav:
+ applications: აპლიკაციები
+ oauth2_provider: ოუ-აუთ2 პროვაიდერი
+ application:
+ title: საჭიროა ოუ-აუთ ავტორიზაცია
+ scopes:
+ follow: შეცვალეთ ანგარიშის ურთიერთობები
+ push: მიიღეთ თქვენი ფუშ შეტყობინებები
+ read: წაიკითხოს მთელი თქვენი ანგარიშის მონაცემები
+ read:accounts: იხილოს ანგარიშის ინფორმაცია
+ read:blocks: იხილოს თქვენი ბლოკები
+ read:favourites: იხილოს თქვენი ფავორიტები
+ read:filters: იხილოს თქვენი ფილრები
+ read:follows: იხილოს თქვენი მიდევნებები
+ read:lists: იხილოს თქვენი სიები
+ read:mutes: იხილოს თქვენი გაჩუმებები
+ read:notifications: იხილოს თქვენი შეტყობინებები
+ read:reports: იხილოს თქვენი რეპორტები
+ read:search: მოძებნოს თქვენი სახელით
+ read:statuses: იხილოს ყველა სტატუსი
+ write: შეცვალოს მთელი თქვენი ანგარიშის მონაცემები
+ write:accounts: შეცვალოს თქვენი პროფილი
+ write:blocks: დაბლოკოს ანგარიშები და დომენები
+ write:favourites: ფავორიტი სტატუსები
+ write:filters: შექმნას ფილტრები
+ write:follows: გაყვეს ხალხს
+ write:lists: შექმნას სიები
+ write:media: ატვირთოს მედია ფაილები
+ write:mutes: გააგჩუმოს ადამიანები და საუბრები
+ write:notifications: გაასუფთავოს თქვენი შეტყობინებები
+ write:reports: დაარეპორტოს სხვა ადამიანები
+ write:statuses: გამოაქვეყნოს სტატუსები
diff --git a/config/locales/doorkeeper.pl.yml b/config/locales/doorkeeper.pl.yml
index 2e0254864..de724f6c9 100644
--- a/config/locales/doorkeeper.pl.yml
+++ b/config/locales/doorkeeper.pl.yml
@@ -90,7 +90,7 @@ pl:
revoked: Token dostępowy został unieważniony
unknown: Token dostępowy jest błędny
resource_owner_authenticator_not_configured: Wyszukiwanie właściciela zasobu nie powiodło się, ponieważ Doorkeeper.configure.resource_owner_authenticator nie został skonfigurowany.
- server_error: Serwer uwierzytelniający napotkał nieoczekiwand warunki, które uniemożliwiły obsłużenie żądania.
+ server_error: Serwer uwierzytelniający napotkał nieoczekiwane warunki, które uniemożliwiły obsłużenie żądania.
temporarily_unavailable: Serwer uwierzytelniający nie jest obecnie w stanie obsłużyć żądania z powodu tymczasowego przeciążenia lub prac konserwacyjnych.
unauthorized_client: Klient nie jest uprawniony do wykonania tego żądania przy pomocy tej metody.
unsupported_grant_type: Ten typ grantu uwierzytelniającego nie jest wspierany przez serwer uwierzytelniający.
diff --git a/config/locales/doorkeeper.pt-BR.yml b/config/locales/doorkeeper.pt-BR.yml
index afacfd7f7..dfab853c6 100644
--- a/config/locales/doorkeeper.pt-BR.yml
+++ b/config/locales/doorkeeper.pt-BR.yml
@@ -114,7 +114,29 @@ pt-BR:
application:
title: Autorização OAuth obrigatória
scopes:
- follow: seguir, bloquear, desbloquear e deixar de seguir outras contas
- push: receber notificações push na sua conta
- read: ler os dados da sua conta
- write: postar em seu nome
+ follow: modificar as relações com outras contas
+ push: receber suas notificações push
+ read: ler todos os dados da sua conta
+ read:accounts: ver as informações da conta
+ read:blocks: ver seus bloqueios
+ read:favourites: ver seus favoritos
+ read:filters: ver seus filtros
+ read:follows: ver quem você segue
+ read:lists: ver suas listas
+ read:mutes: ver seus usuários silenciados
+ read:notifications: ver suas notificações
+ read:reports: ver suas denúncias
+ read:search: buscar em seu nome
+ read:statuses: ver todos os status
+ write: modificar todos os dados da sua conta
+ write:accounts: modificar seu perfil
+ write:blocks: bloquear contas e domínios
+ write:favourites: status favoritos
+ write:filters: criar filtros
+ write:follows: seguir pessoas
+ write:lists: criar listas
+ write:media: enviar arquivos de mídia
+ write:mutes: silenciar pessoas e conversas
+ write:notifications: limpar suas notificações
+ write:reports: reportar outras pessoas
+ write:statuses: publicar status
diff --git a/config/locales/doorkeeper.ro.yml b/config/locales/doorkeeper.ro.yml
new file mode 100644
index 000000000..fea4baf60
--- /dev/null
+++ b/config/locales/doorkeeper.ro.yml
@@ -0,0 +1,3 @@
+---
+ro:
+ doorkeeper: {}
diff --git a/config/locales/doorkeeper.ru.yml b/config/locales/doorkeeper.ru.yml
index 0a88d628e..f37317559 100644
--- a/config/locales/doorkeeper.ru.yml
+++ b/config/locales/doorkeeper.ru.yml
@@ -72,7 +72,7 @@ ru:
index:
application: Приложение
created_at: Авторизовано
- date_format: "%Y-%m-%d %H:%M:%S"
+ date_format: "%d.%m.%Y %H:%M:%S"
scopes: Разрешения
title: Ваши авторизованные приложения
errors:
@@ -117,4 +117,26 @@ ru:
follow: подписываться, отписываться, блокировать и разблокировать аккаунты
push: принимать push-уведомления для Вашего аккаунта
read: читать данные Вашего аккаунта
- write: отправлять за Вас посты
+ read:accounts: видеть информацию об аккаунтах
+ read:blocks: видеть ваших заблокированных
+ read:favourites: видеть ваше избранное
+ read:filters: видеть ваши фильтры
+ read:follows: видеть, на кого вы подписаны
+ read:lists: видеть ваши списки
+ read:mutes: видеть список заглушенных
+ read:notifications: видеть ваши уведомления
+ read:reports: видеть ваши жалобы
+ read:search: использовать поиск
+ read:statuses: видеть все статусы
+ write: изменять все данные вашего аккаунта
+ write:accounts: редактировать ваш профиль
+ write:blocks: блокировать аккаунты и домены
+ write:favourites: отмечать статусы как избранные
+ write:filters: создавать фильтры
+ write:follows: подписываться на людей
+ write:lists: создавать списки
+ write:media: выкладывать медиаконтент
+ write:mutes: заглушать людей и обсуждения
+ write:notifications: очищать список уведомлений
+ write:reports: отправлять жалобы на других
+ write:statuses: публиковать статусы
diff --git a/config/locales/doorkeeper.sl.yml b/config/locales/doorkeeper.sl.yml
index 0967ef424..c27457089 100644
--- a/config/locales/doorkeeper.sl.yml
+++ b/config/locales/doorkeeper.sl.yml
@@ -1 +1,6 @@
-{}
+---
+sl:
+ activerecord:
+ attributes:
+ doorkeeper/application:
+ name: Ime programa
diff --git a/config/locales/doorkeeper.uk.yml b/config/locales/doorkeeper.uk.yml
index d80abf01a..205ad026f 100644
--- a/config/locales/doorkeeper.uk.yml
+++ b/config/locales/doorkeeper.uk.yml
@@ -5,6 +5,8 @@ uk:
doorkeeper/application:
name: Ім'я
redirect_uri: URI перенаправлення
+ scopes: Рамки
+ website: Веб-сайт додатку
errors:
models:
doorkeeper/application:
diff --git a/config/locales/el.yml b/config/locales/el.yml
index 11ba128c1..84119b086 100644
--- a/config/locales/el.yml
+++ b/config/locales/el.yml
@@ -5,13 +5,13 @@ el:
about_mastodon_html: Το Mastodon είναι ένα κοινωνικό δίκτυο που βασίζεται σε ανοιχτά δικτυακά πρωτόκολλα και ελεύθερο λογισμικό ανοιχτού κώδικα. Είναι αποκεντρωμένο όπως το e-mail.
about_this: Σχετικά
administered_by: 'Διαχειρίζεται από:'
+ api: API
+ apps: Εφαρμογές κινητών
closed_registrations: Αυτή τη στιγμή οι εγγραφές σε αυτό τον κόμβο είναι κλειστές. Αλλά! Μπορείς να βρεις έναν άλλο κόμβο για να ανοίξεις λογαριασμό και να έχεις πρόσβαση από εκεί στο ίδιο ακριβώς δίκτυο.
contact: Επικοινωνία
contact_missing: Δεν έχει οριστεί
contact_unavailable: Μ/Δ
- description_headline: Τι είναι το %{domain};
- domain_count_after: άλλους διακομιστές
- domain_count_before: Συνδέεται με
+ documentation: Τεκμηρίωση
extended_description_html: |
Ένα καλό σημείο για κανόνες
Η αναλυτική περιγραφή δεν έχει ακόμα οριστεί
@@ -28,25 +28,39 @@ el:
hosted_on: Το Mastodon φιλοξενείται στο %{domain}
learn_more: Μάθε περισσότερα
other_instances: Λίστα κόμβων
+ privacy_policy: Πολιτική απορρήτου
source_code: Πηγαίος κώδικας
- status_count_after: καταστάσεις
- status_count_before: Που έχουν γράψει
- user_count_after: χρήστες
+ status_count_after:
+ one: δημοσίευση
+ other: δημοσιεύσεις
+ status_count_before: Που έγραψαν
+ terms: Όροι χρήσης
+ user_count_after:
+ one: χρήστης
+ other: χρήστες
user_count_before: Σπίτι για
what_is_mastodon: Τι είναι το Mastodon;
accounts:
+ choices_html: 'Επιλογές του/της %{name}:'
follow: Ακολούθησε
- followers: Ακόλουθοι
+ followers:
+ one: Ακόλουθος
+ other: Ακόλουθοι
following: Ακολουθεί
+ joined: Εγγράφηκε στις %{date}
media: Πολυμέσα
moved_html: 'Ο/Η %{name} μετακόμισε στο %{new_profile_link}:'
network_hidden: Αυτή η πληροφορία δεν είναι διαθέσιμη
nothing_here: Δεν υπάρχει τίποτα εδώ!
people_followed_by: Χρήστες που ακολουθεί ο/η %{name}
people_who_follow: Χρήστες που ακολουθούν τον/την %{name}
- posts: Τουτ
+ pin_errors:
+ following: Πρέπει ήδη να ακολουθείς το άτομο που θέλεις να επιδοκιμάσεις
+ posts:
+ one: Τουτ
+ other: Τουτ
+ posts_tab_heading: Τουτ
posts_with_replies: Τουτ και απαντήσεις
- remote_follow: Απομακρυσμένη παρακολούθηση
reserved_username: Το όνομα χρήστη είναι κατειλημμένο
roles:
admin: Διαχειριστής
@@ -180,6 +194,7 @@ el:
unsuspend_account: Ο/Η %{name} ήρε την παύση του λογαριασμού του χρήστη %{target}
update_custom_emoji: Ο/Η %{name} ενημέρωσε το emoji %{target}
update_status: Ο/Η %{name} ενημέρωσε την κατάσταση του/της %{target}
+ deleted_status: "(διαγραμμένη δημοσίευση)"
title: Αρχείο ελέγχου
custom_emojis:
by_domain: Τομέας
@@ -206,6 +221,27 @@ el:
update_failed_msg: Αδυναμία ενημέρωσης του emoji
updated_msg: Επιτυχής ενημέρωση του Emoji!
upload: Ανέβασμα
+ dashboard:
+ backlog: χρονοκαθυστερημένες εργασίες
+ config: Διαμόρφωση
+ feature_deletions: Διαγραφή λογαριασμών
+ feature_invites: Σύνδεσμοι προσκλήσεων
+ feature_registrations: Εγγραφές
+ feature_relay: Ανταποκριτής ομοσπονδίας
+ features: Λειτουργίες
+ hidden_service: Ομοσπονδία με κρυμμένες υπηρεσίες
+ open_reports: ανοιχτές καταγγελίες
+ recent_users: Πρόσφατοι χρήστες
+ search: Αναζήτηση πλήρους κειμένου
+ single_user_mode: Λειτουργία μοναδιαίου χρήστη
+ software: Λογισμικό
+ space: Κατανάλωση χώρου
+ title: Ταμπλό
+ total_users: χρήστες συνολικά
+ trends: Τάσεις
+ week_interactions: αλληλεπιδράσεις αυτή την εβδομάδα
+ week_users_active: ενεργοί αυτή την εβδομάδα
+ week_users_new: χρήστες αυτή την εβδομάδα
domain_blocks:
add_new: Προσθήκη νέου
created_msg: Ο αποκλεισμός τομέα είναι υπό επεξεργασία
@@ -255,12 +291,23 @@ el:
search: Αναζήτηση
title: Γνωστοί κόμβοι
invites:
+ deactivate_all: Απενεργοποίηση όλων
filter:
all: Όλες
available: Διαθέσιμες
expired: Ληγμένες
title: Φίλτρο
title: Προσκλήσεις
+ relays:
+ add_new: Πρόσθεσε νέο ανταποκριτή (relay)
+ description_html: Ο
ομοσπονδιακός ανταποκριτής είναι ένας ενδιάμεσος εξυπηρετητής (server) που ανταλλάσσει μεγάλους όγκους δημόσιων τουτ μεταξύ εξυπηρετητών που εγγράφονται και δημοσιεύουν σε αυτόν.
Βοηθάει μικρούς και μεσαίους εξυπηρετητές να ανακαλύψουν περιεχόμενο στο fediverse, που υπό άλλες συνθήκες θα χρειαζόταν κάποιους τοπικούς χρήστες που να ακολουθούν χρήστες σε απομακρυσμένους εξυπηρετητές.
+ enable_hint: Μόλις ενεργοποιηθεί, ο εξυπηρετητής (server) σου θα εγγραφεί σε όλα τα δημόσια τουτ αυτού του ανταποκριτή (relay) και θα αρχίσει να προωθεί τα δικά του δημόσια τουτ σε αυτόν.
+ inbox_url: URL ανταποκριτή
+ pending: Περιμένοντας την έγκριση του ανταποκριτή
+ save_and_enable: Αποθήκευση και ενεργοποίηση
+ setup: Όρισε μια σύνδεση ανταπόκρισης
+ status: Κατάσταση
+ title: Ανταποκριτές
report_notes:
created_msg: Επιτυχής δημιουργία σημείωσης καταγγελίας!
destroyed_msg: Επιτυχής διαγραφή σημείωσης καταγγελίας!
@@ -310,12 +357,18 @@ el:
contact_information:
email: Επαγγελματικό email
username: Όνομα χρήστη επικοινωνίας
+ custom_css:
+ desc_html: Τροποποίηση της εμφάνισης μέσω CSS που φορτώνεται σε κάθε σελίδα
+ title: Προσαρμοσμένο CSS
hero:
desc_html: Εμφανίζεται στην μπροστινή σελίδα. Συνίσταται τουλάχιστον 600x100px. Όταν λείπει, χρησιμοποιείται η μικρογραφία του κόμβου
title: Εικόνα ήρωα
peers_api_enabled:
desc_html: Ονόματα τομέων που αυτός ο κόμβος έχει ήδη συναντήσει στο fediverse
title: Δημοσίευση λίστας κόμβων που έχουν ανακαλυφθεί
+ preview_sensitive_media:
+ desc_html: Οι προεπισκοπήσεις συνδέσμων σε τρίτους ιστότοπους θα είναι ορατές ακόμα κι όταν το πολυμέσο έχει σημειωθεί ως ευαίσθητο
+ title: Εμφάνιση ευαίσθητων πολυμέσων στις προεπισκοπήσεις OpenGraph
registrations:
closed_message:
desc_html: Εμφανίζεται στην εισαγωγική σελίδα όταν οι εγγραφές είναι κλειστές. Μπορείς να χρησιμοποιήσεις HTML tags
@@ -336,11 +389,14 @@ el:
desc_html: Δείξε ένα σήμα προσωπικού στη σελίδα ενός χρήστη
title: Δείξε διακριτικό προσωπικού
site_description:
- desc_html: Εισαγωγική παράγραφος στην αρχική σελίδα και στα meta tags. Μπορείς να χρησιμοποιήσεις HTML tags, συγκεκριμένα
< a>
και
< em>
.
+ desc_html: Εισαγωγική παράγραφος στην αρχική σελίδα. Περιέγραψε τι κάνει αυτό τον διακομιστή Mastodon διαφορετικό και ό,τι άλλο ενδιαφέρον. Μπορείς να χρησιμοποιήσεις HTML tags, συγκεκριμένα
< a>
και
< em>
.
title: Περιγραφή κόμβου
site_description_extended:
desc_html: Ένα καλό μέρος για τον κώδικα δεοντολογίας, τους κανόνες, τις οδηγίες και ό,τι άλλο διαφοροποιεί τον κόμβο σου. Δέχεται και κώδικα HTML
title: Προσαρμοσμένες εκτεταμένες πληροφορίες
+ site_short_description:
+ desc_html: Εμφανίζεται στην πλαϊνή μπάρα και στα meta tags. Περιέγραψε τι είναι το Mastodon και τι κάνει αυτό τον διακομιστή ιδιαίτερο σε μια παράγραφο. Αν μείνει κενό, θα πάρει την προκαθορισμένη περιγραφή του κόμβου.
+ title: Σύντομη περιγραφή του κόμβου
site_terms:
desc_html: Μπορείς να γράψεις τη δική σου πολιτική απορρήτου, όρους χρήσης ή άλλους νομικούς όρους. Μπορείς να χρησιμοποιήσεις HTML tags
title: Προσαρμοσμένοι όροι χρήσης της υπηρεσίας
@@ -362,6 +418,7 @@ el:
media:
title: Πολυμέσα
no_media: Χωρίς πολυμέσα
+ no_status_selected: Καμία δημοσίευση δεν άλλαξε αφού καμία δεν ήταν επιλεγμένη
title: Καταστάσεις λογαριασμού
with_media: Με πολυμέσα
subscriptions:
@@ -371,6 +428,12 @@ el:
last_delivery: Τελευταία παράδοση
title: WebSub
topic: Θέμα
+ suspensions:
+ bad_acct_msg: Η τιμή επιβεβαίωσης δεν ταιριάζει. Σίγουρα αναστέλλεις το σωστό λογαριασμό;
+ hint_html: 'Για να επιβεβαιώσεις την αναστολή του λογαριασμού, γράψε %{value} στο ακόλουθο πεδίο:'
+ proceed: Συνέχεια
+ title: Αναστολή %{acct}
+ warning_html: 'Αναστέλλοντας αυτό το λογαριασμό θα διαγραφούν
αμετάκλητα δεδομένα του, μεταξύ των οποίων:'
title: Διαχείριση
admin_mailer:
new_report:
@@ -502,10 +565,13 @@ el:
true_privacy_html: Έχε υπ' όψιν σου πως
η πραγματική ιδιωτικότητα επιτυγχάνεται μόνο με κρυπτογράφηση από άκρη σε άκρη.
unlocked_warning_html: Μπορεί ο οποιοσδήποτε να σε ακολουθήσει και να βλέπει κατευθείαν τις ιδιωτικές ενημερώσεις σου. %{lock_link} για να αναθεωρήσεις και απορρίψεις ακόλουθους.
unlocked_warning_title: Ο λογαριασμός σου δεν είναι κλειδωμένος
+ footer:
+ developers: Ανάπτυξη
+ more: Περισσότερα…
+ resources: Πόροι
generic:
changes_saved_msg: Οι αλλαγές αποθηκεύτηκαν!
- powered_by: παρέχεται από %{link}
- save_changes: Αποθήκευσε αλλαγές
+ save_changes: Αποθήκευσε τις αλλαγές
validation_errors:
one: Κάτι δεν είναι εντάξει ακόμα! Για κοίταξε το παρακάτω σφάλμα
other: Κάτι δεν είναι εντάξει ακόμα! Για κοίταξε τα παρακάτω %{count} σφάλματα
@@ -540,8 +606,6 @@ el:
expires_at: Λήγει
uses: Χρήσεις
title: Προσκάλεσε άτομα
- landing_strip_html: Ο/Η
%{name} είναι χρήστης στο %{link_to_root_path}. Μπορείς να ακολουθήσεις ή να αλληλεπιδράσεις μαζί τους αν έχεις λογαριασμό οπουδήποτε στο fediverse.
- landing_strip_signup_html: Αν όχι, μπορείς να
γραφτείς εδώ.
lists:
errors:
limit: Έχεις φτάσει το μέγιστο πλήθος επιτρεπτών λιστών
@@ -595,11 +659,11 @@ el:
decimal_units:
format: "%n%u"
units:
- billion: Δις.
- million: Εκ.
- quadrillion: Τετρ.
- thousand: Χ.
- trillion: Τρις.
+ billion: δις.
+ million: εκ.
+ quadrillion: τετράκις.
+ thousand: χ.
+ trillion: τρις.
pagination:
newer: Νεότερο
next: Επόμενο
@@ -612,11 +676,14 @@ el:
publishing: Δημοσίευση
web: Διαδίκτυο
remote_follow:
- acct: Γράψε το ΌνομαΧρήστη@τομέας από όπου θέλεις να ακολουθήσεις
+ acct: Γράψε το ΌνομαΧρήστη@τομέα από όπου θέλεις να εκτελέσεις την ενέργεια αυτή
missing_resource: Δεν βρέθηκε το απαιτούμενο URL ανακατεύθυνσης για το λογαριασμό σου
no_account_html: Δεν έχεις λογαριασμό; Μπορείς
να γραφτείς εδώ
proceed: Συνέχισε για να ακολουθήσεις
prompt: 'Θα ακολουθήσεις:'
+ remote_interaction:
+ proceed: Συνέχισε για να αλληλεπιδράσεις
+ prompt: 'Θέλεις να αλληλεπιδράσεις με αυτό το τουτ:'
remote_unfollow:
error: Σφάλμα
title: Τίτλος
@@ -700,16 +767,16 @@ el:
private: Τα μη δημόσια τουτ δεν καρφιτσώνονται
reblog: Οι προωθήσεις δεν καρφιτσώνονται
show_more: Δείξε περισσότερα
+ sign_in_to_participate: Εγγράφου για να συμμετάσχεις στη συζήτηση
title: '%{name}: "%{quote}"'
visibilities:
private: Μόνο ακόλουθοι
private_long: Εμφάνιση μόνο σε ακόλουθους
public: Δημόσιο
public_long: Βλέπει οποιοσδήποτε
- unlisted: Ακαταχώριστο
+ unlisted: Μη καταχωρημένο
unlisted_long: Βλέπει οποιοσδήποτε, αλλά δεν καταχωρείται στις δημόσιες ροές
stream_entries:
- click_to_show: Κλικ για εμφάνιση
pinned: Καρφιτσωμένο τουτ
reblogged: προωθημένο
sensitive_content: Ευαίσθητο περιεχόμενο
@@ -803,6 +870,7 @@ el:
time:
formats:
default: "%b %d, %Y, %H:%M"
+ month: "%b %Y"
two_factor_authentication:
code_hint: Βάλε τον κωδικό που δημιούργησε η εφαρμογή πιστοποίησής σου για επιβεβαίωση
description_html: Αν ενεργοποιήσεις την
πιστοποίηση 2 παραγόντων (2FA), για να συνδεθείς θα πρέπει να έχεις το τηλέφωνό σου, που θα σου δημιουργήσει κλειδιά εισόδου.
diff --git a/config/locales/en.yml b/config/locales/en.yml
index d2158a1ab..a3c723635 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -5,13 +5,13 @@ en:
about_mastodon_html: Mastodon is a social network based on open web protocols and free, open-source software. It is decentralized like e-mail.
about_this: About
administered_by: 'Administered by:'
+ api: API
+ apps: Mobile apps
closed_registrations: Registrations are currently closed on this instance. However! You can find a different instance to make an account on and get access to the very same network from there.
contact: Contact
contact_missing: Not set
contact_unavailable: N/A
- description_headline: What is %{domain}?
- domain_count_after: other instances
- domain_count_before: Connected to
+ documentation: Documentation
extended_description_html: |
A good place for rules
The extended description has not been set up yet.
@@ -28,25 +28,39 @@ en:
hosted_on: Mastodon hosted on %{domain}
learn_more: Learn more
other_instances: Instance list
+ privacy_policy: Privacy policy
source_code: Source code
- status_count_after: statuses
+ status_count_after:
+ one: status
+ other: statuses
status_count_before: Who authored
- user_count_after: kosmonauts
+ terms: Terms of service
+ user_count_after:
+ one: kosmonaut
+ other: kosmonauts
user_count_before: Home to
what_is_mastodon: What is Mastodon?
accounts:
+ choices_html: "%{name}'s choices:"
follow: Follow
- followers: Followers
+ followers:
+ one: Follower
+ other: Followers
following: Following
+ joined: Joined %{date}
media: Media
moved_html: "%{name} has moved to %{new_profile_link}:"
network_hidden: This information is not available
nothing_here: There is nothing here!
people_followed_by: People whom %{name} follows
people_who_follow: People who follow %{name}
- posts: Toots
+ pin_errors:
+ following: You must be already following the person you want to endorse
+ posts:
+ one: Toot
+ other: Toots
+ posts_tab_heading: Toots
posts_with_replies: Toots and replies
- remote_follow: Remote follow
reserved_username: The username is reserved
roles:
admin: Admin
@@ -180,6 +194,7 @@ en:
unsuspend_account: "%{name} unsuspended %{target}'s account"
update_custom_emoji: "%{name} updated emoji %{target}"
update_status: "%{name} updated status by %{target}"
+ deleted_status: "(deleted status)"
title: Audit log
custom_emojis:
by_domain: Domain
@@ -206,6 +221,27 @@ en:
update_failed_msg: Could not update that emoji
updated_msg: Emoji successfully updated!
upload: Upload
+ dashboard:
+ backlog: backlogged jobs
+ config: Configuration
+ feature_deletions: Account deletions
+ feature_invites: Invite links
+ feature_registrations: Registrations
+ feature_relay: Federation relay
+ features: Features
+ hidden_service: Federation with hidden services
+ open_reports: open reports
+ recent_users: Recent users
+ search: Full-text search
+ single_user_mode: Single user mode
+ software: Software
+ space: Space usage
+ title: Dashboard
+ total_users: users in total
+ trends: Trends
+ week_interactions: interactions this week
+ week_users_active: active this week
+ week_users_new: users this week
domain_blocks:
add_new: Add new
created_msg: Domain block is now being processed
@@ -255,12 +291,23 @@ en:
search: Search
title: Known instances
invites:
+ deactivate_all: Deactivate all
filter:
all: All
available: Available
expired: Expired
title: Filter
title: Invites
+ relays:
+ add_new: Add new relay
+ description_html: A
federation relay is an intermediary server that exchanges large volumes of public toots between servers that subscribe and publish to it.
It can help small and medium servers discover content from the fediverse, which would otherwise require local users manually following other people on remote servers.
+ enable_hint: Once enabled, your server will subscribe to all public toots from this relay, and will begin sending this server's public toots to it.
+ inbox_url: Relay URL
+ pending: Waiting for relay's approval
+ save_and_enable: Save and enable
+ setup: Setup a relay connection
+ status: Status
+ title: Relays
report_notes:
created_msg: Report note successfully created!
destroyed_msg: Report note successfully deleted!
@@ -310,6 +357,9 @@ en:
contact_information:
email: Business e-mail
username: Contact username
+ custom_css:
+ desc_html: Modify the look with CSS loaded on every page
+ title: Custom CSS
hero:
desc_html: Displayed on the frontpage. At least 600x100px recommended. When not set, falls back to instance thumbnail
title: Hero image
@@ -339,11 +389,14 @@ en:
desc_html: Show a staff badge on a user page
title: Show staff badge
site_description:
- desc_html: Introductory paragraph on the frontpage and in meta tags. You can use HTML tags, in particular
<a>
and
<em>
.
+ desc_html: Introductory paragraph on the frontpage. Describe what makes this Mastodon server special and anything else important. You can use HTML tags, in particular
<a>
and
<em>
.
title: Instance description
site_description_extended:
desc_html: A good place for your code of conduct, rules, guidelines and other things that set your instance apart. You can use HTML tags
title: Custom extended information
+ site_short_description:
+ desc_html: Displayed in sidebar and meta tags. Describe what Mastodon is and what makes this server special in a single paragraph. If empty, defaults to instance description.
+ title: Short instance description
site_terms:
desc_html: You can write your own privacy policy, terms of service or other legalese. You can use HTML tags
title: Custom terms of service
@@ -365,6 +418,7 @@ en:
media:
title: Media
no_media: No media
+ no_status_selected: No statuses were changed as none were selected
title: Account statuses
with_media: With media
subscriptions:
@@ -374,6 +428,12 @@ en:
last_delivery: Last delivery
title: WebSub
topic: Topic
+ suspensions:
+ bad_acct_msg: The confirmation value didn't match up. Are you suspending the right account?
+ hint_html: 'To confirm the suspension of the account, please enter %{value} into the field below:'
+ proceed: Proceed
+ title: Suspend %{acct}
+ warning_html: 'Suspending this account will
irreversibly delete data from this account, which includes:'
title: Administration
admin_mailer:
new_report:
@@ -505,9 +565,12 @@ en:
true_privacy_html: Please mind that
true privacy can only be achieved with end-to-end encryption.
unlocked_warning_html: Anyone can follow you to immediately view your private statuses. %{lock_link} to be able to review and reject followers.
unlocked_warning_title: Your account is not locked
+ footer:
+ developers: Developers
+ more: More…
+ resources: Resources
generic:
changes_saved_msg: Changes successfully saved!
- powered_by: powered by %{link}
save_changes: Save changes
validation_errors:
one: Something isn't quite right yet! Please review the error below
@@ -543,8 +606,6 @@ en:
expires_at: Expires
uses: Uses
title: Invite people
- landing_strip_html: "
%{name} is a user on %{link_to_root_path}. You can follow them or interact with them if you have an account anywhere in the fediverse."
- landing_strip_signup_html: If you don't, you can
sign up here.
lists:
errors:
limit: You have reached the maximum amount of lists
@@ -616,11 +677,14 @@ en:
publishing: Publishing
web: Web
remote_follow:
- acct: Enter your username@domain you want to follow from
+ acct: Enter your username@domain you want to act from
missing_resource: Could not find the required redirect URL for your account
no_account_html: Don't have an account? You can
sign up here
proceed: Proceed to follow
prompt: 'You are going to follow:'
+ remote_interaction:
+ proceed: Proceed to interact
+ prompt: 'You want to interact with this toot:'
remote_unfollow:
error: Error
title: Title
@@ -704,6 +768,7 @@ en:
private: Non-public toot cannot be pinned
reblog: A boost cannot be pinned
show_more: Show more
+ sign_in_to_participate: Sign in to participate in the conversation
title: '%{name}: "%{quote}"'
visibilities:
private: Followers-only
@@ -713,7 +778,6 @@ en:
unlisted: Unlisted
unlisted_long: Everyone can see, but not listed on public timelines
stream_entries:
- click_to_show: Click to show
pinned: Pinned toot
reblogged: boosted
sensitive_content: Sensitive content
@@ -807,6 +871,7 @@ en:
time:
formats:
default: "%b %d, %Y, %H:%M"
+ month: "%b %Y"
two_factor_authentication:
code_hint: Enter the code generated by your authenticator app to confirm
description_html: If you enable
two-factor authentication, logging in will require you to be in possession of your phone, which will generate tokens for you to enter.
diff --git a/config/locales/eo.yml b/config/locales/eo.yml
index 389819f7f..996287335 100644
--- a/config/locales/eo.yml
+++ b/config/locales/eo.yml
@@ -5,13 +5,13 @@ eo:
about_mastodon_html: Mastodon estas socia reto bazita sur malfermitaj retaj protokoloj kaj sur libera malfermitkoda programo. Ĝi estas sencentra kiel retmesaĝoj.
about_this: Pri
administered_by: 'Administrata de:'
+ api: API
+ apps: Poŝtelefonaj aplikaĵoj
closed_registrations: Registriĝoj estas nuntempe fermitaj en ĉi tiu nodo. Tamen, vi povas trovi alian nodon por fari konton kaj aliri al la sama reto de tie.
contact: Kontakti
contact_missing: Ne elektita
contact_unavailable: Ne disponebla
- description_headline: Kio estas %{domain}?
- domain_count_after: aliaj nodoj
- domain_count_before: Konektita al
+ documentation: Dokumentado
extended_description_html: |
Bona loko por reguloj
La detala priskribo ne estis elektita.
@@ -28,25 +28,30 @@ eo:
hosted_on: "%{domain} estas nodo de Mastodon"
learn_more: Lerni pli
other_instances: Listo de nodoj
+ privacy_policy: Privateca politiko
source_code: Fontkodo
status_count_after: mesaĝoj
status_count_before: Kie skribiĝis
+ terms: Uzkondiĉoj
user_count_after: uzantoj
user_count_before: Hejmo de
what_is_mastodon: Kio estas Mastodon?
accounts:
+ choices_html: 'Proponoj de %{name}:'
follow: Sekvi
followers: Sekvantoj
following: Sekvatoj
+ joined: Aliĝis je %{date}
media: Aŭdovidaĵoj
moved_html: "%{name} moviĝis al %{new_profile_link}:"
network_hidden: Tiu informo ne estas disponebla
nothing_here: Estas nenio ĉi tie!
people_followed_by: Sekvatoj de %{name}
people_who_follow: Sekvantoj de %{name}
+ pin_errors:
+ following: Vi devas sekvi la homon, kiun vi volas proponi
posts: Mesaĝoj
posts_with_replies: Mesaĝoj kaj respondoj
- remote_follow: Fore sekvi
reserved_username: La uzantnomo estas rezervita
roles:
admin: Administranto
@@ -180,6 +185,7 @@ eo:
unsuspend_account: "%{name} malhaltigis la konton de %{target}"
update_custom_emoji: "%{name} ĝisdatigis emoĝion %{target}"
update_status: "%{name} ĝisdatigis mesaĝon de %{target}"
+ deleted_status: "(forigita mesaĝo)"
title: Kontrola protokolo
custom_emojis:
by_domain: Domajno
@@ -206,6 +212,27 @@ eo:
update_failed_msg: Ĝisdatigi tiun emoĝion ne eblis
updated_msg: Emoĝio sukcese ĝisdatigita!
upload: Alŝuti
+ dashboard:
+ backlog: postigitaj taskoj
+ config: Agordado
+ feature_deletions: Forigo de kontoj
+ feature_invites: Invitaj ligiloj
+ feature_registrations: Registriĝoj
+ feature_relay: Federacia ripetilo
+ features: Funkcioj
+ hidden_service: Federacio kun kaŝitaj servoj
+ open_reports: nefermitaj raportoj
+ recent_users: Lastatempaj uzantoj
+ search: Tutteksta serĉado
+ single_user_mode: Unuuzanta reĝimo
+ software: Programo
+ space: Memorspaca uzado
+ title: Kontrolpanelo
+ total_users: uzantoj sume
+ trends: Furoroj
+ week_interactions: interagoj tiusemajne
+ week_users_active: aktivaj tiusemajne
+ week_users_new: uzantoj tiusemajne
domain_blocks:
add_new: Aldoni novan
created_msg: Domajna blokado en traktado
@@ -255,12 +282,21 @@ eo:
search: Serĉi
title: Konataj nodoj
invites:
+ deactivate_all: Malaktivigi ĉion
filter:
all: Ĉio
available: Disponebla
expired: Eksvalida
title: Filtri
title: Invitoj
+ relays:
+ add_new: Aldoni novan ripetilon
+ description_html: "
Fratara ripetilo estas survoja servilo, kiu interŝanĝas grandan kvanton de publikaj mesaĝoj inter serviloj, kiuj abonas kaj publikigas al ĝi.
Ĝi povas helpi etajn kaj mezgrandajn servilojn malkovri enhavon de la fediverse, kio normale postulus al lokaj uzantoj mane sekvi homojn de foraj serviloj."
+ enable_hint: Post ebligo, via servilo abonos ĉiujn publikajn mesaĝojn de tiu ripetilo, kaj komencos sendi publikajn mesaĝojn de la servilo al ĝi.
+ inbox_url: URL de la ripetilo
+ setup: Agordi konekton al ripetilo
+ status: Stato
+ title: Ripetiloj
report_notes:
created_msg: Signala noto sukcese kreita!
destroyed_msg: Signala noto sukcese forigita!
@@ -316,6 +352,9 @@ eo:
peers_api_enabled:
desc_html: Nomoj de domajnoj, kiujn ĉi tiu nodo renkontis en la fediverse
title: Publikigi liston de malkovritaj nodoj
+ preview_sensitive_media:
+ desc_html: Antaŭvido de ligiloj en aliaj retejoj montros bildeton eĉ se la aŭdovidaĵo estas markita kiel tikla
+ title: Montri tiklajn aŭdovidaĵojn en la antaŭvidoj de OpenGraph
registrations:
closed_message:
desc_html: Montrita sur la hejma paĝo kiam registriĝoj estas fermitaj. Vi povas uzi HTML-etikedojn
@@ -336,11 +375,14 @@ eo:
desc_html: Montri teaman insignon en paĝo de uzanto
title: Montri teaman insignon
site_description:
- desc_html: Enkonduka alineo en la ĉefpaĝo kaj en informaj etikedoj. Vi povas uzi HTML-etikedojn, kiel
<a>
kaj
<em>
.
+ desc_html: Enkonduka alineo en la ĉefpaĝo. Priskribu la unikaĵojn de ĉi tiu nodo de Mastodon, kaj ĉiujn aliajn gravaĵojn. Vi povas uzi HTML-etikedojn, kiel
<a>
kaj
<em>
.
title: Priskribo de la nodo
site_description_extended:
desc_html: Bona loko por viaj sintenaj reguloj, aliaj reguloj, gvidlinioj kaj aliaj aferoj, kiuj apartigas vian nodon. Vi povas uzi HTML-etikedojn
title: Propraj detalaj informoj
+ site_short_description:
+ desc_html: Afiŝita en la flankpanelo kaj metadatumaj etikedoj. Priskribu kio estas Mastodon, kaj kio specialas en ĉi tiu nodo, per unu alineo. Se malplena, la priskribo de la nodo estos uzata.
+ title: Mallonga priskribo de la nodo
site_terms:
desc_html: Vi povas skribi vian propran privatecan politikon, viajn uzkondiĉojn aŭ aliajn leĝaĵojn. Vi povas uzi HTML-etikedojn
title: Propraj uzkondiĉoj
@@ -362,6 +404,7 @@ eo:
media:
title: Aŭdovidaĵoj
no_media: Neniu aŭdovidaĵo
+ no_status_selected: Neniu mesaĝo estis ŝanĝita ĉar neniu estis elektita
title: Mesaĝoj de la konto
with_media: Kun aŭdovidaĵoj
subscriptions:
@@ -504,9 +547,12 @@ eo:
true_privacy_html: Bonvolu atenti, ke
vera privateco povas esti atingita nur per ĉifrado de komenco al fino.
unlocked_warning_html: Iu ajn povas eksekvi vin por tuj vidi viajn privatajn mesaĝojn. %{lock_link} por povi akcepti kaj rifuzi petojn de sekvado.
unlocked_warning_title: Via konto ne estas ŝlosita
+ footer:
+ developers: Programistoj
+ more: Pli…
+ resources: Rimedoj
generic:
changes_saved_msg: Ŝanĝoj sukcese konservitaj!
- powered_by: povigita de %{link}
save_changes: Konservi ŝanĝojn
validation_errors:
one: Io mise okazis! Bonvolu konsulti la suban erar-raporton
@@ -542,8 +588,6 @@ eo:
expires_at: Eksvalidiĝas je
uses: Uzoj
title: Inviti homojn
- landing_strip_html: "
%{name} estas uzanto en %{link_to_root_path}. Vi povas sekvi tiun aŭ interagi kun tiu, se vi havas konton ie ajn en la fediverse."
- landing_strip_signup_html: Se vi ne havas, vi povas
registriĝi ĉi tie.
lists:
errors:
limit: Vi atingis la maksimuman kvanton de listoj
@@ -615,11 +659,14 @@ eo:
publishing: Publikado
web: Reto
remote_follow:
- acct: Enmetu vian uzantnomo@domajno de kie vi volas sekvi
+ acct: Enmetu vian uzantnomo@domajno de kie vi volas agi
missing_resource: La URL de plusendado ne estis trovita
no_account_html: Ĉu vi ne havas konton? Vi povas
registriĝi tie
proceed: Daŭrigi por eksekvi
prompt: 'Vi eksekvos:'
+ remote_interaction:
+ proceed: Efektivigi la interagon
+ prompt: 'Vi volas interagi kun ĉi tiu mesaĝo:'
remote_unfollow:
error: Eraro
title: Titolo
@@ -703,6 +750,7 @@ eo:
private: Mesaĝo nepublika ne povas esti alpinglita
reblog: Diskonigo ne povas esti alpinglita
show_more: Montri pli
+ sign_in_to_participate: Ensaluti por partopreni en la konversacio
title: '%{name}: "%{quote}"'
visibilities:
private: Montri nur al sekvantoj
@@ -712,7 +760,6 @@ eo:
unlisted: Nelistigita
unlisted_long: Ĉiuj povas vidi, sed nelistigita en publikaj tempolinioj
stream_entries:
- click_to_show: Alklaki por montri
pinned: Alpinglita
reblogged: diskonigita
sensitive_content: Tikla enhavo
diff --git a/config/locales/es.yml b/config/locales/es.yml
index 3e22e2643..ca04f0b1c 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -9,9 +9,6 @@ es:
contact: Contacto
contact_missing: No especificado
contact_unavailable: N/A
- description_headline: "¿Qué es %{domain}?"
- domain_count_after: otras instancias
- domain_count_before: Conectado a
extended_description_html: |
Un buen lugar para las reglas
La descripción extendida no se ha colocado aún.
@@ -45,7 +42,6 @@ es:
people_who_follow: Usuarios que siguen a %{name}
posts: Toots
posts_with_replies: Toots con respuestas
- remote_follow: Seguir
reserved_username: El nombre de usuario está reservado
roles:
admin: Administrador
@@ -486,7 +482,6 @@ es:
unlocked_warning_title: Tu cuenta no está bloqueada
generic:
changes_saved_msg: "¡Cambios guardados con éxito!"
- powered_by: gracias a %{link}
save_changes: Guardar cambios
validation_errors:
one: "¡Algo no está bien! Por favor, revisa el error"
@@ -521,8 +516,6 @@ es:
expires_at: Expira
uses: Usos
title: Invitar a gente
- landing_strip_html: "
%{name} es un usuario en %{link_to_root_path}. Puedes seguirlo(a) o interactuar con el o ella si tienes una cuenta en cualquier parte del fediverse."
- landing_strip_signup_html: Si no tienes una, puedes
registrarte aquí.
lists:
errors:
limit: Has alcanzado la cantidad máxima de listas
@@ -688,7 +681,6 @@ es:
unlisted: Público, pero no mostrar en la historia federada
unlisted_long: Todos pueden ver, pero no está listado en las líneas de tiempo públicas
stream_entries:
- click_to_show: Click para mostrar
pinned: Toot fijado
reblogged: retooteado
sensitive_content: Contenido sensible
diff --git a/config/locales/eu.yml b/config/locales/eu.yml
index e141f27ee..e767d9ad9 100644
--- a/config/locales/eu.yml
+++ b/config/locales/eu.yml
@@ -5,13 +5,13 @@ eu:
about_mastodon_html: Mastodon web protokolo ireki eta libreak darabiltzan gizarte sare bat da. E-mail sarea bezala deszentralizatua da.
about_this: Honi buruz
administered_by: 'Administratzailea(k):'
+ api: APIa
+ apps: Aplikazio mugikorrak
closed_registrations: Harpidetza itxita dago orain instantzia honetan. Hala ere, beste instantzia bat aurkitu dezakezu kontua egiteko eta hona ere sarbidea izan.
contact: Kontaktua
contact_missing: Ezarri gabe
contact_unavailable: E/E
- description_headline: Zer da %{domain}?
- domain_count_after: instantzia desberdinetara
- domain_count_before: Konektatuta
+ documentation: Dokumentazioa
extended_description_html: |
Arauentzako toki egoki bat
Azalpen luzea ez da ezarri oraindik.
@@ -28,25 +28,39 @@ eu:
hosted_on: Mastodon %{domain} domeinuan ostatatua
learn_more: Ikasi gehiago
other_instances: Instantzien zerrenda
+ privacy_policy: Pribatutasun politika
source_code: Iturburu kodea
- status_count_after: mezu idatzi dituzte
+ status_count_after:
+ one: mezu
+ other: mezu
status_count_before: Hauek
- user_count_after: erabiltzaile daude
+ terms: Erabilera baldintzak
+ user_count_after:
+ one: erabiltzaile
+ other: erabiltzaile
user_count_before: Hemen
what_is_mastodon: Zer da Mastodon?
accounts:
+ choices_html: "%{name}(r)en aukerak:"
follow: Jarraitu
- followers: Jarraitzaile
+ followers:
+ one: Jarraitzaile
+ other: jarraitzaile
following: Jarraitzen
+ joined: "%{date}(e)an elkartua"
media: Multimedia
moved_html: "%{name} hona lekualdatu da %{new_profile_link}:"
network_hidden: Informazio hau ez dago eskuragarri
nothing_here: Ez dago ezer hemen!
people_followed_by: "%{name}(e)k jarraitzen dituenak"
people_who_follow: "%{name} jarraitzen dutenak"
- posts: Toot-ak
+ pin_errors:
+ following: Onetsi nahi duzun pertsona aurretik jarraitu behar duzu
+ posts:
+ one: Toot
+ other: Toot
+ posts_tab_heading: Tootak
posts_with_replies: Toot eta erantzunak
- remote_follow: Jarraitu urrunetik
reserved_username: Erabiltzaile-izena erreserbatuta dago
roles:
admin: Administratzailea
@@ -180,6 +194,7 @@ eu:
unsuspend_account: "%{name}(e)k %{target} kontuaren kanporaketa atzera bota du"
update_custom_emoji: "%{name}(e)k %{target} emoji-a eguneratu du"
update_status: "%{name} (e)k %{target}(r)en mezua aldatu du"
+ deleted_status: "(ezabatutako mezua)"
title: Auditoria-egunkaria
custom_emojis:
by_domain: Domeinua
@@ -206,6 +221,27 @@ eu:
update_failed_msg: Ezin izan da emoji hori eguneratu
updated_msg: Emoji-a ongi eguneratu da!
upload: Igo
+ dashboard:
+ backlog: aurreikusitako lanak
+ config: Konfigurazioa
+ feature_deletions: Kontu ezabaketak
+ feature_invites: Gonbidapen estekak
+ feature_registrations: Izen emateak
+ feature_relay: Federazio haria
+ features: Ezaugarriak
+ hidden_service: Federazioa ezkutuko zerbitzuekin
+ open_reports: salaketa irekiak
+ recent_users: Azken erabiltzaileak
+ search: Testu osoko bilaketa
+ single_user_mode: Erabiltzaile bakarreko modua
+ software: Software
+ space: Espazio erabilera
+ title: Kontrol panela
+ total_users: erabiltzaile guztira
+ trends: Joerak
+ week_interactions: interakzio aste honetan
+ week_users_active: aktibo aste honetan
+ week_users_new: erabiltzaile aste honetan
domain_blocks:
add_new: Gehitu berria
created_msg: Domeinuaren blokeoa orain prozesatzen ari da
@@ -255,12 +291,16 @@ eu:
search: Bilatu
title: Instantzia ezagunak
invites:
+ deactivate_all: Desgaitu guztiak
filter:
all: Denak
available: Eskuragarri
expired: Iraungitua
title: Iragazi
title: Gonbidapenak
+ relays:
+ add_new: Gehitu hari berria
+ status: Mezuak
report_notes:
created_msg: Salaketa oharra ongi sortu da!
destroyed_msg: Salaketa oharra ongi ezabatu da!
@@ -310,12 +350,18 @@ eu:
contact_information:
email: Laneko e-mail helbidea
username: Kontaktuaren erabiltzaile-izena
+ custom_css:
+ desc_html: Aldatu itxura orri bakoitzean kargatutako CSS bidez
+ title: CSS pertsonala
hero:
desc_html: Azaleko orrian bistaratua. Gutxienez 600x100px aholkatzen da. Ezartzen ez bada, instantziaren irudia hartuko du
title: Azaleko irudia
peers_api_enabled:
desc_html: Instantzia honek fedibertsuan aurkitutako domeinu-izenak
title: Argitaratu aurkitutako instantzien zerrenda
+ preview_sensitive_media:
+ desc_html: Beste webguneetako esteken aurrebistak iruditxoa izango du multimedia hunkigarri gisa markatzen bada ere
+ title: Erakutsi multimedia hunkigarria OpenGraph aurrebistetan
registrations:
closed_message:
desc_html: Azaleko orrian bistaratua izen ematea ixten denean. HTML etiketak erabili ditzakezu
@@ -336,11 +382,14 @@ eu:
desc_html: Erakutsi langile banda erabiltzailearen orrian
title: Erakutsi langile banda
site_description:
- desc_html: Azaleko orrian eta meta etiketetan agertuko den sarrera paragrafoa. HTML etiketak erabili ditzakezu, zehazki
<a>
eta
<em>
.
+ desc_html: Azaleko orrian agertuko den sarrera paragrafoa. Azaldu zerk egiten duen berezi Mastodon zerbitzari hau eta garrantzizko beste edozer. HTML etiketak erabili ditzakezu, zehazki
<a>
eta
<em>
.
title: Instantziaren deskripzioa
site_description_extended:
desc_html: Zure jokabide-koderako toki on bat, arauak, gidalerroak eta zure instantzia desberdin egiten duten bestelakoak. HTML etiketak erabili ditzakezu
title: Informazio hedatu pertsonalizatua
+ site_short_description:
+ desc_html: Albo-barra eta meta etiketetan bistaratua. Deskribatu zerk egiten duen Mastodon zerbitzari hau berezia paragrafo batean. Hutsik lagatzekotan lehenetsitako deskripzioa agertuko da.
+ title: Instantziaren deskripzio laburra
site_terms:
desc_html: Zure pribatutasun politika, erabilera baldintzak eta bestelako testu legalak idatzi ditzakezu. HTML etiketak erabili ditzakezu
title: Erabilera baldintza pertsonalizatuak
@@ -362,6 +411,7 @@ eu:
media:
title: Multimedia
no_media: Multimediarik ez
+ no_status_selected: Ez da mezurik aldatu ez delako mezurik aukeratu
title: Kontuaren mezuak
with_media: Multimediarekin
subscriptions:
@@ -371,6 +421,11 @@ eu:
last_delivery: Azken bidalketa
title: WebSub
topic: Mintzagaia
+ suspensions:
+ bad_acct_msg: Berrespen balioa ez dator bat. Dagokion kontua kanporatzen ari zara?
+ hint_html: 'Kontuaren kanporatzea berresteko, sartu %{value} beheko eremuan:'
+ title: Kanporatu %{acct}
+ warning_html: 'Kontu hau kanporatzeak
behin betiko ezabatuko ditu kontu honetako datuak, hauek barne:'
title: Administrazioa
admin_mailer:
new_report:
@@ -474,6 +529,22 @@ eu:
follows: Zuk jarraitutakoak
mutes: Zuk mututukoak
storage: Multimedia biltegiratzea
+ filters:
+ contexts:
+ home: Hasierako denbora-lerroa
+ notifications: Jakinarazpenak
+ public: Denbora-lerro publikoak
+ thread: Elkarrizketak
+ edit:
+ title: Editatu iragazkia
+ errors:
+ invalid_context: Testuinguru baliogabe edo hutsa eman da
+ invalid_irreversible: Behin betiko iragazketa hasiera edo jakinarazpenen testuinguruan besterik ez dabil
+ index:
+ delete: Ezabatu
+ title: Iragazkiak
+ new:
+ title: Gehitu iragazki berria
followers:
domain: Domeinua
explanation_html: Zure mezuen pribatutasuna bermatu nahi baduzu, nork jarraitzen zaituen jakin behar duzu.
Zure mezu pribatuak zure jarraitzaileak dituzten instantzia guztietara bidaltzen dira. Instantzia bateko langileek edo softwareak zure pribatutasunari dagokion begirunea ez dutela izango uste baduzu, berrikusi eta kendu jarraitzaileak.
@@ -486,9 +557,12 @@ eu:
true_privacy_html: Kontuan izan
egiazko pribatutasuna lortzeko muturretik muturrerako zifratzea ezinbestekoa dela.
unlocked_warning_html: Edonork jarraitu zaitzake eta berehala zure mezu pribatuak ikusi. %{lock_link} jarraitzaileak berrikusi eta ukatu ahal izateko.
unlocked_warning_title: Zure kontua ez dago giltzapetuta
+ footer:
+ developers: Garatzaileak
+ more: Gehiago…
+ resources: Baliabideak
generic:
changes_saved_msg: Aldaketak ongi gorde dira!
- powered_by: "(e)k %{link} darabil"
save_changes: Gorde aldaketak
validation_errors:
one: Zerbait ez dabil ongi! Egiaztatu beheko errorea mesedez
@@ -524,8 +598,6 @@ eu:
expires_at: Iraungitzea
uses: Erabilerak
title: Gonbidatu jendea
- landing_strip_html: "
%{name} %{link_to_root_path} instantziako erabiltzailea da. Fedibertsoko edozein tokitan kontua baduzu jarraitu dezakezu eta harremanetan jarri."
- landing_strip_signup_html: Ez baduzu,
hemen izena eman dezakezu.
lists:
errors:
limit: Gehieneko zerrenda kopurura heldu zara
@@ -599,6 +671,7 @@ eu:
remote_follow:
acct: Sartu jarraitzeko erabili nahi duzun erabiltzaile@domeinua
missing_resource: Ezin izan da zure konturako behar den birbideratze URL-a
+ no_account_html: Ez duzu konturik?
Izena eman dezakezu
proceed: Ekin jarraitzeari
prompt: 'Hau jarraituko duzu:'
remote_unfollow:
@@ -693,7 +766,6 @@ eu:
unlisted: Zerrendatu gabea
unlisted_long: Edonork ikusi dezake, baina ez da denbora-lerro publikoetan agertzen
stream_entries:
- click_to_show: Klik erakusteko
pinned: Finkatutako toot-a
reblogged: "(r)en bultzada"
sensitive_content: Eduki hunkigarria
@@ -787,6 +859,7 @@ eu:
time:
formats:
default: "%Y(e)ko %b %d, %H:%M"
+ month: "%b %Y"
two_factor_authentication:
code_hint: Sartu zure autentifikazio aplikazioak sortutako kodea berresteko
description_html: "
Bi faktoreetako autentifikazioa gaitzen baduzu, saioa hasteko telefonoa eskura izan beharko duzu, honek zuk sartu behar dituzun kodeak sortuko dituelako."
diff --git a/config/locales/fa.yml b/config/locales/fa.yml
index 89ed2bbfb..b0d230634 100644
--- a/config/locales/fa.yml
+++ b/config/locales/fa.yml
@@ -5,13 +5,13 @@ fa:
about_mastodon_html: ماستدون (Mastodon) یک شبکهٔ اجتماعی است که بر اساس پروتکلهای آزاد وب و نرمافزارهای آزاد و کدباز ساخته شده است. این شبکه مانند ایمیل غیرمتمرکز است.
about_this: درباره
administered_by: 'با مدیریت:'
+ api: رابط برنامهنویسی کاربردی
+ apps: اپهای موبایل
closed_registrations: ثبتنام روی این سرور هماینک فعال نیست. اما شما میتوانید سرور دیگری بیابید و با حسابی که آنجا میسازید دقیقاً به همین شبکه دسترسی داشته باشید.
contact: تماس
contact_missing: تعیین نشده
contact_unavailable: موجود نیست
- description_headline: "%{domain} چیست؟"
- domain_count_after: سرور دیگر
- domain_count_before: متصل به
+ documentation: مستندات
extended_description_html: |
جای خوبی برای قانونها
توضیحات تکمیلی نوشته نشده است.
@@ -28,25 +28,39 @@ fa:
hosted_on: ماستدون، میزبانیشده روی %{domain}
learn_more: بیشتر بدانید
other_instances: فهرست سرورها
+ privacy_policy: سیاست رازداری
source_code: کدهای منبع
- status_count_after: چیز نوشتهاند
+ status_count_after:
+ one: نوشته
+ other: نوشته
status_count_before: که جمعاً
- user_count_after: کاربر
+ terms: شرایط کاربری
+ user_count_after:
+ one: کاربر
+ other: کاربر
user_count_before: دارای
what_is_mastodon: ماستدون چیست؟
accounts:
+ choices_html: 'انتخابهای %{name}:'
follow: پی بگیرید
- followers: پیگیران
+ followers:
+ one: پیگیر
+ other: پیگیر
following: پی میگیرد
+ joined: کاربر از %{date}
media: عکس و ویدیو
moved_html: "%{name} حساب خود را به %{new_profile_link} منتقل کرده است:"
network_hidden: این اطلاعات در دسترس نیست
nothing_here: اینجا چیزی نیست!
people_followed_by: کسانی که %{name} پی میگیرد
people_who_follow: کسانی که %{name} را پی میگیرند
- posts: نوشتهها
+ pin_errors:
+ following: شما باید پیگیر کاربری باشید که میخواهید ثابت کنید
+ posts:
+ one: بوق
+ other: بوق
+ posts_tab_heading: بوقها
posts_with_replies: نوشتهها و پاسخها
- remote_follow: پیگیری غیرمستقیم
reserved_username: این نام کاربری در دسترس نیست
roles:
admin: مدیر
@@ -180,6 +194,7 @@ fa:
unsuspend_account: "%{name} حساب کاربر %{target} را از تعلیق خارج کرد"
update_custom_emoji: "%{name} شکلک %{target} را بهروز کرد"
update_status: "%{name} نوشتهٔ %{target} را بهروز کرد"
+ deleted_status: "(بوق پاکشده)"
title: سیاههٔ بازرسی
custom_emojis:
by_domain: دامین
@@ -206,6 +221,27 @@ fa:
update_failed_msg: این شکلک نتوانست بهروز شود
updated_msg: شکلک با موفقیت بهروز شد!
upload: بارگذاری
+ dashboard:
+ backlog: کارهای باقیمانده
+ config: پیکربندی
+ feature_deletions: حسابهای حذفشده
+ feature_invites: دعوتنامهها
+ feature_registrations: ثبتنامها
+ feature_relay: رله
+ features: ویژگیها
+ hidden_service: ارتباط میانسروری با سرویسهای نهفته
+ open_reports: گزارشهای فعال
+ recent_users: کاربران تازه
+ search: جستجوی متنی
+ single_user_mode: حالت تککاربره
+ software: نرمافزار
+ space: فضای مصرفشده
+ title: ابزارهای مدیریت
+ total_users: شمار کاربران
+ trends: هشتگهای پرکاربرد
+ week_interactions: فعالیتها در این هفته
+ week_users_active: کاربران فعال هفتهٔ اخیر
+ week_users_new: کاربران هفتهٔ اخیر
domain_blocks:
add_new: افزودن تازه
created_msg: مسدودکردن دامین در حال انجام است
@@ -255,12 +291,23 @@ fa:
search: جستجو
title: سرورهای شناختهشده
invites:
+ deactivate_all: غیرفعالکردن همه
filter:
all: همه
available: در دسترس
expired: منقضیشده
title: فیلتر
title: دعوتها
+ relays:
+ add_new: افزودن رلهٔ تازه
+ description_html: یک
رلهٔ میانسروری (federation relay) یک سرور میانجی است که حجم زیادی از بوقهای عمومی را بین سرورهای گوناگونی که عضوش میشوند جابهجا میکند.
رلهها به سرورهای کوچک و متوسط کمک میکنند تا مطالب عمومی بیشتری را بیابند. اگر رله نباشد، این مطالب عمومی تنها وقتی پیدا میشوند که کاربران محلی خودشان پیگیر کاربران روی سرورهای دیگر شوند.
+ enable_hint: اگر فعال باشد، سرور شما عضو همهٔ بوقهای عمومیای را که از این رله میآید میگیرد، و بوقهای عمومی این سرور را به آن میفرستند.
+ inbox_url: نشانی رله
+ pending: در انتظار پذیرش رله
+ save_and_enable: ذخیره و فعالسازی
+ setup: پیوستن به رلهها
+ status: وضعیت
+ title: رلهها
report_notes:
created_msg: یادداشت گزارش با موفقیت ساخته شد!
destroyed_msg: یادداشت گزارش با موفقیت حذف شد!
@@ -310,6 +357,9 @@ fa:
contact_information:
email: ایمیل کاری
username: نام کاربری
+ custom_css:
+ desc_html: ظاهر ماستدون را با CSS-ای که در همهٔ صفحهها جاسازی میشود تغییر دهید
+ title: سبک CSS سفارشی
hero:
desc_html: در صفحهٔ آغازین نمایش مییابد. دستکم ۶۰۰×۱۰۰ پیکسل توصیه میشود. اگر تعیین نشود، با تصویر بندانگشتی سرور جایگزین خواهد شد
title: تصویر سربرگ
@@ -339,11 +389,14 @@ fa:
desc_html: نمایش علامت همکار روی صفحهٔ کاربر
title: نمایش علامت همکار
site_description:
- desc_html: معرفی کوتاهی که روی صفحهٔ اصلی و همچنین به عنوان فرادادهٔ صفحهها نمایش مییابد. میتوانید HTML بنویسید, بهویژه
<a>
و
<em>
.
+ desc_html: معرفی کوتاهی که روی صفحهٔ اصلی نمایش مییابد. دربارهٔ این که چه چیزی دربارهٔ این سرور ماستدون ویژه است یا هر چیز مهم دیگری بنویسید. میتوانید HTML بنویسید، بهویژه
<a>
و
<em>
.
title: دربارهٔ سایت
site_description_extended:
desc_html: جای خوبی برای نوشتن سیاستهای کاربری، قانونها، راهنماها، و هر چیزی که ویژهٔ این سرور است. تگهای HTML هم مجاز است
title: اطلاعات تکمیلی سفارشی
+ site_short_description:
+ desc_html: روی نوار کناری و همچنین به عنوان فرادادهٔ صفحهها نمایش مییابد. در یک بند توضیح دهید که ماستدون چیست و چرا این سرور با بقیه فرق دارد. اگر خالی بگذارید، به جایش «دربارهٔ سایت» نمایش مییابد.
+ title: توضیح کوتاه دربارهٔ سایت
site_terms:
desc_html: میتوانید سیاست رازداری، شرایط استفاده، یا سایر مسائل قانونی را به دلخواه خود بنویسید. تگهای HTML هم مجاز است
title: شرایط استفادهٔ سفارشی
@@ -365,6 +418,7 @@ fa:
media:
title: رسانه
no_media: بدون عکس یا ویدیو
+ no_status_selected: هیچ بوقی تغییری نکرد زیرا هیچکدام از آنها انتخاب نشده بودند
title: نوشتههای حساب
with_media: دارای عکس یا ویدیو
subscriptions:
@@ -374,6 +428,12 @@ fa:
last_delivery: آخرین ارسال
title: WebSub
topic: موضوع
+ suspensions:
+ bad_acct_msg: محتوایی که برای تأیید وارد کردید منطبق نبود. آیا دارید حساب درستی را معلق میکنید؟
+ hint_html: 'برای تأیید معلقکردن حساب، لطفاً در کادر زیر %{value} را وارد کنید:'
+ proceed: ادامه
+ title: معلقکردن %{acct}
+ warning_html: 'معلقکردن این حساب
برای همیشه دادههایش را پاک میکند. دادههایی شامل:'
title: مدیریت سرور
admin_mailer:
new_report:
@@ -505,9 +565,12 @@ fa:
true_privacy_html: لطفاً بدانید که
داشتن حریم خصوصی واقعی تنها با رمزگذاری سرتاسر (end-to-end encryption) ممکن است.
unlocked_warning_html: هر کسی میتواند پیگیر شما شود تا بلافاصله نوشتههای خصوصی شما را ببیند. اگر %{lock_link} خواهید توانست درخواستهای پیگیری را بررسی کرده و نپذیرید.
unlocked_warning_title: حساب شما خصوصی نیست
+ footer:
+ developers: برنامهنویسان
+ more: بیشتر…
+ resources: منابع
generic:
changes_saved_msg: تغییرات با موفقیت ذخیره شدند!
- powered_by: نیرو گرفته از %{link}
save_changes: ذخیرهٔ تغییرات
validation_errors:
one: یک چیزی هنوز درست نیست! لطفاً خطاهای زیر را ببینید
@@ -543,8 +606,6 @@ fa:
expires_at: تاریخ انقضا
uses: استفادهها
title: دعوت دیگران
- landing_strip_html: "
%{name} کاربری روی %{link_to_root_path} است. شما با داشتن حساب روی هر سروری میتوانید نوشتههای او را پیگیری کرده یا با او ارتباط داشته باشید."
- landing_strip_signup_html: اگر هنوز حسابی ندارید
اینجا حساب باز کنید.
lists:
errors:
limit: از این بیشتر نمیشود فهرست داشت
@@ -621,6 +682,9 @@ fa:
no_account_html: هنوز عضو نیستید؟
اینجا میتوانید حساب باز کنید
proceed: درخواست پیگیری
prompt: 'شما قرار است این حساب را پیگیری کنید:'
+ remote_interaction:
+ proceed: ادامهٔ برهمکنش
+ prompt: 'شما میخواهید دربارهٔ این بوق کاری کنید:'
remote_unfollow:
error: خطا
title: عنوان
@@ -704,6 +768,7 @@ fa:
private: نوشتههای غیرعمومی را نمیتوان ثابت کرد
reblog: بازبوقها را نمیتوان ثابت کرد
show_more: نمایش
+ sign_in_to_participate: برای شرکت در گفتگو وارد حساب خود شوید
title: '%{name}: "%{quote}"'
visibilities:
private: خصوصی
@@ -713,7 +778,6 @@ fa:
unlisted: فهرستنشده
unlisted_long: عمومی، ولی در فهرست نوشتهها نمایش نمییابد
stream_entries:
- click_to_show: برای نمایش کلیک کنید
pinned: نوشتههای ثابت
reblogged: بازبوقید
sensitive_content: محتوای حساس
@@ -726,6 +790,7 @@ fa:
time:
formats:
default: "%d %b %Y, %H:%M"
+ month: "%b %Y"
two_factor_authentication:
code_hint: برای تأیید، کدی را که برنامهٔ تأییدکننده ساخته است وارد کنید
description_html: اگر
ورود دومرحلهای را فعال کنید، برای ورود به سیستم به تلفن خود نیاز خواهید داشت تا برایتان یک کد موقتی بسازد.
diff --git a/config/locales/fi.yml b/config/locales/fi.yml
index 6c9076919..96339e35e 100644
--- a/config/locales/fi.yml
+++ b/config/locales/fi.yml
@@ -9,9 +9,6 @@ fi:
contact: Ota yhteyttä
contact_missing: Ei asetettu
contact_unavailable: Ei saatavilla
- description_headline: Mikä on %{domain}?
- domain_count_after: muuhun instanssiin
- domain_count_before: Yhdistyneenä
extended_description_html: |
Hyvä paikka säännöille
Pidempää kuvausta ei ole vielä laadittu.
@@ -46,7 +43,6 @@ fi:
people_who_follow: Käyttäjän %{name} seuraajat
posts: Tuuttaukset
posts_with_replies: Tuuttaukset ja vastaukset
- remote_follow: Etäseuranta
reserved_username: Käyttäjänimi on varattu
roles:
admin: Ylläpitäjä
@@ -484,7 +480,6 @@ fi:
unlocked_warning_title: Tiliäsi ei ole lukittu
generic:
changes_saved_msg: Muutosten tallennus onnistui!
- powered_by: voimanlähteenä %{link}
save_changes: Tallenna muutokset
validation_errors:
one: Kaikki ei ole aivan oikein! Tarkasta alla oleva virhe
@@ -519,8 +514,6 @@ fi:
expires_at: Vanhenee
uses: Käytetty
title: Kutsu ihmisiä
- landing_strip_html: "
%{name} on käyttäjänä palvelimella %{link_to_root_path}. Voit seurata heitä tai pitää heihin yhteyttä, jos sinulla on tili missä tahansa fediversumin kolkassa."
- landing_strip_signup_html: Jos sinulla ei ole tiliä, voit
rekisteröityä tätä kautta.
lists:
errors:
limit: Sinulla on jo suurin sallittu määrä listoja
@@ -684,7 +677,6 @@ fi:
unlisted: Listaamaton julkinen
unlisted_long: Kaikki voivat nähdä, mutta ei näytetä julkisilla aikajanoilla
stream_entries:
- click_to_show: Katso napsauttamalla
pinned: Kiinnitetty tuuttaus
reblogged: buustasi
sensitive_content: Arkaluontoista sisältöä
@@ -733,7 +725,7 @@ fi:
tip_local_timeline: Paikallinen aikajana näyttää instanssin %{instance} käyttäjien julkaisut. He ovat naapureitasi!
tip_mobile_webapp: Jos voit lisätä Mastodonin mobiiliselaimen kautta aloitusnäytöllesi, voit vastaanottaa push-ilmoituksia. Toiminta vastaa monin tavoin tavanomaista sovellusta!
tips: Vinkkejä
- title: Tervetuloa mukaan, %name}!
+ title: Tervetuloa mukaan, %{name}!
users:
invalid_email: Virheellinen sähköpostiosoite
invalid_otp_token: Virheellinen kaksivaiheisen todentamisen koodi
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index 07d900cfa..1e08e9bbe 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -4,23 +4,23 @@ fr:
about_hashtag_html: Figurent ci-dessous les pouets tagués avec
#%{hashtag}. Vous pouvez interagir avec eux si vous avez un compte n’importe où dans le Fediverse.
about_mastodon_html: Mastodon est un réseau social utilisant des formats ouverts et des logiciels libres. Comme le courriel, il est décentralisé.
about_this: À propos
- administered_by: 'Administré par :'
+ administered_by: 'Administrée par :'
+ api: API
+ apps: Applications mobiles
closed_registrations: Les inscriptions sont actuellement fermées sur cette instance. Cependant, vous pouvez trouver une autre instance sur laquelle vous créer un compte et à partir de laquelle vous pourrez accéder au même réseau.
contact: Contact
contact_missing: Manquant
contact_unavailable: Non disponible
- description_headline: Qu’est-ce que %{domain} ?
- domain_count_after: autres instances
- domain_count_before: Connecté⋅e⋅s à
+ documentation: Documentation
extended_description_html: |
Un bon endroit pour les règles
La description étendue n’a pas été remplie.
features:
humane_approach_body: Ayant appris des échecs d’autres réseaux, Mastodon à l’ambition de combattre l’abus des médias sociaux en effectuant des choix de conception éthiques.
humane_approach_title: Une approche plus humaine
- not_a_product_body: Mastodon n’est pas un réseau commercial. Ici, pas de publicités, pas de prospection de données et pas d’environnement fermés. Il n’y existe aucune autorité centrale.
+ not_a_product_body: Mastodon n’est pas un réseau commercial. Ici, pas de publicités, pas de prospection de données et pas d’environnements fermés. Il n’y existe aucune autorité centrale.
not_a_product_title: Vous êtes une personne, pas un produit
- real_conversation_body: Avec 500 caractères à votre dispostion, une grande granularité en terme de diffusion et la possibilité de masquer vos messages derrières des avertissements, vous êtes libre de vous exprimer de la manière qui vous plaît.
+ real_conversation_body: Avec 500 caractères à votre disposition, une grande granularité en termes de diffusion et la possibilité de masquer vos messages derrière des avertissements, vous êtes libre de vous exprimer de la manière qui vous plaît.
real_conversation_title: Construit pour de vraies conversations
within_reach_body: Grâce à l’existence d’un environnement API accueillant pour les développeur·se·s, de multiples applications pour iOS, Android et d’autres plateformes vous permettent de rester en contact avec vos ami·e·s où que vous soyez.
within_reach_title: Toujours à portée de main
@@ -28,25 +28,39 @@ fr:
hosted_on: Instance Mastodon hébergée par %{domain}
learn_more: En savoir plus
other_instances: Liste des instances
+ privacy_policy: Politique de vie privée
source_code: Code source
- status_count_after: statuts
+ status_count_after:
+ one: Statut
+ other: Statuts
status_count_before: Ayant publié
- user_count_after: utilisateur⋅ice⋅s
+ terms: Conditions d'utilisation
+ user_count_after:
+ one: utilisateur
+ other: utilisateurs
user_count_before: Abrite
what_is_mastodon: Qu’est-ce que Mastodon ?
accounts:
+ choices_html: "%{name} recommande :"
follow: Suivre
- followers: Abonné⋅e⋅s
+ followers:
+ one: Abonné·e
+ other: Abonné⋅e⋅s
following: Abonnements
+ joined: Inscrit·e en %{date}
media: Médias
- moved_html: "%{name} a changé de compte pour %{new_profile_link} :"
- network_hidden: Cette information n'est pas disponible
+ moved_html: "%{name} a changé de compte pour %{new_profile_link} :"
+ network_hidden: Cette information n’est pas disponible
nothing_here: Rien à voir ici !
people_followed_by: Personnes suivies par %{name}
people_who_follow: Personnes qui suivent %{name}
- posts: Statuts
+ pin_errors:
+ following: Vous devez être déjà abonné·e à la personne que vous désirez recommander
+ posts:
+ one: Pouet
+ other: Pouets
+ posts_tab_heading: Pouets
posts_with_replies: Statuts & réponses
- remote_follow: Suivre à distance
reserved_username: Ce nom d’utilisateur⋅ice est réservé
roles:
admin: Admin
@@ -64,7 +78,7 @@ fr:
avatar: Avatar
by_domain: Domaine
change_email:
- changed_msg: Courriel du compte modifié avec succès !
+ changed_msg: Courriel du compte modifié avec succès !
current_email: Courriel actuel
label: Modifier le courriel
new_email: Nouveau courriel
@@ -119,11 +133,11 @@ fr:
public: Publique
push_subscription_expires: Expiration de l’abonnement PuSH
redownload: Rafraîchir les avatars
- remove_avatar: Supprimer l'avatar
+ remove_avatar: Supprimer l’avatar
resend_confirmation:
- already_confirmed: Cet utilisateur est déjà confirmé
+ already_confirmed: Cet·te utilisateur·ice est déjà confirmé·e
send: Renvoyer un courriel de confirmation
- success: Email de confirmation envoyé avec succès !
+ success: Courriel de confirmation envoyé avec succès !
reset: Réinitialiser
reset_password: Réinitialiser le mot de passe
resubscribe: Se réabonner
@@ -152,35 +166,36 @@ fr:
web: Web
action_logs:
actions:
- assigned_to_self_report: "%{name} s'est assigné le signalement de %{target} à eux-même"
- change_email_user: "%{name} a modifié l'adresse de courriel de l'utilisateur %{target}"
- confirm_user: "%{name} adresse courriel confirmée de l'utilisateur %{target}"
- create_custom_emoji: "%{name} a importé de nouveaux emoji %{target}"
+ assigned_to_self_report: "%{name} s’est assigné·e le signalement de %{target}"
+ change_email_user: "%{name} a modifié l’adresse de courriel de l’utilisateur·rice %{target}"
+ confirm_user: "%{name} adresse courriel confirmée de l’utilisateur·ice %{target}"
+ create_custom_emoji: "%{name} a importé de nouveaux émojis %{target}"
create_domain_block: "%{name} a bloqué le domaine %{target}"
create_email_domain_block: "%{name} a mis le domaine du courriel %{target} sur liste noire"
- demote_user: "%{name} a rétrogradé l'utilisateur %{target}"
+ demote_user: "%{name} a rétrogradé l’utilisateur·ice %{target}"
destroy_domain_block: "%{name} a débloqué le domaine %{target}"
destroy_email_domain_block: "%{name} a mis le domaine du courriel %{target} sur liste blanche"
destroy_status: "%{name} a enlevé le statut de %{target}"
- disable_2fa_user: "%{name} a désactivé l'authentification à deux facteurs pour l'utilisateur %{target}"
- disable_custom_emoji: "%{name} a désactivé l'emoji %{target}"
- disable_user: "%{name} a désactivé le login pour l'utilisateur %{target}"
- enable_custom_emoji: "%{name} a activé l'emoji %{target}"
- enable_user: "%{name} a activé le login pour l'utilisateur %{target}"
+ disable_2fa_user: "%{name} a désactivé l’authentification à deux facteurs pour l’utilisateur·ice %{target}"
+ disable_custom_emoji: "%{name} a désactivé l’émoji %{target}"
+ disable_user: "%{name} a désactivé le login pour l’utilisateur·ice %{target}"
+ enable_custom_emoji: "%{name} a activé l’émoji %{target}"
+ enable_user: "%{name} a activé le login pour l’utilisateur·ice %{target}"
memorialize_account: "%{name} a transformé le compte de %{target} en une page de mémorial"
- promote_user: "%{name} a promu l'utilisateur %{target}"
- remove_avatar_user: "%{name} a supprimé l'avatar de %{target}'s"
- reopen_report: "%{name} a ré-ouvert le signalement %{target}"
+ promote_user: "%{name} a promu l’utilisateur·ice %{target}"
+ remove_avatar_user: "%{name} a supprimé l’avatar de %{target}"
+ reopen_report: "%{name} a rouvert le signalement %{target}"
reset_password_user: "%{name} a réinitialisé le mot de passe de %{target}"
resolve_report: "%{name} a résolu la dénonciation de %{target}"
silence_account: "%{name} a mis le compte %{target} en mode silence"
suspend_account: "%{name} a suspendu le compte %{target}"
- unassigned_report: "%{name} a dés-assigné le signalement %{target}"
+ unassigned_report: "%{name} a désassigné le signalement %{target}"
unsilence_account: "%{name} a mis fin au mode silence de %{target}"
unsuspend_account: "%{name} a réactivé le compte de %{target}"
- update_custom_emoji: "%{name} a mis à jour l'emoji %{target}"
+ update_custom_emoji: "%{name} a mis à jour l’émoji %{target}"
update_status: "%{name} a mis à jour le statut de %{target}"
- title: Journal d'audit
+ deleted_status: "(statut supprimé)"
+ title: Journal d’audit
custom_emojis:
by_domain: Domaine
copied_msg: Copie locale de l’émoji créée avec succès !
@@ -201,11 +216,32 @@ fr:
overwrite: Réécrire
shortcode: Raccourci
shortcode_hint: Au moins deux caractères, seulement des caractères alphanumériques ou des tirets bas
- title: Émoji personnalisés
+ title: Émojis personnalisés
unlisted: Délisté
- update_failed_msg: N'a pas pu mettre à jour cet emoji
- updated_msg: Emoji mis à jour avec succès !
+ update_failed_msg: N’a pas pu mettre à jour cet émoji
+ updated_msg: Émoji mis à jour avec succès !
upload: Téléverser
+ dashboard:
+ backlog: tâches en attente
+ config: Configuration
+ feature_deletions: Suppressions de comptes
+ feature_invites: Liens d’invitation
+ feature_registrations: Inscriptions
+ feature_relay: Relais de fédération
+ features: Fonctionnalités
+ hidden_service: Fédération avec des services cachés
+ open_reports: signalements non résolus
+ recent_users: Utilisateur·rice·s récent·e·s
+ search: Recherche plein texte
+ single_user_mode: Mode utilisateur·ice unique
+ software: Logiciel
+ space: Espace utilisé
+ title: Tableau de bord
+ total_users: utilisateur·rice·s au total
+ trends: Tendances
+ week_interactions: interactions cette semaine
+ week_users_active: actif·ve·s cette semaine
+ week_users_new: utilisateur·rice·s cette semaine
domain_blocks:
add_new: Ajouter
created_msg: Le blocage de domaine est désormais activé
@@ -255,22 +291,33 @@ fr:
search: Rechercher
title: Instances connues
invites:
+ deactivate_all: Tout désactiver
filter:
all: Tout
available: Disponible
expired: Expiré
title: Filtre
title: Invitations
+ relays:
+ add_new: Ajouter un nouveau relais
+ description_html: Un
relai de fédération est un serveur intermédiaire qui échange de grandes quantités de pouets entre les serveurs qui publient dessus et ceux qui y sont abonnés.
Il peut aider les petites et moyennes instances à découvrir du contenu sur le fediverse, ce qui normalement nécessiterait que les membres locaux suivent des gens inscrits sur des serveurs distants.
+ enable_hint: Une fois activé, votre serveur souscrira à tous les pouets publics présents sur ce relais et y enverra ses propres pouets publics.
+ inbox_url: URL de relais
+ pending: En attente de l'approbation du relai
+ save_and_enable: Sauvegarder et activer
+ setup: Paramétrer une connexion de relais
+ status: Statut
+ title: Relais
report_notes:
- created_msg: Note de signalement créée avec succès !
- destroyed_msg: Note de signalement effacée avec succès !
+ created_msg: Note de signalement créée avec succès !
+ destroyed_msg: Note de signalement effacée avec succès !
reports:
account:
note: note
report: signaler
action_taken_by: Intervention de
are_you_sure: Êtes vous certain⋅e ?
- assign_to_self: Me l'assigner
+ assign_to_self: Me l’assigner
assigned: Modérateur assigné
comment:
none: Aucun
@@ -290,7 +337,7 @@ fr:
reported_account: Compte signalé
reported_by: Signalé par
resolved: Résolus
- resolved_msg: Signalement résolu avec succès !
+ resolved_msg: Signalement résolu avec succès !
silence_account: Masquer le compte
status: Statut
suspend_account: Suspendre le compte
@@ -302,20 +349,26 @@ fr:
view: Voir
settings:
activity_api_enabled:
- desc_html: Nombre de statuts affichés localement, d'utilisateurs actifs et de nouveaux enregistrements dans les registres hebdomadaires
- title: Publier des statistiques agrégées sur l'activité des utilisateurs
+ desc_html: Nombre de statuts affichés localement, d’utilisateur·ice·s actif·ve·s et de nouveaux enregistrements dans les registres hebdomadaires
+ title: Publier des statistiques agrégées sur l’activité des utilisateur·ice·s
bootstrap_timeline_accounts:
- desc_html: Séparez les noms d’utilisateur·ice par des virgules. Ne fonctionne qu’avec des comptes locaux et non-verrouillés. Si laissé vide, tous les administrateur⋅ice⋅s locaux sont sélectionné⋅e⋅s.
+ desc_html: Séparez les noms d’utilisateur·ice par des virgules. Ne fonctionne qu’avec des comptes locaux et non verrouillés. Si laissé vide, tous les administrateur⋅ice⋅s locaux sont sélectionné⋅e⋅s.
title: Abonnements par défaut pour les nouveaux·elles utilisateur·ice·s
contact_information:
email: Entrez une adresse courriel publique
username: Entrez un nom d’utilisateur⋅ice
+ custom_css:
+ desc_html: Modifier l'apparence avec une CSS chargée sur chaque page
+ title: CSS personnalisée
hero:
- desc_html: Affichée sur la page d'accueil. Au moins 600x100px recommandé. Lorsqu'elle n'est pas définie, se rabat sur la vignette de l'instance
- title: Image d'en-tête
+ desc_html: Affichée sur la page d’accueil. Au moins 600x100px recommandé. Lorsqu’elle n’est pas définie, se rabat sur la vignette de l’instance
+ title: Image d’en-tête
peers_api_enabled:
desc_html: Noms des domaines que cette instance a découvert dans le fediverse
title: Publier la liste des instances découvertes
+ preview_sensitive_media:
+ desc_html: Les liens de prévisualisation sur les autres sites web afficheront une vignette même si le média est sensible
+ title: Afficher les médias sensibles dans les prévisualisations OpenGraph
registrations:
closed_message:
desc_html: Affiché sur la page d’accueil lorsque les inscriptions sont fermées
Vous pouvez utiliser des balises HTML
@@ -330,17 +383,20 @@ fr:
desc_html: Autoriser tout le monde à créer un compte
title: Ouvrir les inscriptions
show_known_fediverse_at_about_page:
- desc_html: Lorsque l'option est activée, les pouets provenant de toutes les instances connues sont affichés dans la prévisualisation. Si non, seuls les pouets locaux sont affichés.
+ desc_html: Lorsque l’option est activée, les pouets provenant de toutes les instances connues sont affichés dans la prévisualisation. Sinon, seuls les pouets locaux sont affichés.
title: Afficher le fediverse connu dans la prévisualisation du fil
show_staff_badge:
- desc_html: Montrer un badge de responsable sur une page utilisateur
+ desc_html: Montrer un badge de responsable sur une page utilisateur·ice
title: Montrer un badge de responsable
site_description:
- desc_html: Paragraphe introductif sur la page d'accueil et dans les méta-balises. Vous pouvez utiliser des balises HTML, en particulier
<a>
et
<em>
.
+ desc_html: Paragraphe introductif sur la page d’accueil. Décrivez ce qui rend spécifique ce serveur Mastodon et toute autre chose importante. Vous pouvez utiliser des balises HTML, en particulier
<a>
et
<em>
.
title: Description du site
site_description_extended:
desc_html: Affichée sur la page d’informations complémentaires du site
Vous pouvez utiliser des balises HTML
title: Description étendue du site
+ site_short_description:
+ desc_html: Affichée dans la barre latérale et dans les méta-tags. Décrivez ce qui rend spécifique ce serveur Mastodon en un seul paragraphe. Si laissée vide, la description de l’instance sera affiché par défaut.
+ title: Description courte de l’instance
site_terms:
desc_html: Affichée sur la page des conditions d’utilisation du site
Vous pouvez utiliser des balises HTML
title: Politique de confidentialité
@@ -362,6 +418,7 @@ fr:
media:
title: Médias
no_media: Aucun média
+ no_status_selected: Aucun statut n’a été modifié car aucun n’a été sélectionné
title: État du compte
with_media: avec médias
subscriptions:
@@ -371,17 +428,23 @@ fr:
last_delivery: Dernière livraison
title: WebSub
topic: Sujet
+ suspensions:
+ bad_acct_msg: La valeur de confirmation n'a pas correspondu. Êtes-vous certain de suspendre le bon compte ?
+ hint_html: 'Pour confirmer la suspension du compte, veuillez entrer %{value} dans le champ ci-dessous :'
+ proceed: Traité
+ title: Suspension de %{acct}
+ warning_html: 'Suspendre ce compte effacera
irréversiblement les données de ce compte, ce qui inclut :'
title: Administration
admin_mailer:
new_report:
body: "%{reporter} a signalé %{target}"
- body_remote: Quelqu'un de %{domain} a signalé %{target}
+ body_remote: Quelqu’un de %{domain} a signalé %{target}
subject: Nouveau signalement sur %{instance} (#%{id})
application_mailer:
notification_preferences: Modifier les préférences de courriel
salutation: "%{name},"
settings: 'Changer les préférences courriel : %{link}'
- view: 'Voir :'
+ view: 'Voir :'
view_profile: Voir le profil
view_status: Afficher le statut
applications:
@@ -411,7 +474,7 @@ fr:
cas: CAS
saml: SAML
register: S’inscrire
- register_elsewhere: S'inscrire sur un autre serveur
+ register_elsewhere: S’inscrire sur un autre serveur
resend_confirmation: Envoyer à nouveau les consignes de confirmation
reset_password: Réinitialiser le mot de passe
security: Sécurité
@@ -420,8 +483,8 @@ fr:
already_following: Vous suivez déjà ce compte
error: Malheureusement, il y a eu une erreur en cherchant les détails du compte distant
follow: Suivre
- follow_request: 'Vous avez demandé à suivre :'
- following: 'Youpi ! Vous suivez :'
+ follow_request: 'Vous avez demandé à suivre :'
+ following: 'Youpi ! Vous suivez maintenant :'
post_follow:
close: Ou bien, vous pouvez fermer cette fenêtre.
return: Afficher le profil de l’utilisateur⋅ice
@@ -447,7 +510,7 @@ fr:
description_html: Cela va supprimer votre compte et le désactiver de manière
permanente et irréversible. Votre nom d’utilisateur⋅ice restera réservé afin d’éviter la confusion.
proceed: Supprimer compte
success_msg: Votre compte a été supprimé avec succès
- warning_html: Seule la suppression du contenu depuis cette instance est garantie. Le contenu qui a été partagé est susceptible de laisser des traces. Les serveurs hors-lignes ainsi que ceux n’étant plus abonnés à vos publications ne mettront pas leur base de données à jour.
+ warning_html: Seule la suppression du contenu depuis cette instance est garantie. Le contenu qui a été partagé est susceptible de laisser des traces. Les serveurs hors-ligne ainsi que ceux n’étant plus abonnés à vos publications ne mettront pas leur base de données à jour.
warning_title: Disponibilité du contenu disséminé
errors:
'403': Vous n’avez pas accès à cette page.
@@ -460,13 +523,13 @@ fr:
'500':
content: Nous sommes désolé·e·s, mais quelque chose s’est mal passé de notre côté.
title: Cette page n’est pas correcte
- noscript_html: Pour utiliser Mastodon, veuillez activer JavaScript. Sinon, essayez l'une des
applications natives pour Mastodon pour votre plate-forme.
+ noscript_html: Pour utiliser Mastodon, veuillez activer JavaScript. Sinon, essayez l’une des
applications natives pour Mastodon pour votre plate-forme.
exports:
archive_takeout:
date: Date
download: Télécharger votre archive
hint_html: Vous pouvez demander une archive de vos
pouets et médias téléversés. Les données exportées seront au format ActivityPub, lisible par tout logiciel compatible. Vous pouvez demander une archive tous les 7 jours.
- in_progress: Élaboration de votre archive....
+ in_progress: Création de votre archive…
request: Demandez vos archives
size: Taille
blocks: Vous bloquez
@@ -474,6 +537,22 @@ fr:
follows: Vous suivez
mutes: Vous masquez
storage: Médias stockés
+ filters:
+ contexts:
+ home: Accueil
+ notifications: Notifications
+ public: Fils publics
+ thread: Conversations
+ edit:
+ title: Éditer le filtre
+ errors:
+ invalid_context: Contexte invalide ou insuffisant
+ invalid_irreversible: Le filtrage irréversible ne fonctionne que pour l’accueil et les notifications
+ index:
+ delete: Effacer
+ title: Filtres
+ new:
+ title: Ajouter un nouveau filtre
followers:
domain: Domaine
explanation_html: Si vous voulez être sûr⋅e que vos statuts restent privés, vous devez savoir qui vous suit.
Vos statuts privés seront diffusés à toutes les instances des utilisateur⋅ice⋅s qui vous suivent. Vous voudrez peut-être les passer en revue et les supprimer si vous n’êtes pas sûr⋅e que votre vie privée sera respectée par l’administration ou le logiciel de ces instances.
@@ -486,9 +565,12 @@ fr:
true_privacy_html: Soyez conscient⋅e⋅s
qu’une vraie confidentialité ne peut être atteinte que par un chiffrement de bout-en-bout.
unlocked_warning_html: N’importe qui peut vous suivre et voir vos statuts privés. %{lock_link} afin de pouvoir vérifier et rejeter des abonné⋅e⋅s.
unlocked_warning_title: Votre compte n’est pas privé
+ footer:
+ developers: Développeurs
+ more: Davantage…
+ resources: Ressources
generic:
changes_saved_msg: Les modifications ont été enregistrées avec succès !
- powered_by: propulsé par %{link}
save_changes: Enregistrer les modifications
validation_errors:
one: Quelque chose ne va pas ! Vérifiez l’erreur ci-dessous
@@ -514,6 +596,7 @@ fr:
'86400': 1 jour
expires_in_prompt: Jamais
generate: Générer
+ invited_by: 'Vous avez été invité·e par :'
max_uses:
one: 1 usage
other: "%{count} usages"
@@ -523,8 +606,6 @@ fr:
expires_at: Expire
uses: Utilise
title: Inviter des gens
- landing_strip_html:
%{name} utilise %{link_to_root_path}. Vous pouvez læ suivre et interagir si vous possédez un compte quelque part dans le "fediverse".
- landing_strip_signup_html: Si ce n’est pas le cas, vous pouvez
en créer un ici.
lists:
errors:
limit: Vous avez atteint le nombre maximum de listes
@@ -533,26 +614,26 @@ fr:
images_and_video: Impossible de joindre une vidéo à un statut contenant déjà des images
too_many: Impossible de joindre plus de 4 fichiers
migrations:
- acct: utilisateur@domaine du nouveau compte
- currently_redirecting: 'Votre profile va être redirigé vers :'
+ acct: profil@domaine du nouveau compte
+ currently_redirecting: 'Votre profil va être redirigé vers :'
proceed: Enregistrer
- updated_msg: Les paramètres de votre migration de compte ont été mis à jour avec succès !
+ updated_msg: Les paramètres de votre migration de compte ont été mis à jour avec succès !
moderation:
title: Modération
notification_mailer:
digest:
action: Voir toutes les notifications
- body: 'Voici ce que vous avez raté sur ${instance} depuis votre dernière visite le %{since} :'
- mention: "%{name} vous a mentionné⋅e dans :"
+ body: 'Voici ce que vous avez raté sur ${instance} depuis votre dernière visite le %{since} :'
+ mention: "%{name} vous a mentionné⋅e dans :"
new_followers_summary:
one: Vous avez un⋅e nouvel⋅le abonné⋅e ! Youpi !
other: Vous avez %{count} nouveaux⋅elles abonné⋅e·s ! Incroyable !
subject:
one: "Une nouvelle notification depuis votre dernière visite \U0001F418"
other: "%{count} nouvelles notifications depuis votre dernière visite \U0001F418"
- title: Pendant votre absence...
+ title: Pendant votre absence…
favourite:
- body: "%{name} a ajouté votre post à ses favoris :"
+ body: "%{name} a ajouté votre pouet à ses favoris :"
subject: "%{name} a ajouté votre post à ses favoris"
title: Nouveau favori
follow:
@@ -560,17 +641,17 @@ fr:
subject: "%{name} vous suit"
title: Nouvel·le abonné·e
follow_request:
- action: Gérer les demandes d'abonnement
+ action: Gérer les demandes d’abonnement
body: "%{name} a demandé à vous suivre"
subject: 'Abonné⋅es en attente : %{name}'
- title: Nouvelle demande d'abonnement
+ title: Nouvelle demande d’abonnement
mention:
action: Répondre
- body: "%{name} vous a mentionné⋅e dans :"
+ body: "%{name} vous a mentionné⋅e dans :"
subject: "%{name} vous a mentionné·e"
title: Nouvelle mention
reblog:
- body: "%{name} a partagé votre statut :"
+ body: "%{name} a partagé votre statut :"
subject: "%{name} a partagé votre statut"
title: Nouveau partage
number:
@@ -596,10 +677,14 @@ fr:
publishing: Publication
web: Web
remote_follow:
- acct: Entrez votre pseudo@instance depuis lequel vous voulez suivre cet·te utilisateur⋅ice
+ acct: Entrez l’adresse profil@instance depuis laquelle vous voulez vous abonner
missing_resource: L’URL de redirection n’a pas pu être trouvée
- proceed: Continuez pour suivre
- prompt: 'Vous allez suivre :'
+ no_account_html: Vous n’avez pas de compte ? Vous pouvez
vous inscrire ici
+ proceed: Confirmer l’abonnement
+ prompt: 'Vous allez suivre :'
+ remote_interaction:
+ proceed: Confirmer l’interaction
+ prompt: 'Vous désirez interagir avec ce pouet :'
remote_unfollow:
error: Erreur
title: Titre
@@ -662,7 +747,7 @@ fr:
your_apps: Vos applications
statuses:
attached:
- description: 'Attaché : %{attached}'
+ description: 'Attaché : %{attached}'
image:
one: "%{count} image"
other: "%{count} images"
@@ -670,10 +755,11 @@ fr:
one: "%{count} vidéo"
other: "%{count} vidéos"
boosted_from_html: Repartagé depuis %{acct_link}
- content_warning: 'Attention au contenu : %{warning}'
+ content_warning: 'Avertissement sur le contenu : %{warning}'
disallowed_hashtags:
- one: 'contient un hashtag désactivé : %{tags}'
- other: 'contient les hashtag désactivés : %{tags}'
+ one: 'contient un hashtag désactivé : %{tags}'
+ other: 'contient les hashtags désactivés : %{tags}'
+ language_detection: Détecter automatiquement la langue
open_in_web: Ouvrir sur le web
over_character_limit: limite de caractères dépassée de %{max} caractères
pin_errors:
@@ -682,6 +768,7 @@ fr:
private: Les statuts non-publics ne peuvent pas être épinglés
reblog: Un partage ne peut pas être épinglé
show_more: Afficher plus
+ sign_in_to_participate: Inscrivez-vous pour prendre part à la conversation
title: '%{name} : "%{quote}"'
visibilities:
private: Abonné⋅e⋅s uniquement
@@ -691,12 +778,92 @@ fr:
unlisted: Public sans être affiché sur le fil public
unlisted_long: Tout le monde peut voir vos statuts mais ils ne seront pas sur listés sur les fils publics
stream_entries:
- click_to_show: Cliquer pour afficher
pinned: Pouet épinglé
reblogged: a partagé
sensitive_content: Contenu sensible
terms:
- title: "%{instance} Conditions d’utilisations et politique de confidentialité"
+ body_html: |
+
Politique de confidentialité
+
Quelles informations collectons-nous ?
+
+
+ - Informations de base sur votre compte : Si vous vous inscrivez sur ce serveur, il vous sera demandé de rentrer un identifiant, une adresse électronique et un mot de passe. Vous pourrez également ajouter des informations additionnelles sur votre profil, telles qu’un nom public et une biographie, ainsi que téléverser une image de profil et une image d’en-tête. Vos identifiant, nom public, biographie, image de profil et image d’en-tête seront toujours affichés publiquement.
+ - Posts, liste d’abonnements et autres informations publiques : La liste de vos abonnements ainsi que la liste de vos abonné·e·s sont publiques. Quand vous postez un message, la date et l’heure d’envoi ainsi que le nom de l’application utilisée pour sa transmission sont enregistré·e·s. Des médias, tels que des images ou des vidéos, peuvent être joints aux messages. Les posts publics et non listés sont affichés publiquement. Quand vous mettez en avant un post sur votre profil, ce post est également affiché publiquement. Vos messages sont délivrés à vos abonné·e·s, ce qui, dans certains cas, signifie qu’ils sont délivrés à des serveurs tiers et que ces derniers en stockent une copie. Quand vous supprimer un post, il est probable que vos abonné·e·s en soient informé·e·s. Partager un message ou le marquer comme favori est toujours une action publique.
+ - Posts directs et abonné·e·s uniquement : Tous les posts sont stockés et traités par le serveur. Les messages abonné·e·s uniquement ne sont transmis qu’à vos abonné·e·s et aux personnes mentionnées dans le corps du message, tandis que les messages directs ne sont transmis qu’aux personnes mentionnées. Dans certains cas, cela signifie qu’ils sont délivrés à des serveurs tiers et que ces derniers en stockent une copie. Nous faisons un effort de bonne fois pour en limiter l’accès uniquement aux personnes autorisées, mais ce n’est pas nécessairement le cas des autres serveurs. Il est donc très important que vous vérifiiez les serveurs auxquels appartiennent vos abonné·e·s. Il vous est possible d’activer une option dans les paramètres afin d’approuver et de rejeter manuellement les nouveaux·lles abonné·e·s. Gardez s’il-vous-plaît en mémoire que les opérateur·rice·s du serveur ainsi que celles et ceux de n’importe quel serveur récepteur peuvent voir ces messages et qu’il est possible pour les destinataires de faire des captures d’écran, de copier et plus généralement de repartager ces messages. Ne partager aucune information sensible à l’aide de Mastodon.
+ - IP et autres métadonnées : Quand vous vous connectez, nous enregistrons votre adresse IP ainsi que le nom de votre navigateur web. Toutes les sessions enregistrées peuvent être consultées dans les paramètres, afin que vous puissiez les surveiller et éventuellement les révoquer. La dernière adresse IP utilisée est conservée pour une durée de 12 mois. Nous sommes également susceptibles de conserver les journaux du serveur, ce qui inclut l’adresse IP de chaque requête reçue.
+
+
+
+
+
Que faisons-nous des informations que nous collectons ?
+
+
Toutes les informations que nous collectons sur vous peuvent être utilisées d’une des manières suivantes :
+
+
+ - Pour vous fournir les fonctionnalités de base de Mastodon. Vous ne pouvez interagir avec le contenu des autres et poster votre propre contenu que lorsque vous êtes connecté·e. Par exemple, vous pouvez vous abonner à plusieurs autres comptes pour voir l’ensemble de leurs posts dans votre fil d’accueil personnalisé.
+ - Pour aider à la modération de la communauté, par exemple, comparer votre adresse IP à d’autres afin de déterminer si un bannissement a été contourné ou si une autre violation aux règles a été commise.
+ - L’adresse électronique que vous nous avez fournie peut être utilisée pour vous envoyez des informations, des notifications lorsque d’autres personnes interagissent avec votre contenu ou vous envoient des messages, pour répondre à des demandes de votre part ainsi que pour tout autres requêtes ou questions.
+
+
+
+
+
Comment protégeons-nous vos informations ?
+
+
Nous mettons en œuvre une variété de mesures de sécurité afin de garantir la sécurité de vos informations personnelles quand vous les saisissez, les soumettez et les consultez. Entre autres choses, votre session de navigation ainsi que le trafic entre votre application et l’API sont sécurisés à l’aide de TLS tandis que votre mot de passe est haché en utilisant un puissant algorithme à sens unique. Vous pouvez également activer l’authentification à deux facteurs pour sécuriser encore plus l’accès à votre compte.
+
+
+
+
Quelle est notre politique de conservation des données ?
+
+
Nous ferons un effort de bonne foi :
+
+
+ - Pour ne pas conserver plus de 90 jours les journaux systèmes contenant les adresses IP de toutes les requêtes reçues par ce serveur.
+ - Pour ne pas conserver plus de 12 mois les adresses IP associées aux utilisateur·ice·s enregistré·e·s.
+
+
+
Vous pouvez demander une archive de votre contenu, incluant vos posts, vos médias joints, votre image de profil et votre image d’en-tête.
+
+
Vous pouvez, à n’importe quel moment, supprimer votre compte de manière définitive.
+
+
+
+
Utilisons-nous des témoins de connexion ?
+
+
Oui. Les témoins de connexion sont de petits fichiers qu’un site ou un service transféres sur le disque dur de votre ordinateur via votre navigateur web (si vous l’avez autorisé). Ces témoins permettent au site de reconnaître votre navigateur et de, dans le cas où vous possédez un compte, de vous associer avec ce dernier.
+
+
Nous utilisons les témoins de connexion comme un moyen de comprendre et de nous souvenir de vos préférences pour vos prochaines visites.
+
+
+
+
Divulguons-nous des informations à des tierces parties ?
+
+
Nous ne vendons, n’échangeons ou ne transférons d’une quelque manière que soit des informations permettant de vous identifier personnellement. Cela n’inclut pas les tierces parties de confiance qui nous aident à opérer ce site, à conduire nos activités commerciales ou à vous servir, tant qu’elles acceptent de garder ces informations confidentielles. Nous sommes également susceptibles de partager vos informations quand nous pensons que c’est nécessaire pour nous conformer à la loi, pour appliquer les politiques de notre site ainsi que pour défendre nos droits, notre propriété, notre sécurité et celles et ceux d’autres personnes.
+
+
Votre contenu public peut être téléchargé par d’autres serveurs du réseau. Dans le cas où vos abonné·e·s et vos destinataires résideraient sur des serveurs différents du vôtre, vos posts publics et abonné·e·s uniquement peuvent être délivrés vers les serveurs de vos abonné·e·s tandis que vos messages directs sont délivrés aux serveurs de vos destinataires.
+
+
Quand vous autorisez une application à utiliser votre compte, en fonction de l’étendue des permissions que vous approuvez, il est possible qu’elle puisse accéder aux informations publiques de votre profil, votre liste d’abonnements, votre liste d’abonné·e·s, vos listes, tout vos posts et vos favoris. Les applications ne peuvent en aucun cas accéder à votre adresse électronique et à votre mot de passe.
+
+
+
+
Utilisation de ce site par les enfants
+
+
Si ce serveur est situé dans dans l’UE ou l’EEE : Notre site, produits et services sont tous destinés à des personnes âgées de 16 ans ou plus. Si vous avez moins de 16 ans, en application du RGPD (Règlement Général sur la Protection des Données), merci de ne pas utiliser ce site.
+
+
Si ce serveur est situé dans aux États-Unis d’Amérique : Notre site, produits et services sont tous destinés à des personnes âgées de 13 ans ou plus. Si vous avez moins de 13 ans, en application du COPPA (Children's Online Privacy Protection Act), merci de ne pas utiliser ce site.
+
+
Les exigences légales peuvent être différentes si ce serveur se trouve dans une autre juridiction.
+
+
+
+
Modifications de notre politique de confidentialité
+
+
Dans le cas où nous déciderions de changer notre politique de confidentialité, nous posterons les modifications sur cette page.
+
+
Ce document est publié sous lincence CC-BY-SA. Il a été mis à jours pour la dernière fois le 7 mars 2018.
+
+
Originellement adapté de la politique de confidentialité de Discourse.
+ title: "%{instance} Conditions d’utilisation et politique de confidentialité"
themes:
contrast: Contraste élevé
default: Mastodon
@@ -704,6 +871,7 @@ fr:
time:
formats:
default: "%d %b %Y, %H:%M"
+ month: "%b %Y"
two_factor_authentication:
code_hint: Entrez le code généré par votre application pour confirmer
description_html: Si vous activez
l’identification à deux facteurs, vous devrez être en possession de votre téléphone afin de générer un code de connexion.
@@ -713,8 +881,8 @@ fr:
enabled_success: Identification à deux facteurs activée avec succès
generate_recovery_codes: Générer les codes de récupération
instructions_html: "
Scannez ce QR code grâce à Google Authenticator, Authy ou une application similaire sur votre téléphone. Désormais, cette application génèrera des jetons que vous devrez saisir à chaque connexion."
- lost_recovery_codes: Les codes de récupération vous permettent de retrouver les accès à votre comptre si vous perdez votre téléphone. Si vous perdez vos codes de récupération, vous pouvez les générer à nouveau ici. Vos anciens codes de récupération seront invalidés.
- manual_instructions: 'Si vous ne pouvez pas scanner ce QR code et devez l’entrer manuellement, voici le secret en clair :'
+ lost_recovery_codes: Les codes de récupération vous permettent de retrouver les accès à votre compte si vous perdez votre téléphone. Si vous perdez vos codes de récupération, vous pouvez les générer à nouveau ici. Vos anciens codes de récupération seront invalidés.
+ manual_instructions: 'Si vous ne pouvez pas scanner le code QR et devez l’entrer manuellement, voici le secret en texte-plein :'
recovery_codes: Codes de récupération
recovery_codes_regenerated: Codes de récupération régénérés avec succès
recovery_instructions_html: Si vous perdez l’accès à votre téléphone, vous pouvez utiliser un des codes de récupération ci-dessous pour retrouver l’accès à votre compte.
Conservez les codes de récupération en sécurité. Par exemple, en les imprimant et en les stockant avec vos autres documents importants.
@@ -722,30 +890,30 @@ fr:
wrong_code: Les codes entrés sont incorrects ! L’heure du serveur et celle de votre appareil sont-elles correctes ?
user_mailer:
backup_ready:
- explanation: Vous avez demandé une sauvegarde complète de votre compte Mastodon. Elle est maintenant prête à être téléchargée !
+ explanation: Vous avez demandé une sauvegarde complète de votre compte Mastodon. Elle est maintenant prête à être téléchargée !
subject: Votre archive est prête à être téléchargée
- title: Retrait de l'archive
+ title: Récupération de l’archive
welcome:
edit_profile_action: Configuration du profil
- edit_profile_step: Vous pouvez personnaliser votre profil en téléchargeant un avatar, une image d'en-tête, en changeant votre pseudo et plus encore. Si vous souhaitez examiner les nouveaux abonnés avant qu'ils ne soient autorisés à vous suivre, vous pouvez verrouiller votre compte.
+ edit_profile_step: Vous pouvez personnaliser votre profil en téléchargeant un avatar, une image d’en-tête, en changeant votre pseudo et plus encore. Si vous souhaitez examiner les nouveaux·lles abonné·e·s avant qu’il·elle·s ne soient autorisé·e·s à vous suivre, vous pouvez verrouiller votre compte.
explanation: Voici quelques conseils pour vous aider à démarrer
final_action: Commencer à publier
- final_step: 'Commencez à poster ! Même sans abonné·es, vos messages publics peuvent être vus par d''autres, par exemple sur la chronologie locale et dans les hashtags. Vous pouvez vous présenter sur le hashtag #introductions.'
- full_handle: Votre pleine maîtrise
- full_handle_hint: C'est ce que vous diriez à vos amis pour qu'ils puissent vous envoyer un message ou vous suivre à partir d'une autre instance.
+ final_step: 'Commencez à poster ! Même sans abonné·e·s, vos messages publics peuvent être vus par d’autres, par exemple sur le fil public local et dans les hashtags. Vous pouvez vous présenter sur le hashtag #introductions.'
+ full_handle: Votre identifiant complet
+ full_handle_hint: C’est ce que vous diriez à vos ami·e·s pour qu’il·elle·s puissent vous envoyer un message ou vous suivre à partir d’une autre instance.
review_preferences_action: Modifier les préférences
- review_preferences_step: Assurez-vous de définir vos préférences, telles que les courriels que vous aimeriez recevoir ou le niveau de confidentialité auquel vous aimeriez que vos messages soient soumis par défaut. Si vous n'avez pas le mal des transports, vous pouvez choisir d'activer la lecture automatique GIF.
+ review_preferences_step: Assurez-vous de définir vos préférences, telles que les courriels que vous aimeriez recevoir ou le niveau de confidentialité auquel vous aimeriez que vos messages soient soumis par défaut. Si vous n’avez pas le mal des transports, vous pouvez choisir d’activer la lecture automatique des GIF.
subject: Bienvenue sur Mastodon
- tip_bridge_html: Si vous venez de Twitter, vous pouvez retrouver vos amis sur Mastodon en utilisant le
bridge app. Cela ne fonctionne que s'ils ont aussi utilisé cette application !
- tip_federated_timeline: La chronologie fédérée est une vue en direct du réseau Mastodon. Mais elle n'inclut que les personnes auxquelles vos voisin·es sont abonné·es, donc elle n'est pas complète.
- tip_following: Vous suivez les administrateurs et administratrices de votre serveur par défaut. Pour trouver d'autres personnes intéressantes, consultez les chronologies locales et fédérées.
- tip_local_timeline: La chronologie locale est une vue des personnes sur %{instance}. Ce sont vos voisines et voisins immédiats !
- tip_mobile_webapp: Si votre navigateur mobile vous propose d'ajouter Mastodon à votre écran d'accueil, vous pouvez recevoir des notifications. Il agit comme une application native de bien des façons !
+ tip_bridge_html: Si vous venez de Twitter, vous pouvez retrouver vos ami·e·s sur Mastodon en utilisant l’
application de mise en relation. Cela ne fonctionne que s’il·elle·s ont aussi utilisé cette application !
+ tip_federated_timeline: La fil public global est une vue en direct du réseau Mastodon. Mais elle n’inclut que les personnes auxquelles vos voisin·es sont abonné·e·s, donc elle n’est pas complète.
+ tip_following: Vous suivez les administrateur·rice·s de votre serveur par défaut. Pour trouver d’autres personnes intéressantes, consultez les fils publics local et global.
+ tip_local_timeline: Le fil public local est une vue des personnes sur %{instance}. Ce sont vos voisines et voisins immédiats !
+ tip_mobile_webapp: Si votre navigateur mobile vous propose d’ajouter Mastodon à votre écran d’accueil, vous pouvez recevoir des notifications. Il agit comme une application native de bien des façons !
tips: Astuces
- title: Bienvenue à bord, %{name} !
+ title: Bienvenue à bord, %{name} !
users:
invalid_email: L’adresse courriel est invalide
invalid_otp_token: Le code d’authentification à deux facteurs est invalide
otp_lost_help_html: Si vous perdez accès aux deux, vous pouvez contacter %{email}
seamless_external_login: Vous êtes connecté via un service externe, donc les paramètres concernant le mot de passe et le courriel ne sont pas disponibles.
- signed_in_as: 'Connecté·e en tant que :'
+ signed_in_as: 'Connecté·e en tant que :'
diff --git a/config/locales/gl.yml b/config/locales/gl.yml
index 33889d0f1..c196e0c46 100644
--- a/config/locales/gl.yml
+++ b/config/locales/gl.yml
@@ -5,13 +5,13 @@ gl:
about_mastodon_html: Mastodon é unha rede social que se basea en protocolos web abertos e libres, software de código aberto. É descentralizada como o correo electrónico.
about_this: Sobre
administered_by: 'Administrada por:'
+ api: API
+ apps: Apps móbiles
closed_registrations: O rexistro en esta instancia está pechado en este intre. Porén! Pode atopar unha instancia diferente para obter unha conta e ter acceso exactamente a misma rede desde alí.
contact: Contacto
contact_missing: Non establecido
contact_unavailable: N/A
- description_headline: Qué é %{domain}?
- domain_count_after: outras instancias
- domain_count_before: Conectada a
+ documentation: Documentación
extended_description_html: |
Un bo lugar para regras
A descrición extendida aínda non se proporcionou.
@@ -28,25 +28,39 @@ gl:
hosted_on: Mastodon aloxado en %{domain}
learn_more: Coñeza máis
other_instances: Listado de instancias
+ privacy_policy: Política de intimidade
source_code: Código fonte
- status_count_after: estados
+ status_count_after:
+ one: estado
+ other: estados
status_count_before: Que publicaron
- user_count_after: usuarias
+ terms: Termos do servizo
+ user_count_after:
+ one: usuaria
+ other: usuarias
user_count_before: Fogar de
what_is_mastodon: Qué é Mastodon?
accounts:
+ choices_html: 'Eleccións de %{name}:'
follow: Seguir
- followers: Seguidoras
+ followers:
+ one: Seguidora
+ other: Seguidoras
following: Seguindo
+ joined: Uneuse %{date}
media: Medios
moved_html: "%{name} mudouse a %{new_profile_link}:"
network_hidden: A información non está dispoñible
nothing_here: Nada por aquí!
people_followed_by: Personas que segue %{name}
people_who_follow: Personas que seguen a %{name}
- posts: Mensaxes
+ pin_errors:
+ following: Debe seguir a persoa que intenta recomendar
+ posts:
+ one: Toot
+ other: Toots
+ posts_tab_heading: Toots
posts_with_replies: Toots e respostas
- remote_follow: Seguimento remoto
reserved_username: O nome de usuaria está reservado
roles:
admin: Admin
@@ -180,6 +194,7 @@ gl:
unsuspend_account: "%{name} activou a conta de %{target}"
update_custom_emoji: "%{name} actualizou emoji %{target}"
update_status: "%{name} actualizou un estado de %{target}"
+ deleted_status: "(estado eliminado)"
title: Rexistro de auditoría
custom_emojis:
by_domain: Dominio
@@ -206,6 +221,27 @@ gl:
update_failed_msg: Non se puido actualizar ese emoji
updated_msg: Actualizouse correctamente o emoji!
upload: Subir
+ dashboard:
+ backlog: backlogged jobs
+ config: Axustes
+ feature_deletions: Borrado de contas
+ feature_invites: Ligazóns de convite
+ feature_registrations: Rexistros
+ feature_relay: Repetidores de federación
+ features: Características
+ hidden_service: Federación con servizos ocultos
+ open_reports: informes abertos
+ recent_users: Usuarias recentes
+ search: Busca de texto completo
+ single_user_mode: Modo de usuario individual
+ software: Software
+ space: Uso de espazo
+ title: Taboleiro
+ total_users: total de usuarias
+ trends: Tendencias
+ week_interactions: interaccións en esta semana
+ week_users_active: activas estas semana
+ week_users_new: usuarias esta semana
domain_blocks:
add_new: Engadir novo
created_msg: Estase a procesar o bloqueo do dominio
@@ -255,12 +291,22 @@ gl:
search: Buscar
title: Instancias coñecidas
invites:
+ deactivate_all: Desactivar todo
filter:
all: Todo
available: Dispoñible
expired: Cadudado
title: Filtro
title: Convida
+ relays:
+ add_new: Engadir un novo repetidor
+ description_html: Un
repetidor da federación é un servidor intermedio que intercambia grandes volumes de toots públicos entre servidores que se suscriban e publiquen nel.
Pode axudar a servidores pequenos e medios a descubrir contido no fediverso, o que de outro xeito precisaría que as usuarias locais seguisen a outra xente en servidores remotos.
+ enable_hint: Unha vez activado, o seu servidor suscribirase a todos os toots públicos de este servidor, e tamén comezará a eviar a el os toots públicos do servidor.
+ inbox_url: URL do repetidor
+ pending: Agardando polo permiso do repetidor
+ setup: Configurar a conexión ao repetidor
+ status: Estado
+ title: Repetidores
report_notes:
created_msg: Creouse correctamente a nota do informe!
destroyed_msg: Nota do informe eliminouse con éxito!
@@ -310,6 +356,9 @@ gl:
contact_information:
email: e-mail de traballo
username: Nome de usuaria de contacto
+ custom_css:
+ desc_html: Modificar o aspecto con CSS cargado en cada páxina
+ title: CSS personalizado
hero:
desc_html: Mostrado na portada. Recoméndase 600x100px como mínimo. Si non se establece, mostrará a imaxe por omisión da instancia
title: Imáxe Heróe
@@ -339,11 +388,14 @@ gl:
desc_html: Mostrar unha insignia de membresía nunha páxina de usuaria
title: Mostrar insigna de membresía
site_description:
- desc_html: Parágrafo de presentación na páxina principal e nas meta etiquetas. Pode utilizar etiquetas HTML, en particular
<a>
e
<em>
.
+ desc_html: Parágrafo de presentación na páxina principal. Describe o que fai especial a este servidor Mastodon e calquera outra ouca importante. Pode utilizar etiquetas HTML, en particular
<a>
e
<em>
.
title: Descrición da instancia
site_description_extended:
desc_html: Un bo lugar para o seu código de conducta, regras, guías e outras cousas que distingan a súa instancia. Pode utilizar etiquetas HTML
title: Información extendida da personalización
+ site_short_description:
+ desc_html: Mostrado na barra lateral e nas etiquetas meta. Describe o que é Mastodon e que fai especial a este servidor nun só parágrafo. Si está baldeiro, mostrará a descrición da instancia.
+ title: Descrición curta da instancia
site_terms:
desc_html: Pode escribir a súa propia política de intimidade, termos de servizo ou aclaracións legais. Pode utilizar etiquetas HTML
title: Termos de servizo personalizados
@@ -365,6 +417,7 @@ gl:
media:
title: Medios
no_media: Sen medios
+ no_status_selected: Non se cambiou ningún estado xa que ningún foi seleccionado
title: Estados da conta
with_media: con medios
subscriptions:
@@ -374,6 +427,12 @@ gl:
last_delivery: Última entrega
title: WebSub
topic: Asunto
+ suspensions:
+ bad_acct_msg: O valor de confirmación non é coincidente. Está a suspender a conta correcta?
+ hint_html: 'Para confirmar a suspensión da conta introduza %{value} no campo inferior:'
+ proceed: Proceder
+ title: Suspender %{acct}
+ warning_html: 'Ao suspender esta conta eliminará
de xeito irreversible os datos de esta conta, que inclúe:'
title: Administración
admin_mailer:
new_report:
@@ -505,9 +564,12 @@ gl:
true_privacy_html: Por favor teña en conta que
a verdadeira intimidade só pode ser conseguida con cifrado de extremo-a-extremo.
unlocked_warning_html: Calquera pode seguila para inmediatamente ver os seus estados privados. %{lock_link} para poder revisar e rexeitar seguidoras.
unlocked_warning_title: A súa conta non está pechada
+ footer:
+ developers: Desenvolvedoras
+ more: Máis…
+ resources: Recursos
generic:
changes_saved_msg: Cambios gardados correctamente!!
- powered_by: grazas a %{link}
save_changes: Gardar cambios
validation_errors:
one: Algo non está ben de todo! Por favor revise abaixo o erro
@@ -543,8 +605,6 @@ gl:
expires_at: Caduca
uses: Usos
title: Convidar xente
- landing_strip_html: "
%{name} é unha usuaria en %{link_to_root_path}. Pode seguila ou interactuar con ela si ten unha conta en algún lugar do fediverso."
- landing_strip_signup_html: Si non, pode
rexistrarse aquí.
lists:
errors:
limit: Acadou o número máximo de listas
@@ -616,11 +676,14 @@ gl:
publishing: Publicando
web: Web
remote_follow:
- acct: Introduza o seu nomedeusuaria@dominio desde onde quere facer seguimento
+ acct: Introduza o seu usuaria@servidor desde onde quere interactuar
missing_resource: Non se puido atopar o URL de redirecionamento requerido para a súa conta
no_account_html: Non ten unha conta? Pode
rexistrarse aquí
proceed: Proceda para seguir
prompt: 'Vostede vai seguir:'
+ remote_interaction:
+ proceed: Proceda para interactuar
+ prompt: 'Vostede quere interactuar con este toot:'
remote_unfollow:
error: Fallo
title: Título
@@ -704,6 +767,7 @@ gl:
private: As mensaxes non-públicas non poden ser fixadas
reblog: Non se poden fixar as mensaxes promovidas
show_more: Mostrar máis
+ sign_in_to_participate: Conéctese para participar na conversa
title: '%{name}: "%{quote}"'
visibilities:
private: Só seguidoras
@@ -713,7 +777,6 @@ gl:
unlisted: Non listado
unlisted_long: Visible para calquera, pero non listado en liñas de tempo públicas
stream_entries:
- click_to_show: Pulse para mostrar
pinned: Mensaxe fixada
reblogged: promovida
sensitive_content: Contido sensible
@@ -807,6 +870,7 @@ gl:
time:
formats:
default: "%d %b, %Y, %H:%M"
+ month: "%b %Y"
two_factor_authentication:
code_hint: Introducir o código xerado polo seu aplicativo de autenticación para confirmar
description_html: Si habilita a
autenticación de doble factor, a conexión pediralle estar en posesión do seu teléfono, que xerará testemuños para poder entrar.
diff --git a/config/locales/he.yml b/config/locales/he.yml
index c127db385..ccf53e14a 100644
--- a/config/locales/he.yml
+++ b/config/locales/he.yml
@@ -4,13 +4,13 @@ he:
about_hashtag_html: אלו סטטוסים פומביים המתוייגים בתור
#%{hashtag}. ניתן להגיב, להדהד או לחבב אותם אם יש לך חשבון בכל מקום בפדרציה.
about_mastodon_html: מסטודון היא רשת חברתית
חופשית, מבוססת תוכנה חופשית ("קוד פתוח"). כאלטרנטיבה
בלתי ריכוזית לפלטפרומות המסחריות, מסטודון מאפשרת להמנע מהסיכונים הנלווים להפקדת התקשורת שלך בידי חברה יחידה. שמת את מבטחך בשרת אחד — לא משנה במי בחרת, תמיד אפשר לדבר עם כל שאר המשתמשים. לכל מי שרוצה יש את האפשרות להקים שרת מסטודון עצמאי, ולהשתתף ב
רשת החברתית באופן חלק.
about_this: אודות שרת זה
+ api: API
+ apps: יישומונים לנייד
closed_registrations: הרשמות סגורות לשרת זה לעת עתה.
- contact: צור קשר
- contact_missing: אין
+ contact: יצירת קשר
+ contact_missing: ללא הגדרה
contact_unavailable: לא רלוונטי/חסר
- description_headline: מהו %{domain}?
- domain_count_after: שרתים אחרים
- domain_count_before: מחובר אל
+ documentation: תיעוד
extended_description_html: |
מקום טוב לכללים
התיאור המורחב טרם הוגדר.
@@ -44,7 +44,6 @@ he:
people_who_follow: העוקבים של %{name}
posts: הודעות
posts_with_replies: חצרוצים ותגובות
- remote_follow: מעקב מרחוק
reserved_username: שם המשתמש שמור
roles:
admin: מנהל
@@ -286,7 +285,6 @@ he:
unlocked_warning_title: חשבונך אינו נעול
generic:
changes_saved_msg: השינויים נשמרו בהצלחה!
- powered_by: רץ על %{link}
save_changes: שמור שינויים
validation_errors:
one: משהו לא לגמרי בסדר עדיין! אנא הציצו על השגיאה מטה
@@ -299,8 +297,6 @@ he:
following: רשימת נעקבים
muting: רשימת השתקות
upload: יבוא
- landing_strip_html: "
%{name} מזהה משתמש(ת) מהקהילה %{link_to_root_path}. ניתן לעקוב אחריהם או לדבר איתם בעזרת חשבון על כל שרת קהילה ברחבי הפדרציה."
- landing_strip_signup_html: לחלופין , ניתן
להרשם מקומית כאן.
media_attachments:
validations:
images_and_video: לא ניתן להוסיף וידאו לחצרוץ שכבר מכיל תמונות
@@ -372,7 +368,6 @@ he:
unlisted: מוסתר
unlisted_long: פומבי, אבל לא להצגה בפיד הציבורי
stream_entries:
- click_to_show: ללחוץ להצגה
reblogged: הודהד
sensitive_content: תוכן רגיש
time:
diff --git a/config/locales/hr.yml b/config/locales/hr.yml
index 2d2eddc08..a6e7649f2 100644
--- a/config/locales/hr.yml
+++ b/config/locales/hr.yml
@@ -5,9 +5,6 @@ hr:
about_this: O ovoj instanci
closed_registrations: Registracije na ovoj instanci su trenutno zatvorene.
contact: Kontakt
- description_headline: Što je %{domain}?
- domain_count_after: druge instance
- domain_count_before: Spojen na
other_instances: Druge instance
source_code: Izvorni kod
status_count_after: statusi
@@ -22,7 +19,6 @@ hr:
people_followed_by: Ljudi koje %{name} slijedi
people_who_follow: Ljudi koji slijede %{name}
posts: Postovi
- remote_follow: Remote follow
unfollow: Prestani slijediti
application_mailer:
settings: 'Promijeni e-mail postavke: %{link}'
@@ -64,7 +60,6 @@ hr:
storage: Pohrana media zapisa
generic:
changes_saved_msg: Izmjene su uspješno sačuvane!
- powered_by: omogućuje %{link}
save_changes: Sačuvaj izmjene
validation_errors:
one: Nešto ne štima! Vidi grešku ispod
@@ -77,8 +72,6 @@ hr:
following: Lista onih koje slijedim
muting: Lista utišanih
upload: Upload
- landing_strip_html: "
%{name} je korisnik na %{link_to_root_path}. Možeš ih slijediti ili komunicirati s njima ako imaš račun igdje u fediversu."
- landing_strip_signup_html: Ako nemaš, možeš se
registrirati ovdje.
notification_mailer:
digest:
body: 'Ovo je kratak sažetak propuštenog %{instance} od tvog prošlog posjeta %{since}:'
@@ -141,7 +134,6 @@ hr:
public: Javno
unlisted: Javno, no nemoj prikazati na javnom timelineu
stream_entries:
- click_to_show: Klikni da bi prikazao
reblogged: potaknut
sensitive_content: Osjetljivi sadržaj
time:
diff --git a/config/locales/hu.yml b/config/locales/hu.yml
index 41093aa43..824a46066 100644
--- a/config/locales/hu.yml
+++ b/config/locales/hu.yml
@@ -8,9 +8,6 @@ hu:
contact: Kapcsolat
contact_missing: Nincs megadva
contact_unavailable: N/A
- description_headline: Mi az a %{domain}?
- domain_count_after: további instanciával
- domain_count_before: Kapcsolatban
extended_description_html: |
Ez itt a szabályzat helye
Még nem állítottál be bővebb leírást.
@@ -44,7 +41,6 @@ hu:
people_who_follow: "%{name} követői"
posts: Tülkök
posts_with_replies: Tülkök és válaszok
- remote_follow: Követés más hálózaton
reserved_username: Ez egy már lefoglalt felhasználónév
roles:
admin: Adminisztrátor
@@ -427,7 +423,6 @@ hu:
unlocked_warning_title: A fiókod jelenleg nem privát
generic:
changes_saved_msg: Változások sikeresen elmentve!
- powered_by: működteti a %{link}
save_changes: Változások mentése
validation_errors:
one: Valami nincs rendjén! Kérlek tekintsd meg a hibát alant
@@ -461,8 +456,6 @@ hu:
expires_at: Lejárat
uses: Használat
title: Meghívások
- landing_strip_html: "
%{name} az alábbi instancia használója: %{link_to_root_path}. Követheted vagy kapcsolatba léphetsz vele, ha már van felhasználói fiókod a föderációban."
- landing_strip_signup_html: Ha még nincs fiókod,
itt regisztrálhatsz.
lists:
errors:
limit: Elérted a hozzáadható listák maximális számát
@@ -610,7 +603,6 @@ hu:
unlisted: Listázatlan
unlisted_long: Mindenki látja, de a nyilvános időfolyamokban nem jelenik meg
stream_entries:
- click_to_show: Megtekintéshez kattints
pinned: Kitűzött tülk
reblogged: reblogolt
sensitive_content: Szenzitív tartalom
diff --git a/config/locales/id.yml b/config/locales/id.yml
index 4fb75f2b0..33a764a28 100644
--- a/config/locales/id.yml
+++ b/config/locales/id.yml
@@ -5,9 +5,6 @@ id:
about_this: Tentang server ini
closed_registrations: Pendaftaran untuk server ini sedang ditutup.
contact: Kontak
- description_headline: Apa itu %{domain}?
- domain_count_after: server lain
- domain_count_before: Terhubung dengan
other_instances: Server lain
source_code: Kode sumber
status_count_after: status
@@ -22,7 +19,6 @@ id:
people_followed_by: Orang yang diikuti %{name}
people_who_follow: Orang-orang yang mengikuti %{name}
posts: Postingan
- remote_follow: Mengikuti
unfollow: Berhenti mengikuti
admin:
accounts:
@@ -213,7 +209,6 @@ id:
unlocked_warning_title: Akun anda tidak dikunci
generic:
changes_saved_msg: Perubahan berhasil disimpan!
- powered_by: didukung oleh %{link}
save_changes: Simpan perubahan
validation_errors:
one: Ada yang tidak beres! Mohon tinjau error dibawah ini
@@ -226,8 +221,6 @@ id:
following: Daftar diikuti
muting: Daftar didiamkan
upload: Unggah
- landing_strip_html: "
%{name} adalah pengguna di %{link_to_root_path}.Anda dapat mengikuti mereka atau berinteraksi dengan mereka jika anda memiliki akun di fediverse."
- landing_strip_signup_html: Jika anda tidak punya, anda bisa
daftar disini.
media_attachments:
validations:
images_and_video: Tidak bisa melampirkan video pada status yang telah memiliki gambar
@@ -298,7 +291,6 @@ id:
public_long: Bisa dilihat semua orang
unlisted: Bisa dilihat semua orang, tapi tidak ditampilkan di linimasa publik
stream_entries:
- click_to_show: Klik untuk menampilkan
reblogged: di-boost-kan
sensitive_content: Konten sensitif
time:
diff --git a/config/locales/io.yml b/config/locales/io.yml
index bf15de488..287c1d0e6 100644
--- a/config/locales/io.yml
+++ b/config/locales/io.yml
@@ -5,9 +5,6 @@ io:
about_this: Pri ta instaluro
closed_registrations: Membresko ne nun esas posible en ta instaluro.
contact: Kontaktar
- description_headline: Quo esas %{domain}?
- domain_count_after: altra instaluri
- domain_count_before: Konektita ad
other_instances: Altra instaluri
source_code: Fontkodexo
status_count_after: mesaji
@@ -22,7 +19,6 @@ io:
people_followed_by: Sequati da %{name}
people_who_follow: Sequanti di %{name}
posts: Mesaji
- remote_follow: Fore sequar
unfollow: Dessequar
admin:
accounts:
@@ -192,7 +188,6 @@ io:
storage: Konservado di kontenajo
generic:
changes_saved_msg: Chanji senprobleme konservita!
- powered_by: povigita da %{link}
save_changes: Konservar la chanji
validation_errors:
one: Ulo ne eventis senprobleme! Voluntez konsultar la suba eror-raporto.
@@ -205,8 +200,6 @@ io:
following: Listo de sequati
muting: Muting list
upload: Kargar
- landing_strip_html: "
%{name} esas uzero en %{link_to_root_path}. Tu povas sequar lu o komunikar kun lu, se tu havas konto irgaloke en la Fediverse."
- landing_strip_signup_html: Se tu ne havas, tu povas
membreskar hike.
media_attachments:
validations:
images_and_video: Cannot attach a video to a status that already contains images
@@ -274,7 +267,6 @@ io:
public: Publika
unlisted: Publika, ma ne aperos en publika tempolinei
stream_entries:
- click_to_show: Kliktar por montrar
reblogged: diskonocigita
sensitive_content: Titiliva kontenajo
time:
diff --git a/config/locales/it.yml b/config/locales/it.yml
index 7478fbab7..c947e3107 100644
--- a/config/locales/it.yml
+++ b/config/locales/it.yml
@@ -5,49 +5,54 @@ it:
about_mastodon_html: Mastodon è un social network
gratuito e open-source. Un'alternativa
decentralizzata alle piattaforme commerciali che evita che una singola compagnia monopolizzi il tuo modo di comunicare. Scegli un server di cui ti fidi — qualunque sia la tua scelta, potrai interagire con chiunque altro. Chiunque può sviluppare un suo server Mastodon e partecipare alla vita del
social network.
about_this: A proposito di questo server
administered_by: 'Amministrato da:'
- closed_registrations: Al momento le iscrizioni a questo server sono chiuse. Tuttavia! Puoi provare a cercare un istanza diversa su cui creare un account ed avere accesso alla stessa identica rete di questa.
+ api: API
+ apps: Applicazioni Mobile
+ closed_registrations: Al momento le iscrizioni a questo server sono chiuse. Tuttavia! Puoi provare a cercare un istanza diversa su cui creare un account ed avere accesso alla stessa identica rete.
contact: Contatti
contact_missing: Non impostato
contact_unavailable: N/D
- description_headline: Cos'è %{domain}?
- domain_count_after: altri server
- domain_count_before: Connesso a
+ documentation: Documentazione
extended_description_html: |
Un buon posto per le regole
La descrizione estesa non è ancora stata preparata.
features:
- humane_approach_body: Imparando dai fallimenti degli altri networks, Mastodon mira a fare scelte di design etico per combattere l'abuso dei social media.
+ humane_approach_body: Imparando dai fallimenti degli altri networks, Mastodon mira a fare scelte etiche di design per combattere l'abuso dei social media.
humane_approach_title: Un approccio più umano
- not_a_product_body: Mastodon non è una rete commerciale. Niente pubblicità, niente data mining, nessun giardino murato. Non c'è nessuna autorità centrale.
+ not_a_product_body: Mastodon non è una rete commerciale. Niente pubblicità, niente data mining, nessun recinto dorato. Non c'è nessuna autorità centrale.
not_a_product_title: Tu sei una persona, non un prodotto
real_conversation_body: Con 500 caratteri a disposizione, un supporto per i contenuti granulari ed avvisi sui media potrai esprimerti nel modo desiderato.
real_conversation_title: Creato per conversazioni reali
- within_reach_body: Apps per iOS, Android ed altre piattaforme, realizzate grazie ad un ecosistema di API adatto agli sviluppatori, ti consentono di poter stare ovunque al passo con i tuoi amici.
+ within_reach_body: Apps per iOS, Android ed altre piattaforme, realizzate grazie ad un ecosistema di API adatto agli sviluppatori, ti consentono di poter stare in contatto con i tuoi amici ovunque ti trovi.
within_reach_title: Sempre a portata di mano
generic_description: "%{domain} è un server nella rete"
hosted_on: Mastodon ospitato su %{domain}
learn_more: Scopri altro
other_instances: Elenco istanze
+ privacy_policy: Policy su la Privacy
source_code: Codice sorgente
status_count_after: stati
status_count_before: Che hanno pubblicato
+ terms: Termini di Servizio
user_count_after: utenti
user_count_before: Home di
what_is_mastodon: Che cos'è Mastodon?
accounts:
+ choices_html: 'Suggerimenti da %{name}:'
follow: Segui
followers: Seguaci
following: Segui
+ joined: Dal %{date}
media: Media
moved_html: "%{name} è stato spostato su %{new_profile_link}:"
network_hidden: Questa informazione non e' disponibile
nothing_here: Qui non c'è nulla!
people_followed_by: Persone seguite da %{name}
people_who_follow: Persone che seguono %{name}
+ pin_errors:
+ following: Devi gia seguire la persona che vuoi promuovere
posts: Posts
posts_with_replies: Toot e risposte
- remote_follow: Segui da remoto
- reserved_username: Il nome utente è riservato
+ reserved_username: Il nome utente è gia stato preso
roles:
admin: Amministratore
bot: Bot
@@ -158,6 +163,7 @@ it:
create_custom_emoji: "%{name} ha caricato un nuovo emoji %{target}"
create_domain_block: "%{name} ha bloccato il dominio %{target}"
create_email_domain_block: "%{name} ha messo il dominio email %{target} nella blacklist"
+ demote_user: "%{name} ha degradato l'utente %{target}"
destroy_domain_block: "%{name} ha sbloccato il dominio %{target}"
destroy_email_domain_block: "%{name}ha messo il dominio email %{target} nella whitelist"
destroy_status: "%{name} ha eliminato lo status di %{target}"
@@ -174,9 +180,13 @@ it:
resolve_report: "%{name} ha risolto il rapporto %{target}"
silence_account: "%{name} ha silenziato l'account di %{target}"
suspend_account: "%{name} ha sospeso l'account di %{target}"
+ unassigned_report: "%{name} report non assegnato %{target}"
unsilence_account: "%{name} ha de-silenziato l'account di %{target}"
unsuspend_account: "%{name} ha annullato la sospensione dell'account di %{target}"
update_custom_emoji: "%{name} ha aggiornato l'emoji %{target}"
+ update_status: "%{name} stato aggiornato da %{target}"
+ deleted_status: "(stato cancellato)"
+ title: Audit log
custom_emojis:
by_domain: Dominio
copied_msg: Creata con successo una copia locale dell'emoji
@@ -202,6 +212,25 @@ it:
update_failed_msg: Impossibile aggiornare questa emojii
updated_msg: Emoji aggiornata con successo!
upload: Carica
+ dashboard:
+ backlog: backlogged jobs
+ config: Configurazione
+ feature_invites: Link di invito
+ feature_registrations: Registrazioni
+ features: Funzionalità
+ hidden_service: Federazione con servizi nascosti
+ open_reports: apri report
+ recent_users: Utenti Recenti
+ search: Ricerca testo intero
+ single_user_mode: Modalita utente singolo
+ software: Software
+ space: Utilizzo dello spazio
+ title: Dashboard
+ total_users: utenti totali
+ trends: Trends
+ week_interactions: interazioni per questa settimana
+ week_users_active: attivi questa settimana
+ week_users_new: utenti questa settimana
domain_blocks:
add_new: Aggiungi nuovo
created_msg: Il blocco del dominio sta venendo processato
@@ -209,11 +238,14 @@ it:
domain: Dominio
new:
create: Crea blocco
+ hint: Il blocco dominio non previene la creazione di utenti nel database, ma applicherà automaticamente e retroattivamente metodi di moderazione specifici su quegli account.
severity:
noop: Nessuno
silence: Silenzia
suspend: Sospendi
title: Nuovo blocco dominio
+ reject_media: Rifiuta file media
+ reject_media_hint: Rimuovi i file media salvati in locale e blocca i download futuri. Irrilevante per le sospensioni
severities:
noop: Nessuno
silence: Silenzia
@@ -238,6 +270,7 @@ it:
domain: Dominio
new:
create: Aggiungi dominio
+ title: Lista nera email
instances:
account_count: Accounts conosciuti
domain_name: Dominio
@@ -245,12 +278,15 @@ it:
search: Cerca
title: Istanze conosciute
invites:
+ deactivate_all: Disattiva tutto
filter:
all: Tutto
available: Disponibile
expired: Scaduto
title: Filtro
title: Inviti
+ relays:
+ inbox_url: Url Relay
reports:
account:
note: note
@@ -431,7 +467,6 @@ it:
unlocked_warning_html: Chiunque può seguirti per vedere immediatamente i tuoi status privati. %{lock_link} per poter esaminare e respingere gli utenti che vogliono seguirti.
generic:
changes_saved_msg: Modifiche effettuate con successo!
- powered_by: offerto da %{link}
save_changes: Salva modifiche
validation_errors:
one: Qualcosa ancora non va bene! Per favore, controlla l'errore qui sotto
@@ -465,8 +500,6 @@ it:
expires_at: Scade
uses: Utilizzi
title: Invita persone
- landing_strip_html: "
%{name} è un utente su %{link_to_root_path}. Puoi seguirlo o interagire con lui se possiedi un account ovunque nel fediverse."
- landing_strip_signup_html: Se non possiedi un account, puoi
iscriverti qui.
lists:
errors:
limit: Hai raggiunto il numero massimo di liste
@@ -603,7 +636,6 @@ it:
unlisted: Pubblico, ma non visibile sulla timeline pubblica
unlisted_long: Tutti lo possono vedere, ma non compare nelle timeline pubbliche
stream_entries:
- click_to_show: Clicca per mostrare
pinned: Toot fissato in cima
reblogged: condiviso
sensitive_content: Materiale sensibile
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
index 0e30a39e7..bd6a22a64 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -5,13 +5,13 @@ ja:
about_mastodon_html: Mastodon は、オープンなウェブプロトコルを採用した、自由でオープンソースなソーシャルネットワークです。電子メールのような分散型の仕組みを採っています。
about_this: 詳細情報
administered_by: '管理者:'
+ api: API
+ apps: アプリ
closed_registrations: 現在このインスタンスでの新規登録は受け付けていません。しかし、他のインスタンスにアカウントを作成しても全く同じネットワークに参加することができます。
contact: 連絡先
contact_missing: 未設定
contact_unavailable: N/A
- description_headline: "%{domain} とは?"
- domain_count_after: 個のインスタンス
- domain_count_before: 接続中
+ documentation: ドキュメント
extended_description_html: |
ルールを書くのに適した場所
詳細説明が設定されていません。
@@ -28,25 +28,39 @@ ja:
hosted_on: Mastodon hosted on %{domain}
learn_more: もっと詳しく
other_instances: 他のインスタンス
+ privacy_policy: プライバシーポリシー
source_code: ソースコード
- status_count_after: トゥート
+ status_count_after:
+ one: トゥート
+ other: トゥート
status_count_before: トゥート数
- user_count_after: 人
+ terms: 利用規約
+ user_count_after:
+ one: 人
+ other: 人
user_count_before: ユーザー数
what_is_mastodon: Mastodon とは?
accounts:
+ choices_html: "%{name} によるおすすめ:"
follow: フォロー
- followers: フォロワー
+ followers:
+ one: フォロワー
+ other: フォロワー
following: フォロー中
+ joined: "%{date} に登録"
media: メディア
moved_html: "%{name} さんは引っ越しました %{new_profile_link}:"
network_hidden: この情報は利用できません
nothing_here: 何もありません!
people_followed_by: "%{name} さんがフォロー中のアカウント"
people_who_follow: "%{name} さんをフォロー中のアカウント"
- posts: トゥート
+ pin_errors:
+ following: おすすめしたい人はあなたが既にフォローしている必要があります
+ posts:
+ one: トゥート
+ other: トゥート
+ posts_tab_heading: トゥート
posts_with_replies: トゥートと返信
- remote_follow: リモートフォロー
reserved_username: このユーザー名は予約されています
roles:
admin: Admin
@@ -180,6 +194,7 @@ ja:
unsuspend_account: "%{name} さんが %{target} さんの停止を解除しました"
update_custom_emoji: "%{name} さんがカスタム絵文字 %{target} を更新しました"
update_status: "%{name} さんが %{target} さんの投稿を更新しました"
+ deleted_status: "(削除済)"
title: 操作履歴
custom_emojis:
by_domain: ドメイン
@@ -206,6 +221,27 @@ ja:
update_failed_msg: 絵文字を更新できませんでした
updated_msg: 絵文字の更新に成功しました!
upload: アップロード
+ dashboard:
+ backlog: 未処理のジョブ
+ config: 構成
+ feature_deletions: アカウント削除
+ feature_invites: 招待リンク
+ feature_registrations: 新規登録
+ feature_relay: 連合リレー
+ features: 機能
+ hidden_service: 秘匿サービスとの連合
+ open_reports: 未解決のレポート
+ recent_users: 最近登録したユーザー
+ search: 全文検索
+ single_user_mode: シングルユーザーモード
+ software: ソフトウェア
+ space: ディスク使用量
+ title: ダッシュボード
+ total_users: 全ユーザー
+ trends: トレンドタグ
+ week_interactions: 今週交流のあった回数
+ week_users_active: 今週活動した人数
+ week_users_new: 今週登録した人数
domain_blocks:
add_new: 新規追加
created_msg: ドメインブロック処理を完了しました
@@ -255,12 +291,23 @@ ja:
search: 検索
title: 既知のインスタンス
invites:
+ deactivate_all: すべて無効化
filter:
all: すべて
available: 使用可能
expired: 期限切れ
title: フィルター
title: 招待
+ relays:
+ add_new: リレーを追加
+ description_html: "
連合リレーとは、登録しているサーバー間の公開トゥートを仲介するサーバーです。
中小規模のサーバーが連合のコンテンツを見つけるのを助けます。これを使用しない場合、ローカルユーザーがリモートユーザーを手動でフォローする必要があります。"
+ enable_hint: 有効にすると、リレーから全ての公開トゥートを受信するようになり、またこのサーバーの全ての公開トゥートをリレーに送信するようになります。
+ inbox_url: リレーURL
+ pending: リレーサーバーの承認待ちです
+ save_and_enable: 保存して有効にする
+ setup: リレー接続を設定する
+ status: ステータス
+ title: リレー
report_notes:
created_msg: レポートメモを書き込みました!
destroyed_msg: レポートメモを削除しました!
@@ -310,6 +357,9 @@ ja:
contact_information:
email: ビジネスメールアドレス
username: 連絡先のユーザー名
+ custom_css:
+ desc_html: 全ページに適用されるCSSの編集
+ title: カスタムCSS
hero:
desc_html: フロントページに表示されます。サイズは600x100px以上推奨です。未設定の場合、インスタンスのサムネイルが使用されます
title: ヒーローイメージ
@@ -339,11 +389,14 @@ ja:
desc_html: ユーザーページにスタッフのバッジを表示します
title: スタッフバッジを表示する
site_description:
- desc_html: フロントページへの表示と meta タグに使用される紹介文です。HTMLタグ、特に
<a>
と
<em>
が使えます。
+ desc_html: フロントページへの表示に使用される紹介文です。このMastodonインスタンスを特徴付けることやその他重要なことを記述してください。HTMLタグ、特に
<a>
と
<em>
が使えます。
title: インスタンスの説明
site_description_extended:
desc_html: あなたのインスタンスにおける行動規範やルール、ガイドライン、そのほかの記述をする際に最適な場所です。HTMLタグが使えます
title: カスタム詳細説明
+ site_short_description:
+ desc_html: サイドバーと meta タグに表示されます。Mastodon とは何か、そしてこのサーバーの特別な何かを1段落で記述してください。空欄の場合、インスタンスの説明が使用されます。
+ title: 短いインスタンスの説明
site_terms:
desc_html: あなたは独自のプライバシーポリシーや利用規約、そのほかの法的根拠を書くことができます。HTMLタグが使えます
title: カスタム利用規約
@@ -365,6 +418,7 @@ ja:
media:
title: メディア
no_media: メディアなし
+ no_status_selected: 何も選択されていないため、変更されていません
title: トゥート一覧
with_media: メディアあり
subscriptions:
@@ -374,6 +428,12 @@ ja:
last_delivery: 最終配送
title: WebSub
topic: トピック
+ suspensions:
+ bad_acct_msg: 値が一致しませんでした。停止しようとしているアカウントに間違いはありませんか?
+ hint_html: 'アカウントの停止を確認するには、以下のフィールドに %{value} と入力してください:'
+ proceed: 完全に活動停止させる
+ title: "%{acct} を停止"
+ warning_html: 'このアカウントを停止すると、このアカウントから次のようなデータが
不可逆的に削除されます:'
title: 管理
admin_mailer:
new_report:
@@ -505,9 +565,12 @@ ja:
true_privacy_html: "
プライバシーの保護はエンドツーエンドの暗号化でのみ実現可能であることに留意ください。"
unlocked_warning_html: 誰でもあなたをフォローすることができ、フォロワー限定の投稿をすぐに見ることができます。フォローする人を限定したい場合は%{lock_link}に設定してください。
unlocked_warning_title: このアカウントは承認制アカウントに設定されていません
+ footer:
+ developers: 開発者向け
+ more: さらに…
+ resources: リソース
generic:
changes_saved_msg: 正常に変更されました!
- powered_by: powered by %{link}
save_changes: 変更を保存
validation_errors:
one: エラーが発生しました! 以下のエラーを確認してください
@@ -543,8 +606,6 @@ ja:
expires_at: 有効期限
uses: 使用
title: 新規ユーザーの招待
- landing_strip_html: "
%{name} さんはインスタンス %{link_to_root_path} のユーザーです。アカウントさえ持っていればフォローしたり会話したりできます。"
- landing_strip_signup_html: もしお持ちでないなら
こちら からサインアップできます。
lists:
errors:
limit: リストの上限に達しました
@@ -603,7 +664,6 @@ ja:
quadrillion: Q
thousand: K
trillion: T
- unit: ''
pagination:
newer: 新しいトゥート
next: 次
@@ -621,6 +681,9 @@ ja:
no_account_html: アカウントをお持ちではないですか?
こちらからサインアップできます
proceed: フォローする
prompt: 'フォローしようとしています:'
+ remote_interaction:
+ proceed: 進む
+ prompt: 'このトゥートに返信しようとしています:'
remote_unfollow:
error: エラー
title: タイトル
@@ -695,7 +758,7 @@ ja:
disallowed_hashtags:
one: '許可されていないハッシュタグが含まれています: %{tags}'
other: '許可されていないハッシュタグが含まれています: %{tags}'
- language_detection: 自動的に言語を検出する
+ language_detection: 自動検出
open_in_web: Webで開く
over_character_limit: 上限は %{max}文字までです
pin_errors:
@@ -704,6 +767,7 @@ ja:
private: 非公開のトゥートを固定することはできません
reblog: ブーストされたトゥートを固定することはできません
show_more: もっと見る
+ sign_in_to_participate: ログインして会話に参加
title: '%{name}: "%{quote}"'
visibilities:
private: フォロワー限定
@@ -713,7 +777,6 @@ ja:
unlisted: 未収載
unlisted_long: 誰でも見ることができますが、公開タイムラインには表示されません
stream_entries:
- click_to_show: クリックして表示
pinned: 固定されたトゥート
reblogged: さんがブースト
sensitive_content: 閲覧注意
@@ -807,6 +870,7 @@ ja:
time:
formats:
default: "%Y年%m月%d日 %H:%M"
+ month: "%Y年 %b"
two_factor_authentication:
code_hint: 確認するには認証アプリで表示されたコードを入力してください
description_html: "
二段階認証を有効にするとログイン時、認証アプリからコードを入力する必要があります。"
@@ -822,7 +886,7 @@ ja:
recovery_codes_regenerated: リカバリーコードが再生成されました
recovery_instructions_html: 携帯電話を紛失した場合、以下の内どれかのリカバリーコードを使用してアカウントへアクセスすることができます。
リカバリーコードは大切に保全してください。たとえば印刷してほかの重要な書類と一緒に保管することができます。
setup: 初期設定
- wrong_code: コードが間違っています。サーバー上の時間とデバイス上の時間が一致していることを確認してください。
+ wrong_code: コードが間違っています。サーバー上の時間とデバイス上の時間が一致していますか?
user_mailer:
backup_ready:
explanation: Mastodonアカウントのアーカイブを受け付けました。今すぐダウンロードできます!
diff --git a/config/locales/ka.yml b/config/locales/ka.yml
new file mode 100644
index 000000000..c1105b017
--- /dev/null
+++ b/config/locales/ka.yml
@@ -0,0 +1,899 @@
+---
+ka:
+ about:
+ about_hashtag_html: ეს საჯარო ტუტებია, რომლებიც ატარებენ
#%{hashtag} ტეგს. მათთან ინტერაქციას შეძლებთ, თუ ფედივერსში გაქვთ რაიმე ანგარიში.
+ about_mastodon_html: მასტოდონი ღია ვებ პროტოკოლებზე და უფასო, ღია პროგრამებზე დაფუძნებული სოციალური ქსელია. ის ისეთი დეცენტრალიზებულია როგორც ელ-ფოსტა.
+ about_this: შესახებ
+ administered_by: 'ადმინისტრატორი:'
+ api: აპი
+ apps: მობილური აპლიკაციები
+ closed_registrations: რეგისტრაციები ამჟამად ინსტანციაზე დახურულია. თუმცა! ანგარიშის შესაქმნელად შეგიძლიათ იპოვოთ სხვა ინსტანცია და იმავე ქსელზე იქონიოთ წვდომა იქიდან.
+ contact: კონტაქტი
+ contact_missing: არაა დაყენებული
+ contact_unavailable: მიუწ.
+ documentation: დოკუმენტაცია
+ extended_description_html: |
+
კარგი ადგილი წესებისთვის
+
განვრცობილი აღწერილობა ჯერ არ შექმნილა.
+ features:
+ humane_approach_body: სხვა ქსელების შეცდომების გათვალისწინებით, მასტოდონი მიზნად ისახავს ეტიკური დიზაინის არჩევნების გაკეთებას, დაუპირისპირდეს სოციალური მედიის არასწორ მოხმარებას.
+ humane_approach_title: უფრო ადამიანური მიდგომა
+ not_a_product_body: მასტოდონი არ არის კომერციული ქსელი. არაა რეკლამა, არაა მაინინგი, არაა შემოღობილი ბაღები. არაა ცენტრალური ავტორიტეტი.
+ not_a_product_title: შენ ხარ პერსონა და არა პროდუქტი
+ real_conversation_body: 500 ნიშნის განკარგულებით, მარცვლოვანი კონტენტის და მედია გაფრთხილებების მხარდაჭერით, შეგიძლიათ გამოხატოთ ისე როგორც გსურთ.
+ real_conversation_title: შექმნილია ნამდვილი საუბრისთვის
+ within_reach_body: დეველოპერისთვის-მეგობრული აპი ექოსისტემის წყალობით, მრავალი აპლიკაცია აი-ოსისთვის, ანდროიდისთვის და სხვა პლატფორმებისთვის, საშალებას მოგცემთ ნებისმიერი ადგილიდან იქონიოთ კავშირი თქვენს მეგობრებთან.
+ within_reach_title: მუდამ წვდომის ქვეშ
+ generic_description: "%{domain} ერთი სერვერია ქსელში"
+ hosted_on: მასტოდონს მასპინძლობს %{domain}
+ learn_more: გაიგე მეტი
+ other_instances: ინსტანციების სია
+ privacy_policy: კონფიდენციალურობის პოლიტიკა
+ source_code: კოდი
+ status_count_after: სტატუსები
+ status_count_before: ვინც უავტორა
+ terms: მომსახურების პირობები
+ user_count_after: მომხმარებლისთვის
+ user_count_before: სახლი
+ what_is_mastodon: რა არის მასტოდონი?
+ accounts:
+ choices_html: "%{name}-ის არჩევნები:"
+ follow: გაყევი
+ followers: მიმდევრები
+ following: მიჰყვება
+ joined: გაწევრიანდა %{date}
+ media: მედია
+ moved_html: "%{name} გადავიდა %{new_profile_link}:"
+ network_hidden: ეს ინფორმაცია ხელმიუწვდომელია
+ nothing_here: აქ არაფერია!
+ people_followed_by: ხალხი ვისაც %{name} მიჰყვება
+ people_who_follow: ხალხი ვინც მიჰყვება %{name}-ს
+ pin_errors:
+ following: იმ ადამიანს, ვინც მოგწონთ, უკვე უნდა მიჰყვებოდეთ
+ posts: ტუტები
+ posts_with_replies: ტუტები და პასუხები
+ reserved_username: მომხმარებელი რეზერვირებულია
+ roles:
+ admin: ადმინისტრატორი
+ bot: ბოტი
+ moderator: მოდერატორი
+ unfollow: ნუღარ მიჰყვები
+ admin:
+ account_moderation_notes:
+ create: დატოვეთ ჩანაწერი
+ created_msg: მოდერაციის ჩანაწერი წარმატებით შეიქმნა!
+ delete: გაუქმება
+ destroyed_msg: მოდერაციის ჩანაწერი წარმატებით გაუქმდა!
+ accounts:
+ are_you_sure: დარწმუნებული ხარ?
+ avatar: ავატარი
+ by_domain: დომენი
+ change_email:
+ changed_msg: ანგარიშის ელ-ფოსტა წარმატებით შეიცვალა!
+ current_email: მიმდინარე ელ-ფოსტა
+ label: ელ-ფოსტის შეცვლა
+ new_email: ახალი ელ-ფოსტა
+ submit: ელ-ფოსტის შეცვლა
+ title: შეცვალეთ ელ-ფოსტა მომხმარებლისთვის %{username}
+ confirm: დადასტურება
+ confirmed: დადასტურებულია
+ confirming: დასტურდება
+ demote: დაქვეითება
+ disable: გამორთვა
+ disable_two_factor_authentication: გამორთე 2FA
+ disabled: გამორთულია
+ display_name: დისპლეი სახელი
+ domain: დომენი
+ edit: შეცვლა
+ email: ელ-ფოსტა
+ email_status: ელ-ფოსტის სტატუსი
+ enable: ჩართვა
+ enabled: ჩართულია
+ feed_url: ლენტის ურლ
+ followers: მიმდევრები
+ followers_url: მიმდევრების ურლ
+ follows: დადევნებები
+ inbox_url: ინბოქსის ურლ
+ ip: აი-პი
+ location:
+ all: ყველა
+ local: ლოკალური
+ remote: დისტანციური
+ title: ადგილმდებარეობა
+ login_status: ლოგინის სტატუსი
+ media_attachments: თან-დართული მედია
+ memorialize: აქციე მემორანდუმად
+ moderation:
+ all: ყველა
+ silenced: გაჩუმებული
+ suspended: შეჩერებული
+ title: მოდერაცია
+ moderation_notes: მოდერაციის ჩანაწერები
+ most_recent_activity: უახლესი აქტივობა
+ most_recent_ip: უახლესი აი-პი
+ not_subscribed: გამოუწერელი
+ order:
+ alphabetic: ანბანური
+ most_recent: უახლესი
+ title: წესრიგი
+ outbox_url: აუთბოქსის ურლ
+ perform_full_suspension: მოახდინეთ სრული შეჩერება
+ profile_url: პროფილის ურლ
+ promote: დაწინაურება
+ protocol: პროტოკოლი
+ public: საჯარო
+ push_subscription_expires: ფუშ გამოწერა უქმდება
+ redownload: განაახლე ავატარი
+ remove_avatar: გააუქმე ავატარი
+ resend_confirmation:
+ already_confirmed: ეს მომხმარებელი უკვე დამოწმებულია
+ send: დამოწმების ინსტრუქციების გადაგზავნა
+ success: დამოწმების ინსტრუქციები წარმატებით გაიგზავნა!
+ reset: გადატვირთვა
+ reset_password: პაროლის გადატვირთვა
+ resubscribe: ხელახალი გამოწერა
+ role: უფლებები
+ roles:
+ admin: ადმინისტრატორი
+ moderator: მოდერატორი
+ staff: სტაფი
+ user: მომხმარებელი
+ salmon_url: სალმონის ურლ
+ search: ძებნა
+ shared_inbox_url: გაზიარებული ინბოქსის ურლ
+ show:
+ created_reports: ამ ანგარიშის მიერ შექმნილი რეპორტები
+ report: რეპორტი
+ targeted_reports: ამ ანგარიშზე მიღებული რეპორტები
+ silence: სიჩუმე
+ statuses: სტატუსები
+ subscribe: გამოწერა
+ title: ანგარიშები
+ unconfirmed_email: დაუმოწმებელი ელ-ფოსტა
+ undo_silenced: გაჩუმების მოშორება
+ undo_suspension: შეჩერების მოშორება
+ unsubscribe: გამოწერის შეწყვეტა
+ username: მომხმარებლის სახელი
+ web: ვები
+ action_logs:
+ actions:
+ assigned_to_self_report: "%{name}-მა დანიშნა რეპორტი %{target} საკუთარ თავზე"
+ change_email_user: "%{name}-მა შეცვალა %{target} მომხმარებლის ელ-ფოსტის მისამართი"
+ confirm_user: "%{name}-მა დაამოწმა %{target} მომხმარებლის ელ-ფოსტის მისამართი"
+ create_custom_emoji: "%{name}-მა ატვირთა ახალი ემოჯი %{target}"
+ create_domain_block: "%{name}-მა დაბლოკა დომენი %{target}"
+ create_email_domain_block: "%{name}-მა შავ სიაში მოაქცია დომენი %{target}"
+ demote_user: "%{name}-მა დააქვეითა მომხმარებელი %{target}"
+ destroy_domain_block: "%{name}-მა ბლოკი მოხსნა დომენს %{target}"
+ destroy_email_domain_block: "%{name} თეთრ სიაში მოაქცია დომენი %{target}"
+ destroy_status: "%{name}-მა გააუქმა სტატუსი %{target}-ზე"
+ disable_2fa_user: "%{name} გათიშა მეორე ფაქტორის მოთხოვნილება მომხმარებელზე %{target}"
+ disable_custom_emoji: "%{name}-მა გათისა ემოჯი %{target}"
+ disable_user: "%{name}-მა გათიშა ლოგინი მომხმარებლისთვის %{target}"
+ enable_custom_emoji: "%{name}-მა ჩართო ემოჯი %{target}"
+ enable_user: "%{name}-მა ჩართო ლოგინი მომხმარებლისთვის %{target}"
+ memorialize_account: "%{name}-მა აქცია ანგარიში %{target} მემორანდუმის გვერდად"
+ promote_user: "%{name}-მა დააწინაურა მომხმარებელი %{target}"
+ remove_avatar_user: "%{name}-მა გააუქმა %{target} მომხმარებლის ავატარი"
+ reopen_report: "%{name}-მა ხელახლა გახსნა რეპორტი %{target}"
+ reset_password_user: "%{name} გადატვირთა მომხმარებლის %{target} პაროლი"
+ resolve_report: "%{name}-მა მოაგვარა %{target} მომხმარებლის რეპორტი"
+ silence_account: "%{name}-მა გააჩუმა %{target} ანგარიში"
+ suspend_account: "%{name} შეაჩერა %{target} ანგარიში"
+ unassigned_report: "%{name}-მა მოაშორა რეპორტი %{target}"
+ unsilence_account: "%{name}-მა მოაშორა გაჩუმება %{target} ანგარიშს"
+ unsuspend_account: "%{name}-მა მოაშორა შეჩერება %{target} ანგარიშს"
+ update_custom_emoji: "%{name}-მა განაახლა ემოჯი %{target}"
+ update_status: "%{name}-მა განაახლა სტატუსი %{target}-ით"
+ deleted_status: "(გაუქმებული სტატუსი)"
+ title: აუდიტის ლოგი
+ custom_emojis:
+ by_domain: დომენი
+ copied_msg: ემოჯის ლოკალური ასლი წარმატებით შეიქმნა
+ copy: კოპირება
+ copy_failed_msg: ამ ემოჯის ლოკალური ასლი ვერ შეიქმნა
+ created_msg: ემოჯი წარმატებით შეიქმნა!
+ delete: გაუქმება
+ destroyed_msg: ემოჯი წარმატებით გაუქმდა!
+ disable: გათიშვა
+ disabled_msg: ეს ემოჯი წარმატებით გაითიშა
+ emoji: ემოჯი
+ enable: ჩართვა
+ enabled_msg: წარმატებით ჩაირთო ეს ემოჯი
+ image_hint: PNG 50კბმდე
+ listed: ჩამოთვლილი
+ new:
+ title: ახალი პერსონალიზირებული ემოჯის დამატება
+ overwrite: გადაწერა
+ shortcode: მოკლე-კოდი
+ shortcode_hint: მინ. 2 ნიშანი, მხოლოდ ალფანუმერიკული ნიშნები და "ქვედა-ტირეები"
+ title: პერსონალიზირებული ემოჯიები
+ unlisted: ჩამოუთვლელი
+ update_failed_msg: ემოჯის განახლება ვერ მოხერხდა
+ updated_msg: ემოჯი წარმატებით განახლდა!
+ upload: ატვირთვა
+ dashboard:
+ backlog: დაუსრულებელი საქმეები
+ config: კონფიგურაცია
+ feature_deletions: ანგარიშის გაუქმებები
+ feature_invites: მოწვევის ბმულები
+ feature_registrations: რეგისტრაციები
+ feature_relay: ფედერაციის რილეი
+ features: ფუნქციები
+ hidden_service: ფედერაცია დამალულ სერვისებთან
+ open_reports: ღია რეპორტები
+ recent_users: ახალი მომხმარებლები
+ search: სრული-ტექსტის ძიება
+ single_user_mode: ერთ-მომხმარებლიანი რეჟიმი
+ software: პროგრამა
+ space: მოცულობის მოხმარება
+ title: დაფა
+ total_users: სულ მომხმარებლები
+ trends: ტრენდები
+ week_interactions: ამ კვირის ინტერაქციები
+ week_users_active: აქტიური ამ კვირას
+ week_users_new: ამ კვირის მომხმარებლები
+ domain_blocks:
+ add_new: ახლის დამატება
+ created_msg: დომენის ბლოკი ახლა პროცესირების ქვეშაა
+ destroyed_msg: დომენის ბლოკი გაუქმდა
+ domain: დომენი
+ new:
+ create: ბლოკის შექმნა
+ hint: დომენის ბლოკი არ შეაჩერებს ანგარიშების ჩაწერას მონაცემთა ბაზაში, მაგრამ ეს ამ ანგარიშებზე რეტროაქტიულად და ავტომატურად გაატარებს სპეციფიურ მოდერაციის მეთოდებს.
+ severity:
+ desc_html: "
გაჩუმება გახდის ანგარიშის პოსტებს უჩინარს ყველასთვის, ვინც მას არ მიჰყვება.
შეჩერება გააუქმებს ანგარიშის მთელ კონტენტს, მედიას და პროფილის მონაცემს. გამოიყენეთ
არც ერთი თუ გსურთ უბრალოდ უარყოთ ფაილები."
+ noop: არც ერთი
+ silence: გაჩუმება
+ suspend: შეჩერება
+ title: ახალი დომენის ბლოკი
+ reject_media: მედია ფაილების უარყოფა
+ reject_media_hint: შლის ლოკალურად შენახულ მედია ფაილებს და უარყოფს სამომავლო გადმოტვირთებს. შეუსაბამო შეჩერებებისთვის
+ severities:
+ noop: არც ერთი
+ silence: გაჩუმება
+ suspend: შეჩერება
+ severity: სიმძიმე
+ show:
+ affected_accounts:
+ one: გავლენა იქონია მონაცემთა ბაზაში ერთ ანგარიშზე
+ other: გავლენა იქონიო მონაცემთა ბაზაში %{count} ანგარიშზე
+ retroactive:
+ silence: ამ დომენში ყველა არსებულ ანგარიშზე გაჩუმების მოშორება
+ suspend: ამ დომენში ყველა არსებულ ანგარიშზე შეჩერების მოშორება
+ title: უკუაქციეთ დომენის ბლოკი %{domain} დომენზე
+ undo: უკუქცევა
+ title: დომენის ბლოკები
+ undo: უკუქცევა
+ email_domain_blocks:
+ add_new: ახლის დამატება
+ created_msg: ელ-ფოსტის დომენი წარმატებით დაემატა შავ სიას
+ delete: გაუქმება
+ destroyed_msg: ელ-ფოსტის დომენი წარმატებით ამოიშალა შავი სიიდან
+ domain: დომენი
+ new:
+ create: დომენის დამატება
+ title: ელ-ფოსტის ახალი შენატანი შავ სიაში
+ title: ელ-ფოსტის შავი სია
+ instances:
+ account_count: ცნობილი ანგარიშები
+ domain_name: დომენი
+ reset: გადატვირთვა
+ search: ძებნა
+ title: ცნობილი ინსტანციები
+ invites:
+ deactivate_all: ყველას დეაქტივაცია
+ filter:
+ all: ყველა
+ available: ხელმისაწვდომი
+ expired: ვადაგასული
+ title: ფილტრი
+ title: მოწვევები
+ relays:
+ add_new: ახელი რილეი
+ description_html: "
ფედერაციის რილეი შუამავალი სერვერია, რომელიც ცვლის საჯარო ტუტების დიდ ოდენობას იმ სერვერებს შორის, რომლებიც გამოიწერენ და მასზე გამოაქვეყნებენ.
ეს მცირე და საშუალო სერვერებს ეხმარება აღმოაჩინონ კონტენტი ფედივერსისგან, რომელიც სხვა შემთხვევაში მომხარებლებს აიძულებდა მექნიკურ რეჟიმში გაჰყოლოდნენ ხალხს სხვა დისტანციურ სერვერებზე."
+ enable_hint: ამოქმდების შემდეგ, თქვენი სერვერი გამოიწერს ყველა საჯარო ტუტს ამ რილეიდან და დაიწყებს სერვერის ღია ტუტების იქ გაგზავნას.
+ inbox_url: რილეი ურლ
+ setup: რილეი კავშირის დამყარება
+ status: სტატუსი
+ title: რილეი სია
+ report_notes:
+ created_msg: რეპორტის ჩანაწერი წარმატებით შეიქმნა!
+ destroyed_msg: რეპორტის ჩანაწერი წარმატებით გაუქმდა!
+ reports:
+ account:
+ note: ჩანაწერი
+ report: რეპორტი
+ action_taken_by: მოქმედება შეასრულა
+ are_you_sure: დარწმუნებული ხარ?
+ assign_to_self: დანიშნე ჩემზე
+ assigned: დაინიშნა მოდერატორი
+ comment:
+ none: არაფერი
+ created_at: რეპორტის დრო
+ id: იდ
+ mark_as_resolved: მონიშნე გადაწყვეტილად
+ mark_as_unresolved: მონიშნე გადაუწყვეტლად
+ notes:
+ create: ჩანაწერის დამატება
+ create_and_resolve: გადაწყვეტა ჩანაწერით
+ create_and_unresolve: ხელახალი გახსნა ჩანაწერით
+ delete: გაუქმება
+ placeholder: აღწერეთ თუ რა ნაბიჯები უნდა გადაიდგას, ან სხვა დაკავშირებული განახლებები...
+ reopen: რეპორტის ხელახალი გახსნა
+ report: 'რეპორტი #%{id}'
+ report_contents: მოცულობები
+ reported_account: დარეპორტებული ანგარიში
+ reported_by: დაარეპორტა
+ resolved: გადაწყვეტილი
+ resolved_msg: რეპორტი წარმატებით გადაწყდა!
+ silence_account: ანგარიშის გაჩუმება
+ status: სტატუსი
+ suspend_account: ანგარიშის შეჩერება
+ target: მიზანი
+ title: რეპორტები
+ unassign: გადაყენება
+ unresolved: გადაუწყვეტელი
+ updated_at: განახების დრო
+ view: ჩვენება
+ settings:
+ activity_api_enabled:
+ desc_html: ლოკალურად გამოქვეყნებული სტატუსების, აქტიური მომხმარებლების და ყოველკვირეული რეგისტრაციების მთვლელი
+ title: გამოაქვეყნე აგრეგატი სტატისტიკები მომხმარებლის აქტივობაზე
+ bootstrap_timeline_accounts:
+ desc_html: გამოჰყავი მომხმარებლები მძიმით. იმუშავებს მხოლოდ ლოკალური და "ბლოკ-მოხსნილ" ანგარიშები. საწყისი როდესაც ცარიელია ყველა ლოკალური ადმინი.
+ title: საწყისი მიდევნებები ახლა მომხმარებლებზე
+ contact_information:
+ email: ბიზნეს ელ-ფოსტა
+ username: საკონტაქტო მომხმარებლის სახელი
+ hero:
+ desc_html: წინა გვერდზე გამოჩენილი. მინ. 600/100პიქს. რეკომენდირებული. როდესაც არაა დაყენებული, ჩნდება ინსტანციის პიქტოგრამა
+ title: გმირი სურათი
+ peers_api_enabled:
+ desc_html: დომენების სახელები რომლებსაც შეხვდა ეს ინსტანცია ფედივერსში
+ title: გამოაქვეყნე აღმოჩენილი ინსტანციების სია
+ preview_sensitive_media:
+ desc_html: ბმულის პრევიუები სხვა ვებ-საიტებზე გამოაჩენენ პიქტოგრამას, მაშინაც კი თუ მედია მონიშნულია მგრძნობიარედ
+ title: გამოაჩინე მგრძნობიარე მედია ოუფენ-გრეფ პრევიუებში
+ registrations:
+ closed_message:
+ desc_html: გამოჩნდება წინა გვერდზე, როდესაც რეგისტრაციები დახურულია. შეგიძლიათ გამოიყენოთ ჰტმლ ტეგები
+ title: დახურული რეგისტრაციის წერილი
+ deletion:
+ desc_html: უფლება მიეცით ყველას, გააუქმონ თავიანთი ანგარიში
+ title: ღია ანგარიშის გაუქმება
+ min_invite_role:
+ disabled: არავინ
+ title: ნება დაერთოს მოწვეევებს
+ open:
+ desc_html: უფლება მიეცით ყველას, გახსნან ანგარიში
+ title: ღია რეგისტრაცია
+ show_known_fediverse_at_about_page:
+ desc_html: ჩართვისას, ეს გამოაჩენს ტუტებს ყველა ცნობილი ფედივერსისგან პრევიუზე. სხვა შემთხვევაში, გამოაჩენს მხოლოდ ლოკალურ ტუტებს.
+ title: გამოჩნდეს ცნობილი ვედივერსი თაიმლაინ პრევიუში
+ show_staff_badge:
+ desc_html: გამოჩნდეს სტაფის ნიშანი მომხმარებლის გვერდზე
+ title: სტაფის ნიშნის გამოჩენა
+ site_description:
+ desc_html: საშესავლო პარაგრაფი წინა გვერდზე. აღწერეთ თუ რა ხდის ამ მასტოდონის სერვერს განსაკუთრებულს და სხვა მნიშვნელოვანი. შეგიძლიათ გამოიყენოთ ჰტმლ ტეგები, კერძოდ
<a>
და
<em>
.
+ title: ინსტანციის აღწერილობა
+ site_description_extended:
+ desc_html: კარგი ადგილი მოქცევის კოდექსისთვის, წესები, სახელმძღვანელოები და სხვა რაც გამოარჩევს თქვენს ინსტანციას. შეგიძლიათ გამოიყენოთ ჰტმლ ტეგები
+ title: პერსონალიზირებული განვრცობილი ინფორმაცია
+ site_short_description:
+ desc_html: გამოჩნდება გვერდით ბარში და მეტა ტეგებში. აღწერეთ თუ რა არის მასტოდონი და რა ხდის ამ სერვერს უნიკალურს ერთ პარაგრაფში. თუ ცარიელია, გამოჩნდება ინსტანციის აღწერილობა.
+ title: აჩვენეთ ინსტანციის აღწერილობა
+ site_terms:
+ desc_html: შეგიძლიათ დაწეროთ საკუთარი კონფიდენციალურობის პოლიტიკა, მომსახურების პირობები ან სხვა იურიდიული დოკუმენტი. შეგიძლიათ გამოიყენოთ ჰტმლ ტეგები
+ title: პერსონალიზირებული მომსახურების პირობები
+ site_title: ინსტანციის სახელი
+ thumbnail:
+ desc_html: გამოიყენება პრევიუებისთვის ოუფენ-გრეფში და აპი-ში. 1200/630პიქს. რეკომენდირებული
+ title: ინსტანციის პიქტოგრამა
+ timeline_preview:
+ desc_html: აჩვენეთ საჯარო თაიმლაინი ლენდინგ გვერდზე
+ title: თაიმლაინ პრევიუ
+ title: საიტის პარამეტრები
+ statuses:
+ back_to_account: უკან ანგარიშის გვერდისკენ
+ batch:
+ delete: გაუქმება
+ nsfw_off: მონიშნე არა-მგრძნობიარედ
+ nsfw_on: მონიშნე მგრძნობიარედ
+ failed_to_execute: ვერ გაეშვა
+ media:
+ title: მედია
+ no_media: არაა მედია
+ no_status_selected: სატუსები არ შეცვლილა, რადგან არცერთი არ მონიშნულა
+ title: ანგარიშის სტატუსები
+ with_media: მედიით
+ subscriptions:
+ callback_url: ქოლბექ ურლ
+ confirmed: დამოწმდა
+ expires_in: ვადა გასდის
+ last_delivery: ბოლო მიღება
+ title: ვებ-საბი
+ topic: სათაური
+ title: ადმინისტრაცია
+ admin_mailer:
+ new_report:
+ body: "%{reporter}-მა დაარეპორტა %{target}"
+ body_remote: ვიღაცამ %{domain}-იდან დაარეპორტა %{target}
+ subject: ახალი რეპორტი %{instance} (#%{id})-ზე
+ application_mailer:
+ notification_preferences: შეცვალეთ ელ-ფოსტის პრეფერნსიები
+ salutation: "%{name},"
+ settings: 'შეცვალეთ ელ-ფოსტის პრეფერენსიები: %{link}'
+ view: 'ჩვენება:'
+ view_profile: პროფილის ჩვენება
+ view_status: სტატუსის ჩვენება
+ applications:
+ created: აპლიკაცია წარმატებით შეიქმნა
+ destroyed: აპლიკაცია წარმატებით გაუქმდა
+ invalid_url: მოწოდებული ურლ არასწორია
+ regenerate_token: წვდომის ტოკენის რეგენერაცია
+ token_regenerated: წვდომის ტოკენის რეგენერაცია მოხერხდა
+ warning: იყავით ძალიან ფრთხილად ამ მონაცემთან. არასდროს გააზიაროთ ეს!
+ your_token: თქვენი წვდომის ტოკენი
+ auth:
+ agreement_html: რეგისტრაციით თქვენ ეთანხმებით
ინსტანციის წესებს და
ჩვენ მომსახურების პირობებს.
+ change_password: პაროლი
+ confirm_email: ელ-ფოსტის დამოწმება
+ delete_account: ანგარიშის გაუქმება
+ delete_account_html: თუ გსურთ გააუქმოთ თქვენი ანგარიში, შეგიძლიათ
გააგრძელოთ აქ. საჭირო იქნება დამოწმება.
+ didnt_get_confirmation: არ მოგსვლიათ დამოწმების ინსტრუქციები?
+ forgot_password: დაგავიწყდათ პაროლი?
+ invalid_reset_password_token: პაროლის გადატვირთვის ტოკენი არასწორია ან ვადაგასული. გთხოვთ მოითხოვეთ ახალი.
+ login: შესვლა
+ logout: გასვლა
+ migrate_account: სხვა ანგარიშზე გადასვლა
+ migrate_account_html: თუ გსურთ ამ ანგარიშის რედირექტის ხვაზე, შეგიძლიათ
გაუწიოთ კონფიგურაცია აქ.
+ or: ან
+ or_log_in_with: ან გამოიყენეთ
+ providers:
+ cas: ქეს
+ saml: სამლ
+ register: რეგისტრაცია
+ register_elsewhere: რეგისტრაცია სხვა სერვერზე
+ resend_confirmation: დამოწმების ინსტრუქციების ხელახალი გამოგზავნა
+ reset_password: პაროლის გადატვირთვა
+ security: უსაფრთხოება
+ set_new_password: ახალი პაროლის დაყენება
+ authorize_follow:
+ already_following: უკვე მიჰყვებით ამ ანგარიშს
+ error: სამწუხაროთ, დისტანციური სერვერის წაკითხვამ გამოიწვია შეცდომა
+ follow: გაყევი
+ follow_request: 'დადევნების მოთხონვა გაეგზავნა:'
+ following: 'წარმატება! ახლა მიჰყვებით:'
+ post_follow:
+ close: ან შეგიძლიათ დახუროთ ეს ფანჯარა.
+ return: მომხმარებლის პროფილის ჩვენება
+ web: ვებზე გადასვლა
+ title: გაყევი %{acct}-ს
+ datetime:
+ distance_in_words:
+ about_x_hours: "%{count}სთ"
+ about_x_months: "%{count}თვე"
+ about_x_years: "%{count}წელი"
+ almost_x_years: "%{count}წელი"
+ half_a_minute: ამ წამს
+ less_than_x_minutes: "%{count}წთ"
+ less_than_x_seconds: ამ წამს
+ over_x_years: "%{count}წელი"
+ x_days: "%{count}დღე"
+ x_minutes: "%{count}წთ"
+ x_months: "%{count}თვე"
+ x_seconds: "%{count}წმ"
+ deletes:
+ bad_password_msg: კარგად სცადეთ, ჰაკერებო! არასწორი პაროლი
+ confirm_password: იდენტობის დასამოწმებლად შეიყვანეთ მიმდინარე პაროლი
+ description_html: ეს
სამუდამოდ, დაუბრუნებლად გააუქმებს კონტენტს თქვენი ანგარიშიდან და მოახდენს მის დეაქტივაციას. მომხმარებლის სახელი კი, სამომავლო იმპერსონაციების შესაჩერებლად, გახდება რეზერვირებული
+ proceed: ანგარიშის გაუქმება
+ success_msg: თქვენი ანგარიში წარმატებით გაუქმდა
+ warning_html: მოცულობის გაუქმება გარანტირებულია მხოლოდ ამ ინსტანციაზე. კონტენტი რომელიც ფართო მასშტაბით გაზიარდა უფრო დატოვებს კვალს. ოფლაინ სერვერები და სერვერები, რომლებმაც შეწყვიტეს თქვენი განახლებების გამოწერა არ განაახლებენ მონაცემთა ბაზებს.
+ warning_title: წვდომა გავრცელებულ კონტენტზე
+ errors:
+ '403': ამ გვერდის ხილვის უფლება არ გაქვთ.
+ '404': გვერდი რომელსაც ეძებთ არ არსებობს.
+ '410': გვერდი რომელსაც ეძებდით აღარ არსებობს.
+ '422':
+ content: უსაფრთხოების ვერიფიკაცია ვერ მოხერხდა. ბლოკავთ ქუქის?
+ title: უსაფრთხოების ვერიფიკაცია არ შედგა
+ '429': დარტყმა
+ '500':
+ content: ბოდიში, ჩვენ მხარეს რაღაც არია.
+ title: გვერდი არაა სწორი
+ noscript_html: მასტოდონ ვებ-აპლიკაციის გამოყენებისთვის, გთხოვთ ჩართოთ ჯავასკრიპტი. სხვა შემთხვევაში, მასტოდონის თქვენი პატფორმისთვის სცადეთ გამოიყენოთ ერთ-ერთი
მშობლიური აპლიკაცია.
+ exports:
+ archive_takeout:
+ date: თარიღი
+ download: ჩამოტვირთეთ თქვენი არქივი
+ hint_html: შეგიძლიათ მოითხოვოთ თქვენი აქივი
ტუტებისა და ატვირთული მედიისა. ექსპორტირებული მონაცემები იქნება ექთივითი-ფაბ ფორმატში, წაკითხვადი ნებისმიერი თავსებადი პროგრამით. არქივის მოთხოვნა შეგიძლიათ 7 დღეში ერთხელ.
+ in_progress: მიმდინარეობს თქვენი არქივის შედგენა...
+ request: თქვენი არქივის მოთხოვნა
+ size: ზომა
+ blocks: თქვენ ბლოკავთ
+ csv: ცსვ
+ follows: თქვენ მიჰყვებით
+ mutes: თქვენ აჩუმებთ
+ storage: მედია საცავი
+ filters:
+ contexts:
+ home: სახლის თაიმლაინი
+ notifications: შეტყობინებები
+ public: საჯარო თაიმლაინი
+ thread: საუბრები
+ edit:
+ title: ფილტრის ცვლილება
+ errors:
+ invalid_context: მოწოდებულია არასწორი ან ცარიელი კონტექსტი
+ invalid_irreversible: დაუბრუნებელი ფილტრაცია მუშაობს მხოლოდ სახლის ან ნოტიფიკაციის კონტექსტში
+ index:
+ delete: გაუქმება
+ title: ფილტრები
+ new:
+ title: ახალი ფილტრის დამატება
+ followers:
+ domain: დომენი
+ explanation_html: თუ გსურთ უზრუნველყოთ თქვენი სტატუსების კონფიდენციალურობა, უნდა იცოდეთ თუ ვინ მოგყვებათ.
კერძო სტატუსები მიეწოდება ყველა ინსტანციას, სადაც გყავთ მიმდევრები. შესაძლოა გსურდეთ განიხილოთ ისინი და ამოშალოთ მიმდევრები თუ არ ენდობით თქვენი კონფიდენციალურობის პატივისცემას სტაფისა თუ პროგრამისგან იმ ინსტანციებში.
+ followers_count: მიმდევრების რაოდენობა
+ lock_link: თქვენი ანგარიშის ჩაკეტვა
+ purge: მიმდევრებიდან ამოშლა
+ success:
+ one: მიმდევრების სოფტ-ბლოკირების პროცესი ერთი დომენზე...
+ other: მიმდევრების სოფტ-ბლოკირების პროცესი %{count} დომენზე...
+ true_privacy_html: გთხოვთ გაითვალისწინეთ,
ჭეშმარიტი კონფიდენციალურობა მიღწევადია მხოლოდ ენდ-თუ-ენდ შიფრაციით.
+ unlocked_warning_html: ყველას შეუძლია გამოგყვეთ, რომ უცბად იხილოს თქვენი სტატუსები. %{lock_link} რომ შეძლოთ განიხილოთ და უარყოთ მიმდევრები.
+ unlocked_warning_title: თქვენი ანგარიში არაა ჩაკეტილი
+ footer:
+ developers: დეველოპერები
+ more: მეტი…
+ resources: რესურსები
+ generic:
+ changes_saved_msg: ცვლილებები წარმატებით დამახსოვრდა!
+ save_changes: ცვლილებების შენახვა
+ validation_errors:
+ one: რაღაც ჯერ არაა მთლად კარგად! გთხოვთ განიხილოთ ქვემოთ მოცემული შეცდომები
+ other: რაღაც ჯერ არაა მთლად კარგად! გთხოვთ განიხილოთ ქვემოთ მოცემული %{count} შეცდომა
+ imports:
+ preface: შეგიძლიათ დააიმპორტოთ მონაცემები, რომლებიც დააექსპორტეთ სხვა სერვერიდან, მაგალითად ადამიანების სია, რომლებსაც მიჰყვებით ან ბლოკავთ.
+ success: თქვენი მონაცემები წარმატებით აიტვირთა და მათი პროცესირება მოხდება გარკვეულ დროში
+ types:
+ blocking: ბლოკირების სია
+ following: დადევნების სია
+ muting: გაჩუმების სია
+ upload: ატვირთვა
+ in_memoriam_html: მემორანდუმში.
+ invites:
+ delete: დეაქტივაცია
+ expired: ვადა გაუვიდა
+ expires_in:
+ '1800': 30 წუთში
+ '21600': 6 საათში
+ '3600': 1 საათში
+ '43200': 12 საათში
+ '604800': 1 კვირაში
+ '86400': 1 დღეში
+ expires_in_prompt: არასდროს
+ generate: გენერირება
+ invited_by: 'თქვენ მოგიწვიათ:'
+ max_uses:
+ one: 1 მოხმარება
+ other: "%{count} მოხმარება"
+ max_uses_prompt: ლიმიტის გარეშე
+ prompt: ამ ინსტანციაზე წვდომის მისაცემად, დააგენერირეთ და გააზიარეთ ბმულები სხვებთან
+ table:
+ expires_at: ვადა გასდის
+ uses: მოხმარება
+ title: მოიწვიეთ ხალხი
+ lists:
+ errors:
+ limit: მიაღწიეთ სიების მაქსიმალურ ოდენობას
+ media_attachments:
+ validations:
+ images_and_video: ვიდეოს დართვა სტატუსზე, რომელიც უკვე მოიცავს სურათებს, ვერ მოხერხდება
+ too_many: თან ვერ დაურთავთ 4 ფაილზე მეტს
+ migrations:
+ acct: username@domain ახალი ანგარიშის
+ currently_redirecting: 'თქვენი პროფილი გამართულია მოახდინოს გადამისამართება მისამართზე:'
+ proceed: შენახვა
+ updated_msg: თქვენი ანგარიშის მიგრაციის პარამეტრები წარმატეებით დამახსოვრდა!
+ moderation:
+ title: მოდერაცია
+ notification_mailer:
+ digest:
+ action: ყველა შეტყობინების ჩვენება
+ body: 'აქ მოკლე შინაარსია წერილების, რომლებიც გამოგეპარათ წინა სტუმრობის შემდეგ: %{since}'
+ mention: "%{name}-მა დაგასახელათ:"
+ new_followers_summary:
+ one: ასევე, არყოფნისას შეგეძინათ ერთი ახალი მიმდევარი! იეი!
+ other: ასევე, არყოფნისას შეგეძინათ %{count} ახალი მიმდევარი! შესანიშნავია!
+ subject:
+ one: "1 ახალი შეტყობინება თქვენი ბოლო სტუმრობის შემდეგ \U0001F418"
+ other: "%{count} ახალი შეტყობინება თქვენი ბოლო სტუმრობის შემდეგ \U0001F418"
+ title: თქვენს არყოფნაში...
+ favourite:
+ body: 'თქვენი სტატუსი ფავორიტი გახადა %{name}-მა:'
+ subject: "%{name}-მა თქვენი სტატუსი გახადა ფავორიტი"
+ title: ახალი ფავორიტი
+ follow:
+ body: "%{name} ახლა მოგყვებათ!"
+ subject: "%{name} ახლა მოგყვებათ"
+ title: ახალი მიმდევარი
+ follow_request:
+ action: დადევნების მოთხოვნების მენეჯმენტი
+ body: "%{name}-მა მოითხოვა გამოგყვეთ"
+ subject: 'მიმდევარი მოლოდინში: %{name}'
+ title: ახალი დადევნების მოთხოვნა
+ mention:
+ action: პასუხი
+ body: 'თქვენ %{name}-მა გასახელათ:'
+ subject: თქვენ გასახელათ %{name}-მა
+ title: ახალი სახელობა
+ reblog:
+ body: 'თქვენი სტატუსი გაზარდა %{name}-მა:'
+ subject: "%{name}-მა გაზარდა თქვენი სტატუსი"
+ title: ახალი ბუსტი
+ number:
+ human:
+ decimal_units:
+ format: "%n%u"
+ units:
+ billion: ბილ.
+ million: მილ.
+ quadrillion: კუად.
+ thousand: ათას.
+ trillion: ტრილ.
+ unit: ''
+ pagination:
+ newer: უფრო ახალი
+ next: შემდეგი
+ older: ძველი
+ prev: წინა
+ truncate: "…"
+ preferences:
+ languages: ენები
+ other: სხვა
+ publishing: გამოქვეყნება
+ web: ვები
+ remote_follow:
+ acct: შეიყვანეთ თქვენი username@domain საიდანაც გსურთ გაჰყვეთ
+ missing_resource: საჭირო გადამისამართების ურლ თქვენი ანგარიშისთვის ვერ მოიძებნა
+ no_account_html: არ გაქვთ ანგარიში? შეგიძლიათ
დარეგისტრირდეთ აქ
+ proceed: გააგრძელეთ გასაყოლად
+ prompt: 'თქვენ გაჰყვებით:'
+ remote_interaction:
+ proceed: გააგრძელეთ ურთიერთქმედება
+ prompt: 'თქვენ გსურთ ურთიერთქმედება ამ ტუტთან:'
+ remote_unfollow:
+ error: შეცდომა
+ title: სათაური
+ unfollowed: დადევნების შეწყვეტა
+ sessions:
+ activity: ბოლო აქტივობა
+ browser: ბრაუზერი
+ browsers:
+ alipay: ალიფეი
+ blackberry: ბლექბერი
+ chrome: ქრომი
+ edge: მაიკროსოფთ ედჯი
+ electron: ელექტრონი
+ firefox: ფაირფოქსი
+ generic: ამოუცნობი ბრაუზერი
+ ie: ინტერნეტ ექფლორერი
+ micro_messenger: მიკრო-მესინჯერი
+ nokia: ნოკია ს40 ოვი ბრაუზერი
+ opera: ოპერა
+ otter: ოტერი
+ phantom_js: ფანტომჯეიესი
+ qq: ქქ ბრაუზერი
+ safari: საფარი
+ uc_browser: იუსიბიბრაუზერი
+ weibo: ვეიბო
+ current_session: მიმდინარე სესია
+ description: "%{browser} %{platform}-ზე"
+ explanation: ეს ვებ-ბრაუზერებია, რომლებიც ამჟამად აუტენტიფიცირებულ არიან თქვენს მასტოდონ ანგარიშთან.
+ ip: აი-პი
+ platforms:
+ adobe_air: ედობ ეარი
+ android: ანდროიდი
+ blackberry: ბლექბერი
+ chrome_os: ქრომო-ოსი
+ firefox_os: ფაირფოქს-ოსი
+ ios: აი-ოსი
+ linux: ლინუქსი
+ mac: მაკი
+ other: ამოუცნობი პლატფორმა
+ windows: ვინდოუსი
+ windows_mobile: ვინდოუს მობაილი
+ windows_phone: ვინდოუს ფოუნი
+ revoke: გაუქმება
+ revoke_success: სესია წარმატებით გაუქმდა
+ title: სესიები
+ settings:
+ authorized_apps: ავტორიზირებული აპლიკაციები
+ back: უკან მასტოდონისკენ
+ delete: ანგარიშის გაუქმება
+ development: დეველოპმენტი
+ edit_profile: პროფილის ცვლილება
+ export: მონაცემის ექსპორტი
+ followers: ავტორიზირებული მიმდევრები
+ import: იმპორტი
+ migrate: ანგარიშის მიგრაცია
+ notifications: შეტყობინებები
+ preferences: პრეფერენციები
+ settings: პარამეტრები
+ two_factor_authentication: მეორე-ფაქტორის აუტენტიფიკაცია
+ your_apps: თქვენი აპლიკაციები
+ statuses:
+ attached:
+ description: 'თან დართული: %{attached}'
+ image:
+ one: "%{count} სურათი"
+ other: "%{count} სურათები"
+ video:
+ one: "%{count} ვიდეო"
+ other: "%{count} ვიდეოები"
+ boosted_from_html: გაიზარდა %{acct_link}-იდან
+ content_warning: 'გაფრთხილება კონტენტზე: %{warning}'
+ disallowed_hashtags:
+ one: 'მოიცავდა აკრძალულ ჰეშტეგს: %{tags}'
+ other: 'მოიცავს აკრძალულ ჰეშტეგს: %{tags}'
+ language_detection: ავტომატურად დადგინდეს ენა
+ open_in_web: ვებში გახნსა
+ over_character_limit: ნიშნების ლიმიტი გადასცდა %{max}-ს
+ pin_errors:
+ limit: ტუტების მაქსიმალური რაოდენობა უკვე აპინეთ
+ ownership: სხვისი ტუტი ვერ აიპინება
+ private: არა-საჯარო ტუტი ვერ აიპინება
+ reblog: ბუსტი ვერ აიპინება
+ show_more: მეტის ჩვენება
+ sign_in_to_participate: საუბარში მონაწილეობისთვის გაიარეთ ავტორიზაცია
+ title: '%{name}: "%{quote}"'
+ visibilities:
+ private: მხოლოდ-მიმდევრები
+ private_long: აჩვენე მხოლოდ მიმდევრებს
+ public: საჯარო
+ public_long: ხედავს ყველა
+ unlisted: ჩამოუთვლელი
+ unlisted_long: ხედავს ყველა, მაგრამ არ ჩანს საჯარო თაიმლაინებში
+ stream_entries:
+ pinned: აპინული ტუტი
+ reblogged: გაზრდილი
+ sensitive_content: მგრძნობიარე კონტენტი
+ terms:
+ body_html: |
+
კონფიდენციალურობის პოლიტიკა
+
რა ინფორმაციას ვაგროვებთ?
+
+
+ - ძირითადი ანგარიშის ინფორმაცია: თუ დარეგისტრირდებით ამ სერვერზე, შესაძლოა მოგთხოვოთ მომხმარებლის სახელი, ელ-ფოსტის მისამართი და პაროლი. შესაძლებელია, ასევე შეიყვანოთ დამატებითი პროფილის ინორმაცია, როგორიცაა დისპლეის სახელი და ბიოგრაფია, ასევე ატვირთოთ პროფილის და დასათაურების სურათი. მომხმარებლის სახელი, დისპლეის სახელი, ბიოგრაფია, პროფილის სურათი, დასათაურების სურათი ყოველთვის ღიადაა ჩამოთვლილი.
+ - პოსტები, დადევნებები და სხვა საჯარო ინფორმაცია: ადამიანების სია, რომლებსაც მიჰყვებით საჯაროდაა ჩამოთვლილი, იგივე ეხება თქვენს მიდევრებსაც. როდესაც აგზავნით წერილს, თარიღი, დრო და აპლიკაცია თუ საიდანაც განათავსეთ წერილი ინახება. წერილები შესაძლოა შეიცავდნენ მედია ფაილებს, როგორებიცაა სურათები და ვიდეოები. ღია და ჩამოუთვლელი პოსტები ხელმისაწვდომია საჯაროდ. როდესაც ათავსებთ პოსტს თქვენს პროფილზე, ის ასევე საჟაროდ წვდომადი ხდება. თქვენი პოსტები ეგზავნებათ თქვენს მიმდევრებს, ზოგიერთ შემთხვევაში ეს ნიშნავს, რომ ისინი იგზავნება სხვა სერვერებზე და მათი ასლები იქვე ინახება. როდესაც აუქმებთ პოსტს, ეს მოქმედება ეგზავნებათ თქვენს მიმდევრებს. რე-ბლოგირების ან ფავორიტად ქცევის ქმედებები ასევე საქვეყნოა.
+ - პირდაპირი და პოსტები მხოლოდ-მიმდევრებისთვის: ყველა პოსტი ინახება და მათი პროცესირება ხდება სერვერზე. პოსტები რომლებიც განეკუთვნება მხოლოდ მიმდევრებს მიეწოდებათ მათ, მომხმარებლები, რომლებიც დასახელებულია პოსტებში და პირდაპირი პოსტები ეგზავნებათ მხოლოდ ჩამოთვლილ მომხმარებლებს. ზოგიერთ შემთხვევაში, ეს ნიშნავს, რომ გადაგზავნა ხდება გარე სერვერებზე და ასლებიც იქ ინახება. ჩვენ დიდ ძალისხმევას ვუწევთ წვდომის ლიმიტს მხოლოდ აუტორიზირებული ადამიანებისთვის, თუმცა სხვა სერვერებმა შეიძლება ეს არ აწარმოონ. აქედან გამომდინარე, მნიშვნელოვანია განიხილოთ სერვერები, საიდანაც მოდიან თქვენი მიმდევრები. შეგიძლიათ ჩართოთ ან გამორთოთ პარამეტრი, დაადასტუროთ ან უარყოთ ახალი მიმდევარი. გთხოვთ გაითვალისწინოთ, რომ სერვერის ოპერაციები და სხვა მიმღები სერვერები შესაძლოა კითხულობდნენ ამგვარ წერილებს, მიმღებებს შეუძლიათ შექმნან სქრინშოთი, დააკოპირონ ან ხელახლა გააზიარონ ისინი. არ გააზიაროთ საშიში ინფორმაცია მასტოდონით.
+ - აი-პიები და სხვა მეტა-მონაცემები: როდესაც გაივლით აუტენტიფიკაციას, ჩვენ ვინახავთ აი-პი მისამართს საიდანაც შემოხვედით, ასევე ბრაუზერის აპლიკაციას. ყველა ავტორიზირებული სესია თქვენთვის განსახილველად და გასაუქმებლად ხელმისაწვდომია პარამეტრებში. ბოლო შენახული აი-პი მისამართი ინახება მაქსიმუმ 12 თვით. ჩვენ ასევე შეიძლება გაგვაჩნდეს სერვერის ლოგი, რომელიც ინახავს თითოეული მოთხოვნის IP მისამართს.
+
+
+
+
+
რაში ვიყენებთ ინფორმაციას?
+
+
ნებისმიერი სხვა ინფორმაცია, რომელსაც ვაგროვებთ თქვენგან შესაძლოა გამოყენებულ იქნას შემდეგი გზებით:
+
+
+ - რომ უზრუნველვყოთ მასტოდონის მთავარი ფუნქციონალი. შეგიძლიათ ინტერაქცია გაუწიოთ მხოლოდ სხვის კონტენტს და შექმნათ პოსტები მაშინ როდესაც ავტორიზებული ხართ. მაგალითად, შესაძლოა გაჰყვეთ სხვა ადამიანებს, რათა იხილოთ მათი ჯამური პოსტები საკუთარ პერსონალიზებულ სახლის თაიმლაინზე.
+ - რომ შევუწყვოთ ხელი საზოგადოების მოდერაციას, მაგალითად შევადაროთ თქვენი აი-პი მისამართი სხვა ცნობილ მისამართებს, რათა ამოვიცნოთ ბანის გადაუხდელობა ან სხვა დარღვევები.
+ - ელ-ფოსტის მისამართი რომელსაც გვაწვდით, შესაძლოა გამოვიყენოთ თქვენთვის ინფორმაციის გამოსაგძავნად, შეგატყობინოთ სხვა ადამიანების ინტერაქციაზე თქვენს კონტენტთან ან თქვენთვის გამოგზავნილ წერილებზე, ასევე რომ გიპასუხოთ მოთხოვნებზე და/ან სხვა საკითხებზე.
+
+
+
+
+
როგორ ვიცავთ თქვენს ინფორმაციას?
+
+
მიღებული გვაქვს სხვადასხვა ზომა, შევინარჩუნოთ თქვენი პირადი ინფორმაციის უსაფრთხოება, რომელსაც აგზავნით, შეგყავთ ან კითხულობთ. ამ ყველაფერთან ერთად თქვენი ბრაუზერის სესია, ტრეფიკი თქვენს აპლიკაციასა და აპის შორის დაცულია სსლ-ით, თქვენი პაროლი იშიფრება ძლიერი ალგორითმით. შეგიძლიათ ჩართოთ მეორე-ფაქტორის აუტენტიფიკაცია, რათა გააღმაოთ თქვენი ანგარიშის თავდაცვა.
+
+
+
+
რა არის ჩვენი მონაცემის უარყოფის პოლიტიკა?
+
+
ჩვენ არ დავიშურებთ ძალისხმევას რომ:
+
+
+ - შევინარჩუნოთ სერვერის ლოგები, რომლებიც მოიცავენ ყველა მოთხოვნის აი-პი მისამართს, თუმცა ესეთი ლოგები არ ინახება 90 დღეზე მეტ ხანს.
+ - შევინარჩუნოთ რეგისტრირებული მომხმარებლების აი-პი მისამართები მაქსიმუმ 12 თვით.
+
+
+
შეგიძლიათ მოითხოვოთ და ჩამოტვირთოთ თქვენი კონტენტის არქივი, რომელიც მოიცავს თქვენს პოსტებს, მედია ფაილებს, პროფილის და დასათაურების სურათს.
+
+
შეგიძლიათ დაუბრუნებლად გააუქმოთ თქვენი ანგარიში ნებისმიერ დროს.
+
+
+
+
ვიყენებთ თუ არა ქუქის?
+
+
დიახ. ქუქიები წარმოადგენენ პატარა ფაილებს, რომელთაც, საიტი ან სერვის-პროვაიდერი, ათავსებს თქვენი კომპიუტერის მყარ დისკზე, ვებ-ბრაუზერის (თუ ნებას რთავთ) მეშვეობით. ქუქიები საშუალებას აძლევს საიტს ამოიცნონ თქვენი ბრაუზზერი და თუ გაქვთ რეგისტრირებული ანგარიში მისი ასოციაცია მოახდინონ თქვენს ანგარიშთან.
+
+
ჩვენ ვიყენებთ ქუქის, ვიცოდეთ და შევინახოთ თქვენი პრეფერენსიები სამომავლო სტუმრობებისთვის.
+
+
+
+
ვამჟღავნებთ თუ არა ინფორმაციას გარე მხარეებისთვის?
+
+
ჩვენ არ ვყიდით, ვვაჭრობთ ან გადაქვაქ თქვენთვის პირადად იდენტიფიცირებადი ინფორმაცია სხვა მხარეებისთვის. ეს არ მოიცავს სანდო მხარეებს, რომლებიც გვეხმარება საიტის ოპერირებაში, ჩვენი საქმიანობის ჩატარებაში, ან თქვენთვის მომსახურების გაწევაში, წინაპირობით კონფიდენციალურად შეინახონ თქვენი ინფორმაცია. ჩვენ შესაძლოა გამოვაქვეყნოთ თქვენი ინფორმაცია, რომელიც შესაბამისად შეიძლება ჩავთვალოთ კანონმდებლობასთან შეთავსებისთვის, აღვასრულოთ პოლიტიკა ან დავიცვათ ჩვენი ან სხვისი უფლებები, კუთვნილება ან უსაფრთხოება.
+
+
თქვენი საჯარო ინფორმაცია შესაძლოა ჩამოტვირთულ იქნას სხვა სერვერების მიერ ქსელში. თქვენი ღია და მიმდევრებზე გათვლილი პოსტები მიეწოდება სერვერებს სადაც თქვენი მიმდევრები მოღვაწეობენ, იმ შემთხვევაში თუ მიმღებები მომდინარეობენ სხვა სერვერიდან, პირდაპირი წერილები მიეწოდებათ მიმღებების სერვერებს.
+
+
როდესაც უფლებას მისცემთ აპლიკაციას გამოიყენოს თქვენი ანგარიში, უფლებებისგან გამომდინარე, მან შესაძლოა მოიპოვოს თქვენი საჯარო ინფორმაცია, თქვენი დადევნების სიები, თქვენი მიმდევრები, თქვენი სიები, ყველა პოსტი და თქვენი ფავორიტები. აპლიკაციები ვერასდროს იქონიებენ წვდომას თქვენი ელ-ფოსტის მისამართზე ან პაროლზე.
+
+
+
+
საიტის მოხმარებს ბავშვების მიერ
+
+
თუ ეს სერვერი მდებარეობს ეუ-ში ან ეეა-ში: ჩვენი საიტი, პროდუქტები და სერვისები მიმართულია ადამიანებისთვის, რომელთაც შეუსრულდათ 16 წელი. თუ თქვენი ასაკი 16 წელიწადზე ნაკლებია, ჯიდიფიარის (ზოგადი მონაცემების დაცვის რეგულაცია/a>) მოთხოვნის მიხედვით არ გამოიყენოთ ეს საიტი.
+
+
თუ ეს სერვერი მდებარეობს ა.შ.შ.-ში: ჩვენი საიტი პროდუქტი და სერვისები მიმართულია ადამიანებისთვის, რომელთაც შეუსრულდათ 13 წელი. თუ თქვენი ასაკი 13 წელიწადზე ნაკლებია, კოპპას (ბავშვთა ონლაინ კონფიდენციალურობის დაცვის აქტი) მოთხოვნების მიხედვით არ გამოიყენოთ ეს საიტი.
+
+
იურიდიული მოთხოვნილებები შეიძლება განსხვავდებოდეს, თუ ეს სერვერი იმყოფება სხვა იურისდიქციის ქვეშ.
+
+
+
+
ცვლილებები კონფიდენციალურობის პოლიტიკაში
+
+
თუ გადავწყვეტთ შევცვალოთ კონფიდენციალურობის პოლიტიკა, გამოვაქვეყნებთ ამ გვერდზე.
+
+
ეს დოკუმენტი არის ცც-ბაი-სა. ეს ბოლოს განახლდა 2018 წლის, 17 აგვისტოს.
+
+
საწყისად ადაპტირებულია გამჟღავნების კონფიდენციალური პოლიტიკისგან.
+ title: "%{instance} მომსახურების პირობები და კონფიდენციალურობის პოლიტიკა"
+ themes:
+ contrast: მაღალი კონტრასტი
+ default: მასტოდონი
+ mastodon-light: მასტოდონი (ღია)
+ time:
+ formats:
+ default: "%b %d, %Y, %H:%M"
+ month: "%b %Y"
+ two_factor_authentication:
+ code_hint: დასამოწმებლად შეიყვანეთ თქვენი აუტენტიფიკატორ აპლიკაციისგან გენერირებული კოდი
+ description_html: თუ ჩართავთ
მეორე-ფაქტორის აუტენტიფიკაციას, შესვლისას აუცილებელი იქნება ფლობდეთ ტელეფონს, რომელიც დააგენერირებს შესვლის ტოკენებს.
+ disable: გათიშვა
+ enable: ჩართვა
+ enabled: მეორე-ფაქტორის აუტენტიფიკაცია ჩართულია
+ enabled_success: მეორე-ფაქტორის აუტენტიფიკაცია წარმატებით ჩაირთო
+ generate_recovery_codes: აღდგენის კოდების გენერაცია
+ instructions_html: "
დაასკანირეთ ეს ქრ კოდი გუგლ აუტენტიფიკატორში ან მსგავს ტოტპ აპლიკაციაში თქვენს ტელეფონზე. ამიერიდან, ეს აპლიკაცია დააგენერირებს ტოკენებს მაშინ როდესაც დაგჭირდებათ ავტორიზაცია."
+ lost_recovery_codes: აღდგენის კოდები უფლებას გაძლევთ მიიღოთ ხელმეორე წვდომა თქვენი ანგარიშისადმი თუ დაკარგავთ ტელეფონს. თუ დაკარგეთ აღდგენის კოდები, მათ რეგენერაცია შეგიძლიათ აქ. ძველი აღდგენის კოდები აღარ იქნება ვალიდური.
+ manual_instructions: 'თუ ვერ ასკანირებთ ქრ კოდს და საჭიროებთ მის მექანიკურ რეჟიმში შეყვანას, აქ არის ჩვეულებრივი ტექსტური საიდუმლო:'
+ recovery_codes: გაუწიეთ აღდგენის კოდებს რეზერვაცია
+ recovery_codes_regenerated: აღგენის კოდების რეგენერაცია წარმატებით შესრულდა
+ recovery_instructions_html: თუ როდესმე დაკარგავთ წვდომას თქვენს ტელეფონთან, შეგიძლიათ ქვემოთ მოცემული აღდგენის კოდები გამოიყენოთ, რათა მოიპოვოთ ხელმეორე წვდომა თქვენი ანგარიშისადმი.
იქონიეთ აღდგენის კოდები დაცულად. მაგალითისთვის, შეგიძლიათ ამობეჭდოთ და შეინახოთ სხვა საბუთებთან ერთად.
+ setup: დაყენება
+ wrong_code: შეყვანილი კოდი არ იყო სწორი! სწორია სერვერის და მოწყობილობის დრო?
+ user_mailer:
+ backup_ready:
+ explanation: თქვენ მოითხოვეთ თქვენი მასტოდონის ანგარიშის სრული რეზერვაცია. ის ახლა უკვე მზადაა გადმოსაწერად!
+ subject: თქვენი არქივი გადმოსაწერად მზადაა
+ title: არქივის მიღება
+ welcome:
+ edit_profile_action: პროფილის მოწყობა
+ edit_profile_step: შეგიძლიათ მოაწყოთ თქვენი პროფილი ავატარის ატვირთვით, დასათაურების სურათით, თქვენი დისპლეი სახელის შეცვლით და სხვა. თუ გსურთ გაუწიოთ ახალ მიმდევრებს რევიუ, სანამ რეალურად გამოგყვებიან, შეგიძლიათ ჩაკეტოთ თქვენი ანგარიში.
+ explanation: აქ რამდენიმე რჩევაა დასაწყისისთვის
+ final_action: დაიწყე პოსტვა
+ final_step: 'დაიწყე პოსტვა! თქვენი ღია წერილები შესაძლოა ნახონ სხვებმა მიმდევრების გარეშეც კი, მაგალითად თქვენს ლოკალურ თაიმლაინზე ან ჰეშტეგებში. შეგიძლიათ წარადგინოთ თქვენი თავი #introductions ჰეშტეგით.'
+ full_handle: თქვენი სრული სახელური
+ full_handle_hint: ეს არის ის რასაც ეტყვით თქვენს მეგობრებს, რათა მოგწერონ ან გამოგყვნენ სხვა ინსტანციიდან.
+ review_preferences_action: შეცვალეთ პრეფერენსიები
+ review_preferences_step: დარწმუნდით რომ აყენებთ თქვენს პრეფერენსიებს, მაგალითად რა ელ-ფოსტის წერილების მიღება გსურთ, ან კონფიდენციალურობის რა დონე გსურთ ჰქონდეთ თქვენს პოსტებს საწყისად. თუ არ გაღიზიანებთ მოძრაობა, შეგიძლიათ ჩართოთ გიფის ავტო-დაკვრა.
+ subject: კეთილი იყოს თქვენი მობრძანება მასტოდონში
+ tip_bridge_html: თუ მოდიხართ ტვიტერიდან, შეგიძლიათ იპოვოთ მეგობრები მასტოდონში
ხიდის აპლიკაციით. თუმცა, ეს მუშაობს მხოლოდ მაშინ თუ მათაც მოიხმარეს ხიდის აპლიკაცია!
+ tip_federated_timeline: ფედერალური თაიმლაინი მასტოდონის ქსელის ცეცხლოვანი ხედია. ის მოიცავს მხოლოდ იმ ადამიანებს, რომელთაგანაც გამოიწერეს თქვენმა მეზობლებმა, ასე რომ ეს არაა სრული.
+ tip_following: თქვენ საწყისად მიჰყვებით თქვენი სერვერის ადმინისტრატორ(ებ)ს. უფრო საინტერესო ადამიანების მოსაძებნად იხილეთ ლოკალური და ფედერალური თაიმლაინები.
+ tip_local_timeline: ლოკალური თაიმლაინი ცეცხლოვანი ხედია ადამიანებისთვის %{instance}-ზე. ისინი არიან თქვენი უსიტყვო მეზობლები!
+ tip_mobile_webapp: თუ თქვენი მობილური ბრაუზერი გთავაზობთ მასტოდონის სახლის-ეკრანზე დამატებას, შეძლებთ ფუშ შეტყობინებების მიღებას. ეს მრავალმხრივ მოქმედებს როგორც მშობლიური აპლიკაცია!
+ tips: რჩევები
+ title: კეთილი იყოს თქვენი მობრძანება, %{name}!
+ users:
+ invalid_email: ელ-ფოსტის მისამართი არაა მართებული
+ invalid_otp_token: არასწორი მეორე ფაქტორის კოდი
+ otp_lost_help_html: თუ დაკარგეთ წვდომა ორივეზე, შესაძლოა დაუკავშირდეთ %{email}-ს
+ seamless_external_login: შესული ხართ გარე სერვისით, აქედან გამომდინარე პაროლი და ელ-ფოსტის მისამართი არაა ხელმისაწვდომი.
+ signed_in_as: 'შესული ხართ როგორც:'
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index 9b742d18b..737ab5be1 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -5,13 +5,13 @@ ko:
about_mastodon_html: 마스토돈은
오픈 소스 기반의 소셜 네트워크 서비스 입니다. 상용 플랫폼의 대체로서
분산형 구조를 채택해, 여러분의 대화가 한 회사에 독점되는 것을 방지합니다. 신뢰할 수 있는 인스턴스를 선택하세요 — 어떤 인스턴스를 고르더라도, 누구와도 대화할 수 있습니다. 누구나 자신만의 마스토돈 인스턴스를 만들 수 있으며, 아주 매끄럽게
소셜 네트워크에 참가할 수 있습니다.
about_this: 이 인스턴스에 대해서
administered_by: '관리자:'
+ api: API
+ apps: 모바일 앱
closed_registrations: 현재 이 인스턴스에서는 신규 등록을 받고 있지 않습니다.
contact: 연락처
contact_missing: 미설정
contact_unavailable: N/A
- description_headline: "%{domain} (은)는 무엇인가요?"
- domain_count_after: 개의 인스턴스
- domain_count_before: 연결된
+ documentation: 문서
extended_description_html: |
룰을 작성하는 장소
아직 설명이 작성되지 않았습니다.
@@ -28,25 +28,39 @@ ko:
hosted_on: "%{domain}에서 호스팅 되는 마스토돈"
learn_more: 자세히
other_instances: 다른 인스턴스
+ privacy_policy: 개인정보 정책
source_code: 소스 코드
- status_count_after: 툿
+ status_count_after:
+ one: 툿
+ other: 툿
status_count_before: 툿 수
- user_count_after: 명
+ terms: 이용약관
+ user_count_after:
+ one: 명
+ other: 명
user_count_before: 사용자 수
what_is_mastodon: 마스토돈이란?
accounts:
+ choices_html: "%{name}의 추천:"
follow: 팔로우
- followers: 팔로워
+ followers:
+ one: 팔로워
+ other: 팔로워
following: 팔로잉
+ joined: "%{date}에 가입함"
media: 미디어
moved_html: "%{name}은 %{new_profile_link}으로 이동되었습니다:"
network_hidden: 이 정보는 사용할 수 없습니다
nothing_here: 아무 것도 없습니다!
people_followed_by: "%{name} 님이 팔로우 중인 계정"
people_who_follow: "%{name} 님을 팔로우 중인 계정"
- posts: 툿
+ pin_errors:
+ following: 추천하려는 사람을 팔로우 하고 있어야 합니다
+ posts:
+ one: 툿
+ other: 툿
+ posts_tab_heading: 툿
posts_with_replies: 툿과 답장
- remote_follow: 리모트 팔로우
reserved_username: 이 아이디는 예약되어 있습니다
roles:
admin: 관리자
@@ -180,6 +194,7 @@ ko:
unsuspend_account: "%{name}이 %{target}에 대한 정지를 해제했습니다"
update_custom_emoji: "%{name}이 에모지 %{target}를 업데이트 했습니다"
update_status: "%{name}이 %{target}의 상태를 업데이트 했습니다"
+ deleted_status: "(삭제됨)"
title: 감사 기록
custom_emojis:
by_domain: 도메인
@@ -206,6 +221,27 @@ ko:
update_failed_msg: 에모지를 업데이트 할 수 없습니다
updated_msg: 에모지가 성공적으로 업데이트 되었습니다!
upload: 업로드
+ dashboard:
+ backlog: 미처리 된 작업
+ config: 설정
+ feature_deletions: 계정 삭제
+ feature_invites: 초대 링크
+ feature_registrations: 가입
+ feature_relay: 연합 릴레이
+ features: 기능
+ hidden_service: 히든 서비스와의 연합
+ open_reports: 미해결 신고
+ recent_users: 최근 가입 한 유저
+ search: 전문 검색
+ single_user_mode: 싱글 유저 모드
+ software: 소프트웨어
+ space: 디스크 사용량
+ title: 대시보드
+ total_users: 총 유저 수
+ trends: 트렌드
+ week_interactions: 이번 주의 상호작용
+ week_users_active: 이번 주의 활성 사용자
+ week_users_new: 이번 주의 신규 유저
domain_blocks:
add_new: 추가하기
created_msg: 도메인 차단 처리를 완료했습니다
@@ -257,12 +293,23 @@ ko:
search: 검색
title: 알려진 인스턴스들
invites:
+ deactivate_all: 전부 비활성화
filter:
all: 모두
available: 사용가능
expired: 만료됨
title: 필터
title: 초대
+ relays:
+ add_new: 릴레이 추가
+ description_html: "
연합 릴레이는 서버들 사이에서 많은 양의 공개 툿을 구독하고 중개하는 서버입니다.
이것은 중소 규모의 서버에서 연합우주를 발견하는 데에 도움을 줄 수 있습니다, 이제 로컬 유저들이 다른 서버의 유저들을 수동으로 팔로우 하지 않아도 됩니다."
+ enable_hint: 활성화 되면, 이 릴레이의 모든 공개 툿을 구독하고 이 서버의 공개 툿을 전송하게 됩니다.
+ inbox_url: 릴레이 URL
+ pending: 릴레이의 승인 대기중
+ save_and_enable: 저장하고 활성화
+ setup: 릴레이 연결 설정
+ status: 상태
+ title: 릴레이
report_notes:
created_msg: 리포트 노트가 성공적으로 작성되었습니다!
destroyed_msg: 리포트 노트가 성공적으로 삭제되었습니다!
@@ -312,6 +359,9 @@ ko:
contact_information:
email: 공개할 메일 주소를 입력
username: 아이디를 입력
+ custom_css:
+ desc_html: 모든 페이지에 적용할 CSS
+ title: 커스텀 CSS
hero:
desc_html: 프론트페이지에 표시 됩니다. 최소 600x100픽셀을 권장합니다. 만약 설정되지 않았다면, 인스턴스의 썸네일이 사용 됩니다
title: 히어로 이미지
@@ -341,11 +391,14 @@ ko:
desc_html: 유저 페이지에 스태프 배지를 표시합니다
title: 스태프 배지 표시
site_description:
- desc_html: 탑 페이지와 meta 태그에 사용됩니다. HTML 태그, 주로
<a>
,
<em>
같은 것을 사용 가능합니다.
+ desc_html: 프론트 페이지의 소개문에 사용 됩니다.이 마스토돈 서버의 특별한 점 등을 설명하세요. HTML 태그, 주로
<a>
,
<em>
같은 것을 사용 가능합니다.
title: 사이트 설명
site_description_extended:
desc_html: 규칙, 가이드라인 등을 작성하기 좋은 곳입니다. HTML 태그를 사용할 수 있습니다
title: 사이트 상세 설명
+ site_short_description:
+ desc_html: 사이드바와 메타 태그에 나타납니다. 마스토돈이 무엇이고 이 서버의 특징은 무엇인지 한 문장으로 설명하세요. 비워두면 인스턴스 설명이 대신 사용됩니다.
+ title: 짧은 인스턴스 설명
site_terms:
desc_html: 당신은 독자적인 개인정보 취급 방침이나 이용약관, 그 외의 법적 근거를 작성할 수 있습니다. HTML태그를 사용할 수 있습니다
title: 커스텀 서비스 이용 약관
@@ -367,6 +420,7 @@ ko:
media:
title: 미디어
no_media: 미디어 없음
+ no_status_selected: 아무 것도 선택 되지 않아 아무 것도 바뀌지 않았습니다
title: 계정 툿
with_media: 미디어 있음
subscriptions:
@@ -376,6 +430,12 @@ ko:
last_delivery: 최종 발송
title: WebSub
topic: 토픽
+ suspensions:
+ bad_acct_msg: 확인값이 일치하지 않습니다. 정지하려는 계정이 맞습니까?
+ hint_html: '이 계정을 정지하려면 %{value}를 아래 입력칸에 입력하세요:'
+ proceed: 처리됨
+ title: "%{acct} 정지하기"
+ warning_html: '이 계정을 정지하면 계정의 데이터를 모두 삭제하며
되돌릴 수 없습니다. 이것은 다음을 포함합니다:'
title: 관리
admin_mailer:
new_report:
@@ -507,9 +567,12 @@ ko:
true_privacy_html: "
프라이버시 보호는 End-to-End 암호화로만 이루어 질 수 있다는 것에 유의해 주십시오."
unlocked_warning_html: 누구든 여러분을 팔로우 할 수 있으며, 여러분의 프라이빗 투고를 볼 수 있습니다. 팔로우 할 수 있는 사람을 제한하고 싶은 경우 %{lock_link}에서 설정해 주십시오.
unlocked_warning_title: 이 계정은 비공개로 설정되어 있지 않습니다
+ footer:
+ developers: 개발자
+ more: 더 보기…
+ resources: 리소스
generic:
changes_saved_msg: 정상적으로 변경되었습니다!
- powered_by: "%{link}에 의해 제공"
save_changes: 변경 사항을 저장
validation_errors:
one: 오류가 발생했습니다. 아래 오류를 확인해 주십시오
@@ -545,8 +608,6 @@ ko:
expires_at: 만료
uses: 사용됨
title: 초대
- landing_strip_html: "
%{name} 님은 %{link_to_root_path} 인스턴스의 사용자입니다. 계정을 가지고 있다면 팔로우 하거나 대화할 수 있습니다."
- landing_strip_signup_html: 아직 계정이 없다면
여기서 등록할 수 있습니다.
lists:
errors:
limit: 리스트 최대치에 도달했습니다
@@ -618,11 +679,14 @@ ko:
publishing: 퍼블리싱
web: 웹
remote_follow:
- acct: 아이디@도메인을 입력해 주십시오
+ acct: 당신이 사용하는 아이디@도메인을 입력해 주십시오
missing_resource: 리디렉션 대상을 찾을 수 없습니다
no_account_html: 계정이 없나요?
여기에서 가입 할 수 있습니다
proceed: 팔로우 하기
prompt: '팔로우 하려 하고 있습니다:'
+ remote_interaction:
+ proceed: 진행
+ prompt: '이 게시물에 상호작용하려 하고 있습니다:'
remote_unfollow:
error: 에러
title: 타이틀
@@ -706,6 +770,7 @@ ko:
private: 비공개 툿은 고정될 수 없습니다
reblog: 부스트는 고정될 수 없습니다
show_more: 더 보기
+ sign_in_to_participate: 로그인 하여 이 대화에 참여하기
title: '%{name}: "%{quote}"'
visibilities:
private: 비공개
@@ -715,11 +780,91 @@ ko:
unlisted: 공개 타임라인 비공개
unlisted_long: 누구나 볼 수 있지만, 공개 타임라인에는 표시되지 않습니다
stream_entries:
- click_to_show: 클릭해서 표시
pinned: 고정된 툿
reblogged: 님이 부스트 했습니다
sensitive_content: 민감한 컨텐츠
terms:
+ body_html: |
+
개인정보 정책
+
우리가 어떤 정보를 수집하나요?
+
+
+ - 기본 계정 정보: 이 서버에 가입하실 때 유저네임, 이메일 주소, 패스워드 등을 입력 받게 됩니다. 추가적으로 디스플레이네임이나 자기소개, 프로필 이미지, 헤더 이미지 등의 프로필 정보를 입력하게 됩니다. 유저네임, 디스플레이네임, 자기소개, 프로필 이미지와 헤더 이미지는 언제나 공개적으로 게시됩니다.
+ - 게시물, 팔로잉, 기타 공개된 정보: 당신이 팔로우 하는 사람들의 리스트는 공개됩니다. 당신을 팔로우 하는 사람들도 마찬가지입니다. 당신이 게시물을 작성하는 경우, 응용프로그램이 메시지를 받았을 때의 날짜와 시간이 기록 됩니다. 게시물은 그림이나 영상 등의 미디어를 포함할 수 있습니다. 퍼블릭과 미표시(unlisted) 게시물은 공개적으로 접근이 가능합니다. 프로필에 게시물을 고정하는 경우 마찬가지로 공개적으로 접근 가능한 정보가 됩니다. 당신의 게시물들은 당신의 팔로워들에게 전송 됩니다. 몇몇 경우 이것은 다른 서버에 전송되고 그곳에 사본이 저장 됩니다. 당신이 게시물을 삭제하는 경우 이 또한 당신의 팔로워들에게 전송 됩니다. 다른 게시물을 리블로깅 하거나 즐겨찾기 하는 경우 이는 언제나 공개적으로 제공 됩니다.
+ - DM, 팔로워 공개 게시물: 모든 게시물들은 서버에서 처리되고 저장됩니다. 팔로워 공개 게시물은 당신의 팔로워와 멘션 된 사람들에게 전달이 됩니다. 다이렉트 메시지는 멘션 된 사람들에게만 전송 됩니다. 몇몇 경우 이것은 다른 서버에 전송 되고 그곳에 사본이 저장됨을 의미합니다. 우리는 이 게시물들이 권한을 가진 사람들만 열람이 가능하도록 노력을 할 것이지만 다른 서버에서는 이것이 실패할 수도 있습니다. 그러므로 당신의 팔로워들이 속한 서버를 재확인하는 것이 중요합니다. 당신은 새 팔로워를 수동으로 승인하거나 거절하도록 설정을 변경할 수 있습니다. 해당 서버의 운영자는 서버가 받는 메시지를 열람할 수 있다는 것을 항상 염두해 두세요, 그리고 수신자들은 스크린샷을 찍거나 복사하는 등의 방법으로 다시 공유할 수 있습니다. 위험한 정보를 마스토돈을 통해 공유하지 마세요.
+ - IP와 기타 메타데이터: 당신이 로그인 하는 경우 IP 주소와 브라우저의 이름을 저장합니다. 모든 세션은 당신이 검토하고 취소할 수 있도록 설정에서 제공 됩니다. 마지막으로 사용 된 IP 주소는 최대 12개월 간 저장됩니다. 또한, 모든 요청에 대해 IP주소를 포함한 정보를 로그에 저장할 수 있습니다.
+
+
+
+
+
우리가 당신의 정보를 어디에 쓰나요?
+
+
당신에게서 수집한 정보는 다음과 같은 곳에 사용 됩니다:
+
+
+ - 마스토돈의 주요 기능 제공. 다른 사람의 게시물에 상호작용 하거나 자신의 게시물을 작성하기 위해서는 로그인을 해야 합니다. 예를 들어, 다른 사람의 게시물을 자신만의 홈 타임라인에서 모아 보기 위해 팔로우를 할 수 있습니다.
+ - 커뮤니티의 모더레이션을 위해, 예를 들어 당신의 IP 주소와 기타 사항을 비교하여 금지를 우회하거나 다른 규칙을 위반하는지 판단하는 데에 사용할 수 있습니다.
+ - 당신이 제공한 이메일 주소를 통해 정보, 다른 사람들의 반응이나 받은 메시지에 대한 알림, 기타 요청 등에 관한 응답 요청 등을 보내는 데에 활용됩니다.
+
+
+
+
+
어떻게 당신의 정보를 보호하나요?
+
+
우리는 당신이 입력, 전송, 접근하는 개인정보를 보호하기 위해 다양한 보안 대책을 적용합니다. 당신의 브라우저 세션, 당신의 응용프로그램과의 통신, API는 SSL로 보호 되며 패스워드는 강력한 단방향 해시 알고리즘을 사용합니다. 계정의 더 나은 보안을 위해 2단계 인증을 활성화 할 수 있습니다.
+
+
+
+
자료 저장 정책은 무엇이죠?
+
+
우리는 다음을 위해 노력을 할 것입니다:
+
+
+ - IP를 포함해 이 서버에 전송 되는 모든 요청에 대한 로그는 90일을 초과하여 저장되지 않습니다.
+ - 가입 된 유저의 IP 정보는 12개월을 초과하여 저장 되지 않습니다.
+
+
+
당신은 언제든지 게시물, 미디어 첨부, 프로필 이미지, 헤더 이미지를 포함한 당신의 컨텐트에 대한 아카이브를 요청하고 다운로드 할 수 있습니다.
+
+
언제든지 계정을 완전히 삭제할 수 있습니다.
+
+
+
+
쿠키를 사용하나요?
+
+
네. 쿠키는 (당신이 허용한다면) 당신의 웹 브라우저를 통해 서버에서 당신의 하드드라이브에 저장하도록 전송하는 작은 파일들입니다. 이 쿠키들은 당신의 브라우저를 인식하고, 계정이 있는 경우 이와 연결하는 것을 가능하게 합니다.
+
+
당신의 환경설정을 저장하고 다음 방문에 활용하기 위해 쿠키를 사용합니다.
+
+
+
+
외부에 정보를 공개하나요?
+
+
우리는 당신을 식별 가능한 개인정보를 외부에 팔거나 제공하거나 전송하지 않습니다. 이는 당사의 사이트를 운영하기 위한, 기밀 유지에 동의하는, 신뢰 가능한 서드파티를 포함하지 않습니다. 또한 법률 준수, 사이트 정책 시행, 또는 당사나 타인에 대한 권리, 재산, 또는 안전보호를 위해 적절하다고 판단되는 경우 당신의 정보를 공개할 수 있습니다.
+
+
당신의 공개 게시물은 네트워크에 속한 다른 서버가 다운로드 할 수 있습니다. 당신의 팔로워나 수신자가 이 서버가 아닌 다른 곳에 존재하는 경우 당신의 공개, 팔로워 공개 게시물은 당신의 팔로워가 존재하는 서버로 전송되며, 다이렉트메시지는 수신자가 존재하는 서버로 전송 됩니다.
+
+
당신이 계정을 사용하기 위해 응용프로그램을 승인하는 경우 당신이 허용한 권한에 따라 응용프로그램은 당신의 공개 계정정보, 팔로잉 리스트, 팔로워 리스트, 게시물, 즐겨찾기 등에 접근이 가능해집니다. 응용프로그램은 절대로 당신의 이메일 주소나 패스워드에 접근할 수 없습니다.
+
+
+
+
어린이의 사이트 사용
+
+
이 서버가 EU나 EEA에 속해 있다면: 당사의 사이트, 제품과 서비스는 16세 이상인 사람들을 위해 제공됩니다. 당신이 16세 미만이라면 GDPR(General Data Protection Regulation)의 요건에 따라 이 사이트를 사용할 수 없습니다.
+
+
이 서버가 미국에 속해 있다면: 당사의 사이트, 제품과 서비스는 13세 이상인 사람들을 위해 제공됩니다. 당신이 13세 미만이라면 COPPA (Children's Online Privacy Protection Act)의 요건에 따라 이 사이트를 사용할 수 없습니다.
+
+
이 서버가 있는 관할권에 따라 법적 요구가 달라질 수 있습니다.
+
+
+
+
개인정보 정책의 변경
+
+
만약 우리의 개인정보 정책이 바뀐다면, 이 페이지에 바뀐 정책이 포스트 됩니다.
+
+
이 문서는 CC-BY-SA 라이센스입니다. 마지막 업데이트는 2018년 3월 7일입니다.
+
+
Originally adapted from the Discourse privacy policy.
title: "%{instance} 이용약관과 개인정보 취급 방침"
themes:
contrast: 고대비
@@ -728,6 +873,7 @@ ko:
time:
formats:
default: "%Y년 %m월 %d일 %H:%M"
+ month: "%Y년 %b"
two_factor_authentication:
code_hint: 확인하기 위해서 인증 애플리케이션에서 표시된 코드를 입력해 주십시오
description_html: "
2단계 인증을 활성화 하면 로그인 시 전화로 인증 코드를 받을 필요가 있습니다."
diff --git a/config/locales/nl.yml b/config/locales/nl.yml
index 757afd97e..c5478d862 100644
--- a/config/locales/nl.yml
+++ b/config/locales/nl.yml
@@ -5,13 +5,13 @@ nl:
about_mastodon_html: Mastodon is een sociaal netwerk dat gebruikt maakt van open webprotocollen en vrije software. Het is net zoals e-mail gedecentraliseerd.
about_this: Over deze server
administered_by: 'Beheerd door:'
+ api: API
+ apps: Mobiele apps
closed_registrations: Registreren op deze server is momenteel niet mogelijk. Je kunt echter een andere server vinden om zo toegang te krijgen tot het netwerk.
contact: Contact
contact_missing: Niet ingesteld
contact_unavailable: n.v.t
- description_headline: Wat is %{domain}?
- domain_count_after: andere servers
- domain_count_before: Verbonden met
+ documentation: Documentatie
extended_description_html: |
Een goede plek voor richtlijnen
De uitgebreide omschrijving is nog niet ingevuld.
@@ -28,25 +28,39 @@ nl:
hosted_on: Mastodon op %{domain}
learn_more: Meer leren
other_instances: Andere servers
+ privacy_policy: Privacybeleid
source_code: Broncode
- status_count_after: toots
+ status_count_after:
+ one: toot
+ other: toots
status_count_before: Zij schreven
- user_count_after: gebruikers
+ terms: Gebruiksvoorwaarden
+ user_count_after:
+ one: gebruiker
+ other: gebruikers
user_count_before: Thuisbasis van
what_is_mastodon: Wat is Mastodon?
accounts:
+ choices_html: 'Aanbevelingen van %{name}:'
follow: Volgen
- followers: Volgers
+ followers:
+ one: Volger
+ other: Volgers
following: Volgend
+ joined: Geregistreerd in %{date}
media: Media
moved_html: "%{name} is verhuisd naar %{new_profile_link}:"
network_hidden: Deze informatie is niet beschikbaar
nothing_here: Hier is niets!
people_followed_by: Mensen die %{name} volgen
people_who_follow: Mensen die %{name} volgen
- posts: Toots
+ pin_errors:
+ following: Je moet dit account wel al volgen, alvorens je het kan aanbevelen
+ posts:
+ one: Toot
+ other: Toots
+ posts_tab_heading: Toots
posts_with_replies: Toots en reacties
- remote_follow: Extern volgen
reserved_username: Deze gebruikersnaam is gereserveerd
roles:
admin: Beheerder
@@ -137,9 +151,9 @@ nl:
search: Zoeken
shared_inbox_url: Gedeelde inbox-URL
show:
- created_reports: Toots door dit account gerapporteerd
+ created_reports: Door dit account aangemaakte rapportages
report: gerapporteerd
- targeted_reports: Toots van dit account gerapporteerd
+ targeted_reports: Over dit account aangemaakte rapportages
silence: Negeren
statuses: Toots
subscribe: Abonneren
@@ -152,7 +166,7 @@ nl:
web: Webapp
action_logs:
actions:
- assigned_to_self_report: "%{name} heeft gerapporteerde toot %{target} aan zichzelf toegewezen"
+ assigned_to_self_report: "%{name} heeft rapportage %{target} aan zichzelf toegewezen"
change_email_user: "%{name} veranderde het e-mailadres van gebruiker %{target}"
confirm_user: E-mailadres van gebruiker %{target} is door %{name} bevestigd
create_custom_emoji: Nieuwe emoji %{target} is door %{name} geüpload
@@ -170,16 +184,17 @@ nl:
memorialize_account: Account %{target} is door %{name} in een gedenkpagina veranderd
promote_user: Gebruiker %{target} is door %{name} gepromoveerd
remove_avatar_user: "%{name} verwijderde de avatar van %{target}"
- reopen_report: "%{name} heeft gerapporteerde toot %{target} heropend"
+ reopen_report: "%{name} heeft rapportage %{target} heropend"
reset_password_user: Wachtwoord van gebruiker %{target} is door %{name} opnieuw ingesteld
- resolve_report: "%{name} heeft gerapporteerde toot %{target} opgelost"
+ resolve_report: "%{name} heeft rapportage %{target} opgelost"
silence_account: Account %{target} is door %{name} genegeerd
suspend_account: Account %{target} is door %{name} opgeschort
- unassigned_report: "%{name} heeft het toewijzen van gerapporteerde toot %{target} ongedaan gemaakt"
+ unassigned_report: "%{name} heeft het toewijzen van rapportage %{target} ongedaan gemaakt"
unsilence_account: Negeren van account %{target} is door %{name} opgeheven
unsuspend_account: Opschorten van account %{target} is door %{name} opgeheven
update_custom_emoji: Emoji %{target} is door %{name} bijgewerkt
update_status: De toots van %{target} zijn door %{name} bijgewerkt
+ deleted_status: "(verwijderde toot}"
title: Auditlog
custom_emojis:
by_domain: Domein
@@ -206,6 +221,27 @@ nl:
update_failed_msg: Deze emoji kon niet worden bijgewerkt
updated_msg: Bijwerken van emoji is geslaagd!
upload: Uploaden
+ dashboard:
+ backlog: achterstallige taken
+ config: Configuratie
+ feature_deletions: Verwijderen van account
+ feature_invites: Uitnodigingen
+ feature_registrations: Registraties
+ feature_relay: Federatierelay
+ features: Functies
+ hidden_service: Federatie met verborgen diensten
+ open_reports: onopgeloste rapportages
+ recent_users: Recente gebruikers
+ search: In volledige tekst zoeken
+ single_user_mode: Modus voor één gebruiker
+ software: Software
+ space: Ruimtegebruik
+ title: Dashboard
+ total_users: gebruikers in totaal
+ trends: Trends
+ week_interactions: interacties deze week
+ week_users_active: actieve gebruikers deze week
+ week_users_new: nieuwe gebruikers deze week
domain_blocks:
add_new: Nieuwe toevoegen
created_msg: Domeinblokkade wordt nu verwerkt
@@ -255,19 +291,30 @@ nl:
search: Zoeken
title: Bekende servers
invites:
+ deactivate_all: Alles deactiveren
filter:
all: Alles
available: Beschikbaar
expired: Verlopen
title: Filter
title: Uitnodigingen
+ relays:
+ add_new: Nieuwe relayserver toevoegen
+ description_html: Een
federatierelay is een tussenliggende server die grote hoeveelheden openbare toots uitwisselt tussen servers die zich hierop hebben geabonneerd.
Het kan kleine en middelgrote servers helpen om content uit de fediverse te ontdekken, waarvoor anders lokale gebruikers handmatig mensen van externe servers moeten volgen.
+ enable_hint: Eenmaal ingeschakeld gaat jouw server zich op alle openbare toots van deze relayserver abonneren en stuurt het de openbare toots van jouw server naar de relayserver.
+ inbox_url: Relay-URL
+ pending: Aan het wachten op toestemming van de relayserver
+ save_and_enable: Opslaan en inschakelen
+ setup: Een verbinding met een relayserver maken
+ status: Status
+ title: Relayservers
report_notes:
- created_msg: Opmerking bij gerapporteerde toot succesvol aangemaakt!
- destroyed_msg: Opmerking bij gerapporteerde toot succesvol verwijderd!
+ created_msg: Opmerking bij rapportage succesvol aangemaakt!
+ destroyed_msg: Opmerking bij rapportage succesvol verwijderd!
reports:
account:
note: opmerking
- report: gerapporteerde toot
+ report: rapportage
action_taken_by: Actie uitgevoerd door
are_you_sure: Weet je het zeker?
assign_to_self: Aan mij toewijzen
@@ -284,18 +331,18 @@ nl:
create_and_unresolve: Heropenen met opmerking
delete: Verwijderen
placeholder: Beschrijf welke acties zijn ondernomen of andere gerelateerde opmerkingen…
- reopen: Gerapporteerde toot heropenen
- report: 'Gerapporteerde toot #%{id}'
+ reopen: Rapportage heropenen
+ report: 'Rapportage #%{id}'
report_contents: Inhoud
reported_account: Gerapporteerde account
reported_by: Gerapporteerd door
resolved: Opgelost
- resolved_msg: Gerapporteerde toot succesvol opgelost!
+ resolved_msg: Rapportage succesvol opgelost!
silence_account: Account negeren
status: Toot
suspend_account: Account opschorten
target: Gerapporteerde account
- title: Gerapporteerde toots
+ title: Rapportages
unassign: Niet langer toewijzen
unresolved: Onopgelost
updated_at: Bijgewerkt
@@ -310,6 +357,9 @@ nl:
contact_information:
email: Vul een openbaar gebruikt e-mailadres in
username: Vul een gebruikersnaam in
+ custom_css:
+ desc_html: Het uiterlijk van deze server met CSS aanpassen
+ title: Aangepaste CSS
hero:
desc_html: Wordt op de voorpagina getoond. Tenminste 600x100px aanbevolen. Wanneer dit niet is ingesteld wordt de thumbnail van de Mastodonserver getoond
title: Hero-afbeelding
@@ -339,11 +389,14 @@ nl:
desc_html: Medewerkersbadge op profielpagina tonen
title: Medewerkersbadge tonen
site_description:
- desc_html: Dit wordt als een alinea op de voorpagina getoond en gebruikt als meta-tag in de paginabron.
Je kan HTML gebruiken, zoals
<a>
en
<em>
.
+ desc_html: Dit wordt als een alinea op de voorpagina getoond. Beschrijf wat er speciaal is aan deze server en andere zaken die van belang zijn. Je kan HTML gebruiken, zoals
<a>
en
<em>
.
title: Omschrijving Mastodonserver
site_description_extended:
desc_html: Wordt op de uitgebreide informatiepagina weergegeven
Je kan ook hier HTML gebruiken
title: Uitgebreide omschrijving Mastodonserver
+ site_short_description:
+ desc_html: Dit wordt in de zijbalk getoond als en als metatag in de paginabron. Beschrijf in één alinea wat Mastodon is en wat deze server speciaal maakt. De (langere) omschrijving van de Mastodonserver wordt gebruikt wanneer dit veld wordt leeg gelaten.
+ title: Korte omschrijving Mastodonserver
site_terms:
desc_html: Je kan hier jouw eigen privacybeleid, gebruiksvoorwaarden en ander juridisch jargon kwijt. Je kan HTML gebruiken
title: Aangepaste gebruiksvoorwaarden
@@ -365,6 +418,7 @@ nl:
media:
title: Media
no_media: Geen media
+ no_status_selected: Er werden geen toots gewijzigd, omdat er geen enkele werd geselecteerd
title: Toots van account
with_media: Met media
subscriptions:
@@ -374,12 +428,18 @@ nl:
last_delivery: Laatste bezorging
title: WebSub
topic: Account
+ suspensions:
+ bad_acct_msg: De bevestigingswaarde kwam niet overeen. Schort je wel het juiste account op?
+ hint_html: Vul in het veld hieronder %{value} in, om het opschorten van dit account te bevestigen.
+ proceed: Ga verder
+ title: "%{acct} opschorten"
+ warning_html: 'Door het opschorten van dit account worden gegevens van dit account
permanent verwijderd, waaronder:'
title: Beheer
admin_mailer:
new_report:
body: "%{reporter} heeft %{target} gerapporteerd"
body_remote: Iemand van %{domain} heeft %{target} gerapporteerd
- subject: Nieuwe toots gerapporteerd op %{instance} (#%{id})
+ subject: Nieuwe rapportage op %{instance} (#%{id})
application_mailer:
notification_preferences: E-mailvoorkeuren wijzigen
salutation: "%{name},"
@@ -492,7 +552,7 @@ nl:
delete: Verwijderen
title: Filters
new:
- title: Nieuwe filter toevoegen
+ title: Nieuw filter toevoegen
followers:
domain: Domein
explanation_html: Wanneer je de privacy van jouw toots wilt garanderen, moet je goed weten wie jouw volgers zijn.
Toots die alleen aan jouw volgers zijn gericht, worden aan de Mastodonservers van jouw volgers afgeleverd. Daarom wil je ze misschien controleren en desnoods volgers verwijderen die zich op een Mastodonserver bevinden die jij niet vertrouwd. Bijvoorbeeld omdat de beheerder(s) of de software van zo'n server jouw privacy niet respecteert.
@@ -505,9 +565,12 @@ nl:
true_privacy_html: Hou er wel rekening mee dat
echte privacy alleen gegarandeerd kan worden met behulp van end-to-end-encryptie.
unlocked_warning_html: Iedereen kan jou volgen en daarmee meteen toots zien die je alleen aan jouw volgers hebt gericht. %{lock_link} om volgers te kunnen beoordelen en desnoods te weigeren.
unlocked_warning_title: Jouw account is niet besloten
+ footer:
+ developers: Ontwikkelaars
+ more: Meer…
+ resources: Hulpmiddelen
generic:
changes_saved_msg: Wijzigingen succesvol opgeslagen!
- powered_by: wordt mogelijk gemaakt door %{link}
save_changes: Wijzigingen opslaan
validation_errors:
one: Er is iets niet helemaal goed! Bekijk onderstaande fout
@@ -543,8 +606,6 @@ nl:
expires_at: Verloopt op
uses: Aantal keer te gebruiken
title: Mensen uitnodigen
- landing_strip_html: "
%{name} is een gebruiker op %{link_to_root_path}. Je kunt deze volgen en ermee communiceren als je op Mastodon (of ergens anders in de fediverse) een account hebt."
- landing_strip_signup_html: Als je dat niet hebt, kun je je
hier registreren.
lists:
errors:
limit: Je hebt het maximaal aantal lijsten bereikt
@@ -616,11 +677,14 @@ nl:
publishing: Publiceren
web: Webapp
remote_follow:
- acct: Geef jouw account@domein.tld op waarvandaan je wilt volgen
+ acct: Geef jouw account@domein op die je wilt gebruiken
missing_resource: Kon vereiste doorverwijzings-URL voor jouw account niet vinden
no_account_html: Heb je geen account? Je kunt er
hier een registreren
- proceed: Ga door om te volgen
+ proceed: Ga verder om te volgen
prompt: 'Jij gaat volgen:'
+ remote_interaction:
+ proceed: Ga de interactie aan
+ prompt: 'Jij wilt de interactie aangaan met deze toot:'
remote_unfollow:
error: Fout
title: Titel
@@ -704,6 +768,7 @@ nl:
private: Alleen openbare toots kunnen worden vastgezet
reblog: Een boost kan niet worden vastgezet
show_more: Meer tonen
+ sign_in_to_participate: Meld je aan om aan dit gesprek mee te doen
title: '%{name}: "%{quote}"'
visibilities:
private: Alleen volgers
@@ -713,7 +778,6 @@ nl:
unlisted: Minder openbaar
unlisted_long: Aan iedereen tonen, maar niet op openbare tijdlijnen
stream_entries:
- click_to_show: Klik om te tonen
pinned: Vastgemaakte toot
reblogged: boostte
sensitive_content: Gevoelige inhoud
@@ -799,7 +863,7 @@ nl:
This document is CC-BY-SA. It was last updated March 7, 2018.
Originally adapted from the Discourse privacy policy.
- title: "%{instance} Terms of Service and Privacy Policy"
+ title: Gebruiksvoorwaarden en privacybeleid van %{instance}
themes:
contrast: Hoog contrast
default: Mastodon
@@ -807,6 +871,7 @@ nl:
time:
formats:
default: "%d %B %Y om %H:%M"
+ month: "%b %Y"
two_factor_authentication:
code_hint: Voer de code in die door de authenticatie-app gegenereerd is
description_html: Na het instellen van
tweestapsverificatie, kun jij je alleen aanmelden als je jouw mobiele telefoon bij je hebt. Hiermee genereer je namelijk de in te voeren aanmeldcode.
@@ -817,7 +882,7 @@ nl:
generate_recovery_codes: Herstelcodes genereren
instructions_html: "
Scan deze QR-code in Google Authenticator of een soortgelijke app op jouw mobiele telefoon. Van nu af aan genereert deze app aanmeldcodes die je bij het aanmelden moet invoeren."
lost_recovery_codes: Met herstelcodes kun je toegang tot jouw account krijgen wanneer je jouw telefoon bent kwijtgeraakt. Wanneer je jouw herstelcodes bent kwijtgeraakt, kan je ze hier opnieuw genereren. Jouw oude herstelcodes zijn daarna ongeldig.
- manual_instructions: Hieronder vind je de geheime code in platte tekst. Voor het geval je de QR-code niet kunt scannen en het handmatig moet invoeren.
+ manual_instructions: Voor het geval je de QR-code niet kunt scannen en het handmatig moet invoeren, vind je hieronder geheime code in gewone tekst.
recovery_codes: Herstelcodes back-uppen
recovery_codes_regenerated: Opnieuw genereren herstelcodes geslaagd
recovery_instructions_html: Wanneer je ooit de toegang verliest tot jouw telefoon, kan je met behulp van een van de herstelcodes hieronder opnieuw toegang krijgen tot jouw account.
Zorg ervoor dat je de herstelcodes op een veilige plek bewaard. Je kunt ze bijvoorbeeld printen en ze samen met andere belangrijke documenten bewaren.
diff --git a/config/locales/no.yml b/config/locales/no.yml
index eb1d27a19..bcf3966d4 100644
--- a/config/locales/no.yml
+++ b/config/locales/no.yml
@@ -8,9 +8,6 @@
contact: Kontakt
contact_missing: Ikke innstilt
contact_unavailable: Ikke tilgjengelig
- description_headline: Hva er %{domain}?
- domain_count_after: andre instanser
- domain_count_before: Koblet til
extended_description_html: |
En god plassering for regler
En utvidet beskrivelse er ikke satt opp ennå.
@@ -44,7 +41,6 @@
people_who_follow: Folk som følger %{name}
posts: Poster
posts_with_replies: Tuter med svar
- remote_follow: Følg fra andre instanser
reserved_username: Brukernavnet er reservert
roles:
admin: Admin
@@ -427,7 +423,6 @@
unlocked_warning_title: Din konto er ikke låst
generic:
changes_saved_msg: Vellykket lagring av endringer!
- powered_by: drevet av %{link}
save_changes: Lagre endringer
validation_errors:
one: Noe er ikke helt riktig ennå. Vennligst se etter en gang til
@@ -461,8 +456,6 @@
expires_at: Utløper
uses: Bruk
title: Inviter personer
- landing_strip_html: "
%{name} er en bruker på %{link_to_root_path}. Du kan følge dem eller kommunisere med dem hvis du har en konto hvor som helst i fediverset."
- landing_strip_signup_html: Hvis du ikke har en konto så kan du
registrere deg her.
lists:
errors:
limit: Du har nådd det maksimale antall lister
@@ -610,7 +603,6 @@
unlisted: Uoppført
unlisted_long: Synlig for alle, men ikke på offentlige tidslinjer
stream_entries:
- click_to_show: Klikk for å vise
pinned: Festet tut
reblogged: fremhevde
sensitive_content: Følsomt innhold
diff --git a/config/locales/oc.yml b/config/locales/oc.yml
index 6c56ab1c0..3fd5c87b9 100644
--- a/config/locales/oc.yml
+++ b/config/locales/oc.yml
@@ -5,13 +5,13 @@ oc:
about_mastodon_html: Mastodon es un malhum social bastit amb de protocòls liures e gratuits. Es descentralizat coma los corrièls.
about_this: A prepaus d’aquesta instància
administered_by: 'Gerida per :'
+ api: API
+ apps: Aplicacions per mobil
closed_registrations: Las inscripcions son clavadas pel moment sus aquesta instància.
contact: Contacte
contact_missing: Pas parametrat
contact_unavailable: Pas disponible
- description_headline: Qué es %{domain} ?
- domain_count_after: autras instàncias
- domain_count_before: Connectat a
+ documentation: Documentacion
extended_description_html: |
Una bona plaça per las règlas
La descripcion longa es pas estada causida pel moment.
@@ -28,25 +28,39 @@ oc:
hosted_on: Mastodon albergat sus %{domain}
learn_more: Ne saber mai
other_instances: Lista d’instàncias
+ privacy_policy: Politica de confidencialitat
source_code: Còdi font
- status_count_after: estatuts
+ status_count_after:
+ one: estatut
+ other: estatuts
status_count_before: qu’an escrich
- user_count_after: personas
+ terms: Condicions d’utilizacion
+ user_count_after:
+ one: utilizaire
+ other: utilizaires
user_count_before: Ostal de
what_is_mastodon: Qu’es Mastodon ?
accounts:
+ choices_html: 'Recomandacion de %{name} :'
follow: Sègre
- followers: Seguidors
+ followers:
+ one: Seguidor
+ other: Seguidors
following: Abonaments
+ joined: Arribèt lo %{date}
media: Mèdias
moved_html: "%{name} a mudat a %{new_profile_link} :"
network_hidden: Aquesta informacion es pas disponibla
nothing_here: I a pas res aquí !
people_followed_by: Lo monde que %{name} sèc
people_who_follow: Lo monde que sègon %{name}
- posts: Tuts
+ pin_errors:
+ following: Vos cal d’en primièr sègre las personas que volètz promòure
+ posts:
+ one: Tut
+ other: Tuts
+ posts_tab_heading: Tuts
posts_with_replies: Tuts e responsas
- remote_follow: Sègre a distància
reserved_username: Aqueste nom d’utilizaire es reservat
roles:
admin: Admin
@@ -181,6 +195,7 @@ oc:
unsuspend_account: "%{name} restabliguèt lo compte a %{target}"
update_custom_emoji: "%{name} metèt a jorn l’emoji %{target}"
update_status: "%{name} metèt a jorn l’estatut a %{target}"
+ deleted_status: "(estatut suprimit)"
title: Audit dels jornals
custom_emojis:
by_domain: Domeni
@@ -207,6 +222,27 @@ oc:
update_failed_msg: Mesa a jorn de l’emoji fracasada
updated_msg: Emoji ben mes a jorn !
upload: Enviar
+ dashboard:
+ backlog: Accions en retard
+ config: Configuracion
+ feature_deletions: Supressions de comptes
+ feature_invites: Ligams convidat
+ feature_registrations: Inscripcions
+ feature_relay: Relai de federacion
+ features: Foncionalitats
+ hidden_service: Federacion amb servicis amagats
+ open_reports: Senhalaments dobèrts
+ recent_users: Utilizaires recents
+ search: Recèrca tèxte complèt
+ single_user_mode: Mòde sol utilizaire
+ software: Logicial
+ space: Utilizacion de l’espaci
+ title: Tablèu de bòrd
+ total_users: total dels utilizaires
+ trends: Tendéncias
+ week_interactions: interaccions aquesta setmana
+ week_users_active: actius aquesta setmana
+ week_users_new: utilizaires aquesta setmana
domain_blocks:
add_new: Ajustar
created_msg: Domeni blocat es a èsser tractat
@@ -256,12 +292,23 @@ oc:
search: Cercar
title: Instàncias conegudas
invites:
+ deactivate_all: O desactivar tot
filter:
all: Totes
available: Disponibles
expired: Expirats
title: Filtre
title: Convits
+ relays:
+ add_new: Ajustar un nòu relai
+ description_html: Un
relai de federacion es un servidor intermediari qu’escàmbia de bèls volumes de tuts publics entre servidors que son abonats e i publican.
Pòt ajudar de pichons e mejans servidors a trobar de contenguts del fediverse estant, qu’autrament demandariá als utilizaires locals de s’abonar manualament a d’autres monde marcats sus de servidors alonhats.
+ enable_hint: Un còp activat, vòstre servidor s’abonarà a totes los tuts publics del relai estant, e començarà de mandar sos tuts publics a aqueste d’enlà.
+ inbox_url: URL del relai
+ pending: En espèra d’aprovacion del relai
+ save_and_enable: Salvar e activar
+ setup: Configurar una connexion relai
+ status: Estatut
+ title: Relais
report_notes:
created_msg: Nòta de moderacion corrèctament creada !
destroyed_msg: Nòta de moderacion corrèctament suprimida !
@@ -298,7 +345,7 @@ oc:
target: Cibla
title: Senhalament
unassign: Levar
- unresolved: Pas resolguts
+ unresolved: Pas resolgut
updated_at: Actualizat
view: Veire
settings:
@@ -311,6 +358,9 @@ oc:
contact_information:
email: Picatz una adreça de corrièl
username: Picatz un nom d’utilizaire
+ custom_css:
+ desc_html: Modificar l’estil amb una fuèlha CSS cargada sus cada pagina
+ title: CSS personalizada
hero:
desc_html: Mostrat en primièra pagina. Almens 600x100px recomandat. S’es pas configurat l’imatge de l’instància serà mostrat
title: Imatge de l’eròi
@@ -340,11 +390,14 @@ oc:
desc_html: Mostrar lo badge Personal sus la pagina de perfil
title: Mostrar lo badge personal
site_description:
- desc_html: Afichada jos la forma de paragraf sus la pagina d’acuèlh e utilizada coma balisa meta. Podètz utilizar de balisas HTML, en particular
<a>
e
<em>
.
+ desc_html: Paragraf d’introduccion sus la pagina d’acuèlh. Explicatz çò que fa diferent aqueste servidor Mastodon e tot çò qu’es important de dire. Podètz utilizare de balises HTML, en particular
<a>
e
<em>
.
title: Descripcion de l’instància
site_description_extended:
desc_html: Afichada sus la pagina d’informacion complementària del site
Podètz utilizar de balisas HTML
title: Descripcion espandida del site
+ site_short_description:
+ desc_html: Mostrat dins la barra laterala e dins las meta balisas. Explica çò qu’es Mastodon e perque aqueste servidor es especial en un solet paragraf. S’es void, serà garnit amb la descripcion de l’instància.
+ title: Descripcion corta de l’instància
site_terms:
desc_html: Afichada sus la pagina de las condicions d’utilizacion
Podètz utilizar de balisas HTML
title: Politica de confidencialitat del site
@@ -366,6 +419,7 @@ oc:
media:
title: Mèdia
no_media: Cap de mèdia
+ no_status_selected: Cap d’estatut pas cambiat estant que cap èra pas seleccionat
title: Estatuts del compte
with_media: Amb mèdia
subscriptions:
@@ -375,6 +429,12 @@ oc:
last_delivery: Darrièra distribucion
title: WebSub
topic: Subjècte
+ suspensions:
+ bad_acct_msg: La valor de confirmacion a pas coïncidit. Sètz a suspendre lo bon compte ?
+ hint_html: 'Per confirmar la suspension del compte, picatz %{value} al camp çai-jos :'
+ proceed: Tractat
+ title: Suspension de %{acct}
+ warning_html: 'Suspendre aqueste compte suprimirà
irreversiblament las donadas del compte, aquò compren :'
title: Administracion
admin_mailer:
new_report:
@@ -562,9 +622,12 @@ oc:
true_privacy_html: Mèfi que la
vertadièra confidencialitat pòt solament èsser amb un chiframent del cap a la fin (end-to-end).
unlocked_warning_html: Tot lo monde pòt vos sègre e veire sulpic vòstres estatuts privats. %{lock_link} per poder repassar e regetar los seguidors.
unlocked_warning_title: Vòstre compte es pas clavat
+ footer:
+ developers: Desvolopaires
+ more: Mai…
+ resources: Ressorsas
generic:
changes_saved_msg: Cambiaments ben realizats !
- powered_by: propulsat per %{link}
save_changes: Salvar los cambiaments
validation_errors:
one: I a quicòm que truca ! Mercés de corregir l’error çai-jos
@@ -600,8 +663,6 @@ oc:
expires_at: Expirats
uses: Usatges
title: Convidar de mond
- landing_strip_html: "
%{name} utiliza %{link_to_root_path}. Podètz lo/la sègre o interagir amb el o ela s’avètz un compte ont que siasque sul fediverse."
- landing_strip_signup_html: S’es pas lo cas, podètz
vos marcar aquí.
lists:
errors:
limit: Avètz atengut lo maximum de listas
@@ -678,6 +739,9 @@ oc:
no_account_html: Avètz pas cap de compte ? Podètz
vos marcar aquí
proceed: Clicatz per sègre
prompt: 'Sètz per sègre :'
+ remote_interaction:
+ proceed: Confirmar l’interaccion
+ prompt: 'Volètz interagir amb aqueste tut :'
remote_unfollow:
error: Error
title: Títol
@@ -761,6 +825,7 @@ oc:
private: Se pòt pas penjar los tuts pas publics
reblog: Se pòt pas penjar un tut partejat
show_more: Ne veire mai
+ sign_in_to_participate: Inscrivètz-vos per participar a la conversacion
title: '%{name} : "%{quote}"'
visibilities:
private: Seguidors solament
@@ -770,7 +835,6 @@ oc:
unlisted: Pas listat
unlisted_long: Tot lo monde pòt veire mai serà pas visible sul flux public
stream_entries:
- click_to_show: Clicatz per veire
pinned: Tut penjat
reblogged: a partejat
sensitive_content: Contengut sensible
@@ -795,7 +859,23 @@ oc:
- Per provesir la foncionament màger de Mastodon. Podètz pas qu’interagir amb lo contengut del monde e de vòstras publicacions quand sètz connectat. Per exemple, avètz la possibilitat de sègre de monde per veire lors publicacions amassadas dins vòstre flux d’actualitat personalizat.
- Per ajudar la moderacion de la comunitat, per exemple en comparant vòstra adreça IP amb d’autras per determinar d’ensages de contornament de bandiment e d’autras violéncias.
- - Per enviar periodicament de corrièls — Podèm utilizar l’adreça qu’avètz donada per vos enviar d’informacions e de notificacions que demandatz tocant de cambiaments dins los subjèctes del forum o en responsa a vòstre nom d’utilizaire, en responsa a una demanda, e/o tota autra question.
+ - Podèm utilizar l’adreça qu’avètz donada per vos enviar d’informacions e de notificacions que demandatz tocant de cambiaments dins los subjèctes del forum o en responsa a vòstre nom d’utilizaire, en responsa a una demanda, e/o tota autra question.
+
+
+
+
+
Cossí protegèm vòstras informacions ?
+
+
Apliquem tota una mena de mesuras de seguretat per manténer la fisança de vòstras informacions personalas quand las picatz, mandatz, o i accedètz. Entre aquelas, vòstre session de navigacion, coma lo trafic entre vòstra aplicacion e l’API, son securizats amb SSL e lo senhal es copat en tròces en emplegar un algorisme fòrt a sens unic. Podètz activar l’autentificacion en dos temps pels accèsses futurs a vòstre compte.
+
+
+
Quala es nòstra politica de conservacion de donadas ?
+
+
Farem esfòrces per :
+
+
+ - Gardar los jornals del servidor que contenon las adreças IP de totas las demandas al servidor pas mai de 90 jorns.
+ - Gardar las adreças IP ligadas als utilizaires e lors publicacions pas mai de 12 messes.
title: Condicions d’utilizacion e politica de confidencialitat de %{instance}
themes:
@@ -805,6 +885,7 @@ oc:
time:
formats:
default: Lo %d %b de %Y a %Ho%M
+ month: "%b %Y"
two_factor_authentication:
code_hint: Picatz lo còdi generat per vòstra aplicacion d’autentificacion per confirmar
description_html: S’activatz
l’autentificacion two-factor, vos caldrà vòstre mobil per vos connectar perque generarà un geton per vos daissar dintrar.
diff --git a/config/locales/pl.yml b/config/locales/pl.yml
index 061c07b64..95221e818 100644
--- a/config/locales/pl.yml
+++ b/config/locales/pl.yml
@@ -5,13 +5,13 @@ pl:
about_mastodon_html: Mastodon jest wolną i otwartą siecią społecznościową, zdecentralizowaną alternatywą dla zamkniętych, komercyjnych platform.
about_this: O tej instancji
administered_by: 'Administrowana przez:'
+ api: API
+ apps: Aplikacje
closed_registrations: Rejestracja na tej instancji jest obecnie zamknięta. Możesz jednak zarejestrować się na innej instancji, uzyskując dostęp do tej samej sieci.
contact: Kontakt
contact_missing: Nie ustawiono
contact_unavailable: Nie dotyczy
- description_headline: Czym jest %{domain}?
- domain_count_after: instancjami
- domain_count_before: Serwer połączony z
+ documentation: Dokumentacja
extended_description_html: |
Dobre miejsce na zasady użytkowania
Nie ustawiono jeszcze szczegółowego opisu
@@ -28,25 +28,45 @@ pl:
hosted_on: Mastodon uruchomiony na %{domain}
learn_more: Dowiedz się więcej
other_instances: Lista instancji
+ privacy_policy: Polityka prywatności
source_code: Kod źródłowy
- status_count_after: wpisów
+ status_count_after:
+ few: wpisów
+ many: wpisów
+ one: wpisu
status_count_before: Są autorami
- user_count_after: użytkowników
+ terms: Zasady użytkowania
+ user_count_after:
+ few: użytkowników
+ many: użytkowników
+ one: użytkownik
user_count_before: Z serwera korzysta
what_is_mastodon: Czym jest Mastodon?
accounts:
+ choices_html: 'Polecani przez %{name}:'
follow: Śledź
- followers: Śledzący
- following: Śledzeni
+ followers:
+ few: śledzących
+ many: śledzących
+ one: śledzący
+ following:
+ few: śledzonych
+ many: śledzonych
+ one: śledzony
+ joined: Dołączył(a) %{date}
media: Zawartość multimedialna
moved_html: "%{name} korzysta teraz z konta %{new_profile_link}:"
network_hidden: Ta informacja nie jest dostępna
nothing_here: Niczego tu nie ma!
people_followed_by: Konta śledzone przez %{name}
people_who_follow: Osoby, które śledzą konto %{name}
- posts: Wpisy
+ pin_errors:
+ following: Musisz śledzić osobę, którą chcesz polecać
+ posts:
+ few: wpisy
+ many: wpisów
+ one: wpis
posts_with_replies: Wpisy z odpowiedziami
- remote_follow: Śledź zdalnie
reserved_username: Ta nazwa użytkownika jest zarezerwowana
roles:
admin: Administrator
@@ -152,34 +172,34 @@ pl:
web: Sieć
action_logs:
actions:
- assigned_to_self_report: "%{name} przypisał sobie zgłoszenie %{target}"
- change_email_user: "%{name} zmienił adres-email użytkownika %{target}"
- confirm_user: "%{name} potwierdził adres e-mail użytkownika %{target}"
- create_custom_emoji: "%{name} dodał nowe emoji %{target}"
- create_domain_block: "%{name} zablokował domenę %{target}"
- create_email_domain_block: "%{name} dodał domenę e-mail %{target} na czarną listę"
- demote_user: "%{name} zdegradował użytkownika %{target}"
- destroy_domain_block: "%{name} odblokował domenę %{target}"
- destroy_email_domain_block: "%{name} usunął domenę e-mail %{target} z czarnej listy"
- destroy_status: "%{name} usunął wpis użytkownika %{target}"
- disable_2fa_user: "%{name} wyłączył uwierzytelnianie dwustopniowe użytkownikowi %{target}"
- disable_custom_emoji: "%{name} wyłączył emoji %{target}"
- disable_user: "%{name} zablokował możliwość logowania użytkownikowi %{target}"
- enable_custom_emoji: "%{name} włączył emoji %{target}"
- enable_user: "%{name} przywrócił możliwość logowania użytkownikowi %{target}"
- memorialize_account: "%{name} nadał kontu %{target} status in memoriam"
- promote_user: "%{name} podniósł uprawnienia użytkownikowi %{target}"
- remove_avatar_user: "%{name} usunął awatar użytkownikowi %{target}"
- reopen_report: "%{name} otworzył ponownie zgłoszenie %{target}"
- reset_password_user: "%{name} przywrócił hasło użytkownikowi %{target}"
- resolve_report: "%{name} rozwiązał zgłoszenie %{target}"
- silence_account: "%{name} wyciszył konto %{target}"
- suspend_account: "%{name} zawiesił konto %{target}"
- unassigned_report: "%{name} cofnął przypisanie zgłoszenia %{target}"
- unsilence_account: "%{name} cofnął wyciszenie konta %{target}"
- unsuspend_account: "%{name} cofnął zawieszenie konta %{target}"
- update_custom_emoji: "%{name} zaktualizował emoji %{target}"
- update_status: "%{name} zaktualizował wpis użytkownika %{target}"
+ assigned_to_self_report: "%{name} przypisał(a) sobie zgłoszenie %{target}"
+ change_email_user: "%{name} zmienił(a) adres e-mail użytkownika %{target}"
+ confirm_user: "%{name} potwierdził(a) adres e-mail użytkownika %{target}"
+ create_custom_emoji: "%{name} dodał(a) nowe emoji %{target}"
+ create_domain_block: "%{name} zablokował(a) domenę %{target}"
+ create_email_domain_block: "%{name} dodał(a) domenę e-mail %{target} na czarną listę"
+ demote_user: "%{name} zdegradował(a) użytkownika %{target}"
+ destroy_domain_block: "%{name} odblokował(a) domenę %{target}"
+ destroy_email_domain_block: "%{name} usunął(-ęła) domenę e-mail %{target} z czarnej listy"
+ destroy_status: "%{name} usunął(-ęła) wpis użytkownika %{target}"
+ disable_2fa_user: "%{name} wyłączył(a) uwierzytelnianie dwustopniowe użytkownikowi %{target}"
+ disable_custom_emoji: "%{name} wyłączył(a) emoji %{target}"
+ disable_user: "%{name} zablokował(a) możliwość logowania użytkownikowi %{target}"
+ enable_custom_emoji: "%{name} włączył(a) emoji %{target}"
+ enable_user: "%{name} przywrócił(a) możliwość logowania użytkownikowi %{target}"
+ memorialize_account: "%{name} nadał(a) kontu %{target} status in memoriam"
+ promote_user: "%{name} podniósł(a) uprawnienia użytkownikowi %{target}"
+ remove_avatar_user: "%{name} usunął(-ęła) awatar użytkownikowi %{target}"
+ reopen_report: "%{name} otworzył(a) ponownie zgłoszenie %{target}"
+ reset_password_user: "%{name} przywrócił(a) hasło użytkownikowi %{target}"
+ resolve_report: "%{name} rozwiązał(a) zgłoszenie %{target}"
+ silence_account: "%{name} wyciszył(a) konto %{target}"
+ suspend_account: "%{name} zawiesił(a) konto %{target}"
+ unassigned_report: "%{name} cofnął(-ęła) przypisanie zgłoszenia %{target}"
+ unsilence_account: "%{name} cofnął(-ęła) wyciszenie konta %{target}"
+ unsuspend_account: "%{name} cofnął(-ęła) zawieszenie konta %{target}"
+ update_custom_emoji: "%{name} zaktualizował(a) emoji %{target}"
+ update_status: "%{name} zaktualizował(a) wpis użytkownika %{target}"
title: Dziennik działań administracyjnych
custom_emojis:
by_domain: Domeny
@@ -206,6 +226,27 @@ pl:
update_failed_msg: Nie udało się zaktualizować emoji
updated_msg: Pomyślnie zaktualizowano emoji!
upload: Dodaj
+ dashboard:
+ backlog: zaległe zadania
+ config: Konfiguracja
+ feature_deletions: Usuwanie kont
+ feature_invites: Zaproszenia
+ feature_registrations: Rejestracja
+ feature_relay: Przekazywanie federacji
+ features: Możliwości
+ hidden_service: Federowanie z ukrytymi usługami
+ open_reports: otwarte zgłoszenia
+ recent_users: Ostatni użytkownicy
+ search: Wyszukiwanie pełnego tekstu
+ single_user_mode: Tryb jednego użytkownika
+ software: Oprogramowanie
+ space: Używana powierzchnia
+ title: Panel administracyjny
+ total_users: łącznie użytkowników
+ trends: Na czasie
+ week_interactions: interakcje w tym tygodniu
+ week_users_active: aktywni w tym tygodniu
+ week_users_new: rejestracje w tym tygodniu
domain_blocks:
add_new: Dodaj nową
created_msg: Blokada domen jest przetwarzana
@@ -256,12 +297,23 @@ pl:
search: Szukaj
title: Znane instancje
invites:
+ deactivate_all: Unieważnij wszystkie
filter:
all: Wszystkie
available: Dostępne
expired: Wygasłe
title: Filtruj
title: Zaproszenia
+ relays:
+ add_new: Dodaj nowy
+ description_html: "
Przekaźnik federacji jest pośredniczącym serwerem wymieniającym duże ilości publicznych wpisów pomiędzy serwerami które subskrybują je i publikują na nich.
Pomaga to małym i średnim instancją poznawać nową zawartość z Fediwersum, co w innym przypadku wymagałoby od użytkowników ręcznego śledzenia osób z innych serwerów."
+ enable_hint: Jeżeli włączone, Twój serwer zasubskrybuje wszystkie publiczne wpisy z tego przekaźnika i zacznie wysyłać tam publiczne wpisy z tego serwera.
+ inbox_url: Adres przekaźnika
+ pending: Oczekiwanie na przyjęcie przez przekaźnik
+ save_and_enable: Zapisz i aktywuj
+ setup: Skonfiguruj połączenie z przekaźnikiem
+ status: Stan
+ title: Przekaźniki
report_notes:
created_msg: Pomyslnie utworzono notatkę moderacyjną.
destroyed_msg: Pomyślnie usunięto notatkę moderacyjną.
@@ -340,13 +392,16 @@ pl:
desc_html: Pokazuj odznakę uprawnień na stronie profilu użytkownika
title: Pokazuj odznakę administracji
site_description:
- desc_html: Akapit wprowadzający, widoczny na stronie głównej i znacznikach meta. Możesz korzystać z tagów HTML, w szczególności
<a>
i
<em>
.
+ desc_html: Akapit wprowadzający, widoczny na stronie głównej. Opisz, co czyni tę instancję wyjątkową. Możesz korzystać ze znaczników HTML, w szczególności
<a>
i
<em>
.
title: Opis instancji
site_description_extended:
- desc_html: Dobre miejsce na zasady użytkowania, wprowadzenie i inne rzeczy, które wyróżniają tę instancję. Możesz korzystać z tagów HTML
+ desc_html: Dobre miejsce na zasady użytkowania, wprowadzenie i inne rzeczy, które wyróżniają tę instancję. Możesz korzystać ze znaczników HTML
title: Niestandardowy opis strony
+ site_short_description:
+ desc_html: Wyświetlany na pasku bocznym i w znacznikach meta. Opisz, czym jest Mastodon i czym wyróżnia się ta instancja w jednym akapicie. Jeżeli pusty, zostanie użyty opis instancji.
+ title: Krótki opis instancji
site_terms:
- desc_html: Miejsce na własną politykę prywatności, zasady użytkowania i inne unormowania prawne. Możesz korzystać z tagów HTML
+ desc_html: Miejsce na własną politykę prywatności, zasady użytkowania i inne unormowania prawne. Możesz korzystać ze znaczników HTML
title: Niestandardowe zasady użytkowania
site_title: Nazwa instancji
thumbnail:
@@ -366,6 +421,7 @@ pl:
media:
title: Media
no_media: Bez zawartości multimedialnej
+ no_status_selected: Żaden wpis nie został zmieniony, bo żaden nie został wybrany
title: Wpisy konta
with_media: Z zawartością multimedialną
subscriptions:
@@ -375,11 +431,17 @@ pl:
last_delivery: Ostatnio doręczono
title: WebSub
topic: Temat
+ suspensions:
+ bad_acct_msg: Zawartość potwierdzenia nie zgadza się. Czy próbujesz zawiesić właściwe konto?
+ hint_html: 'Aby potwierdzić zawieszenie konta, wprowadź %{value} w poniższe pole:'
+ proceed: Przejdź
+ title: Zawieś %{acct}
+ warning_html: 'Zawieszenie konta będzie skutkowało
nieodwracalnym usunięciem danych z tego konta, wliczając:'
title: Administracja
admin_mailer:
new_report:
- body: Użytkownik %{reporter} zgłosił %{target}
- body_remote: Użytkownik instancji %{domain} zgłosił %{target}
+ body: Użytkownik %{reporter} zgłosił(a) %{target}
+ body_remote: Użytkownik instancji %{domain} zgłosił(a) %{target}
subject: Nowe zgłoszenie na %{instance} (#%{id})
application_mailer:
notification_preferences: Zmień ustawienia e-maili
@@ -397,18 +459,18 @@ pl:
warning: Przechowuj te dane ostrożnie. Nie udostępniaj ich nikomu!
your_token: Twój token dostępu
auth:
- agreement_html: Rejestrując się, oświadczasz, że zapoznałeś się z
informacjami o instancji i
zasadami korzystania z usługi.
+ agreement_html: Rejestrując się, oświadczasz, że zapoznałeś(-aś) się z
informacjami o instancji i
zasadami korzystania z usługi.
change_password: Hasło
confirm_email: Potwierdź adres e-mail
delete_account: Usunięcie konta
delete_account_html: Jeżeli chcesz usunąć konto,
przejdź tutaj. Otrzymasz prośbę o potwierdzenie.
- didnt_get_confirmation: Nie otrzymałeś instrukcji weryfikacji?
+ didnt_get_confirmation: Nie otrzymałeś(-aś) instrukcji weryfikacji?
forgot_password: Nie pamiętasz hasła?
invalid_reset_password_token: Token do resetowania hasła jest nieprawidłowy lub utracił ważność. Spróbuj uzyskać nowy.
login: Zaloguj się
logout: Wyloguj się
migrate_account: Przenieś konto
- migrate_account_html: Jeżeli chcesz skonfigurować przekierowanie z obecnego konta na inne, możesz
skonfigurować to tutaj.
+ migrate_account_html: Jeżeli chcesz skonfigurować przekierowanie z obecnego konta na inne, możesz
zrobić to tutaj.
or: lub
or_log_in_with: Lub zaloguj się z użyciem
providers:
@@ -506,9 +568,12 @@ pl:
true_privacy_html: Pamiętaj, że
rzeczywista prywatność może zostać uzyskana wyłącznie dzięki szyfrowaniu end-to-end.
unlocked_warning_html: Każdy może Cię śledzić, dzięki czemu może zobaczyć Twoje niepubliczne wpisy. %{lock_link} aby móc kontrolować, kto Cię śledzi.
unlocked_warning_title: Twoje konto nie jest zablokowane
+ footer:
+ developers: Dla programistów
+ more: Więcej…
+ resources: Zasoby
generic:
changes_saved_msg: Ustawienia zapisane!
- powered_by: uruchomione na %{link}
save_changes: Zapisz zmiany
validation_errors:
few: Coś jest wciąż nie tak! Przejrzyj %{count} poniższe błędy
@@ -536,7 +601,7 @@ pl:
'86400': dobie
expires_in_prompt: Nigdy
generate: Wygeneruj
- invited_by: 'Zostałeś zaproszony przez:'
+ invited_by: 'Zostałeś(-aś) zaproszony(-a) przez:'
max_uses:
few: "%{count} użycia"
many: "%{count} użyć"
@@ -548,8 +613,6 @@ pl:
expires_at: Wygaśnie po
uses: Użycia
title: Zaproś użytkowników
- landing_strip_html: "
%{name} ma konto na %{link_to_root_path}. Możesz je śledzić i wejść z nim w interakcję jeśli masz konto gdziekolwiek w Fediwersum."
- landing_strip_signup_html: Jeśli jeszcze go nie masz, możesz
stworzyć konto.
lists:
errors:
limit: Przekroczyłeś maksymalną liczbę utworzonych list
@@ -590,13 +653,13 @@ pl:
title: Nowy śledzący
follow_request:
action: Zarządzaj prośbami o możliwość śledzenia
- body: "%{name} poprosił o możliwość śledzenia Cię"
+ body: "%{name} poprosił(a) o możliwość śledzenia Cię"
subject: 'Prośba o możliwość śledzenia: %{name}'
title: Nowa prośba o możliwość śledzenia
mention:
action: Odpowiedz
- body: "%{name} wspomniał o Tobie w:"
- subject: "%{name} wspomniał o Tobie"
+ body: "%{name} wspomniał(a) o Tobie w:"
+ subject: "%{name} wspomniał(a) o Tobie"
title: Nowe wspomnienie o Tobie
reblog:
body: 'Twój wpis został podbity przez %{name}:'
@@ -625,11 +688,14 @@ pl:
publishing: Publikowanie
web: Sieć
remote_follow:
- acct: Podaj swój adres (nazwa@domena), z którego chcesz śledzić
+ acct: Podaj swój adres (nazwa@domena), z którego chcesz wykonać działanie
missing_resource: Nie udało się znaleźć adresu przekierowania z Twojej domeny
no_account_html: Nie masz konta? Możesz
zarejestrować się tutaj
proceed: Śledź
prompt: 'Zamierzasz śledzić:'
+ remote_interaction:
+ proceed: Przejdź do interakcji
+ prompt: 'Chcesz dokonać interakcji z tym wpisem:'
remote_unfollow:
error: Błąd
title: Tytuł
@@ -717,6 +783,7 @@ pl:
private: Nie możesz przypiąć niepublicznego wpisu
reblog: Nie możesz przypiąć podbicia wpisu
show_more: Pokaż więcej
+ sign_in_to_participate: Zaloguj się, aby udzielić się w tej konwersacji
title: '%{name}: "%{quote}"'
visibilities:
private: Tylko dla śledzących
@@ -726,7 +793,6 @@ pl:
unlisted: Niewypisane
unlisted_long: Widoczne dla wszystkich, ale nie wyświetlane na publicznych osiach czasu
stream_entries:
- click_to_show: Naciśnij aby wyświetlić
pinned: Przypięty wpis
reblogged: podbił
sensitive_content: Wrażliwa zawartość
@@ -736,9 +802,9 @@ pl:
Jakie informacje zbieramy?
- - Podstawowe informacje o koncie: Podczas rejestracji na tym serwerze, możesz zostać poproszony o wprowadzenie nazwy użytkownika, adresu e-mail i hasła. Możesz także wprowadzić dodatkowe informacje o profilu, takie jak nazwa wyświetlana i biografia oraz wysłać awatar i obraz nagłówka. Nazwa użytkownika, nazwa wyświetlana, biografia, awatar i obraz nagłówka są zawsze widoczne dla wszystkich.
+ - Podstawowe informacje o koncie: Podczas rejestracji na tym serwerze, możesz zostać poproszony(-a) o wprowadzenie nazwy użytkownika, adresu e-mail i hasła. Możesz także wprowadzić dodatkowe informacje o profilu, takie jak nazwa wyświetlana i biografia oraz wysłać awatar i obraz nagłówka. Nazwa użytkownika, nazwa wyświetlana, biografia, awatar i obraz nagłówka są zawsze widoczne dla wszystkich.
- Wpisy, śledzenie i inne publiczne informacje: Lista osób które śledzisz jest widoczna publicznie, tak jak lista osób, które Cię śledzą. Jeżeli dodasz wpis, data i czas jego utworzenia i aplikacja, z której go wysłano są przechowywane. Wiadomości mogą zawierać załączniki multimedialne, takie jak zdjęcia i filmy. Publiczne i niewidoczne wpisy są dostępne publicznie. Udostępniony wpis również jest widoczny publicznie. Twoje wpisy są dostarczane obserwującym, co oznacza że jego kopie mogą zostać dostarczone i być przechowywane na innych serwerach. Kiedy usuniesz wpis, przestaje być widoczny również dla osób śledzących Cię. „Podbijanie” i dodanie do ulubionych jest zawsze publiczne.
- - Wpisy bezpośrednie i tylko dla śledzących: Wszystkie wpisy są przechowywane i przetwarzane na serwerze. Wpisy przeznaczone tylko dla śledzących są widoczne tylko dla nich i osób wspomnianych we wpisie, a wpisy bezpośrednie tylko dla wspimnianych. W wielu przypadkach oznacza to, że ich kopie są dostarczane i przechowywane na innych serwerach. Staramy się ograniczać zasięg tych wpisów wyłącznie do właściwych odbiorców, ale inne serwery mogą tego nie robić. Ważne jest, aby sprawdzać jakich serwerów używają osoby, które Cię śledzą. Możesz aktywować opcję pozwalającą na ręczne akceptowanie i odrzucanie nowych śledzących. Pamiętaj, że właściciele serwerów mogą zobaczyć te wiadomości, a odbiorcy mogą wykonać zrzut ekranu, skopiować lub udostępniać ten wpis. Nie udostępniaj wrażliwych danych z użyciem Mastodona.
+ - Wpisy bezpośrednie i tylko dla śledzących: Wszystkie wpisy są przechowywane i przetwarzane na serwerze. Wpisy przeznaczone tylko dla śledzących są widoczne tylko dla nich i osób wspomnianych we wpisie, a wpisy bezpośrednie tylko dla wspomnianych. W wielu przypadkach oznacza to, że ich kopie są dostarczane i przechowywane na innych serwerach. Staramy się ograniczać zasięg tych wpisów wyłącznie do właściwych odbiorców, ale inne serwery mogą tego nie robić. Ważne jest, aby sprawdzać jakich serwerów używają osoby, które Cię śledzą. Możesz aktywować opcję pozwalającą na ręczne akceptowanie i odrzucanie nowych śledzących. Pamiętaj, że właściciele serwerów mogą zobaczyć te wiadomości, a odbiorcy mogą wykonać zrzut ekranu, skopiować lub udostępniać ten wpis. Nie udostępniaj wrażliwych danych z użyciem Mastodona.
- Adresy IP i inne metadane: Kiedy zalogujesz się, przechowujemy adres IP użyty w trakcie logowania wraz z nazwą używanej przeglądarki. Wszystkie aktywne sesje możesz zobaczyć (i wygasić) w ustawieniach. Ostatnio używany adres IP jest przechowywany przez nas do 12 miesięcy. Możemy również przechowywać adresy IP wykorzystywane przy każdym działaniu na serwerze.
@@ -779,15 +845,15 @@ pl:
Czy używany plików cookies?
-
Tak. Pliki cookies są małymi plikami, które strona lub dostawca jej usługi dostarcza na dysk twardy komputera z użyciem przeglądarki internetowej (jeżeli na to pozwoli). Pliki cookies pozwalają na rozpoznanie przeglądarki i – jeśli jesteś zarejestrowany – przypisanie jej do konta.
+
Tak. Pliki cookies są małymi plikami, które strona lub dostawca jej usługi dostarcza na dysk twardy komputera z użyciem przeglądarki internetowej (jeżeli na to pozwoli). Pliki cookies pozwalają na rozpoznanie przeglądarki i – jeśli jesteś zarejestrowany(-a) – przypisanie jej do konta.
-
Wykorzystujemy pliki cookies, aby przechowywać preferencję użytkowników na przyszłe wizyty.
+
Wykorzystujemy pliki cookies, aby przechowywać preferencje użytkowników na przyszłe wizyty.
Czy przekazujemy informacje osobom trzecim?
-
Nie sprzedajemy, nie wymieniamy i nie przekazujemy osobom trzecim informacji pozwalających na identyfikację Ciebie. Nie dotyczy to zaufanym dostawcom pomagającym w prowadzeniu lub obsługiwaniu użytkowników, jeżeli zgadzają się, aby nie przekazywać dalej tych informacji. Możemy również udostępnić informacje, jeżeli uważany to za wymagane przez prawo, konieczne do wypełnienia polityki strony, przestrzegania naszych lub cudzych praw, własności i bezpieczeństwa.
+
Nie sprzedajemy, nie wymieniamy i nie przekazujemy osobom trzecim informacji pozwalających na identyfikację Ciebie. Nie dotyczy to zaufanych dostawców pomagających w prowadzeniu strony lub obsługiwaniu użytkowników, jeżeli zgadzają się, aby nie przekazywać dalej tych informacji. Możemy również udostępnić informacje, jeżeli uważany to za wymagane przez prawo, konieczne do wypełnienia polityki strony, przestrzegania naszych lub cudzych praw, własności i bezpieczeństwa.
Twoja publiczna zawartość może zostać pobrana przez inne serwery w sieci. Wpisy publiczne i tylko dla śledzących są dostarczane na serwery, na których znajdują się śledzący Cię, a wiadomości bezpośrednie trafiają na serwery adresatów, jeżeli są oni użytkownikami innego serwera.
@@ -797,9 +863,9 @@ pl:
Korzystanie ze strony przez dzieci
-
Jeżeli serwer znajduje się w UE lub w EOG: Ta strona, produkty i usługi są przeznaczone dla osób, które ukończyły 16 lat. Jeżeli nie ukończyłeś 16 roku życia, zgodnie z wymogami COPPA (Prawo o Ochronie Prywatności Dzieci w Internecie), nie używaj tej strony.
+
Jeżeli serwer znajduje się w UE lub w EOG: Ta strona, produkty i usługi są przeznaczone dla osób, które ukończyły 16 lat. Jeżeli nie ukończyłeś(-aś) 16 roku życia, zgodnie z wymogami COPPA (Prawo o Ochronie Prywatności Dzieci w Internecie), nie używaj tej strony.
-
Jeżeli serwer znajduje się w USA: Ta strona, produkty i usługi są przeznaczone dla osób, które ukończyły 13 lat. Jeżeli nie ukończyłeś 13 roku życia, zgodnie z wymogami RODO (Ogólne rozporządzenie o ochronie danych), nie używaj tej strony.
+
Jeżeli serwer znajduje się w USA: Ta strona, produkty i usługi są przeznaczone dla osób, które ukończyły 13 lat. Jeżeli nie ukończyłeś(-aś) 13 roku życia, zgodnie z wymogami RODO (Ogólne rozporządzenie o ochronie danych), nie używaj tej strony.
Wymogi mogą być inne, jeżeli serwer znajduje się w innym kraju.
@@ -838,7 +904,7 @@ pl:
wrong_code: Wprowadzony kod jest niepoprawny! Czy czas serwera i urządzenia jest poprawny?
user_mailer:
backup_ready:
- explanation: Zażądałeś pełnej kopii zapasowej konta na Mastodonie. Jest ono dostępne do pobrania
+ explanation: Zażądałeś pełnej kopii zapasowej konta na Mastodonie. Jest ona dostępna do pobrania!
subject: Twoje archiwum jest gotowe do pobrania
title: Odbiór archiwum
welcome:
@@ -850,7 +916,7 @@ pl:
full_handle: Twój pełny adres
full_handle_hint: Ten adres możesz podać znajomym, aby mogli skontaktować się z Tobą lub zacząć śledzić z innej instancji.
review_preferences_action: Zmień ustawienia
- review_preferences_step: Upewnij się, że zmieniłeś ustawienia, takie jak maile, które chciałbyś otrzymywać lub domyślne opcje prywatności. Jeżeli nie masz choroby lokomocyjnej, możesz włączyć automatyczne odtwarzanie animacji GIF.
+ review_preferences_step: Upewnij się, że zmieniłeś(-aś) ustawienia, takie jak maile, które chciałbyś otrzymywać lub domyślne opcje prywatności. Jeżeli nie masz choroby lokomocyjnej, możesz włączyć automatyczne odtwarzanie animacji GIF.
subject: Witaj w Mastodonie
tip_bridge_html: Jeżeli przybywasz z Twittera, możesz znaleźć znajomych na Mastodonie używając
aplikacji mostku. Działa to tylko, jeżeli oni również z niej korzystali!
tip_federated_timeline: Oś czasu federacji przedstawia całą sieć Mastodona. Wyświetla tylko wpisy osób, które śledzą użytkownicy Twojej instancji, więc nie jest kompletna.
diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml
index cb2b12abd..cc4dddb9c 100644
--- a/config/locales/pt-BR.yml
+++ b/config/locales/pt-BR.yml
@@ -5,13 +5,13 @@ pt-BR:
about_mastodon_html: Mastodon é uma rede social baseada em protocolos abertos e software gratuito e de código aberto. É descentralizada como e-mail.
about_this: Sobre
administered_by: 'Administrado por:'
+ api: API
+ apps: Apps
closed_registrations: Os cadastros estão atualmente fechados nesta instância. No entanto, você pode procurar uma instância diferente na qual possa criar uma conta e acessar a mesma rede por lá.
contact: Contato
contact_missing: Não definido
contact_unavailable: N/A
- description_headline: O que é %{domain}?
- domain_count_after: outras instâncias
- domain_count_before: Conectado a
+ documentation: Documentação
extended_description_html: |
Um bom lugar para regras
A descrição da instância ainda não foi feita.
@@ -28,25 +28,39 @@ pt-BR:
hosted_on: Mastodon hospedado em %{domain}
learn_more: Saiba mais
other_instances: Lista de instâncias
+ privacy_policy: Política de Privacidade
source_code: Código-fonte
- status_count_after: publicações
+ status_count_after:
+ one: status
+ other: status
status_count_before: Autores de
- user_count_after: usuários
+ terms: Termos de serviço
+ user_count_after:
+ one: usuário
+ other: usuários
user_count_before: Casa de
what_is_mastodon: O que é Mastodon?
accounts:
+ choices_html: 'Escolhas de %{name}:'
follow: Seguir
- followers: Seguidores
+ followers:
+ one: Seguidor
+ other: Seguidores
following: Seguindo
+ joined: Participa desde %{date}
media: Mídia
moved_html: "%{name} se mudou para %{new_profile_link}:"
network_hidden: Esta informação não está disponível
nothing_here: Não há nada aqui!
people_followed_by: Pessoas que %{name} segue
people_who_follow: Pessoas que seguem %{name}
- posts: Toots
+ pin_errors:
+ following: Você tem que estar seguindo a pessoa que você quer sugerir
+ posts:
+ one: Toot
+ other: Toots
+ posts_tab_heading: Toots
posts_with_replies: Toots e respostas
- remote_follow: Siga remotamente
reserved_username: Este usuário está reservado
roles:
admin: Administrador
@@ -180,6 +194,7 @@ pt-BR:
unsuspend_account: "%{name} desativou a suspensão de %{target}"
update_custom_emoji: "%{name} atualizou o emoji %{target}"
update_status: "%{name} atualizou o estado de %{target}"
+ deleted_status: "(status deletado)"
title: Auditar relatório
custom_emojis:
by_domain: Domínio
@@ -206,6 +221,27 @@ pt-BR:
update_failed_msg: Não foi possível atualizar esse emoji
updated_msg: Emoji atualizado com sucesso!
upload: Enviar
+ dashboard:
+ backlog: tarefas na fila
+ config: Configuração
+ feature_deletions: Remoção de contas
+ feature_invites: Convites
+ feature_registrations: Cadastros
+ feature_relay: Repetidor da federação
+ features: Funcionalidades
+ hidden_service: Federação com serviços onion
+ open_reports: Denúncias em aberto
+ recent_users: Usuários recentes
+ search: Pesquisa em texto
+ single_user_mode: Modo de usuário único
+ software: Software
+ space: Uso de espaço em disco
+ title: Painel de controle
+ total_users: usuários no total
+ trends: Tendências
+ week_interactions: interações essa semana
+ week_users_active: ativos essa semana
+ week_users_new: usuários essa semana
domain_blocks:
add_new: Adicionar novo
created_msg: Bloqueio de domínio está sendo processado
@@ -255,12 +291,21 @@ pt-BR:
search: Buscar
title: Instâncias conhecidas
invites:
+ deactivate_all: Desativar todos
filter:
all: Todos
available: Disponíveis
expired: Expirados
title: Filtro
title: Convites
+ relays:
+ add_new: Adicionar novo repetidor
+ description_html: Um
repetidor de federação é um servidor intermediário que troca um grande volume de toots públicos entre servidores que se inscrevem e publicam nele.
O repetidor pode ser usado para ajudar servidores pequenos e médios a descobrir conteúdo do fediverso, que normalmente precisariam que usuários locais manualmente seguissem outras pessoas em servidores remotos.
+ enable_hint: Uma vez habilitado, seu servidor vai se inscrever para receber todos os toots públicos desse repetidor; E vai começar a enviar todos os toots públicos desse servidor para o repetidor.
+ inbox_url: URL do repetidor
+ setup: Configurar uma conexão de repetidor
+ status: Status
+ title: Repetidores
report_notes:
created_msg: Nota de denúncia criada com sucesso!
destroyed_msg: Nota de denúncia excluída com sucesso!
@@ -310,6 +355,9 @@ pt-BR:
contact_information:
email: E-mail
username: Contate usuário
+ custom_css:
+ desc_html: Modificar o visual com CSS que é carregado em todas as páginas
+ title: CSS customizado
hero:
desc_html: Aparece na página inicial. Ao menos 600x100px é recomendado. Se não estiver definido, o thumbnail da instância é usado no lugar
title: Imagem de capa
@@ -339,11 +387,14 @@ pt-BR:
desc_html: Mostrar uma insígnia de Equipe na página de usuário
title: Mostrar insígnia de equipe
site_description:
- desc_html: Parágrafo introdutório na página inicial e em meta tags. Você pode usar tags HTML, em especial
<a>
e
<em>
.
+ desc_html: Parágrafo introdutório na página inicial. Descreva o que faz esse servidor especial, e qualquer outra coisa de importante. Você pode usar tags HTML, em especial
<a>
e
<em>
.
title: Descrição da instância
site_description_extended:
desc_html: Um ótimo lugar para seu código de conduta, regras, diretrizes e outras coisas para diferenciar a sua instância. Você pode usar tags HTML
title: Informação estendida customizada
+ site_short_description:
+ desc_html: Aparece na barra lateral e nas meta tags. Descreva o que é Mastodon e o que faz esse servidor especial em um único parágrafo. Se não for preenchido, é substituído pela descrição da instância.
+ title: Descrição curta da instância
site_terms:
desc_html: Você pode escrever a sua própria política de privacidade, termos de serviço, entre outras coisas. Você pode usar tags HTML
title: Termos de serviço customizados
@@ -365,6 +416,7 @@ pt-BR:
media:
title: Mídia
no_media: Não há mídia
+ no_status_selected: Nenhum status foi modificado porque nenhum estava selecionado
title: Postagens da conta
with_media: Com mídia
subscriptions:
@@ -374,6 +426,12 @@ pt-BR:
last_delivery: Última entrega
title: WebSub
topic: Tópico
+ suspensions:
+ bad_acct_msg: Os valores de confirmação não correspondem. Você está suspendendo a conta certa?
+ hint_html: 'Para confirmar a suspensão da conta, por favor digite %{value} no campo abaixo:'
+ proceed: Prosseguir
+ title: Suspender %{acct}
+ warning_html: 'Suspender essa conta vai remover
irreversivelmente dados dessa conta, o que inclui:'
title: Administração
admin_mailer:
new_report:
@@ -505,9 +563,12 @@ pt-BR:
true_privacy_html: Lembre-se de que
a verdadeira privacidade só pode ser alcançada através de encriptação ponto-a-ponto.
unlocked_warning_html: Qualquer pessoa pode te seguir e ver as suas postagens privadas. %{lock_link} para ser capaz de revisar e rejeitar seguidores.
unlocked_warning_title: A sua conta não está trancada
+ footer:
+ developers: Desenvolvedores
+ more: Mais…
+ resources: Recursos
generic:
changes_saved_msg: Mudanças salvas com sucesso!
- powered_by: graças a tecnologia de %{link}
save_changes: Salvar mudanças
validation_errors:
one: Algo não está certo! Por favor, reveja o erro abaixo
@@ -543,8 +604,6 @@ pt-BR:
expires_at: Expira em
uses: Usos
title: Convidar pessoas
- landing_strip_html: "
%{name} é um usuário no %{link_to_root_path}. Você pode segui-lo ou interagir com ele se você tiver uma conta em qualquer lugar no fediverso."
- landing_strip_signup_html: Se não, você pode
se cadastrar aqui.
lists:
errors:
limit: Você alcançou o número máximo de listas
@@ -616,11 +675,14 @@ pt-BR:
publishing: Publicação
web: Web
remote_follow:
- acct: Insira o seu usuário@domínio do qual você quer seguir
+ acct: Insira o seu usuário@domínio a partir do qual você deseja agir
missing_resource: Não foi possível encontrar a URL de direcionamento para a sua conta
no_account_html: Não tem uma conta? Você pode
cadastrar-se aqui
proceed: Prosseguir para seguir
prompt: 'Você irá seguir:'
+ remote_interaction:
+ proceed: Continue para interagir
+ prompt: 'Você quer interagir com este toot:'
remote_unfollow:
error: Erro
title: Título
@@ -704,6 +766,7 @@ pt-BR:
private: Toot não-público não pode ser fixado
reblog: Um compartilhamento não pode ser fixado
show_more: Mostrar mais
+ sign_in_to_participate: Entre para participar dessa conversa
title: '%{name}: "%{quote}"'
visibilities:
private: Apenas seguidores
@@ -713,7 +776,6 @@ pt-BR:
unlisted: Não listado
unlisted_long: Todos podem ver, porém não será postado nas timelines públicas
stream_entries:
- click_to_show: Clique para mostrar
pinned: Toot fixado
reblogged: compartilhou
sensitive_content: Conteúdo sensível
@@ -807,6 +869,7 @@ pt-BR:
time:
formats:
default: "%b %d, %Y, %H:%M"
+ month: "%B de %Y"
two_factor_authentication:
code_hint: Insira o código gerado pelo seu aplicativo auteticador para confirmar
description_html: Se você ativar a
autenticação em dois passos, o acesso à sua conta exigirá posse de seu celular, que irá gerar tokens para validação.
diff --git a/config/locales/pt.yml b/config/locales/pt.yml
index 3a6f2c993..eebeb498e 100644
--- a/config/locales/pt.yml
+++ b/config/locales/pt.yml
@@ -8,9 +8,6 @@ pt:
contact: Contacto
contact_missing: Não configurado
contact_unavailable: n.d.
- description_headline: O que é o %{domain}?
- domain_count_after: outras instâncias
- domain_count_before: Ligado a
extended_description_html: |
Um bom lugar para regras
A descrição estendida ainda não foi configurada.
@@ -44,7 +41,6 @@ pt:
people_who_follow: Pessoas que seguem %{name}
posts: Posts
posts_with_replies: Posts e Respostas
- remote_follow: Seguir remotamente
reserved_username: Este nome de utilizadores é reservado
roles:
admin: Administrador
@@ -430,7 +426,6 @@ pt:
unlocked_warning_title: A tua conta não está bloqueada
generic:
changes_saved_msg: Alterações guardadas!
- powered_by: fornecido por %{link}
save_changes: Guardar alterações
validation_errors:
one: Algo não está correcto. Por favor vê o erro abaixo
@@ -464,8 +459,6 @@ pt:
expires_at: Expira
uses: Usos
title: Convidar pessoas
- landing_strip_html: "
%{name} é um utilizador em %{link_to_root_path}. Podes segui-lo ou interagir com ele se tiveres uma conta em qualquer lugar no fediverso."
- landing_strip_signup_html: If you don't, you can
sign up here.
lists:
errors:
limit: Número máximo de listas alcançado
@@ -612,7 +605,6 @@ pt:
unlisted: Público, mas não mostre no timeline público
unlisted_long: Todos podem ver, porém não será postado nas timelines públicas
stream_entries:
- click_to_show: Clique pra mostrar
pinned: Toot fixado
reblogged: boosted
sensitive_content: Conteúdo sensível
diff --git a/config/locales/ro.yml b/config/locales/ro.yml
new file mode 100644
index 000000000..c38094158
--- /dev/null
+++ b/config/locales/ro.yml
@@ -0,0 +1,2 @@
+---
+ro: {}
diff --git a/config/locales/ru.yml b/config/locales/ru.yml
index 89aefc1cd..f1b26236a 100644
--- a/config/locales/ru.yml
+++ b/config/locales/ru.yml
@@ -5,13 +5,12 @@ ru:
about_mastodon_html: Mastodon - это
свободная социальная сеть с
открытым исходным кодом. Как
децентрализованная альтернатива коммерческим платформам, Mastodon предотвращает риск монополизации Вашего общения одной компанией. Выберите сервер, которому Вы доверяете — что бы Вы ни выбрали, Вы сможете общаться со всеми остальными. Любой может запустить свой собственный узел Mastodon и участвовать в
социальной сети совершенно бесшовно.
about_this: Об этом узле
administered_by: 'Администратор узла:'
- closed_registrations: В данный момент регистрация на этом узле закрыта.
+ api: API
+ apps: Мобильные приложения
+ closed_registrations: В данный момент регистрация на этом узле закрыта. Но вы можете найти другой узел, создать на нём учётную запись и получить доступ к той же сети оттуда.
contact: Связаться
contact_missing: Не установлено
contact_unavailable: Недоступен
- description_headline: Что такое %{domain}?
- domain_count_after: другими узлами
- domain_count_before: Связан с
extended_description_html: |
Хорошее место для правил
Расширенное описание еще не настроено.
@@ -28,25 +27,47 @@ ru:
hosted_on: Mastodon размещен на %{domain}
learn_more: Узнать больше
other_instances: Другие узлы
+ privacy_policy: Политика конфиденциальности
source_code: Исходный код
- status_count_after: статусов
+ status_count_after:
+ few: статуса
+ many: статусов
+ one: статус
+ other: статусов
status_count_before: Опубликовано
- user_count_after: пользователей
+ terms: Условия использования
+ user_count_after:
+ few: пользователя
+ many: пользователей
+ one: пользователь
+ other: пользователей
user_count_before: Здесь живет
what_is_mastodon: Что такое Mastodon?
accounts:
+ choices_html: "%{name} рекомендует:"
follow: Подписаться
- followers: Подписчики
+ followers:
+ few: подписчика
+ many: подписчиков
+ one: подписчик
+ other: подписчиков
following: Подписан(а)
- media: Медиаконтент
+ joined: 'Дата регистрации: %{date}'
+ media: Медиа
moved_html: "%{name} переехал(а) на %{new_profile_link}:"
network_hidden: Эта информация недоступна
nothing_here: Здесь ничего нет!
people_followed_by: Люди, на которых подписан(а) %{name}
people_who_follow: Подписчики %{name}
- posts: Посты
+ pin_errors:
+ following: Чтобы порекомендовать кого-то, надо сначала на них подписаться
+ posts:
+ few: статуса
+ many: статусов
+ one: статус
+ other: статусов
+ posts_tab_heading: Статусы
posts_with_replies: Посты с ответами
- remote_follow: Подписаться на удаленном узле
reserved_username: Имя пользователя зарезервировано
roles:
admin: Администратор
@@ -180,6 +201,7 @@ ru:
unsuspend_account: "%{name} разморозил(а) аккаунт %{target}"
update_custom_emoji: "%{name} обновил(а) эмодзи %{target}"
update_status: "%{name} изменил(а) статус пользователя %{target}"
+ deleted_status: "(удалённый статус)"
title: Журнал событий
custom_emojis:
by_domain: Домен
@@ -206,6 +228,27 @@ ru:
update_failed_msg: Невозможно обновить этот эмодзи
updated_msg: Эмодзи обновлён!
upload: Загрузить
+ dashboard:
+ backlog: задачи
+ config: Конфигурация
+ feature_deletions: Аккаунтов удалено
+ feature_invites: Пригласительные ссылки
+ feature_registrations: Регистрации
+ feature_relay: Ретрансляторов сети
+ features: Нововведения
+ hidden_service: Федерация со скрытыми сервисами
+ open_reports: открытых жалоб
+ recent_users: Недавние пользователи
+ search: Полнотекстовый поиск
+ single_user_mode: Однопользовательский режим
+ software: Программное обеспечение
+ space: Использовано места
+ title: Панель управления
+ total_users: всего пользователей
+ trends: Тренды
+ week_interactions: взаимодействий на этой неделе
+ week_users_active: активно на этой неделе
+ week_users_new: пользователей на этой неделе
domain_blocks:
add_new: Добавить новую
created_msg: Блокировка домена обрабатывается
@@ -257,12 +300,23 @@ ru:
search: Поиск
title: Известные узлы
invites:
+ deactivate_all: Удалить все
filter:
all: Все
available: Актуальные
expired: Истёкшие
title: Фильтр
title: Приглашения
+ relays:
+ add_new: Добавить ретранслятор
+ description_html: "
Федеративный ретранслятор – это промежуточный сервер, который передаёт большие объёмы публичных статусов между серверами, которые подписываются и публикуют туда.
Это может помочь небольшим и средним серверам находить записи со всей федерации, ведь в противном случае пользователям нужно будет вручную подписываться на людей с удалённых узлов."
+ enable_hint: Если включено, ваш сервер будет подписан на все публичные статусы с этого ретранслятора и начнёт туда отправлять публичные статусы со своего узла.
+ inbox_url: URL ретранслятора
+ pending: Ожидание подтверждения ретранслятора
+ save_and_enable: Сохранить и включить
+ setup: Настроте соединение с ретранслятором
+ status: Состояние
+ title: Ретрансляторы
report_notes:
created_msg: Примечание жалобы создано!
destroyed_msg: Примечание жалобы удалено!
@@ -282,8 +336,8 @@ ru:
mark_as_unresolved: Отметить как неразрешённую
notes:
create: Добавить заметку
- create_and_resolve: Разрешить с заметкой
- create_and_unresolve: Переоткрыть с заметкой
+ create_and_resolve: Разрешить с примечанием
+ create_and_unresolve: Переоткрыть с примечанием
delete: Удалить
placeholder: Опишите, какие действия были приняты, или любые другие подробности…
reopen: Переоткрыть жалобу
@@ -312,12 +366,18 @@ ru:
contact_information:
email: Введите публичный e-mail
username: Введите имя пользователя
+ custom_css:
+ desc_html: Измените внешний вид с CSS, загружаемым на каждой странице
+ title: Особый CSS
hero:
desc_html: Отображается на главной странице. Рекомендуется разрешение не менее 600х100px. Если не установлено, используется изображение узла
title: Баннер узла
peers_api_enabled:
desc_html: Домены, которые были замечены этим узлом среди всей федерации
title: Публикация списка обнаруженных узлов
+ preview_sensitive_media:
+ desc_html: Предпросмотр ссылок с остальных веб-сайтов будет показан даже если медиаконтент отмечен как чувствительный
+ title: Показывать чувствительный медиаконтент в предпросмотре OpenGraph
registrations:
closed_message:
desc_html: Отображается на титульной странице, когда закрыта регистрация
Можно использовать HTML-теги
@@ -327,7 +387,7 @@ ru:
title: Разрешить удаление аккаунтов
min_invite_role:
disabled: Никого
- title: Разрешает приглашения от
+ title: Разрешать приглашения от
open:
desc_html: Позволяет любому создавать аккаунт
title: Открыть регистрацию
@@ -342,7 +402,10 @@ ru:
title: Описание сайта
site_description_extended:
desc_html: Отображается на странице дополнительной информации
Можно использовать HTML-теги
- title: Расширенное описание сайта
+ title: Расширенное описание узла
+ site_short_description:
+ desc_html: Отображается в боковой панели и в тегах. Опишите, что такое Mastodon и что делает именно этот узел особенным. Если пусто, используется описание узла по умолчанию.
+ title: Короткое описание узла
site_terms:
desc_html: Вы можете добавить сюда собственную политику конфиденциальности, пользовательское соглашение и другие документы. Можно использовать теги HTML.
title: Условия использования
@@ -364,6 +427,7 @@ ru:
media:
title: Медиаконтент
no_media: Без медиаконтента
+ no_status_selected: Не выбран ни один статус, ничего не изменено
title: Статусы аккаунта
with_media: С медиаконтентом
subscriptions:
@@ -373,6 +437,12 @@ ru:
last_delivery: Последняя доставка
title: WebSub
topic: Тема
+ suspensions:
+ bad_acct_msg: Не удалось найти такое число подтверждения. Вы уверены, что замораживаете нужный аккаунт?
+ hint_html: 'Чтобы подтвердить заморозку аккаунта, пожалуйста, введите %{value} в поле ниже:'
+ proceed: Продолжить
+ title: Заморозить %{acct}
+ warning_html: 'Заморозка этого аккаунта приведёт к
необратимому удалению данных с этого аккаунта, включая:'
title: Администрирование
admin_mailer:
new_report:
@@ -476,6 +546,22 @@ ru:
follows: Подписки
mutes: Список глушения
storage: Ваш медиаконтент
+ filters:
+ contexts:
+ home: Домашняя лента
+ notifications: Уведомления
+ public: Публичные ленты
+ thread: Диалоги
+ edit:
+ title: Изменить фильтр
+ errors:
+ invalid_context: Некорректный контекст или ничего
+ invalid_irreversible: Необратимая фильтрация работает только с лентой уведомлений и домашней лентой
+ index:
+ delete: Удалить
+ title: Фильтры
+ new:
+ title: Добавить фильтр
followers:
domain: Домен
explanation_html: Если Вы хотите быть уверены в приватности Ваших статусов, Вы должны иметь четкое представление о том, кто на Вас подписан.
Ваши приватные статусы отправляются всем узлам, на которых у Вас есть подписчики. Рекомендуем удалить из подписчиков пользователей узлов, администрации или программному обеспечению которых Вы не доверяете.
@@ -490,9 +576,12 @@ ru:
true_privacy_html: Пожалуйста, заметьте, что
настоящая конфиденциальность может быть достигнута только при помощи end-to-end шифрования.
unlocked_warning_html: Кто угодно может подписаться на Вас и получить доступ к просмотру Ваших приватных статусов. %{lock_link}, чтобы получить возможность рассматривать и вручную подтверждать запросы о подписке.
unlocked_warning_title: Ваш аккаунт не закрыт для подписки
+ footer:
+ developers: Разработчикам
+ more: Ещё…
+ resources: Ссылки
generic:
changes_saved_msg: Изменения успешно сохранены!
- powered_by: работает на %{link}
save_changes: Сохранить изменения
validation_errors:
few: Что-то здесь не так! Пожалуйста, прочитайте о %{count} ошибках ниже
@@ -531,8 +620,6 @@ ru:
expires_at: Истекает
uses: Исп.
title: Пригласить людей
- landing_strip_html: "
%{name} - пользователь на %{link_to_root_path}. Вы можете подписаться на него/нее и общаться с ним/ней, если у Вас есть аккаунт на любом узле общей сети."
- landing_strip_signup_html: Если у Вас его нет, вы можете
зарегистрироваться здесь.
lists:
errors:
limit: Вы достигли максимального числа списков
@@ -608,10 +695,14 @@ ru:
publishing: Публикация
web: WWW
remote_follow:
- acct: Введите username@domain, откуда Вы хотите подписаться
+ acct: Введите свой username@domain для продолжения
missing_resource: Поиск требуемого перенаправления URL для Вашего аккаунта завершился неудачей
+ no_account_html: Нет учётной записи? Вы можете
зарегистрироваться здесь
proceed: Продолжить подписку
prompt: 'Вы хотите подписаться на:'
+ remote_interaction:
+ proceed: Продолжить
+ prompt: 'Вы собираетесь взаимодействовать со статусом:'
remote_unfollow:
error: Ошибка
title: Заголовок
@@ -692,6 +783,7 @@ ru:
many: 'содержались запрещённые хэштеги: %{tags}'
one: 'содержался запрещённый хэштег: %{tags}'
other: 'содержались запрещённые хэштеги: %{tags}'
+ language_detection: Определять язык автоматически
open_in_web: Открыть в WWW
over_character_limit: превышен лимит символов (%{max})
pin_errors:
@@ -700,6 +792,7 @@ ru:
private: Нельзя закрепить непубличный статус
reblog: Нельзя закрепить продвинутый статус
show_more: Подробнее
+ sign_in_to_participate: Войдите, чтобы принять участие в дискуссии
title: '%{name}: "%{quote}"'
visibilities:
private: Для подписчиков
@@ -709,8 +802,7 @@ ru:
unlisted: Скрывать из лент
unlisted_long: Показывать всем, но не отображать в публичных лентах
stream_entries:
- click_to_show: Показать
- pinned: Закреплённое сообщение
+ pinned: Закреплённый статус
reblogged: продвинул(а)
sensitive_content: Чувствительный контент
terms:
diff --git a/config/locales/simple_form.ar.yml b/config/locales/simple_form.ar.yml
index 5c0c0a57c..3ee4a92a4 100644
--- a/config/locales/simple_form.ar.yml
+++ b/config/locales/simple_form.ar.yml
@@ -4,21 +4,19 @@ ar:
hints:
defaults:
autofollow: سوف يتابعك تلقائيًا الأشخاص الذين يقومون بالتسجيل من خلال الدعوة
- avatar: ملف PNG أو GIF أو JPG. حجمه على أقصى تصدير 2MB. سيتم تصغيره إلى 400x400px
+ avatar: ملف PNG أو GIF أو JPG. حجمه على أقصى تصدير %{size}. سيتم تصغيره إلى %{dimensions}px
bot: يُعلِم أنّ هذا الحساب لا يمثل شخصًا
context: واحد أو أكثر من السياقات التي يجب أن ينطبق عليها عامل التصفية
digest: تُرسَل إليك بعد مُضيّ مدة مِن خمول نشاطك و فقط إذا ما تلقيت رسائل شخصية مباشِرة أثناء فترة غيابك مِن الشبكة
- display_name:
- one:
1 حرف باق
- other:
%{count} حرف باق
+ display_name:
%{count} حرف باق
fields: يُمكنك عرض 4 عناصر على شكل جدول في ملفك الشخصي
- header: ملف PNG أو GIF أو JPG. حجمه على أقصى تصدير 2MB. سيتم تصغيره إلى 700x335px
+ header: ملف PNG أو GIF أو JPG. حجمه على أقصى تصدير %{size}. سيتم تصغيره إلى %{dimensions}px
+ inbox_url: نسخ العنوان الذي تريد استخدامه مِن صفحة الإستقبال للمُرحَّل
irreversible: التبويقات التي تم تصفيتها ستختفي لا محالة حتى و إن تمت إزالة عامِل التصفية لاحقًا
locale: لغة واجهة المستخدم و الرسائل الإلكترونية و الإشعارات
locked: يتطلب منك الموافقة يدويا على طلبات المتابعة
- note:
- one:
1 حرف باق
- other:
%{count} حرف باق
+ note:
%{count} حرف باق
+ phrase: سوف يتم العثور عليه مهما كان نوع النص أو حتى و إن كان داخل الويب فيه تحذير عن المحتوى
scopes: ما هي المجالات المسموح بها في التطبيق ؟ إن قمت باختيار أعلى المجالات فيمكنك الإستغناء عن الخَيار اليدوي.
setting_default_language: يمكن الكشف التلقائي للّغة اللتي استخدمتها في تحرير تبويقاتك ، غيرَ أنّ العملية ليست دائما دقيقة
setting_hide_network: الحسابات التي تُتابعها و التي تُتابِعك على حد سواء لن تُعرَض على صفحتك الشخصية
@@ -50,6 +48,7 @@ ar:
expires_in: تنتهي مدة صلاحيته بعد
fields: واصفات بيانات الملف الشخصي
header: الرأسية
+ inbox_url: عنوان رابط صندوق المُرَحِّل
irreversible: إسقاط بدلا من إخفائها
locale: لغة الواجهة
locked: تجميد الحساب
@@ -76,6 +75,7 @@ ar:
type: صيغة الإستيراد
username: إسم المستخدم
username_or_email: إسم المستخدم أو كلمة السر
+ whole_word: الكلمة كاملة
interactions:
must_be_follower: حظر الإخطارات القادمة من حسابات لا تتبعك
must_be_following: حظر الإخطارات القادمة من الحسابات التي لا تتابعها
diff --git a/config/locales/simple_form.ast.yml b/config/locales/simple_form.ast.yml
new file mode 100644
index 000000000..0b77eecf2
--- /dev/null
+++ b/config/locales/simple_form.ast.yml
@@ -0,0 +1,2 @@
+---
+ast:
diff --git a/config/locales/simple_form.bg.yml b/config/locales/simple_form.bg.yml
index 720a8391d..938dacc95 100644
--- a/config/locales/simple_form.bg.yml
+++ b/config/locales/simple_form.bg.yml
@@ -3,9 +3,9 @@ bg:
simple_form:
hints:
defaults:
- avatar: PNG, GIF или JPG. До 2MB. Ще бъде смалена до 400x400 пиксела
+ avatar: PNG, GIF или JPG. До %{size}. Ще бъде смалена до %{dimensions} пиксела
display_name: До 30 символа
- header: PNG, GIF или JPG. До 2MB. Ще бъде смалена до 700x335 пиксела
+ header: PNG, GIF или JPG. До %{size}. Ще бъде смалена до %{dimensions} пиксела
locked: Изисква ръчно одобрение на последователите. По подразбиране, публикациите са достъпни само до последователи.
note: До 160 символа
imports:
diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml
index 482ddd7be..d45b84971 100644
--- a/config/locales/simple_form.ca.yml
+++ b/config/locales/simple_form.ca.yml
@@ -4,7 +4,7 @@ ca:
hints:
defaults:
autofollow: Les persones que es registrin a través de la invitació et seguiran automàticament
- avatar: PNG, GIF o JPG. Màxim 2MB. S'escalarà a 400x400px
+ avatar: PNG, GIF o JPG. Màxim %{size}. S'escalarà a %{dimensions}px
bot: Aquest compte realitza principalment accions automatitzades i pot no estar controlat per cap persona
context: Un o diversos contextos on s'ha d'aplicar el filtre
digest: Només s'envia després d'un llarg període d'inactivitat amb un resum de les mencions que has rebut en la teva absència
@@ -12,7 +12,7 @@ ca:
one:
1 càracter restant
other:
%{count} càracters restans
fields: Pots tenir fins a 4 elements que es mostren com a taula al teu perfil
- header: PNG, GIF o JPG. Màxim 2MB. S'escalarà a 700x335px
+ header: PNG, GIF o JPG. Màxim %{size}. S'escalarà a %{dimensions}px
irreversible: Els nodes filtrats desapareixeran de manera irreversible, fins i tot si el filtre es retira més tard
locale: El llenguatge de l’interfície d’usuari, els correus i les notificacions push
locked: Requereix que aprovis manualment els seguidors
diff --git a/config/locales/simple_form.co.yml b/config/locales/simple_form.co.yml
index ac8b89a7b..ad4258dab 100644
--- a/config/locales/simple_form.co.yml
+++ b/config/locales/simple_form.co.yml
@@ -3,35 +3,49 @@ co:
simple_form:
hints:
defaults:
- avatar: Furmatu PNG, GIF o JPG. 2Mo o menu. Sarà ridottu à 400x400px
+ autofollow: Quelli·e chì s'arregistranu cù l'invitazione saranu autumaticamente abbunati·e à voi
+ avatar: Furmatu PNG, GIF o JPG. 2Mo o menu. Sarà ridottu à %{dimensions}px
bot: Stu contu hè autumatizatu è ùn hè forse micca survegliatu
+ context: Cuntestu·i induve u filtru deve esse applicatu
digest: Solu mandatu dopu à una longa perioda d’inattività, è solu s’elli ci sò novi missaghji diretti
display_name:
one: Ci ferma
1 caratteru
other: Ci fermanu
%{count} caratteri
fields: Pudete avè fin’à 4 elementi mustrati cum’un tavulone nant’à u vostru prufile
- header: Furmatu PNG, GIF o JPG. 2Mo o menu. Sarà ridottu à 700x335px
+ header: Furmatu PNG, GIF o JPG. 2Mo o menu. Sarà ridottu à %{dimensions}px
+ inbox_url: Cupiate l'URL di a pagina d'accolta di u ripetitore chì vulete utilizà
+ irreversible: I statuti filtrati saranu sguassati di manera irreversibile, ancu s'ellu hè toltu u filtru
+ locale: A lingua di l'interfaccia utilizatore, di l'e-mail è di e nutificazione push
locked: Duvarete appruvà e dumande d’abbunamentu
note:
one: Ci ferma
1 caratteru
other: Ci fermanu
%{count} caratteri
+ phrase: Sarà trovu senza primura di e maiuscule o di l'avertimenti
+ scopes: L'API à quelle l'applicazione averà accessu. S'è voi selezziunate un parametru d'altu livellu, un c'hè micca bisognu di selezziunà quell'individuali.
+ setting_default_language: A lingua di i vostri statuti pò esse induvinata autumaticamente, mà ùn marchja micca sempre bè
setting_hide_network: I vostri abbunati è abbunamenti ùn saranu micca mustrati nant’à u vostru prufile
setting_noindex: Tocca à u vostru prufile pubblicu è i vostri statuti
setting_theme: Tocca à l’apparenza di Mastodon quandu site cunnettatu·a da qualch’apparechju.
+ whole_word: Quandu a parolla o a frasa sana hè alfanumerica, sarà applicata solu s'ella currisponde à a parolla sana
imports:
data: Un fugliale CSV da un’altr’istanza di Mastodon
sessions:
otp: 'Entrate u codice d’identificazione à dui fattori nant’à u vostru telefuninu, o unu di i vostri codici di ricuperazione:'
+ user:
+ chosen_languages: Soli i statuti scritti in e lingue selezziunate saranu mustrati indè e linee pubbliche
labels:
account:
fields:
name: Label
value: Cuntinutu
defaults:
+ autofollow: Invità à siguità u vostru contu
avatar: Ritrattu di prufile
bot: Stu contu hè un bot
+ chosen_languages: Filtrà lingue
confirm_new_password: Cunfirmà a nova chjave d’accessu
confirm_password: Cunfirmà a chjave d’accessu
+ context: Cuntesti di u filtru
current_password: Chjave d’accessu attuale
data: Dati
display_name: Nome pubblicu
@@ -39,15 +53,19 @@ co:
expires_in: Spira dopu à
fields: Metadata di u prufile
header: Ritrattu di cuprendula
- locale: Lingua
+ inbox_url: URL di l'inbox di u ripetitore
+ irreversible: Sguassà invece di piattà
+ locale: Lingua di l'interfaccia
locked: Privatizà u contu
max_uses: Numeru massimale d’utilizazione
new_password: Nova chjave d’accessu
note: Descrizzione
otp_attempt: Codice d’identificazione à dui fattori
password: Chjave d’accessu
+ phrase: Parolla-chjave o frasa
setting_auto_play_gif: Lettura autumatica di i GIF animati
setting_boost_modal: Mustrà una cunfirmazione per sparte un statutu
+ setting_default_language: Lingua di pubblicazione
setting_default_privacy: Cunfidenzialità di i statuti
setting_default_sensitive: Sempre cunsiderà media cum’è sensibili
setting_delete_modal: Mustrà une cunfirmazione per toglie un statutu
@@ -62,6 +80,7 @@ co:
type: Tippu d’impurtazione
username: Cugnome
username_or_email: Cugnome o Email
+ whole_word: Parolla sana
interactions:
must_be_follower: Piattà e nutificazione di quelli·e ch’ùn vi seguitanu
must_be_following: Piattà e nutificazione di quelli·e ch’ùn seguitate
@@ -73,6 +92,7 @@ co:
follow_request: Mandà un’e-mail quandu qualch’unu vole seguitami
mention: Mandà un’e-mail quandu qualch’unu mi mintuva
reblog: Mandà un’e-mail quandu qualch’unu sparte i mo statuti
+ report: Mandà un'e-mail quandu c'hè un novu signalamentu
'no': Nò
required:
mark: "*"
diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml
index e8e7628f3..6625e2638 100644
--- a/config/locales/simple_form.cs.yml
+++ b/config/locales/simple_form.cs.yml
@@ -3,8 +3,98 @@ cs:
simple_form:
hints:
defaults:
- avatar: PNG, GIF či JPG. Maximálně 2 MB. Bude zmenšena na 400x400px
- bot: Tento účet provádí hlavně automatizované akce a nemusí být spravován.
+ autofollow: Lidé, kteří se zaregistrují přes pozvání, vás budou automaticky sledovat
+ avatar: PNG, GIF či JPG. Maximálně %{size}. Bude zmenšena na %{dimensions} px
+ bot: Tento účet provádí hlavně automatizované akce a nemusí být spravován
+ context: Jedno či více kontextů, ve kterých má být filtr uplatněn
+ digest: Odesíláno pouze po dlouhé době nečinnosti a pouze, pokud jste při své nepřítomnosti obdržel/a osobní zprávy
display_name:
one: Zbývá
1 znak
- other: Zbývá
%{count} znaků
+ other: Zbývá vám
%{count} znaků
+ fields: Na profilu můžete mít až 4 položky zobrazené jako tabulka
+ header: PNG, GIF či JPG. Maximálně %{size}. Bude zmenšena na %{dimensions} px
+ inbox_url: Zkopírujte URL z hlavní stránky mostu, který chcete použít
+ irreversible: Filtrované tooty nenávratně zmizí, i pokud bude filtr později odstraněn
+ locale: Jazyk uživatelského rozhraní, e-mailů a oznámení push
+ locked: Vyžaduje manuální schvalování sledovatelů
+ note:
+ one: Zbývá
1znak
+ other: Zbývá
%{count} znaků
+ phrase: Shoda bude nalezena bez ohledu na velikost písmen v těle tootu či varování o obsahu
+ scopes: Které API bude aplikace povolena používat. Pokud vyberete rozsah nejvyššího stupně, nebudete je muset vybírat po jednom.
+ setting_default_language: Jazyk vašich tootů může být detekován automaticky, není to však vždy přesné
+ setting_hide_network: Koho sledujete a kdo sleduje vás nebude zobrazeno na vašem profilu
+ setting_noindex: Ovlivňuje váš veřejný profil a stránky příspěvků
+ setting_theme: Ovlivňuje jak Mastodon vypadá, jste-li přihlášen na libovolném zařízení.
+ whole_word: Je-li klíčové slovo či fráze pouze alfanumerická, bude aplikována pouze, pokud se shoduje s celým slovem
+ imports:
+ data: Soubor CSV exportován z jiné instance Mastodon
+ sessions:
+ otp: 'Napište dvoufaktorový kód vygenerovaný vaší mobilní aplikací, nebo použijte jeden z vašich záložních kódů:'
+ user:
+ chosen_languages: Je-li tohle zaškrtnuto, budou ve veřejných časových osách zobrazeny pouze tooty ve zvolených jazycích
+ labels:
+ account:
+ fields:
+ name: Označení
+ value: Obsah
+ defaults:
+ autofollow: Pozvěte ke sledování vašeho účtu
+ avatar: Avatar
+ bot: Tohle je účet robota
+ chosen_languages: Filtrovat jazyky
+ confirm_new_password: Potvrďte nové heslo
+ confirm_password: Potvrdit heslo
+ context: Kontexty filtrů
+ current_password: Současné heslo
+ data: Data
+ display_name: Zobrazované jméno
+ email: E-mailová adresa
+ expires_in: Expirovat po
+ fields: Metadata profilu
+ header: Hlavičkový obrázek
+ inbox_url: URL schránky mostu
+ irreversible: Zahodit místo skrytí
+ locale: Jazyk rozhraní
+ locked: Zamknout účet
+ max_uses: Maximální počet použití
+ new_password: Nové heslo
+ note: O vás
+ otp_attempt: Dvoufaktorový kód
+ password: Heslo
+ phrase: Klíčové slovo či fráze
+ setting_auto_play_gif: Automaticky přehrávat animace GIF
+ setting_boost_modal: Zobrazovat před boostnutím potvrzovací okno
+ setting_default_language: Jazyk příspěvků
+ setting_default_privacy: Soukromí příspěvků
+ setting_default_sensitive: Vždy označovat média jako citlivá
+ setting_delete_modal: Zobrazovat před smazáním tootu potvrzovací okno
+ setting_display_sensitive_media: Vždy zobrazovat média označená jako citlivá
+ setting_hide_network: Skrýt svou síť
+ setting_noindex: Neindexovat svůj profil vyhledávači
+ setting_reduce_motion: Redukovat pohyb v animacích
+ setting_system_font_ui: Použít výchozí písmo systému
+ setting_theme: Motiv stránky
+ setting_unfollow_modal: Zobrazovat před zrušením sledování potvrzovací okno
+ severity: Přísnost
+ type: Typ importu
+ username: Uživatelské jméno
+ username_or_email: Uživatelské jméno nebo e-mail
+ whole_word: Celé slovo
+ interactions:
+ must_be_follower: Blokovat oznámení od lidí, kteří vás nesledují
+ must_be_following: Blokovat oznámení od lidí, které nesledujete
+ must_be_following_dm: Blokovat přímé zprávy od lidí, které nesledujete
+ notification_emails:
+ digest: Posílat e-maily s přehledem
+ favourite: Posílat e-maily, když si někdo oblíbí váš příspěvek
+ follow: Posílat e-maily, když vás někdo začne sledovat
+ follow_request: Posílat e-maily, když vás někdo požádá o sledování
+ mention: Posílat e-maily, když vás někdo zmíní
+ reblog: Posílat e-maily, když někdo boostne váš příspěvek
+ report: Posílat e-maily, je-li odesláno nové nahlášení
+ 'no': Ne
+ required:
+ mark: "*"
+ text: požadováno
+ 'yes': Ano
diff --git a/config/locales/simple_form.cy.yml b/config/locales/simple_form.cy.yml
new file mode 100644
index 000000000..4b1721b77
--- /dev/null
+++ b/config/locales/simple_form.cy.yml
@@ -0,0 +1,11 @@
+---
+cy:
+ simple_form:
+ labels:
+ defaults:
+ confirm_password: Cadarnhau cyfrinair
+ email: Cyfeiriad e-bost
+ header: Pennyn
+ new_password: Cyfrinair newydd
+ password: Cyfrinair
+ username: Enw defnyddiwr
diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml
index 07862e8a8..a5697220e 100644
--- a/config/locales/simple_form.da.yml
+++ b/config/locales/simple_form.da.yml
@@ -4,7 +4,7 @@ da:
hints:
defaults:
autofollow: Folk der har oprettet sig gennem invitationen vil automatisk følge dig
- avatar: PNG, GIF eller JPG. Højest 2MB. Vil blive skaleret ned til 400x400px
+ avatar: PNG, GIF eller JPG. Højest %{size}. Vil blive skaleret ned til %{dimensions}px
bot: Denne konto udfører hovedsageligt automatiserede handlinger og bliver muligvis ikke overvåget
context: En eller flere sammenhænge hvor filteret skal være gældende
digest: Sendes kun efter en lang periode med inaktivitet og kun hvis du har modtaget nogle personlige beskeder mens du er væk
@@ -12,25 +12,27 @@ da:
one:
1 tegn tilbage
other:
%{count}tegn tilbage
fields: Du kan have op til 4 ting vist som en tabel på din profil
- header: PNG, GIF eller JPG. Højest 2MB. Vil blive skaleret ned til 700x335px
- irreversible: Filtrerede toots vil forsvinde fulstændigt, selv hvis filteret senere skulle blive fjernet
+ header: PNG, GIF eller JPG. Højest %{size}. Vil blive skaleret ned til %{dimensions}px
+ inbox_url: Kopiere linket fra forsiden af den relay som du ønsker at bruge
+ irreversible: Filtrerede trut vil forsvinde fulstændigt, selv hvis filteret senere skulle blive fjernet
locale: Sproget på interfacet, emails og push beskeder
locked: Kræver, at du godkender følgere manuelt
note:
one:
1 tegn tilbage
other:
%{count} tegn tilbage
- phrase: Vil blive parret uanset om der er store eller små bogstaver i teksten eller om der er en advarsel om en toot
+ phrase: Vil blive parret uanset om der er store eller små bogstaver i teksten eller om der er en advarsel om et trut
scopes: Hvilke APIs applikationen vil få adgang til. Hvis du vælger et højtlevel omfang, behøver du ikke vælge enkeltstående.
- setting_default_language: Sproget for dine toots kan blive fundet automatisk, men det er ikke altid præcist
+ setting_default_language: Sproget for dine trut kan blive fundet automatisk, men det er ikke altid præcist
setting_hide_network: Hvem du følger og hvem der følger dig vil ikke blive vist på din profil
setting_noindex: Påvirker din offentlige profil og status sider
- setting_theme: Påvirker hvordan Mastodon ser ud nåt du er logget ind via en hvilken som helst enhed.
+ setting_theme: Påvirker hvordan Mastodon ser ud når du er logget ind via en hvilken som helst enhed.
+ whole_word: Når nøgle ordet eller udtrykket kun er alfanumerisk, vil det kun blive brugt hvis det passer hele ordet
imports:
data: CSV fil eksporteret fra en anden Mastodon instans
sessions:
- otp: 'Indtast to-faktor koden der generes af appen på din fon eller brug en af din genoprettelses koder:'
+ otp: 'Indtast to-faktor koden der generes af appen af appen på din telefon eller brug en af din genoprettelses koder:'
user:
- chosen_languages: Når markeret, vil kun toots i de valgte sprog blive vist på offentlige tidslinjer
+ chosen_languages: Når markeret, vil kun trut i de valgte sprog blive vist på offentlige tidslinjer
labels:
account:
fields:
@@ -39,33 +41,34 @@ da:
defaults:
autofollow: Inviter til at følge din konto
avatar: Profilbillede
- bot: Dette er en bot konto
+ bot: Dette er en robot konto
chosen_languages: Filtrer sprog
- confirm_new_password: Bekræft dit nye kodeord
- confirm_password: Bekræft kodeord
+ confirm_new_password: Bekræft din nye adgangskode
+ confirm_password: Bekræft adgangskode
context: Filtrer sammenhænge
- current_password: Nuværende kodeord
+ current_password: Nuværende adgangskode
data: Data
display_name: Visningsnavn
email: E-mail adresse
expires_in: Udløber efter
fields: Profil metadata
header: Overskrift
+ inbox_url: Link til relay indbakken
irreversible: Ignorer istedet for at skjule
locale: Sprog på interface
locked: Lås konto
max_uses: Højeste antal benyttelser
- new_password: Nyt kodeord
+ new_password: Ny adgangskode
note: Biografi
otp_attempt: To-faktor kode
- password: Kodeord
+ password: Adgangskode
phrase: Nøgleord eller sætning
setting_auto_play_gif: Afspil automatisk animerede GIFs
setting_boost_modal: Vis bekræftelses dialog før du fremhæver
setting_default_language: Sprog for opslag
setting_default_privacy: Privatliv
setting_default_sensitive: Marker altid multimedia som værende følsomt
- setting_delete_modal: Vis bekræftelses dialog før du sletter et toot
+ setting_delete_modal: Vis bekræftelses dialog før du sletter et trut
setting_display_sensitive_media: Vis altid multimedier markeret som værende følsomt
setting_hide_network: Skjul dit netværk
setting_noindex: Frameld dig søgemaskiners indeksering
@@ -77,6 +80,7 @@ da:
type: Importtype
username: Brugernavn
username_or_email: Brugernavn eller Email
+ whole_word: Helt ord
interactions:
must_be_follower: Bloker notifikationer fra folk der ikke følger dig
must_be_following: Bloker notifikationer fra folk du ikke følger
diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml
index fb8d9e7c7..38e276d52 100644
--- a/config/locales/simple_form.de.yml
+++ b/config/locales/simple_form.de.yml
@@ -4,7 +4,7 @@ de:
hints:
defaults:
autofollow: Leute die sich über deine Einladung registrieren werden dir automatisch folgen
- avatar: PNG, GIF oder JPG. Maximal 2 MB. Wird auf 400×400 px herunterskaliert
+ avatar: PNG, GIF oder JPG. Maximal %{size}. Wird auf 400×400 px herunterskaliert
bot: Dieses Konto führt lediglich automatisierte Aktionen durch und wird möglicherweise nicht überwacht
context: Ein oder mehrere Aspekte, wo der Filter greifen soll
digest: Wenn du lange Zeit inaktiv bist, wird dir eine Zusammenfassung von Erwähnungen in deiner Abwesenheit zugeschickt
@@ -12,7 +12,8 @@ de:
one:
1 Zeichen verbleibt
other:
%{count} Zeichen verbleiben
fields: Du kannst bis zu 4 Elemente als Tabelle dargestellt auf deinem Profil anzeigen lassen
- header: PNG, GIF oder JPG. Maximal 2 MB. Wird auf 700×335 px herunterskaliert
+ header: PNG, GIF oder JPG. Maximal %{size}. Wird auf 700×335 px herunterskaliert
+ inbox_url: Kopiere die URL von der Startseite des gewünschten Relays
irreversible: Gefilterte Beiträge werden unwiderruflich gefiltert, selbst wenn der Filter später entfernt wurde
locale: Die Sprache der Oberfläche, E-Mails und Push-Benachrichtigungen
locked: Wer dir folgen möchte, muss um deine Erlaubnis bitten
@@ -25,6 +26,7 @@ de:
setting_hide_network: Wem du folgst und wer dir folgt wird in deinem Profil nicht angezeigt
setting_noindex: Betrifft dein öffentliches Profil und deine Beiträge
setting_theme: Wirkt sich darauf aus, wie Mastodon aussieht, egal auf welchem Gerät du eingeloggt bist.
+ whole_word: Wenn das Schlüsselwort oder -phrase nur Buchstaben und Zahlen enthält, wird es nur angewendet werden, wenn es dem ganzen Wort entspricht
imports:
data: CSV-Datei, die aus einer anderen Mastodon-Instanz exportiert wurde
sessions:
@@ -39,7 +41,7 @@ de:
defaults:
autofollow: Einladen, um deinen Account zu folgen
avatar: Profilbild
- bot: Dies ist ein bot Benutzer
+ bot: Dieser Benutzer ist ein Bot
chosen_languages: Sprachen filtern
confirm_new_password: Neues Passwort bestätigen
confirm_password: Passwort bestätigen
@@ -48,9 +50,10 @@ de:
data: Daten
display_name: Anzeigename
email: E-Mail-Adresse
- expires_in: Gültig bis
+ expires_in: Läuft ab
fields: Profil-Metadaten
header: Kopfbild
+ inbox_url: Inbox-URL des Relays
irreversible: Fallen lassen anstatt es zu verstecken
locale: Sprache der Benutzeroberfläche
locked: Gesperrtes Profil
@@ -77,6 +80,7 @@ de:
type: Importtyp
username: Profilname
username_or_email: Profilname oder Email
+ whole_word: Ganzes Wort
interactions:
must_be_follower: Benachrichtigungen von Nicht-Folgenden blockieren
must_be_following: Benachrichtigungen von Profilen blockieren, denen ich nicht folge
diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml
index 00fba5d27..95869c786 100644
--- a/config/locales/simple_form.el.yml
+++ b/config/locales/simple_form.el.yml
@@ -4,7 +4,7 @@ el:
hints:
defaults:
autofollow: Όσοι εγγραφούν μέσω της πρόσκλησης θα σε ακολουθούν αυτόματα
- avatar: PNG, GIF ή JPG. Έως 2MB. Θα μειωθεί σε διάσταση 400x400px
+ avatar: PNG, GIF ή JPG. Έως %{size}. Θα περιοριστεί σε διάσταση %{dimensions}px
bot: Ο λογαριασμός αυτός εκτελεί κυρίως αυτοματοποιημένες ενέργειες και ίσως να μην παρακολουθείται
context: Ένα ή περισσότερα πλαίσια στα οποία μπορεί να εφαρμόζεται αυτό το φίλτρο
digest: Αποστέλλεται μόνο μετά από μακρά περίοδο αδράνειας και μόνο αν έχεις λάβει προσωπικά μηνύματα κατά την απουσία σου
@@ -12,7 +12,8 @@ el:
one: απομένει
1 χαρακτήρας
other: απομένουν
%{count} χαρακτήρες
fields: Μπορείς να έχεις έως 4 σημειώσεις σε μορφή πίνακα στο προφίλ σου
- header: PNG, GIF ή JPG. Έως 2MB. Θα μειωθεί σε διάσταση 700x335px
+ header: PNG, GIF ή JPG. Έως %{size}. Θα περιοριστεί σε διάσταση %{dimensions}px
+ inbox_url: Αντέγραψε το URL της αρχικής σελίδας του ανταποκριτή (relay) που θέλεις να χρησιμοποιήσεις
irreversible: Τα φιλτραρισμένα τουτ θα εξαφανιστούν αμετάκλητα, ακόμα και αν το φίλτρο αργότερα αφαιρεθεί
locale: Η γλώσσα του περιβάλλοντος χρήσης, των email και των ειδοποιήσεων ώθησης
locked: Απαιτεί να εγκρίνεις χειροκίνητα τους ακόλουθούς σου
@@ -22,9 +23,10 @@ el:
phrase: Θα ταιριάζει ανεξαρτήτως πεζών/κεφαλαίων ή προειδοποίησης περιεχομένου του τουτ
scopes: Ποια API θα επιτρέπεται στην εφαρμογή να χρησιμοποιήσεις. Αν επιλέξεις κάποιο υψηλό εύρος εφαρμογής, δε χρειάζεται να επιλέξεις και εξειδικευμένα.
setting_default_language: Η γλώσσα των τουτ σου μπορεί να ανιχνευτεί αυτόματα αλλά δεν είναι πάντα ακριβές
- setting_hide_network: Το ποιους ακολουθείς και το ποιοι σε ακολουθούν δε θα φαίνεται στο προφίλ σου
+ setting_hide_network: Δε θα εμφανίζεται στο προφίλ σου ποιους ακολουθείς και ποιοι σε ακολουθούν
setting_noindex: Επηρεάζει το δημόσιο προφίλ και τις δημοσιεύσεις σου
setting_theme: Επηρεάζει την εμφάνιση του Mastodon όταν συνδέεται από οποιαδήποτε συσκευή.
+ whole_word: Όταν η λέξη ή η φράση κλειδί είναι μόνο αλφαριθμητική, θα εφαρμοστεί μόνο αν ταιριάζει με ολόκληρη τη λέξη
imports:
data: Αρχείο CSV που έχει εξαχθεί από διαφορετικό κόμβο Mastodon
sessions:
@@ -51,6 +53,7 @@ el:
expires_in: Λήξη μετά από
fields: Μετεδεδομένα προφίλ
header: Επικεφαλίδα
+ inbox_url: Το URL του inbox του ανταποκριτή (relay)
irreversible: Απόρριψη αντί για κρύψιμο
locale: Γλώσσα περιβάλλοντος
locked: Κλείδωμα λογαριασμού
@@ -77,6 +80,7 @@ el:
type: Τύπος εισαγωγής
username: Όνομα χρηστη
username_or_email: Όνομα ή διεύθυνση email χρήστη
+ whole_word: Ολόκληρη λέξη
interactions:
must_be_follower: Μπλόκαρε τις ειδοποιήσεις από όσους δεν ακολουθείς
must_be_following: Μπλόκαρε τις ειδοποιήσεις που προέρχονται από άτομα που δεν τα ακολουθείς
@@ -88,6 +92,7 @@ el:
follow_request: Στέλνε email όταν κάποιος ζητάει να σε ακολουθήσει
mention: Στέλνε email όταν κάποιος σε αναφέρει
reblog: Στέλνε email όταν κάποιος προωθεί τη δημοσίευση σου
+ report: Αποστολή email όταν υποβάλλεται νέα καταγγελία
'no': Όχι
required:
mark: "*"
diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml
index 49d94bcde..2e4cb1eff 100644
--- a/config/locales/simple_form.en.yml
+++ b/config/locales/simple_form.en.yml
@@ -4,7 +4,7 @@ en:
hints:
defaults:
autofollow: People who sign up through the invite will automatically follow you
- avatar: PNG, GIF or JPG. At most 2MB. Will be downscaled to 400x400px
+ avatar: PNG, GIF or JPG. At most %{size}. Will be downscaled to %{dimensions}px
bot: This account mainly performs automated actions and might not be monitored
context: One or multiple contexts where the filter should apply
digest: Only sent after a long period of inactivity and only if you have received any personal messages in your absence
@@ -12,7 +12,8 @@ en:
one:
1 character left
other:
%{count} characters left
fields: You can have up to 4 items displayed as a table on your profile
- header: PNG, GIF or JPG. At most 2MB. Will be downscaled to 700x335px
+ header: PNG, GIF or JPG. At most %{size}. Will be downscaled to %{dimensions}px
+ inbox_url: Copy the URL from the frontpage of the relay you want to use
irreversible: Filtered toots will disappear irreversibly, even if filter is later removed
locale: The language of the user interface, e-mails and push notifications
locked: Requires you to manually approve followers
@@ -25,6 +26,7 @@ en:
setting_hide_network: Who you follow and who follows you will not be shown on your profile
setting_noindex: Affects your public profile and status pages
setting_theme: Affects how Mastodon looks when you're logged in from any device.
+ whole_word: When the keyword or phrase is alphanumeric only, it will only be applied if it matches the whole word
imports:
data: CSV file exported from another Mastodon instance
sessions:
@@ -51,6 +53,7 @@ en:
expires_in: Expire after
fields: Profile metadata
header: Header
+ inbox_url: URL of the relay inbox
irreversible: Drop instead of hide
locale: Interface language
locked: Lock account
@@ -77,6 +80,7 @@ en:
type: Import type
username: Username
username_or_email: Username or Email
+ whole_word: Whole word
interactions:
must_be_follower: Block notifications from non-followers
must_be_following: Block notifications from people you don't follow
@@ -88,6 +92,7 @@ en:
follow_request: Send e-mail when someone requests to follow you
mention: Send e-mail when someone mentions you
reblog: Send e-mail when someone boosts your status
+ report: Send e-mail when a new report is submitted
'no': 'No'
required:
mark: "*"
diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml
index a46fcc42e..9b6e7cd9e 100644
--- a/config/locales/simple_form.eo.yml
+++ b/config/locales/simple_form.eo.yml
@@ -4,7 +4,7 @@ eo:
hints:
defaults:
autofollow: Homoj, kiuj registriĝos per la invito aŭtomate sekvos vin
- avatar: Formato PNG, GIF aŭ JPG. Ĝis 2MB. Estos malgrandigita al 400x400px
+ avatar: Formato PNG, GIF aŭ JPG. Ĝis %{size}. Estos malgrandigita al %{dimensions}px
bot: Tiu konto ĉefe faras aŭtomatajn agojn, kaj povas esti ne kontrolata
context: Unu ol pluraj kuntekstoj kie la filtrilo devus agi
digest: Sendita nur post longa tempo de neaktiveco, kaj nur se vi ricevis personan mesaĝon en via foresto
@@ -12,7 +12,8 @@ eo:
one:
1 signo restas
other:
%{count} signoj restas
fields: Vi povas havi ĝis 4 tabelajn elementojn en via profilo
- header: Formato PNG, GIF aŭ JPG. Ĝis 2MB. Estos malgrandigita al 700x335px
+ header: Formato PNG, GIF aŭ JPG. Ĝis %{size}. Estos malgrandigita al %{dimensions}px
+ inbox_url: Kopiu la URL de la ĉefpaĝo de la ripetilo, kiun vi volas uzi
irreversible: Elfiltritaj mesaĝoj malaperos por ĉiam, eĉ se la filtrilo estas poste forigita
locale: La lingvo de la uzant-interfaco, retmesaĝoj kaj puŝ-sciigoj
locked: Vi devos aprobi ĉiun peton de sekvado mane
@@ -24,6 +25,7 @@ eo:
setting_hide_network: Tiuj, kiujn vi sekvas, kaj tiuj, kiuj sekvas vin ne estos videblaj en via profilo
setting_noindex: Influas vian publikan profilon kaj mesaĝajn paĝojn
setting_theme: Influas kiel Mastodon aspektas post ensaluto de ajna aparato.
+ whole_word: Kiam la vorto aŭ frazo estas nur litera aŭ cifera, ĝi estos uzata nur se ĝi kongruas kun la tuta vorto
imports:
data: CSV-dosiero el alia nodo de Mastodon
sessions:
@@ -50,6 +52,7 @@ eo:
expires_in: Eksvalidiĝas post
fields: Profilaj metadatumoj
header: Fonbildo
+ inbox_url: URL de la ripetila enirkesto
irreversible: Forĵeti anstataŭ kaŝi
locale: Interfaca lingvo
locked: Ŝlosi konton
@@ -76,6 +79,7 @@ eo:
type: Importa tipo
username: Uzantnomo
username_or_email: Uzantnomo aŭ Retadreso
+ whole_word: Tuta vorto
interactions:
must_be_follower: Bloki sciigojn de nesekvantoj
must_be_following: Bloki sciigojn de homoj, kiujn vi ne sekvas
diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml
index 000a33edc..483f79058 100644
--- a/config/locales/simple_form.es.yml
+++ b/config/locales/simple_form.es.yml
@@ -3,12 +3,12 @@ es:
simple_form:
hints:
defaults:
- avatar: PNG, GIF o JPG. Máximo 2MB. Será escalado a 400x400px
+ avatar: PNG, GIF o JPG. Máximo %{size}. Será escalado a %{dimensions}px
digest: Solo enviado tras un largo periodo de inactividad y solo si has recibido mensajes personales durante tu ausencia
display_name:
one:
1 caracter restante
other:
%{count} caracteres restantes
- header: PNG, GIF o JPG. Máximo 2MB. Será escalado a 700x335px
+ header: PNG, GIF o JPG. Máximo %{size}. Será escalado a %{dimensions}px
locked: Requiere que manualmente apruebes seguidores y las publicaciones serán mostradas solamente a tus seguidores
note:
one:
1 carácter restante
diff --git a/config/locales/simple_form.eu.yml b/config/locales/simple_form.eu.yml
index 2d60030ec..09a338200 100644
--- a/config/locales/simple_form.eu.yml
+++ b/config/locales/simple_form.eu.yml
@@ -4,23 +4,28 @@ eu:
hints:
defaults:
autofollow: Gonbidapena erabiliz izena ematen dutenek automatikoki jarraituko zaituzte
- avatar: PNG, GIF edo JPG. Gehienez 2MB. 400x400px neurrira eskalatuko da
+ avatar: PNG, GIF edo JPG. Gehienez %{size}. %{dimensions}px neurrira eskalatuko da
bot: Kontu honek nagusiki automatizatutako ekintzak burutzen ditu eta agian ez du inork monitorizatzen
+ context: Iragazkia aplikatzeko testuinguru bat edo batzuk
digest: Soilik jarduerarik gabeko epe luze bat eta gero, eta soilik ez zeudela mezu pertsonalen bat jaso baduzu
display_name:
one: Karaktere
1 geratzen da
other:
%{count} karaktere geratzen dira
fields: 4 elementu bistaratu ditzakezu taula batean zure profilean
- header: PNG, GIF edo JPG. Gehienez 2MB. 700x335px eskalara txikituko da
+ header: PNG, GIF edo JPG. Gehienez %{size}. %{dimensions}px eskalara txikituko da
+ irreversible: Iragazitako toot-ak betirako galduko dira, geroago iragazkia kentzen baduzu ere
locale: Erabiltzaile-interfazea, e-mail mezuen eta jakinarazpenen hizkuntza
locked: Jarraitzaileak eskuz onartu behar dituzu
note:
one: Karaktere
1 geratzen da
other:
%{count} karaktere geratzen dira
+ phrase: Bat egingo du Maiuskula/minuskula kontuan hartu gabe eta edukiaren abisua kontuan hartu gabe
+ scopes: Zeintzuk API atzitu ditzakeen aplikazioak. Goi mailako arloa aukeratzen baduzu, ez dituzu azpikoak aukeratu behar.
setting_default_language: Zure toot-en hizkuntza automatikoki antzeman daiteke, baina ez da beti zehatza
setting_hide_network: Nor jarraitzen duzun eta nork jarraitzen zaituen ez da bistaratuko zure profilean
setting_noindex: Zure profil publiko eta toot orrietan eragina du
setting_theme: Edozein gailutik konektatzean Mastodon-en itxuran eragiten du.
+ whole_word: Hitz eta esaldi gakoa alfanumerikoa denean, hitz osoarekin bat datorrenean besterik ez da aplikatuko
imports:
data: Beste Mastodon instantzia batetik esportatutako CSV fitxategia
sessions:
@@ -39,6 +44,7 @@ eu:
chosen_languages: Iragazi hizkuntzak
confirm_new_password: Berretsi pasahitz berria
confirm_password: Berretsi pasahitza
+ context: Iragazkiaren testuinguruak
current_password: Oraingo pasahitza
data: Datuak
display_name: Pantaila-izena
@@ -46,6 +52,7 @@ eu:
expires_in: Iraungitzea
fields: Profilaren metadatuak
header: Goiburua
+ irreversible: Baztertu ezkutatu ordez
locale: Interfazearen hizkuntza
locked: Giltzapetu kontua
max_uses: Gehieneko erabiltzaile kopurua
@@ -53,6 +60,7 @@ eu:
note: Biografia
otp_attempt: Bi faktoreetako kodea
password: Pasahitza
+ phrase: Hitz edo esaldi gakoa
setting_auto_play_gif: Erreproduzitu GIF animatuak automatikoki
setting_boost_modal: Erakutsi baieztapen elkarrizketa-koadroa bultzada eman aurretik
setting_default_language: Argitalpenen hizkuntza
@@ -70,6 +78,7 @@ eu:
type: Inportazio mota
username: Erabiltzaile-izena
username_or_email: Erabiltzaile-izena edo e-mail helbidea
+ whole_word: Hitz osoa
interactions:
must_be_follower: Blokeatu jarraitzaile ez direnen jakinarazpenak
must_be_following: Blokeatu zuk jarraitzen ez dituzunen jakinarazpenak
diff --git a/config/locales/simple_form.fa.yml b/config/locales/simple_form.fa.yml
index 2a2cc6731..38f95e1b7 100644
--- a/config/locales/simple_form.fa.yml
+++ b/config/locales/simple_form.fa.yml
@@ -4,7 +4,7 @@ fa:
hints:
defaults:
autofollow: کسانی که از راه دعوتنامه عضو میشوند به طور خودکار پیگیر شما خواهند شد
- avatar: یکی از قالبهای PNG یا GIF یا JPG. بیشترین اندازه ۲ مگابایت. تصویر به اندازهٔ ۴۰۰×۴۰۰ پیکسل تبدیل خواهد شد
+ avatar: یکی از قالبهای PNG یا GIF یا JPG. بیشترین اندازه %{size}. تصویر به اندازهٔ %{dimensions} پیکسل تبدیل خواهد شد
bot: این حساب بیشتر به طور خودکار فعالیت میکند و نظارت پیوستهای روی آن وجود ندارد
context: یک یا چند زمینه که فیلتر باید در آنها اعمال شود
digest: تنها وقتی فرستاده میشود که مدتی طولانی فعالیتی نداشته باشید و در این مدت برای شما پیغام خصوصیای نوشته شده باشد
@@ -12,7 +12,8 @@ fa:
one:
1 حرف باقی مانده
other:
%{count} حرف باقی مانده
fields: شما میتوانید تا چهار مورد را در یک جدول در نمایهٔ خود نمایش دهید
- header: یکی از قالبهای PNG یا GIF یا JPG. بیشترین اندازه ۲ مگابایت. تصویر به اندازهٔ ۳۳۵×۷۰۰ پیکسل تبدیل خواهد شد
+ header: یکی از قالبهای PNG یا GIF یا JPG. بیشترین اندازه %{size}. تصویر به اندازهٔ %{dimensions} پیکسل تبدیل خواهد شد
+ inbox_url: نشانی صفحهٔ اصلی رلهای را که میخواهید به کار ببرید کپی کنید
irreversible: بوقهای فیلترشده به طور برگشتناپذیری ناپدید میشوند، حتی اگر فیلتر را بعداً بردارید
locale: زبان محیط کاربری، ایمیلها، و اعلانها
locked: باید پیگیران تازه را خودتان تأیید کنید
@@ -20,10 +21,12 @@ fa:
one:
1 حرف باقی مانده
other:
%{count} حرف باقی مانده
phrase: مستقل از کوچکی و بزرگی حروف، با متن اصلی یا هشدار محتوای بوقها مقایسه میشود
+ scopes: واسطهای برنامهنویسی که این برنامه به آن دسترسی دارد. اگر بالاترین سطح دسترسی را انتخاب کنید، دیگر نیازی به انتخاب سطحهای پایینی ندارید.
setting_default_language: زبان نوشتههای شما به طور خودکار تشخیص داده میشود، ولی این تشخصی همیشه دقیق نیست
setting_hide_network: فهرست پیگیران شما و فهرست کسانی که شما پی میگیرید روی نمایهٔ شما دیده نخواهد شد
setting_noindex: روی نمایهٔ عمومی و صفحهٔ نوشتههای شما تأثیر میگذارد
setting_theme: ظاهر ماستدون را وقتی که از هر دستگاهی به آن وارد میشوید تعیین میکند.
+ whole_word: اگر کلیدواژه فقط دارای حروف و اعداد باشد، تنها وقتی پیدا میشود که با کل یک واژه در متن منطبق باشد، نه با بخشی از یک واژه
imports:
data: پروندهٔ CSV که از سرور ماستدون دیگری برونسپاری شده
sessions:
@@ -50,6 +53,7 @@ fa:
expires_in: تاریخ انقضا
fields: اطلاعات تکمیلی نمایه
header: تصویر زمینه
+ inbox_url: نشانی صندوق ورودی رله
irreversible: به جای پنهانسازی، حذف کن
locale: زبان محیط کاربری
locked: خصوصیکردن حساب
@@ -76,6 +80,7 @@ fa:
type: نوع درونریزی
username: نام کاربری (تنها حروف انگلیسی)
username_or_email: نام کاربری یا ایمیل
+ whole_word: تطابق واژهٔ کامل
interactions:
must_be_follower: مسدودکردن اعلانهای همه به جز پیگیران
must_be_following: مسدودکردن اعلانهای کسانی که شما پی نمیگیرید
@@ -87,6 +92,7 @@ fa:
follow_request: وقتی کسی درخواست پیگیری کرد ایمیل بفرست
mention: وقتی کسی از شما نام برد ایمیل بفرست
reblog: وقتی کسی نوشتهٔ شما را بازبوقید ایمیل بفرست
+ report: وقتی گزارش تازهای فرستاده شد ایمیل بفرست
'no': خیر
required:
mark: "*"
diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml
index e510bd155..c13cfa50d 100644
--- a/config/locales/simple_form.fr.yml
+++ b/config/locales/simple_form.fr.yml
@@ -3,32 +3,34 @@ fr:
simple_form:
hints:
defaults:
- autofollow: Les personnes qui s'inscrivent grâce à l'invitation vous suivront automatiquement
- avatar: Au format PNG, GIF ou JPG. 2 Mo maximum. Sera réduit à 400x400px
+ autofollow: Les personnes qui s’inscrivent grâce à l’invitation vous suivront automatiquement
+ avatar: Au format PNG, GIF ou JPG. 2 Mo maximum. Sera réduit à %{dimensions}px
bot: Ce compte exécute principalement des actions automatisées et pourrait ne pas être surveillé
- context: Un ou plusieurs contextes où le filtre devrait s'appliquer
+ context: Un ou plusieurs contextes où le filtre devrait s’appliquer
digest: Uniquement envoyé après une longue période d’inactivité et uniquement si vous avez reçu des messages personnels pendant votre absence
display_name:
one:
1 caractère restant
other:
%{count} caractères restants
- fields: Vous pouvez avoir jusqu'à 4 éléments affichés en tant que tableau sur votre profil
- header: Au format PNG, GIF ou JPG. 2 Mo maximum. Sera réduit à 700x335px
+ fields: Vous pouvez avoir jusqu’à 4 éléments affichés en tant que tableau sur votre profil
+ header: Au format PNG, GIF ou JPG. 2 Mo maximum. Sera réduit à %{dimensions}px
+ inbox_url: Copiez l’URL depuis la page d’accueil du relais que vous souhaitez utiliser
irreversible: Les pouets filtrés disparaîtront irrémédiablement, même si le filtre est supprimé plus tard
- locale: La langue de l'interface-utilisateur, des courriels, et des notifications
+ locale: La langue de l’interface, des courriels et des notifications
locked: Vous devrez approuver chaque abonné⋅e et vos statuts ne s’afficheront qu’à vos abonné⋅es
note:
one:
1 caractère restant
other:
%{count} caractères restants
- phrase: Sera trouvé sans que la case ou l'avertissement de contenu du pouet soit pris en compte
- scopes: À quelles APIs l'application sera autorisée à accéder. Si vous sélectionnez un périmètre de haut-niveau, vous n'avez pas besoin de sélectionner les individuels.
- setting_default_language: La langue de vos pouets peut être détectée automatiquement, mais ça n'est pas toujours pertinent
+ phrase: Sera trouvé sans que la case ou l’avertissement de contenu du pouet soit pris en compte
+ scopes: À quelles APIs l’application sera autorisée à accéder. Si vous sélectionnez un périmètre de haut-niveau, vous n’avez pas besoin de sélectionner les individuels.
+ setting_default_language: La langue de vos pouets peut être détectée automatiquement, mais ça n’est pas toujours pertinent
setting_hide_network: Ceux que vous suivez et ceux qui vous suivent ne seront pas affichés sur votre profil
setting_noindex: Affecte votre profil public ainsi que vos statuts
setting_theme: Affecte l’apparence de Mastodon quand vous êtes connecté·e depuis n’importe quel appareil.
+ whole_word: Lorsque le mot-clef ou la phrase-clef est uniquement alphanumérique, ça sera uniquement appliqué s’il correspond au mot entier
imports:
data: Un fichier CSV généré par une autre instance de Mastodon
sessions:
- otp: 'Entrez le code d’authentification à deux facteurs généré par votre téléphone ou utilisez un de vos codes de récupération :'
+ otp: 'Entrez le code d’authentification à deux facteurs généré par l''application de votre téléphone ou utilisez un de vos codes de récupération :'
user:
chosen_languages: Lorsque coché, seuls les pouets dans les langues sélectionnées seront affichés sur les fils publics
labels:
@@ -51,10 +53,11 @@ fr:
expires_in: Expire après
fields: Métadonnées du profil
header: Image d’en-tête
+ inbox_url: URL de la boîte de relais
irreversible: Supprimer plutôt que de cacher
- locale: Langue de l'interface
+ locale: Langue de l’interface
locked: Verrouiller le compte
- max_uses: Nombre maximum d'utilisations
+ max_uses: Nombre maximum d’utilisations
new_password: Nouveau mot de passe
note: Présentation
otp_attempt: Code d’identification à deux facteurs
@@ -76,7 +79,8 @@ fr:
severity: Sévérité
type: Type d’import
username: Identifiant
- username_or_email: Nom d'utilisateur ou courriel
+ username_or_email: Nom d’utilisateur·ice ou courriel
+ whole_word: Mot entier
interactions:
must_be_follower: Masquer les notifications des personnes qui ne vous suivent pas
must_be_following: Masquer les notifications des personnes que vous ne suivez pas
diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml
index 25694395d..b84a95826 100644
--- a/config/locales/simple_form.gl.yml
+++ b/config/locales/simple_form.gl.yml
@@ -4,7 +4,7 @@ gl:
hints:
defaults:
autofollow: As persoas que se conectaron a través de un convite seguirana automáticamente a vostede
- avatar: PNG, GIF ou JPG. Máximo 2MB. Será reducida a 400x400px
+ avatar: PNG, GIF ou JPG. Máximo %{size}. Será reducida a %{dimensions}px
bot: Esta conta realiza principalmente accións automatizadas e podería non estar monitorizada
context: Un ou varios contextos onde se debería aplicar o filtro
digest: Enviar só tras un longo período de inactividade e só si recibeu algunha mensaxe personal na súa ausencia
@@ -12,7 +12,8 @@ gl:
one:
1 caracter restante
other:
%{count} caracteres restantes
fields: Pode ter ate 4 elementos no seu perfil mostrados como unha táboa
- header: PNG, GIF ou JPG. Máximo 2MB. Será reducida a 700x335px
+ header: PNG, GIF ou JPG. Máximo %{size}. Será reducida a %{dimensions}px
+ inbox_url: Copiar o URL desde a páxina de inicio do repetidor que quere utilizar
irreversible: Os toots filtrados desaparecerán de xeito irreversible, incluso si despois se elimina o filtro
locale: O idioma da interface de usuaria, correos e notificacións
locked: Require que vostede acepte as seguidoras de xeito manual
@@ -25,6 +26,7 @@ gl:
setting_hide_network: Non se mostrará no seu perfil quen a segue e quen a está a seguir
setting_noindex: Afecta ao seu perfil público e páxinas de estado
setting_theme: Afecta ao aspecto de Mastodon en calquer dispositivo cando está conectada.
+ whole_word: Si a chave ou frase de paso é só alfanumérica, só se aplicará si concorda a palabra completa
imports:
data: Ficheiro CSV exportado desde outra instancia Mastodon
sessions:
@@ -51,6 +53,7 @@ gl:
expires_in: Caducidade despois de
fields: Metadatos do perfil
header: Cabeceira
+ inbox_url: URL da caixa de entrada do repetidor
irreversible: Soltar en lugar de agochar
locale: Idioma da interface
locked: Protexer conta
@@ -77,6 +80,7 @@ gl:
type: Tipo de importación
username: Nome de usuaria
username_or_email: Nome de usuaria ou Correo-e
+ whole_word: Palabra completa
interactions:
must_be_follower: Bloquear as notificacións de non-seguidoras
must_be_following: Bloquea as notificacións de personas que non segue
diff --git a/config/locales/simple_form.he.yml b/config/locales/simple_form.he.yml
index 96cdccd2b..aa5c7e827 100644
--- a/config/locales/simple_form.he.yml
+++ b/config/locales/simple_form.he.yml
@@ -3,12 +3,12 @@ he:
simple_form:
hints:
defaults:
- avatar: PNG, GIF או JPG. מקסימום 2MB. גודל התמונה יוקטן ל-400x400px
+ avatar: PNG, GIF או JPG. מקסימום %{size}. גודל התמונה יוקטן ל-%{dimensions}px
digest: נשלח לאחר תקופה ארוכה של אי-פעילות עם סיכום איזכורים שקיבלת בהעדרך
display_name:
one: נותרה אות
אחת
other: נותרו
%{count} אותיות
- header: PNG, GIF או JPG. מקסימום 2MB. גודל התמונה יוקטן 700x335px
+ header: PNG, GIF או JPG. מקסימום %{size}. גודל התמונה יוקטן %{dimensions}px
locked: מחייב אישור עוקבים באופן ידני. פרטיות ההודעות תהיה עוקבים-בלבד אלא אם יצוין אחרת
note:
one: נותרה אות
אחת
diff --git a/config/locales/simple_form.hr.yml b/config/locales/simple_form.hr.yml
index 2506c8d92..2b3ebf91e 100644
--- a/config/locales/simple_form.hr.yml
+++ b/config/locales/simple_form.hr.yml
@@ -3,9 +3,9 @@ hr:
simple_form:
hints:
defaults:
- avatar: PNG, GIF ili JPG. Najviše 2MB. Bit će smanjen na 400x400px
+ avatar: PNG, GIF ili JPG. Najviše %{size}. Bit će smanjen na %{dimensions}px
display_name: Najviše 30 znakova
- header: PNG, GIF ili JPG. Najviše 2MB. Bit će smanjen na 700x335px
+ header: PNG, GIF ili JPG. Najviše %{size}. Bit će smanjen na %{dimensions}px
locked: traži te da ručno odobriš sljedbenike i postavlja privatnost postova na dostupnu samo sljedbenicima
note: Najviše 160 znakova
imports:
diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml
index 2b36dc85b..ef915dec5 100644
--- a/config/locales/simple_form.hu.yml
+++ b/config/locales/simple_form.hu.yml
@@ -3,12 +3,12 @@ hu:
simple_form:
hints:
defaults:
- avatar: PNG, GIF vagy JPG. Maximum 2MB. Át lesz méretezve 400x400 pixelre
+ avatar: PNG, GIF vagy JPG. Maximum %{size}. Át lesz méretezve %{dimensions} pixelre
digest: Csak hosszú távollét esetén küldve és csak ha személyes üzenetet kaptál távollétedben
display_name:
one:
1karakter maradt
other:
%{count}karakter maradt
- header: PNG, GIF vagy JPG. Maximum 2MB. Át lesz méretezve 700x335 pixelre
+ header: PNG, GIF vagy JPG. Maximum %{size}. Át lesz méretezve %{dimensions} pixelre
locked: Egyenként engedélyezned kell a követőidet
note:
one:
1karakter maradt
diff --git a/config/locales/simple_form.id.yml b/config/locales/simple_form.id.yml
index 6b2868e02..fcd9d862c 100644
--- a/config/locales/simple_form.id.yml
+++ b/config/locales/simple_form.id.yml
@@ -3,9 +3,9 @@ id:
simple_form:
hints:
defaults:
- avatar: PNG, GIF atau JPG. Maksimal 2MB. Ukuran dikecilkan menjadi 400x400px
+ avatar: PNG, GIF atau JPG. Maksimal %{size}. Ukuran dikecilkan menjadi %{dimensions}px
display_name: Maksimal 30 karakter
- header: PNG, GIF atau JPG. Maksimal 2MB. Ukuran dikecilkan menjadi 700x335px
+ header: PNG, GIF atau JPG. Maksimal %{size}. Ukuran dikecilkan menjadi %{dimensions}px
locked: Anda harus menerima permintaan pengikut secara manual dan setting privasi postingan akan diubah khusus untuk pengikut
note: Maksimum 160 karakter
imports:
diff --git a/config/locales/simple_form.io.yml b/config/locales/simple_form.io.yml
index 60b578a12..cf87aa6d9 100644
--- a/config/locales/simple_form.io.yml
+++ b/config/locales/simple_form.io.yml
@@ -3,9 +3,9 @@ io:
simple_form:
hints:
defaults:
- avatar: En la formato PNG, GIF o JPG. Til 2Mo. Esos mikrigita a 400x400px
+ avatar: En la formato PNG, GIF o JPG. Til 2Mo. Esos mikrigita a %{dimensions}px
display_name: 30 signi maxime
- header: En la formato PNG, GIF o JPG. Til 2Mo. Esos mikrigita a 700x335px
+ header: En la formato PNG, GIF o JPG. Til 2Mo. Esos mikrigita a %{dimensions}px
locked: Tu devos aprobar omna demandi di sequado, e tua mesaji esos senchanje nur por tua sequanti.
note: 160 signi maxime
imports:
diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml
index 185bba205..810ac813e 100644
--- a/config/locales/simple_form.it.yml
+++ b/config/locales/simple_form.it.yml
@@ -4,7 +4,7 @@ it:
hints:
defaults:
autofollow: Le persone che si iscrivono attraverso l'invito ti seguiranno automaticamente
- avatar: PNG, GIF o JPG. Al massimo 2MB. Verranno scalate a 400x400px
+ avatar: PNG, GIF o JPG. Al massimo %{size}. Verranno scalate a %{dimensions}px
bot: Questo account esegue principalmente operazioni automatiche e potrebbe non essere tenuto sotto controllo da una persona
context: Uno o più contesti nei quali il filtro dovrebbe essere applicato
digest: Inviata solo dopo un lungo periodo di inattività e solo se hai ricevuto qualche messaggio personale in tua assenza
@@ -12,7 +12,8 @@ it:
one:
1 carattere rimanente
other:
%{count} caratteri rimanenti
fields: Puoi avere fino a 4 voci visualizzate come una tabella sul tuo profilo
- header: PNG, GIF o JPG. Al massimo 2MB. Verranno scalate a 700x335px
+ header: PNG, GIF o JPG. Al massimo %{size}. Verranno scalate a %{dimensions}px
+ inbox_url: Copia la URL dalla pagina iniziale del ripetitore che vuoi usare
irreversible: I toot filtrati scompariranno in modo irreversibile, anche se il filtro viene eliminato
locale: La lingua dell'interfaccia utente, di email e notifiche push
locked: Richiede che approvi i follower manualmente
@@ -25,6 +26,7 @@ it:
setting_hide_network: Chi segui e chi segue te non saranno mostrati sul tuo profilo
setting_noindex: Ha effetto sul tuo profilo pubblico e sulle pagine degli status
setting_theme: Ha effetto sul modo in cui Mastodon verrà visualizzato quando sarai collegato da qualsiasi dispositivo.
+ whole_word: Quando la parola chiave o la frase è solo alfanumerica, si applica solo se corrisponde alla parola intera
imports:
data: File CSV esportato da un'altra istanza di Mastodon
sessions:
@@ -51,6 +53,7 @@ it:
expires_in: Scade dopo
fields: Metadati del profilo
header: Header
+ inbox_url: URL della inbox del ripetitore
irreversible: Elimina invece di nascondere
locale: Lingua dell'interfaccia
locked: Blocca account
@@ -77,6 +80,7 @@ it:
type: Tipo importazione
username: Nome utente
username_or_email: Nome utente o email
+ whole_word: Parola intera
interactions:
must_be_follower: Blocca notifiche dai non follower
must_be_following: Blocca notifiche dalle persone che non segui
diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml
index 7f7f3af19..6aa7af979 100644
--- a/config/locales/simple_form.ja.yml
+++ b/config/locales/simple_form.ja.yml
@@ -4,13 +4,14 @@ ja:
hints:
defaults:
autofollow: 招待から登録した人が自動的にあなたをフォローするようになります
- avatar: 2MBまでのPNG、GIF、JPGが利用可能です。400x400pxまで縮小されます
+ avatar: "%{size}までのPNG、GIF、JPGが利用可能です。%{dimensions}pxまで縮小されます"
bot: このアカウントは主に自動で動作し、人が見ていない可能性があります
context: フィルターを適用する対象 (複数選択可)
digest: 長期間使用していない場合と不在時に返信を受けた場合のみ送信されます
display_name: あと
%{count}文字入力できます。
fields: プロフィールに表として4つまでの項目を表示することができます
- header: 2MBまでのPNG、GIF、JPGが利用可能です。 700x335pxまで縮小されます
+ header: "%{size}までのPNG、GIF、JPGが利用可能です。 %{dimensions}pxまで縮小されます"
+ inbox_url: 使用したいリレーサーバーのトップページからURLをコピーします
irreversible: フィルターが後で削除されても、除外されたトゥートは元に戻せなくなります
locale: ユーザーインターフェース、メールやプッシュ通知の言語
locked: フォロワーを手動で承認する必要があります
@@ -21,6 +22,7 @@ ja:
setting_hide_network: フォローとフォロワーの情報がプロフィールページで見られないようにします
setting_noindex: 公開プロフィールおよび各投稿ページに影響します
setting_theme: ログインしている全てのデバイスで適用されるデザインです。
+ whole_word: キーワードまたはフレーズが英数字のみの場合、単語全体と一致する場合のみ適用されるようになります
imports:
data: 他の Mastodon インスタンスからエクスポートしたCSVファイルを選択して下さい
sessions:
@@ -39,7 +41,7 @@ ja:
chosen_languages: 表示する言語
confirm_new_password: 新しいパスワード(確認用)
confirm_password: パスワード(確認用)
- context: フィルター対象
+ context: 除外対象
current_password: 現在のパスワード
data: データ
display_name: 表示名
@@ -47,6 +49,7 @@ ja:
expires_in: 有効期限
fields: プロフィール補足情報
header: ヘッダー
+ inbox_url: リレーサーバーの inbox URL
irreversible: 隠すのではなく除外する
locale: 言語
locked: 承認制アカウントにする
@@ -55,7 +58,7 @@ ja:
note: プロフィール
otp_attempt: 二段階認証コード
password: パスワード
- phrase: 単語または語句
+ phrase: キーワードまたはフレーズ
setting_auto_play_gif: アニメーションGIFを自動再生する
setting_boost_modal: ブーストする前に確認ダイアログを表示する
setting_default_language: 投稿する言語
@@ -73,6 +76,7 @@ ja:
type: インポートする項目
username: ユーザー名
username_or_email: ユーザー名またはメールアドレス
+ whole_word: 単語全体にマッチ
interactions:
must_be_follower: フォロワー以外からの通知をブロック
must_be_following: フォローしていないユーザーからの通知をブロック
diff --git a/config/locales/simple_form.ka.yml b/config/locales/simple_form.ka.yml
new file mode 100644
index 000000000..eb6d82bb2
--- /dev/null
+++ b/config/locales/simple_form.ka.yml
@@ -0,0 +1,99 @@
+---
+ka:
+ simple_form:
+ hints:
+ defaults:
+ autofollow: ადამიანები რომლებიც დარეგისტრირდებიან მოწვევით, ავტომატურად გამოგყვებიან
+ avatar: პნგ, გიფ ან ჯპგ. მაქს. %{size}. ზომა დაპატარავდება %{dimensions}პიქს.-ზე
+ bot: ეს ანგარიში უმთავრესად ასრულებს ავტომატურ მოქმედებებს და შესაძლოა არ იყოს მონიტორინგის ქვეშ
+ context: ერთ ან მრავალი კონტექსტი სადაც ფილტრი უნდა შესრულდეს
+ digest: იგზავნება მხოლოდ ხანგრძლივი უაქტივობის პერიოდის შემდეგ და არყოფნისას თუ მიიღეთ ერთი წერილი მაინც
+ display_name:
+ one: დარჩა
ერთი ნიშანი
+ other: დარჩა
%{count} ნიშანი
+ fields: პროფილზე ტაბულის სახით შესაძლოა საჩვენებლად გაგაჩნდეთ მაქს. 4 პუნქტი
+ header: პნგ, გიფ ან ჯპგ. მაქს. %{size}. ზომა დაპატარავდება %{dimensions}პიქს.-ზე
+ inbox_url: ურლ დააკოირეთ გამოყენებისთვის სასურველი რილეის წინა გვერდიდან
+ irreversible: გაფილტრული ტუტები გაუქმდება აღუდგენლად, იმ შემთხვევაშიც კი თუ ფილტრი სამომავლოდ გაუქმდება
+ locale: მომხმარებლის ინტერფეისის, ელ-ფოსტის წერილების და ფუშ შეტყობინებების ენა
+ locked: საჭიროებს თქვენ მიერ მიმდევრების ხელით დადასტურებას
+ note:
+ one: დარჩა
ერთი ნიშანი
+ other: დარჩა
%{count} ნიშანი
+ phrase: დამთხვევა მოხდება დიდი და პატარა ასოების ან კონტენტის გაფრთხილების გათვალისწინების გარეშე
+ scopes: რომელი აპიებისადმი ექნება აპლიკაციას ცვდომა. თუ არიჩევთ უმთავრეს ფარგლებს, არ დაგჭირდებათ ინდივიდუალურების ამორჩევა.
+ setting_default_language: თქვენი ტუტების ენა შეიძლება დადგინდეს ავტომატურად, მაგრამ ეს არაა ყოველთვის ზუსტი
+ setting_hide_network: ვის მიყვებით და ვინ მოგყვებათ არ გამოჩნდება აქ
+ setting_noindex: გავლენას ახდენს თქვენს ღია პროფილისა და სტატუსის გვერდებზე
+ setting_theme: გავლენას ახდენს თუ როგორ გამოიყურება მასტოდონი, როდესაც შესული ხართ რომელიმე მოწყობილობიდან.
+ whole_word: როდესაც სიტყვა ან ფრაზა მხოლოდ ალფა-ნუმერიკულია, ის დაფიქსირდება თუ ემთხვევა სრულ სიტყვას
+ imports:
+ data: ცსვ ფაილის ექსპორტი მოხდა მასტოდონის სხვა ინსტანციიდან
+ sessions:
+ otp: 'შეიყვანეთ მეორე ფაქტორის კოდი, რომელიც დააგერირა თქვენმა ტელეფონმა ან მოიხმარეთ შემდეგი აღდგენის კოდებიდან ერთ-ერთი:'
+ user:
+ chosen_languages: როდესაც მოინიშნება, ღია თაიმლაინზე გამოჩნდება ტუტები მხოლოდ არჩეულ ენებზე
+ labels:
+ account:
+ fields:
+ name: ლეიბლი
+ value: მოცულობა
+ defaults:
+ autofollow: მოიწვიეთ რომ გამოჰყვნენ თქვენს ანგარიშს
+ avatar: ავატარი
+ bot: ეს ბოტის ანგარიშია
+ chosen_languages: ენების ფილტრი
+ confirm_new_password: დაადასტურეთ ახალი პაროლი
+ confirm_password: დაადასტურეთ პაროლი
+ context: კონტექსტის ფილტრი
+ current_password: მიმდინარე პაროლი
+ data: მონაცემები
+ display_name: დისპლეის სახელი
+ email: ელ-ფოსტის მისამართი
+ expires_in: ვადის გასვლის დრო
+ fields: პროფილის მეტა-მონაცემი
+ header: დასათაურება
+ inbox_url: რილეი ინბოქსის ურლ
+ irreversible: გაუქმდეს დამალვის მაგივრად
+ locale: ინტერფეისის ენა
+ locked: ანგარიშის ჩაკეტვა
+ max_uses: მოხმარების მაქს. ოდენობა
+ new_password: ახალი პაროლი
+ note: ბიო.
+ otp_attempt: მეორე-ფაქტორის კოდი
+ password: პაროლი
+ phrase: სიტყვა ან ფრაზა
+ setting_auto_play_gif: ანიმაციური გიფების ავტო-დაკვრა
+ setting_boost_modal: ბუსტამე მოხდეს დამოწმება
+ setting_default_language: პოსტინგის ენა
+ setting_default_privacy: პოსტის კონფიდენციალურობა
+ setting_default_sensitive: ყოველთვის მოინიშნოს მედია მგრძნობიარედ
+ setting_delete_modal: ტუტის გაუქმებამდე გამოჩნდეს დადასტურების ფანჯარა
+ setting_display_sensitive_media: ყოველთვის გამოჩნდეს მგრძნობიარე მედია
+ setting_hide_network: თქვენი ქსელის დამალვა
+ setting_noindex: საძოები სისტემების ინდექსაციის შეჩერება
+ setting_reduce_motion: მოძრაობის შემცირება ანიმაციებში
+ setting_system_font_ui: მოხდეს სისტემის საწყისი ფონტის მოხმარება
+ setting_theme: საიტის თემა
+ setting_unfollow_modal: გამოჩნდეს დადასტურების ფანჯარა, სანამ შეყვეტთ ვინმეს დადევნებას
+ severity: სიმძიმე
+ type: იმპორტის სახეობა
+ username: მომხმარებლის სახელი
+ username_or_email: მომხმარებლის სახელი ან ელ-ფოსტა
+ whole_word: მთელი სიტყვა
+ interactions:
+ must_be_follower: დაიბლოკოს შეტყობინებები არა მიმდევრებისგან
+ must_be_following: დაიბლოკოს შეტყობინებები ადამიანებისგან ვისაც არ მიჰყვებით
+ must_be_following_dm: დაიბლოკოს პირადი წერილები ადამიანბისგან ვისაც არ მიჰყვებით
+ notification_emails:
+ digest: გამოიგზავნოს დაიჯესტ წერილები
+ favourite: გამოიგზავნოს წერილი როდესაც ვინმე ფავორიტად აქცევს თქვენს სტატუსს
+ follow: გამოიგზავნოს წერილი როდესაც ვინმე გამოგყვებათ
+ follow_request: გამოიგზავნოს წერილი როდესაც ვინმე მოგთხოვთ გაჰყვეთ
+ mention: გამოიგზავნოს წერილი როდესაც ვინმე გასახელებთ
+ reblog: გამოიგზავნოს წერილი როდესაც ვინმე გაზრდის თქვენს სტატუსს
+ 'no': არა
+ required:
+ mark: "*"
+ text: აუცილებელი
+ 'yes': კი
diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml
index e0a6a7405..97baf7856 100644
--- a/config/locales/simple_form.ko.yml
+++ b/config/locales/simple_form.ko.yml
@@ -4,7 +4,7 @@ ko:
hints:
defaults:
autofollow: 이 초대를 통해 가입하는 사람은 당신을 자동으로 팔로우 하게 됩니다
- avatar: PNG, GIF 혹은 JPG. 최대 2MB. 400x400px로 다운스케일 될 것임
+ avatar: PNG, GIF 혹은 JPG. 최대 %{size}. %{dimensions}px로 다운스케일 될 것임
bot: 사람들에게 계정이 사람이 아님을 알립니다
context: 필터를 적용 할 한 개 이상의 컨텍스트
digest: 오랫동안 활동하지 않았을 때 받은 멘션들에 대한 요약 받기
@@ -12,7 +12,8 @@ ko:
one:
1 글자 남음
other:
%{count} 글자 남음
fields: 당신의 프로파일에 최대 4개까지 표 형식으로 나타낼 수 있습니다
- header: PNG, GIF 혹은 JPG. 최대 2MB. 700x335px로 다운스케일 됨
+ header: PNG, GIF 혹은 JPG. 최대 %{size}. %{dimensions}px로 다운스케일 됨
+ inbox_url: 사용 할 릴레이 서버의 프론트페이지에서 URL을 복사합니다
irreversible: 필터링 된 툿은 나중에 필터가 사라지더라도 돌아오지 않게 됩니다
locale: 유저 인터페이스, 이메일, 푸시 알림 언어
locked: 수동으로 팔로워를 승인하고, 기본 툿 프라이버시 설정을 팔로워 전용으로 변경
@@ -20,10 +21,12 @@ ko:
one:
1 글자 남음
other:
%{count} 글자 남음
phrase: 툿 내용이나 CW 내용 안에서 대소문자 구분 없이 매칭 됩니다
+ scopes: 애플리케이션에 허용할 API들입니다. 최상위 스코프를 선택하면 개별적인 것은 선택하지 않아도 됩니다.
setting_default_language: 작성한 툿의 언어는 자동으로 인식할 수 있지만, 언제나 정확한 건 아닙니다
setting_hide_network: 나를 팔로우 하는 사람들과 내가 팔로우 하는 사람들이 내 프로필에 표시되지 않게 합니다
setting_noindex: 공개 프로필 및 각 툿페이지에 영향을 미칩니다
setting_theme: 로그인중인 모든 디바이스에 적용되는 디자인입니다.
+ whole_word: 키워드가 영문과 숫자로만 이루어 진 경우, 단어 전체에 매칭 되었을 때에만 작동하게 합니다
imports:
data: 다른 마스토돈 인스턴스에서 추출된 CSV 파일
sessions:
@@ -50,6 +53,7 @@ ko:
expires_in: 만료시각
fields: 프로필 메타데이터
header: 헤더
+ inbox_url: 릴레이 서버의 inbox URL
irreversible: 숨기는 대신 삭제
locale: 인터페이스 언어
locked: 계정 잠금
@@ -76,6 +80,7 @@ ko:
type: 불러오기 종류
username: 유저 이름
username_or_email: 유저네임 또는 이메일
+ whole_word: 단어 전체에 매칭
interactions:
must_be_follower: 나를 팔로우 하지 않는 사람에게서 온 알림을 차단
must_be_following: 내가 팔로우 하지 않는 사람에게서 온 알림을 차단
@@ -87,6 +92,7 @@ ko:
follow_request: 누군가 나를 팔로우 하길 원할 때 이메일 보내기
mention: 누군가 나에게 답장했을 때 이메일 보내기
reblog: 누군가 내 툿을 부스트 했을 때 이메일 보내기
+ report: 새 신고 등록시 이메일로 알리기
'no': 아니오
required:
mark: "*"
diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml
index eb13ec195..33ab60161 100644
--- a/config/locales/simple_form.nl.yml
+++ b/config/locales/simple_form.nl.yml
@@ -4,7 +4,7 @@ nl:
hints:
defaults:
autofollow: Mensen die zich via de uitnodiging hebben geregistreerd, volgen jou automatisch
- avatar: PNG, GIF of JPG. Maximaal 2MB. Wordt teruggeschaald naar 400x400px
+ avatar: PNG, GIF of JPG. Maximaal %{size}. Wordt teruggeschaald naar %{dimensions}px
bot: Dit is een geautomatiseerd account en wordt mogelijk niet gemonitord
context: Een of meerdere locaties waar de filter actief moet zijn
digest: Wordt alleen na een lange periode van inactiviteit verzonden en alleen wanneer je tijdens jouw afwezigheid persoonlijke berichten hebt ontvangen
@@ -12,7 +12,8 @@ nl:
one:
1 teken over
other:
%{count} tekens over
fields: Je kan maximaal 4 items als een tabel op je profiel weergeven
- header: PNG, GIF of JPG. Maximaal 2MB. Wordt teruggeschaald naar 700x335px
+ header: PNG, GIF of JPG. Maximaal %{size}. Wordt teruggeschaald naar %{dimensions}px
+ inbox_url: Kopieer de URL van de voorpagina van de relayserver die je wil gebruiken
irreversible: Gefilterde toots verdwijnen onomkeerbaar, zelfs als de filter later wordt verwijderd
locale: De taal van de gebruikersomgeving, e-mails en pushmeldingen
locked: Vereist dat je handmatig volgers moet accepteren
@@ -25,6 +26,7 @@ nl:
setting_hide_network: Wie jij volgt en wie jou volgen wordt niet op jouw profiel getoond
setting_noindex: Heeft invloed op jouw openbare profiel en toots
setting_theme: Heeft invloed op hoe de webapp van Mastodon eruitziet (op elk apparaat waarmee je inlogt).
+ whole_word: Wanneer het trefwoord of zinsdeel alfanumeriek is, wordt het alleen gefilterd wanneer het hele woord overeenkomt
imports:
data: CSV-bestand dat op een andere Mastodonserver werd geëxporteerd
sessions:
@@ -51,6 +53,7 @@ nl:
expires_in: Vervalt na
fields: Metadata profiel
header: Omslagfoto
+ inbox_url: Inbox-URL van de relayserver
irreversible: Verwijderen in plaats van verbergen
locale: Taal van de gebruikersomgeving
locked: Maak account besloten
@@ -77,6 +80,7 @@ nl:
type: Importtype
username: Gebruikersnaam
username_or_email: Gebruikersnaam of e-mailadres
+ whole_word: Heel woord
interactions:
must_be_follower: Meldingen van mensen die jou niet volgen blokkeren
must_be_following: Meldingen van mensen die jij niet volgt blokkeren
@@ -88,6 +92,7 @@ nl:
follow_request: Een e-mail versturen wanneer iemand jou wil volgen
mention: Een e-mail versturen wanneer iemand jou vermeld
reblog: Een e-mail versturen wanneer iemand jouw toot heeft geboost
+ report: Verstuur een e-mail wanneer een nieuw rapportage is ingediend
'no': Nee
required:
mark: "*"
diff --git a/config/locales/simple_form.no.yml b/config/locales/simple_form.no.yml
index aba8feeb6..98c6b82fe 100644
--- a/config/locales/simple_form.no.yml
+++ b/config/locales/simple_form.no.yml
@@ -3,12 +3,12 @@
simple_form:
hints:
defaults:
- avatar: PNG, GIF eller JPG. Maksimalt 2 MB. Vil bli nedskalert til 400x400px
+ avatar: PNG, GIF eller JPG. Maksimalt %{size}. Vil bli nedskalert til %{dimensions}px
digest: Kun sendt etter en lang periode med inaktivitet og bare dersom du har mottatt noen personlige meldinger mens du var borte
display_name:
one:
1 tegn igjen
other:
%{count} tegn igjen
- header: PNG, GIF eller JPG. Maksimalt 2MB. Vil bli nedskalert til 700x335px
+ header: PNG, GIF eller JPG. Maksimalt %{size}. Vil bli nedskalert til %{dimensions}px
locked: Krever at du manuelt godkjenner følgere
note:
one:
1 tegn igjen
diff --git a/config/locales/simple_form.oc.yml b/config/locales/simple_form.oc.yml
index 7d11d0d3f..98ec01219 100644
--- a/config/locales/simple_form.oc.yml
+++ b/config/locales/simple_form.oc.yml
@@ -4,7 +4,7 @@ oc:
hints:
defaults:
autofollow: Lo monde que se marcan gràcia a l’invitacion vos segràn automaticament
- avatar: PNG, GIF o JPG. Maximum 2 Mo. Serà retalhat en 400x400px
+ avatar: PNG, GIF o JPG. Maximum 2 Mo. Serà retalhat en %{dimensions}px
bot: Avisar lo monde qu’aqueste compte es pas d’una persona
context: Un o mai de contèxtes ont lo filtre deuriá s’aplicar
digest: Solament enviat aprèp un long moment d’inactivitat e solament s’avètz recebut de messatges personals pendent vòstra abséncia
@@ -12,7 +12,8 @@ oc:
one: Demòra encara
1 caractèr
other: Demòran encara
%{count} caractèrs
fields: Podètz far veire cap a 4 elements sus vòstre perfil
- header: PNG, GIF o JPG. Maximum 2 Mo. Serà retalhada en 700x335px
+ header: PNG, GIF o JPG. Maximum 2 Mo. Serà retalhada en %{dimensions}px
+ inbox_url: Copiatz l’URL de la pagina màger del relai que volètz utilizar
irreversible: Los tuts filtrats desapareisseràn irreversiblament, encara que lo filtre siá suprimit mai tard
locale: La lenga de l’interfàcia d’utilizacion, los messatges e las notificacions
locked: Demanda qu’acceptetz manualament lo mond que vos sègon e botarà la visibilitat de vòstras publicacions coma accessiblas a vòstres seguidors solament
@@ -25,6 +26,7 @@ oc:
setting_hide_network: Vòstre perfil mostrarà pas los que vos sègon e lo monde que seguètz
setting_noindex: Aquò es destinat a vòstre perfil public e vòstra pagina d’estatuts
setting_theme: Aquò càmbia lo tèma grafic de Mastodon quand sètz connectat qual que siasque lo periferic.
+ whole_word: Quand lo mot-clau o frasa es solament alfranumeric, serà pas qu’aplicat se correspond al mot complèt
imports:
data: Fichièr CSV exportat d’una autra instància Mastodon
sessions:
@@ -51,6 +53,7 @@ oc:
expires_in: Expira aprèp
fields: Metadonada del perfil
header: Bandièra
+ inbox_url: URL de la bóstia de recepcion del relai
irreversible: Suprimir allòc de rescondre
locale: Lenga de l’interfàcia
locked: Far venir lo compte privat
@@ -63,7 +66,7 @@ oc:
setting_auto_play_gif: Lectura automatica dels GIFS animats
setting_boost_modal: Afichar una fenèstra de confirmacion abans de partejar un estatut
setting_default_language: Lenga de publicacion
- setting_default_privacy: Confidencialitat de las publicacions
+ setting_default_privacy: Confidencialitat dels tuts
setting_default_sensitive: Totjorn marcar los mèdias coma sensibles
setting_delete_modal: Mostrar una fenèstra de confirmacion abans de suprimir un estatut
setting_display_sensitive_media: Totjorn mostrar los mèdias coma sensibles
@@ -77,6 +80,7 @@ oc:
type: Tipe d’impòrt
username: Nom d’utilizaire
username_or_email: Nom d’utilizaire o corrièl
+ whole_word: Mot complèt
interactions:
must_be_follower: Blocar las notificacions del mond que vos sègon pas
must_be_following: Blocar las notificacions del mond que seguètz pas
@@ -88,6 +92,7 @@ oc:
follow_request: Enviar un corrièl quand qualqu’un demanda de vos sègre
mention: Enviar un corrièl quand qualqu’un vos menciona
reblog: Enviar un corrièl quand qualqu’un tòrna partejar vòstre estatut
+ report: Enviar un corrièl pels nòus senhalaments
'no': Non
required:
mark: "*"
diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml
index 55c5e1c6d..ab720adf8 100644
--- a/config/locales/simple_form.pl.yml
+++ b/config/locales/simple_form.pl.yml
@@ -4,7 +4,7 @@ pl:
hints:
defaults:
autofollow: Osoby, które zarejestrują się z Twojego zaproszenia automatycznie zaczną Cię śledzić
- avatar: PNG, GIF lub JPG. Maksymalnie 2MB. Zostanie zmniejszony do 400x400px
+ avatar: PNG, GIF lub JPG. Maksymalnie %{size}. Zostanie zmniejszony do %{dimensions}px
bot: To konto wykonuje głównie zautomatyzowane działania i może nie być monitorowane
context: Jedno lub wiele miejsc, w których filtr zostanie zastosowany
digest: Wysyłane tylko po długiej nieaktywności, jeżeli w tym czasie otrzymaleś jakąś wiadomość bezpośrednią
@@ -14,7 +14,8 @@ pl:
one: Pozostał
1 znak
other: Pozostało
%{count} znaków
fields: Możesz ustawić maksymalnie 4 niestandardowe pola wyświetlane jako tabela na Twoim profilu
- header: PNG, GIF lub JPG. Maksymalnie 2MB. Zostanie zmniejszony do 700x335px
+ header: PNG, GIF lub JPG. Maksymalnie %{size}. Zostanie zmniejszony do %{dimensions}px
+ inbox_url: Skopiuj adres ze strony głównej przekaźnika, którego chcesz użyć
irreversible: Filtrowane wpisy znikną bezpowrotnie, nawet gdy filtr zostanie usunięty
locale: Język interfejsu, wiadomości e-mail i powiadomieniach push
locked: Musisz akceptować prośby o śledzenie
@@ -24,10 +25,12 @@ pl:
one: Pozostał
1 znak
other: Pozostało
%{count} znaków
phrase: Zostanie wykryte nawet, gdy znajduje się za ostrzeżeniem o zawartości
+ scopes: Wybór API, do których aplikacja będzie miała dostęp. Jeżeli wybierzesz nadrzędny zakres, nie musisz wybierać jego elementów.
setting_default_language: Język Twoich wpisów może być wykrywany automatycznie, ale nie zawsze jest to dokładne
setting_hide_network: Informacje o tym, kto Cię śledzi i kogo śledzisz nie będą widoczne
setting_noindex: Wpływa na widoczność strony profilu i Twoich wpisów
setting_theme: Zmienia wygląd Mastodona po zalogowaniu z dowolnego urządzenia.
+ whole_word: Jeśli słowo lub fraza składa się jedynie z liter lub cyfr, filtr będzie zastosowany tylko do pełnych wystąpień
imports:
data: Plik CSV wyeksportowany z innej instancji Mastodona
sessions:
@@ -54,6 +57,7 @@ pl:
expires_in: Wygaśnie po
fields: Metadane profilu
header: Nagłówek
+ inbox_url: Adres skrzynki przekaźnika
irreversible: Usuwaj zamiast ukrywać
locale: Język interfejsu
locked: Ustaw konto jako prywatne
@@ -81,6 +85,7 @@ pl:
type: Importowane dane
username: Nazwa użytkownika
username_or_email: Nazwa użytkownika lub adres e-mail
+ whole_word: Całe słowo
interactions:
must_be_follower: Nie wyświetlaj powiadomień od osób, które Cię nie śledzą
must_be_following: Nie wyświetlaj powiadomień od osób, których nie śledzisz
@@ -92,6 +97,7 @@ pl:
follow_request: Powiadamiaj mnie e-mailem, gdy ktoś poprosi o pozwolenie na śledzenie mnie
mention: Powiadamiaj mnie e-mailem, gdy ktoś o mnie wspomni
reblog: Powiadamiaj mnie e-mailem, gdy ktoś podbije mój wpis
+ report: Powiadamiaj mnie e-mailem, gdy zostanie utworzone nowe zgłoszenie
'no': Nie
required:
mark: "*"
diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml
index 9b72c7a7a..013b26066 100644
--- a/config/locales/simple_form.pt-BR.yml
+++ b/config/locales/simple_form.pt-BR.yml
@@ -4,7 +4,7 @@ pt-BR:
hints:
defaults:
autofollow: Pessoas que se cadastrarem através de seu convite te seguirão automaticamente
- avatar: PNG, GIF or JPG. Arquivos de até 2MB. Eles serão diminuídos para 400x400px
+ avatar: PNG, GIF or JPG. Arquivos de até %{size}. Eles serão diminuídos para %{dimensions}px
bot: Essa conta executa principalmente ações automatizadas e pode não ser monitorada
context: Um ou mais contextos onde o filtro deve ser aplicado
digest: Enviado após um longo período de inatividade com um resumo das menções que você recebeu em sua ausência
@@ -12,7 +12,8 @@ pt-BR:
one:
1 caracter restante
other:
%{count} caracteres restantes
fields: Você pode ter até 4 itens exibidos em forma de tabela no seu perfil
- header: PNG, GIF or JPG. Arquivos de até 2MB. Eles serão diminuídos para 700x335px
+ header: PNG, GIF or JPG. Arquivos de até %{size}. Eles serão diminuídos para %{dimensions}px
+ inbox_url: Copie a URL da página inicial do repetidor que você quer usar
irreversible: Os toots filtrados vão desaparecer irreversivelmente, mesmo se o filtro for removido depois
locale: O idioma das telas de usuário, e-mails e notificações push
locked: Requer aprovação manual de seguidores
@@ -25,6 +26,7 @@ pt-BR:
setting_hide_network: Quem você segue e quem segue você não serão exibidos no seu perfil
setting_noindex: Afeta seu perfil público e as páginas de suas postagens
setting_theme: Afeta a aparência do Mastodon quando em sua conta em qualquer aparelho.
+ whole_word: Quando a palavra ou frase é inteiramente alfanumérica, ela será aplicada somente se corresponder a palavra inteira
imports:
data: Arquivo CSV exportado de outra instância do Mastodon
sessions:
@@ -51,6 +53,7 @@ pt-BR:
expires_in: Expira em
fields: Metadados do perfil
header: Cabeçalho
+ inbox_url: URL da caixa de entrada do repetidor
irreversible: Ignorar ao invés de esconder
locale: Idioma das telas
locked: Trancar conta
@@ -77,6 +80,7 @@ pt-BR:
type: Tipo de importação
username: Nome de usuário
username_or_email: Nome de usuário ou e-mail
+ whole_word: Palavra inteira
interactions:
must_be_follower: Bloquear notificações de não-seguidores
must_be_following: Bloquear notificações de pessoas que você não segue
diff --git a/config/locales/simple_form.pt.yml b/config/locales/simple_form.pt.yml
index 5b79bd29f..8c515c1de 100644
--- a/config/locales/simple_form.pt.yml
+++ b/config/locales/simple_form.pt.yml
@@ -3,12 +3,12 @@ pt:
simple_form:
hints:
defaults:
- avatar: PNG, GIF or JPG. Arquivos até 2MB. Vão ser reduzidos para 400x400px
+ avatar: PNG, GIF or JPG. Arquivos até %{size}. Vão ser reduzidos para %{dimensions}px
digest: Enviado após um longo período de inatividade e apenas se foste mencionado na tua ausência
display_name:
one:
1 caracter restante
other:
%{count} caracteres restantes
- header: PNG, GIF or JPG. Arquivos até 2MB. Vão ser reduzidos para 700x335px
+ header: PNG, GIF or JPG. Arquivos até %{size}. Vão ser reduzidos para %{dimensions}px
locked: Requer aprovação manual de seguidores
note:
one:
1 caracter restante
diff --git a/config/locales/simple_form.ro.yml b/config/locales/simple_form.ro.yml
new file mode 100644
index 000000000..31eb21a77
--- /dev/null
+++ b/config/locales/simple_form.ro.yml
@@ -0,0 +1,3 @@
+---
+ro:
+ simple_form: {}
diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml
index 6bb95b13f..3ca176a1f 100644
--- a/config/locales/simple_form.ru.yml
+++ b/config/locales/simple_form.ru.yml
@@ -3,8 +3,10 @@ ru:
simple_form:
hints:
defaults:
- avatar: PNG, GIF или JPG. Максимально 2MB. Будет уменьшено до 400x400px
+ autofollow: Люди, пришедшие по этому приглашению автоматически будут подписаны на Вас
+ avatar: PNG, GIF или JPG. Максимально %{size}. Будет уменьшено до %{dimensions}px
bot: Этот аккаунт обычно выполяет автоматизированные действия и может не просматриваться владельцем
+ context: Один или несколько контекстов, к которым должны быть применены фильтры
digest: Отсылается лишь после длительной неактивности, если Вы в это время получали личные сообщения
display_name:
few: Осталось
%{count} символа
@@ -12,16 +14,23 @@ ru:
one: Остался
1 символ
other: Осталось
%{count} символов
fields: В профиле можно отобразить до 4 пунктов как таблицу
- header: PNG, GIF или JPG. Максимально 2MB. Будет уменьшено до 700x335px
+ header: PNG, GIF или JPG. Максимально %{size}. Будет уменьшено до %{dimensions}px
+ inbox_url: Копировать URL с главной страницы ретранслятора, который Вы хотите использовать
+ irreversible: Отфильтрованные статусы будут утеряны навсегда, даже если в будущем фильтр будет убран
+ locale: Язык интерфейса, e-mail писем и push-уведомлений
locked: Потребует от Вас ручного подтверждения подписчиков, изменит приватность постов по умолчанию на "только для подписчиков"
note:
few: Осталось
%{count} символа
many: Осталось
%{count} символов
one: Остался
1 символ
other: Осталось
%{count} символов
+ phrase: Будет сопоставлено независимо от присутствия в тексте или предупреждения о содержании статуса
+ scopes: Какие API приложению будет позволено использовать. Если Вы выберите самый верхний, нижестоящие будут выбраны автоматически.
+ setting_default_language: Язык Ваших статусов может быть определён автоматически, но не всегда правильно
setting_hide_network: Те, на кого Вы подписаны и кто подписан на Вас, не будут отображены в Вашем профиле
setting_noindex: Относится к Вашему публичному профилю и страницам статусов
setting_theme: Влияет на внешний вид Mastodon при выполненном входе в аккаунт.
+ whole_word: Если слово или фраза состоит только из букв и цифр, сопоставление произойдёт только по полному совпадению
imports:
data: Файл CSV, экспортированный с другого узла Mastodon
sessions:
@@ -32,26 +41,33 @@ ru:
name: Пункт
value: Значение
defaults:
+ autofollow: Пригласите подписаться на Ваш аккаунт
avatar: Аватар
bot: Это аккаунт бота
+ chosen_languages: Фильтр языков
confirm_new_password: Повторите новый пароль
confirm_password: Повторите пароль
+ context: Контекст фильтра
current_password: Текущий пароль
data: Данные
display_name: Показываемое имя
email: Адрес e-mail
- expires_in: Срок действия
+ expires_in: Истекает через
fields: Метаданные профиля
header: Заголовок
- locale: Язык
+ inbox_url: URL для входящих от ретрансляторов
+ irreversible: Удалять, а не скрывать
+ locale: Язык интерфейса
locked: Сделать аккаунт закрытым
max_uses: Макс. число использований
new_password: Новый пароль
note: О Вас
otp_attempt: Двухфакторный код
password: Пароль
+ phrase: Слово или фраза
setting_auto_play_gif: Автоматически проигрывать анимированные GIF
setting_boost_modal: Показывать диалог подтверждения перед продвижением
+ setting_default_language: Язык отправляемых статусов
setting_default_privacy: Видимость постов
setting_default_sensitive: Всегда отмечать медиаконтент как чувствительный
setting_delete_modal: Показывать диалог подтверждения перед удалением
@@ -66,6 +82,7 @@ ru:
type: Тип импорта
username: Имя пользователя
username_or_email: Имя пользователя или e-mail
+ whole_word: Слово целиком
interactions:
must_be_follower: Заблокировать уведомления не от подписчиков
must_be_following: Заблокировать уведомления от людей, на которых Вы не подписаны
@@ -77,6 +94,7 @@ ru:
follow_request: Уведомлять по e-mail, когда кто-то запрашивает разрешение на подписку
mention: Уведомлять по e-mail, когда кто-то упомянул Вас
reblog: Уведомлять по e-mail, когда кто-то продвинул Ваш статус
+ report: Уведомлять по e-mail при создании жалобы
'no': Нет
required:
mark: "*"
diff --git a/config/locales/simple_form.sk.yml b/config/locales/simple_form.sk.yml
index 39fa3b833..c9ec7fb20 100644
--- a/config/locales/simple_form.sk.yml
+++ b/config/locales/simple_form.sk.yml
@@ -4,7 +4,7 @@ sk:
hints:
defaults:
autofollow: Ľudia ktorí sa zaregistrujú prostredníctvom pozvánky, ťa budú inheď následovať
- avatar: PNG, GIF alebo JPG. Maximálne 2MB. Bude zmenšený na 400x400px
+ avatar: PNG, GIF alebo JPG. Maximálne %{size}. Bude zmenšený na %{dimensions}px
bot: Tento účet vykonáva hlavne automatizované akcie, a je pravdepodobne nespravovaný
context: Jedno, alebo viac kritérií, v ktorých má byť filtrovanie uplatnené
digest: Odoslané iba v prípade dlhodobej neprítomnosti, a len ak si obdŕžal/a nejaké osobné správy kým si bol/a preč
@@ -13,7 +13,8 @@ sk:
one: Ostáva ti
1 znak
other: Ostáva ti
%{count} znakov
fields: Môžeš mať 4 položky na svojom profile zobrazené vo forme tabuľky
- header: PNG, GIF alebo JPG. Maximálne 2MB. Bude zmenšený na 700x335px
+ header: PNG, GIF alebo JPG. Maximálne %{size}. Bude zmenšený na %{dimensions}px
+ inbox_url: Skopíruj adresu z hlavnej stránky mostíka, ktorý chceš používať
irreversible: Vytriedené príspevky zmiznú nenávratne, aj keď triedenie neskôr zrušíš
locale: Jazyk užívateľského rozhrania, emailových a nástenkových oboznámení
locked: Vyžaduje manuálne schvalovať sledujúcich
@@ -27,6 +28,7 @@ sk:
setting_hide_network: Koho následuješ, a kto následuje teba nebude zobrazené na tvojom profile
setting_noindex: Ovplyvňuje verejný profil a statusy
setting_theme: Toto ovplyvňuje ako Mastodon vyzerá pri prihlásení z hociakého zariadenia.
+ whole_word: Ak je kľúčové slovo, alebo fráza poskladaná iba s písmen a čísel, bude použité iba ak sa zhoduje s celým výrazom
imports:
data: CSV súbor vyexportovaný z inej Mastodon inštancie
sessions:
@@ -53,6 +55,7 @@ sk:
expires_in: Expirovať po
fields: Metadáta profilu
header: Obrázok v hlavičke
+ inbox_url: URL adresa prechodnej schránky
irreversible: Zahoď, namiesto skritia
locale: Jazyk rozhrania
locked: Zamknúť účet
@@ -79,6 +82,7 @@ sk:
type: Typ importu
username: Prezývka
username_or_email: Prezívka, alebo email
+ whole_word: Celé slovo
interactions:
must_be_follower: Blokovať oznámenia od užívateľov, ktorí ťa nesledujú
must_be_following: Blokovať oboznámenia ohľadom ľudí ktorých nesleduješ
diff --git a/config/locales/simple_form.sl.yml b/config/locales/simple_form.sl.yml
index 31d1e1170..0f86841d3 100644
--- a/config/locales/simple_form.sl.yml
+++ b/config/locales/simple_form.sl.yml
@@ -3,13 +3,13 @@ sl:
simple_form:
hints:
defaults:
- avatar: PNG, GIF ali JPG. Največ 2MB. Zmanjšana bo na 400x400px
+ avatar: PNG, GIF ali JPG. Največ %{size}. Zmanjšana bo na %{dimensions}px
bot: Opozarja ljudi, da račun ne predstavlja osebe
digest: Pošlje se le po dolgem obdobju nedejavnosti in samo, če ste prejeli osebna sporočila v vaši odsotnosti
display_name:
one:
1 znak ostane
other:
%{count} znakov ostane
fields: Na svojem profilu lahko imate do 4 predmete prikazane kot tabelo.
- header: PNG, GIF ali JPG. Največ 2MB. Zmanjšana bo na 700x335px
+ header: PNG, GIF ali JPG. Največ %{size}. Zmanjšana bo na %{dimensions}px
imports:
data: Izvožena CSV datoteka iz drugega Mastodon vozlišča
diff --git a/config/locales/simple_form.sr-Latn.yml b/config/locales/simple_form.sr-Latn.yml
index 608630c0c..259ac0046 100644
--- a/config/locales/simple_form.sr-Latn.yml
+++ b/config/locales/simple_form.sr-Latn.yml
@@ -3,14 +3,14 @@ sr-Latn:
simple_form:
hints:
defaults:
- avatar: PNG, GIF ili JPG. Najviše 2MB. Biće smanjena na 400x400px
+ avatar: PNG, GIF ili JPG. Najviše %{size}. Biće smanjena na %{dimensions}px
digest: Poslato posle dužeg perioda neaktivnosti sa pregledom svih bitnih stvari koje ste dobili dok ste bili odsutni
display_name:
few:
%{count} karaktera preostala
many:
%{count} karaktera preostalo
one:
1 karakter preostao
other:
%{count} karaktera preostalo
- header: PNG, GIF ili JPG. Najviše 2MB. Biće smanjena na 700x335px
+ header: PNG, GIF ili JPG. Najviše %{size}. Biće smanjena na %{dimensions}px
locked: Zahteva da pojedinačno odobrite pratioce
note:
few:
%{count} karaktera preostal
diff --git a/config/locales/simple_form.sr.yml b/config/locales/simple_form.sr.yml
index ab9ef0f49..3fac11eb8 100644
--- a/config/locales/simple_form.sr.yml
+++ b/config/locales/simple_form.sr.yml
@@ -3,37 +3,62 @@ sr:
simple_form:
hints:
defaults:
- avatar: PNG, GIF или JPG. Највише 2MB. Биће смањена на 400x400px
+ autofollow: Особе које се пријаве кроз позивнице ће вас аутоматски запратити
+ avatar: PNG, GIF или JPG. Највише %{size}. Биће смањена на %{dimensions}px
+ bot: Овај налог углавном врши аутоматизоване радње и можда се не надгледа
+ context: Један или више контекста у којима треба да се примени филтер
digest: Послато после дужег периода неактивности са прегледом свих битних ствари које сте добили док сте били одсутни
display_name:
few:
%{count} карактера преостала
many:
%{count} карактера преостало
one:
1 карактер преостао
other:
%{count} карактера преостало
- header: PNG, GIF или JPG. Највише 2MB. Биће смањена на 700x335px
+ fields: Можете имати до 4 ставке приказане као табела на вашем профилу
+ header: PNG, GIF или JPG. Највише %{size}. Биће смањена на %{dimensions}px
+ inbox_url: Копирајте URL са насловне стране релеја који желите користити
+ irreversible: Филтриранe трубе ће нестати неповратно, чак и ако је филтер касније уклоњен
+ locale: Језик корисничког интерфејса, е-поште и мобилних обавештења
locked: Захтева да појединачно одобрите пратиоце
note:
few:
%{count} карактера преостал
many:
%{count} карактера преостало
one:
1 карактер преостао
other:
%{count} карактера преостало
+ phrase: Биће упарена без обзира на велико или мало слово у тексту или упозорења о садржају трубе
+ scopes: Којим API-јима ће апликација дозволити приступ. Ако изаберете опсег највишег нивоа, не морате одабрати појединачне.
+ setting_default_language: Језик ваших труба може бити аутоматски откривен, али није увек прецизан
+ setting_hide_network: Кога пратите и ко вас прати неће бити приказано на вашем профилу
setting_noindex: Утиче на Ваш јавни профил и статусне стране
setting_theme: Утиче како ће Мастодонт изгледати када сте пријављени са било ког уређаја.
+ whole_word: Када је кључна реч или фраза искључиво алфанумеричка, биће примењена само ако се подудара са целом речи
imports:
data: CSV фајл извезен са друге Мастодонт инстанце
sessions:
- otp: Унесите двофакторски код са Вашег телефона или користите један од кодова за опоравак.
+ otp: 'Унесите двофакторски код са Вашег телефона или користите један од кодова за опоравак:'
+ user:
+ chosen_languages: Када означите, трубе у изабраним језицима ће се приказати на јавној временској линији
labels:
+ account:
+ fields:
+ name: Етикета
+ value: Садржај
defaults:
+ autofollow: Позовите да прати ваш налог
avatar: Аватар
+ bot: Ово је налог бота
+ chosen_languages: Филтрирај језике
confirm_new_password: Потврдите нову лозинку
confirm_password: Потврдите лозинку
+ context: Филтрирај контексте
current_password: Тренутна лозинка
data: Подаци
display_name: Име за приказ
email: Адреса е-поште
expires_in: Истиче након
+ fields: Профилирај метаподатке
header: Заглавље
+ inbox_url: URL од релејног пријемног сандучета
+ irreversible: Испустити уместо сакрити
locale: Језик
locked: Закључај налог
max_uses: Максимални број коришћења
@@ -41,11 +66,15 @@ sr:
note: Биографија
otp_attempt: Двофакторски код
password: Лозинка
+ phrase: Кључна реч или фраза
setting_auto_play_gif: Аутоматски пуштај анимиране GIF-ове
setting_boost_modal: Прикажи дијалог за потврду пре давања подршке
+ setting_default_language: Језик објављивања
setting_default_privacy: Приватност објава
setting_default_sensitive: Увек означи мултимедију као осетљиву
setting_delete_modal: Прикажи дијалог за потврду пре брисања тута
+ setting_display_sensitive_media: Увек покажи означен садржај као осетљив
+ setting_hide_network: Сакриј своју мрежу
setting_noindex: Одјави се од индексирања search engine-а
setting_reduce_motion: Смањи покрете у анимацијама
setting_system_font_ui: Користи системски фонт
@@ -54,6 +83,8 @@ sr:
severity: Оштрина
type: Тип увоза
username: Корисничко име
+ username_or_email: Корисничко име или Е-пошта
+ whole_word: Цела реч
interactions:
must_be_follower: Блокирај обавештења од корисника који ме не прате
must_be_following: Блокирај обавештења од људи које не пратим
@@ -65,6 +96,7 @@ sr:
follow_request: Шаљи е-пошту када неко затражи да Вас запрати
mention: Шаљи е-пошту када Вас неко помене
reblog: Шаљи е-пошту када неко подржи Ваш статус
+ report: Пошаљи Е-пошту када се поднесе нова пријава
'no': Не
required:
mark: "*"
diff --git a/config/locales/simple_form.sv.yml b/config/locales/simple_form.sv.yml
index e761f3d99..7a10aa1e2 100644
--- a/config/locales/simple_form.sv.yml
+++ b/config/locales/simple_form.sv.yml
@@ -4,14 +4,14 @@ sv:
hints:
defaults:
autofollow: Användarkonton som skapas genom din inbjudan kommer automatiskt följa dig
- avatar: Högst 2 MB. Kommer att skalas ner till 400x400px
+ avatar: Högst %{size}. Kommer att skalas ner till %{dimensions}px
bot: Detta konto utför huvudsakligen automatiserade åtgärder och kanske inte övervakas
digest: Skickas endast efter en lång period av inaktivitet och endast om du har fått några personliga meddelanden i din frånvaro
display_name:
one:
1 tecken kvar
other:
%{count} tecken kvar
fields: Du kan ha upp till 4 objekt visade som en tabell på din profil
- header: NG, GIF eller JPG. Högst 2 MB. Kommer nedskalas till 700x335px
+ header: NG, GIF eller JPG. Högst %{size}. Kommer nedskalas till %{dimensions}px
locale: Användargränssnittets språk, e-post och push aviseringar
locked: Kräver att du manuellt godkänner följare
note:
diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml
index 575b6a9f4..29491de0b 100644
--- a/config/locales/simple_form.th.yml
+++ b/config/locales/simple_form.th.yml
@@ -3,11 +3,11 @@ th:
simple_form:
hints:
defaults:
- avatar: PNG, GIF or JPG. At most 2MB. Will be downscaled to 400x400px
+ avatar: PNG, GIF or JPG. At most %{size}. Will be downscaled to %{dimensions}px
display_name:
one:
1 character left
other:
%{count} characters left
- header: PNG, GIF or JPG. At most 2MB. Will be downscaled to 700x335px
+ header: PNG, GIF or JPG. At most %{size}. Will be downscaled to %{dimensions}px
locked: Requires you to manually approve followers and defaults post privacy to followers-only
note:
one:
1 character left
diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml
index c827aac46..bd5c65d83 100644
--- a/config/locales/simple_form.tr.yml
+++ b/config/locales/simple_form.tr.yml
@@ -3,9 +3,9 @@ tr:
simple_form:
hints:
defaults:
- avatar: En fazla 2MB olacak şekilde PNG, GIF veya JPG formatında yükleyiniz. 400x400px büyüklüğüne indirgenecektir
+ avatar: En fazla %{size} olacak şekilde PNG, GIF veya JPG formatında yükleyiniz. %{dimensions}px büyüklüğüne indirgenecektir
display_name:
%{count} karakter kaldı
- header: En fazla 2MB olacak şekilde PNG, GIF veya JPG formatında yükleyiniz. 700x335px büyüklüğüne indirgenecektir.
+ header: En fazla %{size} olacak şekilde PNG, GIF veya JPG formatında yükleyiniz. %{dimensions}px büyüklüğüne indirgenecektir.
locked: Takipçilerinizi manuel olarak kabul etmenizi ve gönderilerinizi varsayılan olarak sadece takipçilerinizin göreceği şekilde paylaşmanızı sağlar.
note:
%{count} karakter kaldı
imports:
diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml
index 7bc3ee4b8..834631fdf 100644
--- a/config/locales/simple_form.uk.yml
+++ b/config/locales/simple_form.uk.yml
@@ -3,9 +3,10 @@ uk:
simple_form:
hints:
defaults:
- avatar: PNG, GIF, або JPG. Максимум - 2МБ. Буде зменшено до 400x400px
+ avatar: PNG, GIF, або JPG. Максимум - 2МБ. Буде зменшено до %{dimensions}px
+ bot: Цей аккаунт в основному виконує автоматичні дії та може не відстежуватіся
display_name: 'Залишилося символів:
%{count}'
- header: PNG, GIF, або JPG. Максимум - 2МБ. Буде зменшено до 700x335px
+ header: PNG, GIF, або JPG. Максимум - 2МБ. Буде зменшено до %{dimensions}px
locked: Буде вимагати від Вас самостійного підтверждення підписників, змінить приватність постів за замовчуванням на "тільки для підписників"
note: 'Осталось символов:
%{count}'
imports:
diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml
index ce990d692..b84f7107d 100644
--- a/config/locales/simple_form.zh-CN.yml
+++ b/config/locales/simple_form.zh-CN.yml
@@ -4,12 +4,12 @@ zh-CN:
hints:
defaults:
autofollow: 通过邀请链接注册的用户将会自动关注你
- avatar: 文件大小限制 2MB,只支持 PNG、GIF 或 JPG 格式。图片分辨率将会压缩至 400×400px
+ avatar: 文件大小限制 %{size},只支持 PNG、GIF 或 JPG 格式。图片分辨率将会压缩至 400×400px
bot: 来自这个帐户的绝大多数操作都是自动进行的,并且可能无人监控
digest: 仅在你长时间未登录,且收到了私信时发送
display_name: 还能输入
%{count} 个字符
fields: 这将会在个人资料页上以表格的形式展示,最多 4 个项目
- header: 文件大小限制 2MB,只支持 PNG、GIF 或 JPG 格式。图片分辨率将会压缩至 700×335px
+ header: 文件大小限制 %{size},只支持 PNG、GIF 或 JPG 格式。图片分辨率将会压缩至 700×335px
locale: 用户界面、电子邮件和推送通知中使用的语言
locked: 你需要手动审核所有关注请求
note: 还能输入
%{count} 个字符
diff --git a/config/locales/simple_form.zh-HK.yml b/config/locales/simple_form.zh-HK.yml
index 0575c09f8..abe6b7e06 100644
--- a/config/locales/simple_form.zh-HK.yml
+++ b/config/locales/simple_form.zh-HK.yml
@@ -4,14 +4,14 @@ zh-HK:
hints:
defaults:
autofollow: 通過邀請網址註冊的用戶將會自動關注你
- avatar: 支援 PNG, GIF 或 JPG 圖片,檔案最大為 2MB,會縮裁成 400x400px
+ avatar: 支援 PNG, GIF 或 JPG 圖片,檔案最大為 %{size},會縮裁成 %{dimensions}px
bot: 提醒用戶本帳號是機械人
digest: 僅在你長時間未登錄,且收到了私信時發送
display_name:
one: 尚餘
1 個字
other: 尚餘
%{count} 個字
fields: 個人資料頁可顯示多至 4 個項目
- header: 支援 PNG, GIF 或 JPG 圖片,檔案最大為 2MB,會縮裁成 700x335px
+ header: 支援 PNG, GIF 或 JPG 圖片,檔案最大為 %{size},會縮裁成 %{dimensions}px
locale: 使用者介面、電郵和通知的語言
locked: 你必須人手核准每個用戶對你的關注請求,而你的文章私隱會被預設為「只有關注你的人能看」
note:
diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml
index 6b1dbae91..3763fc747 100644
--- a/config/locales/simple_form.zh-TW.yml
+++ b/config/locales/simple_form.zh-TW.yml
@@ -4,14 +4,14 @@ zh-TW:
hints:
defaults:
autofollow: 通過邀請網址註冊的使用者將會自動關注你
- avatar: 支援 PNG, GIF 或 JPG 圖片,檔案最大為 2MB,會縮裁成 400x400px
+ avatar: 支援 PNG, GIF 或 JPG 圖片,檔案最大為 %{size},會縮裁成 %{dimensions}px
bot: 這個帳號由程式進行自動式操作
digest: 僅在你長時間未登入,並且收到了私訊時發送
display_name:
one: 尚餘
1 個字
other: 尚餘
%{count} 個字
fields: 個人資訊頁至多可顯示 4 個項目
- header: 支援 PNG, GIF 或 JPG 圖片,檔案最大為 2MB,會縮裁成 700x335px
+ header: 支援 PNG, GIF 或 JPG 圖片,檔案最大為 %{size},會縮裁成 %{dimensions}px
locale: 使用者介面、 E-mail 與通知的語言
locked: 你必須手動核准每個使用者對你的關注請求,而你的貼文隱私將會被設定為「只有關注你的人能看」
note:
diff --git a/config/locales/sk.yml b/config/locales/sk.yml
index 7dc7a751f..1be11baa4 100644
--- a/config/locales/sk.yml
+++ b/config/locales/sk.yml
@@ -9,9 +9,6 @@ sk:
contact: Kontakt
contact_missing: Nezadané
contact_unavailable: Neuvedené
- description_headline: Čo je %{domain}?
- domain_count_after: ďalším instanciám
- domain_count_before: Pripojený k
extended_description_html: |
Pravidlá
Žiadne zatiaľ nie sú
@@ -46,7 +43,6 @@ sk:
people_who_follow: Ľudia sledujúci %{name}
posts: Príspevky
posts_with_replies: Príspevky s odpoveďami
- remote_follow: Sleduj vzdialeného
reserved_username: Prihlasovacie meno je rezervované
roles:
admin: Administrátor
@@ -206,6 +202,19 @@ sk:
update_failed_msg: Nebolo možné aktualizovať toto emoji
updated_msg: Emoji bolo úspešne aktualizované!
upload: Nahrať
+ dashboard:
+ config: Nastavenia
+ feature_deletions: Vymazanie účtov
+ feature_invites: Pozvánky
+ feature_registrations: Registrácie
+ feature_relay: Federovací mostík
+ features: Vymoženosti
+ hidden_service: Federácia so skritými službami
+ open_reports: otvorené hlásenia
+ recent_users: Nedávny užívatelia
+ software: Softvér
+ space: Využitie miesta
+ total_users: užívateľov celkovo
domain_blocks:
add_new: Pridať nový
created_msg: Doména je v procese blokovania
@@ -259,9 +268,13 @@ sk:
filter:
all: Všetky
available: Dostupné
- expired: Expirované
+ expired: Vypršalo
title: Filtrovať
title: Pozvánky
+ relays:
+ add_new: Pridaj novú priechodnú oporu
+ description_html: "
Federovací mostík je prechodný server ktorý obmieňa veľké množstvá verejných príspevkov medzi tými servermi ktoré na od neho odoberajú, aj doňho prispievajú.
Môže to pomôcť malým a stredným instanciám objavovať federovaný obsah, čo inak vyžaduje aby miestni užívatelia ručne následovali iných ľudí zo vzdialených instancií."
+ status: Stav
report_notes:
created_msg: Poznámka o nahlásení úspešne vytvorená!
destroyed_msg: Poznámka o nahlásení úspešne vymazaná!
@@ -423,11 +436,11 @@ sk:
authorize_follow:
already_following: Tento účet už následuješ
error: Naneštastie nastala chyba pri hľadaní vzdialeného účtu
- follow: Následovať
- follow_request: 'Poslali ste požiadavku následovať užívateľa:'
- following: 'Podarilo sa! Teraz už následujete užívateľa:'
+ follow: Následuj
+ follow_request: 'Poslal/a si žiadosť následovať užívateľa:'
+ following: 'Podarilo sa! Teraz už následuješ užívateľa:'
post_follow:
- close: Alebo môžete iba zatvoriť toto okno.
+ close: Alebo môžeš iba zatvoriť toto okno.
return: Ukáž užívateľov profil
web: Prejdi do siete
title: Následuj %{acct}
@@ -509,7 +522,6 @@ sk:
unlocked_warning_title: Tvoj účet nieje zamknutý
generic:
changes_saved_msg: Zmeny boli úspešne uložené!
- powered_by: poháňané vďaka %{link}
save_changes: Uložiť zmeny
validation_errors:
few: Niečo ešte stále nieje v poriadku! Prosím skontroluj všetky %{count} chyby
@@ -547,8 +559,6 @@ sk:
expires_at: Vyprší
uses: Používa
title: Pozvi ľudí
- landing_strip_html: "
%{name} je užívateľ na serveri %{link_to_root_path}. Ty ich môžeš následovať a môžeš s nimi interaktovať pokiaľ máš účet kdekoľvek v rámci fediversa."
- landing_strip_signup_html: Pokiaľ ešte nemáš, môžeš
si tu vytvoriť účet.
lists:
errors:
limit: Dosiahli ste maximálny možný počet zoznamov
@@ -635,6 +645,7 @@ sk:
browser: Prehliadač
browsers:
alipay: Alipay
+ blackberry: RIM Blackberry
chrome: Google Chrome
edge: Microsoft Edge
electron: Electron
@@ -707,7 +718,6 @@ sk:
unlisted: Nezaradené
unlisted_long: Všetci môžu vidieť, ale nieje zaradené do verejnej osi
stream_entries:
- click_to_show: Klikni pre zobrazenie
pinned: Pripnutý toot
reblogged: vyzdvihnutý
sensitive_content: Senzitívny obsah
diff --git a/config/locales/sl.yml b/config/locales/sl.yml
index 6f581f838..f7ef65423 100644
--- a/config/locales/sl.yml
+++ b/config/locales/sl.yml
@@ -9,9 +9,6 @@ sl:
contact: Kontakt
contact_missing: Ni nastavljeno
contact_unavailable: Ni na voljo
- description_headline: Kaj je %{domain}?
- domain_count_after: ostala vozlišča
- domain_count_before: Povezan z
extended_description_html: |
Dober prostor za pravila
Razširjen opis še ni bil nastavljen.
@@ -42,7 +39,6 @@ sl:
people_who_follow: Ljudje, ki sledijo %{name}
posts: Tuti
posts_with_replies: Tuti in odgovori
- remote_follow: Oddaljeno sledenje
reserved_username: Uporabniško ime je zasedeno
roles:
admin: Skrbnik
diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml
index 15c6b00ac..d9813db47 100644
--- a/config/locales/sr-Latn.yml
+++ b/config/locales/sr-Latn.yml
@@ -8,9 +8,6 @@ sr-Latn:
contact: Kontakt
contact_missing: Nije postavljeno
contact_unavailable: N/A
- description_headline: Šta je %{domain}?
- domain_count_after: ostale instance
- domain_count_before: Povezan na
extended_description_html: |
Dobro mesto za pravila
Prošireni opis koji još nije postavljen.
@@ -44,7 +41,6 @@ sr-Latn:
people_who_follow: Ljudi koji prate %{name}
posts: Tutovi
posts_with_replies: Tutovi i odgovori
- remote_follow: Udaljena praćenja
reserved_username: Korisničko ime je rezervisano
roles:
admin: Administrator
@@ -422,7 +418,6 @@ sr-Latn:
unlocked_warning_title: Vaš nalog nije zaključan
generic:
changes_saved_msg: Izmene uspešno sačuvane!
- powered_by: omogućio %{link}
save_changes: Snimi izmene
validation_errors:
few: Nešto nije baš kako treba! Pregledajte %{count} greške ispod
@@ -460,8 +455,6 @@ sr-Latn:
expires_at: Ističe
uses: Korišćenja
title: Pozovi ljude
- landing_strip_html: "
%{name} je korisnik na %{link_to_root_path}. Možete ga zapratiti ili komunicirati sa njim ako imte nalog bilo gde u fediversu."
- landing_strip_signup_html: Ako nemate, možete se
registrovati ovde.
lists:
errors:
limit: Dostigli ste limit broja listi
@@ -602,7 +595,6 @@ sr-Latn:
unlisted: Neizlistano
unlisted_long: Svako može da vidi, ali nije izlistano na javnim lajnama
stream_entries:
- click_to_show: Klikni da vidiš
pinned: Prikačeni tut
reblogged: podržano
sensitive_content: Osetljiv sadržaj
diff --git a/config/locales/sr.yml b/config/locales/sr.yml
index 040090932..516908415 100644
--- a/config/locales/sr.yml
+++ b/config/locales/sr.yml
@@ -5,13 +5,13 @@ sr:
about_mastodon_html: Мастодонт је друштвена мрежа базирана на отвореним протоколима и слободном софтверу отвореног кода. Децентрализована је као што је децентрализована е-пошта.
about_this: О инстанци
administered_by: 'Администрирано од стране:'
+ api: API
+ apps: Мобилне апликације
closed_registrations: Регистрације су тренутно затворене на овој инстанци. Ипак! Можете наћи другу инстанцу на којој ћете направити налог и одатле добити приступ истој овој мрежи.
contact: Контакт
contact_missing: Није постављено
contact_unavailable: N/A
- description_headline: Шта је %{domain}?
- domain_count_after: остале инстанце
- domain_count_before: Повезан на
+ documentation: Документација
extended_description_html: |
Добро место за правила
Проширени опис који још није постављен.
@@ -28,24 +28,34 @@ sr:
hosted_on: Мастодонт хостован на %{domain}
learn_more: Сазнајте више
other_instances: Листа инстанци
+ privacy_policy: Полиса приватности
source_code: Изворни код
- status_count_after: статуса
+ status_count_after:
+ one: статус
+ other: статуси
status_count_before: Који су написали
- user_count_after: корисника
+ terms: Услови коришћења
+ user_count_after:
+ one: корисник
+ other: корисници
user_count_before: Дом за
what_is_mastodon: Шта је Мастодонт?
accounts:
+ choices_html: "%{name}'s избори:"
follow: Follow
- followers: Followers
+ followers:
+ one: Пратилац
+ other: Пратиоци
following: Following
+ joined: Придружио/ла се %{date}
media: Мултимедија
moved_html: "%{name} је померен на %{new_profile_link}:"
+ network_hidden: Ова информација није доступна
nothing_here: Овде нема ништа!
people_followed_by: Људи које %{name} прати
people_who_follow: Људи који прате %{name}
posts: Тутови
posts_with_replies: Тутови и одговори
- remote_follow: Удаљена праћења
reserved_username: Корисничко име је резервисано
roles:
admin: Администратор
@@ -163,32 +173,54 @@ sr:
unsuspend_account: "%{name} је укинуо суспензију налогу %{target}"
update_custom_emoji: "%{name} је изменио емотикон %{target}"
update_status: "%{name} је изменио статус корисника %{target}"
+ deleted_status: "(обрисан статус)"
title: Записник
custom_emojis:
by_domain: Домен
- copied_msg: Успешно направљена локална копија емотикона
+ copied_msg: Успешно направљена локална копија емоџија
copy: Копирај
- copy_failed_msg: Не могу да направим локалну копију тог емотикона
- created_msg: Емотикон успешно направљен!
+ copy_failed_msg: Не могу да направим локалну копију тог емотиџија
+ created_msg: Емоџи успешно направљен!
delete: Обриши
- destroyed_msg: Емотикон успешно обрисан!
+ destroyed_msg: Емоџи успешно обрисан!
disable: Онемогући
- disabled_msg: Емотикон успешно онемогућен
- emoji: Емотикон
+ disabled_msg: Емоџи успешно онемогућен
+ emoji: Емоџи
enable: Омогући
- enabled_msg: Емотикон успешно омогућен
+ enabled_msg: Емоџи успешно омогућен
image_hint: PNG до 50KB
listed: Излистан
new:
- title: Додај нови произвољни емотикон
+ title: Додај нови произвољни емоџи
overwrite: Препиши
shortcode: Пречица
shortcode_hint: Најмање 2 карактера, дозвољени су само слова, бројеви и доње црте
- title: Произвољни емотикони
+ title: Произвољни емотиџији
unlisted: Неизлистан
- update_failed_msg: Не могу да ажурирам овај емотикон
- updated_msg: емотикон успешно ажуриран!
+ update_failed_msg: Не могу да ажурирам овај емоџи
+ updated_msg: Емоџи успешно ажуриран!
upload: Отпреми
+ dashboard:
+ backlog: Позадински записи
+ config: Конфигурација
+ feature_deletions: Брисање налога
+ feature_invites: Позивнице
+ feature_registrations: Регистрација
+ feature_relay: Федеративни релеј
+ features: Карактеристике
+ hidden_service: Федерација са скривеним услугама
+ open_reports: отворене пријаве
+ recent_users: Недавни корисници
+ search: Потпуна претрага текста
+ single_user_mode: Појединачни корисник
+ software: Софтвер
+ space: Коришћење простора
+ title: Командна табла
+ total_users: укупан број корисника
+ trends: Трендови
+ week_interactions: интеракције ове недеље
+ week_users_active: активно ове недеље
+ week_users_new: корисника ове недеље
domain_blocks:
add_new: Додај нови
created_msg: Блокирање домена се обрађује
@@ -198,13 +230,13 @@ sr:
create: Направи блокаду
hint: Блокирање домена неће спречити прављење налога у бази, али ће ретроактивно и аутоматски применити одређене модераторске методе над тим налозима.
severity:
- desc_html: "
Ућуткавање ће све статусе овог налога учинити невидиљивим за све, осим за оне који налог већ прате.
Суспензија ће уклонити сав садржај налога, сву мултимедију, и профилне податке. Користите
Ништа ако само желите да одбаците мултимедијалне фајлове."
+ desc_html: "
Ућуткавање ће све статусе овог налога учинити невидљивим за све, осим за оне који већ прате налог.
Суспензија ће уклонити сав садржај налога, сву мултимедију, и профилне податке. Користите
Ништа само ако желите да одбаците мултимедијалне фајлове."
noop: Ништа
silence: Ућуткавање
suspend: Суспензија
title: Ново блокирање домена
reject_media: Одбаци мултимедију
- reject_media_hint: Уклања локално ускладиштене мултимедијске фајлове и одбија да их скида на даље. Небитно је за суспензију.
+ reject_media_hint: Уклања локално ускладиштене мултимедијске фајлове и одбија да их скида убудуће. Небитно је за суспензију
severities:
noop: Ништа
silence: Ућуткавање
@@ -214,25 +246,25 @@ sr:
affected_accounts:
few: Утиче на %{count} налога у бази
many: Утиче на %{count} налога у бази
- one: Утиче на један налог у бази
- other: Утиче на %{count} налога у бази
+ one: Један налог у бази података је под утицајем
+ other: Утиче на %{count} налога у бази података
retroactive:
silence: Угаси ућуткивање за све постојеће налоге са овог домена
- suspend: Угаси суспензије за све постојеће налоге са овог домена
- title: Поништи блокаду домена за домен %{domain}
+ suspend: Уклони суспензије за све постојеће налоге са овог домена
+ title: Поништи блокаду домена за %{domain}
undo: Поништи
title: Блокаде домена
undo: Поништи
email_domain_blocks:
- add_new: Додај новуAdd new
- created_msg: Успешно додао домен е-поште на црну листу
+ add_new: Додај нови
+ created_msg: Успешно додао домен Е-поште на црну листу
delete: Уклони
- destroyed_msg: Успешно уклоњен домен е-поште са црне листе
+ destroyed_msg: Успешно уклоњен домен Е-поште са црне листе
domain: Домен
new:
create: Додај домен
- title: Нова ставка у црној листи е-пошти
- title: Црна листа адреса е-поште
+ title: Нова ставка е-поштe у црној листи
+ title: Црна листа E-поште
instances:
account_count: Познати налози
domain_name: Домен
@@ -240,12 +272,15 @@ sr:
search: Претрага
title: Познате инстанце
invites:
+ deactivate_all: Деактивирај све
filter:
all: Све
- available: Активне
- expired: Истекле
+ available: Доступни
+ expired: Истекли
title: Филтер
title: Позивнице
+ relays:
+ add_new: Додај нови релеј
reports:
action_taken_by: Акцију извео
are_you_sure: Да ли сте сигурни?
@@ -423,7 +458,6 @@ sr:
unlocked_warning_title: Ваш налог није закључан
generic:
changes_saved_msg: Измене успешно сачуване!
- powered_by: омогућио %{link}
save_changes: Сними измене
validation_errors:
few: Нешто није баш како треба! Прегледајте %{count} грешке испод
@@ -461,8 +495,6 @@ sr:
expires_at: Истиче
uses: Коришћења
title: Позови људе
- landing_strip_html: "
%{name} је корисник на %{link_to_root_path}. Можете га запратити или комуницирати са њим ако имте налог било где у федиверсу."
- landing_strip_signup_html: Ако немате, можете се
регистровати овде.
lists:
errors:
limit: Достигли сте лимит броја листи
@@ -603,7 +635,6 @@ sr:
unlisted: Неизлистано
unlisted_long: Свако може да види, али није излистано на јавним лајнама
stream_entries:
- click_to_show: Кликни да видиш
pinned: Прикачени тут
reblogged: подржано
sensitive_content: Осетљив садржај
diff --git a/config/locales/sv.yml b/config/locales/sv.yml
index 76b26c24f..605d9db12 100644
--- a/config/locales/sv.yml
+++ b/config/locales/sv.yml
@@ -9,9 +9,6 @@ sv:
contact: Kontakt
contact_missing: Inte inställd
contact_unavailable: N/A
- description_headline: Vad är %{domain}?
- domain_count_after: andra instanser
- domain_count_before: Uppkopplad mot
extended_description_html: |
En bra plats för regler
Den utökade beskrivningen har inte konfigurerats ännu.
@@ -46,7 +43,6 @@ sv:
people_who_follow: Personer som följer %{name}
posts: Toots
posts_with_replies: Toots med svar
- remote_follow: Avlägsen följare
reserved_username: Användarnamnet är reserverat
roles:
admin: Admin
@@ -488,7 +484,6 @@ sv:
unlocked_warning_title: Ditt konto är inte låst
generic:
changes_saved_msg: Ändringar sparades framgångsrikt!
- powered_by: drivs av %{link}
save_changes: Spara ändringar
validation_errors:
one: Något är inte riktigt rätt ännu! Kontrollera felet nedan
@@ -524,8 +519,6 @@ sv:
expires_at: Utgår
uses: Användningar
title: Bjud in andra
- landing_strip_html: "
%{name} är en användare på %{link_to_root_path}. Du kan följa dem eller interagera med dem om du har ett konto någonstans i federationen."
- landing_strip_signup_html: Om du inte gör det, så kan du
registrera dig här.
lists:
errors:
limit: Du har nått det maximala antalet listor
@@ -693,7 +686,6 @@ sv:
unlisted: Olistade
unlisted_long: Alla kan se, men listas inte på offentliga tidslinjer
stream_entries:
- click_to_show: Klicka för att visa
pinned: Fäst toot
reblogged: boostad
sensitive_content: Känsligt innehåll
diff --git a/config/locales/th.yml b/config/locales/th.yml
index 6804dbd13..88e1eb44c 100644
--- a/config/locales/th.yml
+++ b/config/locales/th.yml
@@ -5,9 +5,6 @@ th:
about_this: เกี่ยวกับอินซะแตนซ์นี้
closed_registrations: อินซะแตนซ์นี้ปิดรับลงทะเบียนแล้ว.
contact: ติดต่อ
- description_headline: โดเมนคือ %{domain} ?
- domain_count_after: อินซะแตนซ์อื่นๆ
- domain_count_before: เชื่อมต่อกับ
other_instances: อินซะแตนซ์อื่นๆ
source_code: ซอร์สโค๊ด
status_count_after: สถานะ
@@ -22,7 +19,6 @@ th:
people_followed_by: ถูกติดตามโดย %{name}
people_who_follow: คนที่ติดตาม %{name}
posts: โพสต์
- remote_follow: Remote follow
unfollow: เลิกติดตาม
admin:
accounts:
@@ -216,7 +212,6 @@ th:
unlocked_warning_title: แอคเค๊าท์ของคุณไม่ได้ล๊อค
generic:
changes_saved_msg: บันทึกการแก้ไขแล้ว!
- powered_by: powered by %{link}
save_changes: บันทึกการเปลี่ยนแปลง
validation_errors:
one: Something isn't quite right yet! Please review the error below
@@ -229,8 +224,6 @@ th:
following: Following list
muting: Muting list
upload: Upload
- landing_strip_html: "
%{name} is a user on %{link_to_root_path}. You can follow them or interact with them if you have an account anywhere in the fediverse."
- landing_strip_signup_html: If you don't, you can
sign up here.
media_attachments:
validations:
images_and_video: Cannot attach a video to a status that already contains images
@@ -302,7 +295,6 @@ th:
unlisted: Unlisted
unlisted_long: Everyone can see, but not listed on public timelines
stream_entries:
- click_to_show: คลิกเพื่อแสดง
reblogged: boosted
sensitive_content: Sensitive content
time:
diff --git a/config/locales/tr.yml b/config/locales/tr.yml
index 8bafbface..26dd4c1e3 100644
--- a/config/locales/tr.yml
+++ b/config/locales/tr.yml
@@ -5,9 +5,6 @@ tr:
about_this: Bu sunucu hakkında
closed_registrations: Bu sunucu şu anda yeni kayıt almamaktadır.
contact: İletişim
- description_headline: Peki %{domain} nedir?
- domain_count_after: sunucu var.
- domain_count_before: Bağlı olduğu
other_instances: Diğer sunucular
source_code: Kaynak kodu
status_count_after: adet gönderi yazıldı.
@@ -22,7 +19,6 @@ tr:
people_followed_by: Kullanıcı %{name}'in takip ettikleri
people_who_follow: Kullanıcı %{name}'i takip edenler
posts: Gönderiler
- remote_follow: Uzaktan takip et
unfollow: Takibi bırak
admin:
accounts:
@@ -214,7 +210,6 @@ tr:
unlocked_warning_title: Hesabınız kilitlendi
generic:
changes_saved_msg: Değişiklikler başarıyla kaydedildi!
- powered_by: powered by %{link}
save_changes: Değişiklikleri kaydet
validation_errors:
one: Bir şeyler ters gitti! Lütfen aşağıdaki hatayı gözden geçiriniz
@@ -227,8 +222,6 @@ tr:
following: Takip edilenler listesi
muting: Susturulanlar listesi
upload: Yükle
- landing_strip_html: "
%{name}, %{link_to_root_path} sunucusundaki bir kullanıcıdır. Onu takip edebilir, veya Mastodon ağındaki bir hesabınızı kullanarak etkileşime geçebilirsiniz."
- landing_strip_signup_html: Eğer hesabınız yoksa
buradan kaydolabilirsiniz.
media_attachments:
validations:
images_and_video: Halihazırda görsel içeren bir gönderiye video ekleyemezsiniz.
@@ -300,7 +293,6 @@ tr:
unlisted: Listelenmemiş
unlisted_long: Herkes görebilir fakat herkese açık zaman tünellerinde listelenmez.
stream_entries:
- click_to_show: Görüntülemek için tıklayınız
reblogged: boost edildi
sensitive_content: Hassas içerik
time:
diff --git a/config/locales/uk.yml b/config/locales/uk.yml
index 6fe46b4d9..6783495bb 100644
--- a/config/locales/uk.yml
+++ b/config/locales/uk.yml
@@ -1,50 +1,110 @@
---
uk:
about:
+ about_hashtag_html: Немає публічних постів з хештегом
#%{hashtag}. Ви можете You can interact with them if you have an account anywhere in the fediverse.
about_mastodon_html: Mastodon - це
вільна соціальна мережа з
відкритим вихідним кодом. Вона є
децентралізованою альтернативою комерційним платформам, що дозволяє уникнути ризиків монополізації вашого спілкування однією компанією. Виберіть сервер, якому ви довіряєте — що б ви не вибрали, Ви зможете спілкуватись з усіма іншими. Будь-який користувач може запустити власну інстанцію Mastodon та без проблем брати участь в
соціальній мережі.
about_this: Про цю інстанцію
+ administered_by: 'Адміністратор:'
+ api: API
closed_registrations: На даний момент реєстрація на цій інстанції закрита.
contact: Зв'язатися
- description_headline: Що таке %{domain}?
- domain_count_after: іншими інстанціями
- domain_count_before: Зв'язаний з
+ contact_missing: Не зазначено
+ contact_unavailable: Недоступно
+ documentation: Документація
+ extended_description_html: |
+
Гарне місце для правил
+
Детальний опис ще не налаштований.
+ features:
+ humane_approach_body: Навчаючись з помилок інших соціальних мереж, Mastodon націлений на етичні рішення для боротьби з направильним використанням соціальних медіа.
+ humane_approach_title: Більш людський підхід
+ not_a_product_body: Mastodon - це некомерційна мережа. Ніякої реклами, збору даних і залізних стін. Тут немає центральної влади.
+ not_a_product_title: Ви - особистість, а не продукт
+ real_conversation_body: Висловлюйте свої думки себе у будь-який спосіб маючи в розпорядженні 500 символів з підтримкою гранульованого контенту та попереджень медіа.
+ real_conversation_title: Побудований для справжньої розмови
+ within_reach_body: Велика кількість застосунків для iOS, Android та інших платформ, завдяки дружній до розробника екосистемі дозволяє бути на звязку з друзями звідусіль.
+ within_reach_title: Завжди на звязку
+ generic_description: "%{domain} є одним сервером у мережі"
+ hosted_on: Mastodon розміщено на %{domain}
+ learn_more: Дізнатися більше
other_instances: Інші інстанції
+ privacy_policy: Політика приватності
source_code: Вихідний код
status_count_after: статусів
status_count_before: Опубліковано
+ terms: Правила використання
user_count_after: користувачів
user_count_before: Тут живе
+ what_is_mastodon: Що таке Mastodon?
accounts:
follow: Підписатися
followers: Підписники
following: Підписаний(-а)
+ joined: Приєднався %{date}
+ media: Медіа
+ moved_html: "%{name} переїхав на %{new_profile_link}:"
+ network_hidden: Ця інформація недоступна
nothing_here: Тут нічого немає!
people_followed_by: Люди, на яких підписаний(-а) %{name}
people_who_follow: Підписники %{name}
posts: Пости
- remote_follow: Підписатися на іншій інстанції
+ posts_with_replies: Пости і відповіді
+ reserved_username: Це ім'я користувача зарезервоване
+ roles:
+ admin: Адміністратор
+ bot: Бот
+ moderator: Мод
unfollow: Відписатися
admin:
+ account_moderation_notes:
+ create: Залишити примітки
+ created_msg: Примітку модератора успішно створено!
+ delete: Видалити
+ destroyed_msg: Примітку модератора успішно видалено!
accounts:
are_you_sure: Ви впевнені?
+ avatar: Аватар
+ by_domain: Домен
+ change_email:
+ changed_msg: Поштова адреса аккаунту успішно змінена!
+ current_email: Поточна поштова адреса
+ label: Змінити поштову адресу
+ new_email: Новий e-mail
+ submit: Змінити поштову адресу
+ title: Змінити поштову адресу для %{username}
+ confirm: Зберегти
+ confirmed: Збережено
+ confirming: Зберігається
+ demote: Усунути
+ disable: Вимкнути
+ disable_two_factor_authentication: Вимкнути двофакторну авторизацію
+ disabled: Вимкнено
display_name: Відображуване ім'я
domain: Домен
edit: Змінити
email: Email
+ email_status: Статус e-mail
+ enable: Увімкнути
+ enabled: Увімкнено
feed_url: URL фіду
followers: Підписники
+ followers_url: URL підписників
follows: Підписки
+ inbox_url: Вхідний URL
+ ip: IP
location:
all: Усі
local: Локальні
remote: Віддалені
title: Розміщення
+ login_status: Статус авторизації
media_attachments: Мультимедійні вкладення
+ memorialize: Зробити пам'ятником
moderation:
all: Усі
silenced: Заглушені
suspended: Заблоковані
title: Модерація
+ moderation_notes: Примітки модераторів
most_recent_activity: Остання активність
most_recent_ip: Останній IP
not_subscribed: Не підписані
@@ -52,19 +112,120 @@ uk:
alphabetic: За алфавітом
most_recent: За датою
title: Порядок
+ outbox_url: Вихідний URL
perform_full_suspension: Повне блокування
profile_url: URL профілю
+ promote: Просунути
+ protocol: Протокол
public: Публічний
push_subscription_expires: Підписка PuSH спливає
+ redownload: Оновити аватар
+ remove_avatar: Видалити аватар
+ resend_confirmation:
+ already_confirmed: Цей користувач уже підтверджений
+ send: Надіслати підтвердження ще раз
+ success: Повідомлення з підтвердженням успішно надіслано!
+ reset: Скинути
reset_password: Зкинути пароль
+ resubscribe: Перепідписатися
+ role: Дозволи
+ roles:
+ admin: Адміністратор
+ moderator: Модератор
+ staff: Персонал
+ user: Користувач
salmon_url: Salmon URL
+ search: Пошук
+ shared_inbox_url: URL спільного вхідного кошика
+ show:
+ created_reports: Скарги створені цим аккаунтом
+ report: скарга
+ targeted_reports: Скарги щодо цього аккаунту
silence: Глушення
statuses: Статуси
+ subscribe: Підписатися
title: Акаунти
+ unconfirmed_email: Непідтверджений e-mail
undo_silenced: Зняти глушення
undo_suspension: Зняти блокування
+ unsubscribe: Відписатися
username: Ім'я користувача
web: WWW
+ action_logs:
+ actions:
+ assigned_to_self_report: "%{name} призначив(-ла) скаргу %{target} на себе"
+ change_email_user: "%{name} змінив(-ла) поштову адресу користувача %{target}"
+ confirm_user: "%{name} підтвердив(-ла) статус поштової адреси користувача %{target}"
+ create_custom_emoji: "%{name} вивантажив(-ла) нове емодзі %{target}"
+ create_domain_block: "%{name} заблокував(-ла) домен %{target}"
+ create_email_domain_block: "%{name} додав(-ла) поштовий домен %{target} до чорного списку"
+ demote_user: "%{name} понизив(-ла) %{target}"
+ destroy_domain_block: "%{name} розблокував(-ла) домен %{target}"
+ destroy_email_domain_block: "%{name} додав(-ла) поштовий домен %{target} до білого списку"
+ destroy_status: "%{name} видалив(-ла) статус користувача %{target}"
+ disable_2fa_user: "%{name} вимкнув(-ла) двофакторну авторизацію для користувача %{target}"
+ disable_custom_emoji: "%{name} вимкнув(-ла) емодзі %{target}"
+ disable_user: "%{name} заборонив(-ла) авторизацію користувачу %{target}"
+ enable_custom_emoji: "%{name} увімкнув(-ла) емодзі %{target}"
+ enable_user: "%{name} увімкнув(-ла) авторизацію користувачу %{target}"
+ memorialize_account: "%{name} перетворив(-ла) сторінку %{target} у пам'ятник"
+ promote_user: "%{name} підвищив(-ла) користувача %{target}"
+ remove_avatar_user: "%{name} прибрав(-ла) аватар користувача %{target}"
+ reopen_report: "%{name} перевідкрив(-ла) скаргу %{target}"
+ reset_password_user: "%{name} скинув(-ла) пароль користувача %{target}"
+ resolve_report: "%{name} розв'язав(-ла) скаргу %{target}"
+ silence_account: "%{name} заглушив(-ла) аккаунт %{target}"
+ suspend_account: "%{name} заблокував аккаунт користувача %{target}"
+ unassigned_report: "%{name} зняв(-ла) призначення скарги %{target}"
+ unsilence_account: "%{name} розглушив(-ла) аккаунт %{target}"
+ unsuspend_account: "%{name} розблокував аккаунт користувача %{target}"
+ update_custom_emoji: "%{name} оновив(-ла) емодзі %{target}"
+ update_status: "%{name} змінив(-ла) статус користуача %{target}"
+ title: Журнал подій
+ custom_emojis:
+ by_domain: Домен
+ copied_msg: Локальна копія емодзі успішно створена
+ copy: Копіювати
+ copy_failed_msg: Не вийшло створити локальну копію емодзі
+ created_msg: Емодзі успішно створене!
+ delete: Видалити
+ destroyed_msg: Емодзі усіпішно видалене!
+ disable: Вимкнути
+ disabled_msg: Емодзі успішно вимкнено
+ emoji: Емодзі
+ enable: Увімкнути
+ enabled_msg: Емодзі успішно увімкнене
+ image_hint: PNG розміром до 50 КБ
+ listed: У списку
+ new:
+ title: Додати новий емодзі
+ overwrite: Переписати
+ shortcode: Шорткод
+ shortcode_hint: Мінімум два символи, тільки цифрові й латинські символи або нижні підкреслення
+ title: Особливі емодзі
+ unlisted: Не у списку
+ update_failed_msg: Не вийшло оновити емозді
+ updated_msg: Емодзі успішно оновлене!
+ upload: Вивантажити
+ dashboard:
+ config: Налаштування
+ feature_deletions: Видалення аккаунтів
+ feature_invites: Посилання-запрошення
+ feature_registrations: Реєстрації
+ features: Можливості
+ hidden_service: Федерація з прихованими сервісами
+ open_reports: відкриті скарги
+ recent_users: Останні користувачі
+ search: Повнотекстовий пошук
+ single_user_mode: Режим одного користувача
+ software: Програмне забезпечення
+ space: Використання дискового простору
+ title: Дашборд
+ total_users: користувачів загалом
+ trends: Тренди
+ week_interactions: дій за цей тиждень
+ week_users_active: активно протягом тижня
+ week_users_new: користувачів цього тижня
domain_blocks:
add_new: Додати нове
created_msg: Блокування домену оброблюється
@@ -72,15 +233,17 @@ uk:
domain: Домен
new:
create: Створити блокування
- hint: Блокування домену не запобіжить створенню нових акаунтів у базі даних, але ретроактивно та автоматично застосує указані методи модерації для цих акаунтів.
+ hint: Блокування домену не завадить створенню нових акаунтів у базі даних, але ретроактивно та автоматично застосує вказані методи модерації для цих акаунтів.
severity:
- desc_html: "
Глушення зробить статуси акаунту невидимими для всіх, крім їхніх підписників.
Блокування видалить увесь контент акаунту, включаючи мультимедійні вкладення та дані профілю."
+ desc_html: "
Глушення зробить статуси акаунту невидимими для всіх, окрім їхніх підписників.
Блокування видалить увесь контент акаунту, включаючи мультимедійні вкладення та дані профілю."
+ noop: Нічого
silence: Глушення
suspend: Блокування
- title: Нове доменне блокування
+ title: Нове блокування домену
reject_media: Заборонити медіаконтент
reject_media_hint: Видаляє медіаконтент, збережений локально, і забороняє його завантаження у майбутньому. Не має значення у випадку блокування.
severities:
+ noop: Нічого
silence: Глушення
suspend: Блокування
severity: Суворість
@@ -97,40 +260,138 @@ uk:
undo: Відмінити
title: Доменні блокування
undo: Відмінити
+ email_domain_blocks:
+ add_new: Додати
+ created_msg: Успішно додано поштовий домен до чорного списку
+ delete: Видалити
+ destroyed_msg: Успішно видалено поштовий домен з чорного списку
+ domain: Домен
+ new:
+ create: Додати домен
+ title: Нове доменне блокування домену email
+ title: Чорний список поштових доменів
+ instances:
+ account_count: Відомі аккаунти
+ domain_name: Домен
+ reset: Скинути
+ search: Пошук
+ title: Відомі інстанції
+ invites:
+ filter:
+ all: Все
+ available: Доступно
+ expired: Просрочено
+ title: Фільтр
+ title: Запрошення
+ relays:
+ status: Статус
+ report_notes:
+ created_msg: Скарга успішно створена!
+ destroyed_msg: Скарга успішно видалена!
reports:
+ account:
+ note: примітка
+ report: скарга
+ action_taken_by: Дія виконана
+ are_you_sure: Ви впевнені?
+ assign_to_self: Призначити мені
+ assigned: Призначений модератор
comment:
none: Немає
+ created_at: Створено
id: ID
mark_as_resolved: Відмітити як вирішену
+ mark_as_unresolved: Відмітити як невирішену
+ notes:
+ create: Додати примітку
+ create_and_resolve: Розв'язати з приміткою
+ create_and_unresolve: Перевідкрити з приміткою
+ delete: Видалити
+ placeholder: Опишіть, які дії були виконані, або інші зміни, що стосуються справи...
+ reopen: Перевідкрити скаргу
report: 'Скарга #%{id}'
+ report_contents: Зміст
reported_account: Акаунт порушника
reported_by: Відправник скарги
resolved: Вирішено
+ resolved_msg: Скаргу успішно вирішено!
silence_account: Заглушити акаунт
status: Статус
- suspend_account: Блокувати акаунт
+ suspend_account: Заблокувати акаунт
target: Ціль
title: Скарги
+ unassign: Зняти призначення
unresolved: Невирішені
+ updated_at: Оновлені
view: Подивитися
settings:
+ activity_api_enabled:
+ desc_html: Кількість локальних постів, активних та нових користувачів у тижневих розрізах
+ title: Публікація агрегованої статистики про активність користувачів
+ bootstrap_timeline_accounts:
+ title: Підписки за замовчуванням для нових користувачів
contact_information:
email: Введіть публічний email
username: Введіть ім'я користувача
+ hero:
+ desc_html: Відображається на головній сторінці. Рекомендована як мінімум 600x100 пікселів. Якщо не вказано, буде використано передпоказ інстанції
+ title: Банер інстанції
+ peers_api_enabled:
+ desc_html: Доменні ім'я, помічені цією інстанцією федисвіту
+ title: Опублікувати список знайдених інстанцій
+ preview_sensitive_media:
+ desc_html: Передпоказ посилання на інших сайтах буде відображати мініатюру навіть якщо медіа відмічене як вразливе
+ title: Показувати вразливе медія у перепоказі OpenGraph
registrations:
closed_message:
desc_html: Відображається на титульній сторінці, коли реєстрація закрита
Можна використовувати HTML-теги
title: Повідомлення про закриту реєстрацію
+ deletion:
+ desc_html: Дозволити будь-кому видаляти свій аккаунт
+ title: Дозволити видалення аккаунтів
+ min_invite_role:
+ disabled: Ніхто
+ title: Дозволити запрошення від
open:
+ desc_html: Дозволити будь-ком створювати аккаунт
title: Відкрити реєстрацію
+ show_known_fediverse_at_about_page:
+ desc_html: Коли увімкнено, будуть показані пости з усього відомого федисвіту у передпоказі. Інакше будуть показані локальні пости
+ title: Показувати доступний федисвіт у передпоказі фіду
+ show_staff_badge:
+ desc_html: Відмічати персонал на сторінці користувачів
+ title: Показувати персонал
site_description:
desc_html: Відображається у якості параграфа на титульній сторінці та використовується у якості мета-тега.
Можна використовувати HTML-теги, особливо
<a>
і
<em>
.
- title: Опис сайту
+ title: Опис інстанції
site_description_extended:
desc_html: Відображається на сторінці додаткової информації
Можна використовувати HTML-теги
title: Розширений опис сайту
+ site_terms:
+ desc_html: |-
+ Ви можене написати власну політику приватності, умови використанні та інші законні штуки
+ Можете використовувати HTML теги
+ title: Особливі умови використання
site_title: Назва сайту
+ thumbnail:
+ desc_html: Використовується для передпоказів через OpenGraph та API. Бажано розміром 1200х640 пікселів.
+ title: Мініатюра інстанції
+ timeline_preview:
+ desc_html: Показувати публічний фід на головній сторінці
+ title: Передпоказ фіду
title: Налаштування сайту
+ statuses:
+ back_to_account: Назад на сторінку профілю
+ batch:
+ delete: Видалити
+ nsfw_off: Відмітити сприйнятливим
+ nsfw_on: Відмітити несприйнятливим
+ failed_to_execute: Не вийшло
+ media:
+ title: Медіа
+ no_media: Немає медіа
+ title: Статуси аккаунтів
+ with_media: З медіа
subscriptions:
callback_url: Callback URL
confirmed: Підтверджено
@@ -139,24 +400,60 @@ uk:
title: WebSub
topic: Тема
title: Адміністрування
+ admin_mailer:
+ new_report:
+ body: "%{reporter} поскаржився(-лася) %{target}"
+ body_remote: Хтось з домену %{domain} поскаржився(-лася) %{target}
+ subject: Нова скарга до %{instance} (#%{id})
application_mailer:
- settings: 'Змінити налаштування email: %{link}'
+ notification_preferences: Змінити налаштування e-mail
+ salutation: "%{name},"
+ settings: 'Змінити налаштування e-mail: %{link}'
view: 'Перегляд:'
+ view_profile: Показати профіль
+ view_status: Показати статус
applications:
+ created: Застосунок успішно створений
+ destroyed: Застосунок успішно видалений
invalid_url: Введена URL неправильна
+ regenerate_token: Перегенерувати токен доступу
+ token_regenerated: Токен доступу успішне перегенеровано
+ warning: Будьте дуже обережні з цими даними. Ніколи не діліться ними ні з ким!
+ your_token: Ваш токен доступу
auth:
+ agreement_html: Реєструючись, ви погоджуєтеся виконувати
правила інстанції та
наші умови використання.
+ change_password: Пароль
+ confirm_email: Підтвердьте e-mail адресу
+ delete_account: Видалити аккаунт
+ delete_account_html: Якщо ви хочете видалити аккаунт, ви можете
перейти сюди. Вас попросять підтвердити дію.
didnt_get_confirmation: Ви не отримали інструкції з підтвердження?
forgot_password: Забули свій пароль?
+ invalid_reset_password_token: Токен скидання паролю неправильний або просрочений. Спробуйте попросити новий.
login: Увійти
logout: Вийти
+ migrate_account: Переїхати до іншого аккаунту
+ migrate_account_html: Якщо ви бажаєте, щоб відвідувачі цього акканту були перенаправлені до іншого, ви можете
налаштувати це тут.
+ or: або
+ or_log_in_with: Або увійдіть з
+ providers:
+ cas: CAS
+ saml: SAML
register: Зареєструватися
+ register_elsewhere: Зареєструватися на іншому сервері
resend_confirmation: Повторно відправити інструкції з підтвердження
reset_password: Скинути пароль
security: Зміна паролю
set_new_password: Встановити новий пароль
authorize_follow:
+ already_following: Ви вже підписані на цей аккаунт
error: На жаль, при пошуку віддаленого аккаунту виникла помилка
follow: Підписатися
+ follow_request: 'Вам надіслали запит на підписку:'
+ following: 'Ура! Ви тепер підписані на:'
+ post_follow:
+ close: Або, ви можете просто закрити вікно.
+ return: Перейти до профілю користувача
+ web: Перейти до вебу
title: Підписатися на %{acct}
datetime:
distance_in_words:
@@ -164,14 +461,22 @@ uk:
about_x_months: "%{count}міс"
about_x_years: "%{count}р"
almost_x_years: "%{count}р"
- half_a_minute: Тільки що
+ half_a_minute: Щойно
less_than_x_minutes: "%{count}хв"
- less_than_x_seconds: Тільки що
+ less_than_x_seconds: Щойно
over_x_years: "%{count}р"
x_days: "%{count}д"
x_minutes: "%{count}хв"
x_months: "%{count}міс"
x_seconds: "%{count}сек"
+ deletes:
+ bad_password_msg: Гарна спроба, гакери! Неправильний пароль
+ confirm_password: Введіть актуальний пароль щоб перевірити що ви це ви
+ description_html: Це
безвідворотно і назавжди видалить контент з вашого аккаунту та деактивує його. Ваше ім'я користувача буде залишатися зарезервованим для уникнення вашої деперсоналізації.
+ proceed: Видалити аккаунт
+ success_msg: Ваш аккаунт було успішно видалено
+ warning_html: Ми можемо гарантувати видалення контенти
лише з цього сайту. Контент, що був поширений залишає сліди. Сервери, що є офлайн та ті, що відписалися від наших оновлень не запишуть змін до своїх баз даних.
+ warning_title: Про доступність поширеного контенту
errors:
'403': У Вас немає доступу до перегляду даної сторінки.
'404': Сторінка, яку Ви шукали, не існує.
@@ -179,15 +484,43 @@ uk:
'422':
content: Перевірка безпеки не вдалася. Можливо, Ви блокуєте cookies?
title: Перевірка безпеки не вдалася.
+ '429': Забагато запитів
+ '500':
+ content: Пробачте, та щось пішло не так з нашого боку.
+ title: Ця сторінка неправильна
+ noscript_html: Для використання веб-застосунку Mastodon, будь-ласка увімкніть JavaScript. Якщо у вас немає такої можливості, скористайтесь одним із
нативних застосунків для Mastodon для вашої платформи.
exports:
+ archive_takeout:
+ date: Дата
+ download: Завантажити ваш архів
+ hint_html: Ви можете зробити запит на архів ваших
постів та вивантаженого медіа контенту. Завантажені дані будуть у форматі ActivityPub, доступні для читання будь-яким сумісним програмним забезпеченням. Ви можете робити запит на архів кожні 7 днів.
+ in_progress: Збираємо ваш архів...
+ request: Зробити запит на архів
+ size: Розмір
blocks: Список блокувань
csv: CSV
follows: Підписки
mutes: Список глушення
storage: Ваш медіаконтент
+ filters:
+ contexts:
+ home: Ваш фід
+ notifications: Сповіщення
+ public: Публічний фід
+ thread: Повідомлення
+ edit:
+ title: Редагувати фільтр
+ errors:
+ invalid_context: Контекст неправильний або не був наданий
+ invalid_irreversible: Незворотне фільтрування працює тільки в контексті свого фіду або сповіщень
+ index:
+ delete: Видалити
+ title: Фільтри
+ new:
+ title: Додати фільтр
followers:
domain: Домен
- explanation_html: Якщо Ви хочете бути впевнені в приватності Ваших статусів, Ви повинні мати чітке уявлення про те, хто на Вас підписаний.
Ваші приватні статусі відправляються усім інстанціям, на яких у Вас є підписники. Рекомендуємо видалити з підписників користувачів інстанцій, адміністрації чи програмному забезпеченню яких Ви не довіряєте.
+ explanation_html: Якщо Ви хочете бути впевнені в приватності Ваших статусів, Ви повинні мати чітке уявлення про те, хто на Вас підписаний.
Ваші приватні статусі відправляються усім сайтам, на яких у Вас є підписники. Рекомендуємо видалити з підписників користувачів інстанцій, адміністрації чи програмному забезпеченню яких Ви не довіряєте.
followers_count: Кількість підписників
lock_link: Закрийте акаунт
purge: Видалити з підписників
@@ -199,7 +532,6 @@ uk:
unlocked_warning_title: Ваш аккаунт не закритий для підписки
generic:
changes_saved_msg: Зміни успішно збережені!
- powered_by: працює на %{link}
save_changes: Зберегти зміни
validation_errors:
one: Щось тут не так! Будь ласка, ознайомтеся з помилкою нижче
@@ -212,103 +544,252 @@ uk:
following: Підписки
muting: Список глушення
upload: Завантажити
- landing_strip_html: "
%{name} - користувач на %{link_to_root_path}. Ви можете підписатися на нього/неї та спілкуватися з ним/нею, якщо у Вас є акаунт на будь-якій інстанції загальної мережі."
- landing_strip_signup_html: Якщо його у Вас немає, Ви можете
зареєструватися тут.
+ in_memoriam_html: Пам'ятник.
+ invites:
+ delete: Деактивувати
+ expired: Вийшов
+ expires_in:
+ '1800': 30 хвилин
+ '21600': 6 годин
+ '3600': 1 година
+ '43200': 12 годин
+ '604800': 1 тиждень
+ '86400': 1 день
+ expires_in_prompt: Ніколи
+ generate: Згенерувати
+ invited_by: 'Вас запросив(-ла):'
+ max_uses:
+ one: 1 використання
+ other: "%{count} використань"
+ max_uses_prompt: Без обмеження
+ prompt: Генеруйте та діліться посиланням з іншими для надання доступу до сайту
+ table:
+ expires_at: Час роботи
+ uses: Використання
+ title: Запросити людей
+ lists:
+ errors:
+ limit: Ви досягнули максимальної кількості списків
media_attachments:
validations:
images_and_video: Не можна додати відео до статусу з зображеннями
too_many: Не можна додати більше 4 файлів
+ migrations:
+ acct: username@domain нового аккаунту
+ currently_redirecting: 'Ваш профіль налаштований перенаправляти на:'
+ proceed: Зберегти
+ updated_msg: Переїзд вашого аккаунту успішно оновлений!
+ moderation:
+ title: Модерація
notification_mailer:
digest:
- body: 'Коротко про пропущене Вами на %{instance} з Вашого останнього входу %{since}:'
+ action: Показати усі сповіщення
+ body: Коротко про пропущене вами з Вашого останнього входу %{since}
mention: "%{name} згадав(-ла) Вас в:"
new_followers_summary:
few: У Вас з'явилось %{count} нових підписники! Чудово!
many: У Вас з'явилось %{count} нових підписників! Чудово!
- one: У Вас з'явився новий підписник! Ура!
- other: У Вас з'явилось %{count} нових підписників! Чудово!
+ one: Також, у Вас з'явився новий підписник, коли ви були відсутні! Ура!
+ other: Також, у Вас з'явилось %{count} нових підписників, поки ви були відсутні! Чудово!
subject:
few: "%{count} нові сповіщення з Вашого останнього входу \U0001F418"
many: "%{count} нових сповіщень з Вашого останнього входу \U0001F418"
one: "1 нове сповіщення з Вашого останнього входу \U0001F418"
other: "%{count} нових сповіщень з Вашого останнього входу \U0001F418"
+ title: Поки ви були відсутні...
favourite:
body: 'Ваш статус подобається %{name}:'
subject: Користувачу %{name} сподобався ваш статус
+ title: Нове вподобання
follow:
body: "%{name} тепер підписаний на вас!"
subject: "%{name} тепер підписаний(-а) на вас"
+ title: Новий підписник
follow_request:
+ action: Керувати запитами на підписку
body: "%{name} запитав Вас про підписку"
subject: "%{name} хоче підписатися на Вас"
+ title: Новий запит на підписку
mention:
- body: 'Ви були згадані %{name} в:'
- subject: Ви були згадані %{name}
+ action: Відповісти
+ body: 'Вас згадав(-ла) %{name} в:'
+ subject: Вас згадав(-ла) %{name}
+ title: Нова згадка
reblog:
body: 'Ваш статус було передмухнуто %{name}:'
subject: "%{name} передмухнув ваш статус"
+ title: Нове передмухування
number:
human:
decimal_units:
format: "%n%u"
units:
- billion: B
- million: M
- quadrillion: Q
- thousand: K
- trillion: T
+ billion: млрд
+ million: млн
+ quadrillion: квдрл
+ thousand: тис
+ trillion: трлн
unit: ''
pagination:
+ newer: Новіше
next: Далі
prev: Назад
truncate: "…"
+ preferences:
+ languages: Мови
+ other: Інше
+ publishing: Публікація
+ web: Веб
remote_follow:
- acct: Введіть username@domain, звідки ви хочете підписатися
- missing_resource: Пошук потрібного перенаправлення URL для Вашого аккаунта закінчився неудачою
- proceed: Продовжити підписку
+ acct: Введіть username@domain, яким ви хочете підписатися
+ missing_resource: Пошук потрібного перенаправлення URL для Вашого аккаунта закінчився невдачею
+ no_account_html: Не маєте аккаунту? Не біда, ви можете
зареєструватися
+ proceed: Перейти до підписки
prompt: 'Ви хочете підписатися на:'
+ remote_unfollow:
+ error: Помилка
+ title: Заголовок
+ unfollowed: Відписані
+ sessions:
+ activity: Остання активність
+ browser: Браузер
+ browsers:
+ alipay: Alipay
+ blackberry: Blackberry
+ chrome: Chrome
+ edge: Microsoft Edge
+ electron: Electron
+ firefox: Firefox
+ generic: Невідомий браузер
+ ie: Internet Explorer
+ micro_messenger: MicroMessenger
+ nokia: Nokia S40 Ovi Browser
+ opera: Opera
+ otter: Otter
+ phantom_js: PhantomJS
+ qq: QQ Browser
+ safari: Safari
+ uc_browser: UCBrowser
+ weibo: Weibo
+ current_session: Активна сесія
+ description: "%{browser} на %{platform}"
+ explanation: Це веб-браузери, нині авторизовані до вашого аккаунту Mastodon.
+ ip: IP
+ platforms:
+ adobe_air: Adobe Air
+ android: Android
+ blackberry: Blackberry
+ chrome_os: ChromeOS
+ firefox_os: Firefox OS
+ ios: iOS
+ linux: Linux
+ mac: Mac
+ other: невідома платформа
+ windows: Windows
+ windows_mobile: Windows Mobile
+ windows_phone: Windows Phone
+ revoke: Закінчити
+ revoke_success: Сесія успішно закінчена
+ title: Сесії
settings:
- authorized_apps: Авторизованные приложения
- back: Назад в Mastodon
+ authorized_apps: Авторизовані застосунки
+ back: Назад у Mastodon
+ delete: Видалення аккаунту
+ development: Розробка
edit_profile: Редагувати профіль
export: Експорт даних
followers: Авторизовані підписники
import: Імпорт
+ migrate: Міграція акаунту
+ notifications: Сповіщення
preferences: Налаштування
settings: Опції
- two_factor_authentication: Двофакторна аутентифікація
+ two_factor_authentication: Двофакторна авторизація
+ your_apps: Ваші затосунки
statuses:
- open_in_web: Відкрити в WWW
+ attached:
+ description: 'Прикріплено: %{attached}'
+ image:
+ one: "%{count} картинка"
+ other: "%{count} картинки"
+ video:
+ one: "%{count} відео"
+ other: "%{count} відео"
+ boosted_from_html: Просунуто від %{acct_link}
+ content_warning: 'Попередження про контент: %{warning}'
+ disallowed_hashtags:
+ one: 'містив заборонений хештеґ: %{tags}'
+ other: 'містив заборонені хештеґи: %{tags}'
+ language_detection: Автоматично визначати мову
+ open_in_web: Відкрити у вебі
over_character_limit: перевищено ліміт символів (%{max})
+ pin_errors:
+ limit: Ви вже закріпили максимальну кількість постів
+ ownership: Не можна закріпити чужий пост
+ private: Не можна закріпити непублічний пост
+ reblog: Не можна закріпити просунутий пост
show_more: Детальніше
+ title: '%{name}: "%{quote}"'
visibilities:
private: Для підписників
- private_long: Показувати тількои підписникам
+ private_long: Показувати тільки підписникам
public: Для всіх
public_long: Показувати всім
- unlisted: Приховувати зі стріок
+ unlisted: Приховувати зі стрічок
unlisted_long: Показувати всім, але не відображати в публічних стрічках
stream_entries:
- click_to_show: Показати
+ pinned: Закріплений пост
reblogged: передмухнув(-ла)
- sensitive_content: Непристойний контент
+ sensitive_content: Несприйнятливий контент
+ terms:
+ title: Умови використання та Політика приватності %{instance}
+ themes:
+ contrast: Висока контрасність
+ default: Mastodon
+ mastodon-light: Mastodon (світла)
time:
formats:
default: "%b %d, %Y, %H:%M"
two_factor_authentication:
- code_hint: Для підтверждення введіть код, згенерований додатком аутентифікатора
+ code_hint: Для підтверждення введіть код, згенерований застосунком аутентифікатора
description_html: При увімкненні
двофакторної аутентифікації, вхід буде вимагати від Вас використовування Вашого телефона, який згенерує вхідний код.
disable: Вимкнути
enable: Увімкнути
+ enabled: Двофакторна аутентифікація увімкнена
enabled_success: Двофакторна аутентифікація успішно увімкнена
generate_recovery_codes: Згенерувати коди відновлення
- instructions_html: "
Відскануйте цей QR-код за допомогою Google Authenticator чи іншого TOTP-додатка на Вашому телефоні. Від цього моменту додаток буде генерувати коди, які буде необхідно ввести для входу."
- lost_recovery_codes: Коди відновлення дозволяють повернути доступ до акаунту у випадку втрати телефону. Якщо Ви втратили Ваші коди відновлення, Ви можете знову згенерувати їх тут. Ваші старі коди відновлення будуть анульовані.
+ instructions_html: "
Відскануйте цей QR-код за допомогою Google Authenticator чи іншого TOTP-застосунку на Вашому телефоні. З цього моменту він буде генерувати коди, які буде необхідно ввести для входу."
+ lost_recovery_codes: Коди відновлення дозволяють повернути доступ до акаунту у випадку втрати телефону. Якщо Ви втратили Ваші коди відновлення, Ви можете знову згенерувати їх тут. Тоді ваші старі коди відновлення будуть анульовані.
manual_instructions: 'Якщо Ви не можете відсканувати QR-код та хочете ввести його вручну, секрет представлений тут відкритим текстом:'
+ recovery_codes: Запасні коди відновлення
recovery_codes_regenerated: Коди відновлення успішно згенеровані
- recovery_instructions_html: У випадку втрати доступу до Вашого телефона Ви можете використати один з кодів відновлення, вказаних нижче, щоб повернути доступ до акаунту. Тримайте коди відновлення у безпеці, наприклад, роздрукувавши їх та тримаючи їх з іншими важливими документами.
+ recovery_instructions_html: У випадку втрати доступу до вашого телефону ви можете використати один з кодів відновлення, вказаних нижче, щоб повернути доступ до акаунту. Тримайте коди відновлення у безпеці, наприклад, роздруйте їх та зберігайте їх з іншими важливими документами.
setup: Налаштувати
- wrong_code: Введений код неправильний! Чи правильно встановлені серверний час та час пристрою?
+ wrong_code: Введений код неправильний! Чи правильно встановлений час на сервері та пристрої?
+ user_mailer:
+ backup_ready:
+ explanation: Ви зробили запит на повний архів вашого аккаунту Mastodon. Він вже готовий для завантаження!
+ subject: Ваш архів готовий до завантаження
+ title: Винесення архіву
+ welcome:
+ edit_profile_action: Налаштувати профіль
+ edit_profile_step: Ви можете налаштувати профіль під себе завантаживши аватар, шпалери, змінивши відображуване ім'я тощо. Якщо ви захочете переглядати нових підписників до того, як вони зможуть підписатися на вас, ви можете заблокувати свій аккаунт.
+ explanation: Ось декілька порад для початку
+ final_action: Почати постити
+ final_step: 'Почність постити! Навіть не підписавшись на вас, інші зможуть побачити ваші пости, наприкоал, у локальному фіді та у хештеґах. Якщо ви хочете представитися, можете скористатися хештеґом #introductions.'
+ full_handle: Ваше звернення
+ full_handle_hint: Те, що ви хочете сказати друзям, щоб вони могли написати вам або підписатися з інших сайтів.
+ review_preferences_action: Змінити налаштування
+ review_preferences_step: Переконайтеся у тому, що ви налаштували все необхідне, як от які e-mail повідомлення ви хочете отримувати, або який рівень приватності ви хочете встановити вашим постам за замовчуванням. Якщо хочете, ви можете увімкнути автоматичне програвання GIF анімацій.
+ subject: Ласкаво просимо до Mastodon
+ tip_bridge_html: Якщо ви прийшли до нас із Twitter, ви можете знайти ваших друзів на Mastodon, скориставшись
проміжним застосунком. Проте він працює тільки, якщо вони теж користуються проміжним застосунком!
+ tip_federated_timeline: Федерований фід є широким поглядом на мережу Mastodon. Але він включає лише людей, на яких підписані ваші сусіди по сайту, тому він не є повним.
+ tip_following: Ви автоматично підписані на адміністратора(-ів) сервера. Для того, щоб знайти ще цікавих людей, дослідіть локальний та федерований фіди.
+ tip_local_timeline: Локальний фід - це погляд згори на людей на %{instance}. Це ваші прямі сусіди!
+ tip_mobile_webapp: Якщо ваш мобільний браузер пропонує вам додати Mastodon на робочий стіл, ви можете отримувати push-сповіщення. Все може виглядати як нативний застосунок у багатьох речах.
+ tips: Поради
+ title: Ласкаво просимо, %{name}!
users:
- invalid_email: Введений email неправильний
+ invalid_email: Введена адреса e-mail неправильна
invalid_otp_token: Введено неправильний код
+ otp_lost_help_html: Якщо ви втратили доступ до обох, ви можете отримати доступ з %{email}
diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml
index 1b741a7d6..b2f9fd01e 100644
--- a/config/locales/zh-CN.yml
+++ b/config/locales/zh-CN.yml
@@ -9,9 +9,6 @@ zh-CN:
contact: 联系方式
contact_missing: 未设定
contact_unavailable: 未公开
- description_headline: 关于 %{domain}
- domain_count_after: 个其它实例
- domain_count_before: 现已接入
extended_description_html: |
这里可以写一些规定
本站尚未设置详细介绍。
@@ -46,7 +43,6 @@ zh-CN:
people_who_follow: 关注 %{name} 的人
posts: 嘟文
posts_with_replies: 嘟文和回复
- remote_follow: 跨站关注
reserved_username: 此用户名已被保留
roles:
admin: 管理员
@@ -484,7 +480,6 @@ zh-CN:
unlocked_warning_title: 你的帐户未受到保护
generic:
changes_saved_msg: 更改保存成功!
- powered_by: 基于 %{link} 构建
save_changes: 保存更改
validation_errors:
one: 出错啦!检查一下下面出错的地方吧
@@ -518,8 +513,6 @@ zh-CN:
expires_at: 失效时间
uses: 已使用次数
title: 邀请用户
- landing_strip_html: "
%{name} 是一位来自 %{link_to_root_path} 的用户。如果你想关注他们或者与他们互动,你需要在任意一个 Mastodon 实例或与其兼容的网站上拥有一个帐户。"
- landing_strip_signup_html: 还没有这种帐户?你可以
在本站注册一个。
lists:
errors:
limit: 你所建立的列表数量已经达到上限
@@ -681,7 +674,6 @@ zh-CN:
unlisted: 不公开
unlisted_long: 所有人可见,但不会出现在公共时间轴上
stream_entries:
- click_to_show: 点击显示
pinned: 置顶嘟文
reblogged: 转嘟
sensitive_content: 敏感内容
diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml
index a5e997536..ee7ca4443 100644
--- a/config/locales/zh-HK.yml
+++ b/config/locales/zh-HK.yml
@@ -9,9 +9,6 @@ zh-HK:
contact: 聯絡
contact_missing: 未設定
contact_unavailable: 未公開
- description_headline: 甚麼是 %{domain} ?
- domain_count_after: 個其他服務站
- domain_count_before: 已連接至
extended_description_html: |
這裡可以寫一些網站規則
本站未有詳細介紹
@@ -46,7 +43,6 @@ zh-HK:
people_who_follow: 關注 %{name} 的人
posts: 文章
posts_with_replies: 文章和回覆
- remote_follow: 跨站關注
reserved_username: 此用戶名已被保留
roles:
admin: 管理員
@@ -488,7 +484,6 @@ zh-HK:
unlocked_warning_title: 你的用戶目前為「公共」
generic:
changes_saved_msg: 已成功儲存修改。
- powered_by: 網站由 %{link} 開發
save_changes: 儲存修改
validation_errors:
one: 提交的資料有問題
@@ -524,8 +519,6 @@ zh-HK:
expires_at: 失效時間
uses: 已使用次數
title: 邀請用戶
- landing_strip_html: "
%{name} 是一個在 %{link_to_root_path} 的用戶。只要你有任何 Mastodon 服務站、或者聯盟網站的用戶,便可以跨站關注此站用戶,或者與他們互動。"
- landing_strip_signup_html: 如果你沒有這類用戶,歡迎在
此處登記。
lists:
errors:
limit: 你所建立的列表數量已經達到上限
@@ -692,7 +685,6 @@ zh-HK:
unlisted: 公開,但不在公共時間軸顯示
unlisted_long: 所有人都能看到,但不在公共時間軸(本站時間軸、跨站時間軸)顯示
stream_entries:
- click_to_show: 點擊顯示
pinned: 置頂文章
reblogged: 轉推
sensitive_content: 敏感內容
diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml
index e2b376a3f..0a18dc990 100644
--- a/config/locales/zh-TW.yml
+++ b/config/locales/zh-TW.yml
@@ -9,9 +9,6 @@ zh-TW:
contact: 聯絡我們
contact_missing: 未設定
contact_unavailable: 未公開
- description_headline: 關於 %{domain}?
- domain_count_after: 個站點相連
- domain_count_before: 與其他
extended_description_html: |
這裡可以寫一些網站規則
本站點未有詳細介紹
@@ -46,7 +43,6 @@ zh-TW:
people_who_follow: 關注 %{name} 的人
posts: 嘟文
posts_with_replies: 嘟文與回覆
- remote_follow: 跨站關注
reserved_username: 此用戶名已被保留
roles:
admin: 管理員
@@ -488,7 +484,6 @@ zh-TW:
unlocked_warning_title: 你的帳戶是公開的
generic:
changes_saved_msg: 已成功儲存修改!
- powered_by: 網站由 %{link} 開發
save_changes: 儲存修改
validation_errors:
one: 送出的資料有問題
@@ -524,8 +519,6 @@ zh-TW:
expires_at: 失效時間
uses: 已使用次數
title: 邀請使用者
- landing_strip_html: "
%{name} 是一個在 %{link_to_root_path} 的使用者。只要您有任何 Mastodon 站點、或者聯盟站點的帳戶,便可以跨站關注此站使用者,或者與他們互動。"
- landing_strip_signup_html: 如果您沒有這些帳戶,歡迎在
這裡註冊。
lists:
errors:
limit: 你所建立的列表數量已經達到上限
@@ -685,7 +678,6 @@ zh-TW:
unlisted: 公開,但不在公共時間軸顯示
unlisted_long: 所有人都能看到,但不會出現在公共時間軸上
stream_entries:
- click_to_show: 點選顯示
pinned: 置頂嘟文
reblogged: 轉嘟
sensitive_content: 敏感內容
diff --git a/config/navigation.rb b/config/navigation.rb
index 3f2e913c6..99d227f11 100644
--- a/config/navigation.rb
+++ b/config/navigation.rb
@@ -33,9 +33,11 @@ SimpleNavigation::Configuration.run do |navigation|
admin.item :email_domain_blocks, safe_join([fa_icon('envelope fw'), t('admin.email_domain_blocks.title')]), admin_email_domain_blocks_url, highlights_on: %r{/admin/email_domain_blocks}, if: -> { current_user.admin? }
end
- primary.item :admin, safe_join([fa_icon('cogs fw'), t('admin.title')]), proc { current_user.admin? ? edit_admin_settings_url : admin_custom_emojis_url }, if: proc { current_user.staff? } do |admin|
+ primary.item :admin, safe_join([fa_icon('cogs fw'), t('admin.title')]), admin_dashboard_url, if: proc { current_user.staff? } do |admin|
+ admin.item :dashboard, safe_join([fa_icon('tachometer fw'), t('admin.dashboard.title')]), admin_dashboard_url
admin.item :settings, safe_join([fa_icon('cogs fw'), t('admin.settings.title')]), edit_admin_settings_url, if: -> { current_user.admin? }
admin.item :custom_emojis, safe_join([fa_icon('smile-o fw'), t('admin.custom_emojis.title')]), admin_custom_emojis_url, highlights_on: %r{/admin/custom_emojis}
+ admin.item :relays, safe_join([fa_icon('exchange fw'), t('admin.relays.title')]), admin_relays_url, if: -> { current_user.admin? }, highlights_on: %r{/admin/relays}
admin.item :subscriptions, safe_join([fa_icon('paper-plane-o fw'), t('admin.subscriptions.title')]), admin_subscriptions_url, if: -> { current_user.admin? }
admin.item :sidekiq, safe_join([fa_icon('diamond fw'), 'Sidekiq']), sidekiq_url, link_html: { target: 'sidekiq' }, if: -> { current_user.admin? }
admin.item :pghero, safe_join([fa_icon('database fw'), 'PgHero']), pghero_url, link_html: { target: 'pghero' }, if: -> { current_user.admin? }
diff --git a/config/routes.rb b/config/routes.rb
index fd26b4aa7..877823c7f 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -23,6 +23,7 @@ Rails.application.routes.draw do
get '.well-known/webfinger', to: 'well_known/webfinger#show', as: :webfinger
get 'manifest', to: 'manifests#show', defaults: { format: 'json' }
get 'intent', to: 'intents#show'
+ get 'custom.css', to: 'custom_css#show', as: :custom_css
devise_scope :user do
get '/invite/:invite_code', to: 'auth/registrations#new', as: :public_invite
@@ -38,6 +39,7 @@ Rails.application.routes.draw do
}
get '/users/:username', to: redirect('/@%{username}'), constraints: lambda { |req| req.format.nil? || req.format.html? }
+ get '/authorize_follow', to: redirect { |_, request| "/authorize_interaction?#{request.params.to_query}" }
resources :accounts, path: 'users', only: [:show], param: :username do
resources :stream_entries, path: 'updates', only: [:show] do
@@ -74,6 +76,9 @@ Rails.application.routes.draw do
get '/@:account_username/:id', to: 'statuses#show', as: :short_account_status
get '/@:account_username/:id/embed', to: 'statuses#embed', as: :embed_short_account_status
+ get '/interact/:id', to: 'remote_interaction#new', as: :remote_interaction
+ post '/interact/:id', to: 'remote_interaction#create'
+
namespace :settings do
resource :profile, only: [:show, :update]
resource :preferences, only: [:show, :update]
@@ -120,16 +125,30 @@ Rails.application.routes.draw do
# Remote follow
resource :remote_unfollow, only: [:create]
- resource :authorize_follow, only: [:show, :create]
+ resource :authorize_interaction, only: [:show, :create]
resource :share, only: [:show, :create]
namespace :admin do
+ get '/dashboard', to: 'dashboard#index'
+
resources :subscriptions, only: [:index]
resources :domain_blocks, only: [:index, :new, :create, :show, :destroy]
resources :email_domain_blocks, only: [:index, :new, :create, :destroy]
resources :action_logs, only: [:index]
resource :settings, only: [:edit, :update]
- resources :invites, only: [:index, :create, :destroy]
+
+ resources :invites, only: [:index, :create, :destroy] do
+ collection do
+ post :deactivate_all
+ end
+ end
+
+ resources :relays, only: [:index, :new, :create, :destroy] do
+ member do
+ post :enable
+ post :disable
+ end
+ end
resources :instances, only: [:index] do
collection do
@@ -157,7 +176,7 @@ Rails.application.routes.draw do
resource :change_email, only: [:show, :update]
resource :reset, only: [:create]
resource :silence, only: [:create, :destroy]
- resource :suspension, only: [:create, :destroy]
+ resource :suspension, only: [:new, :create, :destroy]
resources :statuses, only: [:index, :create, :update, :destroy]
resource :confirmation, only: [:create] do
@@ -189,13 +208,7 @@ Rails.application.routes.draw do
resources :account_moderation_notes, only: [:create, :destroy]
end
- authenticate :user, lambda { |u| u.admin? } do
- get '/admin', to: redirect('/admin/settings/edit', status: 302)
- end
-
- authenticate :user, lambda { |u| u.moderator? } do
- get '/admin', to: redirect('/admin/reports', status: 302)
- end
+ get '/admin', to: redirect('/admin/dashboard', status: 302)
namespace :api do
# PubSubHubbub outgoing subscriptions
@@ -250,13 +263,14 @@ Rails.application.routes.draw do
get '/search', to: 'search#index', as: :search
- resources :follows, only: [:create]
- resources :media, only: [:create, :update]
- resources :blocks, only: [:index]
- resources :mutes, only: [:index]
- resources :favourites, only: [:index]
- resources :reports, only: [:index, :create]
- resources :filters, only: [:index, :create, :show, :update, :destroy]
+ resources :follows, only: [:create]
+ resources :media, only: [:create, :update]
+ resources :blocks, only: [:index]
+ resources :mutes, only: [:index]
+ resources :favourites, only: [:index]
+ resources :reports, only: [:index, :create]
+ resources :filters, only: [:index, :create, :show, :update, :destroy]
+ resources :endorsements, only: [:index]
namespace :apps do
get :verify_credentials, to: 'credentials#show'
@@ -306,6 +320,9 @@ Rails.application.routes.draw do
post :mute
post :unmute
end
+
+ resource :pin, only: :create, controller: 'accounts/pins'
+ post :unpin, to: 'accounts/pins#destroy'
end
resources :lists, only: [:index, :create, :show, :update, :destroy] do
diff --git a/config/settings.yml b/config/settings.yml
index 190f6afcd..78a801406 100644
--- a/config/settings.yml
+++ b/config/settings.yml
@@ -8,6 +8,7 @@
#
defaults: &defaults
site_title: Mastodon
+ site_short_description: ''
site_description: ''
site_extended_description: ''
site_terms: ''
@@ -38,6 +39,7 @@ defaults: &defaults
mention: false
follow_request: true
digest: true
+ report: true
interactions:
must_be_follower: false
must_be_following: false
diff --git a/config/sidekiq.yml b/config/sidekiq.yml
index 244e9ea48..59dfeaf97 100644
--- a/config/sidekiq.yml
+++ b/config/sidekiq.yml
@@ -3,8 +3,8 @@
:queues:
- default
- push
- - pull
- mailers
+ - pull
:schedule:
subscriptions_scheduler:
cron: '<%= Random.rand(0..59) %> <%= Random.rand(4..6) %> * * *'
diff --git a/config/webpack/development.js b/config/webpack/development.js
index 12670f5cd..d54d919ec 100644
--- a/config/webpack/development.js
+++ b/config/webpack/development.js
@@ -16,6 +16,8 @@ if (process.env.VAGRANT) {
}
module.exports = merge(sharedConfig, {
+ mode: 'development',
+
devtool: 'cheap-module-eval-source-map',
stats: {
diff --git a/config/webpack/loaders/sass.js b/config/webpack/loaders/sass.js
index 88d94c684..bad09ceb4 100644
--- a/config/webpack/loaders/sass.js
+++ b/config/webpack/loaders/sass.js
@@ -1,15 +1,22 @@
-const ExtractTextPlugin = require('extract-text-webpack-plugin');
+const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const { env } = require('../configuration.js');
module.exports = {
- test: /\.(scss|sass|css)$/i,
- use: ExtractTextPlugin.extract({
- fallback: 'style-loader',
- use: [
- { loader: 'css-loader', options: { minimize: env.NODE_ENV === 'production' } },
- { loader: 'postcss-loader', options: { sourceMap: true } },
- 'resolve-url-loader',
- 'sass-loader',
- ],
- }),
+ test: /\.s?css$/i,
+ use: [
+ MiniCssExtractPlugin.loader,
+ {
+ loader: 'css-loader',
+ options: {
+ minimize: env.NODE_ENV === 'production',
+ },
+ },
+ {
+ loader: 'postcss-loader',
+ options: {
+ sourceMap: true,
+ },
+ },
+ 'sass-loader',
+ ],
};
diff --git a/config/webpack/production.js b/config/webpack/production.js
index 037a76a59..27a78108b 100644
--- a/config/webpack/production.js
+++ b/config/webpack/production.js
@@ -1,14 +1,14 @@
// Note: You must restart bin/webpack-dev-server for changes to take effect
-const webpack = require('webpack');
const merge = require('webpack-merge');
+const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
const CompressionPlugin = require('compression-webpack-plugin');
const sharedConfig = require('./shared.js');
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
const OfflinePlugin = require('offline-plugin');
const { publicPath } = require('./configuration.js');
const path = require('path');
-const { URL } = require('whatwg-url');
+const { URL } = require('url');
let compressionAlgorithm;
try {
@@ -23,8 +23,8 @@ try {
let attachmentHost;
if (process.env.S3_ENABLED === 'true') {
- if (process.env.S3_CLOUDFRONT_HOST) {
- attachmentHost = process.env.S3_CLOUDFRONT_HOST;
+ if (process.env.S3_ALIAS_HOST || process.env.S3_CLOUDFRONT_HOST) {
+ attachmentHost = process.env.S3_ALIAS_HOST || process.env.S3_CLOUDFRONT_HOST;
} else {
attachmentHost = process.env.S3_HOSTNAME || `s3-${process.env.S3_REGION || 'us-east-1'}.amazonaws.com`;
}
@@ -36,6 +36,8 @@ if (process.env.S3_ENABLED === 'true') {
}
module.exports = merge(sharedConfig, {
+ mode: 'production',
+
output: {
filename: '[name]-[chunkhash].js',
chunkFilename: '[name]-[chunkhash].js',
@@ -44,19 +46,28 @@ module.exports = merge(sharedConfig, {
devtool: 'source-map', // separate sourcemap file, suitable for production
stats: 'normal',
+ optimization: {
+ minimize: true,
+ minimizer: [
+ new UglifyJsPlugin({
+ sourceMap: true,
+
+ uglifyOptions: {
+ mangle: true,
+
+ compress: {
+ warnings: false,
+ },
+
+ output: {
+ comments: false,
+ },
+ },
+ }),
+ ],
+ },
+
plugins: [
- new webpack.optimize.UglifyJsPlugin({
- sourceMap: true,
- mangle: true,
-
- compress: {
- warnings: false,
- },
-
- output: {
- comments: false,
- },
- }),
new CompressionPlugin({
asset: '[path].gz[query]',
algorithm: compressionAlgorithm,
diff --git a/config/webpack/shared.js b/config/webpack/shared.js
index 50fa48175..a1572665c 100644
--- a/config/webpack/shared.js
+++ b/config/webpack/shared.js
@@ -1,9 +1,9 @@
// Note: You must restart bin/webpack-dev-server for changes to take effect
const webpack = require('webpack');
-const { basename, dirname, join, relative, resolve, sep } = require('path');
+const { basename, dirname, join, relative, resolve } = require('path');
const { sync } = require('glob');
-const ExtractTextPlugin = require('extract-text-webpack-plugin');
+const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const ManifestPlugin = require('webpack-manifest-plugin');
const extname = require('path-complete-extname');
const { env, settings, themes, output, loadersDir } = require('./configuration.js');
@@ -39,6 +39,26 @@ module.exports = {
publicPath: output.publicPath,
},
+ optimization: {
+ runtimeChunk: {
+ name: 'common',
+ },
+ splitChunks: {
+ cacheGroups: {
+ default: false,
+ vendors: false,
+ common: {
+ name: 'common',
+ chunks: 'all',
+ minChunks: 2,
+ minSize: 0,
+ test: /^(?!.*[\\\/]node_modules[\\\/]react-intl[\\\/]).+$/,
+ },
+ },
+ },
+ occurrenceOrder: true,
+ },
+
module: {
rules: sync(join(loadersDir, '*.js')).map(loader => require(loader)),
},
@@ -52,25 +72,13 @@ module.exports = {
resource.request = resource.request.replace(/^history/, 'history/es');
}
),
- new ExtractTextPlugin(env.NODE_ENV === 'production' ? '[name]-[contenthash].css' : '[name].css'),
+ new MiniCssExtractPlugin({
+ filename: env.NODE_ENV === 'production' ? '[name]-[contenthash].css' : '[name].css',
+ }),
new ManifestPlugin({
publicPath: output.publicPath,
writeToFileEmit: true,
- }),
- new webpack.optimize.CommonsChunkPlugin({
- name: 'common',
- minChunks: (module, count) => {
- const reactIntlPathRegexp = new RegExp(`node_modules\\${sep}react-intl`);
-
- if (module.resource && reactIntlPathRegexp.test(module.resource)) {
- // skip react-intl because it's useless to put in the common chunk,
- // e.g. because "shared" modules between zh-TW and zh-CN will never
- // be loaded together
- return false;
- }
-
- return count >= 2;
- },
+ filter: file => !file.isAsset || file.isModuleAsset,
}),
],
diff --git a/config/webpack/test.js b/config/webpack/test.js
index 6b2b073bb..8b56eb92f 100644
--- a/config/webpack/test.js
+++ b/config/webpack/test.js
@@ -3,4 +3,6 @@
const merge = require('webpack-merge');
const sharedConfig = require('./shared.js');
-module.exports = merge(sharedConfig, {});
+module.exports = merge(sharedConfig, {
+ mode: 'development',
+});
diff --git a/db/migrate/20180711152640_create_relays.rb b/db/migrate/20180711152640_create_relays.rb
new file mode 100644
index 000000000..8762f473a
--- /dev/null
+++ b/db/migrate/20180711152640_create_relays.rb
@@ -0,0 +1,12 @@
+class CreateRelays < ActiveRecord::Migration[5.2]
+ def change
+ create_table :relays do |t|
+ t.string :inbox_url, default: '', null: false
+ t.boolean :enabled, default: false, null: false, index: true
+
+ t.string :follow_activity_id
+
+ t.timestamps
+ end
+ end
+end
diff --git a/db/migrate/20180808175627_create_account_pins.rb b/db/migrate/20180808175627_create_account_pins.rb
new file mode 100644
index 000000000..43d8185be
--- /dev/null
+++ b/db/migrate/20180808175627_create_account_pins.rb
@@ -0,0 +1,12 @@
+class CreateAccountPins < ActiveRecord::Migration[5.2]
+ def change
+ create_table :account_pins do |t|
+ t.belongs_to :account, foreign_key: { on_delete: :cascade }
+ t.belongs_to :target_account, foreign_key: { on_delete: :cascade, to_table: :accounts }
+
+ t.timestamps
+ end
+
+ add_index :account_pins, [:account_id, :target_account_id], unique: true
+ end
+end
diff --git a/db/migrate/20180812123222_change_relays_enabled.rb b/db/migrate/20180812123222_change_relays_enabled.rb
new file mode 100644
index 000000000..c4fd8179b
--- /dev/null
+++ b/db/migrate/20180812123222_change_relays_enabled.rb
@@ -0,0 +1,19 @@
+class ChangeRelaysEnabled < ActiveRecord::Migration[5.2]
+ def up
+ # The relays table is supposed to be very small,
+ # single-digit number of rows, so this should be fine
+ safety_assured do
+ add_column :relays, :state, :integer, default: 0, null: false
+
+ # At the time of this migration, no relays reject anyone, so if
+ # there are enabled ones, they are accepted
+ execute 'UPDATE relays SET state = 2 WHERE enabled = true'
+ remove_column :relays, :enabled
+ end
+ end
+
+ def down
+ remove_column :relays, :state
+ add_column :relays, :enabled, :boolean, default: false, null: false
+ end
+end
diff --git a/db/migrate/20180812162710_create_status_stats.rb b/db/migrate/20180812162710_create_status_stats.rb
new file mode 100644
index 000000000..d4da36fe7
--- /dev/null
+++ b/db/migrate/20180812162710_create_status_stats.rb
@@ -0,0 +1,12 @@
+class CreateStatusStats < ActiveRecord::Migration[5.2]
+ def change
+ create_table :status_stats do |t|
+ t.belongs_to :status, null: false, foreign_key: { on_delete: :cascade }, index: { unique: true }
+ t.bigint :replies_count, null: false, default: 0
+ t.bigint :reblogs_count, null: false, default: 0
+ t.bigint :favourites_count, null: false, default: 0
+
+ t.timestamps
+ end
+ end
+end
diff --git a/db/migrate/20180812173710_copy_status_stats.rb b/db/migrate/20180812173710_copy_status_stats.rb
new file mode 100644
index 000000000..850aa9c13
--- /dev/null
+++ b/db/migrate/20180812173710_copy_status_stats.rb
@@ -0,0 +1,22 @@
+class CopyStatusStats < ActiveRecord::Migration[5.2]
+ disable_ddl_transaction!
+
+ def up
+ safety_assured do
+ Status.unscoped.select('id').find_in_batches(batch_size: 5_000) do |statuses|
+ execute <<-SQL.squish
+ INSERT INTO status_stats (status_id, reblogs_count, favourites_count, created_at, updated_at)
+ SELECT id, reblogs_count, favourites_count, created_at, updated_at
+ FROM statuses
+ WHERE id IN (#{statuses.map(&:id).join(', ')})
+ ON CONFLICT (status_id) DO UPDATE
+ SET reblogs_count = EXCLUDED.reblogs_count, favourites_count = EXCLUDED.favourites_count
+ SQL
+ end
+ end
+ end
+
+ def down
+ # Nothing
+ end
+end
diff --git a/db/migrate/20180820232245_add_foreign_key_indices.rb b/db/migrate/20180820232245_add_foreign_key_indices.rb
new file mode 100644
index 000000000..e346c1f5b
--- /dev/null
+++ b/db/migrate/20180820232245_add_foreign_key_indices.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+class AddForeignKeyIndices < ActiveRecord::Migration[5.2]
+ disable_ddl_transaction!
+
+ def change
+ add_index :follows, :target_account_id, algorithm: :concurrently
+ add_index :blocks, :target_account_id, algorithm: :concurrently
+ add_index :mutes, :target_account_id, algorithm: :concurrently
+ add_index :notifications, :from_account_id, algorithm: :concurrently
+ add_index :accounts, :moved_to_account_id, algorithm: :concurrently
+ add_index :statuses, :in_reply_to_account_id, algorithm: :concurrently
+ add_index :session_activations, :access_token_id, algorithm: :concurrently
+ add_index :oauth_access_grants, :resource_owner_id, algorithm: :concurrently
+ end
+end
diff --git a/app/javascript/mastodon/.gitkeep b/db/post_migrate/.gitkeep
similarity index 100%
rename from app/javascript/mastodon/.gitkeep
rename to db/post_migrate/.gitkeep
diff --git a/db/post_migrate/20180813113448_copy_status_stats_cleanup.rb b/db/post_migrate/20180813113448_copy_status_stats_cleanup.rb
new file mode 100644
index 000000000..f3ae772c7
--- /dev/null
+++ b/db/post_migrate/20180813113448_copy_status_stats_cleanup.rb
@@ -0,0 +1,12 @@
+# frozen_string_literal: true
+
+class CopyStatusStatsCleanup < ActiveRecord::Migration[5.2]
+ disable_ddl_transaction!
+
+ def change
+ safety_assured do
+ remove_column :statuses, :reblogs_count, :integer, default: 0, null: false
+ remove_column :statuses, :favourites_count, :integer, default: 0, null: false
+ end
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index dd9bae57b..515bd07a1 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 2018_08_14_171349) do
+ActiveRecord::Schema.define(version: 2018_08_20_232245) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -33,6 +33,16 @@ ActiveRecord::Schema.define(version: 2018_08_14_171349) do
t.index ["target_account_id"], name: "index_account_moderation_notes_on_target_account_id"
end
+ create_table "account_pins", force: :cascade do |t|
+ t.bigint "account_id"
+ t.bigint "target_account_id"
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ t.index ["account_id", "target_account_id"], name: "index_account_pins_on_account_id_and_target_account_id", unique: true
+ t.index ["account_id"], name: "index_account_pins_on_account_id"
+ t.index ["target_account_id"], name: "index_account_pins_on_target_account_id"
+ end
+
create_table "accounts", force: :cascade do |t|
t.string "username", default: "", null: false
t.string "domain"
@@ -78,6 +88,7 @@ ActiveRecord::Schema.define(version: 2018_08_14_171349) do
t.string "actor_type"
t.index "(((setweight(to_tsvector('simple'::regconfig, (display_name)::text), 'A'::\"char\") || setweight(to_tsvector('simple'::regconfig, (username)::text), 'B'::\"char\")) || setweight(to_tsvector('simple'::regconfig, (COALESCE(domain, ''::character varying))::text), 'C'::\"char\")))", name: "search_index", using: :gin
t.index "lower((username)::text), lower((domain)::text)", name: "index_accounts_on_username_and_domain_lower", unique: true
+ t.index ["moved_to_account_id"], name: "index_accounts_on_moved_to_account_id"
t.index ["uri"], name: "index_accounts_on_uri"
t.index ["url"], name: "index_accounts_on_url"
end
@@ -112,6 +123,7 @@ ActiveRecord::Schema.define(version: 2018_08_14_171349) do
t.bigint "target_account_id", null: false
t.string "uri"
t.index ["account_id", "target_account_id"], name: "index_blocks_on_account_id_and_target_account_id", unique: true
+ t.index ["target_account_id"], name: "index_blocks_on_target_account_id"
end
create_table "conversation_mutes", force: :cascade do |t|
@@ -149,9 +161,9 @@ ActiveRecord::Schema.define(version: 2018_08_14_171349) do
t.text "phrase", default: "", null: false
t.string "context", default: [], null: false, array: true
t.boolean "irreversible", default: false, null: false
- t.boolean "whole_word", default: true, null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
+ t.boolean "whole_word", default: true, null: false
t.index ["account_id"], name: "index_custom_filters_on_account_id"
end
@@ -199,6 +211,7 @@ ActiveRecord::Schema.define(version: 2018_08_14_171349) do
t.boolean "show_reblogs", default: true, null: false
t.string "uri"
t.index ["account_id", "target_account_id"], name: "index_follows_on_account_id_and_target_account_id", unique: true
+ t.index ["target_account_id"], name: "index_follows_on_target_account_id"
end
create_table "identities", id: :serial, force: :cascade do |t|
@@ -288,6 +301,7 @@ ActiveRecord::Schema.define(version: 2018_08_14_171349) do
t.bigint "target_account_id", null: false
t.boolean "hide_notifications", default: true, null: false
t.index ["account_id", "target_account_id"], name: "index_mutes_on_account_id_and_target_account_id", unique: true
+ t.index ["target_account_id"], name: "index_mutes_on_target_account_id"
end
create_table "notifications", force: :cascade do |t|
@@ -300,6 +314,7 @@ ActiveRecord::Schema.define(version: 2018_08_14_171349) do
t.index ["account_id", "activity_id", "activity_type"], name: "account_activity", unique: true
t.index ["account_id", "id"], name: "index_notifications_on_account_id_and_id", order: { id: :desc }
t.index ["activity_id", "activity_type"], name: "index_notifications_on_activity_id_and_activity_type"
+ t.index ["from_account_id"], name: "index_notifications_on_from_account_id"
end
create_table "oauth_access_grants", force: :cascade do |t|
@@ -311,6 +326,7 @@ ActiveRecord::Schema.define(version: 2018_08_14_171349) do
t.string "scopes"
t.bigint "application_id", null: false
t.bigint "resource_owner_id", null: false
+ t.index ["resource_owner_id"], name: "index_oauth_access_grants_on_resource_owner_id"
t.index ["token"], name: "index_oauth_access_grants_on_token", unique: true
end
@@ -373,6 +389,14 @@ ActiveRecord::Schema.define(version: 2018_08_14_171349) do
t.index ["status_id", "preview_card_id"], name: "index_preview_cards_statuses_on_status_id_and_preview_card_id"
end
+ create_table "relays", force: :cascade do |t|
+ t.string "inbox_url", default: "", null: false
+ t.string "follow_activity_id"
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ t.integer "state", default: 0, null: false
+ end
+
create_table "report_notes", force: :cascade do |t|
t.text "content", null: false
t.bigint "report_id", null: false
@@ -406,6 +430,7 @@ ActiveRecord::Schema.define(version: 2018_08_14_171349) do
t.bigint "access_token_id"
t.bigint "user_id", null: false
t.bigint "web_push_subscription_id"
+ t.index ["access_token_id"], name: "index_session_activations_on_access_token_id"
t.index ["session_id"], name: "index_session_activations_on_session_id", unique: true
t.index ["user_id"], name: "index_session_activations_on_user_id"
end
@@ -440,6 +465,16 @@ ActiveRecord::Schema.define(version: 2018_08_14_171349) do
t.index ["account_id", "status_id"], name: "index_status_pins_on_account_id_and_status_id", unique: true
end
+ create_table "status_stats", force: :cascade do |t|
+ t.bigint "status_id", null: false
+ t.bigint "replies_count", default: 0, null: false
+ t.bigint "reblogs_count", default: 0, null: false
+ t.bigint "favourites_count", default: 0, null: false
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ t.index ["status_id"], name: "index_status_stats_on_status_id", unique: true
+ end
+
create_table "statuses", id: :bigint, default: -> { "timestamp_id('statuses'::text)" }, force: :cascade do |t|
t.string "uri"
t.text "text", default: "", null: false
@@ -452,8 +487,6 @@ ActiveRecord::Schema.define(version: 2018_08_14_171349) do
t.integer "visibility", default: 0, null: false
t.text "spoiler_text", default: "", null: false
t.boolean "reply", default: false, null: false
- t.integer "favourites_count", default: 0, null: false
- t.integer "reblogs_count", default: 0, null: false
t.string "language"
t.bigint "conversation_id"
t.boolean "local"
@@ -461,6 +494,7 @@ ActiveRecord::Schema.define(version: 2018_08_14_171349) do
t.bigint "application_id"
t.bigint "in_reply_to_account_id"
t.index ["account_id", "id", "visibility", "updated_at"], name: "index_statuses_20180106", order: { id: :desc }
+ t.index ["in_reply_to_account_id"], name: "index_statuses_on_in_reply_to_account_id"
t.index ["in_reply_to_id"], name: "index_statuses_on_in_reply_to_id"
t.index ["reblog_of_id", "account_id"], name: "index_statuses_on_reblog_of_id_and_account_id"
t.index ["uri"], name: "index_statuses_on_uri", unique: true
@@ -568,6 +602,8 @@ ActiveRecord::Schema.define(version: 2018_08_14_171349) do
add_foreign_key "account_domain_blocks", "accounts", name: "fk_206c6029bd", on_delete: :cascade
add_foreign_key "account_moderation_notes", "accounts"
add_foreign_key "account_moderation_notes", "accounts", column: "target_account_id"
+ add_foreign_key "account_pins", "accounts", column: "target_account_id", on_delete: :cascade
+ add_foreign_key "account_pins", "accounts", on_delete: :cascade
add_foreign_key "accounts", "accounts", column: "moved_to_account_id", on_delete: :nullify
add_foreign_key "admin_action_logs", "accounts", on_delete: :cascade
add_foreign_key "backups", "users", on_delete: :nullify
@@ -612,6 +648,7 @@ ActiveRecord::Schema.define(version: 2018_08_14_171349) do
add_foreign_key "session_activations", "users", name: "fk_e5fda67334", on_delete: :cascade
add_foreign_key "status_pins", "accounts", name: "fk_d4cb435b62", on_delete: :cascade
add_foreign_key "status_pins", "statuses", on_delete: :cascade
+ add_foreign_key "status_stats", "statuses", on_delete: :cascade
add_foreign_key "statuses", "accounts", column: "in_reply_to_account_id", name: "fk_c7fa917661", on_delete: :nullify
add_foreign_key "statuses", "accounts", name: "fk_9bda1543f7", on_delete: :cascade
add_foreign_key "statuses", "statuses", column: "in_reply_to_id", on_delete: :nullify
diff --git a/docker-compose.yml b/docker-compose.yml
index c54c73e44..070a95384 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -46,8 +46,6 @@ services:
- redis
# - es
volumes:
- - ./public/assets:/mastodon/public/assets
- - ./public/packs:/mastodon/public/packs
- ./public/system:/mastodon/public/system
streaming:
@@ -70,7 +68,7 @@ services:
image: tootsuite/mastodon
restart: always
env_file: .env.production
- command: bundle exec sidekiq -q default -q mailers -q pull -q push
+ command: bundle exec sidekiq -q default -q push -q mailers -q pull
depends_on:
- db
- redis
@@ -78,7 +76,6 @@ services:
- external_network
- internal_network
volumes:
- - ./public/packs:/mastodon/public/packs
- ./public/system:/mastodon/public/system
## Uncomment to enable federation with tor instances along with adding the following ENV variables
## http_proxy=http://privoxy:8118
diff --git a/lib/cli.rb b/lib/cli.rb
new file mode 100644
index 000000000..60bff4147
--- /dev/null
+++ b/lib/cli.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+require 'thor'
+require_relative 'mastodon/media_cli'
+require_relative 'mastodon/emoji_cli'
+require_relative 'mastodon/accounts_cli'
+module Mastodon
+ class CLI < Thor
+ desc 'media SUBCOMMAND ...ARGS', 'Manage media files'
+ subcommand 'media', Mastodon::MediaCLI
+
+ desc 'emoji SUBCOMMAND ...ARGS', 'Manage custom emoji'
+ subcommand 'emoji', Mastodon::EmojiCLI
+
+ desc 'accounts SUBCOMMAND ...ARGS', 'Manage accounts'
+ subcommand 'accounts', Mastodon::AccountsCLI
+ end
+end
diff --git a/lib/devise/ldap_authenticatable.rb b/lib/devise/ldap_authenticatable.rb
index ef786fbb7..6903d468d 100644
--- a/lib/devise/ldap_authenticatable.rb
+++ b/lib/devise/ldap_authenticatable.rb
@@ -24,11 +24,13 @@ module Devise
connect_timeout: 10
)
- if (user_info = ldap.bind_as(base: Devise.ldap_base, filter: "(#{Devise.ldap_uid}=#{email})", password: password))
+ filter = format(Devise.ldap_search_filter, uid: Devise.ldap_uid, email: email)
+
+ if (user_info = ldap.bind_as(base: Devise.ldap_base, filter: filter, password: password))
user = User.ldap_get_user(user_info.first)
success!(user)
else
- return fail(:invalid_login)
+ return fail(:invalid)
end
end
end
diff --git a/lib/generators/post_deployment_migration_generator.rb b/lib/generators/post_deployment_migration_generator.rb
new file mode 100644
index 000000000..798c01b88
--- /dev/null
+++ b/lib/generators/post_deployment_migration_generator.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+require 'rails/generators'
+
+module Rails
+ class PostDeploymentMigrationGenerator < Rails::Generators::NamedBase
+ def create_migration_file
+ timestamp = Time.zone.now.strftime('%Y%m%d%H%M%S')
+
+ template 'migration.rb', "db/post_migrate/#{timestamp}_#{file_name}.rb"
+ end
+
+ def migration_class_name
+ file_name.camelize
+ end
+ end
+end
diff --git a/lib/mastodon/accounts_cli.rb b/lib/mastodon/accounts_cli.rb
new file mode 100644
index 000000000..83b69549d
--- /dev/null
+++ b/lib/mastodon/accounts_cli.rb
@@ -0,0 +1,55 @@
+# frozen_string_literal: true
+
+require 'rubygems/package'
+require_relative '../../config/boot'
+require_relative '../../config/environment'
+require_relative 'cli_helper'
+
+module Mastodon
+ class AccountsCLI < Thor
+ option :all, type: :boolean
+ desc 'rotate [USERNAME]', 'Generate and broadcast new keys'
+ long_desc <<-LONG_DESC
+ Generate and broadcast new RSA keys as part of security
+ maintenance.
+
+ With the --all option, all local accounts will be subject
+ to the rotation. Otherwise, and by default, only a single
+ account specified by the USERNAME argument will be
+ processed.
+ LONG_DESC
+ def rotate(username = nil)
+ if options[:all]
+ processed = 0
+ delay = 0
+
+ Account.local.without_suspended.find_in_batches do |accounts|
+ accounts.each do |account|
+ rotate_keys_for_account(account, delay)
+ processed += 1
+ say('.', :green, false)
+ end
+
+ delay += 5.minutes
+ end
+
+ say
+ say("OK, rotated keys for #{processed} accounts", :green)
+ elsif username.present?
+ rotate_keys_for_account(Account.find_local(username))
+ say('OK', :green)
+ else
+ say('No account(s) given', :red)
+ end
+ end
+
+ private
+
+ def rotate_keys_for_account(account, delay = 0)
+ old_key = account.private_key
+ new_key = OpenSSL::PKey::RSA.new(2048).to_pem
+ account.update(private_key: new_key)
+ ActivityPub::UpdateDistributionWorker.perform_in(delay, account.id, sign_with: old_key)
+ end
+ end
+end
diff --git a/lib/mastodon/cli_helper.rb b/lib/mastodon/cli_helper.rb
new file mode 100644
index 000000000..8c4d9731c
--- /dev/null
+++ b/lib/mastodon/cli_helper.rb
@@ -0,0 +1,8 @@
+# frozen_string_literal: true
+
+dev_null = Logger.new('/dev/null')
+
+Rails.logger = dev_null
+ActiveRecord::Base.logger = dev_null
+HttpLog.configuration.logger = dev_null
+Paperclip.options[:log] = false
diff --git a/lib/mastodon/emoji_cli.rb b/lib/mastodon/emoji_cli.rb
new file mode 100644
index 000000000..0a773c771
--- /dev/null
+++ b/lib/mastodon/emoji_cli.rb
@@ -0,0 +1,81 @@
+# frozen_string_literal: true
+
+require 'rubygems/package'
+require_relative '../../config/boot'
+require_relative '../../config/environment'
+require_relative 'cli_helper'
+
+# rubocop:disable Rails/Output
+
+module Mastodon
+ class EmojiCLI < Thor
+ option :prefix
+ option :suffix
+ option :overwrite, type: :boolean
+ option :unlisted, type: :boolean
+ desc 'import PATH', 'Import emoji from a TAR archive at PATH'
+ long_desc <<-LONG_DESC
+ Imports custom emoji from a TAR archive specified by PATH.
+
+ Existing emoji will be skipped unless the --overwrite option
+ is provided, in which case they will be overwritten.
+
+ With the --prefix option, a prefix can be added to all
+ generated shortcodes. Likewise, the --suffix option controls
+ the suffix of all shortcodes.
+
+ With the --unlisted option, the processed emoji will not be
+ visible in the emoji picker (but still usable via other means)
+ LONG_DESC
+ def import(path)
+ imported = 0
+ skipped = 0
+ failed = 0
+
+ Gem::Package::TarReader.new(Zlib::GzipReader.open(path)) do |tar|
+ tar.each do |entry|
+ next unless entry.file? && entry.full_name.end_with?('.png')
+
+ shortcode = [options[:prefix], File.basename(entry.full_name, '.*'), options[:suffix]].compact.join
+ custom_emoji = CustomEmoji.local.find_by(shortcode: shortcode)
+
+ if custom_emoji && !options[:overwrite]
+ skipped += 1
+ next
+ end
+
+ custom_emoji ||= CustomEmoji.new(shortcode: shortcode, domain: nil)
+ custom_emoji.image = StringIO.new(entry.read)
+ custom_emoji.image_file_name = File.basename(entry.full_name)
+ custom_emoji.visible_in_picker = !options[:unlisted]
+
+ if custom_emoji.save
+ imported += 1
+ else
+ failed += 1
+ say('Failure/Error: ', :red)
+ say(entry.full_name)
+ say(' ' + custom_emoji.errors[:image].join(', '), :red)
+ end
+ end
+ end
+
+ puts
+ say("Imported #{imported}, skipped #{skipped}, failed to import #{failed}", color(imported, skipped, failed))
+ end
+
+ private
+
+ def color(green, _yellow, red)
+ if !green.zero? && red.zero?
+ :green
+ elsif red.zero?
+ :yellow
+ else
+ :red
+ end
+ end
+ end
+end
+
+# rubocop:enable Rails/Output
diff --git a/lib/mastodon/media_cli.rb b/lib/mastodon/media_cli.rb
new file mode 100644
index 000000000..12ebdb774
--- /dev/null
+++ b/lib/mastodon/media_cli.rb
@@ -0,0 +1,64 @@
+# frozen_string_literal: true
+
+require_relative '../../config/boot'
+require_relative '../../config/environment'
+require_relative 'cli_helper'
+
+# rubocop:disable Rails/Output
+
+module Mastodon
+ class MediaCLI < Thor
+ option :days, type: :numeric, default: 7
+ option :background, type: :boolean, default: false
+ option :verbose, type: :boolean, default: false
+ option :dry_run, type: :boolean, default: false
+ desc 'remove', 'Remove remote media files'
+ long_desc <<-DESC
+ Removes locally cached copies of media attachments from other servers.
+
+ The --days option specifies how old media attachments have to be before
+ they are removed. It defaults to 7 days.
+
+ With the --background option, instead of deleting the files sequentially,
+ they will be queued into Sidekiq and the command will exit as soon as
+ possible. In Sidekiq they will be processed with higher concurrency, but
+ it may impact other operations of the Mastodon server, and it may overload
+ the underlying file storage.
+
+ With the --verbose option, output deleting file ID to console (only when --background false).
+
+ With the --dry-run option, output the number of files to delete without deleting.
+ DESC
+ def remove
+ time_ago = options[:days].days.ago
+ queued = 0
+ processed = 0
+ dry_run = options[:dry_run] ? '(DRY RUN)' : ''
+
+ if options[:background]
+ MediaAttachment.where.not(remote_url: '').where.not(file_file_name: nil).where('created_at < ?', time_ago).select(:id).reorder(nil).find_in_batches do |media_attachments|
+ queued += media_attachments.size
+ Maintenance::UncacheMediaWorker.push_bulk(media_attachments.map(&:id)) unless options[:dry_run]
+ end
+ else
+ MediaAttachment.where.not(remote_url: '').where.not(file_file_name: nil).where('created_at < ?', time_ago).reorder(nil).find_in_batches do |media_attachments|
+ media_attachments.each do |m|
+ Maintenance::UncacheMediaWorker.new.perform(m) unless options[:dry_run]
+ options[:verbose] ? say(m.id) : say('.', :green, false)
+ processed += 1
+ end
+ end
+ end
+
+ say
+
+ if options[:background]
+ say("Scheduled the deletion of #{queued} media attachments #{dry_run}.", :green)
+ else
+ say("Removed #{processed} media attachments #{dry_run}.", :green)
+ end
+ end
+ end
+end
+
+# rubocop:enable Rails/Output
diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb
index 38debbd6e..0e41a9a6d 100644
--- a/lib/mastodon/version.rb
+++ b/lib/mastodon/version.rb
@@ -9,11 +9,11 @@ module Mastodon
end
def minor
- 4
+ 5
end
def patch
- 5
+ 0
end
def pre
@@ -32,8 +32,12 @@ module Mastodon
[to_a.join('.'), flags].join
end
+ def repository
+ 'tootsuite/mastodon'
+ end
+
def source_base_url
- 'https://github.com/tootsuite/mastodon'
+ "https://github.com/#{repository}"
end
# specify git tag or commit hash here
diff --git a/lib/paperclip/gif_transcoder.rb b/lib/paperclip/gif_transcoder.rb
index 62787983c..cbab6fd99 100644
--- a/lib/paperclip/gif_transcoder.rb
+++ b/lib/paperclip/gif_transcoder.rb
@@ -5,14 +5,7 @@ module Paperclip
# to convert animated gifs to webm
class GifTranscoder < Paperclip::Processor
def make
- num_frames = identify('-format %n :file', file: file.path).to_i
-
- unless options[:style] == :original && num_frames > 1
- tmp_file = Paperclip::TempfileFactory.new.generate(attachment.instance.file_file_name)
- tmp_file << file.read
- tmp_file.flush
- return tmp_file
- end
+ return File.open(@file.path) unless needs_convert?
final_file = Paperclip::Transcoder.make(file, options, attachment)
@@ -22,5 +15,12 @@ module Paperclip
final_file
end
+
+ private
+
+ def needs_convert?
+ num_frames = identify('-format %n :file', file: file.path).to_i
+ options[:style] == :original && num_frames > 1
+ end
end
end
diff --git a/lib/paperclip/lazy_thumbnail.rb b/lib/paperclip/lazy_thumbnail.rb
index aafa21343..ea675a5bf 100644
--- a/lib/paperclip/lazy_thumbnail.rb
+++ b/lib/paperclip/lazy_thumbnail.rb
@@ -5,8 +5,14 @@ module Paperclip
def make
return File.open(@file.path) unless needs_convert?
- min_side = [@current_geometry.width, @current_geometry.height].min
- options[:geometry] = "#{min_side.to_i}x#{min_side.to_i}#" if @target_geometry.square? && min_side < @target_geometry.width
+ if options[:geometry]
+ min_side = [@current_geometry.width, @current_geometry.height].min.to_i
+ options[:geometry] = "#{min_side}x#{min_side}#" if @target_geometry.square? && min_side < @target_geometry.width
+ elsif options[:pixels]
+ width = Math.sqrt(options[:pixels] * (@current_geometry.width.to_f / @current_geometry.height.to_f)).round.to_i
+ height = Math.sqrt(options[:pixels] * (@current_geometry.height.to_f / @current_geometry.width.to_f)).round.to_i
+ options[:geometry] = "#{width}x#{height}>"
+ end
Paperclip::Thumbnail.make(file, options, attachment)
end
@@ -18,7 +24,8 @@ module Paperclip
end
def needs_different_geometry?
- !@target_geometry.nil? && @current_geometry.width != @target_geometry.width && @current_geometry.height != @target_geometry.height
+ (options[:geometry] && @current_geometry.width != @target_geometry.width && @current_geometry.height != @target_geometry.height) ||
+ (options[:pixels] && @current_geometry.width * @current_geometry.height > options[:pixels])
end
def needs_different_format?
diff --git a/lib/tasks/db.rake b/lib/tasks/db.rake
index 32039c31d..b76e90131 100644
--- a/lib/tasks/db.rake
+++ b/lib/tasks/db.rake
@@ -18,7 +18,7 @@ def each_schema_load_environment
# needing to do the same, and we can't even use the same method
# to do it.
- if Rails.env == 'development'
+ if Rails.env.development?
test_conf = ActiveRecord::Base.configurations['test']
if test_conf['database']&.present?
diff --git a/lib/tasks/mastodon.rake b/lib/tasks/mastodon.rake
index de8c0bb86..649a22a0b 100644
--- a/lib/tasks/mastodon.rake
+++ b/lib/tasks/mastodon.rake
@@ -222,7 +222,7 @@ namespace :mastodon do
end
if prompt.yes?('Do you want to access the uploaded files from your own domain?')
- env['S3_CLOUDFRONT_HOST'] = prompt.ask('Domain for uploaded files:') do |q|
+ env['S3_ALIAS_HOST'] = prompt.ask('Domain for uploaded files:') do |q|
q.required true
q.default "files.#{env['LOCAL_DOMAIN']}"
q.modify :strip
@@ -280,14 +280,14 @@ namespace :mastodon do
begin
ActionMailer::Base.smtp_settings = {
- :port => env['SMTP_PORT'],
- :address => env['SMTP_SERVER'],
- :user_name => env['SMTP_LOGIN'].presence,
- :password => env['SMTP_PASSWORD'].presence,
- :domain => env['LOCAL_DOMAIN'],
- :authentication => env['SMTP_AUTH_METHOD'] == 'none' ? nil : env['SMTP_AUTH_METHOD'] || :plain,
- :openssl_verify_mode => env['SMTP_OPENSSL_VERIFY_MODE'],
- :enable_starttls_auto => true,
+ port: env['SMTP_PORT'],
+ address: env['SMTP_SERVER'],
+ user_name: env['SMTP_LOGIN'].presence,
+ password: env['SMTP_PASSWORD'].presence,
+ domain: env['LOCAL_DOMAIN'],
+ authentication: env['SMTP_AUTH_METHOD'] == 'none' ? nil : env['SMTP_AUTH_METHOD'] || :plain,
+ openssl_verify_mode: env['SMTP_OPENSSL_VERIFY_MODE'],
+ enable_starttls_auto: true,
}
ActionMailer::Base.default_options = {
@@ -326,13 +326,11 @@ namespace :mastodon do
if prompt.yes?('Prepare the database now?')
prompt.say 'Running `RAILS_ENV=production rails db:setup` ...'
- prompt.say "\n"
+ prompt.say "\n\n"
if cmd.run!({ RAILS_ENV: 'production', SAFETY_ASSURED: 1 }, :rails, 'db:setup').failure?
- prompt.say "\n"
prompt.error 'That failed! Perhaps your configuration is not right'
else
- prompt.say "\n"
prompt.ok 'Done!'
end
end
@@ -343,13 +341,11 @@ namespace :mastodon do
if prompt.yes?('Compile the assets now?')
prompt.say 'Running `RAILS_ENV=production rails assets:precompile` ...'
- prompt.say "\n"
+ prompt.say "\n\n"
if cmd.run!({ RAILS_ENV: 'production' }, :rails, 'assets:precompile').failure?
- prompt.say "\n"
prompt.error 'That failed! Maybe you need swap space?'
else
- prompt.say "\n"
prompt.say 'Done!'
end
end
@@ -394,12 +390,6 @@ namespace :mastodon do
end
end
- desc 'Execute daily tasks (deprecated)'
- task :daily do
- # No-op
- # All of these tasks are now executed via sidekiq-scheduler
- end
-
desc 'Turn a user into an admin, identified by the USERNAME environment variable'
task make_admin: :environment do
include RoutingHelper
@@ -494,26 +484,22 @@ namespace :mastodon do
end
namespace :media do
- desc 'Removes media attachments that have not been assigned to any status for longer than a day (deprecated)'
- task clear: :environment do
- # No-op
- # This task is now executed via sidekiq-scheduler
- end
-
desc 'Remove media attachments attributed to silenced accounts'
task remove_silenced: :environment do
- MediaAttachment.where(account: Account.silenced).select(:id).find_in_batches do |media_attachments|
+ nb_media_attachments = 0
+ MediaAttachment.where(account: Account.silenced).select(:id).reorder(nil).find_in_batches do |media_attachments|
+ nb_media_attachments += media_attachments.length
Maintenance::DestroyMediaWorker.push_bulk(media_attachments.map(&:id))
end
+ puts "Scheduled the deletion of #{nb_media_attachments} media attachments"
end
desc 'Remove cached remote media attachments that are older than NUM_DAYS. By default 7 (week)'
task remove_remote: :environment do
- time_ago = ENV.fetch('NUM_DAYS') { 7 }.to_i.days.ago
-
- MediaAttachment.where.not(remote_url: '').where.not(file_file_name: nil).where('created_at < ?', time_ago).select(:id).find_in_batches do |media_attachments|
- Maintenance::UncacheMediaWorker.push_bulk(media_attachments.map(&:id))
- end
+ puts 'Please use `./bin/tootctl media remove --help` directly'.colorize(:yellow)
+ require_relative '../mastodon/media_cli'
+ cli = Mastodon::MediaCLI.new([], days: (ENV['NUM_DAYS'] || 7).to_i)
+ cli.invoke(:remove)
end
desc 'Set unknown attachment type for remote-only attachments'
@@ -527,10 +513,13 @@ namespace :mastodon do
task redownload_avatars: :environment do
accounts = Account.remote
accounts = accounts.where(domain: ENV['DOMAIN']) if ENV['DOMAIN'].present?
+ nb_accounts = 0
- accounts.select(:id).find_in_batches do |accounts_batch|
+ accounts.select(:id).reorder(nil).find_in_batches do |accounts_batch|
+ nb_accounts += accounts_batch.length
Maintenance::RedownloadAccountMediaWorker.push_bulk(accounts_batch.map(&:id))
end
+ puts "Scheduled the download of avatars/headers for #{nb_accounts} remote users"
end
end
@@ -539,21 +528,9 @@ namespace :mastodon do
task clear: :environment do
Pubsubhubbub::UnsubscribeWorker.push_bulk(Account.remote.without_followers.where.not(subscription_expires_at: nil).pluck(:id))
end
-
- desc 'Re-subscribes to soon expiring PuSH subscriptions (deprecated)'
- task refresh: :environment do
- # No-op
- # This task is now executed via sidekiq-scheduler
- end
end
namespace :feeds do
- desc 'Clear timelines of inactive users (deprecated)'
- task clear: :environment do
- # No-op
- # This task is now executed via sidekiq-scheduler
- end
-
desc 'Clear all timelines without regenerating them'
task clear_all: :environment do
Redis.current.keys('feed:*').each { |key| Redis.current.del(key) }
@@ -561,27 +538,13 @@ namespace :mastodon do
desc 'Generates home timelines for users who logged in in the past two weeks'
task build: :environment do
- User.active.select(:id, :account_id).find_in_batches do |users|
+ User.active.select(:id, :account_id).reorder(nil).find_in_batches do |users|
RegenerationWorker.push_bulk(users.map(&:account_id))
end
end
end
- namespace :emails do
- desc 'Send out digest e-mails (deprecated)'
- task digest: :environment do
- # No-op
- # This task is now executed via sidekiq-scheduler
- end
- end
-
namespace :users do
- desc 'Clear out unconfirmed users (deprecated)'
- task clear: :environment do
- # No-op
- # This task is now executed via sidekiq-scheduler
- end
-
desc 'List e-mails of all admin users'
task admins: :environment do
puts 'Admin user emails:'
@@ -748,10 +711,10 @@ namespace :mastodon do
pastel = Pastel.new
duplicate_masters.each do |account|
- puts pastel.yellow("First of their name: ") + pastel.bold(account.username) + " (#{admin_account_url(account.id)})"
+ puts pastel.yellow('First of their name: ') + pastel.bold(account.username) + " (#{admin_account_url(account.id)})"
Account.where('lower(username) = ?', account.username.downcase).where.not(id: account.id).each do |duplicate|
- puts " " + pastel.red("Duplicate: ") + admin_account_url(duplicate.id)
+ puts ' ' + pastel.red('Duplicate: ') + admin_account_url(duplicate.id)
end
end
end
diff --git a/lib/templates/rails/post_deployment_migration/migration.rb b/lib/templates/rails/post_deployment_migration/migration.rb
new file mode 100644
index 000000000..503205b84
--- /dev/null
+++ b/lib/templates/rails/post_deployment_migration/migration.rb
@@ -0,0 +1,8 @@
+# frozen_string_literal: true
+
+class <%= migration_class_name %> < ActiveRecord::Migration[5.2]
+ disable_ddl_transaction!
+
+ def change
+ end
+end
diff --git a/package.json b/package.json
index 5b39f015e..b4d81d603 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "mastodon",
"license": "AGPL-3.0-or-later",
"engines": {
- "node": ">=6"
+ "node": ">=8"
},
"scripts": {
"postversion": "git push --tags",
@@ -21,29 +21,29 @@
"private": true,
"dependencies": {
"array-includes": "^3.0.3",
- "autoprefixer": "^7.1.6",
+ "autoprefixer": "^8.6.5",
"axios": "~0.16.2",
- "babel-core": "^6.25.0",
- "babel-loader": "^7.1.1",
- "babel-plugin-lodash": "^3.3.2",
+ "babel-core": "^6.26.3",
+ "babel-loader": "^7.1.5",
+ "babel-plugin-lodash": "^3.3.4",
"babel-plugin-preval": "^1.6.1",
- "babel-plugin-react-intl": "^2.3.1",
+ "babel-plugin-react-intl": "^2.4.0",
"babel-plugin-syntax-dynamic-import": "^6.18.0",
"babel-plugin-transform-class-properties": "^6.24.1",
- "babel-plugin-transform-decorators-legacy": "^1.3.4",
- "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1",
+ "babel-plugin-transform-decorators-legacy": "^1.3.5",
+ "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2",
"babel-plugin-transform-object-rest-spread": "^6.23.0",
"babel-plugin-transform-react-inline-elements": "^6.22.0",
"babel-plugin-transform-react-jsx-self": "^6.22.0",
"babel-plugin-transform-react-jsx-source": "^6.22.0",
- "babel-plugin-transform-react-remove-prop-types": "^0.4.10",
+ "babel-plugin-transform-react-remove-prop-types": "^0.4.13",
"babel-plugin-transform-runtime": "^6.23.0",
- "babel-preset-env": "^1.6.1",
+ "babel-preset-env": "^1.7.0",
"babel-preset-react": "^6.24.1",
"classnames": "^2.2.5",
- "compression-webpack-plugin": "^1.0.1",
- "cross-env": "^5.1.1",
- "css-loader": "^0.28.4",
+ "compression-webpack-plugin": "^1.1.11",
+ "cross-env": "^5.1.4",
+ "css-loader": "^0.28.11",
"detect-passive-events": "^1.0.2",
"dotenv": "^4.0.0",
"emoji-mart": "Gargron/emoji-mart#build",
@@ -51,8 +51,7 @@
"escape-html": "^1.0.3",
"exif-js": "^2.3.0",
"express": "^4.16.2",
- "extract-text-webpack-plugin": "^3.0.2",
- "file-loader": "^0.11.2",
+ "file-loader": "^1.1.11",
"font-awesome": "^4.7.0",
"glob": "^7.1.1",
"http-link-header": "^0.8.0",
@@ -63,27 +62,28 @@
"intl-messageformat": "^2.2.0",
"intl-relativeformat": "^2.1.0",
"is-nan": "^1.2.1",
- "js-yaml": "^3.9.0",
- "lodash": "^4.17.4",
+ "js-yaml": "^3.11.0",
+ "lodash": "^4.17.5",
"mark-loader": "^0.1.6",
"marky": "^1.2.0",
+ "mini-css-extract-plugin": "^0.4.1",
"mkdirp": "^0.5.1",
- "node-sass": "^4.7.2",
+ "node-sass": "^4.9.2",
"npm-run-all": "^4.1.2",
"npmlog": "^4.1.2",
"object-assign": "^4.1.1",
"object-fit-images": "^3.2.3",
"object.values": "^1.0.4",
- "offline-plugin": "^4.8.3",
- "path-complete-extname": "^0.1.0",
+ "offline-plugin": "^5.0.5",
+ "path-complete-extname": "^1.0.0",
"pg": "^6.4.0",
- "postcss-loader": "^2.0.9",
+ "postcss-loader": "^2.1.6",
"postcss-object-fit-images": "^1.1.2",
- "postcss-smart-import": "^0.7.5",
- "precss": "^2.0.0",
+ "postcss-smart-import": "^0.7.6",
+ "precss": "^3.1.2",
"prop-types": "^15.5.10",
"punycode": "^2.1.0",
- "rails-ujs": "^5.1.2",
+ "rails-ujs": "^5.2.0",
"react": "^16.3.0",
"react-dom": "^16.3.0",
"react-hotkeys": "^0.10.0",
@@ -98,34 +98,35 @@
"react-router-dom": "^4.1.1",
"react-router-scroll-4": "^1.0.0-beta.1",
"react-sparklines": "^1.7.0",
- "react-swipeable-views": "^0.12.3",
+ "react-swipeable-views": "0.12.13",
"react-textarea-autosize": "^5.2.1",
"react-toggle": "^4.0.1",
"redis": "^2.7.1",
"redux": "^3.7.1",
"redux-immutable": "^4.0.0",
"redux-thunk": "^2.2.0",
+ "rellax": "^1.6.2",
"requestidlecallback": "^0.3.0",
"reselect": "^3.0.1",
- "resolve-url-loader": "^2.2.0",
"rimraf": "^2.6.1",
- "sass-loader": "^6.0.6",
+ "sass-loader": "^7.0.3",
"stringz": "^0.3.0",
- "style-loader": "^0.19.0",
+ "style-loader": "^0.21.0",
"substring-trie": "^1.0.2",
"throng": "^4.0.0",
"tiny-queue": "^0.2.1",
+ "uglifyjs-webpack-plugin": "^1.2.7",
"uuid": "^3.1.0",
- "uws": "^8.14.0",
- "webpack": "^3.9.1",
- "webpack-bundle-analyzer": "^2.9.1",
- "webpack-manifest-plugin": "^1.2.1",
- "webpack-merge": "^4.1.1",
- "websocket.js": "^0.1.12",
- "whatwg-url": "^6.4.1"
+ "uws": "10.148.0",
+ "webpack": "^4.16.0",
+ "webpack-bundle-analyzer": "^2.13.1",
+ "webpack-cli": "^3.0.8",
+ "webpack-manifest-plugin": "^2.0.3",
+ "webpack-merge": "^4.1.3",
+ "websocket.js": "^0.1.12"
},
"devDependencies": {
- "babel-eslint": "^8.2.3",
+ "babel-eslint": "^8.2.6",
"enzyme": "^3.2.0",
"enzyme-adapter-react-16": "^1.1.0",
"eslint": "^4.19.1",
@@ -135,9 +136,9 @@
"eslint-plugin-react": "^7.8.2",
"jest": "^21.2.1",
"raf": "^3.4.0",
- "react-intl-translations-manager": "^5.0.0",
+ "react-intl-translations-manager": "^5.0.3",
"react-test-renderer": "^16.2.0",
- "webpack-dev-server": "^2.9.5",
+ "webpack-dev-server": "^3.1.4",
"yargs": "^8.0.2"
},
"optionalDependencies": {
diff --git a/scalingo.json b/scalingo.json
index 873731ac9..dd8fb5530 100644
--- a/scalingo.json
+++ b/scalingo.json
@@ -91,6 +91,11 @@
"description": "Internal scalingo configuration",
"required": true,
"value": "https://github.com/Scalingo/multi-buildpack.git"
+ },
+ "WITH_FFPROBE": {
+ "description": "Internal scalingo configuration to install ffprobe",
+ "required": true,
+ "value": "true"
}
},
"scripts": {
diff --git a/spec/controllers/about_controller_spec.rb b/spec/controllers/about_controller_spec.rb
index 2089b3b16..03dddd8c1 100644
--- a/spec/controllers/about_controller_spec.rb
+++ b/spec/controllers/about_controller_spec.rb
@@ -8,10 +8,6 @@ RSpec.describe AboutController, type: :controller do
get :show
end
- it 'assigns @body_classes' do
- expect(assigns(:body_classes)).to eq 'about-body'
- end
-
it 'assigns @instance_presenter' do
expect(assigns(:instance_presenter)).to be_kind_of InstancePresenter
end
@@ -26,10 +22,6 @@ RSpec.describe AboutController, type: :controller do
get :more
end
- it 'assigns @body_classes' do
- expect(assigns(:body_classes)).to eq 'about-body'
- end
-
it 'assigns @instance_presenter' do
expect(assigns(:instance_presenter)).to be_kind_of InstancePresenter
end
@@ -44,10 +36,6 @@ RSpec.describe AboutController, type: :controller do
get :terms
end
- it 'assigns @body_classes' do
- expect(assigns(:body_classes)).to eq 'about-body'
- end
-
it 'returns http success' do
expect(response).to have_http_status(200)
end
diff --git a/spec/controllers/admin/reports_controller_spec.rb b/spec/controllers/admin/reports_controller_spec.rb
index e50c02a72..bcc789c57 100644
--- a/spec/controllers/admin/reports_controller_spec.rb
+++ b/spec/controllers/admin/reports_controller_spec.rb
@@ -68,21 +68,6 @@ describe Admin::ReportsController do
end
end
- describe 'with an outcome of `suspend`' do
- it 'suspends the reported account' do
- report = Fabricate(:report)
- allow(Admin::SuspensionWorker).to receive(:perform_async)
-
- put :update, params: { id: report, outcome: 'suspend' }
- expect(response).to redirect_to(admin_reports_path)
- report.reload
- expect(report.action_taken_by_account).to eq user.account
- expect(report.action_taken).to eq true
- expect(Admin::SuspensionWorker).
- to have_received(:perform_async).with(report.target_account_id)
- end
- end
-
describe 'with an outsome of `silence`' do
it 'silences the reported account' do
report = Fabricate(:report)
diff --git a/spec/controllers/admin/suspensions_controller_spec.rb b/spec/controllers/admin/suspensions_controller_spec.rb
index ddfc938d1..babb1ed96 100644
--- a/spec/controllers/admin/suspensions_controller_spec.rb
+++ b/spec/controllers/admin/suspensions_controller_spec.rb
@@ -12,7 +12,7 @@ describe Admin::SuspensionsController do
account = Fabricate(:account, suspended: false)
expect(Admin::SuspensionWorker).to receive(:perform_async).with(account.id)
- post :create, params: { account_id: account.id }
+ post :create, params: { account_id: account.id, form_admin_suspension_confirmation: { acct: account.acct } }
expect(response).to redirect_to(admin_accounts_path)
end
diff --git a/spec/controllers/api/salmon_controller_spec.rb b/spec/controllers/api/salmon_controller_spec.rb
index 5f01f8073..8ce4913a5 100644
--- a/spec/controllers/api/salmon_controller_spec.rb
+++ b/spec/controllers/api/salmon_controller_spec.rb
@@ -15,8 +15,7 @@ RSpec.describe Api::SalmonController, type: :controller do
describe 'POST #update' do
context 'with valid post data' do
before do
- request.env['RAW_POST_DATA'] = File.read(File.join(Rails.root, 'spec', 'fixtures', 'salmon', 'mention.xml'))
- post :update, params: { id: account.id }
+ post :update, params: { id: account.id }, body: File.read(File.join(Rails.root, 'spec', 'fixtures', 'salmon', 'mention.xml'))
end
it 'contains XML in the request body' do
@@ -42,8 +41,7 @@ RSpec.describe Api::SalmonController, type: :controller do
context 'with empty post data' do
before do
- request.env['RAW_POST_DATA'] = ''
- post :update, params: { id: account.id }
+ post :update, params: { id: account.id }, body: ''
end
it 'returns http client error' do
@@ -56,8 +54,7 @@ RSpec.describe Api::SalmonController, type: :controller do
service = double(call: false)
allow(VerifySalmonService).to receive(:new).and_return(service)
- request.env['RAW_POST_DATA'] = File.read(File.join(Rails.root, 'spec', 'fixtures', 'salmon', 'mention.xml'))
- post :update, params: { id: account.id }
+ post :update, params: { id: account.id }, body: File.read(File.join(Rails.root, 'spec', 'fixtures', 'salmon', 'mention.xml'))
end
it 'returns http client error' do
diff --git a/spec/controllers/api/subscriptions_controller_spec.rb b/spec/controllers/api/subscriptions_controller_spec.rb
index 48eb1fc64..b46971a54 100644
--- a/spec/controllers/api/subscriptions_controller_spec.rb
+++ b/spec/controllers/api/subscriptions_controller_spec.rb
@@ -53,9 +53,8 @@ RSpec.describe Api::SubscriptionsController, type: :controller do
stub_request(:any, "https://mastodon.social/users/Gargron").to_return(status: 404)
request.env['HTTP_X_HUB_SIGNATURE'] = "sha1=#{OpenSSL::HMAC.hexdigest('sha1', 'abc', feed)}"
- request.env['RAW_POST_DATA'] = feed
- post :update, params: { id: account.id }
+ post :update, params: { id: account.id }, body: feed
end
it 'returns http success' do
diff --git a/spec/controllers/api/v1/mutes_controller_spec.rb b/spec/controllers/api/v1/mutes_controller_spec.rb
index f9603b7ff..a2b814a69 100644
--- a/spec/controllers/api/v1/mutes_controller_spec.rb
+++ b/spec/controllers/api/v1/mutes_controller_spec.rb
@@ -3,19 +3,61 @@ require 'rails_helper'
RSpec.describe Api::V1::MutesController, type: :controller do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
- let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:mutes') }
+ let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:scopes) { 'read:mutes' }
+ let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
- before do
- Fabricate(:mute, account: user.account, hide_notifications: false)
- allow(controller).to receive(:doorkeeper_token) { token }
- end
+ before { allow(controller).to receive(:doorkeeper_token) { token } }
describe 'GET #index' do
- it 'returns http success' do
+ it 'limits according to limit parameter' do
+ 2.times.map { Fabricate(:mute, account: user.account) }
get :index, params: { limit: 1 }
+ expect(body_as_json.size).to eq 1
+ end
+ it 'queries mutes in range according to max_id' do
+ mutes = 2.times.map { Fabricate(:mute, account: user.account) }
+
+ get :index, params: { max_id: mutes[1] }
+
+ expect(body_as_json.size).to eq 1
+ expect(body_as_json[0][:id]).to eq mutes[0].target_account_id.to_s
+ end
+
+ it 'queries mutes in range according to since_id' do
+ mutes = 2.times.map { Fabricate(:mute, account: user.account) }
+
+ get :index, params: { since_id: mutes[0] }
+
+ expect(body_as_json.size).to eq 1
+ expect(body_as_json[0][:id]).to eq mutes[1].target_account_id.to_s
+ end
+
+ it 'sets pagination header for next path' do
+ mutes = 2.times.map { Fabricate(:mute, account: user.account) }
+ get :index, params: { limit: 1, since_id: mutes[0] }
+ expect(response.headers['Link'].find_link(['rel', 'next']).href).to eq api_v1_mutes_url(limit: 1, max_id: mutes[1])
+ end
+
+ it 'sets pagination header for previous path' do
+ mute = Fabricate(:mute, account: user.account)
+ get :index
+ expect(response.headers['Link'].find_link(['rel', 'prev']).href).to eq api_v1_mutes_url(since_id: mute)
+ end
+
+ it 'returns http success' do
+ get :index
expect(response).to have_http_status(200)
end
+
+ context 'with wrong scopes' do
+ let(:scopes) { 'write:mutes' }
+
+ it 'returns http forbidden' do
+ get :index
+ expect(response).to have_http_status(403)
+ end
+ end
end
end
diff --git a/spec/controllers/application_controller_spec.rb b/spec/controllers/application_controller_spec.rb
index c6c78d3f7..d158625e6 100644
--- a/spec/controllers/application_controller_spec.rb
+++ b/spec/controllers/application_controller_spec.rb
@@ -92,6 +92,39 @@ describe ApplicationController, type: :controller do
end
end
+ describe 'helper_method :current_theme' do
+ it 'returns "default" when theme wasn\'t changed in admin settings' do
+ allow(Setting).to receive(:default_settings).and_return({'theme' => 'default'})
+
+ expect(controller.view_context.current_theme).to eq 'default'
+ end
+
+ it 'returns instances\'s theme when user is not signed in' do
+ allow(Setting).to receive(:[]).with('theme').and_return 'contrast'
+
+ expect(controller.view_context.current_theme).to eq 'contrast'
+ end
+
+ it 'returns instances\'s default theme when user didn\'t set theme' do
+ current_user = Fabricate(:user)
+ sign_in current_user
+
+ allow(Setting).to receive(:[]).with('theme').and_return 'contrast'
+
+ expect(controller.view_context.current_theme).to eq 'contrast'
+ end
+
+ it 'returns user\'s theme when it is set' do
+ current_user = Fabricate(:user)
+ current_user.settings['theme'] = 'mastodon-light'
+ sign_in current_user
+
+ allow(Setting).to receive(:[]).with('theme').and_return 'contrast'
+
+ expect(controller.view_context.current_theme).to eq 'mastodon-light'
+ end
+ end
+
context 'ActionController::RoutingError' do
subject do
routes.draw { get 'routing_error' => 'anonymous#routing_error' }
diff --git a/spec/controllers/authorize_follows_controller_spec.rb b/spec/controllers/authorize_interactions_controller_spec.rb
similarity index 71%
rename from spec/controllers/authorize_follows_controller_spec.rb
rename to spec/controllers/authorize_interactions_controller_spec.rb
index 52971c724..81fd9ceb7 100644
--- a/spec/controllers/authorize_follows_controller_spec.rb
+++ b/spec/controllers/authorize_interactions_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe AuthorizeFollowsController do
+describe AuthorizeInteractionsController do
render_views
describe 'GET #show' do
@@ -39,19 +39,19 @@ describe AuthorizeFollowsController do
expect(service).to have_received(:call).with('missing@hostname')
end
- it 'sets account from url' do
+ it 'sets resource from url' do
account = Account.new
service = double
- allow(FetchRemoteAccountService).to receive(:new).and_return(service)
+ allow(ResolveURLService).to receive(:new).and_return(service)
allow(service).to receive(:call).with('http://example.com').and_return(account)
get :show, params: { acct: 'http://example.com' }
expect(response).to have_http_status(200)
- expect(assigns(:account)).to eq account
+ expect(assigns(:resource)).to eq account
end
- it 'sets account from acct uri' do
+ it 'sets resource from acct uri' do
account = Account.new
service = double
allow(ResolveAccountService).to receive(:new).and_return(service)
@@ -60,7 +60,7 @@ describe AuthorizeFollowsController do
get :show, params: { acct: 'acct:found@hostname' }
expect(response).to have_http_status(200)
- expect(assigns(:account)).to eq account
+ expect(assigns(:resource)).to eq account
end
end
end
@@ -75,8 +75,8 @@ describe AuthorizeFollowsController do
end
describe 'when signed in' do
- let(:user) { Fabricate(:user) }
- let(:account) { Fabricate(:account, user: user) }
+ let!(:user) { Fabricate(:user) }
+ let!(:account) { user.account }
before do
sign_in(user)
@@ -84,25 +84,26 @@ describe AuthorizeFollowsController do
it 'shows error when account not found' do
service = double
- allow(FollowService).to receive(:new).and_return(service)
- allow(service).to receive(:call).with(account, 'user@hostname').and_return(nil)
+
+ allow(ResolveAccountService).to receive(:new).and_return(service)
+ allow(service).to receive(:call).with('user@hostname').and_return(nil)
post :create, params: { acct: 'acct:user@hostname' }
- expect(service).to have_received(:call).with(account, 'user@hostname')
expect(response).to render_template(:error)
end
it 'follows account when found' do
target_account = Fabricate(:account)
- result_account = double(target_account: target_account)
service = double
- allow(FollowService).to receive(:new).and_return(service)
- allow(service).to receive(:call).with(account, 'user@hostname').and_return(result_account)
+
+ allow(ResolveAccountService).to receive(:new).and_return(service)
+ allow(service).to receive(:call).with('user@hostname').and_return(target_account)
post :create, params: { acct: 'acct:user@hostname' }
- expect(service).to have_received(:call).with(account, 'user@hostname')
+ expect(service).to have_received(:call).with('user@hostname')
+ expect(account.following?(target_account)).to be true
expect(response).to render_template(:success)
end
end
diff --git a/spec/controllers/concerns/signature_verification_spec.rb b/spec/controllers/concerns/signature_verification_spec.rb
index 64648621e..3daf1fc4e 100644
--- a/spec/controllers/concerns/signature_verification_spec.rb
+++ b/spec/controllers/concerns/signature_verification_spec.rb
@@ -105,7 +105,7 @@ describe ApplicationController, type: :controller do
end
it 'returns nil when body has been tampered' do
- request.headers['RAW_POST_DATA'] = 'doo doo doo'
+ post :success, body: 'doo doo doo'
expect(controller.signed_request_account).to be_nil
end
end
diff --git a/spec/controllers/intents_controller_spec.rb b/spec/controllers/intents_controller_spec.rb
index 3dde7f835..ddfd5ea36 100644
--- a/spec/controllers/intents_controller_spec.rb
+++ b/spec/controllers/intents_controller_spec.rb
@@ -13,7 +13,7 @@ RSpec.describe IntentsController, type: :controller do
context 'when host is follow' do
let(:uri) { 'web+mastodon://follow?uri=test' }
- it { is_expected.to redirect_to authorize_follow_path(acct: 'test') }
+ it { is_expected.to redirect_to authorize_interaction_path(uri: 'test') }
end
context 'when host is share' do
diff --git a/spec/fabricators/account_pin_fabricator.rb b/spec/fabricators/account_pin_fabricator.rb
new file mode 100644
index 000000000..c0f8b8afb
--- /dev/null
+++ b/spec/fabricators/account_pin_fabricator.rb
@@ -0,0 +1,4 @@
+Fabricator(:account_pin) do
+ account nil
+ target_account nil
+end
diff --git a/spec/fabricators/relay_fabricator.rb b/spec/fabricators/relay_fabricator.rb
new file mode 100644
index 000000000..3f8726f6b
--- /dev/null
+++ b/spec/fabricators/relay_fabricator.rb
@@ -0,0 +1,4 @@
+Fabricator(:relay) do
+ inbox_url "https://example.com/inbox"
+ state :idle
+end
diff --git a/spec/fabricators/status_stat_fabricator.rb b/spec/fabricators/status_stat_fabricator.rb
new file mode 100644
index 000000000..9c67fd404
--- /dev/null
+++ b/spec/fabricators/status_stat_fabricator.rb
@@ -0,0 +1,6 @@
+Fabricator(:status_stat) do
+ status_id nil
+ replies_count ""
+ reblogs_count ""
+ favourites_count ""
+end
diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb
index ac54f1f70..3ccd96f44 100644
--- a/spec/helpers/application_helper_spec.rb
+++ b/spec/helpers/application_helper_spec.rb
@@ -17,7 +17,7 @@ describe ApplicationHelper do
end
end
- describe 'add_rtl_body_class' do
+ describe 'locale_direction' do
around do |example|
current_locale = I18n.locale
example.run
@@ -26,22 +26,22 @@ describe ApplicationHelper do
it 'adds rtl body class if locale is Arabic' do
I18n.locale = :ar
- expect(helper.add_rtl_body_class('other classes')).to eq 'other classes rtl'
+ expect(helper.locale_direction).to eq 'rtl'
end
it 'adds rtl body class if locale is Farsi' do
I18n.locale = :fa
- expect(helper.add_rtl_body_class('other classes')).to eq 'other classes rtl'
+ expect(helper.locale_direction).to eq 'rtl'
end
it 'adds rtl if locale is Hebrew' do
I18n.locale = :he
- expect(helper.add_rtl_body_class('other classes')).to eq 'other classes rtl'
+ expect(helper.locale_direction).to eq 'rtl'
end
it 'does not add rtl if locale is Thai' do
I18n.locale = :th
- expect(helper.add_rtl_body_class('other classes')).to eq 'other classes'
+ expect(helper.locale_direction).to_not eq 'rtl'
end
end
diff --git a/spec/helpers/stream_entries_helper_spec.rb b/spec/helpers/stream_entries_helper_spec.rb
index 1de6691ba..845b9974e 100644
--- a/spec/helpers/stream_entries_helper_spec.rb
+++ b/spec/helpers/stream_entries_helper_spec.rb
@@ -58,13 +58,14 @@ RSpec.describe StreamEntriesHelper, type: :helper do
expect(acct).to eq '@user@foreign_server.com'
end
- it 'is the shortname for non embedded local accounts' do
+ it 'is fully qualified for non embedded local accounts' do
+ allow(Rails.configuration.x).to receive(:local_domain).and_return('local_domain')
set_not_embedded_view
account = Account.new(domain: nil, username: 'user')
acct = helper.acct(account)
- expect(acct).to eq '@user'
+ expect(acct).to eq '@user@local_domain'
end
end
diff --git a/spec/lib/activitypub/activity/accept_spec.rb b/spec/lib/activitypub/activity/accept_spec.rb
index 6503c83e3..883bab6ac 100644
--- a/spec/lib/activitypub/activity/accept_spec.rb
+++ b/spec/lib/activitypub/activity/accept_spec.rb
@@ -35,4 +35,30 @@ RSpec.describe ActivityPub::Activity::Accept do
expect(recipient.requested?(sender)).to be false
end
end
+
+ context 'given a relay' do
+ let!(:relay) { Fabricate(:relay, state: :pending, follow_activity_id: 'https://abc-123/456') }
+
+ let(:json) do
+ {
+ '@context': 'https://www.w3.org/ns/activitystreams',
+ id: 'foo',
+ type: 'Accept',
+ actor: ActivityPub::TagManager.instance.uri_for(sender),
+ object: {
+ id: 'https://abc-123/456',
+ type: 'Follow',
+ actor: ActivityPub::TagManager.instance.uri_for(recipient),
+ object: ActivityPub::TagManager.instance.uri_for(sender),
+ },
+ }.with_indifferent_access
+ end
+
+ subject { described_class.new(json, sender) }
+
+ it 'marks the relay as accepted' do
+ subject.perform
+ expect(relay.reload.accepted?).to be true
+ end
+ end
end
diff --git a/spec/lib/activitypub/activity/reject_spec.rb b/spec/lib/activitypub/activity/reject_spec.rb
index 7fd95bcc6..e7205df8d 100644
--- a/spec/lib/activitypub/activity/reject_spec.rb
+++ b/spec/lib/activitypub/activity/reject_spec.rb
@@ -35,4 +35,30 @@ RSpec.describe ActivityPub::Activity::Reject do
expect(recipient.requested?(sender)).to be false
end
end
+
+ context 'given a relay' do
+ let!(:relay) { Fabricate(:relay, state: :pending, follow_activity_id: 'https://abc-123/456') }
+
+ let(:json) do
+ {
+ '@context': 'https://www.w3.org/ns/activitystreams',
+ id: 'foo',
+ type: 'Reject',
+ actor: ActivityPub::TagManager.instance.uri_for(sender),
+ object: {
+ id: 'https://abc-123/456',
+ type: 'Follow',
+ actor: ActivityPub::TagManager.instance.uri_for(recipient),
+ object: ActivityPub::TagManager.instance.uri_for(sender),
+ },
+ }.with_indifferent_access
+ end
+
+ subject { described_class.new(json, sender) }
+
+ it 'marks the relay as rejected' do
+ subject.perform
+ expect(relay.reload.rejected?).to be true
+ end
+ end
end
diff --git a/spec/lib/activitypub/activity/undo_spec.rb b/spec/lib/activitypub/activity/undo_spec.rb
index e01c5e03e..9545e1f46 100644
--- a/spec/lib/activitypub/activity/undo_spec.rb
+++ b/spec/lib/activitypub/activity/undo_spec.rb
@@ -52,6 +52,32 @@ RSpec.describe ActivityPub::Activity::Undo do
end
end
+ context 'with Accept' do
+ let(:recipient) { Fabricate(:account) }
+ let(:object_json) do
+ {
+ id: 'bar',
+ type: 'Accept',
+ actor: ActivityPub::TagManager.instance.uri_for(sender),
+ object: 'follow-to-revoke',
+ }
+ end
+
+ before do
+ recipient.follow!(sender, uri: 'follow-to-revoke')
+ end
+
+ it 'deletes follow from recipient to sender' do
+ subject.perform
+ expect(recipient.following?(sender)).to be false
+ end
+
+ it 'creates a follow request from recipient to sender' do
+ subject.perform
+ expect(recipient.requested?(sender)).to be true
+ end
+ end
+
context 'with Block' do
let(:recipient) { Fabricate(:account) }
diff --git a/spec/lib/formatter_spec.rb b/spec/lib/formatter_spec.rb
index b8683e720..0c2248cae 100644
--- a/spec/lib/formatter_spec.rb
+++ b/spec/lib/formatter_spec.rb
@@ -5,26 +5,26 @@ RSpec.describe Formatter do
let(:remote_account) { Fabricate(:account, domain: 'remote.test', username: 'bob', url: 'https://remote.test/') }
shared_examples 'encode and link URLs' do
- context 'matches a stand-alone medium URL' do
+ context 'given a stand-alone medium URL' do
let(:text) { 'https://hackernoon.com/the-power-to-build-communities-a-response-to-mark-zuckerberg-3f2cac9148a4' }
- it 'has valid URL' do
+ it 'matches the full URL' do
is_expected.to include 'href="https://hackernoon.com/the-power-to-build-communities-a-response-to-mark-zuckerberg-3f2cac9148a4"'
end
end
- context 'matches a stand-alone google URL' do
+ context 'given a stand-alone google URL' do
let(:text) { 'http://google.com' }
- it 'has valid URL' do
+ it 'matches the full URL' do
is_expected.to include 'href="http://google.com"'
end
end
- context 'matches a stand-alone IDN URL' do
+ context 'given a stand-alone IDN URL' do
let(:text) { 'https://nic.みんな/' }
- it 'has valid URL' do
+ it 'matches the full URL' do
is_expected.to include 'href="https://nic.みんな/"'
end
@@ -33,148 +33,171 @@ RSpec.describe Formatter do
end
end
- context 'matches a URL without trailing period' do
+ context 'given a URL with a trailing period' do
let(:text) { 'http://www.mcmansionhell.com/post/156408871451/50-states-of-mcmansion-hell-scottsdale-arizona. ' }
- it 'has valid URL' do
+ it 'matches the full URL but not the period' do
is_expected.to include 'href="http://www.mcmansionhell.com/post/156408871451/50-states-of-mcmansion-hell-scottsdale-arizona"'
end
end
- context 'matches a URL without closing paranthesis' do
+ context 'given a URL enclosed with parentheses' do
let(:text) { '(http://google.com/)' }
- it 'has valid URL' do
+ it 'matches the full URL but not the parentheses' do
is_expected.to include 'href="http://google.com/"'
end
end
- context 'matches a URL without exclamation point' do
+ context 'given a URL with a trailing exclamation point' do
let(:text) { 'http://www.google.com!' }
- it 'has valid URL' do
+ it 'matches the full URL but not the exclamation point' do
is_expected.to include 'href="http://www.google.com"'
end
end
- context 'matches a URL without single quote' do
+ context 'given a URL with a trailing single quote' do
let(:text) { "http://www.google.com'" }
- it 'has valid URL' do
+ it 'matches the full URL but not the single quote' do
is_expected.to include 'href="http://www.google.com"'
end
end
- context 'matches a URL without angle brackets' do
+ context 'given a URL with a trailing angle bracket' do
let(:text) { 'http://www.google.com>' }
- it 'has valid URL' do
+ it 'matches the full URL but not the angle bracket' do
is_expected.to include 'href="http://www.google.com"'
end
end
- context 'matches a URL with a query string' do
+ context 'given a URL with a query string' do
let(:text) { 'https://www.ruby-toolbox.com/search?utf8=%E2%9C%93&q=autolink' }
- it 'has valid URL' do
+ it 'matches the full URL' do
is_expected.to include 'href="https://www.ruby-toolbox.com/search?utf8=%E2%9C%93&q=autolink"'
end
end
- context 'matches a URL with parenthesis in it' do
+ context 'given a URL with parentheses in it' do
let(:text) { 'https://en.wikipedia.org/wiki/Diaspora_(software)' }
- it 'has valid URL' do
+ it 'matches the full URL' do
is_expected.to include 'href="https://en.wikipedia.org/wiki/Diaspora_(software)"'
end
end
- context 'matches a URL with Japanese path string' do
+ context 'given a URL with Japanese path string' do
let(:text) { 'https://ja.wikipedia.org/wiki/日本' }
- it 'has valid URL' do
+ it 'matches the full URL' do
is_expected.to include 'href="https://ja.wikipedia.org/wiki/日本"'
end
end
- context 'matches a URL with Korean path string' do
+ context 'given a URL with Korean path string' do
let(:text) { 'https://ko.wikipedia.org/wiki/대한민국' }
- it 'has valid URL' do
+ it 'matches the full URL' do
is_expected.to include 'href="https://ko.wikipedia.org/wiki/대한민국"'
end
end
- context 'matches a URL with Simplified Chinese path string' do
+ context 'given a URL with Simplified Chinese path string' do
let(:text) { 'https://baike.baidu.com/item/中华人民共和国' }
- it 'has valid URL' do
+ it 'matches the full URL' do
is_expected.to include 'href="https://baike.baidu.com/item/中华人民共和国"'
end
end
- context 'matches a URL with Traditional Chinese path string' do
+ context 'given a URL with Traditional Chinese path string' do
let(:text) { 'https://zh.wikipedia.org/wiki/臺灣' }
- it 'has valid URL' do
+ it 'matches the full URL' do
is_expected.to include 'href="https://zh.wikipedia.org/wiki/臺灣"'
end
end
- context 'contains unsafe URL (XSS attack, visible part)' do
+ context 'given a URL containing unsafe code (XSS attack, visible part)' do
let(:text) { %q{http://example.com/b
b} }
- it 'has escaped HTML' do
+ it 'escapes the HTML in the URL' do
is_expected.to include '<del>b</del>'
end
end
- context 'contains unsafe URL (XSS attack, invisible part)' do
+ context 'given a URL containing unsafe code (XSS attack, invisible part)' do
let(:text) { %q{http://example.com/blahblahblahblah/a} }
- it 'has escaped HTML' do
+ it 'escapes the HTML in the URL' do
is_expected.to include '<script>alert("Hello")</script>'
end
end
- context 'contains HTML (script tag)' do
+ context 'given text containing HTML code (script tag)' do
let(:text) { '' }
- it 'has escaped HTML' do
+ it 'escapes the HTML' do
is_expected.to include '
<script>alert("Hello")</script>
'
end
end
- context 'contains HTML (XSS attack)' do
+ context 'given text containing HTML (XSS attack)' do
let(:text) { %q{
;)
} }
- it 'has escaped HTML' do
+ it 'escapes the HTML' do
is_expected.to include '
<img src="javascript:alert('XSS');">
'
end
end
- context 'contains invalid URL' do
+ context 'given an invalid URL' do
let(:text) { 'http://www\.google\.com' }
- it 'has raw URL' do
+ it 'outputs the raw URL' do
is_expected.to eq '
http://www\.google\.com
'
end
end
- context 'contains a hashtag' do
+ context 'given text containing a hashtag' do
let(:text) { '#hashtag' }
- it 'has a link' do
+ it 'creates a hashtag link' do
is_expected.to include '/tags/hashtag" class="mention hashtag" rel="tag">#
hashtag'
end
end
end
+
+ describe '#format_spoiler' do
+ subject { Formatter.instance.format_spoiler(status) }
+
+ context 'given a post containing plain text' do
+ let(:status) { Fabricate(:status, text: 'text', spoiler_text: 'Secret!', uri: nil) }
+
+ it 'Returns the spoiler text' do
+ is_expected.to eq 'Secret!'
+ end
+ end
+
+ context 'given a post with an emoji shortcode at the start' do
+ let!(:emoji) { Fabricate(:custom_emoji) }
+ let(:status) { Fabricate(:status, text: 'text', spoiler_text: ':coolcat: Secret!', uri: nil) }
+ let(:text) { ':coolcat: Beep boop' }
+
+ it 'converts the shortcode to an image tag' do
+ is_expected.to match(/
![:coolcat:]()
text'
end
end
- context 'contains line feeds' do
+ context 'given a post containing line feeds' do
let(:status) { Fabricate(:status, text: "line\nfeed", uri: nil) }
it 'removes line feeds' do
@@ -199,18 +222,18 @@ RSpec.describe Formatter do
end
end
- context 'contains linkable mentions' do
+ context 'given a post containing linkable mentions' do
let(:status) { Fabricate(:status, mentions: [ Fabricate(:mention, account: local_account) ], text: '@alice') }
- it 'links' do
+ it 'creates a mention link' do
is_expected.to include '
@alice'
end
end
- context 'contains unlinkable mentions' do
+ context 'given a post containing unlinkable mentions' do
let(:status) { Fabricate(:status, text: '@alice', uri: nil) }
- it 'does not link' do
+ it 'does not create a mention link' do
is_expected.to include '@alice'
end
end
@@ -224,29 +247,29 @@ RSpec.describe Formatter do
include_examples 'encode and link URLs'
end
- context 'with custom_emojify option' do
+ context 'given a post with custom_emojify option' do
let!(:emoji) { Fabricate(:custom_emoji) }
let(:status) { Fabricate(:status, account: local_account, text: text) }
subject { Formatter.instance.format(status, custom_emojify: true) }
- context 'with emoji at the start' do
+ context 'given a post with an emoji shortcode at the start' do
let(:text) { ':coolcat: Beep boop' }
- it 'converts shortcode to image tag' do
+ it 'converts the shortcode to an image tag' do
is_expected.to match(/
:coolcat: Beep boop
' }
- it 'converts shortcode to image tag' do
+ it 'converts the shortcode to an image tag' do
is_expected.to match(/
Beep :coolcat: boop
' }
- it 'converts shortcode to image tag' do
+ it 'converts the shortcode to an image tag' do
is_expected.to match(/Beep
![:coolcat:]()
:coolcat::coolcat:' }
it 'does not touch the shortcodes' do
@@ -301,10 +324,10 @@ RSpec.describe Formatter do
end
end
- context 'with emoji at the end' do
+ context 'given a post with an emoji shortcode at the end' do
let(:text) { '
Beep boop
:coolcat:
' }
- it 'converts shortcode to image tag' do
+ it 'converts the shortcode to an image tag' do
is_expected.to match(/
![:coolcat:]()
alert("Hello")' }
- it 'strips scripts' do
+ it 'strips the scripts' do
is_expected.to_not include ''
end
end
- context 'contains malicious classes' do
+ context 'given a post containing malicious classes' do
let(:text) { '
Show more' }
- it 'strips malicious classes' do
+ it 'strips the malicious classes' do
is_expected.to_not include 'status__content__spoiler-link'
end
end
@@ -343,15 +366,15 @@ RSpec.describe Formatter do
describe '#plaintext' do
subject { Formatter.instance.plaintext(status) }
- context 'with local status' do
+ context 'given a post with local status' do
let(:status) { Fabricate(:status, text: '
a text by a nerd who uses an HTML tag in text
', uri: nil) }
- it 'returns raw text' do
+ it 'returns the raw text' do
is_expected.to eq '
a text by a nerd who uses an HTML tag in text
'
end
end
- context 'with remote status' do
+ context 'given a post with remote status' do
let(:status) { Fabricate(:status, account: remote_account, text: '') }
it 'returns tag-stripped text' do
@@ -363,60 +386,60 @@ RSpec.describe Formatter do
describe '#simplified_format' do
subject { Formatter.instance.simplified_format(account) }
- context 'with local status' do
+ context 'given a post with local status' do
let(:account) { Fabricate(:account, domain: nil, note: text) }
- context 'contains linkable mentions for local accounts' do
+ context 'given a post containing linkable mentions for local accounts' do
let(:text) { '@alice' }
before { local_account }
- it 'links' do
+ it 'creates a mention link' do
is_expected.to eq '
@alice
'
end
end
- context 'contains linkable mentions for remote accounts' do
+ context 'given a post containing linkable mentions for remote accounts' do
let(:text) { '@bob@remote.test' }
before { remote_account }
- it 'links' do
+ it 'creates a mention link' do
is_expected.to eq '
@bob
'
end
end
- context 'contains unlinkable mentions' do
+ context 'given a post containing unlinkable mentions' do
let(:text) { '@alice' }
- it 'returns raw mention texts' do
+ it 'does not create a mention link' do
is_expected.to eq '
@alice
'
end
end
- context 'with custom_emojify option' do
+ context 'given a post with custom_emojify option' do
let!(:emoji) { Fabricate(:custom_emoji) }
before { account.note = text }
subject { Formatter.instance.simplified_format(account, custom_emojify: true) }
- context 'with emoji at the start' do
+ context 'given a post with an emoji shortcode at the start' do
let(:text) { ':coolcat: Beep boop' }
- it 'converts shortcode to image tag' do
+ it 'converts the shortcode to an image tag' do
is_expected.to match(/
alert("Hello")' }
let(:account) { Fabricate(:account, domain: 'remote', note: text) }
@@ -451,7 +474,7 @@ RSpec.describe Formatter do
subject { Formatter.instance.simplified_format(remote_account, custom_emojify: true) }
- context 'with emoji at the start' do
+ context 'given a post with an emoji shortcode at the start' do
let(:text) { '
:coolcat: Beep boop
' }
it 'converts shortcode to image tag' do
@@ -459,7 +482,7 @@ RSpec.describe Formatter do
end
end
- context 'with emoji in the middle' do
+ context 'given a post with an emoji shortcode in the middle' do
let(:text) { '
Beep :coolcat: boop
' }
it 'converts shortcode to image tag' do
@@ -467,7 +490,7 @@ RSpec.describe Formatter do
end
end
- context 'with concatenated emoji' do
+ context 'given a post with concatenated emoji shortcodes' do
let(:text) { '
:coolcat::coolcat:
' }
it 'does not touch the shortcodes' do
@@ -475,7 +498,7 @@ RSpec.describe Formatter do
end
end
- context 'with emoji at the end' do
+ context 'given a post with an emoji shortcode at the end' do
let(:text) { '
Beep boop
:coolcat:
' }
it 'converts shortcode to image tag' do
diff --git a/spec/lib/language_detector_spec.rb b/spec/lib/language_detector_spec.rb
index d17026511..d00d2a0e6 100644
--- a/spec/lib/language_detector_spec.rb
+++ b/spec/lib/language_detector_spec.rb
@@ -57,7 +57,7 @@ describe LanguageDetector do
end
it 'detects spanish language' do
- string = 'Obtener un Hola y bienvenidos a Mastodon'
+ string = 'Obtener un Hola y bienvenidos a Mastodon. Obtener un Hola y bienvenidos a Mastodon. Obtener un Hola y bienvenidos a Mastodon. Obtener un Hola y bienvenidos a Mastodon'
result = described_class.instance.detect(string, account_without_user_locale)
expect(result).to eq :es
@@ -86,7 +86,7 @@ describe LanguageDetector do
account = double(user_locale: 'fr')
result = described_class.instance.detect('', account)
- expect(result).to eq :fr
+ expect(result).to eq nil
end
it 'uses nil when account is present but has no locale' do
diff --git a/spec/models/account_pin_spec.rb b/spec/models/account_pin_spec.rb
new file mode 100644
index 000000000..4f226b127
--- /dev/null
+++ b/spec/models/account_pin_spec.rb
@@ -0,0 +1,5 @@
+require 'rails_helper'
+
+RSpec.describe AccountPin, type: :model do
+ pending "add some examples to (or delete) #{__FILE__}"
+end
diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb
index c50791bcd..ec01026db 100644
--- a/spec/models/account_spec.rb
+++ b/spec/models/account_spec.rb
@@ -618,10 +618,10 @@ RSpec.describe Account, type: :model do
expect(account).not_to model_have_error_on_field(:username)
end
- it 'is valid even if the username doesn\'t only contains letters, numbers and underscores' do
+ it 'is invalid if the username doesn\'t only contains letters, numbers and underscores' do
account = Fabricate.build(:account, domain: 'domain', username: 'the-doctor')
account.valid?
- expect(account).not_to model_have_error_on_field(:username)
+ expect(account).to model_have_error_on_field(:username)
end
it 'is valid even if the username is longer then 30 characters' do
diff --git a/spec/models/concerns/remotable_spec.rb b/spec/models/concerns/remotable_spec.rb
index b39233739..a4289cc45 100644
--- a/spec/models/concerns/remotable_spec.rb
+++ b/spec/models/concerns/remotable_spec.rb
@@ -88,7 +88,18 @@ RSpec.describe Remotable do
context 'parsed_url.host is empty' do
it 'makes no request' do
- parsed_url = double(scheme: 'https', host: double(empty?: true))
+ parsed_url = double(scheme: 'https', host: double(blank?: true))
+ allow(Addressable::URI).to receive_message_chain(:parse, :normalize)
+ .with(url).with(no_args).and_return(parsed_url)
+
+ foo.hoge_remote_url = url
+ expect(request).not_to have_been_requested
+ end
+ end
+
+ context 'parsed_url.host is nil' do
+ it 'makes no request' do
+ parsed_url = Addressable::URI.parse('https:https://example.com/path/file.png')
allow(Addressable::URI).to receive_message_chain(:parse, :normalize)
.with(url).with(no_args).and_return(parsed_url)
diff --git a/spec/models/export_spec.rb b/spec/models/export_spec.rb
index 6daa46145..277dcc526 100644
--- a/spec/models/export_spec.rb
+++ b/spec/models/export_spec.rb
@@ -48,17 +48,17 @@ describe Export do
describe 'total_follows' do
it 'returns the total number of the followed accounts' do
target_accounts.each(&account.method(:follow!))
- expect(Export.new(account).total_follows).to eq 2
+ expect(Export.new(account.reload).total_follows).to eq 2
end
it 'returns the total number of the blocked accounts' do
target_accounts.each(&account.method(:block!))
- expect(Export.new(account).total_blocks).to eq 2
+ expect(Export.new(account.reload).total_blocks).to eq 2
end
it 'returns the total number of the muted accounts' do
target_accounts.each(&account.method(:mute!))
- expect(Export.new(account).total_mutes).to eq 2
+ expect(Export.new(account.reload).total_mutes).to eq 2
end
end
end
diff --git a/spec/models/follow_spec.rb b/spec/models/follow_spec.rb
index 43175d852..f221973b6 100644
--- a/spec/models/follow_spec.rb
+++ b/spec/models/follow_spec.rb
@@ -37,4 +37,20 @@ RSpec.describe Follow, type: :model do
expect(a[1]).to eq follow0
end
end
+
+ describe 'revoke_request!' do
+ let(:follow) { Fabricate(:follow, account: account, target_account: target_account) }
+ let(:account) { Fabricate(:account) }
+ let(:target_account) { Fabricate(:account) }
+
+ it 'revokes the follow relation' do
+ follow.revoke_request!
+ expect(account.following?(target_account)).to be false
+ end
+
+ it 'creates a follow request' do
+ follow.revoke_request!
+ expect(account.requested?(target_account)).to be true
+ end
+ end
end
diff --git a/spec/models/media_attachment_spec.rb b/spec/models/media_attachment_spec.rb
index d2230b6d0..cb1cee518 100644
--- a/spec/models/media_attachment_spec.rb
+++ b/spec/models/media_attachment_spec.rb
@@ -129,9 +129,9 @@ RSpec.describe MediaAttachment, type: :model do
expect(media.file.meta["original"]["width"]).to eq 600
expect(media.file.meta["original"]["height"]).to eq 400
expect(media.file.meta["original"]["aspect"]).to eq 1.5
- expect(media.file.meta["small"]["width"]).to eq 400
- expect(media.file.meta["small"]["height"]).to eq 267
- expect(media.file.meta["small"]["aspect"]).to eq 400.0/267
+ expect(media.file.meta["small"]["width"]).to eq 490
+ expect(media.file.meta["small"]["height"]).to eq 327
+ expect(media.file.meta["small"]["aspect"]).to eq 490.0/327
end
end
diff --git a/spec/models/relay_spec.rb b/spec/models/relay_spec.rb
new file mode 100644
index 000000000..12dc0f20f
--- /dev/null
+++ b/spec/models/relay_spec.rb
@@ -0,0 +1,4 @@
+require 'rails_helper'
+
+RSpec.describe Relay, type: :model do
+end
diff --git a/spec/models/status_spec.rb b/spec/models/status_spec.rb
index b3e475d99..9d8670129 100644
--- a/spec/models/status_spec.rb
+++ b/spec/models/status_spec.rb
@@ -182,6 +182,27 @@ RSpec.describe Status, type: :model do
reblog.destroy
expect(subject.reblogs_count).to eq 0
end
+
+ it 'does not fail when original is deleted before reblog' do
+ reblog = Fabricate(:status, account: bob, reblog: subject)
+ expect(subject.reblogs_count).to eq 1
+ expect { subject.destroy }.to_not raise_error
+ expect(Status.find_by(id: reblog.id)).to be_nil
+ end
+ end
+
+ describe '#replies_count' do
+ it 'is the number of replies' do
+ reply = Fabricate(:status, account: bob, thread: subject)
+ expect(subject.replies_count).to eq 1
+ end
+
+ it 'is decremented when reply is removed' do
+ reply = Fabricate(:status, account: bob, thread: subject)
+ expect(subject.replies_count).to eq 1
+ reply.destroy
+ expect(subject.replies_count).to eq 0
+ end
end
describe '#favourites_count' do
@@ -552,17 +573,6 @@ RSpec.describe Status, type: :model do
expect(results).to include(es_status)
end
end
-
- context 'where that account is silenced' do
- it 'includes statuses from other accounts that are silenced' do
- @account.update(silenced: true)
- other_silenced_account = Fabricate(:account, silenced: true)
- other_status = Fabricate(:status, account: other_silenced_account)
-
- results = Status.as_public_timeline(@account)
- expect(results).to include(other_status)
- end
- end
end
end
diff --git a/spec/models/status_stat_spec.rb b/spec/models/status_stat_spec.rb
new file mode 100644
index 000000000..5e9351aff
--- /dev/null
+++ b/spec/models/status_stat_spec.rb
@@ -0,0 +1,5 @@
+require 'rails_helper'
+
+RSpec.describe StatusStat, type: :model do
+ pending "add some examples to (or delete) #{__FILE__}"
+end
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index 93a6c26fb..015e90edc 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -512,7 +512,7 @@ RSpec.describe User, type: :model do
context 'when user is confirmed' do
let(:confirmed_at) { Time.zone.now }
- it { is_expected.to be false }
+ it { is_expected.to be true }
end
context 'when user is not confirmed' do
diff --git a/spec/services/report_service_spec.rb b/spec/services/report_service_spec.rb
index 2c392d376..e8b094c89 100644
--- a/spec/services/report_service_spec.rb
+++ b/spec/services/report_service_spec.rb
@@ -3,7 +3,7 @@ require 'rails_helper'
RSpec.describe ReportService, type: :service do
subject { described_class.new }
- let(:source_account) { Fabricate(:account) }
+ let(:source_account) { Fabricate(:user).account }
context 'for a remote account' do
let(:remote_account) { Fabricate(:account, domain: 'example.com', protocol: :activitypub, inbox_url: 'http://example.com/inbox') }
@@ -22,4 +22,22 @@ RSpec.describe ReportService, type: :service do
expect(a_request(:post, 'http://example.com/inbox')).to_not have_been_made
end
end
+
+ context 'when other reports already exist for the same target' do
+ let!(:target_account) { Fabricate(:account) }
+ let!(:other_report) { Fabricate(:report, target_account: target_account) }
+
+ subject do
+ -> { described_class.new.call(source_account, target_account) }
+ end
+
+ before do
+ ActionMailer::Base.deliveries.clear
+ source_account.user.settings.notification_emails['report'] = true
+ end
+
+ it 'does not send an e-mail' do
+ is_expected.to_not change(ActionMailer::Base.deliveries, :count).from(0)
+ end
+ end
end
diff --git a/spec/services/search_service_spec.rb b/spec/services/search_service_spec.rb
index 673de5233..671080f1d 100644
--- a/spec/services/search_service_spec.rb
+++ b/spec/services/search_service_spec.rb
@@ -29,7 +29,7 @@ describe SearchService, type: :service do
allow(ResolveURLService).to receive(:new).and_return(service)
results = subject.call(@query, 10)
- expect(service).to have_received(:call).with(@query)
+ expect(service).to have_received(:call).with(@query, on_behalf_of: nil)
expect(results).to eq empty_results
end
end
@@ -41,7 +41,7 @@ describe SearchService, type: :service do
allow(ResolveURLService).to receive(:new).and_return(service)
results = subject.call(@query, 10)
- expect(service).to have_received(:call).with(@query)
+ expect(service).to have_received(:call).with(@query, on_behalf_of: nil)
expect(results).to eq empty_results.merge(accounts: [account])
end
end
@@ -53,7 +53,7 @@ describe SearchService, type: :service do
allow(ResolveURLService).to receive(:new).and_return(service)
results = subject.call(@query, 10)
- expect(service).to have_received(:call).with(@query)
+ expect(service).to have_received(:call).with(@query, on_behalf_of: nil)
expect(results).to eq empty_results.merge(statuses: [status])
end
end
diff --git a/spec/services/suspend_account_service_spec.rb b/spec/services/suspend_account_service_spec.rb
index fd303a9d5..8a5bd3301 100644
--- a/spec/services/suspend_account_service_spec.rb
+++ b/spec/services/suspend_account_service_spec.rb
@@ -2,6 +2,11 @@ require 'rails_helper'
RSpec.describe SuspendAccountService, type: :service do
describe '#call' do
+ before do
+ stub_request(:post, "https://alice.com/inbox").to_return(status: 201)
+ stub_request(:post, "https://bob.com/inbox").to_return(status: 201)
+ end
+
subject do
-> { described_class.new.call(account) }
end
@@ -14,6 +19,8 @@ RSpec.describe SuspendAccountService, type: :service do
let!(:active_relationship) { Fabricate(:follow, account: account) }
let!(:passive_relationship) { Fabricate(:follow, target_account: account) }
let!(:subscription) { Fabricate(:subscription, account: account) }
+ let!(:remote_alice) { Fabricate(:account, inbox_url: 'https://alice.com/inbox', protocol: :activitypub) }
+ let!(:remote_bob) { Fabricate(:account, inbox_url: 'https://bob.com/inbox', protocol: :activitypub) }
it 'deletes associated records' do
is_expected.to change {
@@ -29,5 +36,11 @@ RSpec.describe SuspendAccountService, type: :service do
].map(&:count)
}.from([1, 1, 1, 1, 1, 1, 1, 1]).to([0, 0, 0, 0, 0, 0, 0, 0])
end
+
+ it 'sends a delete actor activity to all known inboxes' do
+ subject.call
+ expect(a_request(:post, "https://alice.com/inbox")).to have_been_made.once
+ expect(a_request(:post, "https://bob.com/inbox")).to have_been_made.once
+ end
end
end
diff --git a/spec/views/about/_contact.html.haml_spec.rb b/spec/views/about/_contact.html.haml_spec.rb
deleted file mode 100644
index 25ba15794..000000000
--- a/spec/views/about/_contact.html.haml_spec.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-describe 'about/_contact.html.haml' do
- describe 'the contact account', without_verify_partial_doubles: true do
- before do
- allow(view).to receive(:display_name).and_return('Display Name!')
- end
-
- it 'shows info when account is present' do
- account = Account.new(username: 'admin')
- contact = double(contact_account: account, site_contact_email: '')
- render 'about/contact', contact: contact
-
- expect(rendered).to have_content('@admin')
- end
-
- it 'does not show info when account is missing' do
- contact = double(contact_account: nil, site_contact_email: '')
- render 'about/contact', contact: contact
-
- expect(rendered).not_to have_content('@')
- end
- end
-
- describe 'the contact email' do
- it 'show info when email is present' do
- contact = double(site_contact_email: 'admin@example.com', contact_account: nil)
- render 'about/contact', contact: contact
-
- expect(rendered).to have_content('admin@example.com')
- end
- end
-end
diff --git a/spec/views/about/show.html.haml_spec.rb b/spec/views/about/show.html.haml_spec.rb
index cbe5aa93b..12efc06fd 100644
--- a/spec/views/about/show.html.haml_spec.rb
+++ b/spec/views/about/show.html.haml_spec.rb
@@ -11,6 +11,7 @@ describe 'about/show.html.haml', without_verify_partial_doubles: true do
it 'has valid open graph tags' do
instance_presenter = double(:instance_presenter,
site_title: 'something',
+ site_short_description: 'something',
site_description: 'something',
version_number: '1.0',
source_url: 'https://github.com/tootsuite/mastodon',
diff --git a/spec/views/stream_entries/show.html.haml_spec.rb b/spec/views/stream_entries/show.html.haml_spec.rb
index e0681b125..d06bb7abb 100644
--- a/spec/views/stream_entries/show.html.haml_spec.rb
+++ b/spec/views/stream_entries/show.html.haml_spec.rb
@@ -12,6 +12,8 @@ describe 'stream_entries/show.html.haml', without_verify_partial_doubles: true d
allow(view).to receive(:full_asset_url).and_return('//asset.host/image.svg')
allow(view).to receive(:local_time)
allow(view).to receive(:local_time_ago)
+ allow(view).to receive(:current_account).and_return(nil)
+ assign(:instance_presenter, InstancePresenter.new)
end
it 'has valid author h-card and basic data for a detailed_status' do
diff --git a/streaming/index.js b/streaming/index.js
index 4eaf66865..1c6004b77 100644
--- a/streaming/index.js
+++ b/streaming/index.js
@@ -9,6 +9,7 @@ const log = require('npmlog');
const url = require('url');
const WebSocket = require('uws');
const uuid = require('uuid');
+const fs = require('fs');
const env = process.env.NODE_ENV || 'development';
@@ -70,6 +71,9 @@ const redisUrlToClient = (defaultConfig, redisUrl) => {
const numWorkers = +process.env.STREAMING_CLUSTER_NUM || (env === 'development' ? 1 : Math.max(os.cpus().length - 1, 1));
const startMaster = () => {
+ if (!process.env.SOCKET && process.env.PORT && isNaN(+process.env.PORT)) {
+ log.warn('UNIX domain socket is now supported by using SOCKET. Please migrate from PORT hack.');
+ }
log.info(`Starting streaming API server master with ${numWorkers} workers`);
};
@@ -192,7 +196,7 @@ const startWorker = (workerId) => {
return;
}
- client.query('SELECT oauth_access_tokens.resource_owner_id, users.account_id, users.filtered_languages FROM oauth_access_tokens INNER JOIN users ON oauth_access_tokens.resource_owner_id = users.id WHERE oauth_access_tokens.token = $1 AND oauth_access_tokens.revoked_at IS NULL LIMIT 1', [token], (err, result) => {
+ client.query('SELECT oauth_access_tokens.resource_owner_id, users.account_id, users.chosen_languages FROM oauth_access_tokens INNER JOIN users ON oauth_access_tokens.resource_owner_id = users.id WHERE oauth_access_tokens.token = $1 AND oauth_access_tokens.revoked_at IS NULL LIMIT 1', [token], (err, result) => {
done();
if (err) {
@@ -209,7 +213,7 @@ const startWorker = (workerId) => {
}
req.accountId = result.rows[0].account_id;
- req.filteredLanguages = result.rows[0].filtered_languages;
+ req.chosenLanguages = result.rows[0].chosen_languages;
next();
});
@@ -340,7 +344,7 @@ const startWorker = (workerId) => {
const targetAccountIds = [unpackedPayload.account.id].concat(unpackedPayload.mentions.map(item => item.id));
const accountDomain = unpackedPayload.account.acct.split('@')[1];
- if (Array.isArray(req.filteredLanguages) && req.filteredLanguages.indexOf(unpackedPayload.language) !== -1) {
+ if (Array.isArray(req.chosenLanguages) && unpackedPayload.language !== null && req.chosenLanguages.indexOf(unpackedPayload.language) === -1) {
log.silly(req.requestId, `Message ${unpackedPayload.id} filtered by language (${unpackedPayload.language})`);
return;
}
@@ -448,6 +452,12 @@ const startWorker = (workerId) => {
app.use(setRequestId);
app.use(setRemoteAddress);
app.use(allowCrossDomain);
+
+ app.get('/api/v1/streaming/health', (req, res) => {
+ res.writeHead(200, { 'Content-Type': 'text/plain' });
+ res.end('OK');
+ });
+
app.use(authenticationMiddleware);
app.use(errorMiddleware);
@@ -574,9 +584,16 @@ const startWorker = (workerId) => {
});
}, 30000);
- server.listen(process.env.PORT || 4000, process.env.BIND || '0.0.0.0', () => {
- log.info(`Worker ${workerId} now listening on ${server.address().address}:${server.address().port}`);
- });
+ if (process.env.SOCKET || process.env.PORT && isNaN(+process.env.PORT)) {
+ server.listen(process.env.SOCKET || process.env.PORT, () => {
+ fs.chmodSync(server.address(), 0o666);
+ log.info(`Worker ${workerId} now listening on ${server.address()}`);
+ });
+ } else {
+ server.listen(+process.env.PORT || 4000, process.env.BIND || '0.0.0.0', () => {
+ log.info(`Worker ${workerId} now listening on ${server.address().address}:${server.address().port}`);
+ });
+ }
const onExit = () => {
log.info(`Worker ${workerId} exiting, bye bye`);
diff --git a/yarn.lock b/yarn.lock
index 641835149..e558ea664 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,14 +2,6 @@
# yarn lockfile v1
-"@babel/code-frame@7.0.0-beta.36":
- version "7.0.0-beta.36"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.36.tgz#2349d7ec04b3a06945ae173280ef8579b63728e4"
- dependencies:
- chalk "^2.0.0"
- esutils "^2.0.2"
- js-tokens "^3.0.0"
-
"@babel/code-frame@7.0.0-beta.44":
version "7.0.0-beta.44"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz#2a02643368de80916162be70865c97774f3adbd9"
@@ -26,14 +18,6 @@
source-map "^0.5.0"
trim-right "^1.0.1"
-"@babel/helper-function-name@7.0.0-beta.36":
- version "7.0.0-beta.36"
- resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.36.tgz#366e3bc35147721b69009f803907c4d53212e88d"
- dependencies:
- "@babel/helper-get-function-arity" "7.0.0-beta.36"
- "@babel/template" "7.0.0-beta.36"
- "@babel/types" "7.0.0-beta.36"
-
"@babel/helper-function-name@7.0.0-beta.44":
version "7.0.0-beta.44"
resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.44.tgz#e18552aaae2231100a6e485e03854bc3532d44dd"
@@ -42,18 +26,19 @@
"@babel/template" "7.0.0-beta.44"
"@babel/types" "7.0.0-beta.44"
-"@babel/helper-get-function-arity@7.0.0-beta.36":
- version "7.0.0-beta.36"
- resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.36.tgz#f5383bac9a96b274828b10d98900e84ee43e32b8"
- dependencies:
- "@babel/types" "7.0.0-beta.36"
-
"@babel/helper-get-function-arity@7.0.0-beta.44":
version "7.0.0-beta.44"
resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.44.tgz#d03ca6dd2b9f7b0b1e6b32c56c72836140db3a15"
dependencies:
"@babel/types" "7.0.0-beta.44"
+"@babel/helper-module-imports@^7.0.0-beta.49":
+ version "7.0.0-beta.53"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.53.tgz#e735e6aa30a504b0f9d85c38a6d470a9f4aa81d9"
+ dependencies:
+ "@babel/types" "7.0.0-beta.53"
+ lodash "^4.17.5"
+
"@babel/helper-split-export-declaration@7.0.0-beta.44":
version "7.0.0-beta.44"
resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.44.tgz#c0b351735e0fbcb3822c8ad8db4e583b05ebd9dc"
@@ -68,14 +53,12 @@
esutils "^2.0.2"
js-tokens "^3.0.0"
-"@babel/template@7.0.0-beta.36":
- version "7.0.0-beta.36"
- resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.36.tgz#02e903de5d68bd7899bce3c5b5447e59529abb00"
+"@babel/runtime@^7.0.0-beta.42":
+ version "7.0.0-beta.53"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.0.0-beta.53.tgz#9df22ae34823ce89f790060594b83ee572e2c5d2"
dependencies:
- "@babel/code-frame" "7.0.0-beta.36"
- "@babel/types" "7.0.0-beta.36"
- babylon "7.0.0-beta.36"
- lodash "^4.2.0"
+ core-js "^2.5.7"
+ regenerator-runtime "^0.12.0"
"@babel/template@7.0.0-beta.44":
version "7.0.0-beta.44"
@@ -86,19 +69,6 @@
babylon "7.0.0-beta.44"
lodash "^4.2.0"
-"@babel/traverse@7.0.0-beta.36":
- version "7.0.0-beta.36"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.36.tgz#1dc6f8750e89b6b979de5fe44aa993b1a2192261"
- dependencies:
- "@babel/code-frame" "7.0.0-beta.36"
- "@babel/helper-function-name" "7.0.0-beta.36"
- "@babel/types" "7.0.0-beta.36"
- babylon "7.0.0-beta.36"
- debug "^3.0.1"
- globals "^11.1.0"
- invariant "^2.2.0"
- lodash "^4.2.0"
-
"@babel/traverse@7.0.0-beta.44":
version "7.0.0-beta.44"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.44.tgz#a970a2c45477ad18017e2e465a0606feee0d2966"
@@ -114,14 +84,6 @@
invariant "^2.2.0"
lodash "^4.2.0"
-"@babel/types@7.0.0-beta.36":
- version "7.0.0-beta.36"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.36.tgz#64f2004353de42adb72f9ebb4665fc35b5499d23"
- dependencies:
- esutils "^2.0.2"
- lodash "^4.2.0"
- to-fast-properties "^2.0.0"
-
"@babel/types@7.0.0-beta.44":
version "7.0.0-beta.44"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.44.tgz#6b1b164591f77dec0a0342aca995f2d046b3a757"
@@ -130,9 +92,179 @@
lodash "^4.2.0"
to-fast-properties "^2.0.0"
+"@babel/types@7.0.0-beta.53", "@babel/types@^7.0.0-beta.49":
+ version "7.0.0-beta.53"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.53.tgz#19a461c0da515595dfb6740b4b45dc7bb0e6b375"
+ dependencies:
+ esutils "^2.0.2"
+ lodash "^4.17.5"
+ to-fast-properties "^2.0.0"
+
+"@csstools/convert-colors@^1.4.0":
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7"
+
+"@csstools/postcss-image-set-function@^1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@csstools/postcss-image-set-function/-/postcss-image-set-function-1.0.0.tgz#1ef0913d90a9c4440495eb41624c202e53a703f3"
+ dependencies:
+ postcss "^6.0.20"
+ postcss-value-parser "^3.3.0"
+
+"@csstools/sass-import-resolve@^1":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@csstools/sass-import-resolve/-/sass-import-resolve-1.0.0.tgz#32c3cdb2f7af3cd8f0dca357b592e7271f3831b5"
+
"@types/node@*":
- version "8.0.53"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.53.tgz#396b35af826fa66aad472c8cb7b8d5e277f4e6d8"
+ version "10.5.2"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.5.2.tgz#f19f05314d5421fe37e74153254201a7bf00a707"
+
+"@webassemblyjs/ast@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.5.13.tgz#81155a570bd5803a30ec31436bc2c9c0ede38f25"
+ dependencies:
+ "@webassemblyjs/helper-module-context" "1.5.13"
+ "@webassemblyjs/helper-wasm-bytecode" "1.5.13"
+ "@webassemblyjs/wast-parser" "1.5.13"
+ debug "^3.1.0"
+ mamacro "^0.0.3"
+
+"@webassemblyjs/floating-point-hex-parser@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.5.13.tgz#29ce0baa97411f70e8cce68ce9c0f9d819a4e298"
+
+"@webassemblyjs/helper-api-error@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.5.13.tgz#e49b051d67ee19a56e29b9aa8bd949b5b4442a59"
+
+"@webassemblyjs/helper-buffer@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.5.13.tgz#873bb0a1b46449231137c1262ddfd05695195a1e"
+ dependencies:
+ debug "^3.1.0"
+
+"@webassemblyjs/helper-code-frame@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.5.13.tgz#1bd2181b6a0be14e004f0fe9f5a660d265362b58"
+ dependencies:
+ "@webassemblyjs/wast-printer" "1.5.13"
+
+"@webassemblyjs/helper-fsm@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.5.13.tgz#cdf3d9d33005d543a5c5e5adaabf679ffa8db924"
+
+"@webassemblyjs/helper-module-context@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.5.13.tgz#dc29ddfb51ed657655286f94a5d72d8a489147c5"
+ dependencies:
+ debug "^3.1.0"
+ mamacro "^0.0.3"
+
+"@webassemblyjs/helper-wasm-bytecode@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.5.13.tgz#03245817f0a762382e61733146f5773def15a747"
+
+"@webassemblyjs/helper-wasm-section@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.5.13.tgz#efc76f44a10d3073b584b43c38a179df173d5c7d"
+ dependencies:
+ "@webassemblyjs/ast" "1.5.13"
+ "@webassemblyjs/helper-buffer" "1.5.13"
+ "@webassemblyjs/helper-wasm-bytecode" "1.5.13"
+ "@webassemblyjs/wasm-gen" "1.5.13"
+ debug "^3.1.0"
+
+"@webassemblyjs/ieee754@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.5.13.tgz#573e97c8c12e4eebb316ca5fde0203ddd90b0364"
+ dependencies:
+ ieee754 "^1.1.11"
+
+"@webassemblyjs/leb128@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.5.13.tgz#ab52ebab9cec283c1c1897ac1da833a04a3f4cee"
+ dependencies:
+ long "4.0.0"
+
+"@webassemblyjs/utf8@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.5.13.tgz#6b53d2cd861cf94fa99c1f12779dde692fbc2469"
+
+"@webassemblyjs/wasm-edit@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.5.13.tgz#c9cef5664c245cf11b3b3a73110c9155831724a8"
+ dependencies:
+ "@webassemblyjs/ast" "1.5.13"
+ "@webassemblyjs/helper-buffer" "1.5.13"
+ "@webassemblyjs/helper-wasm-bytecode" "1.5.13"
+ "@webassemblyjs/helper-wasm-section" "1.5.13"
+ "@webassemblyjs/wasm-gen" "1.5.13"
+ "@webassemblyjs/wasm-opt" "1.5.13"
+ "@webassemblyjs/wasm-parser" "1.5.13"
+ "@webassemblyjs/wast-printer" "1.5.13"
+ debug "^3.1.0"
+
+"@webassemblyjs/wasm-gen@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.5.13.tgz#8e6ea113c4b432fa66540189e79b16d7a140700e"
+ dependencies:
+ "@webassemblyjs/ast" "1.5.13"
+ "@webassemblyjs/helper-wasm-bytecode" "1.5.13"
+ "@webassemblyjs/ieee754" "1.5.13"
+ "@webassemblyjs/leb128" "1.5.13"
+ "@webassemblyjs/utf8" "1.5.13"
+
+"@webassemblyjs/wasm-opt@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.5.13.tgz#147aad7717a7ee4211c36b21a5f4c30dddf33138"
+ dependencies:
+ "@webassemblyjs/ast" "1.5.13"
+ "@webassemblyjs/helper-buffer" "1.5.13"
+ "@webassemblyjs/wasm-gen" "1.5.13"
+ "@webassemblyjs/wasm-parser" "1.5.13"
+ debug "^3.1.0"
+
+"@webassemblyjs/wasm-parser@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.5.13.tgz#6f46516c5bb23904fbdf58009233c2dd8a54c72f"
+ dependencies:
+ "@webassemblyjs/ast" "1.5.13"
+ "@webassemblyjs/helper-api-error" "1.5.13"
+ "@webassemblyjs/helper-wasm-bytecode" "1.5.13"
+ "@webassemblyjs/ieee754" "1.5.13"
+ "@webassemblyjs/leb128" "1.5.13"
+ "@webassemblyjs/utf8" "1.5.13"
+
+"@webassemblyjs/wast-parser@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.5.13.tgz#5727a705d397ae6a3ae99d7f5460acf2ec646eea"
+ dependencies:
+ "@webassemblyjs/ast" "1.5.13"
+ "@webassemblyjs/floating-point-hex-parser" "1.5.13"
+ "@webassemblyjs/helper-api-error" "1.5.13"
+ "@webassemblyjs/helper-code-frame" "1.5.13"
+ "@webassemblyjs/helper-fsm" "1.5.13"
+ long "^3.2.0"
+ mamacro "^0.0.3"
+
+"@webassemblyjs/wast-printer@1.5.13":
+ version "1.5.13"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.5.13.tgz#bb34d528c14b4f579e7ec11e793ec50ad7cd7c95"
+ dependencies:
+ "@webassemblyjs/ast" "1.5.13"
+ "@webassemblyjs/wast-parser" "1.5.13"
+ long "^3.2.0"
+
+"@webpack-contrib/schema-utils@^1.0.0-beta.0":
+ version "1.0.0-beta.0"
+ resolved "https://registry.yarnpkg.com/@webpack-contrib/schema-utils/-/schema-utils-1.0.0-beta.0.tgz#bf9638c9464d177b48209e84209e23bee2eb4f65"
+ dependencies:
+ ajv "^6.1.0"
+ ajv-keywords "^3.1.0"
+ chalk "^2.3.2"
+ strip-ansi "^4.0.0"
+ text-table "^0.2.0"
+ webpack-log "^1.1.2"
abab@^1.0.3:
version "1.0.4"
@@ -142,18 +274,18 @@ abbrev@1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
-accepts@~1.3.4:
- version "1.3.4"
- resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.4.tgz#86246758c7dd6d21a6474ff084a4740ec05eb21f"
+accepts@~1.3.4, accepts@~1.3.5:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2"
dependencies:
- mime-types "~2.1.16"
+ mime-types "~2.1.18"
negotiator "0.6.1"
-acorn-dynamic-import@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4"
+acorn-dynamic-import@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz#901ceee4c7faaef7e07ad2a47e890675da50a278"
dependencies:
- acorn "^4.0.3"
+ acorn "^5.0.0"
acorn-globals@^3.1.0:
version "3.1.0"
@@ -171,34 +303,22 @@ acorn@^3.0.4:
version "3.3.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
-acorn@^4.0.3, acorn@^4.0.4:
+acorn@^4.0.4:
version "4.0.13"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787"
-acorn@^5.0.0, acorn@^5.1.1:
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.2.1.tgz#317ac7821826c22c702d66189ab8359675f135d7"
+acorn@^5.0.0, acorn@^5.3.0, acorn@^5.5.0, acorn@^5.6.2:
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.1.tgz#f095829297706a7c9776958c0afc8930a9b9d9d8"
-acorn@^5.5.0:
- version "5.6.0"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.6.0.tgz#572bedb377a1c61b7a289e72b8c5cfeb7baaf0bf"
-
-adjust-sourcemap-loader@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-1.1.0.tgz#412d92404eb61e4113635012cba53a33d008e0e2"
- dependencies:
- assert "^1.3.0"
- camelcase "^1.2.1"
- loader-utils "^1.0.2"
- lodash.assign "^4.0.1"
- lodash.defaults "^3.1.2"
- object-path "^0.9.2"
- regex-parser "^2.2.1"
-
-ajv-keywords@^2.0.0, ajv-keywords@^2.1.0:
+ajv-keywords@^2.1.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762"
+ajv-keywords@^3.1.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a"
+
ajv@^4.9.1:
version "4.11.8"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536"
@@ -206,16 +326,7 @@ ajv@^4.9.1:
co "^4.6.0"
json-stable-stringify "^1.0.1"
-ajv@^5.0.0, ajv@^5.1.0, ajv@^5.1.5:
- version "5.5.1"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.1.tgz#b38bb8876d9e86bee994956a04e721e88b248eb2"
- dependencies:
- co "^4.6.0"
- fast-deep-equal "^1.0.0"
- fast-json-stable-stringify "^2.0.0"
- json-schema-traverse "^0.3.0"
-
-ajv@^5.2.3, ajv@^5.3.0:
+ajv@^5.1.0, ajv@^5.2.3, ajv@^5.3.0:
version "5.5.2"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965"
dependencies:
@@ -224,6 +335,15 @@ ajv@^5.2.3, ajv@^5.3.0:
fast-json-stable-stringify "^2.0.0"
json-schema-traverse "^0.3.0"
+ajv@^6.1.0:
+ version "6.5.2"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.2.tgz#678495f9b82f7cca6be248dd92f59bff5e1f4360"
+ dependencies:
+ fast-deep-equal "^2.0.1"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.4.1"
+ uri-js "^4.2.1"
+
align-text@^0.1.1, align-text@^0.1.3:
version "0.1.4"
resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
@@ -241,8 +361,8 @@ amdefine@>=0.0.4:
resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
ansi-escapes@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92"
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30"
ansi-html@0.0.7:
version "0.0.7"
@@ -260,9 +380,9 @@ ansi-styles@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
-ansi-styles@^3.1.0, ansi-styles@^3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88"
+ansi-styles@^3.2.0, ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
dependencies:
color-convert "^1.9.0"
@@ -270,41 +390,42 @@ any-promise@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-0.1.0.tgz#830b680aa7e56f33451d4b049f3bd8044498ee27"
-anymatch@^1.3.0:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a"
+anymatch@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
dependencies:
- micromatch "^2.1.5"
- normalize-path "^2.0.0"
+ micromatch "^3.1.4"
+ normalize-path "^2.1.1"
-append-transform@^0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991"
+append-transform@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab"
dependencies:
- default-require-extensions "^1.0.0"
+ default-require-extensions "^2.0.0"
-aproba@^1.0.3:
+aproba@^1.0.3, aproba@^1.1.1:
version "1.2.0"
resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
are-we-there-yet@~1.1.2:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d"
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21"
dependencies:
delegates "^1.0.0"
readable-stream "^2.0.6"
argparse@^1.0.7:
- version "1.0.9"
- resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86"
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
dependencies:
sprintf-js "~1.0.2"
-aria-query@^0.7.0:
- version "0.7.0"
- resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-0.7.0.tgz#4af10a1e61573ddea0cf3b99b51c52c05b424d24"
+aria-query@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc"
dependencies:
ast-types-flow "0.0.7"
+ commander "^2.11.0"
arr-diff@^2.0.0:
version "2.0.0"
@@ -312,10 +433,18 @@ arr-diff@^2.0.0:
dependencies:
arr-flatten "^1.0.1"
-arr-flatten@^1.0.1:
+arr-diff@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
+
+arr-flatten@^1.0.1, arr-flatten@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
+arr-union@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
+
array-equal@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93"
@@ -365,6 +494,10 @@ array-unique@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
+array-unique@^0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
+
arrify@^1.0.0, arrify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
@@ -374,8 +507,8 @@ asap@~2.0.3:
resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
asn1.js@^4.0.0:
- version "4.9.2"
- resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.2.tgz#8117ef4f7ed87cd8f89044b5bff97ac243a16c9a"
+ version "4.10.1"
+ resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0"
dependencies:
bn.js "^4.0.0"
inherits "^2.0.1"
@@ -393,13 +526,17 @@ assert-plus@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
-assert@^1.1.1, assert@^1.3.0:
+assert@^1.1.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91"
dependencies:
util "0.10.3"
-ast-types-flow@0.0.7:
+assign-symbols@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
+
+ast-types-flow@0.0.7, ast-types-flow@^0.0.7:
version "0.0.7"
resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad"
@@ -419,29 +556,23 @@ async-limiter@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8"
-async@2.4.1:
- version "2.4.1"
- resolved "https://registry.yarnpkg.com/async/-/async-2.4.1.tgz#62a56b279c98a11d0987096a01cc3eeb8eb7bbd7"
- dependencies:
- lodash "^4.14.0"
-
async@^1.4.0, async@^1.5.2:
version "1.5.2"
resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
-async@^2.1.2, async@^2.1.4, async@^2.1.5, async@^2.4.1:
- version "2.6.0"
- resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4"
+async@^2.1.4:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610"
dependencies:
- lodash "^4.14.0"
+ lodash "^4.17.10"
asynckit@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
-atob@~1.1.0:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/atob/-/atob-1.1.3.tgz#95f13629b12c3a51a5d215abdce2aa9f32f80773"
+atob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.1.tgz#ae2d5a729477f289d60dd7f96a6314a22dd6c22a"
autoprefixer@^6.3.1:
version "6.7.7"
@@ -454,15 +585,15 @@ autoprefixer@^6.3.1:
postcss "^5.2.16"
postcss-value-parser "^3.2.3"
-autoprefixer@^7.1.6:
- version "7.1.6"
- resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.1.6.tgz#fb933039f74af74a83e71225ce78d9fd58ba84d7"
+autoprefixer@^8.6.5:
+ version "8.6.5"
+ resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-8.6.5.tgz#343f3d193ed568b3208e00117a1b96eb691d4ee9"
dependencies:
- browserslist "^2.5.1"
- caniuse-lite "^1.0.30000748"
+ browserslist "^3.2.8"
+ caniuse-lite "^1.0.30000864"
normalize-range "^0.1.2"
num2fraction "^1.2.2"
- postcss "^6.0.13"
+ postcss "^6.0.23"
postcss-value-parser "^3.2.3"
aws-sign2@~0.6.0:
@@ -474,8 +605,8 @@ aws-sign2@~0.7.0:
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
aws4@^1.2.1, aws4@^1.6.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.7.0.tgz#d4d0e9b9dbfca77bf08eeb0a8a471550fe39e289"
axios@~0.16.2:
version "0.16.2"
@@ -484,13 +615,13 @@ axios@~0.16.2:
follow-redirects "^1.2.3"
is-buffer "^1.1.5"
-axobject-query@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-0.1.0.tgz#62f59dbc59c9f9242759ca349960e7a2fe3c36c0"
+axobject-query@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.0.1.tgz#05dfa705ada8ad9db993fa6896f22d395b0b0a07"
dependencies:
ast-types-flow "0.0.7"
-babel-code-frame@^6.11.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0:
+babel-code-frame@^6.22.0, babel-code-frame@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
dependencies:
@@ -498,9 +629,9 @@ babel-code-frame@^6.11.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0:
esutils "^2.0.2"
js-tokens "^3.0.2"
-babel-core@^6.0.0, babel-core@^6.25.0, babel-core@^6.26.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8"
+babel-core@^6.0.0, babel-core@^6.26.0, babel-core@^6.26.3:
+ version "6.26.3"
+ resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207"
dependencies:
babel-code-frame "^6.26.0"
babel-generator "^6.26.0"
@@ -512,41 +643,30 @@ babel-core@^6.0.0, babel-core@^6.25.0, babel-core@^6.26.0:
babel-traverse "^6.26.0"
babel-types "^6.26.0"
babylon "^6.18.0"
- convert-source-map "^1.5.0"
- debug "^2.6.8"
+ convert-source-map "^1.5.1"
+ debug "^2.6.9"
json5 "^0.5.1"
lodash "^4.17.4"
minimatch "^3.0.4"
path-is-absolute "^1.0.1"
- private "^0.1.7"
+ private "^0.1.8"
slash "^1.0.0"
- source-map "^0.5.6"
+ source-map "^0.5.7"
-babel-eslint@^8.0.1:
- version "8.2.1"
- resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-8.2.1.tgz#136888f3c109edc65376c23ebf494f36a3e03951"
- dependencies:
- "@babel/code-frame" "7.0.0-beta.36"
- "@babel/traverse" "7.0.0-beta.36"
- "@babel/types" "7.0.0-beta.36"
- babylon "7.0.0-beta.36"
- eslint-scope "~3.7.1"
- eslint-visitor-keys "^1.0.0"
-
-babel-eslint@^8.2.3:
- version "8.2.3"
- resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-8.2.3.tgz#1a2e6681cc9bc4473c32899e59915e19cd6733cf"
+babel-eslint@^8.0.1, babel-eslint@^8.2.6:
+ version "8.2.6"
+ resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-8.2.6.tgz#6270d0c73205628067c0f7ae1693a9e797acefd9"
dependencies:
"@babel/code-frame" "7.0.0-beta.44"
"@babel/traverse" "7.0.0-beta.44"
"@babel/types" "7.0.0-beta.44"
babylon "7.0.0-beta.44"
- eslint-scope "~3.7.1"
+ eslint-scope "3.7.1"
eslint-visitor-keys "^1.0.0"
babel-generator@^6.18.0, babel-generator@^6.26.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.0.tgz#ac1ae20070b79f6e3ca1d3269613053774f20dc5"
+ version "6.26.1"
+ resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90"
dependencies:
babel-messages "^6.23.0"
babel-runtime "^6.26.0"
@@ -554,7 +674,7 @@ babel-generator@^6.18.0, babel-generator@^6.26.0:
detect-indent "^4.0.0"
jsesc "^1.3.0"
lodash "^4.17.4"
- source-map "^0.5.6"
+ source-map "^0.5.7"
trim-right "^1.0.1"
babel-helper-builder-binary-assignment-operator-visitor@^6.24.1:
@@ -623,13 +743,6 @@ babel-helper-hoist-variables@^6.24.1:
babel-runtime "^6.22.0"
babel-types "^6.24.1"
-babel-helper-module-imports@^7.0.0-beta.3:
- version "7.0.0-beta.3"
- resolved "https://registry.yarnpkg.com/babel-helper-module-imports/-/babel-helper-module-imports-7.0.0-beta.3.tgz#e15764e3af9c8e11810c09f78f498a2bdc71585a"
- dependencies:
- babel-types "7.0.0-beta.3"
- lodash "^4.2.0"
-
babel-helper-optimise-call-expression@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257"
@@ -680,20 +793,14 @@ babel-jest@^21.2.0:
babel-plugin-istanbul "^4.0.0"
babel-preset-jest "^21.2.0"
-babel-loader@^7.1.1:
- version "7.1.2"
- resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.2.tgz#f6cbe122710f1aa2af4d881c6d5b54358ca24126"
+babel-loader@^7.1.5:
+ version "7.1.5"
+ resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.5.tgz#e3ee0cd7394aa557e013b02d3e492bfd07aa6d68"
dependencies:
find-cache-dir "^1.0.0"
loader-utils "^1.0.2"
mkdirp "^0.5.1"
-babel-macros@^1.1.1:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/babel-macros/-/babel-macros-1.2.0.tgz#39e47ed6d286d4a98f1948d8bab45dac17e4e2d4"
- dependencies:
- cosmiconfig "3.1.0"
-
babel-messages@^6.23.0:
version "6.23.0"
resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
@@ -707,39 +814,46 @@ babel-plugin-check-es2015-constants@^6.22.0:
babel-runtime "^6.22.0"
babel-plugin-istanbul@^4.0.0:
- version "4.1.5"
- resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.5.tgz#6760cdd977f411d3e175bb064f2bc327d99b2b6e"
+ version "4.1.6"
+ resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz#36c59b2192efce81c5b378321b74175add1c9a45"
dependencies:
+ babel-plugin-syntax-object-rest-spread "^6.13.0"
find-up "^2.1.0"
- istanbul-lib-instrument "^1.7.5"
- test-exclude "^4.1.1"
+ istanbul-lib-instrument "^1.10.1"
+ test-exclude "^4.2.1"
babel-plugin-jest-hoist@^21.2.0:
version "21.2.0"
resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-21.2.0.tgz#2cef637259bd4b628a6cace039de5fcd14dbb006"
-babel-plugin-lodash@^3.3.2:
- version "3.3.2"
- resolved "https://registry.yarnpkg.com/babel-plugin-lodash/-/babel-plugin-lodash-3.3.2.tgz#da3a5b49ba27447f54463f6c4fa81396ccdd463f"
+babel-plugin-lodash@^3.3.4:
+ version "3.3.4"
+ resolved "https://registry.yarnpkg.com/babel-plugin-lodash/-/babel-plugin-lodash-3.3.4.tgz#4f6844358a1340baed182adbeffa8df9967bc196"
dependencies:
- babel-helper-module-imports "^7.0.0-beta.3"
- babel-types "^6.26.0"
+ "@babel/helper-module-imports" "^7.0.0-beta.49"
+ "@babel/types" "^7.0.0-beta.49"
glob "^7.1.1"
- lodash "^4.17.4"
+ lodash "^4.17.10"
require-package-name "^2.0.1"
-babel-plugin-preval@^1.6.1:
- version "1.6.2"
- resolved "https://registry.yarnpkg.com/babel-plugin-preval/-/babel-plugin-preval-1.6.2.tgz#8f580a1d4579d5fc79f1cfaee6f9fe0996fdeb1f"
+babel-plugin-macros@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.3.0.tgz#1538e6339cbcbf093f334dc2f10f5f53043e3fda"
dependencies:
- babel-macros "^1.1.1"
+ cosmiconfig "^4.0.0"
+
+babel-plugin-preval@^1.6.1:
+ version "1.6.4"
+ resolved "https://registry.yarnpkg.com/babel-plugin-preval/-/babel-plugin-preval-1.6.4.tgz#96febe8172b3ca6c3d03ed96eeb0382ba4b18056"
+ dependencies:
+ babel-plugin-macros "^2.0.0"
babel-register "^6.26.0"
babylon "^6.18.0"
require-from-string "^2.0.1"
-babel-plugin-react-intl@^2.3.1:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-react-intl/-/babel-plugin-react-intl-2.3.1.tgz#3d43912e824da005e08e8e8239d5ba784374bb00"
+babel-plugin-react-intl@^2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-react-intl/-/babel-plugin-react-intl-2.4.0.tgz#292fca8030603a9e0476973290836aa0c7da17e2"
dependencies:
babel-runtime "^6.2.0"
intl-messageformat-parser "^1.2.0"
@@ -798,9 +912,9 @@ babel-plugin-transform-class-properties@^6.24.1:
babel-runtime "^6.22.0"
babel-template "^6.24.1"
-babel-plugin-transform-decorators-legacy@^1.3.4:
- version "1.3.4"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators-legacy/-/babel-plugin-transform-decorators-legacy-1.3.4.tgz#741b58f6c5bce9e6027e0882d9c994f04f366925"
+babel-plugin-transform-decorators-legacy@^1.3.5:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators-legacy/-/babel-plugin-transform-decorators-legacy-1.3.5.tgz#0e492dffa0edd70529072887f8aa86d4dd8b40a1"
dependencies:
babel-plugin-syntax-decorators "^6.1.18"
babel-runtime "^6.2.0"
@@ -890,9 +1004,9 @@ babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015
babel-runtime "^6.22.0"
babel-template "^6.24.1"
-babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a"
+babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1, babel-plugin-transform-es2015-modules-commonjs@^6.26.2:
+ version "6.26.2"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3"
dependencies:
babel-plugin-transform-strict-mode "^6.24.1"
babel-runtime "^6.26.0"
@@ -1030,9 +1144,9 @@ babel-plugin-transform-react-jsx@^6.24.1:
babel-plugin-syntax-jsx "^6.8.0"
babel-runtime "^6.22.0"
-babel-plugin-transform-react-remove-prop-types@^0.4.10:
- version "0.4.10"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.10.tgz#3c7f3a03ad8aa6bb8c00e93fd13a433910444545"
+babel-plugin-transform-react-remove-prop-types@^0.4.13:
+ version "0.4.13"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.13.tgz#331cfc05099a808238311d78319c27460d481189"
babel-plugin-transform-regenerator@^6.22.0:
version "6.26.0"
@@ -1053,9 +1167,9 @@ babel-plugin-transform-strict-mode@^6.24.1:
babel-runtime "^6.22.0"
babel-types "^6.24.1"
-babel-preset-env@^1.6.1:
- version "1.6.1"
- resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.1.tgz#a18b564cc9b9afdf4aae57ae3c1b0d99188e6f48"
+babel-preset-env@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a"
dependencies:
babel-plugin-check-es2015-constants "^6.22.0"
babel-plugin-syntax-trailing-function-commas "^6.22.0"
@@ -1084,7 +1198,7 @@ babel-preset-env@^1.6.1:
babel-plugin-transform-es2015-unicode-regex "^6.22.0"
babel-plugin-transform-exponentiation-operator "^6.22.0"
babel-plugin-transform-regenerator "^6.22.0"
- browserslist "^2.1.2"
+ browserslist "^3.2.6"
invariant "^2.2.2"
semver "^5.3.0"
@@ -1155,14 +1269,6 @@ babel-traverse@^6.18.0, babel-traverse@^6.24.1, babel-traverse@^6.26.0:
invariant "^2.2.2"
lodash "^4.17.4"
-babel-types@7.0.0-beta.3:
- version "7.0.0-beta.3"
- resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-7.0.0-beta.3.tgz#cd927ca70e0ae8ab05f4aab83778cfb3e6eb20b4"
- dependencies:
- esutils "^2.0.2"
- lodash "^4.2.0"
- to-fast-properties "^2.0.0"
-
babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497"
@@ -1172,10 +1278,6 @@ babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26
lodash "^4.17.4"
to-fast-properties "^1.0.3"
-babylon@7.0.0-beta.36:
- version "7.0.0-beta.36"
- resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.36.tgz#3a3683ba6a9a1e02b0aa507c8e63435e39305b9e"
-
babylon@7.0.0-beta.44:
version "7.0.0-beta.44"
resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.44.tgz#89159e15e6e30c5096e22d738d8c0af8a0e8ca1d"
@@ -1190,10 +1292,6 @@ backoff@^2.4.1:
dependencies:
precond "0.2"
-balanced-match@0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.1.0.tgz#b504bd05869b39259dd0c5efc35d843176dccc4a"
-
balanced-match@^0.4.2:
version "0.4.2"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
@@ -1203,19 +1301,39 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
base64-js@^1.0.2:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886"
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3"
+
+base@^0.11.1:
+ version "0.11.2"
+ resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
+ dependencies:
+ cache-base "^1.0.1"
+ class-utils "^0.3.5"
+ component-emitter "^1.2.1"
+ define-property "^1.0.0"
+ isobject "^3.0.1"
+ mixin-deep "^1.2.0"
+ pascalcase "^0.1.1"
batch@0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
bcrypt-pbkdf@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d"
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
dependencies:
tweetnacl "^0.14.3"
+bfj-node4@^5.2.0:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/bfj-node4/-/bfj-node4-5.3.1.tgz#e23d8b27057f1d0214fc561142ad9db998f26830"
+ dependencies:
+ bluebird "^3.5.1"
+ check-types "^7.3.0"
+ tryer "^1.0.0"
+
big.js@^3.1.3:
version "3.2.0"
resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e"
@@ -1230,6 +1348,10 @@ block-stream@*:
dependencies:
inherits "~2.0.0"
+bluebird@^3.5.1:
+ version "3.5.1"
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9"
+
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
version "4.11.8"
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f"
@@ -1270,21 +1392,9 @@ boom@2.x.x:
dependencies:
hoek "2.x.x"
-boom@4.x.x:
- version "4.3.1"
- resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31"
- dependencies:
- hoek "4.x.x"
-
-boom@5.x.x:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02"
- dependencies:
- hoek "4.x.x"
-
brace-expansion@^1.1.7:
- version "1.1.8"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292"
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
dependencies:
balanced-match "^1.0.0"
concat-map "0.0.1"
@@ -1297,19 +1407,34 @@ braces@^1.8.2:
preserve "^0.2.0"
repeat-element "^1.1.2"
+braces@^2.3.0, braces@^2.3.1:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
+ dependencies:
+ arr-flatten "^1.1.0"
+ array-unique "^0.3.2"
+ extend-shallow "^2.0.1"
+ fill-range "^4.0.0"
+ isobject "^3.0.1"
+ repeat-element "^1.1.2"
+ snapdragon "^0.8.1"
+ snapdragon-node "^2.0.1"
+ split-string "^3.0.2"
+ to-regex "^3.0.1"
+
brorand@^1.0.1:
version "1.1.0"
resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
browser-resolve@^1.11.2:
- version "1.11.2"
- resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce"
+ version "1.11.3"
+ resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6"
dependencies:
resolve "1.1.7"
browserify-aes@^1.0.0, browserify-aes@^1.0.4:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.1.1.tgz#38b7ab55edb806ff2dcda1a7f1620773a477c49f"
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48"
dependencies:
buffer-xor "^1.0.3"
cipher-base "^1.0.0"
@@ -1319,20 +1444,21 @@ browserify-aes@^1.0.0, browserify-aes@^1.0.4:
safe-buffer "^5.0.1"
browserify-cipher@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a"
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0"
dependencies:
browserify-aes "^1.0.4"
browserify-des "^1.0.0"
evp_bytestokey "^1.0.0"
browserify-des@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd"
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c"
dependencies:
cipher-base "^1.0.1"
des.js "^1.0.0"
inherits "^2.0.1"
+ safe-buffer "^5.1.2"
browserify-rsa@^4.0.0:
version "4.0.1"
@@ -1366,12 +1492,12 @@ browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6:
caniuse-db "^1.0.30000639"
electron-to-chromium "^1.2.7"
-browserslist@^2.1.2, browserslist@^2.5.1:
- version "2.9.1"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.9.1.tgz#b72d3982ab01b5cd24da62ff6d45573886aff275"
+browserslist@^3.2.4, browserslist@^3.2.6, browserslist@^3.2.8:
+ version "3.2.8"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6"
dependencies:
- caniuse-lite "^1.0.30000770"
- electron-to-chromium "^1.3.27"
+ caniuse-lite "^1.0.30000844"
+ electron-to-chromium "^1.3.47"
bser@^2.0.0:
version "2.0.0"
@@ -1379,6 +1505,10 @@ bser@^2.0.0:
dependencies:
node-int64 "^0.4.0"
+buffer-from@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.0.tgz#87fcaa3a298358e0ade6e442cfce840740d1ad04"
+
buffer-indexof@^1.0.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c"
@@ -1399,7 +1529,7 @@ buffer@^4.3.0:
ieee754 "^1.1.4"
isarray "^1.0.0"
-builtin-modules@^1.0.0, builtin-modules@^1.1.1:
+builtin-modules@^1.0.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
@@ -1411,6 +1541,38 @@ bytes@3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
+cacache@^10.0.1, cacache@^10.0.4:
+ version "10.0.4"
+ resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460"
+ dependencies:
+ bluebird "^3.5.1"
+ chownr "^1.0.1"
+ glob "^7.1.2"
+ graceful-fs "^4.1.11"
+ lru-cache "^4.1.1"
+ mississippi "^2.0.0"
+ mkdirp "^0.5.1"
+ move-concurrently "^1.0.1"
+ promise-inflight "^1.0.1"
+ rimraf "^2.6.2"
+ ssri "^5.2.4"
+ unique-filename "^1.1.0"
+ y18n "^4.0.0"
+
+cache-base@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
+ dependencies:
+ collection-visit "^1.0.0"
+ component-emitter "^1.2.1"
+ get-value "^2.0.6"
+ has-value "^1.0.0"
+ isobject "^3.0.1"
+ set-value "^2.0.0"
+ to-object-path "^0.3.0"
+ union-value "^1.0.0"
+ unset-value "^1.0.0"
+
caller-path@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f"
@@ -1425,10 +1587,6 @@ callsites@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50"
-camelcase-css@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-1.0.1.tgz#157c4238265f5cf94a1dffde86446552cbf3f705"
-
camelcase-keys@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
@@ -1436,7 +1594,7 @@ camelcase-keys@^2.0.0:
camelcase "^2.0.0"
map-obj "^1.0.0"
-camelcase@^1.0.2, camelcase@^1.2.1:
+camelcase@^1.0.2:
version "1.2.1"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
@@ -1448,7 +1606,7 @@ camelcase@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
-camelcase@^4.0.0, camelcase@^4.1.0:
+camelcase@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
@@ -1462,16 +1620,18 @@ caniuse-api@^1.5.2:
lodash.uniq "^4.5.0"
caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639:
- version "1.0.30000777"
- resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000777.tgz#2e19adba63bdd7c501df637a862adead7f4bc054"
+ version "1.0.30000865"
+ resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000865.tgz#82ffb64d40f7567620aac02d3a632079689abc6b"
-caniuse-lite@^1.0.30000748, caniuse-lite@^1.0.30000770:
- version "1.0.30000777"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000777.tgz#31c18a4a8cd49782ebb305c8e8a93e6b3b3e4f13"
+caniuse-lite@^1.0.30000823, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000864:
+ version "1.0.30000865"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000865.tgz#70026616e8afe6e1442f8bb4e1092987d81a2f25"
-caseless@~0.11.0:
- version "0.11.0"
- resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7"
+capture-exit@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-1.2.0.tgz#1c5fcc489fd0ab00d4f1ac7ae1072e3173fbab6f"
+ dependencies:
+ rsvp "^3.3.3"
caseless@~0.12.0:
version "0.12.0"
@@ -1484,10 +1644,6 @@ center-align@^0.1.1:
align-text "^0.1.3"
lazy-cache "^1.0.3"
-chain-function@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/chain-function/-/chain-function-1.0.0.tgz#0d4ab37e7e18ead0bdc47b920764118ce58733dc"
-
chalk@^1.1.1, chalk@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
@@ -1498,18 +1654,26 @@ chalk@^1.1.1, chalk@^1.1.3:
strip-ansi "^3.0.0"
supports-color "^2.0.0"
-chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba"
+chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.2, chalk@^2.4.1:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e"
dependencies:
- ansi-styles "^3.1.0"
+ ansi-styles "^3.2.1"
escape-string-regexp "^1.0.5"
- supports-color "^4.0.0"
+ supports-color "^5.3.0"
chardet@^0.4.0:
version "0.4.2"
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2"
+chardet@^0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.5.0.tgz#fe3ac73c00c3d865ffcc02a0682e2c20b6a06029"
+
+check-types@^7.3.0:
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/check-types/-/check-types-7.4.0.tgz#0378ec1b9616ec71f774931a3c6516fad8c152f4"
+
cheerio@^1.0.0-rc.2:
version "1.0.0-rc.2"
resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.2.tgz#4b9f53a81b27e4d5dac31c0ffd0cfa03cc6830db"
@@ -1521,24 +1685,38 @@ cheerio@^1.0.0-rc.2:
lodash "^4.15.0"
parse5 "^3.0.1"
-chokidar@^1.6.0, chokidar@^1.7.0:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468"
+chokidar@^2.0.0, chokidar@^2.0.2:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26"
dependencies:
- anymatch "^1.3.0"
+ anymatch "^2.0.0"
async-each "^1.0.0"
- glob-parent "^2.0.0"
+ braces "^2.3.0"
+ glob-parent "^3.1.0"
inherits "^2.0.1"
is-binary-path "^1.0.0"
- is-glob "^2.0.0"
+ is-glob "^4.0.0"
+ lodash.debounce "^4.0.8"
+ normalize-path "^2.1.1"
path-is-absolute "^1.0.0"
readdirp "^2.0.0"
+ upath "^1.0.5"
optionalDependencies:
- fsevents "^1.0.0"
+ fsevents "^1.2.2"
+
+chownr@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181"
+
+chrome-trace-event@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz#45a91bd2c20c9411f0963b5aaeb9a1b95e09cc48"
+ dependencies:
+ tslib "^1.9.0"
ci-info@^1.0.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.2.tgz#03561259db48d0474c8bdc90f5b47b068b6bbfb4"
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.3.tgz#710193264bb05c77b8c90d02f5aaf22216a667b2"
cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
version "1.0.4"
@@ -1557,9 +1735,18 @@ clap@^1.0.9:
dependencies:
chalk "^1.1.3"
+class-utils@^0.3.5:
+ version "0.3.6"
+ resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
+ dependencies:
+ arr-union "^3.1.0"
+ define-property "^0.2.5"
+ isobject "^3.0.0"
+ static-extend "^0.1.1"
+
classnames@^2.2.5:
- version "2.2.5"
- resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.5.tgz#fb3801d453467649ef3603c7d61a02bd129bde6d"
+ version "2.2.6"
+ resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce"
cli-cursor@^2.1.0:
version "2.1.0"
@@ -1587,18 +1774,26 @@ cliui@^3.2.0:
strip-ansi "^3.0.1"
wrap-ansi "^2.0.0"
-clone-deep@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.3.0.tgz#348c61ae9cdbe0edfe053d91ff4cc521d790ede8"
+cliui@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49"
+ dependencies:
+ string-width "^2.1.1"
+ strip-ansi "^4.0.0"
+ wrap-ansi "^2.0.0"
+
+clone-deep@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-2.0.2.tgz#00db3a1e173656730d1188c3d6aced6d7ea97713"
dependencies:
for-own "^1.0.0"
- is-plain-object "^2.0.1"
- kind-of "^3.2.2"
- shallow-clone "^0.1.2"
+ is-plain-object "^2.0.4"
+ kind-of "^6.0.0"
+ shallow-clone "^1.0.0"
clone@^1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.3.tgz#298d7e2231660f40c003c2ed3140decf3f53085f"
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
co@^4.6.0:
version "4.6.0"
@@ -1614,13 +1809,24 @@ code-point-at@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
-color-convert@^1.3.0, color-convert@^1.9.0:
- version "1.9.1"
- resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed"
+collection-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
dependencies:
- color-name "^1.1.1"
+ map-visit "^1.0.0"
+ object-visit "^1.0.0"
-color-name@^1.0.0, color-name@^1.1.1:
+color-convert@^1.3.0, color-convert@^1.8.2, color-convert@^1.9.0:
+ version "1.9.2"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.2.tgz#49881b8fba67df12a96bdf3f56c0aab9e7913147"
+ dependencies:
+ color-name "1.1.1"
+
+color-name@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689"
+
+color-name@^1.0.0:
version "1.1.3"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
@@ -1630,6 +1836,13 @@ color-string@^0.3.0:
dependencies:
color-name "^1.0.0"
+color-string@^1.4.0:
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.2.tgz#26e45814bc3c9a7cbd6751648a41434514a773a9"
+ dependencies:
+ color-name "^1.0.0"
+ simple-swizzle "^0.2.2"
+
color@^0.11.0:
version "0.11.4"
resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764"
@@ -1638,6 +1851,13 @@ color@^0.11.0:
color-convert "^1.3.0"
color-string "^0.3.0"
+color@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/color/-/color-1.0.3.tgz#e48e832d85f14ef694fb468811c2d5cfe729b55d"
+ dependencies:
+ color-convert "^1.8.2"
+ color-string "^1.4.0"
+
colormin@^1.0.5:
version "1.1.2"
resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133"
@@ -1654,44 +1874,55 @@ colors@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63"
-combined-stream@^1.0.5, combined-stream@~1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009"
+combined-stream@1.0.6, combined-stream@^1.0.5, combined-stream@~1.0.5:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818"
dependencies:
delayed-stream "~1.0.0"
-commander@^2.8.1, commander@^2.9.0:
- version "2.12.2"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.12.2.tgz#0f5946c427ed9ec0d91a46bb9def53e54650e555"
+commander@^2.11.0, commander@^2.13.0, commander@^2.8.1:
+ version "2.16.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.16.0.tgz#f16390593996ceb4f3eeb020b31d78528f7f8a50"
+
+commander@~2.13.0:
+ version "2.13.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c"
commondir@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
-complex.js@2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/complex.js/-/complex.js-2.0.4.tgz#d8e7cfb9652d1e853e723386421c1a0ca7a48373"
+compare-versions@^3.1.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.3.0.tgz#af93ea705a96943f622ab309578b9b90586f39c3"
-compressible@~2.0.11:
- version "2.0.12"
- resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.12.tgz#c59a5c99db76767e9876500e271ef63b3493bd66"
- dependencies:
- mime-db ">= 1.30.0 < 2"
+component-emitter@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
-compression-webpack-plugin@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/compression-webpack-plugin/-/compression-webpack-plugin-1.0.1.tgz#7f0a2af9f642b4f87b5989516a3b9e9b41bb4b3f"
+compressible@~2.0.13:
+ version "2.0.14"
+ resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.14.tgz#326c5f507fbb055f54116782b969a81b67a29da7"
dependencies:
- async "2.4.1"
+ mime-db ">= 1.34.0 < 2"
+
+compression-webpack-plugin@^1.1.11:
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/compression-webpack-plugin/-/compression-webpack-plugin-1.1.11.tgz#8384c7a6ead1d2e2efb190bdfcdcf35878ed8266"
+ dependencies:
+ cacache "^10.0.1"
+ find-cache-dir "^1.0.0"
+ neo-async "^2.5.0"
+ serialize-javascript "^1.4.0"
webpack-sources "^1.0.1"
compression@^1.5.2:
- version "1.7.1"
- resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.1.tgz#eff2603efc2e22cf86f35d2eb93589f9875373db"
+ version "1.7.2"
+ resolved "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz#aaffbcd6aaf854b44ebb280353d5ad1651f59a69"
dependencies:
accepts "~1.3.4"
bytes "3.0.0"
- compressible "~2.0.11"
+ compressible "~2.0.13"
debug "2.6.9"
on-headers "~1.0.1"
safe-buffer "5.1.1"
@@ -1701,10 +1932,11 @@ concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
-concat-stream@^1.6.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7"
+concat-stream@^1.5.0, concat-stream@^1.6.0:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
dependencies:
+ buffer-from "^1.0.0"
inherits "^2.0.3"
readable-stream "^2.2.2"
typedarray "^0.0.6"
@@ -1743,11 +1975,7 @@ content-type@~1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
-convert-source-map@^0.3.3:
- version "0.3.5"
- resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190"
-
-convert-source-map@^1.1.1, convert-source-map@^1.4.0, convert-source-map@^1.5.0:
+convert-source-map@^1.4.0, convert-source-map@^1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5"
@@ -1759,58 +1987,62 @@ cookie@0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
+copy-concurrently@^1.0.0:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0"
+ dependencies:
+ aproba "^1.1.1"
+ fs-write-stream-atomic "^1.0.8"
+ iferr "^0.1.5"
+ mkdirp "^0.5.1"
+ rimraf "^2.5.4"
+ run-queue "^1.0.0"
+
+copy-descriptor@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
+
core-js@^1.0.0:
version "1.2.7"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
-core-js@^2.4.0, core-js@^2.5.0:
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.1.tgz#ae6874dc66937789b80754ff5428df66819ca50b"
+core-js@^2.4.0, core-js@^2.5.0, core-js@^2.5.7:
+ version "2.5.7"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e"
core-util-is@1.0.2, core-util-is@~1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
-cosmiconfig@3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-3.1.0.tgz#640a94bf9847f321800403cd273af60665c73397"
+cosmiconfig@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz#760391549580bbd2df1e562bc177b13c290972dc"
dependencies:
is-directory "^0.3.1"
js-yaml "^3.9.0"
- parse-json "^3.0.0"
+ parse-json "^4.0.0"
require-from-string "^2.0.1"
-cosmiconfig@^2.1.0, cosmiconfig@^2.1.1:
- version "2.2.2"
- resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-2.2.2.tgz#6173cebd56fac042c1f4390edf7af6c07c7cb892"
- dependencies:
- is-directory "^0.3.1"
- js-yaml "^3.4.3"
- minimist "^1.2.0"
- object-assign "^4.1.0"
- os-homedir "^1.0.1"
- parse-json "^2.2.0"
- require-from-string "^1.1.0"
-
create-ecdh@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d"
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff"
dependencies:
bn.js "^4.1.0"
elliptic "^6.0.0"
create-hash@^1.1.0, create-hash@^1.1.2:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd"
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196"
dependencies:
cipher-base "^1.0.1"
inherits "^2.0.1"
- ripemd160 "^2.0.0"
+ md5.js "^1.3.4"
+ ripemd160 "^2.0.1"
sha.js "^2.4.0"
create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06"
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff"
dependencies:
cipher-base "^1.0.3"
create-hash "^1.1.0"
@@ -1820,18 +2052,18 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
sha.js "^2.4.8"
create-react-class@^15.5.2:
- version "15.6.2"
- resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.2.tgz#cf1ed15f12aad7f14ef5f2dfe05e6c42f91ef02a"
+ version "15.6.3"
+ resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.3.tgz#2d73237fb3f970ae6ebe011a9e66f46dbca80036"
dependencies:
fbjs "^0.8.9"
loose-envify "^1.3.1"
object-assign "^4.1.1"
-cross-env@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.1.1.tgz#b6d8ab97f304c0f71dae7277b75fe424c08dfa74"
+cross-env@^5.1.4:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.2.0.tgz#6ecd4c015d5773e614039ee529076669b9d126f2"
dependencies:
- cross-spawn "^5.1.0"
+ cross-spawn "^6.0.5"
is-windows "^1.0.0"
cross-spawn@^3.0.0:
@@ -1849,18 +2081,22 @@ cross-spawn@^5.0.1, cross-spawn@^5.1.0:
shebang-command "^1.2.0"
which "^1.2.9"
+cross-spawn@^6.0.4, cross-spawn@^6.0.5:
+ version "6.0.5"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
+ dependencies:
+ nice-try "^1.0.4"
+ path-key "^2.0.1"
+ semver "^5.5.0"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
cryptiles@2.x.x:
version "2.0.5"
resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
dependencies:
boom "2.x.x"
-cryptiles@3.x.x:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe"
- dependencies:
- boom "5.x.x"
-
crypto-browserify@^3.11.0:
version "3.12.0"
resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
@@ -1877,15 +2113,6 @@ crypto-browserify@^3.11.0:
randombytes "^2.0.0"
randomfill "^1.0.3"
-css-color-function@~1.3.3:
- version "1.3.3"
- resolved "https://registry.yarnpkg.com/css-color-function/-/css-color-function-1.3.3.tgz#8ed24c2c0205073339fafa004bc8c141fccb282e"
- dependencies:
- balanced-match "0.1.0"
- color "^0.11.0"
- debug "^3.1.0"
- rgb "~0.1.0"
-
css-color-names@0.0.4:
version "0.0.4"
resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
@@ -1916,22 +2143,22 @@ css-list-helpers@^1.0.1:
dependencies:
tcomb "^2.5.0"
-css-loader@^0.28.4:
- version "0.28.7"
- resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.7.tgz#5f2ee989dd32edd907717f953317656160999c1b"
+css-loader@^0.28.11:
+ version "0.28.11"
+ resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.11.tgz#c3f9864a700be2711bb5a2462b2389b1a392dab7"
dependencies:
- babel-code-frame "^6.11.0"
+ babel-code-frame "^6.26.0"
css-selector-tokenizer "^0.7.0"
- cssnano ">=2.6.1 <4"
+ cssnano "^3.10.0"
icss-utils "^2.1.0"
loader-utils "^1.0.2"
lodash.camelcase "^4.3.0"
- object-assign "^4.0.1"
+ object-assign "^4.1.1"
postcss "^5.0.6"
- postcss-modules-extract-imports "^1.0.0"
- postcss-modules-local-by-default "^1.0.1"
- postcss-modules-scope "^1.0.0"
- postcss-modules-values "^1.1.0"
+ postcss-modules-extract-imports "^1.2.0"
+ postcss-modules-local-by-default "^1.2.0"
+ postcss-modules-scope "^1.1.0"
+ postcss-modules-values "^1.3.0"
postcss-value-parser "^3.3.0"
source-list-map "^2.0.0"
@@ -1960,20 +2187,15 @@ css-what@2.1:
version "2.1.0"
resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd"
-css@^2.0.0:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/css/-/css-2.2.1.tgz#73a4c81de85db664d4ee674f7d47085e3b2d55dc"
- dependencies:
- inherits "^2.0.1"
- source-map "^0.1.38"
- source-map-resolve "^0.3.0"
- urix "^0.1.0"
+cssdb@^1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-1.6.0.tgz#3360c4163e07cf4d1efe58c1bc15170535f4d393"
cssesc@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4"
-"cssnano@>=2.6.1 <4":
+cssnano@^3.10.0:
version "3.10.0"
resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38"
dependencies:
@@ -2018,8 +2240,8 @@ csso@~2.3.1:
source-map "^0.5.3"
cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0":
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b"
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.4.tgz#8cd52e8a3acfd68d3aed38ee0a640177d2f9d797"
"cssstyle@>= 0.2.37 < 0.3.0":
version "0.2.37"
@@ -2033,13 +2255,17 @@ currently-unhandled@^0.4.1:
dependencies:
array-find-index "^1.0.1"
+cyclist@~0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640"
+
d@1:
version "1.0.0"
resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f"
dependencies:
es5-ext "^0.10.9"
-damerau-levenshtein@^1.0.0:
+damerau-levenshtein@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz#03191c432cb6eea168bb77f3a55ffdccb8978514"
@@ -2053,13 +2279,13 @@ date-now@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
-debug@2.6.9, debug@^2.2.0, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9:
+debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
dependencies:
ms "2.0.0"
-debug@^3.0.1, debug@^3.1.0:
+debug@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
dependencies:
@@ -2069,27 +2295,31 @@ decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:
version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
-decimal.js@7.2.3:
- version "7.2.3"
- resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-7.2.3.tgz#6434c3b8a8c375780062fc633d0d2bbdb264cc78"
+decode-uri-component@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
deep-equal@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
-deep-extend@^0.4.0, deep-extend@~0.4.0:
- version "0.4.2"
- resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f"
+deep-extend@^0.5.1:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.5.1.tgz#b894a9dd90d3023fbf1c55a394fb858eb2066f1f"
+
+deep-extend@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
deep-is@~0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
-default-require-extensions@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8"
+default-require-extensions@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7"
dependencies:
- strip-bom "^2.0.0"
+ strip-bom "^3.0.0"
defaults@^1.0.2:
version "1.0.3"
@@ -2104,6 +2334,25 @@ define-properties@^1.1.1, define-properties@^1.1.2:
foreach "^2.0.5"
object-keys "^1.0.8"
+define-property@^0.2.5:
+ version "0.2.5"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
+ dependencies:
+ is-descriptor "^0.1.0"
+
+define-property@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
+ dependencies:
+ is-descriptor "^1.0.0"
+
+define-property@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
+ dependencies:
+ is-descriptor "^1.0.2"
+ isobject "^3.0.1"
+
defined@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
@@ -2139,10 +2388,14 @@ delegates@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
-depd@1.1.1, depd@~1.1.1:
+depd@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359"
+depd@~1.1.1, depd@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
+
des.js@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc"
@@ -2173,12 +2426,12 @@ detect-passive-events@^1.0.2:
resolved "https://registry.yarnpkg.com/detect-passive-events/-/detect-passive-events-1.0.4.tgz#6ed477e6e5bceb79079735dcd357789d37f9a91a"
diff@^3.2.0:
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/diff/-/diff-3.4.0.tgz#b1d85507daf3964828de54b37d0d73ba67dda56c"
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
diffie-hellman@^5.0.0:
- version "5.0.2"
- resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e"
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875"
dependencies:
bn.js "^4.1.0"
miller-rabin "^4.0.0"
@@ -2192,9 +2445,9 @@ dns-equal@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d"
-dns-packet@^1.0.1:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.2.2.tgz#a8a26bec7646438963fc86e06f8f8b16d6c8bf7a"
+dns-packet@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a"
dependencies:
ip "^1.1.0"
safe-buffer "^5.0.1"
@@ -2212,15 +2465,15 @@ doctrine@1.5.0:
esutils "^2.0.2"
isarray "^1.0.0"
-doctrine@^2.0.2, doctrine@^2.1.0:
+doctrine@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
dependencies:
esutils "^2.0.2"
-dom-helpers@^3.2.0, dom-helpers@^3.2.1:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.2.1.tgz#3203e07fed217bd1f424b019735582fc37b2825a"
+dom-helpers@^3.2.1, dom-helpers@^3.3.1:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.3.1.tgz#fc1a4e15ffdf60ddde03a480a9c0fece821dd4a6"
dom-serializer@0, dom-serializer@~0.1.0:
version "0.1.0"
@@ -2230,8 +2483,8 @@ dom-serializer@0, dom-serializer@~0.1.0:
entities "~1.1.1"
domain-browser@^1.1.1:
- version "1.1.7"
- resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc"
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
domelementtype@1, domelementtype@^1.3.0:
version "1.3.0"
@@ -2242,8 +2495,8 @@ domelementtype@~1.1.1:
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b"
domhandler@^2.3.0:
- version "2.4.1"
- resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.1.tgz#892e47000a99be55bbf3774ffea0561d8879c259"
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803"
dependencies:
domelementtype "1"
@@ -2255,12 +2508,18 @@ domutils@1.5.1:
domelementtype "1"
domutils@^1.5.1:
- version "1.6.2"
- resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.6.2.tgz#1958cc0b4c9426e9ed367fb1c8e854891b0fa3ff"
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
dependencies:
dom-serializer "0"
domelementtype "1"
+dot-prop@^4.1.1:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57"
+ dependencies:
+ is-obj "^1.0.0"
+
dotenv@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-4.0.0.tgz#864ef1379aced55ce6f95debecdce179f7a0cd1d"
@@ -2273,6 +2532,15 @@ duplexer@^0.1.1, duplexer@~0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
+duplexify@^3.4.2, duplexify@^3.6.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.0.tgz#592903f5d80b38d037220541264d69a198fb3410"
+ dependencies:
+ end-of-stream "^1.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.0.0"
+ stream-shift "^1.0.0"
+
ecc-jsbn@~0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
@@ -2283,13 +2551,13 @@ ee-first@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
-ejs@^2.3.4, ejs@^2.5.6:
- version "2.5.7"
- resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.7.tgz#cc872c168880ae3c7189762fd5ffc00896c9518a"
+ejs@^2.3.4, ejs@^2.5.7:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz#498ec0d495655abc6f23cd61868d926464071aa0"
-electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.27:
- version "1.3.27"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.27.tgz#78ecb8a399066187bb374eede35d9c70565a803d"
+electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.47:
+ version "1.3.52"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.52.tgz#d2d9f1270ba4a3b967b831c40ef71fb4d9ab5ce0"
elliptic@^6.0.0:
version "6.4.0"
@@ -2307,7 +2575,7 @@ emoji-mart@Gargron/emoji-mart#build:
version "2.6.2"
resolved "https://codeload.github.com/Gargron/emoji-mart/tar.gz/ff00dc470b5b2d9f145a6d6e977a54de5df2b4c9"
-emoji-regex@^6.1.0:
+emoji-regex@^6.5.1:
version "6.5.1"
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.5.1.tgz#9baea929b155565c11ea41c6626eaa65cef992c2"
@@ -2315,9 +2583,9 @@ emojis-list@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
-encodeurl@~1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20"
+encodeurl@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
encoding@^0.1.11:
version "0.1.12"
@@ -2325,69 +2593,79 @@ encoding@^0.1.11:
dependencies:
iconv-lite "~0.4.13"
-enhanced-resolve@^3.4.0:
- version "3.4.1"
- resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e"
+end-of-stream@^1.0.0, end-of-stream@^1.1.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43"
+ dependencies:
+ once "^1.4.0"
+
+enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f"
dependencies:
graceful-fs "^4.1.2"
memory-fs "^0.4.0"
- object-assign "^4.0.1"
- tapable "^0.2.7"
+ tapable "^1.0.0"
entities@^1.1.1, entities@~1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0"
enzyme-adapter-react-16@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.1.0.tgz#86c5db7c10f0be6ec25d54ca41b59f2abb397cf4"
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.1.1.tgz#a8f4278b47e082fbca14f5bfb1ee50ee650717b4"
dependencies:
- enzyme-adapter-utils "^1.1.0"
+ enzyme-adapter-utils "^1.3.0"
lodash "^4.17.4"
object.assign "^4.0.4"
object.values "^1.0.4"
- prop-types "^15.5.10"
+ prop-types "^15.6.0"
+ react-reconciler "^0.7.0"
react-test-renderer "^16.0.0-0"
-enzyme-adapter-utils@^1.1.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.2.0.tgz#7f4471ee0a70b91169ec8860d2bf0a6b551664b2"
+enzyme-adapter-utils@^1.3.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.4.0.tgz#c403b81e8eb9953658569e539780964bdc98de62"
dependencies:
- lodash "^4.17.4"
- object.assign "^4.0.4"
- prop-types "^15.5.10"
+ object.assign "^4.1.0"
+ prop-types "^15.6.0"
enzyme@^3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-3.2.0.tgz#998bdcda0fc71b8764a0017f7cc692c943f54a7a"
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-3.3.0.tgz#0971abd167f2d4bf3f5bd508229e1c4b6dc50479"
dependencies:
cheerio "^1.0.0-rc.2"
function.prototype.name "^1.0.3"
has "^1.0.1"
+ is-boolean-object "^1.0.0"
+ is-callable "^1.1.3"
+ is-number-object "^1.0.3"
+ is-string "^1.0.4"
is-subset "^0.1.1"
lodash "^4.17.4"
+ object-inspect "^1.5.0"
object-is "^1.0.1"
- object.assign "^4.0.4"
+ object.assign "^4.1.0"
object.entries "^1.0.4"
object.values "^1.0.4"
raf "^3.4.0"
rst-selector-parser "^2.2.3"
-errno@^0.1.3, errno@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d"
+errno@^0.1.3, errno@~0.1.7:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618"
dependencies:
- prr "~0.0.0"
+ prr "~1.0.1"
error-ex@^1.2.0, error-ex@^1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc"
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
dependencies:
is-arrayish "^0.2.1"
es-abstract@^1.4.3, es-abstract@^1.6.1, es-abstract@^1.7.0:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.10.0.tgz#1ecb36c197842a00d8ee4c2dfd8646bb97d60864"
+ version "1.12.0"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165"
dependencies:
es-to-primitive "^1.1.1"
function-bind "^1.1.1"
@@ -2403,14 +2681,15 @@ es-to-primitive@^1.1.1:
is-date-object "^1.0.1"
is-symbol "^1.0.1"
-es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14:
- version "0.10.37"
- resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.37.tgz#0ee741d148b80069ba27d020393756af257defc3"
+es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14:
+ version "0.10.45"
+ resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.45.tgz#0bfdf7b473da5919d5adf3bd25ceb754fccc3653"
dependencies:
- es6-iterator "~2.0.1"
+ es6-iterator "~2.0.3"
es6-symbol "~3.1.1"
+ next-tick "1"
-es6-iterator@^2.0.1, es6-iterator@~2.0.1:
+es6-iterator@~2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7"
dependencies:
@@ -2418,43 +2697,13 @@ es6-iterator@^2.0.1, es6-iterator@~2.0.1:
es5-ext "^0.10.35"
es6-symbol "^3.1.1"
-es6-map@^0.1.3:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0"
- dependencies:
- d "1"
- es5-ext "~0.10.14"
- es6-iterator "~2.0.1"
- es6-set "~0.1.5"
- es6-symbol "~3.1.1"
- event-emitter "~0.3.5"
-
-es6-set@~0.1.5:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1"
- dependencies:
- d "1"
- es5-ext "~0.10.14"
- es6-iterator "~2.0.1"
- es6-symbol "3.1.1"
- event-emitter "~0.3.5"
-
-es6-symbol@3.1.1, es6-symbol@^3.1.1, es6-symbol@~3.1.1:
+es6-symbol@^3.1.1, es6-symbol@~3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77"
dependencies:
d "1"
es5-ext "~0.10.14"
-es6-weak-map@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f"
- dependencies:
- d "1"
- es5-ext "^0.10.14"
- es6-iterator "^2.0.1"
- es6-symbol "^3.1.1"
-
escape-html@^1.0.3, escape-html@~1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
@@ -2464,24 +2713,15 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
escodegen@^1.6.1:
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.0.tgz#9811a2f265dc1cd3894420ee3717064b632b8852"
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.10.0.tgz#f647395de22519fbd0d928ffcf1d17e0dec2603e"
dependencies:
esprima "^3.1.3"
estraverse "^4.2.0"
esutils "^2.0.2"
optionator "^0.8.1"
optionalDependencies:
- source-map "~0.5.6"
-
-escope@^3.6.0:
- version "3.6.0"
- resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3"
- dependencies:
- es6-map "^0.1.3"
- es6-weak-map "^2.0.1"
- esrecurse "^4.1.0"
- estraverse "^4.1.1"
+ source-map "~0.6.1"
eslint-import-resolver-node@^0.3.1:
version "0.3.2"
@@ -2490,60 +2730,68 @@ eslint-import-resolver-node@^0.3.1:
debug "^2.6.9"
resolve "^1.5.0"
-eslint-module-utils@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz#abaec824177613b8a95b299639e1b6facf473449"
+eslint-module-utils@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz#b270362cd88b1a48ad308976ce7fa54e98411746"
dependencies:
debug "^2.6.8"
pkg-dir "^1.0.0"
eslint-plugin-import@^2.8.0:
- version "2.8.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.8.0.tgz#fa1b6ef31fcb3c501c09859c1b86f1fc5b986894"
+ version "2.13.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.13.0.tgz#df24f241175e312d91662dc91ca84064caec14ed"
dependencies:
- builtin-modules "^1.1.1"
contains-path "^0.1.0"
debug "^2.6.8"
doctrine "1.5.0"
eslint-import-resolver-node "^0.3.1"
- eslint-module-utils "^2.1.1"
+ eslint-module-utils "^2.2.0"
has "^1.0.1"
- lodash.cond "^4.3.0"
+ lodash "^4.17.4"
minimatch "^3.0.3"
read-pkg-up "^2.0.0"
+ resolve "^1.6.0"
eslint-plugin-jsx-a11y@^6.0.3:
- version "6.0.3"
- resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.0.3.tgz#54583d1ae442483162e040e13cc31865465100e5"
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.1.1.tgz#7bf56dbe7d47d811d14dbb3ddff644aa656ce8e1"
dependencies:
- aria-query "^0.7.0"
+ aria-query "^3.0.0"
array-includes "^3.0.3"
- ast-types-flow "0.0.7"
- axobject-query "^0.1.0"
- damerau-levenshtein "^1.0.0"
- emoji-regex "^6.1.0"
- jsx-ast-utils "^2.0.0"
+ ast-types-flow "^0.0.7"
+ axobject-query "^2.0.1"
+ damerau-levenshtein "^1.0.4"
+ emoji-regex "^6.5.1"
+ has "^1.0.3"
+ jsx-ast-utils "^2.0.1"
eslint-plugin-promise@^3.8.0:
version "3.8.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-3.8.0.tgz#65ebf27a845e3c1e9d6f6a5622ddd3801694b621"
eslint-plugin-react@^7.8.2:
- version "7.8.2"
- resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.8.2.tgz#e95c9c47fece55d2303d1a67c9d01b930b88a51d"
+ version "7.10.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.10.0.tgz#af5c1fef31c4704db02098f9be18202993828b50"
dependencies:
- doctrine "^2.0.2"
- has "^1.0.1"
+ doctrine "^2.1.0"
+ has "^1.0.3"
jsx-ast-utils "^2.0.1"
- prop-types "^15.6.0"
+ prop-types "^15.6.2"
-eslint-scope@^3.7.1, eslint-scope@~3.7.1:
+eslint-scope@3.7.1:
version "3.7.1"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8"
dependencies:
esrecurse "^4.1.0"
estraverse "^4.1.1"
+eslint-scope@^3.7.1:
+ version "3.7.3"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.3.tgz#bb507200d3d17f60247636160b4826284b108535"
+ dependencies:
+ esrecurse "^4.1.0"
+ estraverse "^4.1.1"
+
eslint-visitor-keys@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d"
@@ -2607,21 +2855,20 @@ esprima@^3.1.3:
resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
esprima@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804"
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
esquery@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa"
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708"
dependencies:
estraverse "^4.0.0"
esrecurse@^4.1.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz#fa9568d98d3823f9a41d91e902dcab9ea6e5b163"
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf"
dependencies:
estraverse "^4.1.0"
- object-assign "^4.0.1"
estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0:
version "4.2.0"
@@ -2635,16 +2882,9 @@ etag@~1.8.1:
version "1.8.1"
resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
-event-emitter@~0.3.5:
- version "0.3.5"
- resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39"
- dependencies:
- d "1"
- es5-ext "~0.10.14"
-
event-stream@~3.3.0:
version "3.3.4"
- resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571"
+ resolved "http://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571"
dependencies:
duplexer "~0.1.1"
from "~0"
@@ -2654,9 +2894,9 @@ event-stream@~3.3.0:
stream-combiner "~0.0.4"
through "~2.3.1"
-eventemitter3@1.x.x:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508"
+eventemitter3@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163"
events@^1.0.0:
version "1.1.1"
@@ -2676,10 +2916,10 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
safe-buffer "^5.1.1"
exec-sh@^0.2.0:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.1.tgz#163b98a6e89e6b65b47c2a28d215bc1f63989c38"
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.2.tgz#2a5e7ffcbd7d0ba2755bdecb16e5a427dfbdec36"
dependencies:
- merge "^1.1.3"
+ merge "^1.2.0"
execa@^0.7.0:
version "0.7.0"
@@ -2703,6 +2943,18 @@ expand-brackets@^0.1.4:
dependencies:
is-posix-bracket "^0.1.0"
+expand-brackets@^2.1.4:
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
+ dependencies:
+ debug "^2.3.3"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ posix-character-classes "^0.1.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
expand-range@^1.8.1:
version "1.8.2"
resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
@@ -2720,11 +2972,11 @@ expect@^21.2.1:
jest-message-util "^21.2.1"
jest-regex-util "^21.2.0"
-express@^4.15.2, express@^4.16.2:
- version "4.16.2"
- resolved "https://registry.yarnpkg.com/express/-/express-4.16.2.tgz#e35c6dfe2d64b7dca0a5cd4f21781be3299e076c"
+express@^4.16.2:
+ version "4.16.3"
+ resolved "https://registry.yarnpkg.com/express/-/express-4.16.3.tgz#6af8a502350db3246ecc4becf6b5a34d22f7ed53"
dependencies:
- accepts "~1.3.4"
+ accepts "~1.3.5"
array-flatten "1.1.1"
body-parser "1.18.2"
content-disposition "0.5.2"
@@ -2732,55 +2984,80 @@ express@^4.15.2, express@^4.16.2:
cookie "0.3.1"
cookie-signature "1.0.6"
debug "2.6.9"
- depd "~1.1.1"
- encodeurl "~1.0.1"
+ depd "~1.1.2"
+ encodeurl "~1.0.2"
escape-html "~1.0.3"
etag "~1.8.1"
- finalhandler "1.1.0"
+ finalhandler "1.1.1"
fresh "0.5.2"
merge-descriptors "1.0.1"
methods "~1.1.2"
on-finished "~2.3.0"
parseurl "~1.3.2"
path-to-regexp "0.1.7"
- proxy-addr "~2.0.2"
+ proxy-addr "~2.0.3"
qs "6.5.1"
range-parser "~1.2.0"
safe-buffer "5.1.1"
- send "0.16.1"
- serve-static "1.13.1"
+ send "0.16.2"
+ serve-static "1.13.2"
setprototypeof "1.1.0"
- statuses "~1.3.1"
- type-is "~1.6.15"
+ statuses "~1.4.0"
+ type-is "~1.6.16"
utils-merge "1.0.1"
vary "~1.1.2"
+extend-shallow@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
+ dependencies:
+ is-extendable "^0.1.0"
+
+extend-shallow@^3.0.0, extend-shallow@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
+ dependencies:
+ assign-symbols "^1.0.0"
+ is-extendable "^1.0.1"
+
extend@~3.0.0, extend@~3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
external-editor@^2.0.4:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.1.0.tgz#3d026a21b7f95b5726387d4200ac160d372c3b48"
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5"
dependencies:
chardet "^0.4.0"
iconv-lite "^0.4.17"
tmp "^0.0.33"
+external-editor@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.0.tgz#dc35c48c6f98a30ca27a20e9687d7f3c77704bb6"
+ dependencies:
+ chardet "^0.5.0"
+ iconv-lite "^0.4.22"
+ tmp "^0.0.33"
+
extglob@^0.3.1:
version "0.3.2"
resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
dependencies:
is-extglob "^1.0.0"
-extract-text-webpack-plugin@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz#5f043eaa02f9750a9258b78c0a6e0dc1408fb2f7"
+extglob@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
dependencies:
- async "^2.4.1"
- loader-utils "^1.1.0"
- schema-utils "^0.3.0"
- webpack-sources "^1.0.1"
+ array-unique "^0.3.2"
+ define-property "^1.0.0"
+ expand-brackets "^2.1.4"
+ extend-shallow "^2.0.1"
+ fragment-cache "^0.2.1"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
extsprintf@1.3.0:
version "1.3.0"
@@ -2791,8 +3068,12 @@ extsprintf@^1.2.0:
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
fast-deep-equal@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff"
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614"
+
+fast-deep-equal@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
fast-json-stable-stringify@^2.0.0:
version "2.0.0"
@@ -2825,8 +3106,8 @@ fb-watchman@^2.0.0:
bser "^2.0.0"
fbjs@^0.8.16, fbjs@^0.8.4, fbjs@^0.8.9:
- version "0.8.16"
- resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.16.tgz#5e67432f550dc41b572bf55847b8aca64e5337db"
+ version "0.8.17"
+ resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd"
dependencies:
core-js "^1.0.0"
isomorphic-fetch "^2.1.1"
@@ -2834,7 +3115,7 @@ fbjs@^0.8.16, fbjs@^0.8.4, fbjs@^0.8.9:
object-assign "^4.1.0"
promise "^7.1.1"
setimmediate "^1.0.5"
- ua-parser-js "^0.7.9"
+ ua-parser-js "^0.7.18"
figures@^2.0.0:
version "2.0.0"
@@ -2849,11 +3130,12 @@ file-entry-cache@^2.0.0:
flat-cache "^1.2.1"
object-assign "^4.0.1"
-file-loader@^0.11.2:
- version "0.11.2"
- resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-0.11.2.tgz#4ff1df28af38719a6098093b88c82c71d1794a34"
+file-loader@^1.1.11:
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.11.tgz#6fe886449b0f2a936e43cabaac0cdbfb369506f8"
dependencies:
loader-utils "^1.0.2"
+ schema-utils "^0.4.5"
filename-regex@^2.0.0:
version "2.0.1"
@@ -2866,30 +3148,39 @@ fileset@^2.0.2:
glob "^7.0.3"
minimatch "^3.0.3"
-filesize@^3.5.9:
- version "3.5.11"
- resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.5.11.tgz#1919326749433bb3cf77368bd158caabcc19e9ee"
+filesize@^3.5.11:
+ version "3.6.1"
+ resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317"
fill-range@^2.1.0:
- version "2.2.3"
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723"
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565"
dependencies:
is-number "^2.1.0"
isobject "^2.0.0"
- randomatic "^1.1.3"
+ randomatic "^3.0.0"
repeat-element "^1.1.2"
repeat-string "^1.5.2"
-finalhandler@1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5"
+fill-range@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+ to-regex-range "^2.1.0"
+
+finalhandler@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105"
dependencies:
debug "2.6.9"
- encodeurl "~1.0.1"
+ encodeurl "~1.0.2"
escape-html "~1.0.3"
on-finished "~2.3.0"
parseurl "~1.3.2"
- statuses "~1.3.1"
+ statuses "~1.4.0"
unpipe "~1.0.0"
find-cache-dir@^1.0.0:
@@ -2926,9 +3217,16 @@ flatten@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782"
-follow-redirects@^1.2.3:
- version "1.2.6"
- resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.2.6.tgz#4dcdc7e4ab3dd6765a97ff89c3b4c258117c79bf"
+flush-write-stream@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd"
+ dependencies:
+ inherits "^2.0.1"
+ readable-stream "^2.0.4"
+
+follow-redirects@^1.0.0, follow-redirects@^1.2.3:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.1.tgz#67a8f14f5a1f67f962c2c46469c79eaec0a90291"
dependencies:
debug "^3.1.0"
@@ -2940,7 +3238,7 @@ for-in@^0.1.3:
version "0.1.8"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1"
-for-in@^1.0.1:
+for-in@^1.0.1, for-in@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
@@ -2973,25 +3271,34 @@ form-data@~2.1.1:
mime-types "^2.1.12"
form-data@~2.3.1:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.1.tgz#6fb94fbd71885306d73d15cc497fe4cc4ecd44bf"
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099"
dependencies:
asynckit "^0.4.0"
- combined-stream "^1.0.5"
+ combined-stream "1.0.6"
mime-types "^2.1.12"
forwarded@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
-fraction.js@4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.0.2.tgz#0eae896626f334b1bde763371347a83b5575d7f0"
+fragment-cache@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
+ dependencies:
+ map-cache "^0.2.2"
fresh@0.5.2:
version "0.5.2"
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
+from2@^2.1.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af"
+ dependencies:
+ inherits "^2.0.1"
+ readable-stream "^2.0.0"
+
from@~0:
version "0.1.7"
resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe"
@@ -3006,16 +3313,31 @@ fs-extra@^0.30.0:
path-is-absolute "^1.0.0"
rimraf "^2.2.8"
+fs-minipass@^1.2.5:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d"
+ dependencies:
+ minipass "^2.2.1"
+
+fs-write-stream-atomic@^1.0.8:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9"
+ dependencies:
+ graceful-fs "^4.1.2"
+ iferr "^0.1.5"
+ imurmurhash "^0.1.4"
+ readable-stream "1 || 2"
+
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
-fsevents@*, fsevents@^1.0.0, fsevents@^1.1.1:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8"
+fsevents@*, fsevents@^1.2.2, fsevents@^1.2.3:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426"
dependencies:
- nan "^2.3.0"
- node-pre-gyp "^0.6.39"
+ nan "^2.9.2"
+ node-pre-gyp "^0.10.0"
fstream-ignore@^1.0.5:
version "1.0.5"
@@ -3039,11 +3361,11 @@ function-bind@^1.0.2, function-bind@^1.1.0, function-bind@^1.1.1:
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
function.prototype.name@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.0.3.tgz#0099ae5572e9dd6f03c97d023fd92bcc5e639eac"
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.0.tgz#8bd763cc0af860a859cc5d49384d74b932cd2327"
dependencies:
define-properties "^1.1.2"
- function-bind "^1.1.0"
+ function-bind "^1.1.1"
is-callable "^1.1.3"
functional-red-black-tree@^1.0.1:
@@ -3064,28 +3386,18 @@ gauge@~2.7.3:
wide-align "^1.1.0"
gaze@^1.0.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105"
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a"
dependencies:
globule "^1.0.0"
-generate-function@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74"
-
-generate-object-property@^1.1.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0"
- dependencies:
- is-property "^1.0.0"
-
generic-pool@2.4.3:
version "2.4.3"
resolved "https://registry.yarnpkg.com/generic-pool/-/generic-pool-2.4.3.tgz#780c36f69dfad05a5a045dd37be7adca11a4f6ff"
get-caller-file@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5"
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
get-stdin@^4.0.1:
version "4.0.1"
@@ -3095,6 +3407,10 @@ get-stream@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
+get-value@^2.0.3, get-value@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
+
getpass@^0.1.1:
version "0.1.7"
resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
@@ -3114,6 +3430,13 @@ glob-parent@^2.0.0:
dependencies:
is-glob "^2.0.0"
+glob-parent@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
+ dependencies:
+ is-glob "^3.1.0"
+ path-dirname "^1.0.0"
+
glob@^6.0.4:
version "6.0.4"
resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22"
@@ -3135,9 +3458,13 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1:
once "^1.3.0"
path-is-absolute "^1.0.0"
+global-modules-path@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/global-modules-path/-/global-modules-path-2.1.0.tgz#923ec524e8726bb0c1a4ed4b8e21e1ff80c88bbb"
+
globals@^11.0.1, globals@^11.1.0:
- version "11.1.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-11.1.0.tgz#632644457f5f0e3ae711807183700ebf2e4633e4"
+ version "11.7.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-11.7.0.tgz#a583faa43055b1aca771914bf68258e2fc125673"
globals@^9.18.0:
version "9.18.0"
@@ -3165,11 +3492,11 @@ globby@^6.1.0:
pinkie-promise "^2.0.0"
globule@^1.0.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.0.tgz#1dc49c6822dd9e8a2fa00ba2a295006e8664bd09"
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.1.tgz#5dffb1b191f22d20797a9369b49eab4e9839696d"
dependencies:
glob "~7.1.1"
- lodash "~4.17.4"
+ lodash "~4.17.10"
minimatch "~3.0.2"
gonzales-pe@^4.0.3:
@@ -3186,11 +3513,12 @@ growly@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
-gzip-size@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520"
+gzip-size@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-4.1.0.tgz#8ae096257eabe7d69c45be2b67c448124ffb517c"
dependencies:
duplexer "^0.1.1"
+ pify "^3.0.0"
handle-thing@^1.2.5:
version "1.2.5"
@@ -3214,15 +3542,6 @@ har-schema@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
-har-validator@~2.0.6:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d"
- dependencies:
- chalk "^1.1.1"
- commander "^2.9.0"
- is-my-json-valid "^2.12.4"
- pinkie-promise "^2.0.0"
-
har-validator@~4.2.1:
version "4.2.1"
resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a"
@@ -3247,25 +3566,50 @@ has-flag@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
-has-flag@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+
+has-symbols@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44"
has-unicode@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
-has@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28"
+has-value@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
dependencies:
- function-bind "^1.0.2"
+ get-value "^2.0.3"
+ has-values "^0.1.4"
+ isobject "^2.0.0"
-hash-base@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1"
+has-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
dependencies:
- inherits "^2.0.1"
+ get-value "^2.0.6"
+ has-values "^1.0.0"
+ isobject "^3.0.0"
+
+has-values@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
+
+has-values@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
+ dependencies:
+ is-number "^3.0.0"
+ kind-of "^4.0.0"
+
+has@^1.0.1, has@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
+ dependencies:
+ function-bind "^1.1.1"
hash-base@^3.0.0:
version "3.0.4"
@@ -3275,11 +3619,11 @@ hash-base@^3.0.0:
safe-buffer "^5.0.1"
hash.js@^1.0.0, hash.js@^1.0.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846"
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.5.tgz#e38ab4b85dfb1e0c40fe9265c0e9b54854c23812"
dependencies:
inherits "^2.0.3"
- minimalistic-assert "^1.0.0"
+ minimalistic-assert "^1.0.1"
hawk@3.1.3, hawk@~3.1.3:
version "3.1.3"
@@ -3290,15 +3634,6 @@ hawk@3.1.3, hawk@~3.1.3:
hoek "2.x.x"
sntp "1.x.x"
-hawk@~6.0.2:
- version "6.0.2"
- resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038"
- dependencies:
- boom "4.x.x"
- cryptiles "3.x.x"
- hoek "4.x.x"
- sntp "2.x.x"
-
history@^4.7.2:
version "4.7.2"
resolved "https://registry.yarnpkg.com/history/-/history-4.7.2.tgz#22b5c7f31633c5b8021c7f4a8a954ac139ee8d5b"
@@ -3321,13 +3656,9 @@ hoek@2.x.x:
version "2.16.3"
resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
-hoek@4.x.x:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d"
-
-hoist-non-react-statics@^2.2.1, hoist-non-react-statics@^2.3.0:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.3.1.tgz#343db84c6018c650778898240135a1420ee22ce0"
+hoist-non-react-statics@^2.5.0:
+ version "2.5.5"
+ resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47"
home-or-tmp@^2.0.0:
version "2.0.0"
@@ -3337,8 +3668,8 @@ home-or-tmp@^2.0.0:
os-tmpdir "^1.0.1"
hosted-git-info@^2.1.4:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c"
+ version "2.7.1"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047"
hpack.js@^2.1.6:
version "2.1.6"
@@ -3378,7 +3709,7 @@ http-deceiver@^1.2.7:
version "1.2.7"
resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
-http-errors@1.6.2, http-errors@~1.6.2:
+http-errors@1.6.2:
version "1.6.2"
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736"
dependencies:
@@ -3387,29 +3718,39 @@ http-errors@1.6.2, http-errors@~1.6.2:
setprototypeof "1.0.3"
statuses ">= 1.3.1 < 2"
+http-errors@~1.6.2:
+ version "1.6.3"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
+ dependencies:
+ depd "~1.1.2"
+ inherits "2.0.3"
+ setprototypeof "1.1.0"
+ statuses ">= 1.4.0 < 2"
+
http-link-header@^0.8.0:
version "0.8.0"
resolved "https://registry.yarnpkg.com/http-link-header/-/http-link-header-0.8.0.tgz#a22b41a0c9b1e2d8fac1bf1b697c6bd532d5f5e4"
http-parser-js@>=0.4.0:
- version "0.4.9"
- resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.9.tgz#ea1a04fb64adff0242e9974f297dd4c3cad271e1"
+ version "0.4.13"
+ resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.13.tgz#3bd6d6fde6e3172c9334c3b33b6c193d80fe1137"
-http-proxy-middleware@~0.17.4:
- version "0.17.4"
- resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz#642e8848851d66f09d4f124912846dbaeb41b833"
+http-proxy-middleware@~0.18.0:
+ version "0.18.0"
+ resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz#0987e6bb5a5606e5a69168d8f967a87f15dd8aab"
dependencies:
http-proxy "^1.16.2"
- is-glob "^3.1.0"
- lodash "^4.17.2"
- micromatch "^2.3.11"
+ is-glob "^4.0.0"
+ lodash "^4.17.5"
+ micromatch "^3.1.9"
http-proxy@^1.16.2:
- version "1.16.2"
- resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742"
+ version "1.17.0"
+ resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a"
dependencies:
- eventemitter3 "1.x.x"
- requires-port "1.x.x"
+ eventemitter3 "^3.0.0"
+ follow-redirects "^1.0.0"
+ requires-port "^1.0.0"
http-signature@~1.1.0:
version "1.1.1"
@@ -3431,10 +3772,16 @@ https-browserify@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
-iconv-lite@0.4.19, iconv-lite@^0.4.17, iconv-lite@~0.4.13:
+iconv-lite@0.4.19:
version "0.4.19"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
+iconv-lite@^0.4.17, iconv-lite@^0.4.22, iconv-lite@^0.4.4, iconv-lite@~0.4.13:
+ version "0.4.23"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63"
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3"
+
icss-replace-symbols@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded"
@@ -3445,21 +3792,43 @@ icss-utils@^2.1.0:
dependencies:
postcss "^6.0.1"
-ieee754@^1.1.4:
- version "1.1.8"
- resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4"
+ieee754@^1.1.11, ieee754@^1.1.4:
+ version "1.1.12"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b"
+
+iferr@^0.1.5:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
+
+ignore-walk@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8"
+ dependencies:
+ minimatch "^3.0.4"
ignore@^3.3.3:
- version "3.3.7"
- resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021"
+ version "3.3.10"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
immutable@^3.8.2:
version "3.8.2"
resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3"
-import-local@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/import-local/-/import-local-0.1.1.tgz#b1179572aacdc11c6a91009fb430dbcab5f668a8"
+import-cwd@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9"
+ dependencies:
+ import-from "^2.1.0"
+
+import-from@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1"
+ dependencies:
+ resolve-from "^3.0.0"
+
+import-local@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc"
dependencies:
pkg-dir "^2.0.0"
resolve-cwd "^2.0.0"
@@ -3531,13 +3900,31 @@ inquirer@^3.0.6:
strip-ansi "^4.0.0"
through "^2.3.6"
+inquirer@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.0.0.tgz#e8c20303ddc15bbfc2c12a6213710ccd9e1413d8"
+ dependencies:
+ ansi-escapes "^3.0.0"
+ chalk "^2.0.0"
+ cli-cursor "^2.1.0"
+ cli-width "^2.0.0"
+ external-editor "^3.0.0"
+ figures "^2.0.0"
+ lodash "^4.3.0"
+ mute-stream "0.0.7"
+ run-async "^2.2.0"
+ rxjs "^6.1.0"
+ string-width "^2.1.0"
+ strip-ansi "^4.0.0"
+ through "^2.3.6"
+
internal-ip@1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-1.2.0.tgz#ae9fbf93b984878785d50a8de1b356956058cf5c"
dependencies:
meow "^3.3.0"
-interpret@^1.0.0:
+interpret@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614"
@@ -3569,9 +3956,9 @@ intl@^1.2.5:
version "1.2.5"
resolved "https://registry.yarnpkg.com/intl/-/intl-1.2.5.tgz#82244a2190c4e419f8371f5aa34daa3420e2abde"
-invariant@^2.0.0, invariant@^2.1.1, invariant@^2.2.0, invariant@^2.2.1, invariant@^2.2.2:
- version "2.2.2"
- resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
+invariant@^2.0.0, invariant@^2.1.1, invariant@^2.2.0, invariant@^2.2.1, invariant@^2.2.2, invariant@^2.2.4:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
dependencies:
loose-envify "^1.0.0"
@@ -3583,25 +3970,45 @@ ip@^1.1.0, ip@^1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
-ipaddr.js@1.5.2:
- version "1.5.2"
- resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.5.2.tgz#d4b505bde9946987ccf0fc58d9010ff9607e3fa0"
+ipaddr.js@1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.6.0.tgz#e3fa357b773da619f26e95f049d055c72796f86b"
is-absolute-url@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6"
+is-accessor-descriptor@^0.1.6:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
+ dependencies:
+ kind-of "^3.0.2"
+
+is-accessor-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
+ dependencies:
+ kind-of "^6.0.0"
+
is-arrayish@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+is-arrayish@^0.3.1:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
+
is-binary-path@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
dependencies:
binary-extensions "^1.0.0"
-is-buffer@^1.0.2, is-buffer@^1.1.5:
+is-boolean-object@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.0.tgz#98f8b28030684219a95f375cfbd88ce3405dff93"
+
+is-buffer@^1.1.5:
version "1.1.6"
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
@@ -3612,19 +4019,47 @@ is-builtin-module@^1.0.0:
builtin-modules "^1.0.0"
is-callable@^1.1.1, is-callable@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2"
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
is-ci@^1.0.10:
- version "1.0.10"
- resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e"
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.1.0.tgz#247e4162e7860cebbdaf30b774d6b0ac7dcfe7a5"
dependencies:
ci-info "^1.0.0"
+is-data-descriptor@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
+ dependencies:
+ kind-of "^3.0.2"
+
+is-data-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
+ dependencies:
+ kind-of "^6.0.0"
+
is-date-object@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
+is-descriptor@^0.1.0:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
+ dependencies:
+ is-accessor-descriptor "^0.1.6"
+ is-data-descriptor "^0.1.4"
+ kind-of "^5.0.0"
+
+is-descriptor@^1.0.0, is-descriptor@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
+ dependencies:
+ is-accessor-descriptor "^1.0.0"
+ is-data-descriptor "^1.0.0"
+ kind-of "^6.0.2"
+
is-directory@^0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1"
@@ -3639,15 +4074,21 @@ is-equal-shallow@^0.1.3:
dependencies:
is-primitive "^2.0.0"
-is-extendable@^0.1.1:
+is-extendable@^0.1.0, is-extendable@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+is-extendable@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
+ dependencies:
+ is-plain-object "^2.0.4"
+
is-extglob@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
-is-extglob@^2.1.0:
+is-extglob@^2.1.0, is-extglob@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
@@ -3679,14 +4120,11 @@ is-glob@^3.1.0:
dependencies:
is-extglob "^2.1.0"
-is-my-json-valid@^2.12.4:
- version "2.16.1"
- resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz#5a846777e2c2620d1e69104e5d3a03b1f6088f11"
+is-glob@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0"
dependencies:
- generate-function "^2.0.0"
- generate-object-property "^1.1.0"
- jsonpointer "^4.0.0"
- xtend "^4.0.0"
+ is-extglob "^2.1.1"
is-nan@^1.2.1:
version "1.2.1"
@@ -3694,6 +4132,10 @@ is-nan@^1.2.1:
dependencies:
define-properties "^1.1.1"
+is-number-object@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.3.tgz#f265ab89a9f445034ef6aff15a8f00b00f551799"
+
is-number@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
@@ -3706,13 +4148,21 @@ is-number@^3.0.0:
dependencies:
kind-of "^3.0.2"
+is-number@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff"
+
+is-obj@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
+
is-path-cwd@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
is-path-in-cwd@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc"
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52"
dependencies:
is-path-inside "^1.0.0"
@@ -3726,7 +4176,7 @@ is-plain-obj@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
-is-plain-object@^2.0.1:
+is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4:
version "2.0.4"
resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
dependencies:
@@ -3744,10 +4194,6 @@ is-promise@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
-is-property@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
-
is-regex@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
@@ -3755,13 +4201,17 @@ is-regex@^1.0.4:
has "^1.0.1"
is-resolvable@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.1.tgz#acca1cd36dbe44b974b924321555a70ba03b1cf4"
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88"
is-stream@^1.0.1, is-stream@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
+is-string@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.4.tgz#cc3a9b69857d621e963725a24caeec873b826e64"
+
is-subset@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6"
@@ -3784,9 +4234,9 @@ is-utf8@^0.2.0:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
-is-windows@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.1.tgz#310db70f742d259a16a369202b51af84233310d9"
+is-windows@^1.0.0, is-windows@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
is-wsl@^1.1.0:
version "1.1.0"
@@ -3810,7 +4260,7 @@ isobject@^2.0.0:
dependencies:
isarray "1.0.0"
-isobject@^3.0.1:
+isobject@^3.0.0, isobject@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
@@ -3826,72 +4276,79 @@ isstream@~0.1.2:
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
istanbul-api@^1.1.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.2.1.tgz#0c60a0515eb11c7d65c6b50bba2c6e999acd8620"
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.3.1.tgz#4c3b05d18c0016d1022e079b98dc82c40f488954"
dependencies:
async "^2.1.4"
+ compare-versions "^3.1.0"
fileset "^2.0.2"
- istanbul-lib-coverage "^1.1.1"
- istanbul-lib-hook "^1.1.0"
- istanbul-lib-instrument "^1.9.1"
- istanbul-lib-report "^1.1.2"
- istanbul-lib-source-maps "^1.2.2"
- istanbul-reports "^1.1.3"
+ istanbul-lib-coverage "^1.2.0"
+ istanbul-lib-hook "^1.2.0"
+ istanbul-lib-instrument "^1.10.1"
+ istanbul-lib-report "^1.1.4"
+ istanbul-lib-source-maps "^1.2.4"
+ istanbul-reports "^1.3.0"
js-yaml "^3.7.0"
mkdirp "^0.5.1"
once "^1.4.0"
-istanbul-lib-coverage@^1.0.1, istanbul-lib-coverage@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz#73bfb998885299415c93d38a3e9adf784a77a9da"
+istanbul-lib-coverage@^1.0.1, istanbul-lib-coverage@^1.1.2, istanbul-lib-coverage@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz#f7d8f2e42b97e37fe796114cb0f9d68b5e3a4341"
-istanbul-lib-hook@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz#8538d970372cb3716d53e55523dd54b557a8d89b"
+istanbul-lib-hook@^1.2.0:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.1.tgz#f614ec45287b2a8fc4f07f5660af787575601805"
dependencies:
- append-transform "^0.4.0"
+ append-transform "^1.0.0"
-istanbul-lib-instrument@^1.4.2, istanbul-lib-instrument@^1.7.5, istanbul-lib-instrument@^1.9.1:
- version "1.9.1"
- resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz#250b30b3531e5d3251299fdd64b0b2c9db6b558e"
+istanbul-lib-instrument@^1.10.1, istanbul-lib-instrument@^1.4.2:
+ version "1.10.1"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz#724b4b6caceba8692d3f1f9d0727e279c401af7b"
dependencies:
babel-generator "^6.18.0"
babel-template "^6.16.0"
babel-traverse "^6.18.0"
babel-types "^6.18.0"
babylon "^6.18.0"
- istanbul-lib-coverage "^1.1.1"
+ istanbul-lib-coverage "^1.2.0"
semver "^5.3.0"
-istanbul-lib-report@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz#922be27c13b9511b979bd1587359f69798c1d425"
+istanbul-lib-report@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.4.tgz#e886cdf505c4ebbd8e099e4396a90d0a28e2acb5"
dependencies:
- istanbul-lib-coverage "^1.1.1"
+ istanbul-lib-coverage "^1.2.0"
mkdirp "^0.5.1"
path-parse "^1.0.5"
supports-color "^3.1.2"
-istanbul-lib-source-maps@^1.1.0, istanbul-lib-source-maps@^1.2.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz#750578602435f28a0c04ee6d7d9e0f2960e62c1c"
+istanbul-lib-source-maps@^1.1.0:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.3.tgz#20fb54b14e14b3fb6edb6aca3571fd2143db44e6"
dependencies:
debug "^3.1.0"
- istanbul-lib-coverage "^1.1.1"
+ istanbul-lib-coverage "^1.1.2"
mkdirp "^0.5.1"
rimraf "^2.6.1"
source-map "^0.5.3"
-istanbul-reports@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.3.tgz#3b9e1e8defb6d18b1d425da8e8b32c5a163f2d10"
+istanbul-lib-source-maps@^1.2.4:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.5.tgz#ffe6be4e7ab86d3603e4290d54990b14506fc9b1"
+ dependencies:
+ debug "^3.1.0"
+ istanbul-lib-coverage "^1.2.0"
+ mkdirp "^0.5.1"
+ rimraf "^2.6.1"
+ source-map "^0.5.3"
+
+istanbul-reports@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.3.0.tgz#2f322e81e1d9520767597dca3c20a0cce89a3554"
dependencies:
handlebars "^4.0.3"
-javascript-natural-sort@0.7.1:
- version "0.7.1"
- resolved "https://registry.yarnpkg.com/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz#f9e2303d4507f6d74355a73664d1440fb5a0ef59"
-
jest-changed-files@^21.2.0:
version "21.2.0"
resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-21.2.0.tgz#5dbeecad42f5d88b482334902ce1cba6d9798d29"
@@ -4118,8 +4575,8 @@ jest@^21.2.1:
jest-cli "^21.2.1"
js-base64@^2.1.8, js-base64@^2.1.9:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.0.tgz#9e566fee624751a1d720c966cd6226d29d4025aa"
+ version "2.4.6"
+ resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.6.tgz#1d49f618bef43630cd191f4e122447acfdb947d8"
js-string-escape@1.0.1:
version "1.0.1"
@@ -4129,9 +4586,13 @@ js-tokens@^3.0.0, js-tokens@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
-js-yaml@^3.4.3, js-yaml@^3.7.0, js-yaml@^3.9.0, js-yaml@^3.9.1:
- version "3.10.0"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc"
+"js-tokens@^3.0.0 || ^4.0.0":
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+
+js-yaml@^3.11.0, js-yaml@^3.7.0, js-yaml@^3.9.0, js-yaml@^3.9.1:
+ version "3.12.0"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1"
dependencies:
argparse "^1.0.7"
esprima "^4.0.0"
@@ -4183,18 +4644,18 @@ jsesc@~0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
-json-loader@^0.5.4:
- version "0.5.7"
- resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d"
-
-json-parse-better-errors@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz#50183cd1b2d25275de069e9e71b467ac9eab973a"
+json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
json-schema-traverse@^0.3.0:
version "0.3.1"
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340"
+json-schema-traverse@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
+
json-schema@0.2.3:
version "0.2.3"
resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
@@ -4231,10 +4692,6 @@ jsonify@~0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
-jsonpointer@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9"
-
jsprim@^1.2.2:
version "1.4.1"
resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
@@ -4244,27 +4701,21 @@ jsprim@^1.2.2:
json-schema "0.2.3"
verror "1.10.0"
-jsx-ast-utils@^2.0.0, jsx-ast-utils@^2.0.1:
+jsx-ast-utils@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz#e801b1b39985e20fffc87b40e3748080e2dcac7f"
dependencies:
array-includes "^3.0.3"
keycode@^2.1.7:
- version "2.1.9"
- resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.1.9.tgz#964a23c54e4889405b4861a5c9f0480d45141dfa"
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.2.0.tgz#3d0af56dc7b8b8e5cba8d0a97f107204eec22b04"
killable@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.0.tgz#da8b84bd47de5395878f95d64d02f2449fe05e6b"
-kind-of@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5"
- dependencies:
- is-buffer "^1.0.2"
-
-kind-of@^3.0.2, kind-of@^3.2.2:
+kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
version "3.2.2"
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
dependencies:
@@ -4276,16 +4727,20 @@ kind-of@^4.0.0:
dependencies:
is-buffer "^1.1.5"
+kind-of@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
+
+kind-of@^6.0.0, kind-of@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
+
klaw@^1.0.0:
version "1.3.1"
resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439"
optionalDependencies:
graceful-fs "^4.1.9"
-lazy-cache@^0.2.3:
- version "0.2.7"
- resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65"
-
lazy-cache@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
@@ -4348,7 +4803,7 @@ loader-utils@0.2.x:
json5 "^0.5.0"
object-assign "^4.0.1"
-loader-utils@^1.0.0, loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0:
+loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd"
dependencies:
@@ -4363,50 +4818,15 @@ locate-path@^2.0.0:
p-locate "^2.0.0"
path-exists "^3.0.0"
-lodash-es@^4.2.0, lodash-es@^4.2.1:
- version "4.17.4"
- resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.4.tgz#dcc1d7552e150a0640073ba9cb31d70f032950e7"
+lodash-es@^4.17.5, lodash-es@^4.2.1:
+ version "4.17.10"
+ resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.10.tgz#62cd7104cdf5dd87f235a837f0ede0e8e5117e05"
-lodash._baseassign@^3.0.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e"
- dependencies:
- lodash._basecopy "^3.0.0"
- lodash.keys "^3.0.0"
+lodash._reinterpolate@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
-lodash._basecopy@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36"
-
-lodash._bindcallback@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e"
-
-lodash._createassigner@^3.0.0:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz#838a5bae2fdaca63ac22dee8e19fa4e6d6970b11"
- dependencies:
- lodash._bindcallback "^3.0.0"
- lodash._isiterateecall "^3.0.0"
- lodash.restparam "^3.0.0"
-
-lodash._getnative@^3.0.0:
- version "3.9.1"
- resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5"
-
-lodash._isiterateecall@^3.0.0:
- version "3.0.9"
- resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c"
-
-lodash.assign@^3.0.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-3.2.0.tgz#3ce9f0234b4b2223e296b8fa0ac1fee8ebca64fa"
- dependencies:
- lodash._baseassign "^3.0.0"
- lodash._createassigner "^3.0.0"
- lodash.keys "^3.0.0"
-
-lodash.assign@^4.0.1, lodash.assign@^4.2.0:
+lodash.assign@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7"
@@ -4418,18 +4838,11 @@ lodash.clonedeep@^4.3.2:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
-lodash.cond@^4.3.0:
- version "4.5.2"
- resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5"
+lodash.debounce@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
-lodash.defaults@^3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-3.1.2.tgz#c7308b18dbf8bc9372d701a73493c61192bd2e2c"
- dependencies:
- lodash.assign "^3.0.0"
- lodash.restparam "^3.0.0"
-
-lodash.defaults@^4.0.0, lodash.defaults@^4.0.1:
+lodash.defaults@^4.0.1:
version "4.2.0"
resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c"
@@ -4437,85 +4850,91 @@ lodash.flattendeep@^4.4.0:
version "4.4.0"
resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2"
-lodash.isarguments@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a"
-
-lodash.isarray@^3.0.0:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55"
-
-lodash.keys@^3.0.0:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a"
- dependencies:
- lodash._getnative "^3.0.0"
- lodash.isarguments "^3.0.0"
- lodash.isarray "^3.0.0"
-
lodash.memoize@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
lodash.mergewith@^4.6.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55"
-
-lodash.restparam@^3.0.0:
- version "3.6.1"
- resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805"
-
-lodash.sortby@^4.7.0:
- version "4.7.0"
- resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
+ version "4.6.1"
+ resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz#639057e726c3afbdb3e7d42741caa8d6e4335927"
lodash.tail@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664"
+lodash.template@^4.2.4:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.4.0.tgz#e73a0385c8355591746e020b99679c690e68fba0"
+ dependencies:
+ lodash._reinterpolate "~3.0.0"
+ lodash.templatesettings "^4.0.0"
+
+lodash.templatesettings@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz#2b4d4e95ba440d915ff08bc899e4553666713316"
+ dependencies:
+ lodash._reinterpolate "~3.0.0"
+
lodash.uniq@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
-"lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@~4.17.4:
- version "4.17.4"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
+"lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.13.1, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@~4.17.10:
+ version "4.17.10"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7"
+
+log-symbols@^2.1.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a"
+ dependencies:
+ chalk "^2.0.1"
loglevel@^1.4.1:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.0.tgz#ae0caa561111498c5ba13723d6fb631d24003934"
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa"
+
+loglevelnext@^1.0.1:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/loglevelnext/-/loglevelnext-1.0.5.tgz#36fc4f5996d6640f539ff203ba819641680d75a2"
+ dependencies:
+ es6-symbol "^3.1.1"
+ object.assign "^4.1.0"
+
+long@4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28"
+
+long@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b"
longest@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
dependencies:
- js-tokens "^3.0.0"
+ js-tokens "^3.0.0 || ^4.0.0"
-loud-rejection@^1.0.0:
+loud-rejection@^1.0.0, loud-rejection@^1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
dependencies:
currently-unhandled "^0.4.1"
signal-exit "^3.0.0"
-lru-cache@^4.0.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55"
+lru-cache@^4.0.1, lru-cache@^4.1.1:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c"
dependencies:
pseudomap "^1.0.2"
yallist "^2.1.2"
-macaddress@^0.2.8:
- version "0.2.8"
- resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12"
-
make-dir@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.1.0.tgz#19b4369fe48c116f53c2af95ad102c0e39e85d51"
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
dependencies:
pify "^3.0.0"
@@ -4525,6 +4944,14 @@ makeerror@1.0.x:
dependencies:
tmpl "1.0.x"
+mamacro@^0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4"
+
+map-cache@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
+
map-obj@^1.0.0, map-obj@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
@@ -4533,6 +4960,12 @@ map-stream@~0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194"
+map-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
+ dependencies:
+ object-visit "^1.0.0"
+
mark-loader@^0.1.6:
version "0.1.6"
resolved "https://registry.yarnpkg.com/mark-loader/-/mark-loader-0.1.6.tgz#0abb477dca7421d70e20128ff6489f5cae8676d5"
@@ -4545,17 +4978,9 @@ math-expression-evaluator@^1.2.14:
version "1.2.17"
resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac"
-mathjs@^3.11.5:
- version "3.17.0"
- resolved "https://registry.yarnpkg.com/mathjs/-/mathjs-3.17.0.tgz#9569d278874546175c9d0497d7417eb88fb61503"
- dependencies:
- complex.js "2.0.4"
- decimal.js "7.2.3"
- fraction.js "4.0.2"
- javascript-natural-sort "0.7.1"
- seed-random "2.2.0"
- tiny-emitter "2.0.0"
- typed-function "0.10.6"
+math-random@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac"
md5.js@^1.3.4:
version "1.3.4"
@@ -4604,7 +5029,7 @@ merge-descriptors@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
-merge@^1.1.3:
+merge@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da"
@@ -4612,7 +5037,7 @@ methods@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
-micromatch@^2.1.5, micromatch@^2.3.11:
+micromatch@^2.3.11:
version "2.3.11"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
dependencies:
@@ -4630,6 +5055,24 @@ micromatch@^2.1.5, micromatch@^2.3.11:
parse-glob "^3.0.4"
regex-cache "^0.4.2"
+micromatch@^3.1.4, micromatch@^3.1.8, micromatch@^3.1.9:
+ version "3.1.10"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ braces "^2.3.1"
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ extglob "^2.0.4"
+ fragment-cache "^0.2.1"
+ kind-of "^6.0.2"
+ nanomatch "^1.2.9"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.2"
+
miller-rabin@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
@@ -4637,35 +5080,43 @@ miller-rabin@^4.0.0:
bn.js "^4.0.0"
brorand "^1.0.1"
-"mime-db@>= 1.30.0 < 2":
- version "1.32.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.32.0.tgz#485b3848b01a3cda5f968b4882c0771e58e09414"
+"mime-db@>= 1.34.0 < 2":
+ version "1.34.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.34.0.tgz#452d0ecff5c30346a6dc1e64b1eaee0d3719ff9a"
-mime-db@~1.30.0:
- version "1.30.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01"
+mime-db@~1.33.0:
+ version "1.33.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db"
-mime-types@^2.1.12, mime-types@~2.1.15, mime-types@~2.1.16, mime-types@~2.1.17, mime-types@~2.1.7:
- version "2.1.17"
- resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a"
+mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.7:
+ version "2.1.18"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8"
dependencies:
- mime-db "~1.30.0"
+ mime-db "~1.33.0"
mime@1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
-mime@^1.5.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
+mime@^2.1.0:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369"
mimic-fn@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18"
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
-minimalistic-assert@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3"
+mini-css-extract-plugin@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.1.tgz#d2bcf77bb2596b8e4bd9257e43d3f9164c2e86cb"
+ dependencies:
+ "@webpack-contrib/schema-utils" "^1.0.0-beta.0"
+ loader-utils "^1.1.0"
+ webpack-sources "^1.1.0"
+
+minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
version "1.0.1"
@@ -4693,6 +5144,41 @@ minimist@~0.0.1:
version "0.0.10"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
+minipass@^2.2.1, minipass@^2.3.3:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.3.tgz#a7dcc8b7b833f5d368759cce544dccb55f50f233"
+ dependencies:
+ safe-buffer "^5.1.2"
+ yallist "^3.0.0"
+
+minizlib@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb"
+ dependencies:
+ minipass "^2.2.1"
+
+mississippi@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f"
+ dependencies:
+ concat-stream "^1.5.0"
+ duplexify "^3.4.2"
+ end-of-stream "^1.1.0"
+ flush-write-stream "^1.0.0"
+ from2 "^2.1.0"
+ parallel-transform "^1.1.0"
+ pump "^2.0.1"
+ pumpify "^1.3.3"
+ stream-each "^1.1.0"
+ through2 "^2.0.0"
+
+mixin-deep@^1.2.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe"
+ dependencies:
+ for-in "^1.0.2"
+ is-extendable "^1.0.1"
+
mixin-object@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e"
@@ -4707,8 +5193,19 @@ mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkd
minimist "0.0.8"
mousetrap@^1.5.2:
- version "1.6.1"
- resolved "https://registry.yarnpkg.com/mousetrap/-/mousetrap-1.6.1.tgz#2a085f5c751294c75e7e81f6ec2545b29cbf42d9"
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/mousetrap/-/mousetrap-1.6.2.tgz#caadd9cf886db0986fb2fee59a82f6bd37527587"
+
+move-concurrently@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
+ dependencies:
+ aproba "^1.1.1"
+ copy-concurrently "^1.0.0"
+ fs-write-stream-atomic "^1.0.8"
+ mkdirp "^0.5.1"
+ rimraf "^2.5.4"
+ run-queue "^1.0.3"
ms@2.0.0:
version "2.0.0"
@@ -4719,36 +5216,73 @@ multicast-dns-service-types@^1.1.0:
resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901"
multicast-dns@^6.0.1:
- version "6.2.1"
- resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.1.tgz#c5035defa9219d30640558a49298067352098060"
+ version "6.2.3"
+ resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229"
dependencies:
- dns-packet "^1.0.1"
- thunky "^0.1.0"
+ dns-packet "^1.3.1"
+ thunky "^1.0.2"
mute-stream@0.0.7:
version "0.0.7"
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
-nan@^2.0.0, nan@^2.3.0, nan@^2.3.2:
- version "2.8.0"
- resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a"
+nan@^2.0.0, nan@^2.10.0, nan@^2.9.2:
+ version "2.10.0"
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f"
+
+nanomatch@^1.2.9:
+ version "1.2.13"
+ resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ fragment-cache "^0.2.1"
+ is-windows "^1.0.2"
+ kind-of "^6.0.2"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
natural-compare@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
nearley@^2.7.10:
- version "2.11.0"
- resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.11.0.tgz#5e626c79a6cd2f6ab9e7e5d5805e7668967757ae"
+ version "2.13.0"
+ resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.13.0.tgz#6e7b0f4e68bfc3e74c99eaef2eda39e513143439"
dependencies:
nomnom "~1.6.2"
railroad-diagrams "^1.0.0"
- randexp "^0.4.2"
+ randexp "0.4.6"
+ semver "^5.4.1"
+
+needle@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.1.tgz#b5e325bd3aae8c2678902fa296f729455d1d3a7d"
+ dependencies:
+ debug "^2.1.2"
+ iconv-lite "^0.4.4"
+ sax "^1.2.4"
negotiator@0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
+neo-async@^2.5.0:
+ version "2.5.1"
+ resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.1.tgz#acb909e327b1e87ec9ef15f41b8a269512ad41ee"
+
+next-tick@1:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c"
+
+nice-try@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.4.tgz#d93962f6c52f2c1558c0fbda6d512819f1efe1c4"
+
node-fetch@^1.0.1:
version "1.7.3"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"
@@ -4756,23 +5290,22 @@ node-fetch@^1.0.1:
encoding "^0.1.11"
is-stream "^1.0.1"
-node-forge@0.6.33:
- version "0.6.33"
- resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.6.33.tgz#463811879f573d45155ad6a9f43dc296e8e85ebc"
+node-forge@0.7.5:
+ version "0.7.5"
+ resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df"
node-gyp@^3.3.1:
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.6.2.tgz#9bfbe54562286284838e750eac05295853fa1c60"
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.7.0.tgz#789478e8f6c45e277aa014f3e28f958f286f9203"
dependencies:
fstream "^1.0.0"
glob "^7.0.3"
graceful-fs "^4.1.2"
- minimatch "^3.0.2"
mkdirp "^0.5.0"
nopt "2 || 3"
npmlog "0 || 1 || 2 || 3 || 4"
osenv "0"
- request "2"
+ request ">=2.9.0 <2.82.0"
rimraf "2"
semver "~5.3.0"
tar "^2.0.0"
@@ -4811,15 +5344,30 @@ node-libs-browser@^2.0.0:
vm-browserify "0.0.4"
node-notifier@^5.0.2:
- version "5.1.2"
- resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.1.2.tgz#2fa9e12605fa10009d44549d6fcd8a63dde0e4ff"
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.2.1.tgz#fa313dd08f5517db0e2502e5758d664ac69f9dea"
dependencies:
growly "^1.3.0"
- semver "^5.3.0"
- shellwords "^0.1.0"
- which "^1.2.12"
+ semver "^5.4.1"
+ shellwords "^0.1.1"
+ which "^1.3.0"
-node-pre-gyp@^0.6.39, node-pre-gyp@^0.6.4:
+node-pre-gyp@^0.10.0:
+ version "0.10.3"
+ resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc"
+ dependencies:
+ detect-libc "^1.0.2"
+ mkdirp "^0.5.1"
+ needle "^2.2.1"
+ nopt "^4.0.1"
+ npm-packlist "^1.1.6"
+ npmlog "^4.0.2"
+ rc "^1.2.7"
+ rimraf "^2.6.1"
+ semver "^5.3.0"
+ tar "^4"
+
+node-pre-gyp@^0.6.4:
version "0.6.39"
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649"
dependencies:
@@ -4835,9 +5383,9 @@ node-pre-gyp@^0.6.39, node-pre-gyp@^0.6.4:
tar "^2.2.1"
tar-pack "^3.4.0"
-node-sass@^4.7.2:
- version "4.7.2"
- resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.7.2.tgz#9366778ba1469eb01438a9e8592f4262bcb6794e"
+node-sass@^4.9.2:
+ version "4.9.2"
+ resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.9.2.tgz#5e63fe6bd0f2ae3ac9d6c14ede8620e2b8bdb437"
dependencies:
async-foreach "^0.1.3"
chalk "^1.1.1"
@@ -4851,10 +5399,10 @@ node-sass@^4.7.2:
lodash.mergewith "^4.6.0"
meow "^3.7.0"
mkdirp "^0.5.1"
- nan "^2.3.2"
+ nan "^2.10.0"
node-gyp "^3.3.1"
npmlog "^4.0.0"
- request "~2.79.0"
+ request "2.87.0"
sass-graph "^2.2.4"
stdout-stream "^1.4.0"
"true-case-path" "^1.0.2"
@@ -4897,7 +5445,7 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
semver "2 || 3 || 4 || 5"
validate-npm-package-license "^3.0.1"
-normalize-path@^2.0.0, normalize-path@^2.0.1:
+normalize-path@^2.0.1, normalize-path@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
dependencies:
@@ -4916,13 +5464,24 @@ normalize-url@^1.4.0:
query-string "^4.1.0"
sort-keys "^1.0.0"
+npm-bundled@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.3.tgz#7e71703d973af3370a9591bafe3a63aca0be2308"
+
+npm-packlist@^1.1.6:
+ version "1.1.10"
+ resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.10.tgz#1039db9e985727e464df066f4cf0ab6ef85c398a"
+ dependencies:
+ ignore-walk "^3.0.1"
+ npm-bundled "^1.0.1"
+
npm-run-all@^4.1.2:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.2.tgz#90d62d078792d20669139e718621186656cea056"
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.3.tgz#49f15b55a66bb4101664ce270cb18e7103f8f185"
dependencies:
ansi-styles "^3.2.0"
chalk "^2.1.0"
- cross-spawn "^5.1.0"
+ cross-spawn "^6.0.4"
memorystream "^0.3.1"
minimatch "^3.0.4"
ps-tree "^1.1.0"
@@ -4960,8 +5519,8 @@ number-is-nan@^1.0.0:
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
"nwmatcher@>= 1.3.9 < 2.0.0":
- version "1.4.3"
- resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.3.tgz#64348e3b3d80f035b40ac11563d278f8b72db89c"
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.4.tgz#2285631f34a95f0d0395cd900c96ed39b58f346e"
oauth-sign@~0.8.1, oauth-sign@~0.8.2:
version "0.8.2"
@@ -4975,29 +5534,44 @@ object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+object-copy@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
+ dependencies:
+ copy-descriptor "^0.1.0"
+ define-property "^0.2.5"
+ kind-of "^3.0.3"
+
object-fit-images@^3.2.3:
version "3.2.3"
resolved "https://registry.yarnpkg.com/object-fit-images/-/object-fit-images-3.2.3.tgz#4089f6d0070a3b5563d3c1ab6f1b28d61331f0ac"
+object-inspect@^1.5.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b"
+
object-is@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6"
-object-keys@^1.0.10, object-keys@^1.0.8:
- version "1.0.11"
- resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"
+object-keys@^1.0.11, object-keys@^1.0.8:
+ version "1.0.12"
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2"
-object-path@^0.9.2:
- version "0.9.2"
- resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.9.2.tgz#0fd9a74fc5fad1ae3968b586bda5c632bd6c05a5"
+object-visit@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
+ dependencies:
+ isobject "^3.0.0"
-object.assign@^4.0.4:
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.0.4.tgz#b1c9cc044ef1b9fe63606fc141abbb32e14730cc"
+object.assign@^4.0.4, object.assign@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da"
dependencies:
define-properties "^1.1.2"
- function-bind "^1.1.0"
- object-keys "^1.0.10"
+ function-bind "^1.1.1"
+ has-symbols "^1.0.0"
+ object-keys "^1.0.11"
object.entries@^1.0.4:
version "1.0.4"
@@ -5015,6 +5589,12 @@ object.omit@^2.0.0:
for-own "^0.1.4"
is-extendable "^0.1.1"
+object.pick@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
+ dependencies:
+ isobject "^3.0.1"
+
object.values@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.0.4.tgz#e524da09b4f66ff05df457546ec72ac99f13069a"
@@ -5025,14 +5605,14 @@ object.values@^1.0.4:
has "^1.0.1"
obuf@^1.0.0, obuf@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e"
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
-offline-plugin@^4.8.3:
- version "4.8.4"
- resolved "https://registry.yarnpkg.com/offline-plugin/-/offline-plugin-4.8.4.tgz#1084c59f6606bded5ee5a6bf6208e2b9f5bdd339"
+offline-plugin@^5.0.5:
+ version "5.0.5"
+ resolved "https://registry.yarnpkg.com/offline-plugin/-/offline-plugin-5.0.5.tgz#e9b16c569d19899af9c923f5bc260705578ffeba"
dependencies:
- deep-extend "^0.4.0"
+ deep-extend "^0.5.1"
ejs "^2.3.4"
loader-utils "0.2.x"
minimatch "^3.0.3"
@@ -5048,7 +5628,7 @@ on-headers@~1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7"
-once@^1.3.0, once@^1.3.3, once@^1.4.0:
+once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
dependencies:
@@ -5065,8 +5645,8 @@ opener@^1.4.3:
resolved "https://registry.yarnpkg.com/opener/-/opener-1.4.3.tgz#5c6da2c5d7e5831e8ffa3964950f8d6674ac90b8"
opn@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/opn/-/opn-5.1.0.tgz#72ce2306a17dbea58ff1041853352b4a8fc77519"
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c"
dependencies:
is-wsl "^1.1.0"
@@ -5089,16 +5669,16 @@ optionator@^0.8.1, optionator@^0.8.2:
wordwrap "~1.0.0"
original@>=0.0.5:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b"
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/original/-/original-1.0.1.tgz#b0a53ff42ba997a8c9cd1fb5daaeb42b9d693190"
dependencies:
- url-parse "1.0.x"
+ url-parse "~1.4.0"
os-browserify@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
-os-homedir@^1.0.0, os-homedir@^1.0.1:
+os-homedir@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
@@ -5121,8 +5701,8 @@ os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2:
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
osenv@0, osenv@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644"
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
dependencies:
os-homedir "^1.0.0"
os-tmpdir "^1.0.0"
@@ -5136,8 +5716,10 @@ p-finally@^1.0.0:
resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
p-limit@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc"
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
+ dependencies:
+ p-try "^1.0.0"
p-locate@^2.0.0:
version "2.0.0"
@@ -5149,6 +5731,10 @@ p-map@^1.1.1:
version "1.2.0"
resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b"
+p-try@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
+
packet-reader@0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/packet-reader/-/packet-reader-0.3.1.tgz#cd62e60af8d7fea8a705ec4ff990871c46871f27"
@@ -5157,9 +5743,17 @@ pako@~1.0.5:
version "1.0.6"
resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258"
+parallel-transform@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06"
+ dependencies:
+ cyclist "~0.2.2"
+ inherits "^2.0.3"
+ readable-stream "^2.1.5"
+
parse-asn1@^5.0.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712"
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.1.tgz#f6bf293818332bd0dab54efb16087724745e6ca8"
dependencies:
asn1.js "^4.0.0"
browserify-aes "^1.0.0"
@@ -5196,12 +5790,6 @@ parse-json@^2.2.0:
dependencies:
error-ex "^1.2.0"
-parse-json@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-3.0.0.tgz#fa6f47b18e23826ead32f263e744d0e1e847fb13"
- dependencies:
- error-ex "^1.3.1"
-
parse-json@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
@@ -5223,13 +5811,21 @@ parseurl@~1.3.2:
version "1.3.2"
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
+pascalcase@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
+
path-browserify@0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a"
-path-complete-extname@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/path-complete-extname/-/path-complete-extname-0.1.0.tgz#c454702669f31452f8193aa6168915fa31692f4a"
+path-complete-extname@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/path-complete-extname/-/path-complete-extname-1.0.0.tgz#f889985dc91000c815515c0bfed06c5acda0752b"
+
+path-dirname@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
path-exists@^2.0.0:
version "2.1.0"
@@ -5249,7 +5845,7 @@ path-is-inside@^1.0.1, path-is-inside@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
-path-key@^2.0.0:
+path-key@^2.0.0, path-key@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
@@ -5294,8 +5890,8 @@ pause-stream@0.0.11:
through "~2.3"
pbkdf2@^3.0.3:
- version "3.0.14"
- resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz#a35e13c64799b06ce15320f459c230e68e73bade"
+ version "3.0.16"
+ resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.16.tgz#7404208ec6b01b62d85bf83853a8064f8d9c2a5c"
dependencies:
create-hash "^1.1.2"
create-hmac "^1.1.4"
@@ -5397,11 +5993,24 @@ portfinder@^1.0.9:
debug "^2.2.0"
mkdirp "0.5.x"
-postcss-advanced-variables@1.2.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/postcss-advanced-variables/-/postcss-advanced-variables-1.2.2.tgz#90a6213262e66a050a368b4a9c5d4778d72dbd74"
+posix-character-classes@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
+
+postcss-advanced-variables@^2.3.3:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/postcss-advanced-variables/-/postcss-advanced-variables-2.3.3.tgz#80ac5b05988d02f63352974491e319910f33337e"
dependencies:
- postcss "^5.0.10"
+ "@csstools/sass-import-resolve" "^1"
+ postcss "^6"
+
+postcss-apply@^0.9.0:
+ version "0.9.0"
+ resolved "https://registry.yarnpkg.com/postcss-apply/-/postcss-apply-0.9.0.tgz#a152e6e34a6c55d0895751929319c262c5d8c289"
+ dependencies:
+ babel-runtime "^6.23.0"
+ balanced-match "^0.4.2"
+ postcss "^6.0.0"
postcss-atroot@^0.1.3:
version "0.1.3"
@@ -5409,6 +6018,13 @@ postcss-atroot@^0.1.3:
dependencies:
postcss "^5.0.5"
+postcss-attribute-case-insensitive@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-2.0.0.tgz#94dc422c8f90997f16bd33a3654bbbec084963b4"
+ dependencies:
+ postcss "^6.0.0"
+ postcss-selector-parser "^2.2.3"
+
postcss-calc@^5.2.0:
version "5.3.1"
resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e"
@@ -5417,13 +6033,34 @@ postcss-calc@^5.2.0:
postcss-message-helpers "^2.0.0"
reduce-css-calc "^1.2.6"
-postcss-color-function@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-color-function/-/postcss-color-function-4.0.1.tgz#402b3f2cebc3f6947e618fb6be3654fbecef6444"
+postcss-color-hex-alpha@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-3.0.0.tgz#1e53e6c8acb237955e8fd08b7ecdb1b8b8309f95"
dependencies:
- css-color-function "~1.3.3"
+ color "^1.0.3"
postcss "^6.0.1"
postcss-message-helpers "^2.0.0"
+
+postcss-color-mod-function@^2.4.2:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-2.4.2.tgz#bdf408f152bc3201517a4c38b7eb5cd2996114fb"
+ dependencies:
+ "@csstools/convert-colors" "^1.4.0"
+ postcss "^6.0.19"
+ postcss-values-parser "^1.3.2"
+
+postcss-color-rebeccapurple@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-3.1.0.tgz#ce1269ecc2d0d8bf92aab44bd884e633124c33ec"
+ dependencies:
+ postcss "^6.0.22"
+ postcss-values-parser "^1.5.0"
+
+postcss-color-rgb@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-color-rgb/-/postcss-color-rgb-2.0.0.tgz#14539c8a7131494b482e0dd1cc265ff6514b5263"
+ dependencies:
+ postcss "^6.0.1"
postcss-value-parser "^3.3.0"
postcss-colormin@^2.1.8:
@@ -5447,12 +6084,12 @@ postcss-custom-media@^6.0.0:
dependencies:
postcss "^6.0.1"
-postcss-custom-properties@^6.1.0:
- version "6.2.0"
- resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-6.2.0.tgz#5d929a7f06e9b84e0f11334194c0ba9a30acfbe9"
+postcss-custom-properties@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-7.0.0.tgz#24dc4fbe6d6ed550ea4fd3b11204660e9ffa3b33"
dependencies:
balanced-match "^1.0.0"
- postcss "^6.0.13"
+ postcss "^6.0.18"
postcss-custom-selectors@^4.0.1:
version "4.0.1"
@@ -5461,6 +6098,13 @@ postcss-custom-selectors@^4.0.1:
postcss "^6.0.1"
postcss-selector-matches "^3.0.0"
+postcss-dir-pseudo-class@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-3.0.0.tgz#31a18af3b9b1b33be635599b998a9829896c3fed"
+ dependencies:
+ postcss "^6.0.20"
+ postcss-selector-parser "^3.1.1"
+
postcss-discard-comments@^2.0.4:
version "2.0.4"
resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d"
@@ -5492,67 +6136,65 @@ postcss-discard-unused@^2.2.1:
postcss "^5.0.14"
uniqs "^2.0.0"
-postcss-extend@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/postcss-extend/-/postcss-extend-1.0.5.tgz#5ea98bf787ba3cacf4df4609743f80a833b1d0e7"
+postcss-extend-rule@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-extend-rule/-/postcss-extend-rule-1.1.0.tgz#11e4d590ffe4253b853ef1fc03be7167da607d38"
dependencies:
- postcss "^5.0.4"
+ postcss "^6.0.11"
+ postcss-nesting "^4.2.1"
postcss-filter-plugins@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c"
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz#82245fdf82337041645e477114d8e593aa18b8ec"
dependencies:
postcss "^5.0.4"
- uniqid "^4.0.0"
-postcss-import@^10.0.0:
- version "10.0.0"
- resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-10.0.0.tgz#4c85c97b099136cc5ea0240dc1dfdbfde4e2ebbe"
+postcss-focus-visible@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-2.0.0.tgz#a6b9881f6710f6251790e2f151c94b161e23eeb6"
+ dependencies:
+ postcss "^6.0"
+
+postcss-font-family-system-ui@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-font-family-system-ui/-/postcss-font-family-system-ui-3.0.0.tgz#675fe7a9e029669f05f8dba2e44c2225ede80623"
+ dependencies:
+ postcss "^6.0"
+
+postcss-font-variant@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-3.0.0.tgz#08ccc88f6050ba82ed8ef2cc76c0c6a6b41f183e"
dependencies:
- object-assign "^4.0.1"
postcss "^6.0.1"
- postcss-value-parser "^3.2.3"
- read-cache "^1.0.0"
- resolve "^1.1.7"
-postcss-js@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-1.0.1.tgz#ffaf29226e399ea74b5dce02cab1729d7addbc7b"
+postcss-initial@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-2.0.0.tgz#72715f7336e0bb79351d99ee65c4a253a8441ba4"
dependencies:
- camelcase-css "^1.0.1"
- postcss "^6.0.11"
+ lodash.template "^4.2.4"
+ postcss "^6.0.1"
-postcss-load-config@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-1.2.0.tgz#539e9afc9ddc8620121ebf9d8c3673e0ce50d28a"
+postcss-load-config@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.0.0.tgz#f1312ddbf5912cd747177083c5ef7a19d62ee484"
dependencies:
- cosmiconfig "^2.1.0"
- object-assign "^4.1.0"
- postcss-load-options "^1.2.0"
- postcss-load-plugins "^2.3.0"
+ cosmiconfig "^4.0.0"
+ import-cwd "^2.0.0"
-postcss-load-options@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/postcss-load-options/-/postcss-load-options-1.2.0.tgz#b098b1559ddac2df04bc0bb375f99a5cfe2b6d8c"
- dependencies:
- cosmiconfig "^2.1.0"
- object-assign "^4.1.0"
-
-postcss-load-plugins@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz#745768116599aca2f009fad426b00175049d8d92"
- dependencies:
- cosmiconfig "^2.1.1"
- object-assign "^4.1.0"
-
-postcss-loader@^2.0.9:
- version "2.0.9"
- resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.0.9.tgz#001fdf7bfeeb159405ee61d1bb8e59b528dbd309"
+postcss-loader@^2.1.6:
+ version "2.1.6"
+ resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.1.6.tgz#1d7dd7b17c6ba234b9bed5af13e0bea40a42d740"
dependencies:
loader-utils "^1.1.0"
postcss "^6.0.0"
- postcss-load-config "^1.2.0"
- schema-utils "^0.3.0"
+ postcss-load-config "^2.0.0"
+ schema-utils "^0.4.0"
+
+postcss-logical@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-1.1.1.tgz#bcabf0638d8aa747743b32bc52f9d90d4a3313d2"
+ dependencies:
+ postcss "^6.0.20"
postcss-media-minmax@^3.0.0:
version "3.0.0"
@@ -5621,51 +6263,41 @@ postcss-minify-selectors@^2.0.4:
postcss "^5.0.14"
postcss-selector-parser "^2.0.0"
-postcss-mixins@^6.0.1:
- version "6.2.0"
- resolved "https://registry.yarnpkg.com/postcss-mixins/-/postcss-mixins-6.2.0.tgz#fa9d2c2166b2ae7745956c727ab9dd2de4b96a40"
- dependencies:
- globby "^6.1.0"
- postcss "^6.0.13"
- postcss-js "^1.0.1"
- postcss-simple-vars "^4.1.0"
- sugarss "^1.0.0"
-
-postcss-modules-extract-imports@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz#b614c9720be6816eaee35fb3a5faa1dba6a05ddb"
+postcss-modules-extract-imports@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz#66140ecece38ef06bf0d3e355d69bf59d141ea85"
dependencies:
postcss "^6.0.1"
-postcss-modules-local-by-default@^1.0.1:
+postcss-modules-local-by-default@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069"
dependencies:
css-selector-tokenizer "^0.7.0"
postcss "^6.0.1"
-postcss-modules-scope@^1.0.0:
+postcss-modules-scope@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90"
dependencies:
css-selector-tokenizer "^0.7.0"
postcss "^6.0.1"
-postcss-modules-values@^1.1.0:
+postcss-modules-values@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20"
dependencies:
icss-replace-symbols "^1.1.0"
postcss "^6.0.1"
-postcss-nested@^2.0.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-2.1.2.tgz#04057281f9631fef684857fb0119bae04ede03c6"
+postcss-nested@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-3.0.0.tgz#cde40bd07a078565f3df72e2dc2665871c724852"
dependencies:
- postcss "^6.0.9"
- postcss-selector-parser "^2.2.3"
+ postcss "^6.0.14"
+ postcss-selector-parser "^3.1.1"
-postcss-nesting@^4.0.1:
+postcss-nesting@^4.2.1:
version "4.2.1"
resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-4.2.1.tgz#0483bce338b3f0828ced90ff530b29b98b00300d"
dependencies:
@@ -5701,20 +6333,58 @@ postcss-ordered-values@^2.1.0:
postcss "^5.0.4"
postcss-value-parser "^3.0.1"
-postcss-partial-import@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/postcss-partial-import/-/postcss-partial-import-4.1.0.tgz#f6c3e78e7bbeda4d9dab96d360367b90b353f9a4"
+postcss-page-break@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-1.0.0.tgz#09a63b6e03db092d38569b33dcba42a343ace60b"
dependencies:
- glob "^7.1.1"
- postcss-import "^10.0.0"
+ postcss "^6.0.16"
-postcss-property-lookup@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/postcss-property-lookup/-/postcss-property-lookup-1.2.1.tgz#30450a1361b7aae758bbedd5201fbe057bb8270b"
+postcss-preset-env@^3.2.2:
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-3.5.0.tgz#b3aae2c65e5b3fa61d735b70392fa758a665b785"
+ dependencies:
+ "@csstools/postcss-image-set-function" "^1.0.0"
+ browserslist "^3.2.4"
+ caniuse-lite "^1.0.30000823"
+ cssdb "^1.6.0"
+ postcss "^6.0.21"
+ postcss-apply "^0.9.0"
+ postcss-attribute-case-insensitive "^2.0.0"
+ postcss-color-hex-alpha "^3.0.0"
+ postcss-color-mod-function "^2.4.2"
+ postcss-color-rebeccapurple "^3.0.0"
+ postcss-color-rgb "^2.0.0"
+ postcss-custom-media "^6.0.0"
+ postcss-custom-properties "^7.0.0"
+ postcss-custom-selectors "^4.0.1"
+ postcss-dir-pseudo-class "^3.0.0"
+ postcss-focus-visible "^2.0.0"
+ postcss-font-family-system-ui "^3.0.0"
+ postcss-font-variant "^3.0.0"
+ postcss-initial "^2.0.0"
+ postcss-logical "^1.1.1"
+ postcss-media-minmax "^3.0.0"
+ postcss-nesting "^4.2.1"
+ postcss-page-break "^1.0.0"
+ postcss-pseudo-class-any-link "^4.0.0"
+ postcss-replace-overflow-wrap "^2.0.0"
+ postcss-selector-matches "^3.0.1"
+ postcss-selector-not "^3.0.1"
+
+postcss-property-lookup@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-property-lookup/-/postcss-property-lookup-2.0.0.tgz#c995d1df42a75420f2aea834c2cbe296b2c15922"
dependencies:
object-assign "^4.0.1"
- postcss "^5.0.4"
- tcomb "^2.5.1"
+ postcss "^6.0.6"
+ tcomb "^3.2.21"
+
+postcss-pseudo-class-any-link@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-4.0.0.tgz#9152a0613d3450720513e8892854bae42d0ee68e"
+ dependencies:
+ postcss "^6.0.1"
+ postcss-selector-parser "^2.2.3"
postcss-reduce-idents@^2.2.2:
version "2.4.0"
@@ -5737,19 +6407,24 @@ postcss-reduce-transforms@^1.0.3:
postcss "^5.0.8"
postcss-value-parser "^3.0.1"
-postcss-sass@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/postcss-sass/-/postcss-sass-0.1.0.tgz#0d2a655b5d241ec8f419bb3da38de5ca11746ddb"
+postcss-replace-overflow-wrap@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-2.0.0.tgz#794db6faa54f8db100854392a93af45768b4e25b"
+ dependencies:
+ postcss "^6.0.1"
+
+postcss-sass@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/postcss-sass/-/postcss-sass-0.2.0.tgz#e55516441e9526ba4b380a730d3a02e9eaa78c7a"
dependencies:
gonzales-pe "^4.0.3"
- mathjs "^3.11.5"
- postcss "^5.2.6"
+ postcss "^6.0.6"
postcss-scss@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-1.0.2.tgz#ff45cf3354b879ee89a4eb68680f46ac9bb14f94"
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-1.0.6.tgz#ab903f3bb20161bc177896462293a53d4bff5f7a"
dependencies:
- postcss "^6.0.3"
+ postcss "^6.0.23"
postcss-selector-matches@^3.0.0, postcss-selector-matches@^3.0.1:
version "3.0.1"
@@ -5773,27 +6448,29 @@ postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2, postcss-selector
indexes-of "^1.0.1"
uniq "^1.0.1"
-postcss-simple-vars@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/postcss-simple-vars/-/postcss-simple-vars-4.1.0.tgz#043248cfef8d3f51b3486a28c09f8375dbf1b2f9"
+postcss-selector-parser@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865"
dependencies:
- postcss "^6.0.9"
+ dot-prop "^4.1.1"
+ indexes-of "^1.0.1"
+ uniq "^1.0.1"
-postcss-smart-import@^0.7.5:
- version "0.7.5"
- resolved "https://registry.yarnpkg.com/postcss-smart-import/-/postcss-smart-import-0.7.5.tgz#df9a9c6dd60d916e5e0670d1c57d03af5d3dcc31"
+postcss-smart-import@^0.7.6:
+ version "0.7.6"
+ resolved "https://registry.yarnpkg.com/postcss-smart-import/-/postcss-smart-import-0.7.6.tgz#259deb84aa28f138458218ecc0e9a84c61ada6a4"
dependencies:
- babel-runtime "^6.23.0"
+ babel-runtime "^6.26.0"
lodash "^4.17.4"
object-assign "^4.1.1"
- postcss "^6.0.6"
- postcss-sass "^0.1.0"
+ postcss "^6.0.14"
+ postcss-sass "^0.2.0"
postcss-scss "^1.0.2"
postcss-value-parser "^3.3.0"
promise-each "^2.2.0"
read-cache "^1.0.0"
- resolve "^1.3.3"
- sugarss "^1.0.0"
+ resolve "^1.5.0"
+ sugarss "^1.0.1"
postcss-svgo@^2.1.1:
version "2.1.6"
@@ -5816,6 +6493,14 @@ postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^
version "3.3.0"
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15"
+postcss-values-parser@^1.3.2, postcss-values-parser@^1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-1.5.0.tgz#5d9fa63e2bcb0179ce48f3235303765eb89f3047"
+ dependencies:
+ flatten "^1.0.2"
+ indexes-of "^1.0.1"
+ uniq "^1.0.1"
+
postcss-zindex@^2.0.1:
version "2.2.0"
resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22"
@@ -5824,7 +6509,7 @@ postcss-zindex@^2.0.1:
postcss "^5.0.4"
uniqs "^2.0.0"
-postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.16, postcss@^5.2.6:
+postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.16:
version "5.2.18"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5"
dependencies:
@@ -5833,13 +6518,13 @@ postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0
source-map "^0.5.6"
supports-color "^3.2.3"
-postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.11, postcss@^6.0.13, postcss@^6.0.14, postcss@^6.0.3, postcss@^6.0.6, postcss@^6.0.9:
- version "6.0.14"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.14.tgz#5534c72114739e75d0afcf017db853099f562885"
+postcss@^6, postcss@^6.0, postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.11, postcss@^6.0.14, postcss@^6.0.16, postcss@^6.0.18, postcss@^6.0.19, postcss@^6.0.20, postcss@^6.0.21, postcss@^6.0.22, postcss@^6.0.23, postcss@^6.0.6:
+ version "6.0.23"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324"
dependencies:
- chalk "^2.3.0"
+ chalk "^2.4.1"
source-map "^0.6.1"
- supports-color "^4.4.0"
+ supports-color "^5.4.0"
postgres-array@~1.0.0:
version "1.0.2"
@@ -5854,8 +6539,8 @@ postgres-date@~1.0.0:
resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.3.tgz#e2d89702efdb258ff9d9cee0fe91bd06975257a8"
postgres-interval@^1.1.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.1.1.tgz#acdb0f897b4b1c6e496d9d4e0a853e1c428f06f0"
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.1.2.tgz#bf71ff902635f21cb241a013fc421d81d1db15a9"
dependencies:
xtend "^4.0.0"
@@ -5863,26 +6548,17 @@ precond@0.2:
version "0.2.3"
resolved "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz#aa9591bcaa24923f1e0f4849d240f47efc1075ac"
-precss@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/precss/-/precss-2.0.0.tgz#7f567e3318e06d44c8fdbf9e58452e8358bf4b71"
+precss@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/precss/-/precss-3.1.2.tgz#c82c0aa4ca5fe1e879799d697db0fac6d15d23bc"
dependencies:
- postcss "^6.0.3"
- postcss-advanced-variables "1.2.2"
+ postcss "^6.0.19"
+ postcss-advanced-variables "^2.3.3"
postcss-atroot "^0.1.3"
- postcss-color-function "^4.0.0"
- postcss-custom-media "^6.0.0"
- postcss-custom-properties "^6.1.0"
- postcss-custom-selectors "^4.0.1"
- postcss-extend "^1.0.5"
- postcss-media-minmax "^3.0.0"
- postcss-mixins "^6.0.1"
- postcss-nested "^2.0.2"
- postcss-nesting "^4.0.1"
- postcss-partial-import "^4.1.0"
- postcss-property-lookup "^1.2.1"
- postcss-selector-matches "^3.0.1"
- postcss-selector-not "^3.0.1"
+ postcss-extend-rule "^1.1.0"
+ postcss-nested "^3.0.0"
+ postcss-preset-env "^3.2.2"
+ postcss-property-lookup "^2.0.0"
prelude-ls@~1.1.2:
version "1.1.2"
@@ -5903,13 +6579,13 @@ pretty-format@^21.2.1:
ansi-regex "^3.0.0"
ansi-styles "^3.2.0"
-private@^0.1.6, private@^0.1.7:
+private@^0.1.6, private@^0.1.8:
version "0.1.8"
resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
-process-nextick-args@~1.0.6:
- version "1.0.7"
- resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
+process-nextick-args@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
process@^0.11.10:
version "0.11.10"
@@ -5925,6 +6601,10 @@ promise-each@^2.2.0:
dependencies:
any-promise "^0.1.0"
+promise-inflight@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
+
promise@^7.1.1:
version "7.3.1"
resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf"
@@ -5932,29 +6612,29 @@ promise@^7.1.1:
asap "~2.0.3"
prop-types-extra@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/prop-types-extra/-/prop-types-extra-1.0.1.tgz#a57bd4810e82d27a3ff4317ecc1b4ad005f79a82"
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/prop-types-extra/-/prop-types-extra-1.1.0.tgz#32609910ea2dcf190366bacd3490d5a6412a605f"
dependencies:
+ react-is "^16.3.2"
warning "^3.0.0"
-prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.6, prop-types@^15.5.8, prop-types@^15.6.0:
- version "15.6.0"
- resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.0.tgz#ceaf083022fc46b4a35f69e13ef75aed0d639856"
+prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.6, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2:
+ version "15.6.2"
+ resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.2.tgz#05d5ca77b4453e985d60fc7ff8c859094a497102"
dependencies:
- fbjs "^0.8.16"
loose-envify "^1.3.1"
object-assign "^4.1.1"
-proxy-addr@~2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.2.tgz#6571504f47bb988ec8180253f85dd7e14952bdec"
+proxy-addr@~2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.3.tgz#355f262505a621646b3130a728eb647e22055341"
dependencies:
forwarded "~0.1.2"
- ipaddr.js "1.5.2"
+ ipaddr.js "1.6.0"
-prr@~0.0.0:
- version "0.0.0"
- resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a"
+prr@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
ps-tree@^1.1.0:
version "1.1.0"
@@ -5966,9 +6646,13 @@ pseudomap@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
+psl@^1.1.24:
+ version "1.1.28"
+ resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.28.tgz#4fb6ceb08a1e2214d4fd4de0ca22dae13740bc7b"
+
public-encrypt@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6"
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.2.tgz#46eb9107206bf73489f8b85b69d91334c6610994"
dependencies:
bn.js "^4.1.0"
browserify-rsa "^4.0.0"
@@ -5976,6 +6660,21 @@ public-encrypt@^4.0.0:
parse-asn1 "^5.0.0"
randombytes "^2.0.1"
+pump@^2.0.0, pump@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+pumpify@^1.3.3:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce"
+ dependencies:
+ duplexify "^3.6.0"
+ inherits "^2.0.3"
+ pump "^2.0.0"
+
punycode@1.3.2:
version "1.3.2"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
@@ -5985,25 +6684,25 @@ punycode@^1.2.4, punycode@^1.4.1:
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
punycode@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d"
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
q@^1.1.2:
version "1.5.1"
resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
-qs@6.5.1, qs@~6.5.1:
+qs@6.5.1:
version "6.5.1"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8"
-qs@~6.3.0:
- version "6.3.2"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c"
-
qs@~6.4.0:
version "6.4.0"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
+qs@~6.5.1:
+ version "6.5.2"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
+
query-string@^4.1.0:
version "4.3.4"
resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb"
@@ -6019,13 +6718,9 @@ querystring@0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
-querystringify@0.0.x:
- version "0.0.4"
- resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c"
-
-querystringify@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-1.0.0.tgz#6286242112c5b712fa654e526652bf6a13ff05cb"
+querystringify@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.0.0.tgz#fa3ed6e68eb15159457c89b37bc6472833195755"
quote@^0.4.0:
version "0.4.0"
@@ -6041,33 +6736,34 @@ railroad-diagrams@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz#eb7e6267548ddedfb899c1b90e57374559cddb7e"
-rails-ujs@^5.1.2:
- version "5.1.4"
- resolved "https://registry.yarnpkg.com/rails-ujs/-/rails-ujs-5.1.4.tgz#e2e9f7bcbfe51ee69c5f72f4beb0d88ab81a638e"
+rails-ujs@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/rails-ujs/-/rails-ujs-5.2.0.tgz#d93f7a969a226c0ae67044172955be8c1cdf49fc"
-randexp@^0.4.2:
+randexp@0.4.6:
version "0.4.6"
resolved "https://registry.yarnpkg.com/randexp/-/randexp-0.4.6.tgz#e986ad5e5e31dae13ddd6f7b3019aa7c87f60ca3"
dependencies:
discontinuous-range "1.0.0"
ret "~0.1.10"
-randomatic@^1.1.3:
- version "1.1.7"
- resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c"
+randomatic@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.0.0.tgz#d35490030eb4f7578de292ce6dfb04a91a128923"
dependencies:
- is-number "^3.0.0"
- kind-of "^4.0.0"
+ is-number "^4.0.0"
+ kind-of "^6.0.0"
+ math-random "^1.0.1"
randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.5.tgz#dc009a246b8d09a177b4b7a0ae77bc570f4b1b79"
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80"
dependencies:
safe-buffer "^5.1.0"
randomfill@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.3.tgz#b96b7df587f01dd91726c418f30553b1418e3d62"
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458"
dependencies:
randombytes "^2.0.5"
safe-buffer "^5.1.0"
@@ -6085,32 +6781,31 @@ raw-body@2.3.2:
iconv-lite "0.4.19"
unpipe "1.0.0"
-rc@^1.1.7:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.2.tgz#d8ce9cb57e8d64d9c7badd9876c7c34cbe3c7077"
+rc@^1.1.7, rc@^1.2.7:
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
dependencies:
- deep-extend "~0.4.0"
+ deep-extend "^0.6.0"
ini "~1.3.0"
minimist "^1.2.0"
strip-json-comments "~2.0.1"
react-dom@^16.3.0:
- version "16.3.2"
- resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.3.2.tgz#cb90f107e09536d683d84ed5d4888e9640e0e4df"
+ version "16.4.1"
+ resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.4.1.tgz#7f8b0223b3a5fbe205116c56deb85de32685dad6"
dependencies:
fbjs "^0.8.16"
loose-envify "^1.1.0"
object-assign "^4.1.1"
prop-types "^15.6.0"
-react-event-listener@^0.5.1:
- version "0.5.1"
- resolved "https://registry.yarnpkg.com/react-event-listener/-/react-event-listener-0.5.1.tgz#ba36076e47bc37c5a67ff5ccd4a9ff0f15621040"
+react-event-listener@^0.6.0:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/react-event-listener/-/react-event-listener-0.6.1.tgz#41c7a80a66b398c27dd511e22712b02f3d4eccca"
dependencies:
- babel-runtime "^6.26.0"
- fbjs "^0.8.16"
+ "@babel/runtime" "^7.0.0-beta.42"
prop-types "^15.6.0"
- warning "^3.0.0"
+ warning "^4.0.1"
react-hotkeys@^0.10.0:
version "0.10.0"
@@ -6126,14 +6821,14 @@ react-immutable-proptypes@^2.1.0:
resolved "https://registry.yarnpkg.com/react-immutable-proptypes/-/react-immutable-proptypes-2.1.0.tgz#023d6f39bb15c97c071e9e60d00d136eac5fa0b4"
react-immutable-pure-component@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/react-immutable-pure-component/-/react-immutable-pure-component-1.1.1.tgz#0ff69c6d4eaecd886db16805f3bbc1d2a2c654d8"
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/react-immutable-pure-component/-/react-immutable-pure-component-1.2.2.tgz#772c8591720def73e4dc1c8e5c8bb39472ff7925"
-react-intl-translations-manager@^5.0.0:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/react-intl-translations-manager/-/react-intl-translations-manager-5.0.1.tgz#f0ef1a9368abcac3b10b2e8b6027887dced5474e"
+react-intl-translations-manager@^5.0.3:
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/react-intl-translations-manager/-/react-intl-translations-manager-5.0.3.tgz#aee010ecf35975673e033ca5d7d3f4147894324d"
dependencies:
- chalk "^2.1.0"
+ chalk "^2.3.2"
glob "^7.1.2"
json-stable-stringify "^1.0.1"
mkdirp "^0.5.1"
@@ -6147,6 +6842,14 @@ react-intl@^2.4.0:
intl-relativeformat "^2.0.0"
invariant "^2.1.1"
+react-is@^16.3.2, react-is@^16.4.1:
+ version "16.4.1"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.4.1.tgz#d624c4650d2c65dbd52c72622bbf389435d9776e"
+
+react-lifecycles-compat@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362"
+
react-motion@^0.5.2:
version "0.5.2"
resolved "https://registry.yarnpkg.com/react-motion/-/react-motion-0.5.2.tgz#0dd3a69e411316567927917c6626551ba0607316"
@@ -6172,6 +6875,15 @@ react-overlays@^0.8.3:
react-transition-group "^2.2.0"
warning "^3.0.0"
+react-reconciler@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/react-reconciler/-/react-reconciler-0.7.0.tgz#9614894103e5f138deeeb5eabaf3ee80eb1d026d"
+ dependencies:
+ fbjs "^0.8.16"
+ loose-envify "^1.1.0"
+ object-assign "^4.1.1"
+ prop-types "^15.6.0"
+
react-redux-loading-bar@^2.9.3:
version "2.9.3"
resolved "https://registry.yarnpkg.com/react-redux-loading-bar/-/react-redux-loading-bar-2.9.3.tgz#65865dddcbf597169e787edec15eec7ebfb84149"
@@ -6179,26 +6891,26 @@ react-redux-loading-bar@^2.9.3:
prop-types "^15.5.6"
react-redux@^5.0.4:
- version "5.0.6"
- resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-5.0.6.tgz#23ed3a4f986359d68b5212eaaa681e60d6574946"
+ version "5.0.7"
+ resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-5.0.7.tgz#0dc1076d9afb4670f993ffaef44b8f8c1155a4c8"
dependencies:
- hoist-non-react-statics "^2.2.1"
+ hoist-non-react-statics "^2.5.0"
invariant "^2.0.0"
- lodash "^4.2.0"
- lodash-es "^4.2.0"
+ lodash "^4.17.5"
+ lodash-es "^4.17.5"
loose-envify "^1.1.0"
- prop-types "^15.5.10"
+ prop-types "^15.6.0"
react-router-dom@^4.1.1:
- version "4.2.2"
- resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-4.2.2.tgz#c8a81df3adc58bba8a76782e946cbd4eae649b8d"
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-4.3.1.tgz#4c2619fc24c4fa87c9fd18f4fb4a43fe63fbd5c6"
dependencies:
history "^4.7.2"
- invariant "^2.2.2"
+ invariant "^2.2.4"
loose-envify "^1.3.1"
- prop-types "^15.5.4"
- react-router "^4.2.0"
- warning "^3.0.0"
+ prop-types "^15.6.1"
+ react-router "^4.3.1"
+ warning "^4.0.1"
react-router-scroll-4@^1.0.0-beta.1:
version "1.0.0-beta.1"
@@ -6208,17 +6920,17 @@ react-router-scroll-4@^1.0.0-beta.1:
scroll-behavior "^0.9.1"
warning "^3.0.0"
-react-router@^4.2.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/react-router/-/react-router-4.2.0.tgz#61f7b3e3770daeb24062dae3eedef1b054155986"
+react-router@^4.3.1:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/react-router/-/react-router-4.3.1.tgz#aada4aef14c809cb2e686b05cee4742234506c4e"
dependencies:
history "^4.7.2"
- hoist-non-react-statics "^2.3.0"
- invariant "^2.2.2"
+ hoist-non-react-statics "^2.5.0"
+ invariant "^2.2.4"
loose-envify "^1.3.1"
path-to-regexp "^1.7.0"
- prop-types "^15.5.4"
- warning "^3.0.0"
+ prop-types "^15.6.1"
+ warning "^4.0.1"
react-sparklines@^1.7.0:
version "1.7.0"
@@ -6226,42 +6938,43 @@ react-sparklines@^1.7.0:
dependencies:
prop-types "^15.5.10"
-react-swipeable-views-core@^0.12.11:
- version "0.12.11"
- resolved "https://registry.yarnpkg.com/react-swipeable-views-core/-/react-swipeable-views-core-0.12.11.tgz#3cf2b4daffbb36f9d69bd19bf5b2d5370b6b2c1b"
+react-swipeable-views-core@^0.12.11, react-swipeable-views-core@^0.12.14:
+ version "0.12.14"
+ resolved "https://registry.yarnpkg.com/react-swipeable-views-core/-/react-swipeable-views-core-0.12.14.tgz#65271fd18dd9b359e39392fe065a8067e0d7bfdb"
dependencies:
- babel-runtime "^6.23.0"
- warning "^3.0.0"
+ "@babel/runtime" "^7.0.0-beta.42"
+ warning "^4.0.1"
-react-swipeable-views-utils@^0.12.11:
- version "0.12.11"
- resolved "https://registry.yarnpkg.com/react-swipeable-views-utils/-/react-swipeable-views-utils-0.12.11.tgz#3c9a6a2b8dbdcc331a5d107419578f57b7e101d6"
+react-swipeable-views-utils@^0.12.13:
+ version "0.12.14"
+ resolved "https://registry.yarnpkg.com/react-swipeable-views-utils/-/react-swipeable-views-utils-0.12.14.tgz#7ba72ea8eff8149f2c50ed8abc6fb21d1e0de227"
dependencies:
- babel-runtime "^6.23.0"
+ "@babel/runtime" "^7.0.0-beta.42"
fbjs "^0.8.4"
keycode "^2.1.7"
prop-types "^15.6.0"
- react-event-listener "^0.5.1"
- react-swipeable-views-core "^0.12.11"
+ react-event-listener "^0.6.0"
+ react-swipeable-views-core "^0.12.14"
-react-swipeable-views@^0.12.3:
- version "0.12.12"
- resolved "https://registry.yarnpkg.com/react-swipeable-views/-/react-swipeable-views-0.12.12.tgz#60cdc8e3682ed082aaf094f7761eaf691ed28a6f"
+react-swipeable-views@0.12.13:
+ version "0.12.13"
+ resolved "https://registry.yarnpkg.com/react-swipeable-views/-/react-swipeable-views-0.12.13.tgz#247442dbe14922efe5ad6fe0297599c817600bf9"
dependencies:
babel-runtime "^6.23.0"
dom-helpers "^3.2.1"
prop-types "^15.5.4"
react-swipeable-views-core "^0.12.11"
- react-swipeable-views-utils "^0.12.11"
+ react-swipeable-views-utils "^0.12.13"
warning "^3.0.0"
react-test-renderer@^16.0.0-0, react-test-renderer@^16.2.0:
- version "16.2.0"
- resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.2.0.tgz#bddf259a6b8fcd8555f012afc8eacc238872a211"
+ version "16.4.1"
+ resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.4.1.tgz#f2fb30c2c7b517db6e5b10ed20bb6b0a7ccd8d70"
dependencies:
fbjs "^0.8.16"
object-assign "^4.1.1"
prop-types "^15.6.0"
+ react-is "^16.4.1"
react-textarea-autosize@^5.2.1:
version "5.2.1"
@@ -6276,19 +6989,17 @@ react-toggle@^4.0.1:
classnames "^2.2.5"
react-transition-group@^2.2.0:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.2.1.tgz#e9fb677b79e6455fd391b03823afe84849df4a10"
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.4.0.tgz#1d9391fabfd82e016f26fabd1eec329dbd922b5a"
dependencies:
- chain-function "^1.0.0"
- classnames "^2.2.5"
- dom-helpers "^3.2.0"
+ dom-helpers "^3.3.1"
loose-envify "^1.3.1"
- prop-types "^15.5.8"
- warning "^3.0.0"
+ prop-types "^15.6.2"
+ react-lifecycles-compat "^3.0.4"
react@^16.3.0:
- version "16.3.2"
- resolved "https://registry.yarnpkg.com/react/-/react-16.3.2.tgz#fdc8420398533a1e58872f59091b272ce2f91ea9"
+ version "16.4.1"
+ resolved "https://registry.yarnpkg.com/react/-/react-16.4.1.tgz#de51ba5764b5dbcd1f9079037b862bd26b82fe32"
dependencies:
fbjs "^0.8.16"
loose-envify "^1.1.0"
@@ -6339,16 +7050,16 @@ read-pkg@^3.0.0:
normalize-package-data "^2.3.2"
path-type "^3.0.0"
-readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.2, readable-stream@^2.2.6, readable-stream@^2.2.9, readable-stream@^2.3.3:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c"
+"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.3, readable-stream@^2.3.6:
+ version "2.3.6"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
dependencies:
core-util-is "~1.0.0"
inherits "~2.0.3"
isarray "~1.0.0"
- process-nextick-args "~1.0.6"
+ process-nextick-args "~2.0.0"
safe-buffer "~5.1.1"
- string_decoder "~1.0.3"
+ string_decoder "~1.1.1"
util-deprecate "~1.0.1"
readdirp@^2.0.0:
@@ -6368,8 +7079,8 @@ redent@^1.0.0:
strip-indent "^1.0.1"
redis-commands@^1.2.0:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.3.1.tgz#81d826f45fa9c8b2011f4cd7a0fe597d241d442b"
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.3.5.tgz#4495889414f1e886261180b1442e7295602d83a2"
redis-parser@^2.6.0:
version "2.6.0"
@@ -6402,8 +7113,8 @@ redux-immutable@^4.0.0:
resolved "https://registry.yarnpkg.com/redux-immutable/-/redux-immutable-4.0.0.tgz#3a1a32df66366462b63691f0e1dc35e472bbc9f3"
redux-thunk@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.2.0.tgz#e615a16e16b47a19a515766133d1e3e99b7852e5"
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.3.0.tgz#51c2c19a185ed5187aaa9a2d08b666d0d6467622"
redux@^3.7.1:
version "3.7.2"
@@ -6415,12 +7126,16 @@ redux@^3.7.1:
symbol-observable "^1.0.3"
regenerate@^1.2.1:
- version "1.3.3"
- resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f"
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11"
regenerator-runtime@^0.11.0:
- version "0.11.0"
- resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1"
+ version "0.11.1"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
+
+regenerator-runtime@^0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.0.tgz#8052ac952d85b10f3425192cd0c53f45cf65c6cb"
regenerator-transform@^0.10.0:
version "0.10.1"
@@ -6436,9 +7151,12 @@ regex-cache@^0.4.2:
dependencies:
is-equal-shallow "^0.1.3"
-regex-parser@^2.2.1:
- version "2.2.8"
- resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.8.tgz#da4c0cda5a828559094168930f455f532b6ffbac"
+regex-not@^1.0.0, regex-not@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
+ dependencies:
+ extend-shallow "^3.0.2"
+ safe-regex "^1.1.0"
regexpp@^1.0.1:
version "1.1.0"
@@ -6470,6 +7188,10 @@ regjsparser@^0.1.4:
dependencies:
jsesc "~0.5.0"
+rellax@^1.6.2:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/rellax/-/rellax-1.6.2.tgz#b22c8715f56324fa8b396465d3dca9953b711f30"
+
remove-trailing-separator@^1.0.1:
version "1.1.0"
resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
@@ -6478,7 +7200,7 @@ repeat-element@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
-repeat-string@^1.5.2:
+repeat-string@^1.5.2, repeat-string@^1.6.1:
version "1.6.1"
resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
@@ -6488,34 +7210,7 @@ repeating@^2.0.0:
dependencies:
is-finite "^1.0.0"
-request@2, request@^2.79.0:
- version "2.83.0"
- resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356"
- dependencies:
- aws-sign2 "~0.7.0"
- aws4 "^1.6.0"
- caseless "~0.12.0"
- combined-stream "~1.0.5"
- extend "~3.0.1"
- forever-agent "~0.6.1"
- form-data "~2.3.1"
- har-validator "~5.0.3"
- hawk "~6.0.2"
- http-signature "~1.2.0"
- is-typedarray "~1.0.0"
- isstream "~0.1.2"
- json-stringify-safe "~5.0.1"
- mime-types "~2.1.17"
- oauth-sign "~0.8.2"
- performance-now "^2.1.0"
- qs "~6.5.1"
- safe-buffer "^5.1.1"
- stringstream "~0.0.5"
- tough-cookie "~2.3.3"
- tunnel-agent "^0.6.0"
- uuid "^3.1.0"
-
-request@2.81.0:
+request@2.81.0, "request@>=2.9.0 <2.82.0":
version "2.81.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0"
dependencies:
@@ -6542,30 +7237,30 @@ request@2.81.0:
tunnel-agent "^0.6.0"
uuid "^3.0.0"
-request@~2.79.0:
- version "2.79.0"
- resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de"
+request@2.87.0, request@^2.79.0:
+ version "2.87.0"
+ resolved "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz#32f00235cd08d482b4d0d68db93a829c0ed5756e"
dependencies:
- aws-sign2 "~0.6.0"
- aws4 "^1.2.1"
- caseless "~0.11.0"
+ aws-sign2 "~0.7.0"
+ aws4 "^1.6.0"
+ caseless "~0.12.0"
combined-stream "~1.0.5"
- extend "~3.0.0"
+ extend "~3.0.1"
forever-agent "~0.6.1"
- form-data "~2.1.1"
- har-validator "~2.0.6"
- hawk "~3.1.3"
- http-signature "~1.1.0"
+ form-data "~2.3.1"
+ har-validator "~5.0.3"
+ http-signature "~1.2.0"
is-typedarray "~1.0.0"
isstream "~0.1.2"
json-stringify-safe "~5.0.1"
- mime-types "~2.1.7"
- oauth-sign "~0.8.1"
- qs "~6.3.0"
- stringstream "~0.0.4"
- tough-cookie "~2.3.0"
- tunnel-agent "~0.4.1"
- uuid "^3.0.0"
+ mime-types "~2.1.17"
+ oauth-sign "~0.8.2"
+ performance-now "^2.1.0"
+ qs "~6.5.1"
+ safe-buffer "^5.1.1"
+ tough-cookie "~2.3.3"
+ tunnel-agent "^0.6.0"
+ uuid "^3.1.0"
requestidlecallback@^0.3.0:
version "0.3.0"
@@ -6575,13 +7270,9 @@ require-directory@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
-require-from-string@^1.1.0:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418"
-
require-from-string@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.1.tgz#c545233e9d7da6616e9d59adfb39fc9f588676ff"
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
require-main-filename@^1.0.1:
version "1.0.1"
@@ -6598,7 +7289,7 @@ require-uncached@^1.0.3:
caller-path "^0.1.0"
resolve-from "^1.0.0"
-requires-port@1.0.x, requires-port@1.x.x, requires-port@~1.0.0:
+requires-port@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
@@ -6624,21 +7315,7 @@ resolve-pathname@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-2.2.0.tgz#7e9ae21ed815fd63ab189adeee64dc831eefa879"
-resolve-url-loader@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-2.2.0.tgz#9662feaa11debf7cf8e3feb91dae9544aa7dee88"
- dependencies:
- adjust-sourcemap-loader "^1.1.0"
- camelcase "^4.0.0"
- convert-source-map "^1.1.1"
- loader-utils "^1.0.0"
- lodash.defaults "^4.0.0"
- rework "^1.0.1"
- rework-visit "^1.0.0"
- source-map "^0.5.6"
- urix "^0.1.0"
-
-resolve-url@~0.2.1:
+resolve-url@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
@@ -6646,9 +7323,9 @@ resolve@1.1.7:
version "1.1.7"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
-resolve@^1.1.7, resolve@^1.3.3, resolve@^1.5.0:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36"
+resolve@^1.5.0, resolve@^1.6.0:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26"
dependencies:
path-parse "^1.0.5"
@@ -6663,38 +7340,23 @@ ret@~0.1.10:
version "0.1.15"
resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
-rework-visit@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a"
-
-rework@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7"
- dependencies:
- convert-source-map "^0.3.3"
- css "^2.0.0"
-
-rgb@~0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/rgb/-/rgb-0.1.0.tgz#be27b291e8feffeac1bd99729721bfa40fc037b5"
-
right-align@^0.1.1:
version "0.1.3"
resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
dependencies:
align-text "^0.1.1"
-rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.6.1:
+rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2:
version "2.6.2"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
dependencies:
glob "^7.0.5"
ripemd160@^2.0.0, ripemd160@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7"
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c"
dependencies:
- hash-base "^2.0.0"
+ hash-base "^3.0.0"
inherits "^2.0.1"
rst-selector-parser@^2.2.3:
@@ -6704,12 +7366,22 @@ rst-selector-parser@^2.2.3:
lodash.flattendeep "^4.4.0"
nearley "^2.7.10"
+rsvp@^3.3.3:
+ version "3.6.2"
+ resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a"
+
run-async@^2.2.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
dependencies:
is-promise "^2.1.0"
+run-queue@^1.0.0, run-queue@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47"
+ dependencies:
+ aproba "^1.1.1"
+
rx-lite-aggregates@^4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be"
@@ -6720,23 +7392,44 @@ rx-lite@*, rx-lite@^4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444"
-safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+rxjs@^6.1.0:
+ version "6.2.2"
+ resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.2.2.tgz#eb75fa3c186ff5289907d06483a77884586e1cf9"
+ dependencies:
+ tslib "^1.9.0"
+
+safe-buffer@5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
-sane@^2.0.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/sane/-/sane-2.2.0.tgz#d6d2e2fcab00e3d283c93b912b7c3a20846f1d56"
+safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
+
+safe-regex@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
dependencies:
- anymatch "^1.3.0"
+ ret "~0.1.10"
+
+"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
+
+sane@^2.0.0:
+ version "2.5.2"
+ resolved "https://registry.yarnpkg.com/sane/-/sane-2.5.2.tgz#b4dc1861c21b427e929507a3e751e2a2cb8ab3fa"
+ dependencies:
+ anymatch "^2.0.0"
+ capture-exit "^1.2.0"
exec-sh "^0.2.0"
fb-watchman "^2.0.0"
- minimatch "^3.0.2"
+ micromatch "^3.1.4"
minimist "^1.1.1"
walker "~1.0.5"
watch "~0.18.0"
optionalDependencies:
- fsevents "^1.1.1"
+ fsevents "^1.2.3"
sass-graph@^2.2.4:
version "2.2.4"
@@ -6747,29 +7440,30 @@ sass-graph@^2.2.4:
scss-tokenizer "^0.2.3"
yargs "^7.0.0"
-sass-loader@^6.0.6:
- version "6.0.6"
- resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-6.0.6.tgz#e9d5e6c1f155faa32a4b26d7a9b7107c225e40f9"
+sass-loader@^7.0.3:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.0.3.tgz#6ca10871a1cc7549f8143db5a9958242c4e4ca2a"
dependencies:
- async "^2.1.5"
- clone-deep "^0.3.0"
+ clone-deep "^2.0.1"
loader-utils "^1.0.1"
lodash.tail "^4.1.1"
+ neo-async "^2.5.0"
pify "^3.0.0"
-sax@^1.2.1, sax@~1.2.1:
+sax@^1.2.1, sax@^1.2.4, sax@~1.2.1:
version "1.2.4"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
-schema-utils@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.3.0.tgz#f5877222ce3e931edae039f17eb3716e7137f8cf"
+schema-utils@^0.4.0, schema-utils@^0.4.4, schema-utils@^0.4.5:
+ version "0.4.5"
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.5.tgz#21836f0608aac17b78f9e3e24daff14a5ca13a3e"
dependencies:
- ajv "^5.0.0"
+ ajv "^6.1.0"
+ ajv-keywords "^3.1.0"
scroll-behavior@^0.9.1:
- version "0.9.5"
- resolved "https://registry.yarnpkg.com/scroll-behavior/-/scroll-behavior-0.9.5.tgz#41da30b559da004eb48450f6cff6068c7696ff23"
+ version "0.9.9"
+ resolved "https://registry.yarnpkg.com/scroll-behavior/-/scroll-behavior-0.9.9.tgz#ebfe0658455b82ad885b66195215416674dacce2"
dependencies:
dom-helpers "^3.2.1"
invariant "^2.2.2"
@@ -6781,23 +7475,19 @@ scss-tokenizer@^0.2.3:
js-base64 "^2.1.8"
source-map "^0.4.2"
-seed-random@2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/seed-random/-/seed-random-2.2.0.tgz#2a9b19e250a817099231a5b99a4daf80b7fbed54"
-
select-hose@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
selfsigned@^1.9.1:
- version "1.10.1"
- resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.1.tgz#bf8cb7b83256c4551e31347c6311778db99eec52"
+ version "1.10.3"
+ resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.3.tgz#d628ecf9e3735f84e8bafba936b3cf85bea43823"
dependencies:
- node-forge "0.6.33"
+ node-forge "0.7.5"
-"semver@2 || 3 || 4 || 5", semver@^5.3.0:
- version "5.4.1"
- resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e"
+"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab"
semver@4.3.2:
version "4.3.2"
@@ -6807,14 +7497,14 @@ semver@~5.3.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
-send@0.16.1:
- version "0.16.1"
- resolved "https://registry.yarnpkg.com/send/-/send-0.16.1.tgz#a70e1ca21d1382c11d0d9f6231deb281080d7ab3"
+send@0.16.2:
+ version "0.16.2"
+ resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1"
dependencies:
debug "2.6.9"
- depd "~1.1.1"
+ depd "~1.1.2"
destroy "~1.0.4"
- encodeurl "~1.0.1"
+ encodeurl "~1.0.2"
escape-html "~1.0.3"
etag "~1.8.1"
fresh "0.5.2"
@@ -6823,7 +7513,11 @@ send@0.16.1:
ms "2.0.0"
on-finished "~2.3.0"
range-parser "~1.2.0"
- statuses "~1.3.1"
+ statuses "~1.4.0"
+
+serialize-javascript@^1.4.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.5.0.tgz#1aa336162c88a890ddad5384baebc93a655161fe"
serve-index@^1.7.2:
version "1.9.1"
@@ -6837,14 +7531,14 @@ serve-index@^1.7.2:
mime-types "~2.1.17"
parseurl "~1.3.2"
-serve-static@1.13.1:
- version "1.13.1"
- resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.1.tgz#4c57d53404a761d8f2e7c1e8a18a47dbf278a719"
+serve-static@1.13.2:
+ version "1.13.2"
+ resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1"
dependencies:
- encodeurl "~1.0.1"
+ encodeurl "~1.0.2"
escape-html "~1.0.3"
parseurl "~1.3.2"
- send "0.16.1"
+ send "0.16.2"
set-blocking@^2.0.0, set-blocking@~2.0.0:
version "2.0.0"
@@ -6854,6 +7548,24 @@ set-immediate-shim@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
+set-value@^0.4.3:
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1"
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-extendable "^0.1.1"
+ is-plain-object "^2.0.1"
+ to-object-path "^0.3.0"
+
+set-value@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274"
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-extendable "^0.1.1"
+ is-plain-object "^2.0.3"
+ split-string "^3.0.1"
+
setimmediate@^1.0.4, setimmediate@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
@@ -6867,19 +7579,18 @@ setprototypeof@1.1.0:
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
sha.js@^2.4.0, sha.js@^2.4.8:
- version "2.4.9"
- resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.9.tgz#98f64880474b74f4a38b8da9d3c0f2d104633e7d"
+ version "2.4.11"
+ resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
dependencies:
inherits "^2.0.1"
safe-buffer "^5.0.1"
-shallow-clone@^0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-0.1.2.tgz#5909e874ba77106d73ac414cfec1ffca87d97060"
+shallow-clone@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-1.0.0.tgz#4480cd06e882ef68b2ad88a3ea54832e2c48b571"
dependencies:
is-extendable "^0.1.1"
- kind-of "^2.0.1"
- lazy-cache "^0.2.3"
+ kind-of "^5.0.0"
mixin-object "^2.0.1"
shebang-command@^1.2.0:
@@ -6901,7 +7612,7 @@ shell-quote@^1.6.1:
array-reduce "~0.0.0"
jsonify "~0.0.0"
-shellwords@^0.1.0:
+shellwords@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"
@@ -6909,6 +7620,12 @@ signal-exit@^3.0.0, signal-exit@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
+simple-swizzle@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
+ dependencies:
+ is-arrayish "^0.3.1"
+
slash@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
@@ -6919,18 +7636,39 @@ slice-ansi@1.0.0:
dependencies:
is-fullwidth-code-point "^2.0.0"
+snapdragon-node@^2.0.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
+ dependencies:
+ define-property "^1.0.0"
+ isobject "^3.0.0"
+ snapdragon-util "^3.0.1"
+
+snapdragon-util@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
+ dependencies:
+ kind-of "^3.2.0"
+
+snapdragon@^0.8.1:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
+ dependencies:
+ base "^0.11.1"
+ debug "^2.2.0"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ map-cache "^0.2.2"
+ source-map "^0.5.6"
+ source-map-resolve "^0.5.0"
+ use "^3.1.0"
+
sntp@1.x.x:
version "1.0.9"
resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
dependencies:
hoek "2.x.x"
-sntp@2.x.x:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8"
- dependencies:
- hoek "4.x.x"
-
sockjs-client@1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.4.tgz#5babe386b775e4cf14e7520911452654016c8b12"
@@ -6942,12 +7680,12 @@ sockjs-client@1.1.4:
json3 "^3.3.2"
url-parse "^1.1.8"
-sockjs@0.3.18:
- version "0.3.18"
- resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.18.tgz#d9b289316ca7df77595ef299e075f0f937eb4207"
+sockjs@0.3.19:
+ version "0.3.19"
+ resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d"
dependencies:
faye-websocket "^0.10.0"
- uuid "^2.0.2"
+ uuid "^3.0.1"
sort-keys@^1.0.0:
version "1.1.2"
@@ -6959,14 +7697,15 @@ source-list-map@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085"
-source-map-resolve@^0.3.0:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.3.1.tgz#610f6122a445b8dd51535a2a71b783dfc1248761"
+source-map-resolve@^0.5.0:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259"
dependencies:
- atob "~1.1.0"
- resolve-url "~0.2.1"
- source-map-url "~0.3.0"
- urix "~0.1.0"
+ atob "^2.1.1"
+ decode-uri-component "^0.2.0"
+ resolve-url "^0.2.1"
+ source-map-url "^0.4.0"
+ urix "^0.1.0"
source-map-support@^0.4.15:
version "0.4.18"
@@ -6974,15 +7713,9 @@ source-map-support@^0.4.15:
dependencies:
source-map "^0.5.6"
-source-map-url@~0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.3.0.tgz#7ecaf13b57bcd09da8a40c5d269db33799d4aaf9"
-
-source-map@^0.1.38:
- version "0.1.43"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346"
- dependencies:
- amdefine ">=0.0.4"
+source-map-url@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
source-map@^0.4.2, source-map@^0.4.4:
version "0.4.4"
@@ -6990,7 +7723,7 @@ source-map@^0.4.2, source-map@^0.4.4:
dependencies:
amdefine ">=0.0.4"
-source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.6:
+source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1:
version "0.5.7"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
@@ -6998,23 +7731,31 @@ source-map@^0.6.1, source-map@~0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
-spdx-correct@~1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40"
+spdx-correct@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82"
dependencies:
- spdx-license-ids "^1.0.2"
+ spdx-expression-parse "^3.0.0"
+ spdx-license-ids "^3.0.0"
-spdx-expression-parse@~1.0.0:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c"
+spdx-exceptions@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9"
-spdx-license-ids@^1.0.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57"
+spdx-expression-parse@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0"
+ dependencies:
+ spdx-exceptions "^2.1.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-license-ids@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz#7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87"
spdy-transport@^2.0.18:
- version "2.0.20"
- resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.0.20.tgz#735e72054c486b2354fe89e702256004a39ace4d"
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.1.0.tgz#4bbb15aaffed0beefdd56ad61dbdc8ba3e2cb7a1"
dependencies:
debug "^2.6.8"
detect-node "^2.0.3"
@@ -7035,6 +7776,12 @@ spdy@^3.4.1:
select-hose "^2.0.0"
spdy-transport "^2.0.18"
+split-string@^3.0.1, split-string@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
+ dependencies:
+ extend-shallow "^3.0.0"
+
split@0.3:
version "0.3.3"
resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f"
@@ -7052,27 +7799,41 @@ sprintf-js@~1.0.2:
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
sshpk@^1.7.0:
- version "1.13.1"
- resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3"
+ version "1.14.2"
+ resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.2.tgz#c6fc61648a3d9c4e764fd3fcdf4ea105e492ba98"
dependencies:
asn1 "~0.2.3"
assert-plus "^1.0.0"
dashdash "^1.12.0"
getpass "^0.1.1"
+ safer-buffer "^2.0.2"
optionalDependencies:
bcrypt-pbkdf "^1.0.0"
ecc-jsbn "~0.1.1"
jsbn "~0.1.0"
tweetnacl "~0.14.0"
-"statuses@>= 1.3.1 < 2":
+ssri@^5.2.4:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.3.0.tgz#ba3872c9c6d33a0704a7d71ff045e5ec48999d06"
+ dependencies:
+ safe-buffer "^5.1.1"
+
+static-extend@^0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
+ dependencies:
+ define-property "^0.2.5"
+ object-copy "^0.1.0"
+
+"statuses@>= 1.3.1 < 2", "statuses@>= 1.4.0 < 2":
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
+
+statuses@~1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087"
-statuses@~1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e"
-
stdout-stream@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b"
@@ -7092,16 +7853,27 @@ stream-combiner@~0.0.4:
dependencies:
duplexer "~0.1.1"
+stream-each@^1.1.0:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.2.tgz#8e8c463f91da8991778765873fe4d960d8f616bd"
+ dependencies:
+ end-of-stream "^1.1.0"
+ stream-shift "^1.0.0"
+
stream-http@^2.7.2:
- version "2.7.2"
- resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.2.tgz#40a050ec8dc3b53b33d9909415c02c0bf1abfbad"
+ version "2.8.3"
+ resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc"
dependencies:
builtin-status-codes "^3.0.0"
inherits "^2.0.1"
- readable-stream "^2.2.6"
+ readable-stream "^2.3.6"
to-arraybuffer "^1.0.0"
xtend "^4.0.0"
+stream-shift@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952"
+
strict-uri-encode@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
@@ -7121,7 +7893,7 @@ string-width@^1.0.1, string-width@^1.0.2:
is-fullwidth-code-point "^1.0.0"
strip-ansi "^3.0.0"
-string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1:
+"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
dependencies:
@@ -7136,15 +7908,15 @@ string.prototype.padend@^3.0.0:
es-abstract "^1.4.3"
function-bind "^1.0.2"
-string_decoder@^1.0.0, string_decoder@~1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab"
+string_decoder@^1.0.0, string_decoder@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
dependencies:
safe-buffer "~5.1.0"
-stringstream@~0.0.4, stringstream@~0.0.5:
- version "0.0.5"
- resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
+stringstream@~0.0.4:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.6.tgz#7880225b0d4ad10e30927d167a1d6f2fd3b33a72"
stringz@^0.3.0:
version "0.3.0"
@@ -7186,18 +7958,18 @@ strip-json-comments@~2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
-style-loader@^0.19.0:
- version "0.19.0"
- resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.19.0.tgz#7258e788f0fee6a42d710eaf7d6c2412a4c50759"
+style-loader@^0.21.0:
+ version "0.21.0"
+ resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.21.0.tgz#68c52e5eb2afc9ca92b6274be277ee59aea3a852"
dependencies:
- loader-utils "^1.0.2"
- schema-utils "^0.3.0"
+ loader-utils "^1.1.0"
+ schema-utils "^0.4.5"
substring-trie@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/substring-trie/-/substring-trie-1.0.2.tgz#7b42592391628b4f2cb17365c6cce4257c7b7af5"
-sugarss@^1.0.0:
+sugarss@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/sugarss/-/sugarss-1.0.1.tgz#be826d9003e0f247735f92365dc3fd7f1bae9e44"
dependencies:
@@ -7213,11 +7985,11 @@ supports-color@^3.1.2, supports-color@^3.2.3:
dependencies:
has-flag "^1.0.0"
-supports-color@^4.0.0, supports-color@^4.2.1, supports-color@^4.4.0:
- version "4.5.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b"
+supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.4.0:
+ version "5.4.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54"
dependencies:
- has-flag "^2.0.0"
+ has-flag "^3.0.0"
svgo@^0.7.0:
version "0.7.2"
@@ -7232,8 +8004,8 @@ svgo@^0.7.0:
whet.extend "~0.9.9"
symbol-observable@^1.0.3:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.1.0.tgz#5c68fd8d54115d9dfb72a84720549222e8db9b32"
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
symbol-tree@^3.2.1:
version "3.2.2"
@@ -7250,9 +8022,9 @@ table@4.0.2:
slice-ansi "1.0.0"
string-width "^2.1.1"
-tapable@^0.2.7:
- version "0.2.8"
- resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22"
+tapable@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.0.0.tgz#cbb639d9002eed9c6b5975eb20598d7936f1f9f2"
tar-pack@^3.4.0:
version "3.4.1"
@@ -7275,21 +8047,37 @@ tar@^2.0.0, tar@^2.2.1:
fstream "^1.0.2"
inherits "2"
-tcomb@^2.5.0, tcomb@^2.5.1:
+tar@^4:
+ version "4.4.4"
+ resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.4.tgz#ec8409fae9f665a4355cc3b4087d0820232bb8cd"
+ dependencies:
+ chownr "^1.0.1"
+ fs-minipass "^1.2.5"
+ minipass "^2.3.3"
+ minizlib "^1.1.0"
+ mkdirp "^0.5.0"
+ safe-buffer "^5.1.2"
+ yallist "^3.0.2"
+
+tcomb@^2.5.0:
version "2.7.0"
resolved "https://registry.yarnpkg.com/tcomb/-/tcomb-2.7.0.tgz#10d62958041669a5d53567b9a4ee8cde22b1c2b0"
-test-exclude@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.1.1.tgz#4d84964b0966b0087ecc334a2ce002d3d9341e26"
+tcomb@^3.2.21:
+ version "3.2.27"
+ resolved "https://registry.yarnpkg.com/tcomb/-/tcomb-3.2.27.tgz#f4928bfc536b959d21a47e5f5f1ca2b2e4b7188a"
+
+test-exclude@^4.2.1:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.1.tgz#dfa222f03480bca69207ca728b37d74b45f724fa"
dependencies:
arrify "^1.0.1"
- micromatch "^2.3.11"
+ micromatch "^3.1.8"
object-assign "^4.1.0"
read-pkg-up "^1.0.1"
require-main-filename "^1.0.1"
-text-table@~0.2.0:
+text-table@^0.2.0, text-table@~0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
@@ -7303,28 +8091,27 @@ throng@^4.0.0:
dependencies:
lodash.defaults "^4.0.1"
+through2@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be"
+ dependencies:
+ readable-stream "^2.1.5"
+ xtend "~4.0.1"
+
through@2, through@^2.3.6, through@~2.3, through@~2.3.1:
version "2.3.8"
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
-thunky@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/thunky/-/thunky-0.1.0.tgz#bf30146824e2b6e67b0f2d7a4ac8beb26908684e"
-
-time-stamp@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.0.0.tgz#95c6a44530e15ba8d6f4a3ecb8c3a3fac46da357"
+thunky@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.2.tgz#a862e018e3fb1ea2ec3fce5d55605cf57f247371"
timers-browserify@^2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.4.tgz#96ca53f4b794a5e7c0e1bd7cc88a372298fa01e6"
+ version "2.0.10"
+ resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae"
dependencies:
setimmediate "^1.0.4"
-tiny-emitter@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.0.0.tgz#bad327adb1804b42a231afa741532bd884cd09ad"
-
tiny-queue@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/tiny-queue/-/tiny-queue-0.2.1.tgz#25a67f2c6e253b2ca941977b5ef7442ef97a6046"
@@ -7351,17 +8138,40 @@ to-fast-properties@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
-tough-cookie@^2.3.2, tough-cookie@~2.3.0, tough-cookie@~2.3.3:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561"
+to-object-path@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
dependencies:
+ kind-of "^3.0.2"
+
+to-regex-range@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
+ dependencies:
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+
+to-regex@^3.0.1, to-regex@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
+ dependencies:
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ regex-not "^1.0.2"
+ safe-regex "^1.1.0"
+
+tough-cookie@^2.3.2:
+ version "2.4.3"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781"
+ dependencies:
+ psl "^1.1.24"
punycode "^1.4.1"
-tr46@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09"
+tough-cookie@~2.3.0, tough-cookie@~2.3.3:
+ version "2.3.4"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655"
dependencies:
- punycode "^2.1.0"
+ punycode "^1.4.1"
tr46@~0.0.3:
version "0.0.3"
@@ -7381,6 +8191,14 @@ trim-right@^1.0.1:
dependencies:
glob "^6.0.4"
+tryer@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8"
+
+tslib@^1.9.0:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
+
tty-browserify@0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
@@ -7391,10 +8209,6 @@ tunnel-agent@^0.6.0:
dependencies:
safe-buffer "^5.0.1"
-tunnel-agent@~0.4.1:
- version "0.4.3"
- resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb"
-
tweetnacl@^0.14.3, tweetnacl@~0.14.0:
version "0.14.5"
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
@@ -7405,26 +8219,29 @@ type-check@~0.3.2:
dependencies:
prelude-ls "~1.1.2"
-type-is@~1.6.15:
- version "1.6.15"
- resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410"
+type-is@~1.6.15, type-is@~1.6.16:
+ version "1.6.16"
+ resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194"
dependencies:
media-typer "0.3.0"
- mime-types "~2.1.15"
-
-typed-function@0.10.6:
- version "0.10.6"
- resolved "https://registry.yarnpkg.com/typed-function/-/typed-function-0.10.6.tgz#314aa0ea72bd586de5920095559683e20b01688b"
+ mime-types "~2.1.18"
typedarray@^0.0.6:
version "0.0.6"
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
-ua-parser-js@^0.7.9:
- version "0.7.17"
- resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac"
+ua-parser-js@^0.7.18:
+ version "0.7.18"
+ resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.18.tgz#a7bfd92f56edfb117083b69e31d2aa8882d4b1ed"
-uglify-js@^2.6, uglify-js@^2.8.29:
+uglify-es@^3.3.4:
+ version "3.3.9"
+ resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677"
+ dependencies:
+ commander "~2.13.0"
+ source-map "~0.6.1"
+
+uglify-js@^2.6:
version "2.8.29"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd"
dependencies:
@@ -7437,65 +8254,95 @@ uglify-to-browserify@~1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
-uglifyjs-webpack-plugin@^0.4.6:
- version "0.4.6"
- resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz#b951f4abb6bd617e66f63eb891498e391763e309"
+uglifyjs-webpack-plugin@^1.2.4, uglifyjs-webpack-plugin@^1.2.7:
+ version "1.2.7"
+ resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.7.tgz#57638dd99c853a1ebfe9d97b42160a8a507f9d00"
dependencies:
- source-map "^0.5.6"
- uglify-js "^2.8.29"
- webpack-sources "^1.0.1"
+ cacache "^10.0.4"
+ find-cache-dir "^1.0.0"
+ schema-utils "^0.4.5"
+ serialize-javascript "^1.4.0"
+ source-map "^0.6.1"
+ uglify-es "^3.3.4"
+ webpack-sources "^1.1.0"
+ worker-farm "^1.5.2"
uid-number@^0.0.6:
version "0.0.6"
resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
-ultron@~1.1.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c"
-
underscore@~1.4.4:
version "1.4.4"
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.4.4.tgz#61a6a32010622afa07963bf325203cf12239d604"
+union-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4"
+ dependencies:
+ arr-union "^3.1.0"
+ get-value "^2.0.6"
+ is-extendable "^0.1.1"
+ set-value "^0.4.3"
+
uniq@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
-uniqid@^4.0.0:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/uniqid/-/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1"
- dependencies:
- macaddress "^0.2.8"
-
uniqs@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02"
+unique-filename@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.0.tgz#d05f2fe4032560871f30e93cbe735eea201514f3"
+ dependencies:
+ unique-slug "^2.0.0"
+
+unique-slug@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.0.tgz#db6676e7c7cc0629878ff196097c78855ae9f4ab"
+ dependencies:
+ imurmurhash "^0.1.4"
+
unpipe@1.0.0, unpipe@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
unquote@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.0.tgz#98e1fc608b6b854c75afb1b95afc099ba69d942f"
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544"
-urix@^0.1.0, urix@~0.1.0:
+unset-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
+ dependencies:
+ has-value "^0.3.1"
+ isobject "^3.0.0"
+
+upath@^1.0.5:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd"
+
+uri-js@^4.2.1:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
+ dependencies:
+ punycode "^2.1.0"
+
+urix@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
-url-parse@1.0.x:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b"
- dependencies:
- querystringify "0.0.x"
- requires-port "1.0.x"
+url-join@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.0.tgz#4d3340e807d3773bda9991f8305acdcc2a665d2a"
-url-parse@^1.1.8:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.2.0.tgz#3a19e8aaa6d023ddd27dcc44cb4fc8f7fec23986"
+url-parse@^1.1.8, url-parse@~1.4.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.1.tgz#4dec9dad3dc8585f862fed461d2e19bbf623df30"
dependencies:
- querystringify "~1.0.0"
- requires-port "~1.0.0"
+ querystringify "^2.0.0"
+ requires-port "^1.0.0"
url@^0.11.0:
version "0.11.0"
@@ -7504,38 +8351,48 @@ url@^0.11.0:
punycode "1.3.2"
querystring "0.2.0"
+use@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
+
util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
-util@0.10.3, util@^0.10.3:
+util@0.10.3:
version "0.10.3"
resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
dependencies:
inherits "2.0.1"
+util@^0.10.3:
+ version "0.10.4"
+ resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901"
+ dependencies:
+ inherits "2.0.3"
+
utils-merge@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
-uuid@^2.0.2:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a"
+uuid@^3.0.0, uuid@^3.0.1, uuid@^3.1.0:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
-uuid@^3.0.0, uuid@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04"
+uws@10.148.0:
+ version "10.148.0"
+ resolved "https://registry.yarnpkg.com/uws/-/uws-10.148.0.tgz#3fcd35f083ca515e091cd33b2d78f0f51a666215"
-uws@^8.14.0:
- version "8.14.1"
- resolved "https://registry.yarnpkg.com/uws/-/uws-8.14.1.tgz#de09619f305f6174d5516a9c6942cb120904b20b"
+v8-compile-cache@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.0.tgz#526492e35fc616864284700b7043e01baee09f0a"
validate-npm-package-license@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc"
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz#81643bcbef1bdfecd4623793dc4648948ba98338"
dependencies:
- spdx-correct "~1.0.0"
- spdx-expression-parse "~1.0.0"
+ spdx-correct "^3.0.0"
+ spdx-expression-parse "^3.0.0"
value-equal@^0.4.0:
version "0.4.0"
@@ -7546,8 +8403,8 @@ vary@~1.1.2:
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
vendors@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22"
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.2.tgz#7fcb5eef9f5623b156bcea89ec37d63676f21801"
verror@1.10.0:
version "1.10.0"
@@ -7575,6 +8432,12 @@ warning@^3.0.0:
dependencies:
loose-envify "^1.0.0"
+warning@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.1.tgz#66ce376b7fbfe8a887c22bdf0e7349d73d397745"
+ dependencies:
+ loose-envify "^1.0.0"
+
watch@~0.18.0:
version "0.18.0"
resolved "https://registry.yarnpkg.com/watch/-/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986"
@@ -7582,17 +8445,17 @@ watch@~0.18.0:
exec-sh "^0.2.0"
minimist "^1.2.0"
-watchpack@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.4.0.tgz#4a1472bcbb952bd0a9bb4036801f954dfb39faac"
+watchpack@^1.5.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00"
dependencies:
- async "^2.1.2"
- chokidar "^1.7.0"
+ chokidar "^2.0.2"
graceful-fs "^4.1.2"
+ neo-async "^2.5.0"
wbuf@^1.1.0, wbuf@^1.7.2:
- version "1.7.2"
- resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe"
+ version "1.7.3"
+ resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df"
dependencies:
minimalistic-assert "^1.0.0"
@@ -7600,52 +8463,71 @@ webidl-conversions@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
-webidl-conversions@^4.0.0, webidl-conversions@^4.0.2:
+webidl-conversions@^4.0.0:
version "4.0.2"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
-webpack-bundle-analyzer@^2.9.1:
- version "2.9.1"
- resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.9.1.tgz#c2c8e03e8e5768ed288b39ae9e27a8b8d7b9d476"
+webpack-bundle-analyzer@^2.13.1:
+ version "2.13.1"
+ resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.13.1.tgz#07d2176c6e86c3cdce4c23e56fae2a7b6b4ad526"
dependencies:
- acorn "^5.1.1"
- chalk "^1.1.3"
- commander "^2.9.0"
- ejs "^2.5.6"
- express "^4.15.2"
- filesize "^3.5.9"
- gzip-size "^3.0.0"
+ acorn "^5.3.0"
+ bfj-node4 "^5.2.0"
+ chalk "^2.3.0"
+ commander "^2.13.0"
+ ejs "^2.5.7"
+ express "^4.16.2"
+ filesize "^3.5.11"
+ gzip-size "^4.1.0"
lodash "^4.17.4"
mkdirp "^0.5.1"
opener "^1.4.3"
- ws "^3.3.1"
+ ws "^4.0.0"
-webpack-dev-middleware@^1.11.0:
- version "1.12.2"
- resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz#f8fc1120ce3b4fc5680ceecb43d777966b21105e"
+webpack-cli@^3.0.8:
+ version "3.0.8"
+ resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.0.8.tgz#90eddcf04a4bfc31aa8c0edc4c76785bc4f1ccd9"
dependencies:
+ chalk "^2.4.1"
+ cross-spawn "^6.0.5"
+ enhanced-resolve "^4.0.0"
+ global-modules-path "^2.1.0"
+ import-local "^1.0.0"
+ inquirer "^6.0.0"
+ interpret "^1.1.0"
+ loader-utils "^1.1.0"
+ supports-color "^5.4.0"
+ v8-compile-cache "^2.0.0"
+ yargs "^11.1.0"
+
+webpack-dev-middleware@3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.1.3.tgz#8b32aa43da9ae79368c1bf1183f2b6cf5e1f39ed"
+ dependencies:
+ loud-rejection "^1.6.0"
memory-fs "~0.4.1"
- mime "^1.5.0"
+ mime "^2.1.0"
path-is-absolute "^1.0.0"
range-parser "^1.0.3"
- time-stamp "^2.0.0"
+ url-join "^4.0.0"
+ webpack-log "^1.0.1"
-webpack-dev-server@^2.9.5:
- version "2.9.5"
- resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.9.5.tgz#79336fba0087a66ae491f4869f6545775b18daa8"
+webpack-dev-server@^3.1.4:
+ version "3.1.4"
+ resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.4.tgz#9a08d13c4addd1e3b6d8ace116e86715094ad5b4"
dependencies:
ansi-html "0.0.7"
array-includes "^3.0.3"
bonjour "^3.5.0"
- chokidar "^1.6.0"
+ chokidar "^2.0.0"
compression "^1.5.2"
connect-history-api-fallback "^1.3.0"
debug "^3.1.0"
del "^3.0.0"
express "^4.16.2"
html-entities "^1.2.0"
- http-proxy-middleware "~0.17.4"
- import-local "^0.1.1"
+ http-proxy-middleware "~0.18.0"
+ import-local "^1.0.0"
internal-ip "1.2.0"
ip "^1.1.5"
killable "^1.0.0"
@@ -7654,60 +8536,74 @@ webpack-dev-server@^2.9.5:
portfinder "^1.0.9"
selfsigned "^1.9.1"
serve-index "^1.7.2"
- sockjs "0.3.18"
+ sockjs "0.3.19"
sockjs-client "1.1.4"
spdy "^3.4.1"
- strip-ansi "^3.0.1"
- supports-color "^4.2.1"
- webpack-dev-middleware "^1.11.0"
- yargs "^6.6.0"
+ strip-ansi "^3.0.0"
+ supports-color "^5.1.0"
+ webpack-dev-middleware "3.1.3"
+ webpack-log "^1.1.2"
+ yargs "11.0.0"
-webpack-manifest-plugin@^1.2.1:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-1.3.2.tgz#5ea8ee5756359ddc1d98814324fe43496349a7d4"
+webpack-log@^1.0.1, webpack-log@^1.1.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-1.2.0.tgz#a4b34cda6b22b518dbb0ab32e567962d5c72a43d"
+ dependencies:
+ chalk "^2.1.0"
+ log-symbols "^2.1.0"
+ loglevelnext "^1.0.1"
+ uuid "^3.1.0"
+
+webpack-manifest-plugin@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.0.3.tgz#b42c5b08a0319cedb3ec45d9375a9ecee0acf5eb"
dependencies:
fs-extra "^0.30.0"
lodash ">=3.5 <5"
+ tapable "^1.0.0"
-webpack-merge@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.1.1.tgz#f1197a0a973e69c6fbeeb6d658219aa8c0c13555"
+webpack-merge@^4.1.3:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.1.3.tgz#8aaff2108a19c29849bc9ad2a7fd7fce68e87c4a"
dependencies:
- lodash "^4.17.4"
+ lodash "^4.17.5"
-webpack-sources@^1.0.1:
+webpack-sources@^1.0.1, webpack-sources@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.1.0.tgz#a101ebae59d6507354d71d8013950a3a8b7a5a54"
dependencies:
source-list-map "^2.0.0"
source-map "~0.6.1"
-webpack@^3.9.1:
- version "3.9.1"
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.9.1.tgz#9a60aa544ed5d4d454c069e3f521aa007e02643c"
+webpack@^4.16.0:
+ version "4.16.0"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.16.0.tgz#660dae90890e55b8ed17c6f9d17bebb01dab5b4c"
dependencies:
- acorn "^5.0.0"
- acorn-dynamic-import "^2.0.0"
- ajv "^5.1.5"
- ajv-keywords "^2.0.0"
- async "^2.1.2"
- enhanced-resolve "^3.4.0"
- escope "^3.6.0"
- interpret "^1.0.0"
- json-loader "^0.5.4"
- json5 "^0.5.1"
+ "@webassemblyjs/ast" "1.5.13"
+ "@webassemblyjs/helper-module-context" "1.5.13"
+ "@webassemblyjs/wasm-edit" "1.5.13"
+ "@webassemblyjs/wasm-opt" "1.5.13"
+ "@webassemblyjs/wasm-parser" "1.5.13"
+ acorn "^5.6.2"
+ acorn-dynamic-import "^3.0.0"
+ ajv "^6.1.0"
+ ajv-keywords "^3.1.0"
+ chrome-trace-event "^1.0.0"
+ enhanced-resolve "^4.1.0"
+ eslint-scope "^3.7.1"
+ json-parse-better-errors "^1.0.2"
loader-runner "^2.3.0"
loader-utils "^1.1.0"
memory-fs "~0.4.1"
+ micromatch "^3.1.8"
mkdirp "~0.5.0"
+ neo-async "^2.5.0"
node-libs-browser "^2.0.0"
- source-map "^0.5.3"
- supports-color "^4.2.1"
- tapable "^0.2.7"
- uglifyjs-webpack-plugin "^0.4.6"
- watchpack "^1.4.0"
+ schema-utils "^0.4.4"
+ tapable "^1.0.0"
+ uglifyjs-webpack-plugin "^1.2.4"
+ watchpack "^1.5.0"
webpack-sources "^1.0.1"
- yargs "^8.0.2"
websocket-driver@>=0.5.1:
version "0.7.0"
@@ -7733,8 +8629,8 @@ whatwg-encoding@^1.0.1:
iconv-lite "0.4.19"
whatwg-fetch@>=0.10.0:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84"
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f"
whatwg-url@^4.3.0:
version "4.8.0"
@@ -7743,14 +8639,6 @@ whatwg-url@^4.3.0:
tr46 "~0.0.3"
webidl-conversions "^3.0.0"
-whatwg-url@^6.4.1:
- version "6.4.1"
- resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.4.1.tgz#fdb94b440fd4ad836202c16e9737d511f012fd67"
- dependencies:
- lodash.sortby "^4.7.0"
- tr46 "^1.0.1"
- webidl-conversions "^4.0.2"
-
whet.extend@~0.9.9:
version "0.9.9"
resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1"
@@ -7763,17 +8651,17 @@ which-module@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
-which@1, which@^1.2.12, which@^1.2.9:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a"
+which@1, which@^1.2.12, which@^1.2.9, which@^1.3.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
dependencies:
isexe "^2.0.0"
wide-align@^1.1.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710"
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
dependencies:
- string-width "^1.0.2"
+ string-width "^1.0.2 || 2"
window-size@0.1.0:
version "0.1.0"
@@ -7791,12 +8679,11 @@ wordwrap@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
-worker-farm@^1.3.1:
- version "1.5.2"
- resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.5.2.tgz#32b312e5dc3d5d45d79ef44acc2587491cd729ae"
+worker-farm@^1.3.1, worker-farm@^1.5.2:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0"
dependencies:
- errno "^0.1.4"
- xtend "^4.0.1"
+ errno "~0.1.7"
wrap-ansi@^2.0.0:
version "2.1.0"
@@ -7823,19 +8710,18 @@ write@^0.2.1:
dependencies:
mkdirp "^0.5.1"
-ws@^3.3.1:
- version "3.3.2"
- resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.2.tgz#96c1d08b3fefda1d5c1e33700d3bfaa9be2d5608"
+ws@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-4.1.0.tgz#a979b5d7d4da68bf54efe0408967c324869a7289"
dependencies:
async-limiter "~1.0.0"
safe-buffer "~5.1.0"
- ultron "~1.1.0"
xml-name-validator@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635"
-xtend@^4.0.0, xtend@^4.0.1:
+xtend@^4.0.0, xtend@~4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
@@ -7843,15 +8729,17 @@ y18n@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
+y18n@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
+
yallist@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
-yargs-parser@^4.2.0:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c"
- dependencies:
- camelcase "^3.0.0"
+yallist@^3.0.0, yallist@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9"
yargs-parser@^5.0.0:
version "5.0.0"
@@ -7865,23 +8753,45 @@ yargs-parser@^7.0.0:
dependencies:
camelcase "^4.1.0"
-yargs@^6.6.0:
- version "6.6.0"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208"
+yargs-parser@^9.0.2:
+ version "9.0.2"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077"
dependencies:
- camelcase "^3.0.0"
- cliui "^3.2.0"
+ camelcase "^4.1.0"
+
+yargs@11.0.0:
+ version "11.0.0"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.0.0.tgz#c052931006c5eee74610e5fc0354bedfd08a201b"
+ dependencies:
+ cliui "^4.0.0"
decamelize "^1.1.1"
+ find-up "^2.1.0"
get-caller-file "^1.0.1"
- os-locale "^1.4.0"
- read-pkg-up "^1.0.1"
+ os-locale "^2.0.0"
require-directory "^2.1.1"
require-main-filename "^1.0.1"
set-blocking "^2.0.0"
- string-width "^1.0.2"
- which-module "^1.0.0"
+ string-width "^2.0.0"
+ which-module "^2.0.0"
y18n "^3.2.1"
- yargs-parser "^4.2.0"
+ yargs-parser "^9.0.2"
+
+yargs@^11.1.0:
+ version "11.1.0"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77"
+ dependencies:
+ cliui "^4.0.0"
+ decamelize "^1.1.1"
+ find-up "^2.1.0"
+ get-caller-file "^1.0.1"
+ os-locale "^2.0.0"
+ require-directory "^2.1.1"
+ require-main-filename "^1.0.1"
+ set-blocking "^2.0.0"
+ string-width "^2.0.0"
+ which-module "^2.0.0"
+ y18n "^3.2.1"
+ yargs-parser "^9.0.2"
yargs@^7.0.0:
version "7.1.0"