From d530aca4d09cc15fc209737f9a7957ac9ee88b9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciar=C3=A1n=20Ainsworth?= Date: Thu, 23 May 2019 10:37:16 +0200 Subject: [PATCH 001/291] Resolve "Add documentation for resolver conf" --- docs/admin/external-storages.rst | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/docs/admin/external-storages.rst b/docs/admin/external-storages.rst index c8dbbe963..bd136df62 100644 --- a/docs/admin/external-storages.rst +++ b/docs/admin/external-storages.rst @@ -115,3 +115,29 @@ If you are using ``awscli``, you can store this policy in a ``/tmp/policy`` file apply it using the following command:: aws s3api put-bucket-policy --bucket --policy file:///tmp/policy + +Troubleshooting +*************** + +No Resolver Found +^^^^^^^^^^^^^^^^^ + +Depending on your setup, you may experience the following issue when trying to stream +music directly from your S3-compatible store. + +.. code-block:: shell + + [error] 2832#2832: *1 no resolver defined to resolve [address] client: [IP], server: [servername], request: "GET API request", host: "[your_domain]", referrer: "[your_domain/library]" + +This happpens when the nginx config is unable to use your server's DNS resolver. This issue +is still under investigation, but in the meantime can be worked around by specifying a resolver +in your ``funkwhale.template`` under the ``location ~/_protected/media/(.+)`` section. + +.. code-block:: shell + + location ~ /_protected/media/(.+) { + resolver 1.1.1.1; + internal; + proxy_pass $1; + } + From 7bcf896f3a4e7b77ff5f1a343439f49eccf0b589 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciar=C3=A1n=20Ainsworth?= Date: Thu, 23 May 2019 19:18:37 +0100 Subject: [PATCH 002/291] Added fix + changelog fragment for #838 --- changes/changelog.d/838.bugfix | 1 + front/src/components/audio/Player.vue | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 changes/changelog.d/838.bugfix diff --git a/changes/changelog.d/838.bugfix b/changes/changelog.d/838.bugfix new file mode 100644 index 000000000..339489756 --- /dev/null +++ b/changes/changelog.d/838.bugfix @@ -0,0 +1 @@ +Fixed issue with player changing height when hovering over the volume slider (#838) diff --git a/front/src/components/audio/Player.vue b/front/src/components/audio/Player.vue index ea15ebc87..8faaf670c 100644 --- a/front/src/components/audio/Player.vue +++ b/front/src/components/audio/Player.vue @@ -199,7 +199,6 @@ @click.prevent.stop="clean()" class="two wide column control"> - @@ -926,6 +925,11 @@ export default { animation-timing-function: linear; animation-iteration-count: infinite; } + +.icons { + position: absolute; +} + i.icons .corner.icon { font-size: 1em; right: -0.3em; From 446eafd677ce51dffdb3fb2fa90a9f45785c1ebe Mon Sep 17 00:00:00 2001 From: ButterflyOfFire Date: Thu, 16 May 2019 12:58:55 +0000 Subject: [PATCH 003/291] Translated using Weblate (Arabic) Currently translated at 83.2% (731 of 879 strings) Translation: Funkwhale/Funkwhale's server front-end Translate-URL: https://translate.funkwhale.audio/projects/funkwhale/front/ar/ --- front/locales/ar/LC_MESSAGES/app.po | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/front/locales/ar/LC_MESSAGES/app.po b/front/locales/ar/LC_MESSAGES/app.po index 83f9dcddf..4049c769a 100644 --- a/front/locales/ar/LC_MESSAGES/app.po +++ b/front/locales/ar/LC_MESSAGES/app.po @@ -4,14 +4,16 @@ msgstr "" "Project-Id-Version: Arabic (FunkWhale)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-05-16 10:35+0200\n" -"PO-Revision-Date: 2019-05-13 13:31+0000\n" +"PO-Revision-Date: 2019-05-16 13:14+0000\n" "Last-Translator: ButterflyOfFire \n" -"Language-Team: Arabic \n" +"Language-Team: Arabic \n" "Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" "X-Generator: Weblate 3.2.2\n" #: front/src/components/playlists/PlaylistModal.vue:9 @@ -94,7 +96,7 @@ msgstr[5] "%{ count } مَقاطِع" #: front/src/views/content/libraries/Quota.vue:11 msgctxt "Content/Library/Paragraph" msgid "%{ current } used on %{ max } allowed" -msgstr "" +msgstr "%{ current } مُستعمَلة مِن أصل %{ max } المسموح بها" #: front/src/components/common/Duration.vue:2 msgctxt "Content/*/Paragraph" @@ -611,7 +613,7 @@ msgstr "قبول" #: front/src/components/manage/library/EditsCardList.vue:21 msgctxt "Content/*/*/Short" msgid "Approved" -msgstr "قبول" +msgstr "التي تم قبولها" #: front/src/components/library/EditCard.vue:21 msgctxt "Content/Library/Card/Short" @@ -705,7 +707,7 @@ msgstr "أطلب إعادة تعيين كلمة المرور" #: front/src/views/admin/moderation/DomainsDetail.vue:202 msgctxt "Content/Moderation/Title" msgid "Audio content" -msgstr "محتوى مسموع" +msgstr "المحتوى الصوتي" #: front/src/components/ShortcutsModal.vue:55 msgctxt "Popup/Keyboard shortcuts/Title" @@ -2789,7 +2791,7 @@ msgstr "ليس هناك أي إشعار للعرض." #: front/src/components/common/EmptyState.vue:7 msgctxt "Content/*/Paragraph" msgid "No results were found." -msgstr "" +msgstr "لم يتم العثور على أية نتيجة." #: front/src/components/mixins/Translations.vue:10 #: front/src/components/mixins/Translations.vue:11 @@ -4723,7 +4725,7 @@ msgid "" "directly from your browser to enjoy them here." msgstr "" "ارسل ملفات موسيقية (MP3, OGG, FLAC, etc.) مِن مكتبتك الشخصية مباشرة مِن " -"متصفحك للإستمتاع بها هنا." +"متصفحك للاستمتاع بها هنا." #: front/src/components/library/FileUpload.vue:30 msgctxt "Content/Library/Title/Verb" From be27c6d88ea3e3664d84deb153df937edcbc0fea Mon Sep 17 00:00:00 2001 From: ButterflyOfFire Date: Thu, 16 May 2019 13:16:15 +0000 Subject: [PATCH 004/291] Translated using Weblate (Arabic) Currently translated at 83.4% (733 of 879 strings) Translation: Funkwhale/Funkwhale's server front-end Translate-URL: https://translate.funkwhale.audio/projects/funkwhale/front/ar/ --- front/locales/ar/LC_MESSAGES/app.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/front/locales/ar/LC_MESSAGES/app.po b/front/locales/ar/LC_MESSAGES/app.po index 4049c769a..90b297154 100644 --- a/front/locales/ar/LC_MESSAGES/app.po +++ b/front/locales/ar/LC_MESSAGES/app.po @@ -4,7 +4,7 @@ msgstr "" "Project-Id-Version: Arabic (FunkWhale)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-05-16 10:35+0200\n" -"PO-Revision-Date: 2019-05-16 13:14+0000\n" +"PO-Revision-Date: 2019-05-16 13:20+0000\n" "Last-Translator: ButterflyOfFire \n" "Language-Team: Arabic \n" @@ -953,7 +953,7 @@ msgstr "إضغط مرة واحدة و استمع لساعات مِن الموس msgctxt "Content/Library/Link.Title" msgid "" "Click to display more information about the import process for this upload" -msgstr "" +msgstr "اضغط لعرض المزيد من المعلومات حول عملية استيراد هذا التحميل" #: front/src/components/library/FileUpload.vue:82 msgctxt "Content/Library/Paragraph/Call to action" @@ -4752,7 +4752,7 @@ msgstr "" #: front/src/components/library/ImportStatusModal.vue:11 msgctxt "Popup/Import/Message" msgid "Upload was successfully processed by the server." -msgstr "" +msgstr "تم تحميله بنجاح على الخادم." #: front/src/components/library/FileUpload.vue:109 msgctxt "Content/Library/Table" From cd53640c5edaa41da2f093920da3d43dce1c6806 Mon Sep 17 00:00:00 2001 From: ButterflyOfFire Date: Thu, 16 May 2019 13:22:14 +0000 Subject: [PATCH 005/291] Translated using Weblate (Arabic) Currently translated at 83.6% (735 of 879 strings) Translation: Funkwhale/Funkwhale's server front-end Translate-URL: https://translate.funkwhale.audio/projects/funkwhale/front/ar/ --- front/locales/ar/LC_MESSAGES/app.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/front/locales/ar/LC_MESSAGES/app.po b/front/locales/ar/LC_MESSAGES/app.po index 90b297154..a1d9e535b 100644 --- a/front/locales/ar/LC_MESSAGES/app.po +++ b/front/locales/ar/LC_MESSAGES/app.po @@ -4,7 +4,7 @@ msgstr "" "Project-Id-Version: Arabic (FunkWhale)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-05-16 10:35+0200\n" -"PO-Revision-Date: 2019-05-16 13:20+0000\n" +"PO-Revision-Date: 2019-05-23 08:37+0000\n" "Last-Translator: ButterflyOfFire \n" "Language-Team: Arabic \n" @@ -3467,7 +3467,7 @@ msgstr "آخِر زيارة" #: front/src/components/library/FileUpload.vue:63 msgctxt "Content/Library/Paragraph" msgid "Remaining storage space" -msgstr "" +msgstr "مساحة التخزين المتبقية" #: front/src/views/content/remote/Home.vue:6 msgctxt "Content/Library/Title/Noun" @@ -4105,7 +4105,7 @@ msgstr "المنتدى" #: front/src/components/library/FileUpload.vue:85 msgctxt "Content/Library/Paragraph" msgid "Supported extensions: %{ extensions }" -msgstr "" +msgstr "امتدادات الملفات المدعومة: %{ extensions }" #: front/src/components/playlists/Editor.vue:9 msgctxt "Content/Playlist/Paragraph" From 84b450b95b18013795eb45e6ce41ce24309f38c1 Mon Sep 17 00:00:00 2001 From: Sylke Vicious Date: Thu, 16 May 2019 15:03:15 +0000 Subject: [PATCH 006/291] Translated using Weblate (Italian) Currently translated at 100.0% (879 of 879 strings) Translation: Funkwhale/Funkwhale's server front-end Translate-URL: https://translate.funkwhale.audio/projects/funkwhale/front/it/ --- front/locales/it/LC_MESSAGES/app.po | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/front/locales/it/LC_MESSAGES/app.po b/front/locales/it/LC_MESSAGES/app.po index c145b715f..532b297f3 100644 --- a/front/locales/it/LC_MESSAGES/app.po +++ b/front/locales/it/LC_MESSAGES/app.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: front 1.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-05-16 10:35+0200\n" -"PO-Revision-Date: 2019-05-03 10:33+0000\n" +"PO-Revision-Date: 2019-05-23 08:37+0000\n" "Last-Translator: Sylke Vicious \n" "Language-Team: none\n" "Language: it\n" @@ -828,10 +828,9 @@ msgid "Cancel" msgstr "Annulla" #: front/src/views/content/remote/Card.vue:97 -#, fuzzy msgctxt "Content/Library/Card.Paragraph" msgid "Cancel follow request" -msgstr "Richiesta di seguire in sospeso" +msgstr "Annulla richiesta di seguire" #: front/src/components/library/radios/Builder.vue:64 msgctxt "Content/Radio/Table.Label/Noun (Value is a number of Tracks)" From 9afd8589c25d61f1b233b3db610075b6c1385a38 Mon Sep 17 00:00:00 2001 From: Daniele Lira Mereb Date: Thu, 16 May 2019 18:34:42 +0000 Subject: [PATCH 007/291] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (879 of 879 strings) Translation: Funkwhale/Funkwhale's server front-end Translate-URL: https://translate.funkwhale.audio/projects/funkwhale/front/pt_BR/ --- front/locales/pt_BR/LC_MESSAGES/app.po | 713 +++++++++++-------------- 1 file changed, 310 insertions(+), 403 deletions(-) diff --git a/front/locales/pt_BR/LC_MESSAGES/app.po b/front/locales/pt_BR/LC_MESSAGES/app.po index 181c3e8dd..46e1d66e7 100644 --- a/front/locales/pt_BR/LC_MESSAGES/app.po +++ b/front/locales/pt_BR/LC_MESSAGES/app.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: front 0.1.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-05-16 10:35+0200\n" -"PO-Revision-Date: 2019-05-16 07:47+0000\n" +"PO-Revision-Date: 2019-05-23 08:37+0000\n" "Last-Translator: Daniele Lira Mereb \n" "Language-Team: none\n" "Language: pt_BR\n" @@ -34,13 +34,11 @@ msgid "(empty)" msgstr "(vazio)" #: front/src/components/auth/Authorize.vue:16 -#, fuzzy msgctxt "Content/Auth/Title" msgid "%{ app } wants to access your Funkwhale account" -msgstr "Entrar com sua conta Funkwhale" +msgstr "%{ app } quer acessar sua conta Funkwhale" #: front/src/components/common/ActionTable.vue:68 -#, fuzzy msgctxt "Content/*/Paragraph" msgid "%{ count } on %{ total } selected" msgid_plural "%{ count } on %{ total } selected" @@ -50,7 +48,6 @@ msgstr[1] "%{ count } de %{ total } selecionados" #: front/src/components/Sidebar.vue:121 src/components/audio/album/Card.vue:52 #: front/src/views/content/libraries/Card.vue:40 #: src/views/content/remote/Card.vue:30 -#, fuzzy msgctxt "*/*/*" msgid "%{ count } track" msgid_plural "%{ count } tracks" @@ -58,7 +55,6 @@ msgstr[0] "%{ count } faixa" msgstr[1] "%{ count } faixas" #: front/src/components/library/ArtistBase.vue:13 -#, fuzzy msgctxt "Content/Artist/Paragraph" msgid "%{ count } track in %{ albumsCount } albums" msgid_plural "%{ count } tracks in %{ albumsCount } albums" @@ -66,7 +62,6 @@ msgstr[0] "%{ count } faixa em %{ albumsCount } álbuns" msgstr[1] "%{ count } faixas em %{ albumsCount } álbuns" #: front/src/components/library/radios/Builder.vue:81 -#, fuzzy msgctxt "Content/Radio/Table.Paragraph/Short" msgid "%{ count } track matching combined filters" msgid_plural "%{ count } tracks matching combined filters" @@ -74,7 +69,6 @@ msgstr[0] "%{ count } faixa encontrada com os filtros" msgstr[1] "%{ count } faixas encontradas com os filtros" #: front/src/components/playlists/Card.vue:18 -#, fuzzy msgctxt "Content/*/Card/List item" msgid "%{ count} track" msgid_plural "%{ count } tracks" @@ -109,7 +103,6 @@ msgid "%{ username } followed your library \"%{ library }\"" msgstr "%{ username } seguiu sua biblioteca \"%{ library }\"" #: front/src/components/notifications/NotificationRow.vue:41 -#, fuzzy msgctxt "Content/Notifications/Paragraph" msgid "%{ username } wants to follow your library \"%{ library }\"" msgstr "%{ username } seguiu sua biblioteca \"%{ library }\"" @@ -123,10 +116,9 @@ msgstr "Perfil de %{ username }" msgctxt "Popup/Playlist/Paragraph" msgid "" "%{ track } is already in %{ playlist }." -msgstr "" +msgstr "%{ track } já está em %{ playlist }." #: front/src/components/audio/artist/Card.vue:41 -#, fuzzy msgctxt "Content/Artist/Card" msgid "1 album" msgid_plural "%{ count } albums" @@ -134,7 +126,6 @@ msgstr[0] "1 álbum" msgstr[1] "%{ count } álbuns" #: front/src/components/favorites/List.vue:10 -#, fuzzy msgctxt "Content/Favorites/Title" msgid "1 favorite" msgid_plural "%{ count } favorites" @@ -142,10 +133,9 @@ msgstr[0] "1 favorito" msgstr[1] "%{ count } favoritos" #: front/src/components/Home.vue:64 -#, fuzzy msgctxt "Content/Home/Title" msgid "A clean library" -msgstr "Biblioteca limpa" +msgstr "Uma biblioteca limpa" #: front/src/components/library/FileUpload.vue:264 msgctxt "Content/Library/Help text" @@ -153,10 +143,9 @@ msgid "A network error occured while uploading this file" msgstr "Ocorreu um erro de rede ao enviar este arquivo" #: front/src/components/library/EditForm.vue:145 -#, fuzzy msgctxt "*/*/Placeholder" msgid "A short summary describing your changes." -msgstr "Ocorreu um erro ao salvar suas alterações" +msgstr "Ocorreu um erro ao salvar suas alterações." #: front/src/components/About.vue:5 msgctxt "Content/About/Title/Short, Noun" @@ -202,69 +191,63 @@ msgstr "Acesso desativado" #: front/src/components/mixins/Translations.vue:74 msgctxt "Content/OAuth Scopes/Paragraph" msgid "Access to audio files, libraries, artists, albums and tracks" -msgstr "" +msgstr "Ver arquivos de áudio, bibliotecas, artistas, álbuns e faixas" #: front/src/components/mixins/Translations.vue:97 #: front/src/components/mixins/Translations.vue:98 msgctxt "Content/OAuth Scopes/Paragraph" msgid "Access to content filters" -msgstr "" +msgstr "Ver filtros" #: front/src/components/mixins/Translations.vue:105 #: front/src/components/mixins/Translations.vue:106 -#, fuzzy msgctxt "Content/OAuth Scopes/Paragraph" msgid "Access to edits" -msgstr "Acesso desativado" +msgstr "Ver edições" #: front/src/components/mixins/Translations.vue:69 #: front/src/components/mixins/Translations.vue:70 msgctxt "Content/OAuth Scopes/Paragraph" msgid "Access to email, username, and profile information" -msgstr "" +msgstr "Ver e-mail, nome de usuário e informações de perfil" #: front/src/components/mixins/Translations.vue:77 #: front/src/components/mixins/Translations.vue:78 -#, fuzzy msgctxt "Content/OAuth Scopes/Paragraph" msgid "Access to favorites" -msgstr "Favoritar" +msgstr "Ver favoritos" #: front/src/components/mixins/Translations.vue:85 #: front/src/components/mixins/Translations.vue:86 msgctxt "Content/OAuth Scopes/Paragraph" msgid "Access to follows" -msgstr "" +msgstr "Ver seguidos" #: front/src/components/mixins/Translations.vue:81 #: front/src/components/mixins/Translations.vue:82 msgctxt "Content/OAuth Scopes/Paragraph" msgid "Access to listening history" -msgstr "" +msgstr "Ver histórico de escutadas" #: front/src/components/mixins/Translations.vue:101 #: front/src/components/mixins/Translations.vue:102 -#, fuzzy msgctxt "Content/OAuth Scopes/Paragraph" msgid "Access to notifications" -msgstr "Suas notificações" +msgstr "Ver notificações" #: front/src/components/mixins/Translations.vue:89 #: front/src/components/mixins/Translations.vue:90 -#, fuzzy msgctxt "Content/OAuth Scopes/Paragraph" msgid "Access to playlists" -msgstr "Adicionar à lista…" +msgstr "Ver listas" #: front/src/components/mixins/Translations.vue:93 #: front/src/components/mixins/Translations.vue:94 -#, fuzzy msgctxt "Content/OAuth Scopes/Paragraph" msgid "Access to radios" -msgstr "Acesso desativado" +msgstr "Ver rádios" #: front/src/components/Home.vue:101 -#, fuzzy msgctxt "Content/Home/List item" msgid "" "Access your music from a clean interface that focuses on what really matters" @@ -281,17 +264,15 @@ msgstr "Data de acesso" #: front/src/views/admin/library/LibraryDetail.vue:104 #: front/src/views/admin/library/UploadDetail.vue:111 -#, fuzzy msgctxt "*/*/*/Noun" msgid "Account" -msgstr "Contas" +msgstr "Conta" #: front/src/components/manage/library/LibrariesTable.vue:49 #: front/src/components/manage/library/UploadsTable.vue:61 -#, fuzzy msgctxt "*/*/*" msgid "Account" -msgstr "Contas" +msgstr "Conta" #: front/src/views/admin/moderation/AccountsDetail.vue:107 msgctxt "Content/Moderation/Title" @@ -306,7 +287,7 @@ msgstr "Configurações da conta" #: front/src/components/auth/Settings.vue:479 msgctxt "Head/Settings/Title" msgid "Account Settings" -msgstr "Configurações de Conta" +msgstr "Configurações da conta" #: front/src/components/manage/users/UsersTable.vue:39 msgctxt "Content/Admin/Table.Label/Short, Noun" @@ -331,7 +312,6 @@ msgid "Action" msgstr "Ação" #: front/src/components/common/ActionTable.vue:101 -#, fuzzy msgctxt "Content/*/Paragraph" msgid "Action %{ action } was launched successfully on %{ count } element" msgid_plural "" @@ -378,10 +358,9 @@ msgid "Add a domain" msgstr "Adicionar domínio" #: front/src/views/admin/moderation/AccountsDetail.vue:79 -#, fuzzy msgctxt "Content/Moderation/Button/Verb" msgid "Add a moderation policy" -msgstr "Adicionar nova regra de moderação" +msgstr "Adicionar regra de moderação" #: front/src/components/manage/moderation/InstancePolicyForm.vue:4 msgctxt "Content/Moderation/Card.Button.Label/Verb" @@ -397,7 +376,7 @@ msgstr "Adicionar e gerenciar conteúdo" #: front/src/components/playlists/PlaylistModal.vue:31 msgctxt "*/Playlist/Button.Label/Verb" msgid "Add anyways" -msgstr "" +msgstr "Adicionar assim mesmo" #: front/src/components/Sidebar.vue:75 src/views/content/Base.vue:18 msgctxt "*/Library/*/Verb" @@ -473,16 +452,14 @@ msgid "Album" msgstr "Álbum" #: front/src/views/admin/library/TrackDetail.vue:128 -#, fuzzy msgctxt "*/*/*/Noun" msgid "Album artist" msgstr "Álbuns deste artista" #: front/src/views/admin/library/AlbumDetail.vue:92 -#, fuzzy msgctxt "Content/Moderation/Title" msgid "Album data" -msgstr "Nome do álbum" +msgstr "Dados do álbum" #: front/src/components/mixins/Translations.vue:51 #: front/src/components/mixins/Translations.vue:52 @@ -521,24 +498,23 @@ msgid "All" msgstr "Todos" #: front/src/components/common/ActionTable.vue:59 -#, fuzzy msgctxt "Content/*/Paragraph" msgid "All %{ count } element selected" msgid_plural "All %{ count } elements selected" -msgstr[0] "%{ count } de %{ total } selecionado" -msgstr[1] "%{ count } de %{ total } selecionados" +msgstr[0] "%{ count } elemento selecionado" +msgstr[1] "%{ count } elementos selecionados" #: front/src/components/auth/Authorize.vue:107 msgctxt "Head/Authorize/Title" msgid "Allow application" -msgstr "" +msgstr "Permitir aplicativo" #: front/src/components/library/ImportStatusModal.vue:17 msgctxt "Popup/Import/Message" msgid "" "An error occured during upload processing. You will find more information " "below." -msgstr "" +msgstr "Ocorreu um erro durante o envio. Veja mais sobre abaixo." #: front/src/components/playlists/Editor.vue:13 msgctxt "Content/Playlist/Error message.Title" @@ -546,16 +522,14 @@ msgid "An error occured while saving your changes" msgstr "Ocorreu um erro ao salvar suas alterações" #: front/src/components/federation/FetchButton.vue:21 -#, fuzzy msgctxt "Popup/*/Message.Content" msgid "An error occured while trying to refresh data:" -msgstr "Ocorreu um erro ao salvar suas alterações" +msgstr "Ocorreu um erro ao salvar suas alterações:" #: front/src/components/federation/FetchButton.vue:41 -#, fuzzy msgctxt "*/*/Error" msgid "An HTTP error occured while contacting the remote server" -msgstr "Ocorreu um erro ao salvar suas alterações" +msgstr "Ocorreu um erro no HTTP ao contatar o servidor remoto" #: front/src/components/auth/Login.vue:10 msgctxt "Content/Login/Error message/List item" @@ -568,25 +542,23 @@ msgstr "" #: front/src/components/library/ImportStatusModal.vue:145 msgctxt "Popup/Import/Error.Label" msgid "An unkwown error occured" -msgstr "" +msgstr "Ocorreu um erro desconhecido" #: front/src/components/auth/Settings.vue:175 #: src/components/auth/Settings.vue:225 -#, fuzzy msgctxt "*/*/*/Noun" msgid "Application" -msgstr "Ação" +msgstr "Aplicativo" #: front/src/components/auth/ApplicationEdit.vue:12 msgctxt "Content/Applications/Title" msgid "Application details" -msgstr "" +msgstr "Detalhes do aplicativo" #: front/src/components/auth/ApplicationEdit.vue:21 -#, fuzzy msgctxt "Content/Applications/Label" msgid "Application ID" -msgstr "Ação" +msgstr "ID do aplicativo" #: front/src/components/auth/ApplicationEdit.vue:16 msgctxt "Content/Application/Paragraph/" @@ -594,11 +566,13 @@ msgid "" "Application ID and secret are really sensitive values and must be treated " "like passwords. Do not share those with anyone else." msgstr "" +"A ID e o segredo do aplicativo são valores realmente sensíveis e devem ser " +"tratados como senhas. Não compartilhe isso com mais ninguém." #: front/src/components/auth/ApplicationEdit.vue:25 msgctxt "Content/Applications/Label" msgid "Application secret" -msgstr "" +msgstr "Segredo do aplicativo" #: front/src/components/library/EditCard.vue:81 #: front/src/components/notifications/NotificationRow.vue:66 @@ -608,15 +582,14 @@ msgstr "Aprovar" #: front/src/components/library/EditCard.vue:25 #: front/src/components/manage/library/EditsCardList.vue:21 -#, fuzzy msgctxt "Content/*/*/Short" msgid "Approved" -msgstr "Aprovar" +msgstr "Aprovado" #: front/src/components/library/EditCard.vue:21 msgctxt "Content/Library/Card/Short" msgid "Approved and applied" -msgstr "" +msgstr "Aprovado e aplicado" #: front/src/components/auth/Logout.vue:5 msgctxt "Content/Login/Title" @@ -640,10 +613,9 @@ msgid "Artist" msgstr "Artista" #: front/src/views/admin/library/ArtistDetail.vue:91 -#, fuzzy msgctxt "Content/Moderation/Title" msgid "Artist data" -msgstr "Nome do(a) artista" +msgstr "Dados do(a) artista" #: front/src/components/mixins/Translations.vue:52 #: front/src/components/mixins/Translations.vue:53 @@ -706,7 +678,7 @@ msgstr "Solicitar redefinição de senha" #: front/src/views/admin/moderation/DomainsDetail.vue:202 msgctxt "Content/Moderation/Title" msgid "Audio content" -msgstr "Conteúdo do áudio" +msgstr "Conteúdo de áudio" #: front/src/components/ShortcutsModal.vue:55 msgctxt "Popup/Keyboard shortcuts/Title" @@ -716,17 +688,17 @@ msgstr "Atalhos do reprodutor de áudio" #: front/src/components/auth/Authorize.vue:47 msgctxt "Content/Signup/Button.Label/Verb" msgid "Authorize %{ app }" -msgstr "" +msgstr "Permitir %{ app }" #: front/src/components/auth/Authorize.vue:4 msgctxt "Content/Auth/Title/Verb" msgid "Authorize third-party app" -msgstr "" +msgstr "Permitir aplicativo de terceiros" #: front/src/components/auth/Settings.vue:162 msgctxt "Content/Settings/Title/Noun" msgid "Authorized apps" -msgstr "" +msgstr "Aplicativos permitidos" #: front/src/components/playlists/PlaylistModal.vue:40 msgctxt "Popup/Playlist/Title" @@ -746,10 +718,9 @@ msgstr "Voltar à entrada" #: front/src/components/auth/ApplicationEdit.vue:9 #: front/src/components/auth/ApplicationNew.vue:5 -#, fuzzy msgctxt "Content/Applications/Link" msgid "Back to settings" -msgstr "Atualizar configurações" +msgstr "Voltar à configurações" #: front/src/components/library/TrackDetail.vue:48 #: front/src/components/mixins/Translations.vue:55 @@ -786,10 +757,9 @@ msgid "Browse library" msgstr "Explorar biblioteca" #: front/src/components/library/Albums.vue:4 -#, fuzzy msgctxt "Content/Album/Title" msgid "Browsing albums" -msgstr "Explorando rádios" +msgstr "Explorando álbums" #: front/src/components/library/Artists.vue:4 msgctxt "Content/Artist/Title" @@ -820,7 +790,7 @@ msgstr "De %{ artist }" msgctxt "Popup/Library/Paragraph" msgid "By unfollowing this library, you loose access to its content." msgstr "" -"Ao deixar de seguir esta biblioteca, você perderá o acesso ao seu conteúdo." +"Ao deixar de seguir esta biblioteca, você não poderá mais ver o seu conteúdo." #: front/src/views/admin/library/AlbumDetail.vue:214 #: front/src/views/admin/library/ArtistDetail.vue:203 @@ -849,10 +819,9 @@ msgid "Cancel" msgstr "Cancelar" #: front/src/views/content/remote/Card.vue:97 -#, fuzzy msgctxt "Content/Library/Card.Paragraph" msgid "Cancel follow request" -msgstr "Solicitações de seguidor pendentes" +msgstr "Cancelar solicitação para seguir" #: front/src/components/library/radios/Builder.vue:64 msgctxt "Content/Radio/Table.Label/Noun (Value is a number of Tracks)" @@ -905,10 +874,9 @@ msgstr "" "Subsonic." #: front/src/components/auth/Settings.vue:98 -#, fuzzy msgctxt "Popup/Settings/Paragraph" msgid "Changing your password will have the following consequences:" -msgstr "A alteração da senha terá as seguintes consequências" +msgstr "Alterar a senha terá as seguintes consequências:" #: front/src/components/Footer.vue:40 msgctxt "Footer/*/List item.Link" @@ -921,6 +889,8 @@ msgid "" "Checking the parent \"Read\" or \"Write\" scopes implies access to all the " "corresponding children scopes." msgstr "" +"Verificar \"Ler\" e \"Escrever\" implica em verificar também todos os seus " +"dependentes." #: front/src/components/SetInstanceModal.vue:2 msgctxt "Popup/Instance/Title" @@ -959,6 +929,8 @@ msgctxt "Content/Library/Link.Title" msgid "" "Click to display more information about the import process for this upload" msgstr "" +"Clique para mostrar mais informações sobre o processo de importação desse " +"envio" #: front/src/components/library/FileUpload.vue:82 msgctxt "Content/Library/Paragraph/Call to action" @@ -981,7 +953,7 @@ msgstr "Fechar" #: front/src/components/federation/FetchButton.vue:88 msgctxt "*/*/Button.Label/Verb" msgid "Close and reload page" -msgstr "" +msgstr "Fechar e atualizar a página" #: front/src/components/manage/users/InvitationForm.vue:26 #: front/src/components/manage/users/InvitationsTable.vue:42 @@ -1018,31 +990,29 @@ msgstr "Código de confirmação" #: front/src/components/moderation/FilterModal.vue:90 msgctxt "*/Moderation/Message" msgid "Content filter successfully added" -msgstr "" +msgstr "Filtro adicionado" #: front/src/components/mixins/Translations.vue:96 #: front/src/components/mixins/Translations.vue:97 -#, fuzzy msgctxt "Content/OAuth Scopes/Label" msgid "Content filters" -msgstr "Selecione um filtro" +msgstr "Filtros" #: front/src/components/auth/Settings.vue:116 -#, fuzzy msgctxt "Content/Settings/Title/Noun" msgid "Content filters" -msgstr "Selecione um filtro" +msgstr "Filtros" #: front/src/components/auth/Settings.vue:119 msgctxt "Content/Settings/Paragraph" msgid "" "Content filters help you hide content you don't want to see on the service." -msgstr "" +msgstr "Filtros ajudam você a ocultar o que você não quer ver no Funkwhale." #: front/src/components/common/ActionTable.vue:8 msgctxt "Content/*/Button.Help text.Paragraph" msgid "Content have been updated, click refresh to see up-to-date content" -msgstr "Conteúdo modificado, atualize a página para ver o conteúdo atual" +msgstr "Conteúdo alterado, atualize a página" #: front/src/components/Footer.vue:48 msgctxt "Footer/*/List item.Link" @@ -1056,7 +1026,6 @@ msgid "Copy" msgstr "Copiar" #: front/src/components/playlists/Editor.vue:194 -#, fuzzy msgctxt "Content/Playlist/Button.Tooltip/Verb" msgid "Copy queued tracks to playlist" msgstr "Copiar faixas da fila atual para lista" @@ -1064,7 +1033,7 @@ msgstr "Copiar faixas da fila atual para lista" #: front/src/components/auth/Authorize.vue:55 msgctxt "Content/Auth/Paragraph" msgid "Copy-paste the following code in the application:" -msgstr "" +msgstr "Copie e cole no aplicativo o seguinte código:" #: front/src/components/audio/EmbedWizard.vue:21 msgctxt "Popup/Embed/Paragraph" @@ -1103,17 +1072,15 @@ msgid "Create a funkwhale account" msgstr "Criar conta Funkwhale" #: front/src/components/auth/Settings.vue:220 -#, fuzzy msgctxt "Content/Settings/Button.Label" msgid "Create a new application" -msgstr "Criar nova lista" +msgstr "Criar novo aplicativo" #: front/src/components/auth/ApplicationNew.vue:8 #: front/src/components/auth/ApplicationNew.vue:41 -#, fuzzy msgctxt "Content/Applications/Title" msgid "Create a new application" -msgstr "Criar nova lista" +msgstr "Criar novo aplicativo" #: front/src/views/content/libraries/Home.vue:14 msgctxt "Content/Library/Link/Verb" @@ -1131,10 +1098,9 @@ msgid "Create an account" msgstr "Criar conta" #: front/src/components/auth/ApplicationForm.vue:65 -#, fuzzy msgctxt "Content/Applications/Button.Label/Verb" msgid "Create application" -msgstr "Criar lista" +msgstr "Criar aplicativo" #: front/src/views/content/libraries/Form.vue:26 msgctxt "Content/Library/Button.Label/Verb" @@ -1149,7 +1115,7 @@ msgstr "Criar minha conta" #: front/src/components/auth/Settings.vue:264 msgctxt "Content/Applications/Paragraph" msgid "Create one to integrate Funkwhale with third-party applications." -msgstr "" +msgstr "Crie um para integrar o Funkwhale com aplicativos de terceiros." #: front/src/components/playlists/Form.vue:34 msgctxt "Content/Playlist/Button.Label/Verb" @@ -1199,11 +1165,12 @@ msgstr "Uso atual" msgctxt "*/*/Error" msgid "Data returned by the remote server had invalid or missing attributes" msgstr "" +"Dados retornados pelo servidor remoto tinham atributos inválidos ou ausentes" #: front/src/components/federation/FetchButton.vue:17 msgctxt "Popup/*/Message.Content" msgid "Data was refreshed successfully from remote server." -msgstr "" +msgstr "Os dados foram atualizados no servidor remoto." #: front/src/views/content/libraries/Detail.vue:27 msgctxt "Content/Library/Table.Label" @@ -1211,10 +1178,9 @@ msgid "Date" msgstr "Data" #: front/src/components/library/ImportStatusModal.vue:64 -#, fuzzy msgctxt "Popup/Import/Table.Label/Noun" msgid "Debug information" -msgstr "Informações da faixa" +msgstr "Informação de depuração" #: front/src/components/ShortcutsModal.vue:75 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb" @@ -1250,15 +1216,14 @@ msgid "Delete" msgstr "Excluir" #: front/src/components/auth/Settings.vue:254 -#, fuzzy msgctxt "*/Settings/Button.Label/Verb" msgid "Delete application" -msgstr "Excluir lista" +msgstr "Excluir aplicativo" #: front/src/components/auth/Settings.vue:252 msgctxt "Popup/Settings/Title" msgid "Delete application \"%{ application }\"?" -msgstr "" +msgstr "Excluir aplicativo \"%{ application }\"?" #: front/src/views/content/libraries/Form.vue:39 msgctxt "Popup/Library/Button.Label/Verb" @@ -1282,16 +1247,14 @@ msgstr "Excluir rádio" #: front/src/views/admin/library/AlbumDetail.vue:73 #: front/src/views/admin/library/TrackDetail.vue:72 -#, fuzzy msgctxt "Popup/Library/Title" msgid "Delete this album?" -msgstr "Excluir esta biblioteca?" +msgstr "Excluir este álbum?" #: front/src/views/admin/library/ArtistDetail.vue:72 -#, fuzzy msgctxt "Popup/Library/Title" msgid "Delete this artist?" -msgstr "Excluir esta biblioteca?" +msgstr "Excluir este artista?" #: front/src/views/admin/library/LibraryDetail.vue:59 #: front/src/views/content/libraries/Form.vue:31 @@ -1305,16 +1268,14 @@ msgid "Delete this moderation rule?" msgstr "Excluir esta regra de moderação?" #: front/src/components/library/EditCard.vue:94 -#, fuzzy msgctxt "Popup/Library/Title" msgid "Delete this suggestion?" -msgstr "Excluir esta regra de moderação?" +msgstr "Excluir esta sugestão?" #: front/src/views/admin/library/UploadDetail.vue:66 -#, fuzzy msgctxt "Popup/Library/Title" msgid "Delete this upload?" -msgstr "Excluir esta biblioteca?" +msgstr "Excluir este envio?" #: front/src/components/favorites/List.vue:35 #: src/components/library/Albums.vue:26 @@ -1358,8 +1319,8 @@ msgid "" "Determine how much content the user can upload. Leave empty to use the " "default value of the instance." msgstr "" -"Determine quanto conteúdo o usuário pode enviar. Deixe em branco para " -"utilizar o valor padrão da instância." +"Determine quanto conteúdo o usuário pode enviar. Deixe em branco para usar o " +"valor padrão da instância." #: front/src/components/mixins/Translations.vue:8 #: front/src/components/mixins/Translations.vue:9 @@ -1381,7 +1342,7 @@ msgstr "Desativar acesso Subsonic" #: front/src/components/auth/SubsonicTokenForm.vue:49 msgctxt "Popup/Settings/Title" msgid "Disable Subsonic API access?" -msgstr "Desativar acesso da API Subsonic?" +msgstr "Desativar acesso à API Subsonic?" #: front/src/components/manage/moderation/InstancePolicyForm.vue:18 #: front/src/views/admin/moderation/AccountsDetail.vue:157 @@ -1393,7 +1354,7 @@ msgstr "Desativado" #: front/src/views/admin/library/TrackDetail.vue:145 msgctxt "*/*/*/Noun" msgid "Disc number" -msgstr "" +msgstr "Número do disco" #: front/src/components/auth/SubsonicTokenForm.vue:13 msgctxt "Content/Settings/Link" @@ -1441,13 +1402,11 @@ msgid "Do you want to delete the radio \"%{ radio }\"?" msgstr "Você deseja excluir a rádio \"%{ radio }\"?" #: front/src/components/moderation/FilterModal.vue:3 -#, fuzzy msgctxt "Popup/Moderation/Title/Verb" msgid "Do you want to hide content from artist \"%{ name }\"?" -msgstr "Você deseja excluir a rádio \"%{ radio }\"?" +msgstr "Você deseja ocultar o conteúdo do(a) artista \"%{ name }\"?" #: front/src/components/common/ActionTable.vue:37 -#, fuzzy msgctxt "Modal/*/Title" msgid "Do you want to launch %{ action } on %{ count } element?" msgid_plural "Do you want to launch %{ action } on %{ count } elements?" @@ -1541,10 +1500,9 @@ msgstr "Editar" #: front/src/components/auth/ApplicationEdit.vue:30 #: front/src/components/auth/ApplicationEdit.vue:75 -#, fuzzy msgctxt "Content/Applications/Title" msgid "Edit application" -msgstr "Erro ao executar esta ação" +msgstr "Editar aplicativo" #: front/src/components/About.vue:22 msgctxt "Content/Settings/Button.Label/Verb" @@ -1552,44 +1510,39 @@ msgid "Edit instance info" msgstr "Editar informações da instância" #: front/src/components/manage/moderation/InstancePolicyForm.vue:3 -#, fuzzy msgctxt "Content/Moderation/Card.Title/Verb" msgid "Edit moderation rule" -msgstr "Atualizar regra de moderação" +msgstr "Editar regra de moderação" #: front/src/components/library/AlbumEdit.vue:4 msgctxt "Content/*/Title" msgid "Edit this album" -msgstr "" +msgstr "Editar álbum" #: front/src/components/library/ArtistEdit.vue:4 -#, fuzzy msgctxt "Content/*/Title" msgid "Edit this artist" -msgstr "Adicionar a esta lista" +msgstr "Editar artista" #: front/src/components/library/TrackEdit.vue:4 -#, fuzzy msgctxt "Content/*/Title" msgid "Edit this track" -msgstr "Reproduzir esta faixa" +msgstr "Editar faixa" #: front/src/views/admin/library/AlbumDetail.vue:182 #: front/src/views/admin/library/ArtistDetail.vue:171 #: front/src/views/admin/library/Base.vue:5 #: src/views/admin/library/EditsList.vue:24 #: front/src/views/admin/library/TrackDetail.vue:234 -#, fuzzy msgctxt "*/Admin/*/Noun" msgid "Edits" -msgstr "Editar" +msgstr "Edições" #: front/src/components/mixins/Translations.vue:104 #: front/src/components/mixins/Translations.vue:105 -#, fuzzy msgctxt "Content/OAuth Scopes/Label" msgid "Edits" -msgstr "Editar" +msgstr "Edições" #: front/src/components/auth/Signup.vue:30 #: front/src/components/manage/users/UsersTable.vue:38 @@ -1620,10 +1573,9 @@ msgid "Embed this album on your website" msgstr "Incorpore este álbum em seu site" #: front/src/components/library/ArtistBase.vue:37 -#, fuzzy msgctxt "Popup/Artist/Title/Verb" msgid "Embed this artist work on your website" -msgstr "Incorpore esta faixa em seu site" +msgstr "Incorpore a obra do(a) artista em seu site" #: front/src/components/library/TrackBase.vue:45 msgctxt "Popup/Track/Title" @@ -1668,7 +1620,7 @@ msgstr "Insira o nome de uma rádio…" #: front/src/components/library/Albums.vue:119 msgctxt "Content/Search/Input.Placeholder" msgid "Enter album title..." -msgstr "" +msgstr "Insira o título do álbum..." #: front/src/components/library/Artists.vue:116 msgctxt "Content/Search/Input.Placeholder" @@ -1681,7 +1633,6 @@ msgid "Enter playlist name…" msgstr "Insira o nome da lista…" #: front/src/views/auth/PasswordReset.vue:54 -#, fuzzy msgctxt "Content/Signup/Input.Placeholder" msgid "Enter the email address binded to your account" msgstr "Insira o endereço de e-mail associado à sua conta" @@ -1720,10 +1671,9 @@ msgstr "Erro" #: front/src/components/federation/FetchButton.vue:34 #: front/src/components/library/ImportStatusModal.vue:32 -#, fuzzy msgctxt "Popup/Import/Table.Label/Noun" msgid "Error detail" -msgstr "Relatório de erros" +msgstr "Detalhe do erro" #: front/src/views/admin/Settings.vue:87 msgctxt "Content/Admin/Menu" @@ -1732,10 +1682,9 @@ msgstr "Relatório de erros" #: front/src/components/federation/FetchButton.vue:26 #: front/src/components/library/ImportStatusModal.vue:24 -#, fuzzy msgctxt "Popup/Import/Table.Label/Noun" msgid "Error type" -msgstr "Com erro" +msgstr "Tipo do erro" #: front/src/components/common/ActionTable.vue:94 msgctxt "Content/*/Error message/Header" @@ -1748,10 +1697,9 @@ msgid "Error while asking for a password reset" msgstr "Erro ao solicitar redefinição de senha" #: front/src/components/auth/Authorize.vue:6 -#, fuzzy msgctxt "Popup/Moderation/Error message" msgid "Error while authorizing application" -msgstr "Erro ao executar esta ação" +msgstr "Erro ao permitir aplicativo" #: front/src/views/auth/PasswordResetConfirm.vue:7 msgctxt "Content/Signup/Card.Title" @@ -1764,10 +1712,9 @@ msgid "Error while creating domain" msgstr "Erro ao criar domínio" #: front/src/components/moderation/FilterModal.vue:13 -#, fuzzy msgctxt "Popup/Moderation/Error message" msgid "Error while creating filter" -msgstr "Erro ao criar regra" +msgstr "Erro ao criar filtro" #: front/src/components/manage/users/InvitationForm.vue:4 msgctxt "Content/Admin/Error message.Title" @@ -1780,10 +1727,9 @@ msgid "Error while creating rule" msgstr "Erro ao criar regra" #: front/src/components/auth/Authorize.vue:7 -#, fuzzy msgctxt "Popup/Moderation/Error message" msgid "Error while fetching application data" -msgstr "Erro ao gerar convite" +msgstr "Erro ao ver dados do aplicativo" #: front/src/views/admin/moderation/DomainsDetail.vue:118 msgctxt "Content/Moderation/Table" @@ -1801,10 +1747,9 @@ msgid "Error while saving settings" msgstr "Erro ao salvar configurações" #: front/src/components/library/EditForm.vue:46 -#, fuzzy msgctxt "Content/Library/Error message.Title" msgid "Error while submitting edit" -msgstr "Erro ao salvar configurações" +msgstr "Erro ao editar" #: front/src/components/mixins/Translations.vue:32 #: front/src/components/mixins/Translations.vue:33 @@ -1884,10 +1829,9 @@ msgstr "Faixas que falharam:" #: front/src/views/admin/library/AlbumDetail.vue:165 #: front/src/views/admin/library/ArtistDetail.vue:154 #: front/src/views/admin/library/TrackDetail.vue:217 -#, fuzzy msgctxt "*/*/*" msgid "Favorited tracks" -msgstr "Faixas que falharam:" +msgstr "Faixas favoritadas" #: front/src/components/Sidebar.vue:66 msgctxt "Sidebar/Favorites/List item.Link/Noun" @@ -1906,15 +1850,14 @@ msgid "Federation" msgstr "Federação" #: front/src/components/library/TrackDetail.vue:66 -#, fuzzy msgctxt "Content/*/*/Noun" msgid "Federation ID" -msgstr "Federação" +msgstr "ID da federação" #: front/src/components/library/EditCard.vue:45 msgctxt "Content/Library/Card.Table.Header/Short" msgid "Field" -msgstr "" +msgstr "Campo" #: front/src/components/library/FileUpload.vue:93 msgctxt "Content/Library/Table.Label" @@ -1966,7 +1909,7 @@ msgstr "Seguir bibliotecas remotas" #: front/src/views/content/remote/Card.vue:92 msgctxt "Content/Library/Card.Paragraph" msgid "Follow request pending approval" -msgstr "Solicitação de seguidor pendente" +msgstr "Solicitação para seguir pendente" #: front/src/components/mixins/Translations.vue:64 #: front/src/views/admin/library/LibraryDetail.vue:161 @@ -1988,10 +1931,9 @@ msgstr "Seguindo" #: front/src/components/mixins/Translations.vue:84 #: front/src/components/mixins/Translations.vue:85 -#, fuzzy msgctxt "Content/OAuth Scopes/Label" msgid "Follows" -msgstr "Seguir" +msgstr "Seguidos" #: front/src/components/library/TrackBase.vue:17 msgctxt "Content/Track/Paragraph" @@ -1999,12 +1941,13 @@ msgid "" "From album %{ album } by %{ artist }" msgstr "" +"Do álbum %{ album } por %{ artist }" #: front/src/components/auth/Authorize.vue:28 -#, fuzzy msgctxt "Content/Auth/Label/Noun" msgid "Full access" -msgstr "Desativar acesso" +msgstr "Acesso total" #: front/src/components/auth/SubsonicTokenForm.vue:7 msgctxt "Content/Settings/Paragraph'" @@ -2090,10 +2033,9 @@ msgid "Go to home page" msgstr "Ir à página inicial" #: front/src/components/auth/Settings.vue:128 -#, fuzzy msgctxt "Content/Settings/Title" msgid "Hidden artists" -msgstr "Explorando artistas" +msgstr "Artistas ocultados" #: front/src/components/manage/moderation/InstancePolicyForm.vue:114 msgctxt "Content/Moderation/Help text" @@ -2101,20 +2043,19 @@ msgid "Hide account or domain content, except from followers." msgstr "Ocultar conteúdo da conta ou domínio, exceto de seguidores." #: front/src/components/moderation/FilterModal.vue:40 -#, fuzzy msgctxt "Popup/*/Button.Label" msgid "Hide content" -msgstr "Adicionar conteúdo" +msgstr "Ocultar conteúdo" #: front/src/components/audio/PlayButton.vue:26 msgctxt "*/Queue/Dropdown/Button/Label/Short" msgid "Hide content from this artist" -msgstr "" +msgstr "Ocultar conteúdo deste(a) artista" #: front/src/components/audio/Player.vue:643 msgctxt "Sidebar/Player/Icon.Tooltip/Verb" msgid "Hide content from this artist…" -msgstr "" +msgstr "Ocultar conteúdo deste(a) artista…" #: front/src/components/library/Home.vue:65 msgctxt "Head/Home/Title" @@ -2152,12 +2093,13 @@ msgid "" "If you authorize third-party applications to access your data, those " "applications will be listed here." msgstr "" +"Se você permitir que aplicativos de terceiros acessem seus dados, eles " +"aparecerão aqui." #: front/src/components/library/ImportStatusModal.vue:3 -#, fuzzy msgctxt "Popup/Import/Title" msgid "Import detail" -msgstr "Data de importação" +msgstr "Detalhe da importação" #: front/src/components/library/FileUpload.vue:50 msgctxt "Content/Library/Input.Label/Noun" @@ -2186,18 +2128,17 @@ msgstr "Importado" #: front/src/components/federation/FetchButton.vue:47 msgctxt "*/*/Error" msgid "Impossible to connect to the remote server" -msgstr "" +msgstr "não foi possível se conectar com o servidor remoto" #: front/src/components/moderation/FilterModal.vue:26 -#, fuzzy msgctxt "Popup/Moderation/List item" msgid "In \"Recently added\" widget" -msgstr "Adicionado recentemente" +msgstr "No widget \"Recentemente adicionado\"" #: front/src/components/moderation/FilterModal.vue:27 msgctxt "Popup/Moderation/List item" msgid "In artists and album listings" -msgstr "" +msgstr "Em listas de artistas e álbuns" #: front/src/components/favorites/TrackFavoriteIcon.vue:3 msgctxt "Content/Track/Button.Message" @@ -2207,12 +2148,12 @@ msgstr "Nos favoritos" #: front/src/components/moderation/FilterModal.vue:25 msgctxt "Popup/Moderation/List item" msgid "In other users favorites and listening history" -msgstr "" +msgstr "Nos favoritos e histórico de escutadas de outros usuários" #: front/src/components/moderation/FilterModal.vue:28 msgctxt "Popup/Moderation/List item" msgid "In radio suggestions" -msgstr "" +msgstr "Nas sugestões de rádios" #: front/src/components/manage/users/UsersTable.vue:54 msgctxt "Content/Admin/Table" @@ -2225,7 +2166,6 @@ msgid "Increase volume" msgstr "Aumentar volume" #: front/src/components/playlists/Editor.vue:41 -#, fuzzy msgctxt "Content/Playlist/Button.Label/Verb" msgid "Insert from queue (%{ count } track)" msgid_plural "Insert from queue (%{ count } tracks)" @@ -2234,10 +2174,9 @@ msgstr[1] "Inserir da fila (%{ count } faixas)" #: front/src/components/mixins/Translations.vue:16 #: front/src/components/mixins/Translations.vue:17 -#, fuzzy msgctxt "Content/Settings/Dropdown/Short" msgid "Instance" -msgstr "Dados da instância" +msgstr "Instância" #: front/src/views/admin/moderation/DomainsDetail.vue:71 msgctxt "Content/Moderation/Title" @@ -2260,10 +2199,9 @@ msgid "Instance settings" msgstr "Configurações da instância" #: front/src/components/SetInstanceModal.vue:19 -#, fuzzy msgctxt "Popup/Instance/Input.Label/Noun" msgid "Instance URL" -msgstr "Dados da instância" +msgstr "Link da instância" #: front/src/components/library/FileUpload.vue:268 msgctxt "Content/Library/Help text" @@ -2277,7 +2215,7 @@ msgstr "" #: front/src/components/library/ImportStatusModal.vue:139 msgctxt "Popup/Import/Error.Label" msgid "Invalid metadata" -msgstr "" +msgstr "Metadado inválido" #: front/src/components/auth/Signup.vue:44 #: front/src/components/manage/users/InvitationForm.vue:11 @@ -2299,7 +2237,7 @@ msgstr "Registro de bugs" #: front/src/components/SetInstanceModal.vue:5 msgctxt "Popup/Instance/Error message.Title" msgid "It is not possible to connect to the given URL" -msgstr "" +msgstr "Não foi possível entrar neste link" #: front/src/components/Home.vue:50 msgctxt "Content/Home/List item/Verb" @@ -2394,10 +2332,9 @@ msgstr "Bibliotecas" #: front/src/components/mixins/Translations.vue:72 #: front/src/components/mixins/Translations.vue:73 -#, fuzzy msgctxt "Content/OAuth Scopes/Label" msgid "Libraries and uploads" -msgstr "Biblioteca atualizada" +msgstr "Bibliotecas e envios" #: front/src/views/content/libraries/Form.vue:2 msgctxt "Content/Library/Paragraph" @@ -2425,10 +2362,9 @@ msgid "Library created" msgstr "Bibliloteca criada" #: front/src/views/admin/library/LibraryDetail.vue:78 -#, fuzzy msgctxt "Content/Moderation/Title" msgid "Library data" -msgstr "Biblioteca atualizada" +msgstr "Dados da biblioteca" #: front/src/views/content/libraries/Form.vue:123 msgctxt "Content/Library/Message" @@ -2436,10 +2372,9 @@ msgid "Library deleted" msgstr "Biblioteca excluída" #: front/src/views/admin/library/EditsList.vue:4 -#, fuzzy msgctxt "Content/Admin/Title/Noun" msgid "Library edits" -msgstr "Arquivos da biblioteca" +msgstr "Edições na biblioteca" #: front/src/views/content/libraries/Form.vue:100 msgctxt "Content/Library/Message" @@ -2458,20 +2393,19 @@ msgstr "Licença" #: front/src/views/admin/library/TrackDetail.vue:209 msgctxt "*/*/*/Noun" msgid "Listenings" -msgstr "" +msgstr "Escutadas" #: front/src/components/mixins/Translations.vue:80 #: front/src/components/mixins/Translations.vue:81 msgctxt "Content/OAuth Scopes/Label" msgid "Listenings" -msgstr "" +msgstr "Escutadas" #: front/src/components/audio/track/Table.vue:25 #: front/src/components/library/ArtistDetail.vue:28 -#, fuzzy msgctxt "Content/*/Button.Label" msgid "Load more…" -msgstr "Carregando seguidores…" +msgstr "Ver mais…" #: front/src/views/content/libraries/Detail.vue:21 msgctxt "Content/Library/Paragraph" @@ -2495,10 +2429,9 @@ msgid "Loading notifications…" msgstr "Carregando notificações…" #: front/src/views/content/remote/Home.vue:3 -#, fuzzy msgctxt "Content/Library/Paragraph" msgid "Loading remote libraries…" -msgstr "Carregando bibliotecas remotas..." +msgstr "Carregando bibliotecas remotas…" #: front/src/views/content/libraries/Quota.vue:4 msgctxt "Content/Library/Paragraph" @@ -2522,7 +2455,7 @@ msgstr "Carregando seus favoritos…" #: front/src/views/admin/library/UploadDetail.vue:19 msgctxt "Content/Moderation/*/Short, Noun" msgid "Local" -msgstr "" +msgstr "Local" #: front/src/components/manage/moderation/AccountsTable.vue:59 #: front/src/views/admin/moderation/AccountsDetail.vue:18 @@ -2639,10 +2572,9 @@ msgid "Media player" msgstr "Reprodutor de mídia" #: front/src/components/auth/Profile.vue:12 -#, fuzzy msgctxt "Content/Profile/Paragraph" msgid "Member since %{ date }" -msgstr "Registrado desde %{ date }" +msgstr "Membro desde %{ date }" #: front/src/components/Footer.vue:32 msgctxt "Footer/*/List item.Link" @@ -2668,10 +2600,9 @@ msgstr "" "um determinado domínio ou conta." #: front/src/components/library/EditCard.vue:5 -#, fuzzy msgctxt "Content/Library/Card/Short" msgid "Modification %{ id }" -msgstr "Data de modificação" +msgstr "Modificação %{ id }" #: front/src/components/mixins/Translations.vue:48 #: front/src/components/mixins/Translations.vue:49 @@ -2684,7 +2615,7 @@ msgstr "Data de modificação" #: front/src/components/library/TrackBase.vue:61 msgctxt "*/*/Button.Label/Noun" msgid "More…" -msgstr "" +msgstr "Mais…" #: front/src/components/Sidebar.vue:63 src/views/admin/Settings.vue:82 msgctxt "*/*/*/Noun" @@ -2698,17 +2629,15 @@ msgstr "Silenciar" #: front/src/components/manage/moderation/InstancePolicyCard.vue:24 #: front/src/components/manage/moderation/InstancePolicyForm.vue:115 -#, fuzzy msgctxt "Content/Moderation/*/Verb" msgid "Mute activity" -msgstr "Última atividade" +msgstr "Silenciar atividade" #: front/src/components/manage/moderation/InstancePolicyCard.vue:28 #: front/src/components/manage/moderation/InstancePolicyForm.vue:119 -#, fuzzy msgctxt "Content/Moderation/*/Verb" msgid "Mute notifications" -msgstr "Suas notificações" +msgstr "Silenciar notificações" #: front/src/components/Sidebar.vue:34 msgctxt "Sidebar/Profile/Title" @@ -2806,7 +2735,7 @@ msgstr "Novas faixas serão acrescentadas aqui automaticamente." #: front/src/components/library/EditCard.vue:47 msgctxt "Content/Library/Card.Table.Header/Short" msgid "New value" -msgstr "" +msgstr "Novo valor" #: front/src/components/audio/Player.vue:629 msgctxt "Sidebar/Player/Icon.Tooltip" @@ -2834,16 +2763,14 @@ msgid "No artist matched your query" msgstr "Artista não encontrado" #: front/src/components/library/TrackDetail.vue:14 -#, fuzzy msgctxt "Content/Track/Table.Paragraph" msgid "No copyright information available for this track" -msgstr "Sem letras disponíveis para esta faixa." +msgstr "Sem informações de direitos autorais para esta faixa" #: front/src/components/library/TrackDetail.vue:25 -#, fuzzy msgctxt "Content/Track/Table.Paragraph" msgid "No licensing information for this track" -msgstr "Não temos informações de licenciamento para esta faixa" +msgstr "Sem informações de licenciamento para esta faixa" #: front/src/components/federation/LibraryWidget.vue:6 msgctxt "Content/Federation/Paragraph" @@ -2851,7 +2778,6 @@ msgid "No matching library." msgstr "Nenhuma biblioteca encontrada." #: front/src/views/Notifications.vue:28 -#, fuzzy msgctxt "Content/Notifications/Paragraph" msgid "No notification to show." msgstr "Sem notificações." @@ -2859,7 +2785,7 @@ msgstr "Sem notificações." #: front/src/components/common/EmptyState.vue:7 msgctxt "Content/*/Paragraph" msgid "No results were found." -msgstr "" +msgstr "Sem resultados." #: front/src/components/mixins/Translations.vue:10 #: front/src/components/mixins/Translations.vue:11 @@ -2901,7 +2827,7 @@ msgstr "Senha antiga" #: front/src/components/library/EditCard.vue:46 msgctxt "Content/Library/Card.Table.Header/Short" msgid "Old value" -msgstr "" +msgstr "Valor anterior" #: front/src/components/manage/users/InvitationsTable.vue:20 msgctxt "Content/Admin/Dropdown/Adjective" @@ -2912,31 +2838,28 @@ msgstr "Abrir" msgctxt "Popup/Import/Table.Label/Value" msgid "" "Open a support thread (include the debug information below in your message)" -msgstr "" +msgstr "Abra um tópico de suporte (inclua informação de depuração na mensagem)" #: front/src/components/library/AlbumBase.vue:73 #: front/src/components/library/ArtistBase.vue:84 #: front/src/components/library/TrackBase.vue:92 -#, fuzzy msgctxt "Content/Moderation/Link" msgid "Open in moderation interface" -msgstr "Atualizar regra de moderação" +msgstr "Abrir interface de moderação" #: front/src/views/admin/library/AlbumDetail.vue:31 #: front/src/views/admin/library/ArtistDetail.vue:30 #: front/src/views/admin/library/TrackDetail.vue:30 -#, fuzzy msgctxt "Content/Moderation/Link/Verb" msgid "Open local profile" -msgstr "Abrir perfil" +msgstr "Abrir perfil local" #: front/src/views/admin/library/AlbumDetail.vue:46 #: front/src/views/admin/library/ArtistDetail.vue:45 #: front/src/views/admin/library/TrackDetail.vue:45 -#, fuzzy msgctxt "Content/Moderation/Link/Verb" msgid "Open on MusicBrainz" -msgstr "Ver em MusicBrainz" +msgstr "Abrir em MusicBrainz" #: front/src/views/admin/moderation/AccountsDetail.vue:23 msgctxt "Content/Moderation/Link/Verb" @@ -2949,10 +2872,9 @@ msgstr "Abrir perfil" #: front/src/views/admin/library/TrackDetail.vue:53 #: front/src/views/admin/library/UploadDetail.vue:50 #: front/src/views/admin/moderation/AccountsDetail.vue:52 -#, fuzzy msgctxt "Content/Moderation/Link/Verb" msgid "Open remote profile" -msgstr "Abrir perfil" +msgstr "Abrir perfil remoto" #: front/src/views/admin/moderation/DomainsDetail.vue:16 msgctxt "Content/Moderation/Link/Verb" @@ -3050,7 +2972,7 @@ msgstr "Pausar faixa" #: front/src/components/ShortcutsModal.vue:59 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb" msgid "Pause/play the current track" -msgstr "Reproduzir/pausar a faixa atual" +msgstr "Tocar/pausar a faixa atual" #: front/src/components/manage/moderation/InstancePolicyCard.vue:12 msgctxt "Content/Moderation/Card.List item" @@ -3083,16 +3005,14 @@ msgstr "Solicitações de seguidor pendentes" #: front/src/components/library/EditCard.vue:29 #: front/src/components/manage/library/EditsCardList.vue:18 -#, fuzzy msgctxt "Content/Admin/*/Noun" msgid "Pending review" -msgstr "Arquivos pendentes" +msgstr "Revisão pendente" #: front/src/components/Sidebar.vue:226 -#, fuzzy msgctxt "Sidebar/Moderation/Hidden text" msgid "Pending review edits" -msgstr "Arquivos pendentes" +msgstr "Edições de revisão pendente" #: front/src/components/manage/users/UsersTable.vue:42 #: front/src/views/admin/moderation/AccountsDetail.vue:166 @@ -3109,7 +3029,7 @@ msgstr "Permissões" #: front/src/components/library/TrackBase.vue:26 msgctxt "*/Queue/Button.Label/Short, Verb" msgid "Play" -msgstr "Reproduzir" +msgstr "Tocar" #: front/src/components/audio/album/Card.vue:48 #: front/src/components/audio/artist/Card.vue:44 @@ -3118,53 +3038,52 @@ msgstr "Reproduzir" #: src/views/playlists/Detail.vue:24 msgctxt "Content/Queue/Button.Label/Short, Verb" msgid "Play all" -msgstr "Reproduzir tudo" +msgstr "Tocar tudo" #: front/src/components/library/ArtistBase.vue:31 msgctxt "Content/Artist/Button.Label/Verb" msgid "Play all albums" -msgstr "Reproduzir todos os álbuns" +msgstr "Tocar todos os álbuns" #: front/src/components/audio/PlayButton.vue:76 msgctxt "*/Queue/Dropdown/Button/Title" msgid "Play next" -msgstr "Reproduzir próxima" +msgstr "Tocar próxima" #: front/src/components/ShortcutsModal.vue:67 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb" msgid "Play next track" -msgstr "Reproduzir próxima faixa" +msgstr "Tocar próxima faixa" #: front/src/components/audio/PlayButton.vue:74 msgctxt "*/Queue/Dropdown/Button/Title" msgid "Play now" -msgstr "Reproduzir agora" +msgstr "Tocar agora" #: front/src/components/ShortcutsModal.vue:63 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb" msgid "Play previous track" -msgstr "Reproduzir faixa anterior" +msgstr "Tocar faixa anterior" #: front/src/components/audio/PlayButton.vue:77 msgctxt "*/Queue/Dropdown/Button/Title" msgid "Play similar songs" -msgstr "" +msgstr "Tocar músicas parecidas" #: front/src/components/Sidebar.vue:224 msgctxt "Sidebar/Player/Hidden text" msgid "Play this track" -msgstr "Reproduzir esta faixa" +msgstr "Tocar esta faixa" #: front/src/components/audio/Player.vue:627 msgctxt "Sidebar/Player/Icon.Tooltip/Verb" msgid "Play track" -msgstr "Reproduzir faixa" +msgstr "Tocar faixa" #: front/src/components/audio/PlayButton.vue:82 -#, fuzzy msgctxt "*/Queue/Button/Title" msgid "Play..." -msgstr "Reproduzir" +msgstr "Tocar..." #: front/src/views/playlists/Detail.vue:91 msgctxt "Head/Playlist/Title" @@ -3172,12 +3091,11 @@ msgid "Playlist" msgstr "Lista" #: front/src/views/playlists/Detail.vue:12 -#, fuzzy msgctxt "Content/Playlist/Header.Subtitle" msgid "Playlist containing %{ count } track, by %{ username }" msgid_plural "Playlist containing %{ count } tracks, by %{ username }" -msgstr[0] "Lista contendo %{ count } faixa, de %{ username }" -msgstr[1] "Lista contendo %{ count } faixas, de %{ username }" +msgstr[0] "Lista contendo %{ count } faixa de %{ username }" +msgstr[1] "Lista contendo %{ count } faixas de %{ username }" #: front/src/components/playlists/Form.vue:9 msgctxt "Content/Playlist/Message" @@ -3241,10 +3159,9 @@ msgid "PNG, GIF or JPG. At most 2MB. Will be downscaled to 400x400px." msgstr "PNG, GIF ou JPG. No máximo 2MB. Será reduzido para 400x400px." #: front/src/views/admin/library/TrackDetail.vue:137 -#, fuzzy msgctxt "*/*/*/Noun" msgid "Position" -msgstr "Paginação" +msgstr "Posição" #: front/src/components/manage/moderation/InstancePolicyForm.vue:118 msgctxt "Content/Moderation/Help text" @@ -3267,7 +3184,7 @@ msgstr "Faixa anterior" #: front/src/components/mixins/Translations.vue:16 msgctxt "Content/Settings/Dropdown/Short" msgid "Private" -msgstr "" +msgstr "Privado" #: front/src/views/content/remote/Card.vue:43 msgctxt "Content/Library/Card.List item" @@ -3292,10 +3209,9 @@ msgstr "Processando" #: front/src/components/mixins/Translations.vue:68 #: front/src/components/mixins/Translations.vue:69 -#, fuzzy msgctxt "Content/OAuth Scopes/Label" msgid "Profile" -msgstr "Abrir perfil" +msgstr "Perfil" #: front/src/components/manage/moderation/AccountsTable.vue:188 #: front/src/components/manage/moderation/DomainsTable.vue:168 @@ -3374,22 +3290,22 @@ msgstr "Rádios" #: front/src/components/auth/ApplicationForm.vue:151 msgctxt "Content/OAuth Scopes/Label/Verb" msgid "Read" -msgstr "" +msgstr "Ler" #: front/src/components/library/ImportStatusModal.vue:51 msgctxt "Popup/Import/Table.Label/Value" msgid "Read our documentation for this error" -msgstr "" +msgstr "Leia nossa documentação para este erro" #: front/src/components/auth/Authorize.vue:24 msgctxt "Content/Auth/Label/Noun" msgid "Read-only" -msgstr "" +msgstr "Apenas leitura" #: front/src/components/auth/ApplicationForm.vue:152 msgctxt "Content/OAuth Scopes/Help Text" msgid "Read-only access to user data" -msgstr "" +msgstr "Apenas lê seus dados de usuário" #: front/src/components/manage/moderation/InstancePolicyCard.vue:39 #: front/src/components/manage/moderation/InstancePolicyForm.vue:25 @@ -3411,15 +3327,14 @@ msgid "Received messages" msgstr "Mensagens recebidas" #: front/src/components/library/EditForm.vue:27 -#, fuzzy msgctxt "Content/Library/Paragraph" msgid "Recent edits" -msgstr "Adicionado recentemente" +msgstr "Edições recentes" #: front/src/components/library/EditForm.vue:17 msgctxt "Content/Library/Paragraph" msgid "Recent edits awaiting review" -msgstr "" +msgstr "Edições recentes esperando revisão" #: front/src/components/library/Home.vue:24 msgctxt "Content/Home/Title" @@ -3439,7 +3354,7 @@ msgstr "Escutado recentemente" #: front/src/components/auth/ApplicationForm.vue:13 msgctxt "Content/Applications/Input.Label/Noun" msgid "Redirect URI" -msgstr "" +msgstr "Redirecionar link" #: front/src/components/auth/Settings.vue:125 #: src/components/auth/Settings.vue:170 @@ -3450,17 +3365,16 @@ msgid "Refresh" msgstr "Atualizar" #: front/src/components/federation/FetchButton.vue:20 -#, fuzzy msgctxt "Popup/*/Message.Title" msgid "Refresh error" -msgstr "Atualizar" +msgstr "Atualizar erro" #: front/src/views/admin/library/AlbumDetail.vue:50 #: front/src/views/admin/library/ArtistDetail.vue:49 #: front/src/views/admin/library/TrackDetail.vue:49 msgctxt "Content/Moderation/Button/Verb" msgid "Refresh from remote server" -msgstr "" +msgstr "Atualizar a partir de um servidor remoto" #: front/src/views/admin/moderation/DomainsDetail.vue:127 msgctxt "Content/Moderation/Button.Label/Verb" @@ -3468,10 +3382,9 @@ msgid "Refresh node info" msgstr "Atualizar node info" #: front/src/components/federation/FetchButton.vue:79 -#, fuzzy msgctxt "Popup/*/Message.Title" msgid "Refresh pending" -msgstr "Atualizar node info" +msgstr "Atualizar pendentes" #: front/src/components/federation/FetchButton.vue:80 msgctxt "Popup/*/Message.Content" @@ -3479,11 +3392,13 @@ msgid "" "Refresh request wasn't proceed in time by our server. It will be processed " "later." msgstr "" +"A solicitação de atualização não foi realizada a tempo pelo nosso servidor. " +"Será processado mais tarde." #: front/src/components/federation/FetchButton.vue:16 msgctxt "Popup/*/Message.Title" msgid "Refresh successful" -msgstr "" +msgstr "Atualizado" #: front/src/components/common/ActionTable.vue:275 msgctxt "Content/*/Button.Tooltip/Verb" @@ -3493,12 +3408,12 @@ msgstr "Atualizar tabela de conteúdo" #: front/src/components/federation/FetchButton.vue:12 msgctxt "Popup/*/Message.Title" msgid "Refresh was skipped" -msgstr "" +msgstr "Atualização foi ignorada" #: front/src/components/federation/FetchButton.vue:7 msgctxt "Popup/*/Title" msgid "Refreshing object from remote…" -msgstr "" +msgstr "Atualizando objeto do servidor remoto…" #: front/src/components/auth/Signup.vue:9 msgctxt "Content/Signup/Form/Paragraph" @@ -3510,10 +3425,9 @@ msgstr "" "convite para criar uma conta." #: front/src/components/manage/users/UsersTable.vue:71 -#, fuzzy msgctxt "Content/Admin/Table, User role" msgid "Regular user" -msgstr "usuário regular" +msgstr "Usuário regular" #: front/src/components/library/EditCard.vue:87 #: front/src/views/content/libraries/Detail.vue:51 @@ -3537,15 +3451,14 @@ msgstr "Recusado" #: front/src/components/manage/library/AlbumsTable.vue:43 #: front/src/components/mixins/Translations.vue:44 src/edits.js:28 #: front/src/components/mixins/Translations.vue:45 -#, fuzzy msgctxt "Content/*/*/Noun" msgid "Release date" -msgstr "Data de acesso" +msgstr "Data de lançamento" #: front/src/components/library/FileUpload.vue:63 msgctxt "Content/Library/Paragraph" msgid "Remaining storage space" -msgstr "" +msgstr "Espaço de armazenamento restante" #: front/src/views/content/remote/Home.vue:6 msgctxt "Content/Library/Title/Noun" @@ -3558,8 +3471,8 @@ msgid "" "Remote libraries are owned by other users on the network. You can access " "them as long as they are public or you are granted access." msgstr "" -"Bibliotecas remotas são propriedade de outros usuários da rede. Você pode " -"acessá-las desde que você tenha permissão ou sejam públicas." +"Bibliotecas remotas são de outros usuários da rede. Você pode vê-las desde " +"que você tenha permissão ou sejam públicas." #: front/src/components/library/radios/Filter.vue:59 msgctxt "Content/Radio/Button.Label/Verb" @@ -3572,10 +3485,9 @@ msgid "Remove avatar" msgstr "Remover imagem de perfil" #: front/src/components/library/ArtistDetail.vue:12 -#, fuzzy msgctxt "Content/Moderation/Button.Label" msgid "Remove filter" -msgstr "Remover imagem de perfil" +msgstr "Excluir filtro" #: front/src/components/favorites/TrackFavoriteIcon.vue:26 msgctxt "Content/Track/Icon.Tooltip/Verb" @@ -3628,12 +3540,12 @@ msgstr "Solicitar uma senha" #: front/src/components/federation/FetchButton.vue:64 msgctxt "Popup/*/Loading.Title" msgid "Requesting a fetch…" -msgstr "" +msgstr "Requisitando busca…" #: front/src/components/library/EditForm.vue:82 msgctxt "Content/Library/Button.Label" msgid "Reset to initial value: %{ value }" -msgstr "" +msgstr "Redefinir para o valor inicial: %{ value }" #: front/src/components/auth/Login.vue:35 src/views/auth/PasswordReset.vue:4 #: front/src/views/auth/PasswordReset.vue:53 @@ -3642,10 +3554,9 @@ msgid "Reset your password" msgstr "Redefinir sua senha" #: front/src/views/content/libraries/FilesTable.vue:223 -#, fuzzy msgctxt "Content/Library/Dropdown/Verb" msgid "Restart import" -msgstr "Repetir importação" +msgstr "Reiniciar importação" #: front/src/components/favorites/List.vue:39 #: src/components/library/Albums.vue:30 @@ -3658,7 +3569,7 @@ msgstr "Resultados por página" #: front/src/components/library/EditForm.vue:31 msgctxt "Content/Library/Button.Label" msgid "Retrict to unreviewed edits" -msgstr "" +msgstr "Mostrar apenas edições não revisadas" #: front/src/views/auth/EmailConfirm.vue:17 msgctxt "Content/Signup/Link/Verb" @@ -3666,25 +3577,24 @@ msgid "Return to login" msgstr "Voltar para entrada" #: front/src/components/library/ArtistDetail.vue:9 -#, fuzzy msgctxt "Content/Moderation/Link" msgid "Review my filters" -msgstr "Ver arquivos" +msgstr "Revisar filtros" #: front/src/components/auth/Settings.vue:192 msgctxt "*/*/*/Verb" msgid "Revoke" -msgstr "" +msgstr "Revogar" #: front/src/components/auth/Settings.vue:195 msgctxt "*/Settings/Button.Label/Verb" msgid "Revoke access" -msgstr "" +msgstr "Revogar acesso" #: front/src/components/auth/Settings.vue:193 msgctxt "Popup/Settings/Title" msgid "Revoke access for application \"%{ application }\"?" -msgstr "" +msgstr "Revogar acesso do aplicativo \"%{ application }\"?" #: front/src/components/manage/moderation/InstancePolicyCard.vue:16 msgctxt "Content/Moderation/Card.Title/Noun" @@ -3708,10 +3618,9 @@ msgid "Scan now" msgstr "Iniciar varredura" #: front/src/views/content/remote/Card.vue:35 -#, fuzzy msgctxt "Content/Library/Card.List item" msgid "Scan pending" -msgstr "Crescente" +msgstr "Varredura pendente" #: front/src/views/content/remote/Card.vue:176 msgctxt "Content/Library/Message" @@ -3736,12 +3645,12 @@ msgstr "Varrendo… (%{ progress }%)" #: front/src/components/auth/ApplicationForm.vue:22 msgctxt "Content/Applications/Input.Label/Noun" msgid "Scopes" -msgstr "" +msgstr "Campos" #: front/src/components/auth/Settings.vue:226 msgctxt "Content/*/*/Noun" msgid "Scopes" -msgstr "" +msgstr "Campos" #: front/src/components/library/Albums.vue:10 #: src/components/library/Artists.vue:10 @@ -3768,52 +3677,44 @@ msgid "Search a remote library" msgstr "Pesquisar uma biblioteca remota" #: front/src/components/manage/library/EditsCardList.vue:211 -#, fuzzy msgctxt "Content/Search/Input.Placeholder" msgid "Search by account, summary, domain…" -msgstr "Pesquisar por título, artista, domínio…" +msgstr "Pesquisar por conta, resumo, domínio…" #: front/src/components/manage/library/LibrariesTable.vue:191 -#, fuzzy msgctxt "Content/Search/Input.Placeholder" msgid "Search by domain, actor, name, description…" -msgstr "Pesquisar por domínio, nome de usuário, biografia..." +msgstr "Pesquisar por domínio, artista, nome, descrição…" #: front/src/components/manage/library/UploadsTable.vue:241 -#, fuzzy msgctxt "Content/Search/Input.Placeholder" msgid "Search by domain, actor, name, reference, source…" -msgstr "Pesquisar por domínio, nome de usuário, biografia..." +msgstr "Pesquisar por domínio, artista, nome, referência, fonte…" #: front/src/components/manage/library/ArtistsTable.vue:164 -#, fuzzy msgctxt "Content/Search/Input.Placeholder" msgid "Search by domain, name, MusicBrainz ID…" -msgstr "Pesquisar por domínio, nome de usuário, biografia..." +msgstr "Pesquisar por domínio, nome, ID MusicBrainz…" #: front/src/components/manage/library/TracksTable.vue:174 -#, fuzzy msgctxt "Content/Search/Input.Placeholder" msgid "Search by domain, title, artist, album, MusicBrainz ID…" -msgstr "Pesquisar por título, artista, álbum…" +msgstr "Pesquisar por domínio, título, artista, álbum, ID MusicBrainz…" #: front/src/components/manage/library/AlbumsTable.vue:174 -#, fuzzy msgctxt "Content/Search/Input.Placeholder" msgid "Search by domain, title, artist, MusicBrainz ID…" -msgstr "Pesquisar por título, artista, domínio…" +msgstr "Pesquisar por domínio, título, artista, ID MusicBrainz…" #: front/src/components/manage/moderation/AccountsTable.vue:171 -#, fuzzy msgctxt "Content/Search/Input.Placeholder" msgid "Search by domain, username, bio…" -msgstr "Pesquisar por domínio, nome de usuário, biografia..." +msgstr "Pesquisar por domínio, nome de usuário, bio…" #: front/src/components/manage/moderation/DomainsTable.vue:151 -#, fuzzy msgctxt "Content/Search/Input.Placeholder" msgid "Search by name…" -msgstr "Pesquisar por nome..." +msgstr "Pesquisar por nome…" #: front/src/views/content/libraries/FilesTable.vue:208 msgctxt "Content/Library/Input.Placeholder" @@ -3866,7 +3767,6 @@ msgid "Select a filter" msgstr "Selecione um filtro" #: front/src/components/common/ActionTable.vue:79 -#, fuzzy msgctxt "Content/*/Link/Verb" msgid "Select all %{ total } elements" msgid_plural "Select all %{ total } elements" @@ -3893,7 +3793,7 @@ msgstr "Configurações atualizadas" #: front/src/components/admin/SettingsGroup.vue:11 msgctxt "Content/Settings/Paragraph" msgid "Settings updated successfully." -msgstr "As configurações foram atualizadas com sucesso." +msgstr "As configurações foram atualizadas." #: front/src/components/manage/users/InvitationForm.vue:27 msgctxt "Content/Admin/Table.Label/Noun" @@ -3905,8 +3805,8 @@ msgctxt "Content/Library/Paragraph" msgid "" "Share this link with other users so they can request access to your library." msgstr "" -"Compartilhe este link com outros usuários para que possam solicitar acesso à" -" sua biblioteca." +"Compartilhe este link com outros usuários para que possam solicitar " +"permissão para ver sua biblioteca." #: front/src/views/content/libraries/Detail.vue:14 #: front/src/views/content/remote/Card.vue:77 @@ -3915,7 +3815,6 @@ msgid "Sharing link" msgstr "Link de compartilhamento" #: front/src/components/audio/album/Card.vue:38 -#, fuzzy msgctxt "Content/Album/Card.Link/Verb" msgid "Show %{ count } more track" msgid_plural "Show %{ count } more tracks" @@ -3923,7 +3822,6 @@ msgstr[0] "Mostrar mais %{ count } faixa" msgstr[1] "Mostrar mais %{ count } faixas" #: front/src/components/audio/artist/Card.vue:30 -#, fuzzy msgctxt "Content/Artist/Card.Link" msgid "Show 1 more album" msgid_plural "Show %{ count } more albums" @@ -3933,7 +3831,7 @@ msgstr[1] "Mostrar mais %{ count } álbuns" #: front/src/components/library/EditForm.vue:21 msgctxt "Content/Library/Button.Label" msgid "Show all edits" -msgstr "" +msgstr "Mostrar todas as edições" #: front/src/components/ShortcutsModal.vue:42 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb" @@ -4028,10 +3926,9 @@ msgstr "Software" #: front/src/components/playlists/Editor.vue:21 msgctxt "Content/Playlist/Paragraph" msgid "Some tracks in your queue are already in this playlist:" -msgstr "" +msgstr "Algumas faixas na sua fila já estão nesta lista:" #: front/src/components/PageNotFound.vue:10 -#, fuzzy msgctxt "Content/*/Paragraph" msgid "Sorry, the page you asked for does not exist:" msgstr "Desculpe, mas esta página não existe:" @@ -4049,10 +3946,9 @@ msgstr "Membro da equipe" #: front/src/components/audio/PlayButton.vue:23 #: src/components/radios/Button.vue:4 -#, fuzzy msgctxt "*/Queue/Button.Label/Short, Verb" msgid "Start radio" -msgstr "Parar rádio" +msgstr "Reproduzir rádio" #: front/src/views/admin/Settings.vue:86 msgctxt "Content/Admin/Menu" @@ -4082,14 +3978,13 @@ msgstr "" #: front/src/views/admin/library/LibraryDetail.vue:316 #: front/src/views/admin/library/TrackDetail.vue:371 #: front/src/views/admin/library/UploadDetail.vue:335 -#, fuzzy msgctxt "Content/Moderation/Help text" msgid "" "Statistics are computed from known activity and content on your instance, " "and do not reflect general activity for this object" msgstr "" "Estatísticas são calculadas por atividades conhecidas e conteúdo da " -"instância, e não refletem a atividade geral desta conta" +"instância, e não refletem a atividade geral deste objeto" #: front/src/views/admin/moderation/DomainsDetail.vue:115 msgctxt "Content/Moderation/Table.Label (Value is Error message)" @@ -4137,17 +4032,17 @@ msgstr "Enviar" #: front/src/components/library/EditForm.vue:98 msgctxt "Content/Library/Button.Label/Verb" msgid "Submit and apply edit" -msgstr "" +msgstr "Enviar e aplicar edição" #: front/src/components/library/EditForm.vue:7 msgctxt "Content/Library/Button.Label" msgid "Submit another edit" -msgstr "" +msgstr "Enviar outra edição" #: front/src/components/library/EditForm.vue:99 msgctxt "Content/Library/Button.Label/Verb" msgid "Submit suggestion" -msgstr "" +msgstr "Enviar sugestão" #: front/src/views/admin/Settings.vue:85 msgctxt "Content/Admin/Menu" @@ -4162,23 +4057,22 @@ msgstr "Senha da API Subsonic" #: front/src/components/library/EditForm.vue:38 msgctxt "Content/Library/Paragraph" msgid "Suggest a change using the form below." -msgstr "" +msgstr "Sugira uma alteração usando o formulário abaixo." #: front/src/components/library/AlbumEdit.vue:5 msgctxt "Content/*/Title" msgid "Suggest an edit on this album" -msgstr "" +msgstr "Sugerir edição neste álbum" #: front/src/components/library/ArtistEdit.vue:5 msgctxt "Content/*/Title" msgid "Suggest an edit on this artist" -msgstr "" +msgstr "Sugerir edição neste artista" #: front/src/components/library/TrackEdit.vue:5 -#, fuzzy msgctxt "Content/*/Title" msgid "Suggest an edit on this track" -msgstr "Não foi possível carregar esta faixa" +msgstr "Sugerir edição nesta faixa" #: front/src/components/SetInstanceModal.vue:31 msgctxt "Popup/Instance/List.Label" @@ -4193,7 +4087,7 @@ msgstr "Resumo" #: front/src/components/library/EditForm.vue:87 msgctxt "*/*/*" msgid "Summary (optional)" -msgstr "" +msgstr "Resumo (opcional)" #: front/src/components/Footer.vue:39 msgctxt "Footer/*/Listitem.Link" @@ -4231,11 +4125,14 @@ msgid "" "The album will be removed, as well as associated uploads, tracks, favorites " "and listening history. This action is irreversible." msgstr "" +"O álbum será permanentemente excluído, junto com os envios, faixas, " +"favoritos e histórico de escutadas." #: front/src/components/auth/Authorize.vue:39 msgctxt "Content/Auth/Paragraph" msgid "The application is also requesting the following unknown permissions:" msgstr "" +"O aplicativo também está solicitando as seguintes permissões desconhecidas:" #: front/src/views/admin/library/ArtistDetail.vue:74 msgctxt "Content/Moderation/Paragraph" @@ -4243,6 +4140,8 @@ msgid "" "The artist will be removed, as well as associated uploads, tracks, albums, " "favorites and listening history. This action is irreversible." msgstr "" +"O(A) artista será permanentemente excluído(a), junto com os envios, faixas, " +"álbuns, favoritos e histórico de escutadas." #: front/src/components/Footer.vue:53 msgctxt "Footer/*/List item.Link" @@ -4254,7 +4153,7 @@ msgstr "" #: front/src/components/SetInstanceModal.vue:8 msgctxt "Popup/Instance/Error message.List item" msgid "The given address is not a Funkwhale server" -msgstr "" +msgstr "Este link não é de uma instância Funkwhale" #: front/src/views/content/libraries/Form.vue:34 msgctxt "Popup/Library/Paragraph" @@ -4268,6 +4167,8 @@ msgid "" "The library will be removed, as well as associated uploads, and follows. " "This action is irreversible." msgstr "" +"A biblioteca será permanentemente excluída, junto com os envios e os " +"seguidos." #: front/src/components/library/ImportStatusModal.vue:140 msgctxt "Popup/Import/Error.Label" @@ -4275,19 +4176,19 @@ msgid "" "The metadata included in the file is invalid or some mandatory fields are " "missing." msgstr "" +"Os metadados incluídos no arquivo são inválidos ou alguns campos " +"obrigatórios estão faltando." #: front/src/components/library/FileUpload.vue:38 -#, fuzzy msgctxt "Content/Library/List item" msgid "The music files you are uploading are tagged properly." -msgstr "Os arquivos de áudio que você está enviando estão com as tags certas:" +msgstr "" +"Os arquivos de áudio que você está enviando estão com as tags adequadas." #: front/src/components/audio/Player.vue:65 -#, fuzzy msgctxt "Sidebar/Player/Error message.Paragraph" msgid "The next track will play automatically in a few seconds…" -msgstr "" -"A próxima faixa será reproduzida automaticamente em alguns segundos..." +msgstr "A próxima faixa tocará automaticamente em alguns segundos…" #: front/src/components/Home.vue:116 msgctxt "Content/Home/List item" @@ -4299,31 +4200,30 @@ msgstr "" "sem se preocupar" #: front/src/components/playlists/Form.vue:14 -#, fuzzy msgctxt "Content/Playlist/Error message.Title" msgid "The playlist could not be created" -msgstr "Lista criada" +msgstr "A lista não foi criada" #: front/src/components/federation/FetchButton.vue:37 msgctxt "*/*/Error" msgid "The remote server answered with HTTP %{ status }" -msgstr "" +msgstr "O servidor remoto retornou com HTTP %{ status }" #: front/src/components/federation/FetchButton.vue:13 msgctxt "Popup/*/Message.Content" msgid "" "The remote server answered, but returned data was unsupported by Funkwhale." -msgstr "" +msgstr "O servidor remoto retornou dados não suportados pelo Funkwhale." #: front/src/components/federation/FetchButton.vue:44 msgctxt "*/*/Error" msgid "The remote server didn't answered fast enough" -msgstr "" +msgstr "O servidor remoto não respondeu a tempo" #: front/src/components/federation/FetchButton.vue:50 msgctxt "*/*/Error" msgid "The return server returned invalid JSON or JSON-LD data" -msgstr "" +msgstr "O servidor remoto retornou dados inválidos de JSON ou JSON-LD" #: front/src/components/manage/library/AlbumsTable.vue:189 msgctxt "Popup/*/Paragraph" @@ -4331,6 +4231,8 @@ msgid "" "The selected albums will be removed, as well as associated tracks, uploads, " "favorites and listening history. This action is irreversible." msgstr "" +"Os álbuns selecionados serão permanentemente excluídos, junto com as faixas, " +"envios, favoritos e histórico de escutadas." #: front/src/components/manage/library/ArtistsTable.vue:179 msgctxt "Popup/*/Paragraph" @@ -4338,6 +4240,8 @@ msgid "" "The selected artist will be removed, as well as associated uploads, tracks, " "albums, favorites and listening history. This action is irreversible." msgstr "" +"O(A) artista selecionado(a) será permanentemente excluído(a), junto com as " +"faixas, álbuns, favoritos e histórico de escutadas." #: front/src/components/manage/library/LibrariesTable.vue:206 msgctxt "Popup/*/Paragraph" @@ -4345,6 +4249,8 @@ msgid "" "The selected library will be removed, as well as associated uploads and " "follows. This action is irreversible." msgstr "" +"A biblioteca selecionada será permanentemente excluída, junto com os envios " +"e seguidos." #: front/src/components/manage/library/TracksTable.vue:189 msgctxt "Popup/*/Paragraph" @@ -4352,17 +4258,18 @@ msgid "" "The selected tracks will be removed, as well as associated uploads, " "favorites and listening history. This action is irreversible." msgstr "" +"As faixas selecionadas serão permanentemente excluídas, junto com os envios, " +"favoritos e histórico de escutadas." #: front/src/components/manage/library/UploadsTable.vue:256 -#, fuzzy msgctxt "Popup/*/Paragraph" msgid "The selected upload will be removed. This action is irreversible." -msgstr "Esta ação é irreversível." +msgstr "O envio selecionado será permanentemente excluído." #: front/src/components/SetInstanceModal.vue:7 msgctxt "Popup/Instance/Error message.List item" msgid "The server might be down" -msgstr "" +msgstr "Parece que o servidor caiu" #: front/src/components/auth/SubsonicTokenForm.vue:4 msgctxt "Content/Settings/Paragraph" @@ -4373,10 +4280,9 @@ msgstr "A API Subsonic não está disponível nesta instância do Funkwhale." msgctxt "Popup/Library/Paragraph" msgid "" "The suggestion will be completely removed, this action is irreversible." -msgstr "" +msgstr "A sugestão será permanentemente excluída." #: front/src/components/playlists/PlaylistModal.vue:34 -#, fuzzy msgctxt "Popup/Playlist/Error message.Title" msgid "The track can't be added to a playlist" msgstr "Não foi possível adicionar a faixa na lista" @@ -4384,7 +4290,7 @@ msgstr "Não foi possível adicionar a faixa na lista" #: front/src/components/audio/Player.vue:62 msgctxt "Sidebar/Player/Error message.Title" msgid "The track cannot be loaded" -msgstr "" +msgstr "Não foi possível carregar a faixa" #: front/src/views/admin/library/TrackDetail.vue:74 msgctxt "Content/Moderation/Paragraph" @@ -4392,12 +4298,13 @@ msgid "" "The track will be removed, as well as associated uploads, favorites and " "listening history. This action is irreversible." msgstr "" +"A faixa será permanentemente excluída, junto com os envios, favoritos e " +"histórico de escutadas." #: front/src/views/admin/library/UploadDetail.vue:68 -#, fuzzy msgctxt "Content/Moderation/Paragraph" msgid "The upload will be removed. This action is irreversible." -msgstr "Esta ação é irreversível." +msgstr "O envio será permanentemente excluído." #: front/src/components/library/FileUpload.vue:42 msgctxt "Content/Library/List item" @@ -4441,12 +4348,12 @@ msgstr "" msgctxt "Content/Settings/Paragraph" msgid "" "This is the list of applications that have access to your account data." -msgstr "" +msgstr "Esta é a lista de aplicativos que tem acesso aos dados da sua conta." #: front/src/components/auth/Settings.vue:218 msgctxt "Content/Settings/Paragraph" msgid "This is the list of applications that you have created." -msgstr "" +msgstr "Esta é a lista de aplicativos que você criou." #: front/src/components/auth/Profile.vue:16 msgctxt "Content/Profile/Button.Paragraph" @@ -4465,13 +4372,13 @@ msgid "" "This library is private and your approval from its owner is needed to access" " its content" msgstr "" -"Esta biblioteca é privada e a permissão do dono é necessária para acessar " -"seu conteúdo" +"Esta biblioteca é privada e a permissão do dono é necessária para ver seu " +"conteúdo" #: front/src/views/content/remote/Card.vue:142 msgctxt "Content/Library/Card.Help text" msgid "This library is public and you can access its content freely" -msgstr "Esta biblioteca é pública e você pode acessar seu conteúdo livremente" +msgstr "Esta biblioteca é pública e você pode ver seu conteúdo livremente" #: front/src/components/common/ActionTable.vue:47 msgctxt "Modal/*/Paragraph" @@ -4487,7 +4394,7 @@ msgstr "" #: front/src/components/library/TrackEdit.vue:8 msgctxt "Content/*/Message" msgid "This object is managed by another server, you cannot edit it." -msgstr "" +msgstr "Não é possível editar este objeto, ele é gerenciado por outro servidor." #: front/src/components/library/FileUpload.vue:51 msgctxt "Content/Library/Paragraph" @@ -4496,16 +4403,14 @@ msgstr "Essa referência será usada para agrupar arquivos importados." #: front/src/components/mixins/Translations.vue:33 #: front/src/components/mixins/Translations.vue:34 -#, fuzzy msgctxt "Content/Library/Help text" msgid "This track could not be processed, please it is tagged correctly" msgstr "" -"Não foi possível processar esta faixa, verifique se ela possui as tags " -"certas" +"Não foi possível processar esta faixa, verifique se ela está com as tags " +"adequadas" #: front/src/components/mixins/Translations.vue:29 #: front/src/components/mixins/Translations.vue:30 -#, fuzzy msgctxt "Content/Library/Help text" msgid "" "This track has been uploaded, but hasn't been processed by the server yet" @@ -4513,17 +4418,15 @@ msgstr "Faixa enviada, mas ainda não foi processada pelo servidor" #: front/src/components/mixins/Translations.vue:25 #: front/src/components/mixins/Translations.vue:26 -#, fuzzy msgctxt "Content/Library/Help text" msgid "This track is already present in one of your libraries" -msgstr "Faixa já presente em uma das suas bibliotecas" +msgstr "Faixa já presente em uma de suas bibliotecas" #: front/src/components/audio/PlayButton.vue:85 msgctxt "*/Queue/Button/Title" msgid "This track is not available in any library you have access to" msgstr "" -"Esta faixa não está disponível em nenhuma biblioteca à qual você tenha " -"acesso" +"Esta faixa não está disponível em nenhuma biblioteca à qual você possa ver" #: front/src/components/library/TrackDetail.vue:82 msgctxt "Content/Track/Paragraph" @@ -4545,7 +4448,7 @@ msgctxt "Popup/Settings/Paragraph" msgid "" "This will completely disable access to the Subsonic API using from account." msgstr "" -"Isso vai desativar completamente o acesso á API Subsonic usada para a conta." +"Isso vai desativar completamente o acesso á API Subsonic usada na conta." #: front/src/components/auth/SubsonicTokenForm.vue:35 msgctxt "Popup/Settings/Paragraph" @@ -4556,18 +4459,18 @@ msgstr "" "atual." #: front/src/components/auth/Settings.vue:253 -#, fuzzy msgctxt "Popup/Settings/Paragraph" msgid "" "This will permanently delete the application and all the associated tokens." -msgstr "Isso vai excluir permanentemente sua lista." +msgstr "" +"Isso excluirá permanentemente seus aplicativos e todos os tokens associados." #: front/src/components/auth/Settings.vue:194 msgctxt "Popup/Settings/Paragraph" msgid "" "This will prevent this application from accessing the service on your " "behalf." -msgstr "" +msgstr "Isso impedirá que esse aplicativo acesse o serviço em seu nome." #: front/src/components/playlists/Editor.vue:54 msgctxt "Popup/Playlist/Paragraph" @@ -4599,6 +4502,8 @@ msgid "" "To continue, please select the Funkwhale instance you want to connect to. " "Enter the address directly, or select one of the suggested choices." msgstr "" +"Para continuar, insira a instância Funkwhale que você deseja entrar. Digite " +"o endereço ou selecione uma das sugeridas." #: front/src/components/ShortcutsModal.vue:79 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb" @@ -4641,13 +4546,12 @@ msgstr "Faixa" #: front/src/components/library/EditCard.vue:13 msgctxt "Content/Library/Card/Short" msgid "Track #%{ id } - %{ name }" -msgstr "" +msgstr "Faixa #%{ id } - %{ name }" #: front/src/views/admin/library/TrackDetail.vue:91 -#, fuzzy msgctxt "Content/Moderation/Title" msgid "Track data" -msgstr "Nome da faixa" +msgstr "Dados da faixa" #: front/src/components/library/TrackDetail.vue:4 msgctxt "Content/Track/Title/Noun" @@ -4698,10 +4602,9 @@ msgid "tracks listened" msgstr "faixas escutadas" #: front/src/components/library/radios/Filter.vue:44 -#, fuzzy msgctxt "Popup/Radio/Title/Noun" msgid "Tracks matching filter" -msgstr "Faixa encontrada" +msgstr "Faixas encontradas" #: front/src/components/library/TrackDetail.vue:57 #: front/src/views/admin/library/UploadDetail.vue:250 @@ -4732,25 +4635,24 @@ msgid "Unfollow this library?" msgstr "Deixar de seguir esta biblioteca?" #: front/src/components/About.vue:17 -#, fuzzy msgctxt "Content/About/Paragraph" msgid "" "Unfortunately, the owners of this instance did not yet take the time to " "complete this page." msgstr "" -"Infelizmente, os donos desta instância ainda não tiveram tempo para concluir" -" esta página." +"Infelizmente, os donos desta instância ainda não tiveram tempo para " +"completar esta página." #: front/src/components/federation/FetchButton.vue:54 #: front/src/components/federation/FetchButton.vue:55 msgctxt "*/*/Error" msgid "Unknowkn error" -msgstr "" +msgstr "Erro desconhecido" #: front/src/components/library/ImportStatusModal.vue:144 msgctxt "Popup/Import/Error.Label" msgid "Unkwown error" -msgstr "" +msgstr "Erro desconhecido" #: front/src/components/Home.vue:37 msgctxt "Content/Home/Title" @@ -4768,10 +4670,9 @@ msgid "Update" msgstr "Atualizar" #: front/src/components/auth/ApplicationForm.vue:64 -#, fuzzy msgctxt "Content/Applications/Button.Label/Verb" msgid "Update application" -msgstr "Atualizar lista" +msgstr "Atualizar aplicativo" #: front/src/components/auth/Settings.vue:50 msgctxt "Content/Settings/Button.Label/Verb" @@ -4812,10 +4713,9 @@ msgstr "Enviar nova imagem de perfil" #: front/src/views/content/Home.vue:6 msgctxt "Content/Library/Title/Verb" msgid "Upload audio content" -msgstr "Enviar áudio" +msgstr "Enviar conteúdo de áudio" #: front/src/views/admin/library/UploadDetail.vue:85 -#, fuzzy msgctxt "Content/Moderation/Title" msgid "Upload data" msgstr "Data de envio" @@ -4837,7 +4737,7 @@ msgstr "" #: front/src/components/library/ImportStatusModal.vue:8 msgctxt "Popup/Import/Message" msgid "Upload is still pending and will soon be processed by the server." -msgstr "" +msgstr "O envio ainda está pendente e logo será processado pelo servidor." #: front/src/views/content/Home.vue:7 msgctxt "Content/Library/Paragraph" @@ -4868,13 +4768,12 @@ msgctxt "Popup/Import/Message" msgid "" "Upload was skipped because a similar one is already available in one of your" " libraries." -msgstr "" +msgstr "O envio foi ignorado porque já existe em uma de suas bibliotecas." #: front/src/components/library/ImportStatusModal.vue:11 -#, fuzzy msgctxt "Popup/Import/Message" msgid "Upload was successfully processed by the server." -msgstr "Faixa enviada, mas ainda não foi processada pelo servidor" +msgstr "Envio foi processado pelo servidor." #: front/src/components/library/FileUpload.vue:109 msgctxt "Content/Library/Table" @@ -4921,6 +4820,8 @@ msgid "" "Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is " "not served on the web." msgstr "" +"Use \"urn:ietf:wg:oauth:2.0:oob\" como link de redirecionamento se seu " +"aplicativo não está na Web." #: front/src/components/Footer.vue:16 msgctxt "Footer/*/List item.Link" @@ -5030,7 +4931,7 @@ msgstr "Ver arquivos" #: front/src/views/admin/moderation/AccountsDetail.vue:45 msgctxt "Content/Moderation/Link/Verb" msgid "View in Django's admin" -msgstr "" +msgstr "Ver administração Django" #: front/src/components/library/AlbumBase.vue:61 #: front/src/components/library/ArtistBase.vue:72 @@ -5062,10 +4963,9 @@ msgid "Volume %{ number }" msgstr "Volume %{ number }" #: front/src/components/federation/FetchButton.vue:69 -#, fuzzy msgctxt "Popup/*/Loading.Title" msgid "Waiting for result…" -msgstr "Carregando seus favoritos…" +msgstr "Carregando…" #: front/src/components/auth/Login.vue:7 msgctxt "Content/Login/Error message.Title" @@ -5073,10 +4973,9 @@ msgid "We cannot log you in" msgstr "Não foi possível entrar" #: front/src/components/auth/ApplicationForm.vue:3 -#, fuzzy msgctxt "Content/*/Error message.Title" msgid "We cannot save your changes" -msgstr "Não foi possível salvar suas configurações" +msgstr "Não foi possível salvar as alterações" #: front/src/components/Home.vue:122 msgctxt "Content/Home/List item" @@ -5121,17 +5020,17 @@ msgstr "Largura do widget" #: front/src/components/auth/ApplicationForm.vue:157 msgctxt "Content/OAuth Scopes/Label/Verb" msgid "Write" -msgstr "" +msgstr "Escrita" #: front/src/components/auth/Authorize.vue:21 msgctxt "Content/Auth/Label/Noun" msgid "Write-only" -msgstr "" +msgstr "Apenas escrita" #: front/src/components/auth/ApplicationForm.vue:158 msgctxt "Content/OAuth Scopes/Help Text" msgid "Write-only access to user data" -msgstr "" +msgstr "Apenas escreve seus dados de usuário" #: front/src/components/Sidebar.vue:129 #: front/src/components/manage/moderation/AccountsTable.vue:72 @@ -5171,11 +5070,14 @@ msgid "" "be disconnected from your current instance and all your local data will be " "deleted." msgstr "" +"Você está em %{ hostname } . Se continuar, você sairá e todos os seus " +"dados locais serão excluídos." #: front/src/components/library/ArtistDetail.vue:6 msgctxt "Content/Artist/Paragraph" msgid "You are currently hiding content related to this artist." -msgstr "" +msgstr "Você ocultou conteúdos deste(a) artista." #: front/src/components/auth/Logout.vue:7 msgctxt "Content/Login/Paragraph" @@ -5188,11 +5090,13 @@ msgid "" "You are not uploading copyrighted content in a public library, otherwise you" " may be infringing the law" msgstr "" +"Não envie conteúdo protegido por direitos autorais em uma biblioteca pública " +"porque você pode estar violando a lei" #: front/src/components/SetInstanceModal.vue:98 msgctxt "*/Instance/Message" msgid "You are now using the Funkwhale instance at %{ url }" -msgstr "" +msgstr "Você está usando a instância Funkwhale em %{ url }" #: front/src/views/content/Home.vue:17 msgctxt "Content/Library/Paragraph" @@ -5219,6 +5123,8 @@ msgctxt "Popup/Moderation/Paragraph" msgid "" "You can manage and update your filters anytime from your account settings." msgstr "" +"Você pode alterar e atualizar seus filtros a qualquer momento nas " +"configurações da conta." #: front/src/views/auth/EmailConfirm.vue:24 msgctxt "Content/Signup/Paragraph" @@ -5244,16 +5150,14 @@ msgstr "" "móvel, por exemplo." #: front/src/components/auth/Settings.vue:202 -#, fuzzy msgctxt "Content/Applications/Paragraph" msgid "You don't have any application connected with your account." -msgstr "Você não tem nenhuma regra para esta conta." +msgstr "Sem aplicativos." #: front/src/components/auth/Settings.vue:261 -#, fuzzy msgctxt "Content/Applications/Paragraph" msgid "You don't have any configured application yet." -msgstr "Você não tem nenhuma regra para esta conta." +msgstr "Sem aplicativos configurados." #: front/src/views/admin/moderation/AccountsDetail.vue:75 msgctxt "Content/Moderation/Card.Title" @@ -5271,6 +5175,8 @@ msgid "" "You don't have the permission to edit this object, but you can suggest " "changes. Once submitted, suggestions will be reviewed before approval." msgstr "" +"Você não tem permissão para editar este objeto, mas pode sugerir alterações. " +"Depois de enviadas, as sugestões serão revisadas antes da aprovação." #: front/src/components/Sidebar.vue:171 msgctxt "Sidebar/Player/Title" @@ -5291,12 +5197,12 @@ msgstr "Você sairá desta conta e precisará entrar novamente" #: front/src/components/auth/Authorize.vue:51 msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ url }" -msgstr "" +msgstr "Você será redirecionado para %{ url }" #: front/src/components/auth/Authorize.vue:49 msgctxt "Content/Auth/Paragraph" msgid "You will be shown a code to copy-paste in the application." -msgstr "" +msgstr "Você verá um código para copiar e colar no aplicativo." #: front/src/components/auth/Settings.vue:71 msgctxt "Content/Settings/Paragraph" @@ -5311,27 +5217,28 @@ msgid "" "You will not see tracks, albums and user activity linked to this artist " "anymore:" msgstr "" +"Você não verá mais faixas, álbuns e atividades de usuários vinculados a " +"este(a) artista:" #: front/src/components/auth/Signup.vue:13 msgctxt "Content/Signup/Form/Paragraph" msgid "Your account cannot be created." -msgstr "" +msgstr "Não foi possível criar conta." #: front/src/components/auth/Settings.vue:215 -#, fuzzy msgctxt "Content/Settings/Title/Noun" msgid "Your applications" -msgstr "Suas notificações" +msgstr "Seus aplicativos" #: front/src/components/auth/Settings.vue:38 msgctxt "Content/Settings/Error message.Title" msgid "Your avatar cannot be saved" -msgstr "" +msgstr "Não foi possível salvar imagem de perfil" #: front/src/components/library/EditForm.vue:3 msgctxt "Content/Library/Paragraph" msgid "Your edit was successfully submitted." -msgstr "" +msgstr "Sua edição foi enviada." #: front/src/components/favorites/List.vue:116 msgctxt "Head/Favorites/Title" @@ -5351,7 +5258,7 @@ msgstr "Suas notificações" #: front/src/components/auth/Settings.vue:76 msgctxt "Content/Settings/Error message.Title" msgid "Your password cannot be changed" -msgstr "" +msgstr "Não foi possível alterar senha" #: front/src/views/auth/PasswordResetConfirm.vue:29 msgctxt "Content/Signup/Card.Paragraph" @@ -5359,10 +5266,9 @@ msgid "Your password has been updated successfully." msgstr "Sua senha foi atualizada com sucesso." #: front/src/components/auth/Settings.vue:14 -#, fuzzy msgctxt "Content/Settings/Error message.Title" msgid "Your settings can't be updateds" -msgstr "Configurações atualizadas" +msgstr "Não foi possível atualizar configurações" #: front/src/components/auth/Settings.vue:101 msgctxt "Popup/Settings/List item" @@ -5374,10 +5280,9 @@ msgstr "" "sairá de dispositivos que usaram a senha antiga do Subsonic" #: front/src/edits.js:47 -#, fuzzy msgctxt "*/*/*/Short, Noun" msgid "Position" -msgstr "Paginação" +msgstr "Posição" #: front/src/edits.js:54 msgctxt "Content/Track/*/Noun" @@ -5385,7 +5290,6 @@ msgid "Copyright" msgstr "Direitos autorais" #: front/src/components/library/AlbumBase.vue:183 -#, fuzzy msgctxt "Content/Album/Header.Title" msgid "" "Album containing %{ count } track, by %{ artist }" -msgstr[0] "Álbum com %{ count } faixa, de %{ artist }" -msgstr[1] "Álbum com %{ count } faixas, de %{ artist }" +msgstr[0] "" +"Álbum com %{ count } faixa de %{ artist }" +msgstr[1] "" +"Álbum com %{ count } faixas de %{ artist }" #: front/src/components/audio/PlayButton.vue:220 -#, fuzzy msgctxt "*/Queue/Message" msgid "%{ count } track was added to your queue" msgid_plural "%{ count } tracks were added to your queue" From 5c916614ef10ebf296b7eff746671809da14e583 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciar=C3=A1n=20Ainsworth?= Date: Mon, 3 Jun 2019 11:21:16 +0000 Subject: [PATCH 008/291] Translated using Weblate (English (United Kingdom)) Currently translated at 100.0% (649 of 649 strings) Translation: Funkwhale/Funkwhale's server front-end Translate-URL: https://translate.funkwhale.audio/projects/funkwhale/front/en_GB/ --- front/locales/en_GB/LC_MESSAGES/app.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/front/locales/en_GB/LC_MESSAGES/app.po b/front/locales/en_GB/LC_MESSAGES/app.po index 0300026f4..c621fceda 100644 --- a/front/locales/en_GB/LC_MESSAGES/app.po +++ b/front/locales/en_GB/LC_MESSAGES/app.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: front 0.1.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-01-29 10:47+0100\n" -"PO-Revision-Date: 2019-03-07 12:44+0000\n" -"Last-Translator: gerry_the_hat \n" +"PO-Revision-Date: 2019-06-06 09:17+0000\n" +"Last-Translator: Ciarán Ainsworth \n" "Language-Team: none\n" "Language: en_GB\n" "MIME-Version: 1.0\n" @@ -2468,7 +2468,7 @@ msgstr "" #: front/src/components/library/FileUpload.vue:52 msgid "This reference will be used to group imported files together." -msgstr "his reference will be used to group imported files together." +msgstr "This reference will be used to group imported files together." #: front/src/components/audio/PlayButton.vue:73 msgid "This track is not available in any library you have access to" From 99e203421c21864ccf2b4a9668bf7d9d1525928b Mon Sep 17 00:00:00 2001 From: Nitai Bezerra da Silva Date: Mon, 27 May 2019 19:16:31 +0000 Subject: [PATCH 009/291] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (879 of 879 strings) Translation: Funkwhale/Funkwhale's server front-end Translate-URL: https://translate.funkwhale.audio/projects/funkwhale/front/pt_BR/ --- front/locales/pt_BR/LC_MESSAGES/app.po | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/front/locales/pt_BR/LC_MESSAGES/app.po b/front/locales/pt_BR/LC_MESSAGES/app.po index 46e1d66e7..0ea15cb0a 100644 --- a/front/locales/pt_BR/LC_MESSAGES/app.po +++ b/front/locales/pt_BR/LC_MESSAGES/app.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: front 0.1.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-05-16 10:35+0200\n" -"PO-Revision-Date: 2019-05-23 08:37+0000\n" -"Last-Translator: Daniele Lira Mereb \n" +"PO-Revision-Date: 2019-06-06 09:17+0000\n" +"Last-Translator: Nitai Bezerra da Silva \n" "Language-Team: none\n" "Language: pt_BR\n" "MIME-Version: 1.0\n" @@ -2579,7 +2579,7 @@ msgstr "Membro desde %{ date }" #: front/src/components/Footer.vue:32 msgctxt "Footer/*/List item.Link" msgid "Mobile and desktop apps" -msgstr "Aplicativos móvel e de desktop" +msgstr "Aplicativos móveis e de desktop" #: front/src/components/Sidebar.vue:96 #: src/components/manage/users/UsersTable.vue:177 @@ -4147,8 +4147,7 @@ msgstr "" msgctxt "Footer/*/List item.Link" msgid "The funkwhale logo was kindly designed and provided by Francis Gading." msgstr "" -"A logo do Funkwhale foi gentilmente projetado e fornecido por Francis " -"Gading." +"A logo do Funkwhale foi gentilmente projetada e fornecida por Francis Gading." #: front/src/components/SetInstanceModal.vue:8 msgctxt "Popup/Instance/Error message.List item" From 56dd4a62dd9070f0c9bf57a20e0c59d310169ee1 Mon Sep 17 00:00:00 2001 From: SpcCw Date: Tue, 28 May 2019 12:32:44 +0000 Subject: [PATCH 010/291] Translated using Weblate (Russian) Currently translated at 100.0% (879 of 879 strings) Translation: Funkwhale/Funkwhale's server front-end Translate-URL: https://translate.funkwhale.audio/projects/funkwhale/front/ru/ --- front/locales/ru/LC_MESSAGES/app.po | 582 ++++++++++++++++------------ 1 file changed, 326 insertions(+), 256 deletions(-) diff --git a/front/locales/ru/LC_MESSAGES/app.po b/front/locales/ru/LC_MESSAGES/app.po index 4a3793d34..7a00182fc 100644 --- a/front/locales/ru/LC_MESSAGES/app.po +++ b/front/locales/ru/LC_MESSAGES/app.po @@ -8,15 +8,16 @@ msgstr "" "Project-Id-Version: front 0.1.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-05-16 10:35+0200\n" -"PO-Revision-Date: 2018-10-20 14:22+0000\n" -"Last-Translator: noname \n" +"PO-Revision-Date: 2019-06-06 09:17+0000\n" +"Last-Translator: SpcCw \n" "Language-Team: none\n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 2.20\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=" +"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 3.2.2\n" #: front/src/components/playlists/PlaylistModal.vue:9 msgctxt "Popup/Playlist/Paragraph" @@ -39,18 +40,16 @@ msgid "%{ app } wants to access your Funkwhale account" msgstr "Войти в ваш аккаунт Funkwhale" #: front/src/components/common/ActionTable.vue:68 -#, fuzzy msgctxt "Content/*/Paragraph" msgid "%{ count } on %{ total } selected" msgid_plural "%{ count } on %{ total } selected" msgstr[0] "выбран %{ count } из %{ total }" -msgstr[1] "выбрано %{ count } из %{ total }" +msgstr[1] "выбраны %{ count } из %{ total }" msgstr[2] "выбрано %{ count } из %{ total }" #: front/src/components/Sidebar.vue:121 src/components/audio/album/Card.vue:52 #: front/src/views/content/libraries/Card.vue:40 #: src/views/content/remote/Card.vue:30 -#, fuzzy msgctxt "*/*/*" msgid "%{ count } track" msgid_plural "%{ count } tracks" @@ -59,7 +58,6 @@ msgstr[1] "%{ count } трека" msgstr[2] "%{ count } треков" #: front/src/components/library/ArtistBase.vue:13 -#, fuzzy msgctxt "Content/Artist/Paragraph" msgid "%{ count } track in %{ albumsCount } albums" msgid_plural "%{ count } tracks in %{ albumsCount } albums" @@ -68,7 +66,6 @@ msgstr[1] "%{ count } трека из %{ albumsCount } альбомов" msgstr[2] "%{ count } треков из %{ albumsCount } альбомов" #: front/src/components/library/radios/Builder.vue:81 -#, fuzzy msgctxt "Content/Radio/Table.Paragraph/Short" msgid "%{ count } track matching combined filters" msgid_plural "%{ count } tracks matching combined filters" @@ -77,7 +74,6 @@ msgstr[1] "%{ count } подходящих трека" msgstr[2] "%{ count } подходящих треков" #: front/src/components/playlists/Card.vue:18 -#, fuzzy msgctxt "Content/*/Card/List item" msgid "%{ count} track" msgid_plural "%{ count } tracks" @@ -103,17 +99,17 @@ msgstr "%{ minutes } мин" #: front/src/components/notifications/NotificationRow.vue:40 msgctxt "Content/Notifications/Paragraph" msgid "%{ username } accepted your follow on library \"%{ library }\"" -msgstr "" +msgstr "%{ username } принял вашу подписку на библиотеку \"%{ library }\"" #: front/src/components/notifications/NotificationRow.vue:39 msgctxt "Content/Notifications/Paragraph" msgid "%{ username } followed your library \"%{ library }\"" -msgstr "" +msgstr "%{ username } подписался на вашу библиотеку \"%{ library }\"" #: front/src/components/notifications/NotificationRow.vue:41 msgctxt "Content/Notifications/Paragraph" msgid "%{ username } wants to follow your library \"%{ library }\"" -msgstr "" +msgstr "%{ username } хочет подписаться на вашу \"%{ library }\"" #: front/src/components/auth/Profile.vue:46 msgctxt "Head/Profile/Title" @@ -124,10 +120,9 @@ msgstr "Профиль %{ username }" msgctxt "Popup/Playlist/Paragraph" msgid "" "%{ track } is already in %{ playlist }." -msgstr "" +msgstr "трек уже в списке воспроизведения ." #: front/src/components/audio/artist/Card.vue:41 -#, fuzzy msgctxt "Content/Artist/Card" msgid "1 album" msgid_plural "%{ count } albums" @@ -136,7 +131,6 @@ msgstr[1] "%{ count } альбома" msgstr[2] "%{ count } альбомов" #: front/src/components/favorites/List.vue:10 -#, fuzzy msgctxt "Content/Favorites/Title" msgid "1 favorite" msgid_plural "%{ count } favorites" @@ -157,7 +151,7 @@ msgstr "При загрузке этого файла произошла сет #: front/src/components/library/EditForm.vue:145 msgctxt "*/*/Placeholder" msgid "A short summary describing your changes." -msgstr "При сохранении ваших изменений произошла ошибка" +msgstr "Краткая информация о ваших правках." #: front/src/components/About.vue:5 msgctxt "Content/About/Title/Short, Noun" @@ -203,7 +197,7 @@ msgstr "Доступ отключен" #: front/src/components/mixins/Translations.vue:74 msgctxt "Content/OAuth Scopes/Paragraph" msgid "Access to audio files, libraries, artists, albums and tracks" -msgstr "" +msgstr "Доступ к аудио файлам, библиотекам, исполнителям, альбомам и трекам" #: front/src/components/mixins/Translations.vue:97 #: front/src/components/mixins/Translations.vue:98 @@ -221,7 +215,7 @@ msgstr "Доступ отключен" #: front/src/components/mixins/Translations.vue:70 msgctxt "Content/OAuth Scopes/Paragraph" msgid "Access to email, username, and profile information" -msgstr "" +msgstr "Доступ к электронной почте, имени пользователя и информации профиля" #: front/src/components/mixins/Translations.vue:77 #: front/src/components/mixins/Translations.vue:78 @@ -233,13 +227,13 @@ msgstr "Добавить в избранное" #: front/src/components/mixins/Translations.vue:86 msgctxt "Content/OAuth Scopes/Paragraph" msgid "Access to follows" -msgstr "" +msgstr "Доступ к подпискам" #: front/src/components/mixins/Translations.vue:81 #: front/src/components/mixins/Translations.vue:82 msgctxt "Content/OAuth Scopes/Paragraph" msgid "Access to listening history" -msgstr "" +msgstr "Доступ к истории прослушивания" #: front/src/components/mixins/Translations.vue:101 #: front/src/components/mixins/Translations.vue:102 @@ -251,7 +245,7 @@ msgstr "Ваши уведомления" #: front/src/components/mixins/Translations.vue:90 msgctxt "Content/OAuth Scopes/Paragraph" msgid "Access to playlists" -msgstr "Добавить в список воспроизведения..." +msgstr "Доступ к спискам воспроизведения" #: front/src/components/mixins/Translations.vue:93 #: front/src/components/mixins/Translations.vue:94 @@ -325,7 +319,6 @@ msgid "Action" msgstr "Действие" #: front/src/components/common/ActionTable.vue:101 -#, fuzzy msgctxt "Content/*/Paragraph" msgid "Action %{ action } was launched successfully on %{ count } element" msgid_plural "" @@ -365,17 +358,17 @@ msgstr "Видимость активности" #: front/src/views/admin/moderation/DomainsList.vue:18 msgctxt "Content/Moderation/Button/Verb" msgid "Add" -msgstr "" +msgstr "Добавить" #: front/src/views/admin/moderation/DomainsList.vue:13 msgctxt "Content/Moderation/Form.Label/Verb" msgid "Add a domain" -msgstr "" +msgstr "Добавить домен" #: front/src/views/admin/moderation/AccountsDetail.vue:79 msgctxt "Content/Moderation/Button/Verb" msgid "Add a moderation policy" -msgstr "" +msgstr "Добавить политику модерации" #: front/src/components/manage/moderation/InstancePolicyForm.vue:4 msgctxt "Content/Moderation/Card.Button.Label/Verb" @@ -391,7 +384,7 @@ msgstr "Добавить или управлять содержимым" #: front/src/components/playlists/PlaylistModal.vue:31 msgctxt "*/Playlist/Button.Label/Verb" msgid "Add anyways" -msgstr "" +msgstr "Всё равно добавить" #: front/src/components/Sidebar.vue:75 src/views/content/Base.vue:18 msgctxt "*/Library/*/Verb" @@ -423,7 +416,7 @@ msgstr "Добавить в избранное" #: front/src/components/playlists/TrackPlaylistIcon.vue:34 msgctxt "Sidebar/Player/Icon.Tooltip/Verb" msgid "Add to playlist…" -msgstr "Добавить в список воспроизведения..." +msgstr "Добавить в список воспроизведения…" #: front/src/components/audio/PlayButton.vue:15 msgctxt "*/Queue/Dropdown/Button/Label/Short" @@ -513,18 +506,17 @@ msgid "All" msgstr "Все" #: front/src/components/common/ActionTable.vue:59 -#, fuzzy msgctxt "Content/*/Paragraph" msgid "All %{ count } element selected" msgid_plural "All %{ count } elements selected" msgstr[0] "выбран %{ count } из %{ total }" -msgstr[1] "выбрано %{ count } из %{ total }" +msgstr[1] "выбраны %{ count } из %{ total }" msgstr[2] "выбрано %{ count } из %{ total }" #: front/src/components/auth/Authorize.vue:107 msgctxt "Head/Authorize/Title" msgid "Allow application" -msgstr "" +msgstr "Разрешить приложение" #: front/src/components/library/ImportStatusModal.vue:17 msgctxt "Popup/Import/Message" @@ -532,6 +524,7 @@ msgid "" "An error occured during upload processing. You will find more information " "below." msgstr "" +"Во время обработки закачки возникла ошибка. Дополнительная информация ниже." #: front/src/components/playlists/Editor.vue:13 msgctxt "Content/Playlist/Error message.Title" @@ -541,7 +534,7 @@ msgstr "При сохранении ваших изменений произош #: front/src/components/federation/FetchButton.vue:21 msgctxt "Popup/*/Message.Content" msgid "An error occured while trying to refresh data:" -msgstr "При сохранении ваших изменений произошла ошибка" +msgstr "При попытке обновления данных произошла ошибка:" #: front/src/components/federation/FetchButton.vue:41 msgctxt "*/*/Error" @@ -559,7 +552,7 @@ msgstr "" #: front/src/components/library/ImportStatusModal.vue:145 msgctxt "Popup/Import/Error.Label" msgid "An unkwown error occured" -msgstr "" +msgstr "Возникла неизвестная ошибка" #: front/src/components/auth/Settings.vue:175 #: src/components/auth/Settings.vue:225 @@ -570,12 +563,12 @@ msgstr "Действие" #: front/src/components/auth/ApplicationEdit.vue:12 msgctxt "Content/Applications/Title" msgid "Application details" -msgstr "" +msgstr "Информация о приложении" #: front/src/components/auth/ApplicationEdit.vue:21 msgctxt "Content/Applications/Label" msgid "Application ID" -msgstr "" +msgstr "ID приложения" #: front/src/components/auth/ApplicationEdit.vue:16 msgctxt "Content/Application/Paragraph/" @@ -583,28 +576,30 @@ msgid "" "Application ID and secret are really sensitive values and must be treated " "like passwords. Do not share those with anyone else." msgstr "" +"ID приложения и секрет являются важной информацией к ним нужно относиться " +"как к паролям. Не передавайте их никому." #: front/src/components/auth/ApplicationEdit.vue:25 msgctxt "Content/Applications/Label" msgid "Application secret" -msgstr "" +msgstr "Секрет приложения" #: front/src/components/library/EditCard.vue:81 #: front/src/components/notifications/NotificationRow.vue:66 msgctxt "Content/*/Button.Label/Verb" msgid "Approve" -msgstr "" +msgstr "Одобрить" #: front/src/components/library/EditCard.vue:25 #: front/src/components/manage/library/EditsCardList.vue:21 msgctxt "Content/*/*/Short" msgid "Approved" -msgstr "" +msgstr "Одобрено" #: front/src/components/library/EditCard.vue:21 msgctxt "Content/Library/Card/Short" msgid "Approved and applied" -msgstr "" +msgstr "Одобрено и применено" #: front/src/components/auth/Logout.vue:5 msgctxt "Content/Login/Title" @@ -641,7 +636,7 @@ msgstr "Имя исполнителя" #: front/src/components/audio/Search.vue:65 msgctxt "*/Search/Input.Placeholder" msgid "Artist, album, track…" -msgstr "Исполнитель, альбом, трек..." +msgstr "Исполнитель, альбом, трек…" #: front/src/views/admin/library/ArtistsList.vue:24 #: front/src/views/admin/library/Base.vue:8 @@ -698,22 +693,22 @@ msgstr "Добавить содержимое" #: front/src/components/ShortcutsModal.vue:55 msgctxt "Popup/Keyboard shortcuts/Title" msgid "Audio player shortcuts" -msgstr "" +msgstr "Горячие клавиши плеера" #: front/src/components/auth/Authorize.vue:47 msgctxt "Content/Signup/Button.Label/Verb" msgid "Authorize %{ app }" -msgstr "" +msgstr "Авторизовать %{ app }" #: front/src/components/auth/Authorize.vue:4 msgctxt "Content/Auth/Title/Verb" msgid "Authorize third-party app" -msgstr "" +msgstr "Авторизовать стороннее приложение" #: front/src/components/auth/Settings.vue:162 msgctxt "Content/Settings/Title/Noun" msgid "Authorized apps" -msgstr "" +msgstr "Авторизованные приложения" #: front/src/components/playlists/PlaylistModal.vue:40 msgctxt "Popup/Playlist/Title" @@ -749,7 +744,7 @@ msgstr "Битрейт" #: front/src/components/manage/moderation/InstancePolicyForm.vue:34 msgctxt "Content/Moderation/*/Verb" msgid "Block everything" -msgstr "" +msgstr "Заблокировать всё" #: front/src/components/manage/moderation/InstancePolicyForm.vue:112 msgctxt "Content/Moderation/Help text" @@ -758,6 +753,9 @@ msgid "" "interaction with the entity, and purge related content (uploads, libraries, " "follows, etc.)" msgstr "" +"Заблокировать всё от этого пользователя или домена. Это остановит любое " +"взаимодействие с ним и удалит связанный контент (закачки, библиотеки, " +"подписки и т.п.)" #: front/src/components/Sidebar.vue:18 src/components/library/Library.vue:4 msgctxt "*/Library/*/Verb" @@ -813,7 +811,7 @@ msgstr "Отписавшись от этой библиотеки, вы поте #: front/src/views/admin/moderation/DomainsDetail.vue:217 msgctxt "Content/Moderation/Table.Label/Noun" msgid "Cached size" -msgstr "" +msgstr "Размер в кэше" #: front/src/components/SetInstanceModal.vue:37 #: front/src/components/common/DangerousButton.vue:17 @@ -831,10 +829,9 @@ msgid "Cancel" msgstr "Отмена" #: front/src/views/content/remote/Card.vue:97 -#, fuzzy msgctxt "Content/Library/Card.Paragraph" msgid "Cancel follow request" -msgstr "Ожидающие файлы" +msgstr "Отменить запрос на подписку" #: front/src/components/library/radios/Builder.vue:64 msgctxt "Content/Radio/Table.Label/Noun (Value is a number of Tracks)" @@ -888,12 +885,12 @@ msgstr "" #: front/src/components/auth/Settings.vue:98 msgctxt "Popup/Settings/Paragraph" msgid "Changing your password will have the following consequences:" -msgstr "Изменение вашего пароля приведёт к следующим последствиям" +msgstr "Изменение вашего пароля приведёт к следующим последствиям:" #: front/src/components/Footer.vue:40 msgctxt "Footer/*/List item.Link" msgid "Chat room" -msgstr "" +msgstr "Чат-комната" #: front/src/components/auth/ApplicationForm.vue:24 msgctxt "Content/Applications/Paragraph/" @@ -901,6 +898,8 @@ msgid "" "Checking the parent \"Read\" or \"Write\" scopes implies access to all the " "corresponding children scopes." msgstr "" +"Отметка родительских областей на \"чтение\" или \"запись\" подразумевает " +"доступ ко всем соответствующим дочерним объектам." #: front/src/components/SetInstanceModal.vue:2 msgctxt "Popup/Instance/Title" @@ -938,7 +937,7 @@ msgstr "Нажмите один раз, слушайте часами с пом msgctxt "Content/Library/Link.Title" msgid "" "Click to display more information about the import process for this upload" -msgstr "" +msgstr "Нажмите, чтобы посмотреть больше информации об импорте этой закачки" #: front/src/components/library/FileUpload.vue:82 msgctxt "Content/Library/Paragraph/Call to action" @@ -950,17 +949,17 @@ msgstr "" #: front/src/components/library/ImportStatusModal.vue:79 msgctxt "*/*/Button.Label/Verb" msgid "Close" -msgstr "" +msgstr "Закрыть" #: front/src/components/ShortcutsModal.vue:20 msgctxt "Popup/Keyboard shortcuts/Button.Label/Verb" msgid "Close" -msgstr "" +msgstr "Закрыть" #: front/src/components/federation/FetchButton.vue:88 msgctxt "*/*/Button.Label/Verb" msgid "Close and reload page" -msgstr "" +msgstr "Закрыть и обновить страницу" #: front/src/components/manage/users/InvitationForm.vue:26 #: front/src/components/manage/users/InvitationsTable.vue:42 @@ -997,7 +996,7 @@ msgstr "Код подтверждения" #: front/src/components/moderation/FilterModal.vue:90 msgctxt "*/Moderation/Message" msgid "Content filter successfully added" -msgstr "" +msgstr "Фильтр содержимого успешно добавлен" #: front/src/components/mixins/Translations.vue:96 #: front/src/components/mixins/Translations.vue:97 @@ -1015,16 +1014,18 @@ msgctxt "Content/Settings/Paragraph" msgid "" "Content filters help you hide content you don't want to see on the service." msgstr "" +"Фильтры содержимого помогают вам скрывать контент, который вы не ходите " +"видеть в этом сервисе." #: front/src/components/common/ActionTable.vue:8 msgctxt "Content/*/Button.Help text.Paragraph" msgid "Content have been updated, click refresh to see up-to-date content" -msgstr "" +msgstr "Контент обновлён, нажмите \"обновить\", чтобы увидеть его" #: front/src/components/Footer.vue:48 msgctxt "Footer/*/List item.Link" msgid "Contribute" -msgstr "" +msgstr "Помочь" #: front/src/components/audio/EmbedWizard.vue:19 #: front/src/components/common/CopyInput.vue:8 @@ -1040,12 +1041,12 @@ msgstr "Копировать треки из текущей очереди в с #: front/src/components/auth/Authorize.vue:55 msgctxt "Content/Auth/Paragraph" msgid "Copy-paste the following code in the application:" -msgstr "" +msgstr "Скопируйте и вставьте следующий код в приложение:" #: front/src/components/audio/EmbedWizard.vue:21 msgctxt "Popup/Embed/Paragraph" msgid "Copy/paste this code in your website HTML" -msgstr "" +msgstr "Скопируйте и вставьте этот код в HTML вашего сайта" #: front/src/components/library/TrackDetail.vue:10 #: front/src/views/admin/library/TrackDetail.vue:153 @@ -1122,7 +1123,7 @@ msgstr "Создать мой аккаунт" #: front/src/components/auth/Settings.vue:264 msgctxt "Content/Applications/Paragraph" msgid "Create one to integrate Funkwhale with third-party applications." -msgstr "" +msgstr "Создайте его, чтобы интегрировать Funkwhale со сторонними приложениями." #: front/src/components/playlists/Form.vue:34 msgctxt "Content/Playlist/Button.Label/Verb" @@ -1172,11 +1173,13 @@ msgstr "Текущее использование" msgctxt "*/*/Error" msgid "Data returned by the remote server had invalid or missing attributes" msgstr "" +"Данные, принятые от удалённого сервера, содержали неправильные или " +"отсутствующие атрибуты" #: front/src/components/federation/FetchButton.vue:17 msgctxt "Popup/*/Message.Content" msgid "Data was refreshed successfully from remote server." -msgstr "" +msgstr "Данные с удалённого сервера успешно обновлены." #: front/src/views/content/libraries/Detail.vue:27 msgctxt "Content/Library/Table.Label" @@ -1191,7 +1194,7 @@ msgstr "Информация о треке" #: front/src/components/ShortcutsModal.vue:75 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb" msgid "Decrease volume" -msgstr "" +msgstr "Уменьшить громкость" #: front/src/components/auth/Settings.vue:150 #: src/components/auth/Settings.vue:251 @@ -1229,7 +1232,7 @@ msgstr "Удалить список воспроизведения" #: front/src/components/auth/Settings.vue:252 msgctxt "Popup/Settings/Title" msgid "Delete application \"%{ application }\"?" -msgstr "" +msgstr "Удалить приложение \"%{ application }\"?" #: front/src/views/content/libraries/Form.vue:39 msgctxt "Popup/Library/Button.Label/Verb" @@ -1360,7 +1363,7 @@ msgstr "Отключить доступ" #: front/src/views/admin/library/TrackDetail.vue:145 msgctxt "*/*/*/Noun" msgid "Disc number" -msgstr "" +msgstr "Номер диска" #: front/src/components/auth/SubsonicTokenForm.vue:13 msgctxt "Content/Settings/Link" @@ -1383,6 +1386,8 @@ msgid "" "Do not download any media file (audio, album cover, account avatar…) from " "this account or domain. This will purge existing content as well." msgstr "" +"Не скачивать ничего (музыку, обложки, аватары...) от этого пользователя или " +"домена. Это так же удалит существующий контент." #: front/src/components/playlists/Editor.vue:51 msgctxt "Popup/Playlist/Title" @@ -1410,7 +1415,6 @@ msgid "Do you want to hide content from artist \"%{ name }\"?" msgstr "Вы хотите удалить радио \"%{ radio }\"?" #: front/src/components/common/ActionTable.vue:37 -#, fuzzy msgctxt "Modal/*/Title" msgid "Do you want to launch %{ action } on %{ count } element?" msgid_plural "Do you want to launch %{ action } on %{ count } elements?" @@ -1444,14 +1448,14 @@ msgstr "Документация" #: front/src/components/mixins/Translations.vue:61 msgctxt "Content/Moderation/*/Noun" msgid "Domain" -msgstr "" +msgstr "Домен" #: front/src/views/admin/moderation/Base.vue:5 #: front/src/views/admin/moderation/DomainsList.vue:3 #: front/src/views/admin/moderation/DomainsList.vue:48 msgctxt "*/Moderation/*/Noun" msgid "Domains" -msgstr "" +msgstr "Домены" #: front/src/components/library/TrackBase.vue:39 #: front/src/views/admin/library/UploadDetail.vue:58 @@ -1566,39 +1570,39 @@ msgstr "Адрес электронной почты" #: front/src/components/library/TrackBase.vue:72 msgctxt "Content/*/Button.Label/Verb" msgid "Embed" -msgstr "" +msgstr "Внедрить" #: front/src/components/audio/EmbedWizard.vue:20 msgctxt "Popup/Embed/Input.Label/Noun" msgid "Embed code" -msgstr "" +msgstr "Внедрить код" #: front/src/components/library/AlbumBase.vue:26 msgctxt "Popup/Album/Title/Verb" msgid "Embed this album on your website" -msgstr "" +msgstr "Внедрить этот альбом на ваш сайт" #: front/src/components/library/ArtistBase.vue:37 msgctxt "Popup/Artist/Title/Verb" msgid "Embed this artist work on your website" -msgstr "" +msgstr "Внедрить произведения этого исполнителя на ваш сайт" #: front/src/components/library/TrackBase.vue:45 msgctxt "Popup/Track/Title" msgid "Embed this track on your website" -msgstr "" +msgstr "Внедрить этот трек на ваш сайт" #: front/src/views/admin/moderation/AccountsDetail.vue:259 #: front/src/views/admin/moderation/DomainsDetail.vue:187 msgctxt "Content/Moderation/Table.Label/Noun" msgid "Emitted library follows" -msgstr "" +msgstr "Исходящие подписки на библиотеки" #: front/src/views/admin/moderation/AccountsDetail.vue:243 #: front/src/views/admin/moderation/DomainsDetail.vue:171 msgctxt "Content/Moderation/Table.Label/Noun" msgid "Emitted messages" -msgstr "" +msgstr "Исходящие сообщения" #: front/src/components/manage/moderation/InstancePolicyCard.vue:8 #: front/src/components/manage/moderation/InstancePolicyForm.vue:17 @@ -1621,27 +1625,27 @@ msgstr "Очистить библиотеку" #: front/src/components/library/Radios.vue:141 msgctxt "Content/Search/Input.Placeholder" msgid "Enter a radio name…" -msgstr "Введите название радио..." +msgstr "Введите название радио…" #: front/src/components/library/Albums.vue:119 msgctxt "Content/Search/Input.Placeholder" msgid "Enter album title..." -msgstr "" +msgstr "Введите название альбома..." #: front/src/components/library/Artists.vue:116 msgctxt "Content/Search/Input.Placeholder" msgid "Enter artist name…" -msgstr "Введите имя исполнителя..." +msgstr "Введите имя исполнителя…" #: front/src/views/playlists/List.vue:107 msgctxt "Content/Playlist/Placeholder/Call to action" msgid "Enter playlist name…" -msgstr "Введите название списка воспроизведения..." +msgstr "Введите название списка воспроизведения…" #: front/src/views/auth/PasswordReset.vue:54 msgctxt "Content/Signup/Input.Placeholder" msgid "Enter the email address binded to your account" -msgstr "" +msgstr "Введите адрес электронной почты, связанный с вашим аккаунтом" #: front/src/components/auth/Signup.vue:103 msgctxt "Content/Signup/Form/Placeholder" @@ -1656,7 +1660,7 @@ msgstr "Введите ваш код приглашения (нечувстви #: front/src/components/metadata/Search.vue:114 msgctxt "Content/Library/Input.Placeholder/Verb" msgid "Enter your search query…" -msgstr "Введите ваш поисковый запрос..." +msgstr "Введите ваш поисковый запрос…" #: front/src/components/auth/Signup.vue:102 msgctxt "Content/Signup/Form/Placeholder" @@ -1815,12 +1819,16 @@ msgid "" "domain, and may be displayed publicly to help users understand what " "moderation rules are in place." msgstr "" +"Объясните назначение этой политики. В зависимости от настроек вашего узла, " +"это поможет вам вспомнить, зачем вы назначили её для этого аккаунта или " +"домена, так же это может быть доступно публично, чтобы помочь пользователям " +"понять действующие правила модерации." #: front/src/components/manage/library/UploadsTable.vue:25 #: front/src/views/content/libraries/FilesTable.vue:16 msgctxt "Content/Library/Dropdown" msgid "Failed" -msgstr "Ошибочные треки:" +msgstr "Ошибки" #: front/src/views/content/remote/Card.vue:62 msgctxt "Content/Library/Card.List item/Noun" @@ -1832,7 +1840,7 @@ msgstr "Ошибочные треки:" #: front/src/views/admin/library/TrackDetail.vue:217 msgctxt "*/*/*" msgid "Favorited tracks" -msgstr "Ошибочные треки:" +msgstr "Избранные треки" #: front/src/components/Sidebar.vue:66 msgctxt "Sidebar/Favorites/List item.Link/Noun" @@ -1858,7 +1866,7 @@ msgstr "Федерация" #: front/src/components/library/EditCard.vue:45 msgctxt "Content/Library/Card.Table.Header/Short" msgid "Field" -msgstr "" +msgstr "Поле" #: front/src/components/library/FileUpload.vue:93 msgctxt "Content/Library/Table.Label" @@ -1942,6 +1950,8 @@ msgid "" "From album %{ album } by %{ artist }" msgstr "" +"Из альбома %{ album } от %{ artist }" #: front/src/components/auth/Authorize.vue:28 msgctxt "Content/Auth/Label/Noun" @@ -1984,7 +1994,7 @@ msgstr "Funkwhale заботится об управлении вашей муз #: front/src/components/ShortcutsModal.vue:38 msgctxt "Popup/Keyboard shortcuts/Title" msgid "General shortcuts" -msgstr "" +msgstr "Общие горячие клавиши" #: front/src/components/manage/users/InvitationForm.vue:16 msgctxt "Content/Admin/Button.Label/Verb" @@ -2024,7 +2034,7 @@ msgstr "Настройки" #: front/src/components/common/ActionTable.vue:56 msgctxt "Content/*/Button.Label/Short, Verb" msgid "Go" -msgstr "" +msgstr "Перейти" #: front/src/components/PageNotFound.vue:14 msgctxt "Content/*/Button.Label/Verb" @@ -2039,7 +2049,7 @@ msgstr "Просмотр исполнителей" #: front/src/components/manage/moderation/InstancePolicyForm.vue:114 msgctxt "Content/Moderation/Help text" msgid "Hide account or domain content, except from followers." -msgstr "" +msgstr "Скрыть контент аккаунта или домена от всех, кроме подписчиков." #: front/src/components/moderation/FilterModal.vue:40 msgctxt "Popup/*/Button.Label" @@ -2049,12 +2059,12 @@ msgstr "Добавить содержимое" #: front/src/components/audio/PlayButton.vue:26 msgctxt "*/Queue/Dropdown/Button/Label/Short" msgid "Hide content from this artist" -msgstr "" +msgstr "Скрыть контент этого исполнителя" #: front/src/components/audio/Player.vue:643 msgctxt "Sidebar/Player/Icon.Tooltip/Verb" msgid "Hide content from this artist…" -msgstr "" +msgstr "Скрыть контент этого исполнителя…" #: front/src/components/library/Home.vue:65 msgctxt "Head/Home/Title" @@ -2092,6 +2102,8 @@ msgid "" "If you authorize third-party applications to access your data, those " "applications will be listed here." msgstr "" +"Если вы разрешите сторонним приложениям доступ к вашим данным, эти " +"приложения появятся здесь." #: front/src/components/library/ImportStatusModal.vue:3 msgctxt "Popup/Import/Title" @@ -2101,7 +2113,7 @@ msgstr "Статус импорта" #: front/src/components/library/FileUpload.vue:50 msgctxt "Content/Library/Input.Label/Noun" msgid "Import reference" -msgstr "" +msgstr "Импорт справки" #: front/src/components/manage/library/UploadsTable.vue:20 #: front/src/views/content/libraries/FilesTable.vue:11 @@ -2125,7 +2137,7 @@ msgstr "Дата импорта" #: front/src/components/federation/FetchButton.vue:47 msgctxt "*/*/Error" msgid "Impossible to connect to the remote server" -msgstr "" +msgstr "Невозможно соединиться с удалённым сервером" #: front/src/components/moderation/FilterModal.vue:26 msgctxt "Popup/Moderation/List item" @@ -2135,7 +2147,7 @@ msgstr "Недавно добавленные" #: front/src/components/moderation/FilterModal.vue:27 msgctxt "Popup/Moderation/List item" msgid "In artists and album listings" -msgstr "" +msgstr "В списках исполнителей и альбомов" #: front/src/components/favorites/TrackFavoriteIcon.vue:3 msgctxt "Content/Track/Button.Message" @@ -2145,12 +2157,12 @@ msgstr "В избранном" #: front/src/components/moderation/FilterModal.vue:25 msgctxt "Popup/Moderation/List item" msgid "In other users favorites and listening history" -msgstr "" +msgstr "В избранном и истории прослушивания других пользователей" #: front/src/components/moderation/FilterModal.vue:28 msgctxt "Popup/Moderation/List item" msgid "In radio suggestions" -msgstr "" +msgstr "В рекомендованных радио" #: front/src/components/manage/users/UsersTable.vue:54 msgctxt "Content/Admin/Table" @@ -2160,10 +2172,9 @@ msgstr "Неактивен(на)" #: front/src/components/ShortcutsModal.vue:71 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb" msgid "Increase volume" -msgstr "" +msgstr "Увеличить громкость" #: front/src/components/playlists/Editor.vue:41 -#, fuzzy msgctxt "Content/Playlist/Button.Label/Verb" msgid "Insert from queue (%{ count } track)" msgid_plural "Insert from queue (%{ count } tracks)" @@ -2208,11 +2219,13 @@ msgid "" "Invalid file type, ensure you are uploading an audio file. Supported file " "extensions are %{ extensions }" msgstr "" +"Неправильный тип файла, убедитесь, что закачиваете аудио-файл. " +"Поддерживаемые типы файлов: %{ extensions }" #: front/src/components/library/ImportStatusModal.vue:139 msgctxt "Popup/Import/Error.Label" msgid "Invalid metadata" -msgstr "" +msgstr "Неправильные метаданные" #: front/src/components/auth/Signup.vue:44 #: front/src/components/manage/users/InvitationForm.vue:11 @@ -2234,17 +2247,17 @@ msgstr "Багтрекер" #: front/src/components/SetInstanceModal.vue:5 msgctxt "Popup/Instance/Error message.Title" msgid "It is not possible to connect to the given URL" -msgstr "" +msgstr "Невозможно соединиться с указанным URL" #: front/src/components/Home.vue:50 msgctxt "Content/Home/List item/Verb" msgid "Keep a track of your favorite songs" -msgstr "" +msgstr "Отслеживайте ваши любимые песни" #: front/src/components/Footer.vue:33 src/components/ShortcutsModal.vue:3 msgctxt "*/*/*/Noun" msgid "Keyboard shortcuts" -msgstr "" +msgstr "Горячие клавиши" #: front/src/views/admin/moderation/DomainsDetail.vue:161 msgctxt "Content/Moderation/Table.Label.Link" @@ -2268,7 +2281,7 @@ msgstr "Последняя активность" #: front/src/views/admin/moderation/DomainsDetail.vue:78 msgctxt "Content/*/Table.Label" msgid "Last checked" -msgstr "Последнее обновление:" +msgstr "Последнее обновление" #: front/src/components/playlists/PlaylistModal.vue:46 msgctxt "Popup/Playlist/Table.Label/Short" @@ -2278,13 +2291,13 @@ msgstr "Последнее изменение" #: front/src/components/manage/moderation/AccountsTable.vue:43 msgctxt "Content/Moderation/Table.Label/Noun" msgid "Last seen" -msgstr "Последнее обновление:" +msgstr "Последнее обновление" #: front/src/components/mixins/Translations.vue:47 #: front/src/components/mixins/Translations.vue:48 msgctxt "Content/Moderation/Dropdown/Noun" msgid "Last seen date" -msgstr "Последнее обновление:" +msgstr "Последнее обновление" #: front/src/views/content/remote/Card.vue:60 msgctxt "Content/Library/Card.List item/Noun" @@ -2383,62 +2396,62 @@ msgstr "Библиотека обновлена" #: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:61 msgctxt "Content/*/*/Noun" msgid "License" -msgstr "" +msgstr "Лицензия" #: front/src/views/admin/library/AlbumDetail.vue:157 #: front/src/views/admin/library/ArtistDetail.vue:146 #: front/src/views/admin/library/TrackDetail.vue:209 msgctxt "*/*/*/Noun" msgid "Listenings" -msgstr "" +msgstr "Прослушивания" #: front/src/components/mixins/Translations.vue:80 #: front/src/components/mixins/Translations.vue:81 msgctxt "Content/OAuth Scopes/Label" msgid "Listenings" -msgstr "" +msgstr "Прослушивания" #: front/src/components/audio/track/Table.vue:25 #: front/src/components/library/ArtistDetail.vue:28 msgctxt "Content/*/Button.Label" msgid "Load more…" -msgstr "Загружаем подписчиков..." +msgstr "Загрузить ещё…" #: front/src/views/content/libraries/Detail.vue:21 msgctxt "Content/Library/Paragraph" msgid "Loading followers…" -msgstr "Загружаем подписчиков..." +msgstr "Загружаем подписчиков…" #: front/src/views/content/libraries/Home.vue:3 msgctxt "Content/Library/Paragraph" msgid "Loading Libraries…" -msgstr "Загружаем Библиотеки..." +msgstr "Загружаем Библиотеки…" #: front/src/views/content/libraries/Detail.vue:3 #: front/src/views/content/libraries/Upload.vue:3 msgctxt "Content/Library/Paragraph" msgid "Loading library data…" -msgstr "Загружаем данные библиотеки..." +msgstr "Загружаем данные библиотеки…" #: front/src/views/Notifications.vue:19 msgctxt "Content/Notifications/Paragraph" msgid "Loading notifications…" -msgstr "Загружаем уведомления..." +msgstr "Загружаем уведомления…" #: front/src/views/content/remote/Home.vue:3 msgctxt "Content/Library/Paragraph" msgid "Loading remote libraries…" -msgstr "Загружаем удалённые библиотеки..." +msgstr "Загружаем удалённые библиотеки…" #: front/src/views/content/libraries/Quota.vue:4 msgctxt "Content/Library/Paragraph" msgid "Loading usage data…" -msgstr "Загружаем данные об использовании..." +msgstr "Загружаем данные об использовании…" #: front/src/components/favorites/List.vue:5 msgctxt "Content/Favorites/Message" msgid "Loading your favorites…" -msgstr "Загружаем ваше избранное..." +msgstr "Загружаем ваше избранное…" #: front/src/components/manage/library/AlbumsTable.vue:65 #: front/src/components/manage/library/ArtistsTable.vue:58 @@ -2452,7 +2465,7 @@ msgstr "Загружаем ваше избранное..." #: front/src/views/admin/library/UploadDetail.vue:19 msgctxt "Content/Moderation/*/Short, Noun" msgid "Local" -msgstr "" +msgstr "Местно" #: front/src/components/manage/moderation/AccountsTable.vue:59 #: front/src/views/admin/moderation/AccountsDetail.vue:18 @@ -2498,7 +2511,7 @@ msgstr "Выйти" #: front/src/views/content/libraries/Home.vue:9 msgctxt "Content/Library/Paragraph" msgid "Looks like you don't have a library, it's time to create one." -msgstr "Похоже у вас ещё нет ни одной библиотеки, самое время создать её!" +msgstr "Похоже у вас ещё нет ни одной библиотеки, самое время создать её." #: front/src/components/audio/Player.vue:632 #: src/components/audio/Player.vue:633 @@ -2524,7 +2537,7 @@ msgstr "" #: front/src/components/Sidebar.vue:223 msgctxt "Sidebar/*/Hidden text" msgid "Main menu" -msgstr "" +msgstr "Главное меню" #: front/src/views/admin/library/Base.vue:31 msgctxt "Head/Admin/Title" @@ -2569,7 +2582,7 @@ msgstr "МБ" #: front/src/components/audio/Player.vue:625 msgctxt "Sidebar/Player/Hidden text" msgid "Media player" -msgstr "" +msgstr "Плеер" #: front/src/components/auth/Profile.vue:12 msgctxt "Content/Profile/Paragraph" @@ -2579,7 +2592,7 @@ msgstr "Зарегистрировано с %{ date }" #: front/src/components/Footer.vue:32 msgctxt "Footer/*/List item.Link" msgid "Mobile and desktop apps" -msgstr "" +msgstr "Мобильные и ПК приложения" #: front/src/components/Sidebar.vue:96 #: src/components/manage/users/UsersTable.vue:177 @@ -2596,6 +2609,8 @@ msgid "" "Moderation policies help you control how your instance interact with a given" " domain or account." msgstr "" +"Политики модерации позволяют вам управлять как ваш узел взаимодействует с " +"определённым доменом или аккаунтом." #: front/src/components/library/EditCard.vue:5 msgctxt "Content/Library/Card/Short" @@ -2613,7 +2628,7 @@ msgstr "Дата последнего изменения" #: front/src/components/library/TrackBase.vue:61 msgctxt "*/*/Button.Label/Noun" msgid "More…" -msgstr "" +msgstr "Ещё…" #: front/src/components/Sidebar.vue:63 src/views/admin/Settings.vue:82 msgctxt "*/*/*/Noun" @@ -2733,7 +2748,7 @@ msgstr "Новые треки будут добавлены сюда автом #: front/src/components/library/EditCard.vue:47 msgctxt "Content/Library/Card.Table.Header/Short" msgid "New value" -msgstr "" +msgstr "Новое значение" #: front/src/components/audio/Player.vue:629 msgctxt "Sidebar/Player/Icon.Tooltip" @@ -2748,7 +2763,7 @@ msgstr "Нет" #: front/src/components/Home.vue:95 msgctxt "Content/Home/List item" msgid "No add-ons, no plugins : you only need a web library" -msgstr "" +msgstr "Не нужны аддоны или плагины, только web-библиотека" #: front/src/components/audio/Search.vue:25 msgctxt "Content/Search/Paragraph" @@ -2764,12 +2779,12 @@ msgstr "" #: front/src/components/library/TrackDetail.vue:14 msgctxt "Content/Track/Table.Paragraph" msgid "No copyright information available for this track" -msgstr "Текст недоступен для этого трека." +msgstr "Информация о правах недоступна для этого трека" #: front/src/components/library/TrackDetail.vue:25 msgctxt "Content/Track/Table.Paragraph" msgid "No licensing information for this track" -msgstr "У нас нет уведомлений для показа!" +msgstr "Нет информации о лицензиях для этого трека" #: front/src/components/federation/LibraryWidget.vue:6 msgctxt "Content/Federation/Paragraph" @@ -2779,12 +2794,12 @@ msgstr "Нет подходящей библиотеки." #: front/src/views/Notifications.vue:28 msgctxt "Content/Notifications/Paragraph" msgid "No notification to show." -msgstr "Ваши уведомления" +msgstr "Нет уведомлений." #: front/src/components/common/EmptyState.vue:7 msgctxt "Content/*/Paragraph" msgid "No results were found." -msgstr "" +msgstr "Ничего не найдено." #: front/src/components/mixins/Translations.vue:10 #: front/src/components/mixins/Translations.vue:11 @@ -2826,7 +2841,7 @@ msgstr "Старый пароль" #: front/src/components/library/EditCard.vue:46 msgctxt "Content/Library/Card.Table.Header/Short" msgid "Old value" -msgstr "" +msgstr "Старое значение" #: front/src/components/manage/users/InvitationsTable.vue:20 msgctxt "Content/Admin/Dropdown/Adjective" @@ -2838,6 +2853,8 @@ msgctxt "Popup/Import/Table.Label/Value" msgid "" "Open a support thread (include the debug information below in your message)" msgstr "" +"Открыть тему в поддержке (вставьте диагностическую информацию ниже в ваше " +"сообщение)" #: front/src/components/library/AlbumBase.vue:73 #: front/src/components/library/ArtistBase.vue:84 @@ -2851,7 +2868,7 @@ msgstr "Удалить радио" #: front/src/views/admin/library/TrackDetail.vue:30 msgctxt "Content/Moderation/Link/Verb" msgid "Open local profile" -msgstr "" +msgstr "Открыть локальный профиль" #: front/src/views/admin/library/AlbumDetail.vue:46 #: front/src/views/admin/library/ArtistDetail.vue:45 @@ -2863,7 +2880,7 @@ msgstr "Смотреть на MusicBrainz" #: front/src/views/admin/moderation/AccountsDetail.vue:23 msgctxt "Content/Moderation/Link/Verb" msgid "Open profile" -msgstr "" +msgstr "Открыть профиль" #: front/src/views/admin/library/AlbumDetail.vue:54 #: front/src/views/admin/library/ArtistDetail.vue:53 @@ -2873,7 +2890,7 @@ msgstr "" #: front/src/views/admin/moderation/AccountsDetail.vue:52 msgctxt "Content/Moderation/Link/Verb" msgid "Open remote profile" -msgstr "" +msgstr "Открыть удалённый профиль" #: front/src/views/admin/moderation/DomainsDetail.vue:16 msgctxt "Content/Moderation/Link/Verb" @@ -2936,7 +2953,7 @@ msgstr "Владелец" #: front/src/components/PageNotFound.vue:33 msgctxt "Head/*/Title" msgid "Page Not Found" -msgstr "Страница не найдена!" +msgstr "Страница не найдена" #: front/src/components/PageNotFound.vue:7 msgctxt "Content/*/Title" @@ -2946,7 +2963,7 @@ msgstr "Страница не найдена!" #: front/src/components/Pagination.vue:39 msgctxt "Content/*/Hidden text/Noun" msgid "Pagination" -msgstr "" +msgstr "Страницы" #: front/src/components/auth/Login.vue:33 src/components/auth/Signup.vue:40 msgctxt "Content/*/Input.Label" @@ -2976,7 +2993,7 @@ msgstr "Проиграть трек" #: front/src/components/manage/moderation/InstancePolicyCard.vue:12 msgctxt "Content/Moderation/Card.List item" msgid "Paused" -msgstr "" +msgstr "Пауза" #: front/src/components/library/FileUpload.vue:116 #: front/src/components/manage/library/UploadsTable.vue:23 @@ -3067,7 +3084,7 @@ msgstr "Предыдущий трек" #: front/src/components/audio/PlayButton.vue:77 msgctxt "*/Queue/Dropdown/Button/Title" msgid "Play similar songs" -msgstr "" +msgstr "Играть похожие треки" #: front/src/components/Sidebar.vue:224 msgctxt "Sidebar/Player/Hidden text" @@ -3082,7 +3099,7 @@ msgstr "Проиграть трек" #: front/src/components/audio/PlayButton.vue:82 msgctxt "*/Queue/Button/Title" msgid "Play..." -msgstr "" +msgstr "Играть..." #: front/src/views/playlists/Detail.vue:91 msgctxt "Head/Playlist/Title" @@ -3090,7 +3107,6 @@ msgid "Playlist" msgstr "Список воспроизведения" #: front/src/views/playlists/Detail.vue:12 -#, fuzzy msgctxt "Content/Playlist/Header.Subtitle" msgid "Playlist containing %{ count } track, by %{ username }" msgid_plural "Playlist containing %{ count } tracks, by %{ username }" @@ -3170,11 +3186,13 @@ msgid "" "Prevent account or domain from triggering notifications, except from " "followers." msgstr "" +"Запретить аккаунту или домену присылать уведомления, за исключением " +"подписчиков." #: front/src/components/audio/EmbedWizard.vue:33 msgctxt "Popup/Embed/Title/Noun" msgid "Preview" -msgstr "" +msgstr "Предпросмотр" #: front/src/components/audio/Player.vue:626 msgctxt "Sidebar/Player/Icon.Tooltip" @@ -3185,7 +3203,7 @@ msgstr "Предыдущий трек" #: front/src/components/mixins/Translations.vue:16 msgctxt "Content/Settings/Dropdown/Short" msgid "Private" -msgstr "" +msgstr "Личное" #: front/src/views/content/remote/Card.vue:43 msgctxt "Content/Library/Card.List item" @@ -3212,7 +3230,7 @@ msgstr "Обработка" #: front/src/components/mixins/Translations.vue:69 msgctxt "Content/OAuth Scopes/Label" msgid "Profile" -msgstr "" +msgstr "Профиль" #: front/src/components/manage/moderation/AccountsTable.vue:188 #: front/src/components/manage/moderation/DomainsTable.vue:168 @@ -3291,41 +3309,41 @@ msgstr "Радио" #: front/src/components/auth/ApplicationForm.vue:151 msgctxt "Content/OAuth Scopes/Label/Verb" msgid "Read" -msgstr "" +msgstr "Читать" #: front/src/components/library/ImportStatusModal.vue:51 msgctxt "Popup/Import/Table.Label/Value" msgid "Read our documentation for this error" -msgstr "" +msgstr "Посмотрите нашу документацию по этой ошибке" #: front/src/components/auth/Authorize.vue:24 msgctxt "Content/Auth/Label/Noun" msgid "Read-only" -msgstr "" +msgstr "Только чтение" #: front/src/components/auth/ApplicationForm.vue:152 msgctxt "Content/OAuth Scopes/Help Text" msgid "Read-only access to user data" -msgstr "" +msgstr "Доступ к данным пользователя только для чтения" #: front/src/components/manage/moderation/InstancePolicyCard.vue:39 #: front/src/components/manage/moderation/InstancePolicyForm.vue:25 msgctxt "Content/Moderation/*/Noun" msgid "Reason" -msgstr "" +msgstr "Причина" #: front/src/views/admin/moderation/AccountsDetail.vue:251 #: front/src/views/admin/moderation/DomainsDetail.vue:179 msgctxt "Content/Moderation/Table.Label/Noun" msgid "Received library follows" -msgstr "" +msgstr "Полученные подписки на библиотеку" #: front/src/components/manage/moderation/DomainsTable.vue:40 #: front/src/components/mixins/Translations.vue:62 #: front/src/components/mixins/Translations.vue:63 msgctxt "Content/Moderation/*/Noun" msgid "Received messages" -msgstr "" +msgstr "Полученные сообщения" #: front/src/components/library/EditForm.vue:27 msgctxt "Content/Library/Paragraph" @@ -3335,7 +3353,7 @@ msgstr "Недавно добавленные" #: front/src/components/library/EditForm.vue:17 msgctxt "Content/Library/Paragraph" msgid "Recent edits awaiting review" -msgstr "" +msgstr "Свежие правки в ожидании принятия" #: front/src/components/library/Home.vue:24 msgctxt "Content/Home/Title" @@ -3355,7 +3373,7 @@ msgstr "Недавно прослушанные" #: front/src/components/auth/ApplicationForm.vue:13 msgctxt "Content/Applications/Input.Label/Noun" msgid "Redirect URI" -msgstr "" +msgstr "URI перенаправления" #: front/src/components/auth/Settings.vue:125 #: src/components/auth/Settings.vue:170 @@ -3375,12 +3393,12 @@ msgstr "Обновить" #: front/src/views/admin/library/TrackDetail.vue:49 msgctxt "Content/Moderation/Button/Verb" msgid "Refresh from remote server" -msgstr "" +msgstr "Обновить с удалённого сервера" #: front/src/views/admin/moderation/DomainsDetail.vue:127 msgctxt "Content/Moderation/Button.Label/Verb" msgid "Refresh node info" -msgstr "" +msgstr "Обновить информацию узла" #: front/src/components/federation/FetchButton.vue:79 msgctxt "Popup/*/Message.Title" @@ -3393,26 +3411,28 @@ msgid "" "Refresh request wasn't proceed in time by our server. It will be processed " "later." msgstr "" +"Запрос на обновление не был обработан вовремя нашим сервером. Он будет " +"обработан позже." #: front/src/components/federation/FetchButton.vue:16 msgctxt "Popup/*/Message.Title" msgid "Refresh successful" -msgstr "" +msgstr "Обновление успешно" #: front/src/components/common/ActionTable.vue:275 msgctxt "Content/*/Button.Tooltip/Verb" msgid "Refresh table content" -msgstr "" +msgstr "Обновить данные таблицы" #: front/src/components/federation/FetchButton.vue:12 msgctxt "Popup/*/Message.Title" msgid "Refresh was skipped" -msgstr "" +msgstr "Обновление было пропущено" #: front/src/components/federation/FetchButton.vue:7 msgctxt "Popup/*/Title" msgid "Refreshing object from remote…" -msgstr "" +msgstr "Обновляем объект с удалённого сервера…" #: front/src/components/auth/Signup.vue:9 msgctxt "Content/Signup/Form/Paragraph" @@ -3452,12 +3472,12 @@ msgstr "Отклонено" #: front/src/components/mixins/Translations.vue:45 msgctxt "Content/*/*/Noun" msgid "Release date" -msgstr "Последнее обновление:" +msgstr "Дата выпуска" #: front/src/components/library/FileUpload.vue:63 msgctxt "Content/Library/Paragraph" msgid "Remaining storage space" -msgstr "" +msgstr "Свободное место" #: front/src/views/content/remote/Home.vue:6 msgctxt "Content/Library/Title/Noun" @@ -3539,12 +3559,12 @@ msgstr "Запросить пароль" #: front/src/components/federation/FetchButton.vue:64 msgctxt "Popup/*/Loading.Title" msgid "Requesting a fetch…" -msgstr "" +msgstr "Запрашиваем данные…" #: front/src/components/library/EditForm.vue:82 msgctxt "Content/Library/Button.Label" msgid "Reset to initial value: %{ value }" -msgstr "" +msgstr "Сброс на начальное значение: %{ value }" #: front/src/components/auth/Login.vue:35 src/views/auth/PasswordReset.vue:4 #: front/src/views/auth/PasswordReset.vue:53 @@ -3568,7 +3588,7 @@ msgstr "Результатов на страницу" #: front/src/components/library/EditForm.vue:31 msgctxt "Content/Library/Button.Label" msgid "Retrict to unreviewed edits" -msgstr "" +msgstr "Ограничить неодобренные правки" #: front/src/views/auth/EmailConfirm.vue:17 msgctxt "Content/Signup/Link/Verb" @@ -3583,22 +3603,22 @@ msgstr "Просмотреть файлы" #: front/src/components/auth/Settings.vue:192 msgctxt "*/*/*/Verb" msgid "Revoke" -msgstr "" +msgstr "Отозвать" #: front/src/components/auth/Settings.vue:195 msgctxt "*/Settings/Button.Label/Verb" msgid "Revoke access" -msgstr "" +msgstr "Отозвать доступ" #: front/src/components/auth/Settings.vue:193 msgctxt "Popup/Settings/Title" msgid "Revoke access for application \"%{ application }\"?" -msgstr "" +msgstr "Отозвать доступ для приложения \"%{ application }\"?" #: front/src/components/manage/moderation/InstancePolicyCard.vue:16 msgctxt "Content/Moderation/Card.Title/Noun" msgid "Rule" -msgstr "" +msgstr "Правило" #: front/src/components/admin/SettingsGroup.vue:67 #: front/src/components/library/radios/Builder.vue:34 @@ -3644,12 +3664,12 @@ msgstr "Сканирование... (%{ progress }%)" #: front/src/components/auth/ApplicationForm.vue:22 msgctxt "Content/Applications/Input.Label/Noun" msgid "Scopes" -msgstr "" +msgstr "Области" #: front/src/components/auth/Settings.vue:226 msgctxt "Content/*/*/Noun" msgid "Scopes" -msgstr "" +msgstr "Области" #: front/src/components/library/Albums.vue:10 #: src/components/library/Artists.vue:10 @@ -3678,62 +3698,62 @@ msgstr "Искать в удалённой библиотеке" #: front/src/components/manage/library/EditsCardList.vue:211 msgctxt "Content/Search/Input.Placeholder" msgid "Search by account, summary, domain…" -msgstr "Искать по названию, исполнителю, домену..." +msgstr "Искать по учетной записи, примечанию, домену…" #: front/src/components/manage/library/LibrariesTable.vue:191 msgctxt "Content/Search/Input.Placeholder" msgid "Search by domain, actor, name, description…" -msgstr "Искать по пользователю, адресу электронной почты, коду..." +msgstr "Искать по домену, исполнителю, имени, описанию…" #: front/src/components/manage/library/UploadsTable.vue:241 msgctxt "Content/Search/Input.Placeholder" msgid "Search by domain, actor, name, reference, source…" -msgstr "Искать по пользователю, адресу электронной почты, коду..." +msgstr "Искать по домену, исполнителю, имени, справке, источнику…" #: front/src/components/manage/library/ArtistsTable.vue:164 msgctxt "Content/Search/Input.Placeholder" msgid "Search by domain, name, MusicBrainz ID…" -msgstr "Искать по пользователю, адресу электронной почты, коду..." +msgstr "Искать по домену, имени, MusicBrainz ID…" #: front/src/components/manage/library/TracksTable.vue:174 msgctxt "Content/Search/Input.Placeholder" msgid "Search by domain, title, artist, album, MusicBrainz ID…" -msgstr "Искать по названию, исполнителю, альбому..." +msgstr "Искать по домену, названию, исполнителю, альбому, MusicBrainz ID…" #: front/src/components/manage/library/AlbumsTable.vue:174 msgctxt "Content/Search/Input.Placeholder" msgid "Search by domain, title, artist, MusicBrainz ID…" -msgstr "Искать по названию, исполнителю, альбому..." +msgstr "Искать по домену, названию, исполнителю, MusicBrainz ID…" #: front/src/components/manage/moderation/AccountsTable.vue:171 msgctxt "Content/Search/Input.Placeholder" msgid "Search by domain, username, bio…" -msgstr "Искать по пользователю, адресу электронной почты, коду..." +msgstr "Искать по домену, имени пользователя, информации пользователя…" #: front/src/components/manage/moderation/DomainsTable.vue:151 msgctxt "Content/Search/Input.Placeholder" msgid "Search by name…" -msgstr "Искать по имени пользователя, адресу электронной почты, имени..." +msgstr "Искать по имени…" #: front/src/views/content/libraries/FilesTable.vue:208 msgctxt "Content/Library/Input.Placeholder" msgid "Search by title, artist, album…" -msgstr "Искать по названию, исполнителю, альбому..." +msgstr "Искать по названию, исполнителю, альбому…" #: front/src/components/manage/users/InvitationsTable.vue:153 msgctxt "Content/Admin/Input.Placeholder/Verb" msgid "Search by username, e-mail address, code…" -msgstr "Искать по пользователю, адресу электронной почты, коду..." +msgstr "Искать по пользователю, адресу электронной почты, коду…" #: front/src/components/manage/users/UsersTable.vue:163 msgctxt "Content/Search/Input.Placeholder" msgid "Search by username, e-mail address, name…" -msgstr "Искать по имени пользователя, адресу электронной почты, имени..." +msgstr "Искать по имени пользователя, адресу электронной почты, имени…" #: front/src/components/audio/SearchBar.vue:20 msgctxt "Sidebar/Search/Input.Placeholder" msgid "Search for artists, albums, tracks…" -msgstr "Искать исполнителей, альбомы, треки..." +msgstr "Искать исполнителей, альбомы, треки…" #: front/src/components/audio/Search.vue:2 msgctxt "Content/Search/Title" @@ -3753,7 +3773,7 @@ msgstr "Искать на Википедии" #: src/views/admin/users/Base.vue:21 front/src/views/content/Base.vue:19 msgctxt "Menu/*/Hidden text" msgid "Secondary menu" -msgstr "" +msgstr "Дополнительное меню" #: front/src/views/admin/Settings.vue:15 msgctxt "Content/Admin/Menu.Title" @@ -3766,7 +3786,6 @@ msgid "Select a filter" msgstr "Выберите фильтр" #: front/src/components/common/ActionTable.vue:79 -#, fuzzy msgctxt "Content/*/Link/Verb" msgid "Select all %{ total } elements" msgid_plural "Select all %{ total } elements" @@ -3816,7 +3835,6 @@ msgid "Sharing link" msgstr "Поделиться ссылкой" #: front/src/components/audio/album/Card.vue:38 -#, fuzzy msgctxt "Content/Album/Card.Link/Verb" msgid "Show %{ count } more track" msgid_plural "Show %{ count } more tracks" @@ -3825,23 +3843,22 @@ msgstr[1] "Показать больше на %{ count } трека" msgstr[2] "Показать больше на %{ count } треков" #: front/src/components/audio/artist/Card.vue:30 -#, fuzzy msgctxt "Content/Artist/Card.Link" msgid "Show 1 more album" msgid_plural "Show %{ count } more albums" -msgstr[0] "Показать больше на %{ count } альбом" -msgstr[1] "Показать больше на %{ count } альбома" -msgstr[2] "Показать больше на %{ count } альбомов" +msgstr[0] "Показать ещё один альбом" +msgstr[1] "Показать ещё %{ count } альбома" +msgstr[2] "Показать ещё %{ count } альбомов" #: front/src/components/library/EditForm.vue:21 msgctxt "Content/Library/Button.Label" msgid "Show all edits" -msgstr "" +msgstr "Показать все правки" #: front/src/components/ShortcutsModal.vue:42 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb" msgid "Show available keyboard shortcuts" -msgstr "" +msgstr "Показать доступные горячие клавиши" #: front/src/views/Notifications.vue:7 msgctxt "Content/Notifications/Form.Label/Verb" @@ -3926,12 +3943,12 @@ msgstr "Пропущенные файлы" #: front/src/views/admin/moderation/DomainsDetail.vue:89 msgctxt "Content/Moderation/Table.Label" msgid "Software" -msgstr "" +msgstr "Программное обеспечение" #: front/src/components/playlists/Editor.vue:21 msgctxt "Content/Playlist/Paragraph" msgid "Some tracks in your queue are already in this playlist:" -msgstr "" +msgstr "Некоторые треки из очереди уже находятся в этом списке воспроизведения:" #: front/src/components/PageNotFound.vue:10 msgctxt "Content/*/Paragraph" @@ -3947,7 +3964,7 @@ msgstr "Исходный код" #: front/src/components/manage/users/UsersTable.vue:70 msgctxt "Content/Profile/User role" msgid "Staff member" -msgstr "" +msgstr "Член команды" #: front/src/components/audio/PlayButton.vue:23 #: src/components/radios/Button.vue:4 @@ -3966,6 +3983,8 @@ msgid "" "Statistics are computed from known activity and content on your instance, " "and do not reflect general activity for this account" msgstr "" +"Статистика считается по известной активности и содержимому вашего узла и не " +"отражает активность для этого аккаунта" #: front/src/views/admin/moderation/DomainsDetail.vue:371 msgctxt "Content/Moderation/Help text" @@ -3973,6 +3992,8 @@ msgid "" "Statistics are computed from known activity and content on your instance, " "and do not reflect general activity for this domain" msgstr "" +"Статистика считается по известной активности и содержимому вашего узла и не " +"отражает активность для этого домена" #: front/src/views/admin/library/AlbumDetail.vue:329 #: front/src/views/admin/library/ArtistDetail.vue:328 @@ -3984,6 +4005,8 @@ msgid "" "Statistics are computed from known activity and content on your instance, " "and do not reflect general activity for this object" msgstr "" +"Статистика считается по известной активности и содержимому вашего узла и не " +"отражает активность для этого объекта" #: front/src/views/admin/moderation/DomainsDetail.vue:115 msgctxt "Content/Moderation/Table.Label (Value is Error message)" @@ -4031,17 +4054,17 @@ msgstr "Отправить" #: front/src/components/library/EditForm.vue:98 msgctxt "Content/Library/Button.Label/Verb" msgid "Submit and apply edit" -msgstr "" +msgstr "Применить изменения" #: front/src/components/library/EditForm.vue:7 msgctxt "Content/Library/Button.Label" msgid "Submit another edit" -msgstr "" +msgstr "Отправить ещё одну правку" #: front/src/components/library/EditForm.vue:99 msgctxt "Content/Library/Button.Label/Verb" msgid "Submit suggestion" -msgstr "" +msgstr "Отправить предложение" #: front/src/views/admin/Settings.vue:85 msgctxt "Content/Admin/Menu" @@ -4056,7 +4079,7 @@ msgstr "Пароль Subsonic API" #: front/src/components/library/EditForm.vue:38 msgctxt "Content/Library/Paragraph" msgid "Suggest a change using the form below." -msgstr "" +msgstr "Предложите правку, используя форму ниже." #: front/src/components/library/AlbumEdit.vue:5 msgctxt "Content/*/Title" @@ -4081,27 +4104,27 @@ msgstr "Предложенные изменения" #: front/src/components/library/FileUpload.vue:3 msgctxt "Content/Library/Tab.Title/Short" msgid "Summary" -msgstr "" +msgstr "Сводка" #: front/src/components/library/EditForm.vue:87 msgctxt "*/*/*" msgid "Summary (optional)" -msgstr "" +msgstr "Сводка (необязательно)" #: front/src/components/Footer.vue:39 msgctxt "Footer/*/Listitem.Link" msgid "Support forum" -msgstr "" +msgstr "Форум поддержки" #: front/src/components/library/FileUpload.vue:85 msgctxt "Content/Library/Paragraph" msgid "Supported extensions: %{ extensions }" -msgstr "" +msgstr "Поддерживаемые расширения: %{ extensions }" #: front/src/components/playlists/Editor.vue:9 msgctxt "Content/Playlist/Paragraph" msgid "Syncing changes to server…" -msgstr "Синхронизируем изменения с сервером..." +msgstr "Синхронизируем изменения с сервером…" #: front/src/components/audio/EmbedWizard.vue:25 #: front/src/components/common/CopyInput.vue:3 @@ -4123,11 +4146,13 @@ msgid "" "The album will be removed, as well as associated uploads, tracks, favorites " "and listening history. This action is irreversible." msgstr "" +"Альбом будет удалён вместе со связанными с ним закачками, треками, избранным " +"и историей прослушивания. Это действие нельзя отменить." #: front/src/components/auth/Authorize.vue:39 msgctxt "Content/Auth/Paragraph" msgid "The application is also requesting the following unknown permissions:" -msgstr "" +msgstr "Приложение также запрашивает следующие неизвестные разрешения:" #: front/src/views/admin/library/ArtistDetail.vue:74 msgctxt "Content/Moderation/Paragraph" @@ -4135,6 +4160,8 @@ msgid "" "The artist will be removed, as well as associated uploads, tracks, albums, " "favorites and listening history. This action is irreversible." msgstr "" +"Исполнитель будет удалён вместе со связанными с ним закачками, треками, " +"альбомами, избранным и историей прослушивания. Это действие нельзя отменить." #: front/src/components/Footer.vue:53 msgctxt "Footer/*/List item.Link" @@ -4144,7 +4171,7 @@ msgstr "Логотип funkwhale был любезно предоставлен #: front/src/components/SetInstanceModal.vue:8 msgctxt "Popup/Instance/Error message.List item" msgid "The given address is not a Funkwhale server" -msgstr "" +msgstr "Заданный адрес не является сервером Funkwhale" #: front/src/views/content/libraries/Form.vue:34 msgctxt "Popup/Library/Paragraph" @@ -4158,6 +4185,8 @@ msgid "" "The library will be removed, as well as associated uploads, and follows. " "This action is irreversible." msgstr "" +"Библиотека будет удалена вместе со связанными с ней закачками и подписками. " +"Это действие нельзя отменить." #: front/src/components/library/ImportStatusModal.vue:140 msgctxt "Popup/Import/Error.Label" @@ -4165,16 +4194,17 @@ msgid "" "The metadata included in the file is invalid or some mandatory fields are " "missing." msgstr "" +"Метаданные файла неправильные или некоторые обязательные поля отсутствуют." #: front/src/components/library/FileUpload.vue:38 msgctxt "Content/Library/List item" msgid "The music files you are uploading are tagged properly." -msgstr "" +msgstr "Закачиваемые вами файлы имеют правильные теги." #: front/src/components/audio/Player.vue:65 msgctxt "Sidebar/Player/Error message.Paragraph" msgid "The next track will play automatically in a few seconds…" -msgstr "" +msgstr "Следующий трек запустится автоматически через несколько секунд…" #: front/src/components/Home.vue:116 msgctxt "Content/Home/List item" @@ -4182,6 +4212,8 @@ msgid "" "The plaform is free and open-source, you can install it and modify it " "without worries" msgstr "" +"Платформа бесплатна и имеет открытый исходный код, вы можете устанавливать и " +"модифицировать её как хотите" #: front/src/components/playlists/Form.vue:14 msgctxt "Content/Playlist/Error message.Title" @@ -4191,23 +4223,23 @@ msgstr "Список воспроизведения создан" #: front/src/components/federation/FetchButton.vue:37 msgctxt "*/*/Error" msgid "The remote server answered with HTTP %{ status }" -msgstr "" +msgstr "Удалённый сервер ответил с HTTP %{ status }" #: front/src/components/federation/FetchButton.vue:13 msgctxt "Popup/*/Message.Content" msgid "" "The remote server answered, but returned data was unsupported by Funkwhale." -msgstr "" +msgstr "Удалённый сервер ответил, но ответ не поддерживается Funkwhale." #: front/src/components/federation/FetchButton.vue:44 msgctxt "*/*/Error" msgid "The remote server didn't answered fast enough" -msgstr "" +msgstr "Удалённый сервер не ответил достаточно быстро" #: front/src/components/federation/FetchButton.vue:50 msgctxt "*/*/Error" msgid "The return server returned invalid JSON or JSON-LD data" -msgstr "" +msgstr "Удалённый сервер вернул неправильные JSON или JSON-LD данные" #: front/src/components/manage/library/AlbumsTable.vue:189 msgctxt "Popup/*/Paragraph" @@ -4215,6 +4247,8 @@ msgid "" "The selected albums will be removed, as well as associated tracks, uploads, " "favorites and listening history. This action is irreversible." msgstr "" +"Выбранные альбомы будут удалены вместе со связанными треками, закачками, " +"избранным и историей прослушивания. Это действие нельзя отменить." #: front/src/components/manage/library/ArtistsTable.vue:179 msgctxt "Popup/*/Paragraph" @@ -4222,6 +4256,8 @@ msgid "" "The selected artist will be removed, as well as associated uploads, tracks, " "albums, favorites and listening history. This action is irreversible." msgstr "" +"Выбранный исполнитель будет удален вместе со связанными закачками, треками, " +"альбомами, избранным и историей прослушивания. Это действие нельзя отменить." #: front/src/components/manage/library/LibrariesTable.vue:206 msgctxt "Popup/*/Paragraph" @@ -4229,6 +4265,8 @@ msgid "" "The selected library will be removed, as well as associated uploads and " "follows. This action is irreversible." msgstr "" +"Выбранная библиотека будет удалена вместе со связанными закачками и " +"подписками. Это действие нельзя отменить." #: front/src/components/manage/library/TracksTable.vue:189 msgctxt "Popup/*/Paragraph" @@ -4236,16 +4274,18 @@ msgid "" "The selected tracks will be removed, as well as associated uploads, " "favorites and listening history. This action is irreversible." msgstr "" +"Выбранные треки будут удалены вместе со связанными закачками, избранным и " +"историей прослушивания. Это действие нельзя отменить." #: front/src/components/manage/library/UploadsTable.vue:256 msgctxt "Popup/*/Paragraph" msgid "The selected upload will be removed. This action is irreversible." -msgstr "" +msgstr "Выбранная закачка будет удалена. Это действие нельзя отменить." #: front/src/components/SetInstanceModal.vue:7 msgctxt "Popup/Instance/Error message.List item" msgid "The server might be down" -msgstr "" +msgstr "Сервер может быть недоступен" #: front/src/components/auth/SubsonicTokenForm.vue:4 msgctxt "Content/Settings/Paragraph" @@ -4256,7 +4296,7 @@ msgstr "Subsonic API недоступен на этом узле Funkwhale." msgctxt "Popup/Library/Paragraph" msgid "" "The suggestion will be completely removed, this action is irreversible." -msgstr "" +msgstr "Предложенная правка будет удалена, это действие нельзя отменить." #: front/src/components/playlists/PlaylistModal.vue:34 msgctxt "Popup/Playlist/Error message.Title" @@ -4266,7 +4306,7 @@ msgstr "Нам не удалось добавить трек в список в #: front/src/components/audio/Player.vue:62 msgctxt "Sidebar/Player/Error message.Title" msgid "The track cannot be loaded" -msgstr "" +msgstr "Трек не может быть загружен" #: front/src/views/admin/library/TrackDetail.vue:74 msgctxt "Content/Moderation/Paragraph" @@ -4274,11 +4314,13 @@ msgid "" "The track will be removed, as well as associated uploads, favorites and " "listening history. This action is irreversible." msgstr "" +"Трек будет удалён вместе со связанными закачками, избранным и историей " +"прослушивания. Это действие нельзя отменить." #: front/src/views/admin/library/UploadDetail.vue:68 msgctxt "Content/Moderation/Paragraph" msgid "The upload will be removed. This action is irreversible." -msgstr "" +msgstr "Закачка будет удалена. Это действие нельзя отменить." #: front/src/components/library/FileUpload.vue:42 msgctxt "Content/Library/List item" @@ -4288,12 +4330,12 @@ msgstr "Загружаемые музыкальные файлы в формат #: front/src/views/content/Home.vue:4 msgctxt "Content/Library/Paragraph" msgid "There are various ways to grab new content and make it available here." -msgstr "" +msgstr "Есть разные способы получить новый контент и разместить его здесь." #: front/src/components/manage/moderation/InstancePolicyForm.vue:66 msgctxt "Popup/Moderation/Paragraph" msgid "This action is irreversible." -msgstr "" +msgstr "Это действие нельзя отменить." #: front/src/components/library/AlbumDetail.vue:29 msgctxt "Content/Album/Paragraph" @@ -4309,7 +4351,7 @@ msgstr "Исполнитель представлен в следующих би #: front/src/views/admin/moderation/DomainsDetail.vue:48 msgctxt "Content/Moderation/Card.Title" msgid "This domain is subject to specific moderation rules" -msgstr "" +msgstr "К этому домену применяются особые правила модерации" #: front/src/views/content/Home.vue:9 msgctxt "Content/Library/Paragraph" @@ -4322,12 +4364,12 @@ msgstr "" msgctxt "Content/Settings/Paragraph" msgid "" "This is the list of applications that have access to your account data." -msgstr "" +msgstr "Это список приложений, которые имеют доступ к данным вашего аккаунта." #: front/src/components/auth/Settings.vue:218 msgctxt "Content/Settings/Paragraph" msgid "This is the list of applications that you have created." -msgstr "" +msgstr "Это список приложений, которые вы создали." #: front/src/components/auth/Profile.vue:16 msgctxt "Content/Profile/Button.Paragraph" @@ -4345,11 +4387,13 @@ msgid "" "This library is private and your approval from its owner is needed to access" " its content" msgstr "" +"Это личная библиотека и для доступа к ней необходимо получить разрешение " +"владельца" #: front/src/views/content/remote/Card.vue:142 msgctxt "Content/Library/Card.Help text" msgid "This library is public and you can access its content freely" -msgstr "" +msgstr "Это публичная библиотека и у вас есть свободный доступ к её содержимому" #: front/src/components/common/ActionTable.vue:47 msgctxt "Modal/*/Paragraph" @@ -4366,11 +4410,14 @@ msgstr "" msgctxt "Content/*/Message" msgid "This object is managed by another server, you cannot edit it." msgstr "" +"Этот объект управляется другим сервером, вы не можете редактировать его." #: front/src/components/library/FileUpload.vue:51 msgctxt "Content/Library/Paragraph" msgid "This reference will be used to group imported files together." msgstr "" +"Это примечание будет использовано для обозначения группы файлов, " +"импортированных вместе." #: front/src/components/mixins/Translations.vue:33 #: front/src/components/mixins/Translations.vue:34 @@ -4397,6 +4444,7 @@ msgstr "Трек уже был представлен в одной из ваш msgctxt "*/Queue/Button/Title" msgid "This track is not available in any library you have access to" msgstr "" +"Этот трек недоступен ни в одной из библиотек, к которым у вас есть доступ" #: front/src/components/library/TrackDetail.vue:82 msgctxt "Content/Track/Paragraph" @@ -4437,7 +4485,7 @@ msgctxt "Popup/Settings/Paragraph" msgid "" "This will prevent this application from accessing the service on your " "behalf." -msgstr "" +msgstr "Это предотвратит доступ приложения к сервису от вашего имени." #: front/src/components/playlists/Editor.vue:54 msgctxt "Popup/Playlist/Paragraph" @@ -4469,11 +4517,13 @@ msgid "" "To continue, please select the Funkwhale instance you want to connect to. " "Enter the address directly, or select one of the suggested choices." msgstr "" +"Чтобы продолжить, пожалуйста выберите узел Funkwhale, к которому вы " +"соединяетесь. Введите сам адрес или выберите один из предложенных вариантов." #: front/src/components/ShortcutsModal.vue:79 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb" msgid "Toggle queue looping" -msgstr "" +msgstr "Включить цикличное проигрывание очереди" #: front/src/views/admin/library/AlbumDetail.vue:222 #: front/src/views/admin/library/ArtistDetail.vue:211 @@ -4511,7 +4561,7 @@ msgstr "Трек" #: front/src/components/library/EditCard.vue:13 msgctxt "Content/Library/Card/Short" msgid "Track #%{ id } - %{ name }" -msgstr "" +msgstr "Трек #%{ id } - %{ name }" #: front/src/views/admin/library/TrackDetail.vue:91 msgctxt "Content/Moderation/Title" @@ -4610,12 +4660,12 @@ msgstr "К сожалению, владельцы этого узла ещё н #: front/src/components/federation/FetchButton.vue:55 msgctxt "*/*/Error" msgid "Unknowkn error" -msgstr "" +msgstr "Неизвестная ошибка" #: front/src/components/library/ImportStatusModal.vue:144 msgctxt "Popup/Import/Error.Label" msgid "Unkwown error" -msgstr "" +msgstr "Неизвестная ошибка" #: front/src/components/Home.vue:37 msgctxt "Content/Home/Title" @@ -4625,7 +4675,7 @@ msgstr "Безграничная музыка" #: front/src/components/audio/Player.vue:630 msgctxt "Sidebar/Player/Icon.Tooltip/Verb" msgid "Unmute" -msgstr "" +msgstr "Включить звук" #: front/src/components/manage/moderation/InstancePolicyForm.vue:57 msgctxt "Content/Moderation/Card.Button.Label/Verb" @@ -4700,7 +4750,7 @@ msgstr "" #: front/src/components/library/ImportStatusModal.vue:8 msgctxt "Popup/Import/Message" msgid "Upload is still pending and will soon be processed by the server." -msgstr "" +msgstr "Закачка всё ещё в очереди и скоро будет обработана сервером." #: front/src/views/content/Home.vue:7 msgctxt "Content/Library/Paragraph" @@ -4724,7 +4774,7 @@ msgstr "Квота загрузки" #: front/src/components/library/FileUpload.vue:267 msgctxt "Content/Library/Help text" msgid "Upload timeout, please try again" -msgstr "" +msgstr "Таймаут загрузки, попробуйте ещё раз" #: front/src/components/library/ImportStatusModal.vue:14 msgctxt "Popup/Import/Message" @@ -4732,11 +4782,12 @@ msgid "" "Upload was skipped because a similar one is already available in one of your" " libraries." msgstr "" +"Закачка была пропущена, так как похожая уже есть в одной из ваших библиотек." #: front/src/components/library/ImportStatusModal.vue:11 msgctxt "Popup/Import/Message" msgid "Upload was successfully processed by the server." -msgstr "" +msgstr "Закачка была успешно обработана сервером." #: front/src/components/library/FileUpload.vue:109 msgctxt "Content/Library/Table" @@ -4751,7 +4802,7 @@ msgstr "Загружается" #: front/src/components/library/FileUpload.vue:112 msgctxt "Content/Library/Table" msgid "Uploading…" -msgstr "Загружается" +msgstr "Загружается…" #: front/src/views/admin/library/Base.vue:20 #: front/src/views/admin/library/UploadsList.vue:24 @@ -4783,6 +4834,8 @@ msgid "" "Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is " "not served on the web." msgstr "" +"Используйте \"urn:ietf:wg:oauth:2.0:oob\" как URI перенаправления, если ваше " +"приложение не опубликовано в Интернет." #: front/src/components/Footer.vue:16 msgctxt "Footer/*/List item.Link" @@ -4804,6 +4857,8 @@ msgid "" "Use this setting to temporarily enable/disable the policy without completely" " removing it." msgstr "" +"Используйте эту настройку для временного включения/отключения политики без " +"полного её удаления." #: front/src/components/manage/users/InvitationsTable.vue:49 msgctxt "Content/Admin/Table" @@ -4892,7 +4947,7 @@ msgstr "Просмотреть файлы" #: front/src/views/admin/moderation/AccountsDetail.vue:45 msgctxt "Content/Moderation/Link/Verb" msgid "View in Django's admin" -msgstr "" +msgstr "Посмотреть в админке Django" #: front/src/components/library/AlbumBase.vue:61 #: front/src/components/library/ArtistBase.vue:72 @@ -4921,12 +4976,12 @@ msgstr "Видимость" #: front/src/components/library/AlbumDetail.vue:4 msgctxt "Content/Album/" msgid "Volume %{ number }" -msgstr "" +msgstr "Том %{ number }" #: front/src/components/federation/FetchButton.vue:69 msgctxt "Popup/*/Loading.Title" msgid "Waiting for result…" -msgstr "Загружаем ваше избранное..." +msgstr "Ждем результатов…" #: front/src/components/auth/Login.vue:7 msgctxt "Content/Login/Error message.Title" @@ -4946,7 +5001,7 @@ msgstr "Мы не отслеживаем вас и не надоедаем ва #: front/src/components/library/FileUpload.vue:39 msgctxt "Content/Library/Link" msgid "We recommend using Picard for that purpose." -msgstr "мы рекомендуем использовать Picard для этого" +msgstr "Мы рекомендуем использовать Picard для этого." #: front/src/components/Home.vue:7 msgctxt "Content/Home/Title" @@ -4971,27 +5026,27 @@ msgstr "Почему funkwhale?" #: front/src/components/audio/EmbedWizard.vue:13 msgctxt "Popup/Embed/Input.Label" msgid "Widget height" -msgstr "" +msgstr "Высота виджета" #: front/src/components/audio/EmbedWizard.vue:6 msgctxt "Popup/Embed/Input.Label" msgid "Widget width" -msgstr "" +msgstr "Ширина виджета" #: front/src/components/auth/ApplicationForm.vue:157 msgctxt "Content/OAuth Scopes/Label/Verb" msgid "Write" -msgstr "" +msgstr "Запись" #: front/src/components/auth/Authorize.vue:21 msgctxt "Content/Auth/Label/Noun" msgid "Write-only" -msgstr "" +msgstr "Только запись" #: front/src/components/auth/ApplicationForm.vue:158 msgctxt "Content/OAuth Scopes/Help Text" msgid "Write-only access to user data" -msgstr "" +msgstr "Доступ к данным пользователя только для записи" #: front/src/components/Sidebar.vue:129 #: front/src/components/manage/moderation/AccountsTable.vue:72 @@ -5003,7 +5058,7 @@ msgstr "Да" #: front/src/components/auth/Logout.vue:8 msgctxt "Content/Login/Button.Label" msgid "Yes, log me out!" -msgstr "" +msgstr "Да, выйти!" #: front/src/views/content/libraries/Form.vue:19 msgctxt "Content/Library/Paragraph" @@ -5031,11 +5086,15 @@ msgid "" "be disconnected from your current instance and all your local data will be " "deleted." msgstr "" +"В настоящий момент вы соединены с %{ " +"hostname } . Если вы продолжите, вы " +"будете отсоединены от вашего текущего узла и все ваши местные данные будут " +"удалены." #: front/src/components/library/ArtistDetail.vue:6 msgctxt "Content/Artist/Paragraph" msgid "You are currently hiding content related to this artist." -msgstr "" +msgstr "Сейчас вы не показываете содержимое, связанное с этим исполнителем." #: front/src/components/auth/Logout.vue:7 msgctxt "Content/Login/Paragraph" @@ -5048,11 +5107,13 @@ msgid "" "You are not uploading copyrighted content in a public library, otherwise you" " may be infringing the law" msgstr "" +"Вы не загружаете контент, защищенный авторскими правами, в публичные " +"библиотеки, это может быть нарушением закона" #: front/src/components/SetInstanceModal.vue:98 msgctxt "*/Instance/Message" msgid "You are now using the Funkwhale instance at %{ url }" -msgstr "" +msgstr "Вы используете узел Funkwhale на %{ url }" #: front/src/views/content/Home.vue:17 msgctxt "Content/Library/Paragraph" @@ -5079,6 +5140,7 @@ msgctxt "Popup/Moderation/Paragraph" msgid "" "You can manage and update your filters anytime from your account settings." msgstr "" +"Вы можете управлять своими фильтрами в любой момент через настройки аккаунта." #: front/src/views/auth/EmailConfirm.vue:24 msgctxt "Content/Signup/Paragraph" @@ -5108,22 +5170,22 @@ msgstr "" #: front/src/components/auth/Settings.vue:202 msgctxt "Content/Applications/Paragraph" msgid "You don't have any application connected with your account." -msgstr "У нас нет уведомлений для показа!" +msgstr "У вас нет приложений, связанных с вашей учётной записью." #: front/src/components/auth/Settings.vue:261 msgctxt "Content/Applications/Paragraph" msgid "You don't have any configured application yet." -msgstr "У нас нет уведомлений для показа!" +msgstr "У вас пока нет настроенных приложений." #: front/src/views/admin/moderation/AccountsDetail.vue:75 msgctxt "Content/Moderation/Card.Title" msgid "You don't have any rule in place for this account." -msgstr "У нас нет уведомлений для показа!" +msgstr "У вас нет установленных правил для этого аккаунта." #: front/src/views/admin/moderation/DomainsDetail.vue:39 msgctxt "Content/Moderation/Card.Title" msgid "You don't have any rule in place for this domain." -msgstr "У нас нет уведомлений для показа!" +msgstr "У вас нет установленных правил для этого домена." #: front/src/components/library/EditForm.vue:52 msgctxt "Content/Library/Paragraph" @@ -5131,6 +5193,8 @@ msgid "" "You don't have the permission to edit this object, but you can suggest " "changes. Once submitted, suggestions will be reviewed before approval." msgstr "" +"Вы не имеете разрешений для редактирования этого объекта, но вы можете " +"предложить правки. После отправки правки будут рассмотрены перед применением." #: front/src/components/Sidebar.vue:171 msgctxt "Sidebar/Player/Title" @@ -5140,23 +5204,23 @@ msgstr "У вас проигрывается радио" #: front/src/components/audio/Player.vue:69 msgctxt "Sidebar/Player/Error message.Paragraph" msgid "You may have a connectivity issue." -msgstr "" +msgstr "У вас могут быть проблемы со связью." #: front/src/components/auth/Settings.vue:100 msgctxt "Popup/Settings/List item" msgid "" "You will be logged out from this session and have to log in with the new one" -msgstr "" +msgstr "Вы будете отключены от этого сеанса и вам нужно будет зайти заново" #: front/src/components/auth/Authorize.vue:51 msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ url }" -msgstr "" +msgstr "Вы будете перенаправлены на %{ url }" #: front/src/components/auth/Authorize.vue:49 msgctxt "Content/Auth/Paragraph" msgid "You will be shown a code to copy-paste in the application." -msgstr "" +msgstr "Вам будет показан код для вставки в приложение." #: front/src/components/auth/Settings.vue:71 msgctxt "Content/Settings/Paragraph" @@ -5172,11 +5236,13 @@ msgid "" "You will not see tracks, albums and user activity linked to this artist " "anymore:" msgstr "" +"Вы больше не увидите треков, альбомов и активности пользователей, связанной " +"с этим исполнителем:" #: front/src/components/auth/Signup.vue:13 msgctxt "Content/Signup/Form/Paragraph" msgid "Your account cannot be created." -msgstr "Список воспроизведения создан" +msgstr "Ваша учётная запись не может быть создана." #: front/src/components/auth/Settings.vue:215 msgctxt "Content/Settings/Title/Noun" @@ -5186,12 +5252,12 @@ msgstr "Ваши уведомления" #: front/src/components/auth/Settings.vue:38 msgctxt "Content/Settings/Error message.Title" msgid "Your avatar cannot be saved" -msgstr "" +msgstr "Ваш аватар не может быть сохранён" #: front/src/components/library/EditForm.vue:3 msgctxt "Content/Library/Paragraph" msgid "Your edit was successfully submitted." -msgstr "" +msgstr "Ваша правка была успешно отправлена." #: front/src/components/favorites/List.vue:116 msgctxt "Head/Favorites/Title" @@ -5201,7 +5267,7 @@ msgstr "Ваше избранное" #: front/src/components/Home.vue:109 msgctxt "Content/Home/Title" msgid "Your music, your way" -msgstr "" +msgstr "Ваша музыка, ваши правила" #: front/src/views/Notifications.vue:4 msgctxt "Content/Notifications/Title" @@ -5211,7 +5277,7 @@ msgstr "Ваши уведомления" #: front/src/components/auth/Settings.vue:76 msgctxt "Content/Settings/Error message.Title" msgid "Your password cannot be changed" -msgstr "" +msgstr "Ваш пароль не может быть изменён" #: front/src/views/auth/PasswordResetConfirm.vue:29 msgctxt "Content/Signup/Card.Paragraph" @@ -5243,7 +5309,6 @@ msgid "Copyright" msgstr "Копировать" #: front/src/components/library/AlbumBase.vue:183 -#, fuzzy msgctxt "Content/Album/Header.Title" msgid "" "Album containing %{ count } track, by %{ artist }" -msgstr[0] "Альбом содержит %{ count } трек от %{ artist }" -msgstr[1] "Альбом содержит %{ count } трека от %{ artist }" -msgstr[2] "Альбом содержит %{ count } треков от %{ artist }" +msgstr[0] "" +"Альбом содержит %{ count } трек от %{ artist }" +msgstr[1] "" +"Альбом содержит %{ count } трека от %{ artist }" +msgstr[2] "" +"Альбом содержит %{ count } треков от %{ artist }" #: front/src/components/audio/PlayButton.vue:220 -#, fuzzy msgctxt "*/Queue/Message" msgid "%{ count } track was added to your queue" msgid_plural "%{ count } tracks were added to your queue" From 3814c1101c88207490ace59ad4bca2d493f9dc21 Mon Sep 17 00:00:00 2001 From: Eliot Berriot Date: Thu, 6 Jun 2019 13:53:05 +0200 Subject: [PATCH 011/291] Added some documentation about translations lifecycle --- TRANSLATORS.rst | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/TRANSLATORS.rst b/TRANSLATORS.rst index 5e2cf51f7..7fea7e399 100644 --- a/TRANSLATORS.rst +++ b/TRANSLATORS.rst @@ -1,6 +1,8 @@ Translating Funkwhale ===================== +A step-by-step, beginner friendly guide is available at https://contribute.funkwhale.audio/guides/translate/ + Thank you for reading this! If you want to help translate Funkwhale, you found the proper place :) @@ -21,8 +23,41 @@ Respecting those guidelines is mandatory if you want your translation to be incl - Use gender-neutral language and wording +Submitting a new language +------------------------- + +1. Pull the latest version of ``develop`` +2. Create a new branch, e.g ``git checkout -b translations-new-fr-ca`` +3. Add your new language code and name in ``front/src/locales.js``. Use the native language name, as it is what appears in the UI selector. +4. Create the ``po`` file from template: + +.. code-block:: shell + + export LOCALE=fr_CA # replace with your actual locale code + mkdir -p front/locales/$LOCALE/LC_MESSAGES + msginit --no-wrap --no-translator --locale=$LOCALE --input=front/locales/app.pot --output-file=front/locales/$LOCALE/LC_MESSAGES/app.po + +5. Then commit your changes, push, and submit a pull request on the ``develop`` branch + Requesting a new language ------------------------- -If you'd like to see a new language in Funkwhale, please open an issue here: +If you cannot submit a new language yourself, you can request it by opening an issue here: https://dev.funkwhale.audio/funkwhale/funkwhale/issues + +Extracting messages from source +------------------------------- + +We offer a script to update existing ``po`` and ``pot`` files with new translations +from the source code. This action should be run regularly, and in particular before +lots of translation work is expected (e.g a few weeks before a new release), or when +the UI code changes a lot. Otherwise, translators end up translating some obsolete messages, +or not translationg new messages. + +1. `Lock the translations on weblate `_ (``Lock`` button in the sidebar). This will prevent translators from working, and help prevent potential conflicts in the source code +2. `Commit and push changes from weblate `_ (``Commit`` and ``Push`` buttons in the sidebar) +3. Pull ``develop`` in your local git repository to ensure you have the latest version of the translations +4. Create a dedicated branch with ``git checkout -b translations-integration`` +5. Extract the translations with ``cd front && ./scripts/i18n-extract.sh``. This will update all ``po`` files as necessary +6. Review, commit and push the changes, then open a merge request on the ``develop`` branch +7. When the MR is merged, `Unlock the translations on weblate `_ (``Unlock`` button in the sidebar). From 8b1a971e7ce6eb059173a0b34467e9368869c015 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciar=C3=A1n=20Ainsworth?= Date: Thu, 6 Jun 2019 14:00:27 +0200 Subject: [PATCH 012/291] Add new translations, fix en_GB --- changes/changelog.d/844.enhancement | 1 + changes/changelog.d/845.enhancement | 1 + changes/changelog.d/846.bugfix | 1 + front/locales/ca/LC_MESSAGES/app.po | 5001 +++++++++++++++++++++++ front/locales/cs/LC_MESSAGES/app.po | 5018 ++++++++++++++++++++++++ front/locales/en_GB/LC_MESSAGES/app.po | 3488 ++++++++++++---- front/src/locales.js | 15 +- 7 files changed, 12785 insertions(+), 740 deletions(-) create mode 100644 changes/changelog.d/844.enhancement create mode 100644 changes/changelog.d/845.enhancement create mode 100644 changes/changelog.d/846.bugfix create mode 100644 front/locales/ca/LC_MESSAGES/app.po create mode 100644 front/locales/cs/LC_MESSAGES/app.po diff --git a/changes/changelog.d/844.enhancement b/changes/changelog.d/844.enhancement new file mode 100644 index 000000000..cf036b873 --- /dev/null +++ b/changes/changelog.d/844.enhancement @@ -0,0 +1 @@ +Added Czech translation (#844) diff --git a/changes/changelog.d/845.enhancement b/changes/changelog.d/845.enhancement new file mode 100644 index 000000000..021e937fe --- /dev/null +++ b/changes/changelog.d/845.enhancement @@ -0,0 +1 @@ +Added Catalan translation files diff --git a/changes/changelog.d/846.bugfix b/changes/changelog.d/846.bugfix new file mode 100644 index 000000000..a279c90e4 --- /dev/null +++ b/changes/changelog.d/846.bugfix @@ -0,0 +1 @@ +Added context strings to en_GB translations so that picking the language changes the interface as expected diff --git a/front/locales/ca/LC_MESSAGES/app.po b/front/locales/ca/LC_MESSAGES/app.po new file mode 100644 index 000000000..d294afbe6 --- /dev/null +++ b/front/locales/ca/LC_MESSAGES/app.po @@ -0,0 +1,5001 @@ +# Catalan translations for front package. +# Copyright (C) 2019 THE front'S COPYRIGHT HOLDER +# This file is distributed under the same license as the front package. +# Automatically generated, 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: front 0.1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-16 10:35+0200\n" +"PO-Revision-Date: 2019-05-16 10:35+0200\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" + +#: front/src/components/playlists/PlaylistModal.vue:9 +msgctxt "Popup/Playlist/Paragraph" +msgid "\"%{ title }\", by %{ artist }" +msgstr "" + +#: front/src/components/Sidebar.vue:24 +msgctxt "Sidebar/Queue/Tab.Title" +msgid "(%{ index } of %{ length })" +msgstr "" + +#: front/src/components/Sidebar.vue:22 +msgctxt "Sidebar/Queue/Tab.Title" +msgid "(empty)" +msgstr "" + +#: front/src/components/auth/Authorize.vue:16 +msgctxt "Content/Auth/Title" +msgid "%{ app } wants to access your Funkwhale account" +msgstr "" + +#: front/src/components/common/ActionTable.vue:68 +msgctxt "Content/*/Paragraph" +msgid "%{ count } on %{ total } selected" +msgid_plural "%{ count } on %{ total } selected" +msgstr[0] "" +msgstr[1] "" + +#: front/src/components/Sidebar.vue:121 src/components/audio/album/Card.vue:52 +#: front/src/views/content/libraries/Card.vue:40 +#: src/views/content/remote/Card.vue:30 +msgctxt "*/*/*" +msgid "%{ count } track" +msgid_plural "%{ count } tracks" +msgstr[0] "" +msgstr[1] "" + +#: front/src/components/library/ArtistBase.vue:13 +msgctxt "Content/Artist/Paragraph" +msgid "%{ count } track in %{ albumsCount } albums" +msgid_plural "%{ count } tracks in %{ albumsCount } albums" +msgstr[0] "" +msgstr[1] "" + +#: front/src/components/library/radios/Builder.vue:81 +msgctxt "Content/Radio/Table.Paragraph/Short" +msgid "%{ count } track matching combined filters" +msgid_plural "%{ count } tracks matching combined filters" +msgstr[0] "" +msgstr[1] "" + +#: front/src/components/playlists/Card.vue:18 +msgctxt "Content/*/Card/List item" +msgid "%{ count} track" +msgid_plural "%{ count } tracks" +msgstr[0] "" +msgstr[1] "" + +#: front/src/views/content/libraries/Quota.vue:11 +msgctxt "Content/Library/Paragraph" +msgid "%{ current } used on %{ max } allowed" +msgstr "" + +#: front/src/components/common/Duration.vue:2 +msgctxt "Content/*/Paragraph" +msgid "%{ hours } h %{ minutes } min" +msgstr "" + +#: front/src/components/common/Duration.vue:5 +msgctxt "Content/*/Paragraph" +msgid "%{ minutes } min" +msgstr "" + +#: front/src/components/notifications/NotificationRow.vue:40 +msgctxt "Content/Notifications/Paragraph" +msgid "%{ username } accepted your follow on library \"%{ library }\"" +msgstr "" + +#: front/src/components/notifications/NotificationRow.vue:39 +msgctxt "Content/Notifications/Paragraph" +msgid "%{ username } followed your library \"%{ library }\"" +msgstr "" + +#: front/src/components/notifications/NotificationRow.vue:41 +msgctxt "Content/Notifications/Paragraph" +msgid "%{ username } wants to follow your library \"%{ library }\"" +msgstr "" + +#: front/src/components/auth/Profile.vue:46 +msgctxt "Head/Profile/Title" +msgid "%{ username }'s profile" +msgstr "" + +#: front/src/components/playlists/PlaylistModal.vue:21 +msgctxt "Popup/Playlist/Paragraph" +msgid "%{ track } is already in %{ playlist }." +msgstr "" + +#: front/src/components/audio/artist/Card.vue:41 +msgctxt "Content/Artist/Card" +msgid "1 album" +msgid_plural "%{ count } albums" +msgstr[0] "" +msgstr[1] "" + +#: front/src/components/favorites/List.vue:10 +msgctxt "Content/Favorites/Title" +msgid "1 favorite" +msgid_plural "%{ count } favorites" +msgstr[0] "" +msgstr[1] "" + +#: front/src/components/Home.vue:64 +msgctxt "Content/Home/Title" +msgid "A clean library" +msgstr "" + +#: front/src/components/library/FileUpload.vue:264 +msgctxt "Content/Library/Help text" +msgid "A network error occured while uploading this file" +msgstr "" + +#: front/src/components/library/EditForm.vue:145 +msgctxt "*/*/Placeholder" +msgid "A short summary describing your changes." +msgstr "" + +#: front/src/components/About.vue:5 +msgctxt "Content/About/Title/Short, Noun" +msgid "About %{ instance }" +msgstr "" + +#: front/src/components/Footer.vue:6 +msgctxt "Footer/About/Title" +msgid "About %{instanceName}" +msgstr "" + +#: front/src/components/Footer.vue:45 +msgctxt "Footer/*/Title/Short" +msgid "About Funkwhale" +msgstr "" + +#: front/src/components/Footer.vue:10 +msgctxt "Footer/About/List item.Link" +msgid "About page" +msgstr "" + +#: front/src/components/About.vue:8 src/components/About.vue:67 +msgctxt "Content/About/Title" +msgid "About this instance" +msgstr "" + +#: front/src/views/content/libraries/Detail.vue:48 +msgctxt "Content/Library/Button.Label" +msgid "Accept" +msgstr "" + +#: front/src/views/content/libraries/Detail.vue:40 +msgctxt "Content/Library/Table/Short" +msgid "Accepted" +msgstr "" + +#: front/src/components/auth/SubsonicTokenForm.vue:110 +msgctxt "Content/Settings/Message" +msgid "Access disabled" +msgstr "" + +#: front/src/components/mixins/Translations.vue:73 +#: front/src/components/mixins/Translations.vue:74 +msgctxt "Content/OAuth Scopes/Paragraph" +msgid "Access to audio files, libraries, artists, albums and tracks" +msgstr "" + +#: front/src/components/mixins/Translations.vue:97 +#: front/src/components/mixins/Translations.vue:98 +msgctxt "Content/OAuth Scopes/Paragraph" +msgid "Access to content filters" +msgstr "" + +#: front/src/components/mixins/Translations.vue:105 +#: front/src/components/mixins/Translations.vue:106 +msgctxt "Content/OAuth Scopes/Paragraph" +msgid "Access to edits" +msgstr "" + +#: front/src/components/mixins/Translations.vue:69 +#: front/src/components/mixins/Translations.vue:70 +msgctxt "Content/OAuth Scopes/Paragraph" +msgid "Access to email, username, and profile information" +msgstr "" + +#: front/src/components/mixins/Translations.vue:77 +#: front/src/components/mixins/Translations.vue:78 +msgctxt "Content/OAuth Scopes/Paragraph" +msgid "Access to favorites" +msgstr "" + +#: front/src/components/mixins/Translations.vue:85 +#: front/src/components/mixins/Translations.vue:86 +msgctxt "Content/OAuth Scopes/Paragraph" +msgid "Access to follows" +msgstr "" + +#: front/src/components/mixins/Translations.vue:81 +#: front/src/components/mixins/Translations.vue:82 +msgctxt "Content/OAuth Scopes/Paragraph" +msgid "Access to listening history" +msgstr "" + +#: front/src/components/mixins/Translations.vue:101 +#: front/src/components/mixins/Translations.vue:102 +msgctxt "Content/OAuth Scopes/Paragraph" +msgid "Access to notifications" +msgstr "" + +#: front/src/components/mixins/Translations.vue:89 +#: front/src/components/mixins/Translations.vue:90 +msgctxt "Content/OAuth Scopes/Paragraph" +msgid "Access to playlists" +msgstr "" + +#: front/src/components/mixins/Translations.vue:93 +#: front/src/components/mixins/Translations.vue:94 +msgctxt "Content/OAuth Scopes/Paragraph" +msgid "Access to radios" +msgstr "" + +#: front/src/components/Home.vue:101 +msgctxt "Content/Home/List item" +msgid "Access your music from a clean interface that focuses on what really matters" +msgstr "" + +#: front/src/components/manage/library/UploadsTable.vue:67 +#: front/src/components/mixins/Translations.vue:45 +#: front/src/views/admin/library/UploadDetail.vue:175 +#: front/src/components/mixins/Translations.vue:46 +msgctxt "Content/*/*/Noun" +msgid "Accessed date" +msgstr "" + +#: front/src/views/admin/library/LibraryDetail.vue:104 +#: front/src/views/admin/library/UploadDetail.vue:111 +msgctxt "*/*/*/Noun" +msgid "Account" +msgstr "" + +#: front/src/components/manage/library/LibrariesTable.vue:49 +#: front/src/components/manage/library/UploadsTable.vue:61 +msgctxt "*/*/*" +msgid "Account" +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:107 +msgctxt "Content/Moderation/Title" +msgid "Account data" +msgstr "" + +#: front/src/components/auth/Settings.vue:5 +msgctxt "Content/Settings/Title" +msgid "Account settings" +msgstr "" + +#: front/src/components/auth/Settings.vue:479 +msgctxt "Head/Settings/Title" +msgid "Account Settings" +msgstr "" + +#: front/src/components/manage/users/UsersTable.vue:39 +msgctxt "Content/Admin/Table.Label/Short, Noun" +msgid "Account status" +msgstr "" + +#: front/src/views/auth/PasswordReset.vue:14 +msgctxt "Content/Signup/Input.Label" +msgid "Account's email" +msgstr "" + +#: front/src/views/admin/moderation/AccountsList.vue:3 +#: front/src/views/admin/moderation/AccountsList.vue:24 +#: front/src/views/admin/moderation/Base.vue:8 +msgctxt "*/Moderation/Title" +msgid "Accounts" +msgstr "" + +#: front/src/views/content/libraries/Detail.vue:29 +msgctxt "Content/Library/Table.Label" +msgid "Action" +msgstr "" + +#: front/src/components/common/ActionTable.vue:101 +msgctxt "Content/*/Paragraph" +msgid "Action %{ action } was launched successfully on %{ count } element" +msgid_plural "Action %{ action } was launched successfully on %{ count } elements" +msgstr[0] "" +msgstr[1] "" + +#: front/src/components/common/ActionTable.vue:22 +#: front/src/components/library/radios/Builder.vue:65 +msgctxt "Content/*/*/Noun" +msgid "Actions" +msgstr "" + +#: front/src/components/manage/users/UsersTable.vue:53 +msgctxt "Content/Admin/Table" +msgid "Active" +msgstr "" + +#: front/src/views/admin/library/AlbumDetail.vue:134 +#: front/src/views/admin/library/ArtistDetail.vue:123 +#: front/src/views/admin/library/LibraryDetail.vue:138 +#: front/src/views/admin/library/TrackDetail.vue:186 +#: front/src/views/admin/library/UploadDetail.vue:160 +#: front/src/views/admin/moderation/AccountsDetail.vue:220 +#: front/src/views/admin/moderation/DomainsDetail.vue:136 +msgctxt "Content/Moderation/Title" +msgid "Activity" +msgstr "" + +#: front/src/components/mixins/Translations.vue:7 +#: front/src/components/mixins/Translations.vue:8 +msgctxt "Content/Settings/Dropdown.Label/Noun" +msgid "Activity visibility" +msgstr "" + +#: front/src/views/admin/moderation/DomainsList.vue:18 +msgctxt "Content/Moderation/Button/Verb" +msgid "Add" +msgstr "" + +#: front/src/views/admin/moderation/DomainsList.vue:13 +msgctxt "Content/Moderation/Form.Label/Verb" +msgid "Add a domain" +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:79 +msgctxt "Content/Moderation/Button/Verb" +msgid "Add a moderation policy" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyForm.vue:4 +msgctxt "Content/Moderation/Card.Button.Label/Verb" +msgid "Add a new moderation rule" +msgstr "" + +#: front/src/views/content/Home.vue:35 +msgctxt "Content/Library/Title/Verb" +msgid "Add and manage content" +msgstr "" + +#: front/src/components/playlists/Editor.vue:28 +#: front/src/components/playlists/PlaylistModal.vue:31 +msgctxt "*/Playlist/Button.Label/Verb" +msgid "Add anyways" +msgstr "" + +#: front/src/components/Sidebar.vue:75 src/views/content/Base.vue:18 +msgctxt "*/Library/*/Verb" +msgid "Add content" +msgstr "" + +#: front/src/components/library/radios/Builder.vue:51 +msgctxt "Content/Radio/Button.Label/Verb" +msgid "Add filter" +msgstr "" + +#: front/src/components/library/radios/Builder.vue:41 +msgctxt "Content/Radio/Paragraph" +msgid "Add filters to customize your radio" +msgstr "" + +#: front/src/components/audio/PlayButton.vue:75 +msgctxt "*/Queue/Dropdown/Button/Title" +msgid "Add to current queue" +msgstr "" + +#: front/src/components/favorites/TrackFavoriteIcon.vue:4 +#: front/src/components/favorites/TrackFavoriteIcon.vue:28 +msgctxt "Content/Track/*/Verb" +msgid "Add to favorites" +msgstr "" + +#: front/src/components/playlists/TrackPlaylistIcon.vue:6 +#: front/src/components/playlists/TrackPlaylistIcon.vue:34 +msgctxt "Sidebar/Player/Icon.Tooltip/Verb" +msgid "Add to playlist…" +msgstr "" + +#: front/src/components/audio/PlayButton.vue:15 +msgctxt "*/Queue/Dropdown/Button/Label/Short" +msgid "Add to queue" +msgstr "" + +#: front/src/components/playlists/PlaylistModal.vue:142 +msgctxt "Popup/Playlist/Table.Button.Tooltip/Verb" +msgid "Add to this playlist" +msgstr "" + +#: front/src/components/playlists/PlaylistModal.vue:68 +msgctxt "Popup/Playlist/Table.Button.Label/Verb" +msgid "Add track" +msgstr "" + +#: front/src/components/manage/users/UsersTable.vue:69 +msgctxt "Content/Admin/Table.User role" +msgid "Admin" +msgstr "" + +#: front/src/components/Sidebar.vue:79 +msgctxt "Sidebar/Admin/Title/Noun" +msgid "Administration" +msgstr "" + +#: front/src/views/admin/library/TrackDetail.vue:107 +msgctxt "*/*/*/Noun" +msgid "Album" +msgstr "" + +#: front/src/components/audio/SearchBar.vue:26 +#: src/components/audio/track/Table.vue:9 +#: front/src/components/library/AlbumBase.vue:152 +#: front/src/components/library/ArtistBase.vue:194 +#: front/src/components/manage/library/TracksTable.vue:40 +#: front/src/components/metadata/Search.vue:134 +#: front/src/views/content/libraries/FilesTable.vue:57 +msgctxt "*/*/*" +msgid "Album" +msgstr "" + +#: front/src/views/admin/library/TrackDetail.vue:128 +msgctxt "*/*/*/Noun" +msgid "Album artist" +msgstr "" + +#: front/src/views/admin/library/AlbumDetail.vue:92 +msgctxt "Content/Moderation/Title" +msgid "Album data" +msgstr "" + +#: front/src/components/mixins/Translations.vue:51 +#: front/src/components/mixins/Translations.vue:52 +msgctxt "Content/*/Dropdown/Noun" +msgid "Album name" +msgstr "" + +#: front/src/components/audio/Search.vue:19 +#: src/components/instance/Stats.vue:48 +#: front/src/components/library/Albums.vue:120 +#: src/components/library/Library.vue:7 +#: front/src/components/manage/library/ArtistsTable.vue:41 +#: front/src/views/admin/library/AlbumsList.vue:24 +#: front/src/views/admin/library/ArtistDetail.vue:241 +#: front/src/views/admin/library/Base.vue:11 +#: front/src/views/admin/library/LibraryDetail.vue:219 +#: front/src/views/admin/moderation/AccountsDetail.vue:354 +#: front/src/views/admin/moderation/DomainsDetail.vue:264 +msgctxt "*/*/*" +msgid "Albums" +msgstr "" + +#: front/src/components/library/ArtistDetail.vue:21 +msgctxt "Content/Artist/Title" +msgid "Albums by this artist" +msgstr "" + +#: front/src/components/manage/library/EditsCardList.vue:15 +#: front/src/components/manage/library/LibrariesTable.vue:13 +#: front/src/components/manage/library/UploadsTable.vue:13 +#: front/src/components/manage/library/UploadsTable.vue:22 +#: front/src/components/manage/users/InvitationsTable.vue:19 +#: front/src/views/content/libraries/FilesTable.vue:13 +msgctxt "Content/*/Dropdown" +msgid "All" +msgstr "" + +#: front/src/components/common/ActionTable.vue:59 +msgctxt "Content/*/Paragraph" +msgid "All %{ count } element selected" +msgid_plural "All %{ count } elements selected" +msgstr[0] "" +msgstr[1] "" + +#: front/src/components/auth/Authorize.vue:107 +msgctxt "Head/Authorize/Title" +msgid "Allow application" +msgstr "" + +#: front/src/components/library/ImportStatusModal.vue:17 +msgctxt "Popup/Import/Message" +msgid "An error occured during upload processing. You will find more information below." +msgstr "" + +#: front/src/components/playlists/Editor.vue:13 +msgctxt "Content/Playlist/Error message.Title" +msgid "An error occured while saving your changes" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:21 +msgctxt "Popup/*/Message.Content" +msgid "An error occured while trying to refresh data:" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:41 +msgctxt "*/*/Error" +msgid "An HTTP error occured while contacting the remote server" +msgstr "" + +#: front/src/components/auth/Login.vue:10 +msgctxt "Content/Login/Error message/List item" +msgid "An unknown error happend, this can mean the server is down or cannot be reached" +msgstr "" + +#: front/src/components/library/ImportStatusModal.vue:145 +msgctxt "Popup/Import/Error.Label" +msgid "An unkwown error occured" +msgstr "" + +#: front/src/components/auth/Settings.vue:175 +#: src/components/auth/Settings.vue:225 +msgctxt "*/*/*/Noun" +msgid "Application" +msgstr "" + +#: front/src/components/auth/ApplicationEdit.vue:12 +msgctxt "Content/Applications/Title" +msgid "Application details" +msgstr "" + +#: front/src/components/auth/ApplicationEdit.vue:21 +msgctxt "Content/Applications/Label" +msgid "Application ID" +msgstr "" + +#: front/src/components/auth/ApplicationEdit.vue:16 +msgctxt "Content/Application/Paragraph/" +msgid "Application ID and secret are really sensitive values and must be treated like passwords. Do not share those with anyone else." +msgstr "" + +#: front/src/components/auth/ApplicationEdit.vue:25 +msgctxt "Content/Applications/Label" +msgid "Application secret" +msgstr "" + +#: front/src/components/library/EditCard.vue:81 +#: front/src/components/notifications/NotificationRow.vue:66 +msgctxt "Content/*/Button.Label/Verb" +msgid "Approve" +msgstr "" + +#: front/src/components/library/EditCard.vue:25 +#: front/src/components/manage/library/EditsCardList.vue:21 +msgctxt "Content/*/*/Short" +msgid "Approved" +msgstr "" + +#: front/src/components/library/EditCard.vue:21 +msgctxt "Content/Library/Card/Short" +msgid "Approved and applied" +msgstr "" + +#: front/src/components/auth/Logout.vue:5 +msgctxt "Content/Login/Title" +msgid "Are you sure you want to log out?" +msgstr "" + +#: front/src/components/manage/library/AlbumsTable.vue:40 +#: front/src/components/manage/library/TracksTable.vue:41 +msgctxt "*/*/*" +msgid "Artist" +msgstr "" + +#: front/src/components/audio/SearchBar.vue:25 +#: src/components/audio/track/Table.vue:8 +#: front/src/components/metadata/Search.vue:130 +#: front/src/views/admin/library/AlbumDetail.vue:108 +#: front/src/views/admin/library/TrackDetail.vue:118 +#: front/src/views/content/libraries/FilesTable.vue:56 +msgctxt "*/*/*/Noun" +msgid "Artist" +msgstr "" + +#: front/src/views/admin/library/ArtistDetail.vue:91 +msgctxt "Content/Moderation/Title" +msgid "Artist data" +msgstr "" + +#: front/src/components/mixins/Translations.vue:52 +#: front/src/components/mixins/Translations.vue:53 +msgctxt "Content/*/Dropdown/Noun" +msgid "Artist name" +msgstr "" + +#: front/src/components/audio/Search.vue:65 +msgctxt "*/Search/Input.Placeholder" +msgid "Artist, album, track…" +msgstr "" + +#: front/src/views/admin/library/ArtistsList.vue:24 +#: front/src/views/admin/library/Base.vue:8 +#: front/src/views/admin/library/LibraryDetail.vue:209 +msgctxt "*/*/*" +msgid "Artists" +msgstr "" + +#: front/src/components/audio/Search.vue:10 +#: src/components/instance/Stats.vue:42 +#: front/src/components/library/Artists.vue:117 +#: src/components/library/Library.vue:10 +#: front/src/views/admin/moderation/AccountsDetail.vue:346 +#: front/src/views/admin/moderation/DomainsDetail.vue:254 +msgctxt "*/*/*/Noun" +msgid "Artists" +msgstr "" + +#: front/src/components/favorites/List.vue:34 +#: src/components/library/Albums.vue:25 +#: front/src/components/library/Artists.vue:25 +#: src/components/library/Radios.vue:44 +#: front/src/components/manage/library/AlbumsTable.vue:21 +#: front/src/components/manage/library/ArtistsTable.vue:21 +#: front/src/components/manage/library/EditsCardList.vue:39 +#: front/src/components/manage/library/LibrariesTable.vue:30 +#: front/src/components/manage/library/TracksTable.vue:21 +#: front/src/components/manage/library/UploadsTable.vue:40 +#: front/src/components/manage/moderation/AccountsTable.vue:21 +#: front/src/components/manage/moderation/DomainsTable.vue:19 +#: front/src/components/manage/users/UsersTable.vue:19 +#: front/src/views/content/libraries/FilesTable.vue:31 +#: front/src/views/playlists/List.vue:27 +msgctxt "Content/Search/Dropdown" +msgid "Ascending" +msgstr "" + +#: front/src/views/auth/PasswordReset.vue:28 +msgctxt "Content/Signup/Button.Label/Verb" +msgid "Ask for a password reset" +msgstr "" + +#: front/src/views/admin/library/AlbumDetail.vue:198 +#: front/src/views/admin/library/ArtistDetail.vue:187 +#: front/src/views/admin/library/LibraryDetail.vue:176 +#: front/src/views/admin/library/TrackDetail.vue:250 +#: front/src/views/admin/library/UploadDetail.vue:191 +#: front/src/views/admin/moderation/AccountsDetail.vue:274 +#: front/src/views/admin/moderation/DomainsDetail.vue:202 +msgctxt "Content/Moderation/Title" +msgid "Audio content" +msgstr "" + +#: front/src/components/ShortcutsModal.vue:55 +msgctxt "Popup/Keyboard shortcuts/Title" +msgid "Audio player shortcuts" +msgstr "" + +#: front/src/components/auth/Authorize.vue:47 +msgctxt "Content/Signup/Button.Label/Verb" +msgid "Authorize %{ app }" +msgstr "" + +#: front/src/components/auth/Authorize.vue:4 +msgctxt "Content/Auth/Title/Verb" +msgid "Authorize third-party app" +msgstr "" + +#: front/src/components/auth/Settings.vue:162 +msgctxt "Content/Settings/Title/Noun" +msgid "Authorized apps" +msgstr "" + +#: front/src/components/playlists/PlaylistModal.vue:40 +msgctxt "Popup/Playlist/Title" +msgid "Available playlists" +msgstr "" + +#: front/src/components/auth/Settings.vue:34 +msgctxt "Content/Settings/Title" +msgid "Avatar" +msgstr "" + +#: front/src/views/auth/PasswordReset.vue:25 +#: front/src/views/auth/PasswordResetConfirm.vue:18 +msgctxt "Content/Signup/Link" +msgid "Back to login" +msgstr "" + +#: front/src/components/auth/ApplicationEdit.vue:9 +#: front/src/components/auth/ApplicationNew.vue:5 +msgctxt "Content/Applications/Link" +msgid "Back to settings" +msgstr "" + +#: front/src/components/library/TrackDetail.vue:48 +#: front/src/components/mixins/Translations.vue:55 +#: front/src/views/admin/library/UploadDetail.vue:227 +#: front/src/components/mixins/Translations.vue:56 +msgctxt "Content/Track/*/Noun" +msgid "Bitrate" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyCard.vue:19 +#: front/src/components/manage/moderation/InstancePolicyForm.vue:34 +msgctxt "Content/Moderation/*/Verb" +msgid "Block everything" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyForm.vue:112 +msgctxt "Content/Moderation/Help text" +msgid "Block everything from this account or domain. This will prevent any interaction with the entity, and purge related content (uploads, libraries, follows, etc.)" +msgstr "" + +#: front/src/components/Sidebar.vue:18 src/components/library/Library.vue:4 +msgctxt "*/Library/*/Verb" +msgid "Browse" +msgstr "" + +#: front/src/components/Sidebar.vue:65 +msgctxt "Sidebar/Library/List item.Link/Verb" +msgid "Browse library" +msgstr "" + +#: front/src/components/library/Albums.vue:4 +msgctxt "Content/Album/Title" +msgid "Browsing albums" +msgstr "" + +#: front/src/components/library/Artists.vue:4 +msgctxt "Content/Artist/Title" +msgid "Browsing artists" +msgstr "" + +#: front/src/views/playlists/List.vue:3 +msgctxt "Content/Playlist/Title" +msgid "Browsing playlists" +msgstr "" + +#: front/src/components/library/Radios.vue:4 +msgctxt "Content/Radio/Title" +msgid "Browsing radios" +msgstr "" + +#: front/src/components/library/radios/Builder.vue:5 +msgctxt "Content/Radio/Title" +msgid "Builder" +msgstr "" + +#: front/src/components/audio/album/Card.vue:13 +msgctxt "Content/Album/Card" +msgid "By %{ artist }" +msgstr "" + +#: front/src/views/content/remote/Card.vue:112 +msgctxt "Popup/Library/Paragraph" +msgid "By unfollowing this library, you loose access to its content." +msgstr "" + +#: front/src/views/admin/library/AlbumDetail.vue:214 +#: front/src/views/admin/library/ArtistDetail.vue:203 +#: front/src/views/admin/library/LibraryDetail.vue:192 +#: front/src/views/admin/library/TrackDetail.vue:266 +#: front/src/views/admin/library/UploadDetail.vue:208 +#: front/src/views/admin/moderation/AccountsDetail.vue:290 +#: front/src/views/admin/moderation/DomainsDetail.vue:217 +msgctxt "Content/Moderation/Table.Label/Noun" +msgid "Cached size" +msgstr "" + +#: front/src/components/SetInstanceModal.vue:37 +#: front/src/components/common/DangerousButton.vue:17 +#: front/src/components/library/AlbumBase.vue:36 +#: front/src/components/library/ArtistBase.vue:47 +#: front/src/components/library/EditForm.vue:95 +#: front/src/components/library/TrackBase.vue:55 +#: front/src/components/library/radios/Filter.vue:53 +#: front/src/components/manage/moderation/InstancePolicyForm.vue:54 +#: front/src/components/moderation/FilterModal.vue:39 +#: front/src/components/playlists/PlaylistModal.vue:26 +#: front/src/components/playlists/PlaylistModal.vue:77 +msgctxt "*/*/Button.Label/Verb" +msgid "Cancel" +msgstr "" + +#: front/src/views/content/remote/Card.vue:97 +msgctxt "Content/Library/Card.Paragraph" +msgid "Cancel follow request" +msgstr "" + +#: front/src/components/library/radios/Builder.vue:64 +msgctxt "Content/Radio/Table.Label/Noun (Value is a number of Tracks)" +msgid "Candidates" +msgstr "" + +#: front/src/components/library/FileUpload.vue:261 +msgctxt "Content/Library/Help text" +msgid "Cannot upload this file, ensure it is not too big" +msgstr "" + +#: front/src/components/Footer.vue:21 +msgctxt "Footer/Settings/Dropdown.Label/Short, Verb" +msgid "Change language" +msgstr "" + +#: front/src/components/auth/Settings.vue:68 +msgctxt "Content/Settings/Title/Verb" +msgid "Change my password" +msgstr "" + +#: front/src/components/auth/Settings.vue:95 +msgctxt "Content/Settings/Button.Label" +msgid "Change password" +msgstr "" + +#: front/src/views/auth/PasswordResetConfirm.vue:62 +msgctxt "*/Signup/Title" +msgid "Change your password" +msgstr "" + +#: front/src/components/auth/Settings.vue:96 +msgctxt "Popup/Settings/Title" +msgid "Change your password?" +msgstr "" + +#: front/src/components/playlists/Editor.vue:31 +msgctxt "Content/Playlist/Paragraph" +msgid "Changes synced with server" +msgstr "" + +#: front/src/components/auth/Settings.vue:71 +msgctxt "Content/Settings/Paragraph'" +msgid "Changing your password will also change your Subsonic API password if you have requested one." +msgstr "" + +#: front/src/components/auth/Settings.vue:98 +msgctxt "Popup/Settings/Paragraph" +msgid "Changing your password will have the following consequences:" +msgstr "" + +#: front/src/components/Footer.vue:40 +msgctxt "Footer/*/List item.Link" +msgid "Chat room" +msgstr "" + +#: front/src/components/auth/ApplicationForm.vue:24 +msgctxt "Content/Applications/Paragraph/" +msgid "Checking the parent \"Read\" or \"Write\" scopes implies access to all the corresponding children scopes." +msgstr "" + +#: front/src/components/SetInstanceModal.vue:2 +msgctxt "Popup/Instance/Title" +msgid "Choose your instance" +msgstr "" + +#: front/src/components/manage/users/InvitationForm.vue:37 +msgctxt "Content/Admin/Button.Label/Verb" +msgid "Clear" +msgstr "" + +#: front/src/components/library/EditForm.vue:75 +msgctxt "Content/Library/Button.Label" +msgid "Clear" +msgstr "" + +#: front/src/components/playlists/Editor.vue:50 +#: front/src/components/playlists/Editor.vue:55 +msgctxt "*/Playlist/Button.Label/Verb" +msgid "Clear playlist" +msgstr "" + +#: front/src/components/audio/Player.vue:642 +msgctxt "Sidebar/Player/Icon.Tooltip/Verb" +msgid "Clear your queue" +msgstr "" + +#: front/src/components/Home.vue:44 +msgctxt "Content/Home/List item/Verb" +msgid "Click once, listen for hours using built-in radios" +msgstr "" + +#: front/src/components/mixins/Translations.vue:21 +#: front/src/components/mixins/Translations.vue:22 +msgctxt "Content/Library/Link.Title" +msgid "Click to display more information about the import process for this upload" +msgstr "" + +#: front/src/components/library/FileUpload.vue:82 +msgctxt "Content/Library/Paragraph/Call to action" +msgid "Click to select files to upload or drag and drop files or directories" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:85 +#: front/src/components/library/ImportStatusModal.vue:79 +msgctxt "*/*/Button.Label/Verb" +msgid "Close" +msgstr "" + +#: front/src/components/ShortcutsModal.vue:20 +msgctxt "Popup/Keyboard shortcuts/Button.Label/Verb" +msgid "Close" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:88 +msgctxt "*/*/Button.Label/Verb" +msgid "Close and reload page" +msgstr "" + +#: front/src/components/manage/users/InvitationForm.vue:26 +#: front/src/components/manage/users/InvitationsTable.vue:42 +msgctxt "Content/Admin/Table.Label/Noun" +msgid "Code" +msgstr "" + +#: front/src/components/audio/album/Card.vue:41 +#: front/src/components/audio/artist/Card.vue:33 +msgctxt "Content/*/Card.Link/Verb" +msgid "Collapse" +msgstr "" + +#: front/src/components/library/radios/Builder.vue:63 +msgctxt "Content/Radio/Table.Label/Verb (Value is a List of Parameters)" +msgid "Config" +msgstr "" + +#: front/src/components/common/DangerousButton.vue:21 +msgctxt "Modal/*/Button.Label/Short, Verb" +msgid "Confirm" +msgstr "" + +#: front/src/views/auth/EmailConfirm.vue:51 +msgctxt "Head/Signup/Title" +msgid "Confirm your e-mail address" +msgstr "" + +#: front/src/views/auth/EmailConfirm.vue:13 +msgctxt "Content/Signup/Form.Label" +msgid "Confirmation code" +msgstr "" + +#: front/src/components/moderation/FilterModal.vue:90 +msgctxt "*/Moderation/Message" +msgid "Content filter successfully added" +msgstr "" + +#: front/src/components/mixins/Translations.vue:96 +#: front/src/components/mixins/Translations.vue:97 +msgctxt "Content/OAuth Scopes/Label" +msgid "Content filters" +msgstr "" + +#: front/src/components/auth/Settings.vue:116 +msgctxt "Content/Settings/Title/Noun" +msgid "Content filters" +msgstr "" + +#: front/src/components/auth/Settings.vue:119 +msgctxt "Content/Settings/Paragraph" +msgid "Content filters help you hide content you don't want to see on the service." +msgstr "" + +#: front/src/components/common/ActionTable.vue:8 +msgctxt "Content/*/Button.Help text.Paragraph" +msgid "Content have been updated, click refresh to see up-to-date content" +msgstr "" + +#: front/src/components/Footer.vue:48 +msgctxt "Footer/*/List item.Link" +msgid "Contribute" +msgstr "" + +#: front/src/components/audio/EmbedWizard.vue:19 +#: front/src/components/common/CopyInput.vue:8 +msgctxt "*/*/Button.Label/Short, Verb" +msgid "Copy" +msgstr "" + +#: front/src/components/playlists/Editor.vue:194 +msgctxt "Content/Playlist/Button.Tooltip/Verb" +msgid "Copy queued tracks to playlist" +msgstr "" + +#: front/src/components/auth/Authorize.vue:55 +msgctxt "Content/Auth/Paragraph" +msgid "Copy-paste the following code in the application:" +msgstr "" + +#: front/src/components/audio/EmbedWizard.vue:21 +msgctxt "Popup/Embed/Paragraph" +msgid "Copy/paste this code in your website HTML" +msgstr "" + +#: front/src/components/library/TrackDetail.vue:10 +#: front/src/views/admin/library/TrackDetail.vue:153 +msgctxt "Content/Track/Table.Label/Noun" +msgid "Copyright" +msgstr "" + +#: front/src/views/auth/EmailConfirm.vue:7 +msgctxt "Content/Signup/Paragraph" +msgid "Could not confirm your e-mail address" +msgstr "" + +#: front/src/views/content/remote/ScanForm.vue:3 +msgctxt "Content/Library/Error message.Title" +msgid "Could not fetch remote library" +msgstr "" + +#: front/src/components/Home.vue:80 +msgctxt "Content/Home/List item" +msgid "Covers, lyrics, our goal is to have them all ;)" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyForm.vue:58 +msgctxt "Content/Moderation/Card.Button.Label/Verb" +msgid "Create" +msgstr "" + +#: front/src/components/auth/Signup.vue:4 +msgctxt "Content/Signup/Title" +msgid "Create a funkwhale account" +msgstr "" + +#: front/src/components/auth/Settings.vue:220 +msgctxt "Content/Settings/Button.Label" +msgid "Create a new application" +msgstr "" + +#: front/src/components/auth/ApplicationNew.vue:8 +#: front/src/components/auth/ApplicationNew.vue:41 +msgctxt "Content/Applications/Title" +msgid "Create a new application" +msgstr "" + +#: front/src/views/content/libraries/Home.vue:14 +msgctxt "Content/Library/Link/Verb" +msgid "Create a new library" +msgstr "" + +#: front/src/components/playlists/Form.vue:2 +msgctxt "Popup/Playlist/Title/Verb" +msgid "Create a new playlist" +msgstr "" + +#: front/src/components/Sidebar.vue:57 src/components/auth/Login.vue:17 +msgctxt "*/Signup/Link/Verb" +msgid "Create an account" +msgstr "" + +#: front/src/components/auth/ApplicationForm.vue:65 +msgctxt "Content/Applications/Button.Label/Verb" +msgid "Create application" +msgstr "" + +#: front/src/views/content/libraries/Form.vue:26 +msgctxt "Content/Library/Button.Label/Verb" +msgid "Create library" +msgstr "" + +#: front/src/components/auth/Signup.vue:53 +msgctxt "Content/Signup/Button.Label" +msgid "Create my account" +msgstr "" + +#: front/src/components/auth/Settings.vue:264 +msgctxt "Content/Applications/Paragraph" +msgid "Create one to integrate Funkwhale with third-party applications." +msgstr "" + +#: front/src/components/playlists/Form.vue:34 +msgctxt "Content/Playlist/Button.Label/Verb" +msgid "Create playlist" +msgstr "" + +#: front/src/components/library/Radios.vue:23 +msgctxt "Content/Radio/Button.Label/Verb" +msgid "Create your own radio" +msgstr "" + +#: front/src/components/auth/Settings.vue:134 +#: src/components/auth/Settings.vue:227 +#: front/src/components/manage/library/AlbumsTable.vue:44 +#: front/src/components/manage/library/ArtistsTable.vue:43 +#: front/src/components/manage/library/LibrariesTable.vue:54 +#: front/src/components/manage/library/TracksTable.vue:44 +#: front/src/components/manage/library/UploadsTable.vue:66 +#: front/src/components/manage/users/InvitationsTable.vue:40 +#: front/src/components/mixins/Translations.vue:43 +#: front/src/components/mixins/Translations.vue:44 +msgctxt "Content/*/*/Noun" +msgid "Creation date" +msgstr "" + +#: front/src/components/auth/Settings.vue:54 +msgctxt "Content/Settings/Title/Noun" +msgid "Current avatar" +msgstr "" + +#: front/src/views/content/libraries/DetailArea.vue:4 +msgctxt "Content/Library/Title" +msgid "Current library" +msgstr "" + +#: front/src/components/playlists/PlaylistModal.vue:8 +msgctxt "Popup/Playlist/Title" +msgid "Current track" +msgstr "" + +#: front/src/views/content/libraries/Quota.vue:2 +msgctxt "Content/Library/Title" +msgid "Current usage" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:53 +msgctxt "*/*/Error" +msgid "Data returned by the remote server had invalid or missing attributes" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:17 +msgctxt "Popup/*/Message.Content" +msgid "Data was refreshed successfully from remote server." +msgstr "" + +#: front/src/views/content/libraries/Detail.vue:27 +msgctxt "Content/Library/Table.Label" +msgid "Date" +msgstr "" + +#: front/src/components/library/ImportStatusModal.vue:64 +msgctxt "Popup/Import/Table.Label/Noun" +msgid "Debug information" +msgstr "" + +#: front/src/components/ShortcutsModal.vue:75 +msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb" +msgid "Decrease volume" +msgstr "" + +#: front/src/components/auth/Settings.vue:150 +#: src/components/auth/Settings.vue:251 +#: front/src/components/library/EditCard.vue:93 +#: front/src/components/library/EditCard.vue:98 +#: front/src/components/manage/library/AlbumsTable.vue:188 +#: front/src/components/manage/library/ArtistsTable.vue:178 +#: front/src/components/manage/library/LibrariesTable.vue:205 +#: front/src/components/manage/library/TracksTable.vue:188 +#: front/src/components/manage/library/UploadsTable.vue:255 +#: front/src/components/manage/moderation/InstancePolicyForm.vue:61 +#: front/src/components/manage/users/InvitationsTable.vue:167 +#: front/src/views/admin/library/AlbumDetail.vue:72 +#: front/src/views/admin/library/AlbumDetail.vue:77 +#: front/src/views/admin/library/ArtistDetail.vue:71 +#: front/src/views/admin/library/ArtistDetail.vue:76 +#: front/src/views/admin/library/LibraryDetail.vue:58 +#: front/src/views/admin/library/LibraryDetail.vue:63 +#: front/src/views/admin/library/TrackDetail.vue:71 +#: front/src/views/admin/library/TrackDetail.vue:76 +#: front/src/views/admin/library/UploadDetail.vue:65 +#: front/src/views/admin/library/UploadDetail.vue:70 +#: front/src/views/content/libraries/FilesTable.vue:222 +#: front/src/views/content/libraries/Form.vue:29 +#: src/views/playlists/Detail.vue:34 +msgctxt "*/*/*/Verb" +msgid "Delete" +msgstr "" + +#: front/src/components/auth/Settings.vue:254 +msgctxt "*/Settings/Button.Label/Verb" +msgid "Delete application" +msgstr "" + +#: front/src/components/auth/Settings.vue:252 +msgctxt "Popup/Settings/Title" +msgid "Delete application \"%{ application }\"?" +msgstr "" + +#: front/src/views/content/libraries/Form.vue:39 +msgctxt "Popup/Library/Button.Label/Verb" +msgid "Delete library" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyForm.vue:69 +msgctxt "Popup/Moderation/Button.Label/Verb" +msgid "Delete moderation rule" +msgstr "" + +#: front/src/views/playlists/Detail.vue:39 +msgctxt "Popup/Playlist/Button.Label/Verb" +msgid "Delete playlist" +msgstr "" + +#: front/src/views/radios/Detail.vue:28 +msgctxt "Popup/Radio/Button.Label/Verb" +msgid "Delete radio" +msgstr "" + +#: front/src/views/admin/library/AlbumDetail.vue:73 +#: front/src/views/admin/library/TrackDetail.vue:72 +msgctxt "Popup/Library/Title" +msgid "Delete this album?" +msgstr "" + +#: front/src/views/admin/library/ArtistDetail.vue:72 +msgctxt "Popup/Library/Title" +msgid "Delete this artist?" +msgstr "" + +#: front/src/views/admin/library/LibraryDetail.vue:59 +#: front/src/views/content/libraries/Form.vue:31 +msgctxt "Popup/Library/Title" +msgid "Delete this library?" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyForm.vue:63 +msgctxt "Popup/Moderation/Title" +msgid "Delete this moderation rule?" +msgstr "" + +#: front/src/components/library/EditCard.vue:94 +msgctxt "Popup/Library/Title" +msgid "Delete this suggestion?" +msgstr "" + +#: front/src/views/admin/library/UploadDetail.vue:66 +msgctxt "Popup/Library/Title" +msgid "Delete this upload?" +msgstr "" + +#: front/src/components/favorites/List.vue:35 +#: src/components/library/Albums.vue:26 +#: front/src/components/library/Artists.vue:26 +#: src/components/library/Radios.vue:47 +#: front/src/components/manage/library/AlbumsTable.vue:22 +#: front/src/components/manage/library/ArtistsTable.vue:22 +#: front/src/components/manage/library/EditsCardList.vue:40 +#: front/src/components/manage/library/LibrariesTable.vue:31 +#: front/src/components/manage/library/TracksTable.vue:22 +#: front/src/components/manage/library/UploadsTable.vue:41 +#: front/src/components/manage/moderation/AccountsTable.vue:22 +#: front/src/components/manage/moderation/DomainsTable.vue:20 +#: front/src/components/manage/users/UsersTable.vue:20 +#: front/src/views/content/libraries/FilesTable.vue:32 +#: front/src/views/playlists/List.vue:28 +msgctxt "Content/Search/Dropdown" +msgid "Descending" +msgstr "" + +#: front/src/views/admin/library/LibraryDetail.vue:123 +msgctxt "*/*/*/Noun" +msgid "Description" +msgstr "" + +#: front/src/components/library/radios/Builder.vue:25 +#: front/src/views/content/libraries/Form.vue:14 +msgctxt "Content/*/Input.Label/Noun" +msgid "Description" +msgstr "" + +#: front/src/views/content/libraries/Card.vue:48 +#: src/views/content/remote/Card.vue:54 +msgctxt "Content/Library/Card.Button.Label/Noun" +msgid "Details" +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:491 +msgctxt "Content/Moderation/Help text" +msgid "Determine how much content the user can upload. Leave empty to use the default value of the instance." +msgstr "" + +#: front/src/components/mixins/Translations.vue:8 +#: front/src/components/mixins/Translations.vue:9 +msgctxt "Content/Settings/Dropdown.Help text" +msgid "Determine the visibility level of your activity" +msgstr "" + +#: front/src/components/auth/Settings.vue:104 +#: front/src/components/auth/SubsonicTokenForm.vue:51 +msgctxt "Popup/Settings/Button.Label" +msgid "Disable access" +msgstr "" + +#: front/src/components/auth/SubsonicTokenForm.vue:48 +msgctxt "Content/Settings/Button.Label/Verb" +msgid "Disable Subsonic access" +msgstr "" + +#: front/src/components/auth/SubsonicTokenForm.vue:49 +msgctxt "Popup/Settings/Title" +msgid "Disable Subsonic API access?" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyForm.vue:18 +#: front/src/views/admin/moderation/AccountsDetail.vue:157 +#: front/src/views/admin/moderation/AccountsDetail.vue:161 +msgctxt "*/*/*" +msgid "Disabled" +msgstr "" + +#: front/src/views/admin/library/TrackDetail.vue:145 +msgctxt "*/*/*/Noun" +msgid "Disc number" +msgstr "" + +#: front/src/components/auth/SubsonicTokenForm.vue:13 +msgctxt "Content/Settings/Link" +msgid "Discover how to use Funkwhale from other apps" +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:132 +msgctxt "'Content/*/*/Noun'" +msgid "Display name" +msgstr "" + +#: front/src/components/library/radios/Builder.vue:30 +msgctxt "Content/Radio/Checkbox.Label/Verb" +msgid "Display publicly" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyForm.vue:122 +msgctxt "Content/Moderation/Help text" +msgid "Do not download any media file (audio, album cover, account avatar…) from this account or domain. This will purge existing content as well." +msgstr "" + +#: front/src/components/playlists/Editor.vue:51 +msgctxt "Popup/Playlist/Title" +msgid "Do you want to clear the playlist \"%{ playlist }\"?" +msgstr "" + +#: front/src/components/common/DangerousButton.vue:7 +msgctxt "Modal/*/Title" +msgid "Do you want to confirm this action?" +msgstr "" + +#: front/src/views/playlists/Detail.vue:35 +msgctxt "Popup/Playlist/Title/Call to action" +msgid "Do you want to delete the playlist \"%{ playlist }\"?" +msgstr "" + +#: front/src/views/radios/Detail.vue:26 +msgctxt "Popup/Radio/Title" +msgid "Do you want to delete the radio \"%{ radio }\"?" +msgstr "" + +#: front/src/components/moderation/FilterModal.vue:3 +msgctxt "Popup/Moderation/Title/Verb" +msgid "Do you want to hide content from artist \"%{ name }\"?" +msgstr "" + +#: front/src/components/common/ActionTable.vue:37 +msgctxt "Modal/*/Title" +msgid "Do you want to launch %{ action } on %{ count } element?" +msgid_plural "Do you want to launch %{ action } on %{ count } elements?" +msgstr[0] "" +msgstr[1] "" + +#: front/src/components/Sidebar.vue:118 +msgctxt "Sidebar/Queue/Message" +msgid "Do you want to restore your previous queue?" +msgstr "" + +#: front/src/components/Footer.vue:31 +msgctxt "Footer/*/List item.Link/Short, Noun" +msgid "Documentation" +msgstr "" + +#: front/src/components/manage/library/AlbumsTable.vue:41 +#: front/src/components/manage/library/ArtistsTable.vue:40 +#: front/src/components/manage/library/LibrariesTable.vue:50 +#: front/src/components/manage/library/TracksTable.vue:42 +#: front/src/components/manage/library/UploadsTable.vue:62 +#: front/src/components/manage/moderation/AccountsTable.vue:40 +#: front/src/components/mixins/Translations.vue:60 +#: front/src/views/admin/library/AlbumDetail.vue:118 +#: front/src/views/admin/library/ArtistDetail.vue:107 +#: front/src/views/admin/library/LibraryDetail.vue:114 +#: front/src/views/admin/library/TrackDetail.vue:170 +#: front/src/views/admin/library/UploadDetail.vue:121 +#: front/src/views/admin/moderation/AccountsDetail.vue:123 +#: front/src/components/mixins/Translations.vue:61 +msgctxt "Content/Moderation/*/Noun" +msgid "Domain" +msgstr "" + +#: front/src/views/admin/moderation/Base.vue:5 +#: front/src/views/admin/moderation/DomainsList.vue:3 +#: front/src/views/admin/moderation/DomainsList.vue:48 +msgctxt "*/Moderation/*/Noun" +msgid "Domains" +msgstr "" + +#: front/src/components/library/TrackBase.vue:39 +#: front/src/views/admin/library/UploadDetail.vue:58 +msgctxt "Content/Track/Link/Verb" +msgid "Download" +msgstr "" + +#: front/src/components/playlists/Editor.vue:59 +msgctxt "Content/Playlist/Paragraph/Call to action" +msgid "Drag and drop rows to reorder tracks in the playlist" +msgstr "" + +#: front/src/components/audio/track/Table.vue:10 +#: front/src/components/library/TrackDetail.vue:30 +#: front/src/components/mixins/Translations.vue:56 +#: front/src/views/admin/library/UploadDetail.vue:238 +#: front/src/views/content/libraries/FilesTable.vue:60 +#: front/src/components/mixins/Translations.vue:57 +msgctxt "Content/*/*" +msgid "Duration" +msgstr "" + +#: front/src/views/auth/EmailConfirm.vue:23 +msgctxt "Content/Signup/Message" +msgid "E-mail address confirmed" +msgstr "" + +#: front/src/components/Home.vue:88 +msgctxt "Content/Home/Title" +msgid "Easy to use" +msgstr "" + +#: front/src/components/library/AlbumBase.vue:68 +#: front/src/components/library/ArtistBase.vue:79 +#: front/src/components/library/TrackBase.vue:87 +#: front/src/components/manage/moderation/InstancePolicyCard.vue:45 +#: front/src/components/radios/Card.vue:23 +#: src/views/admin/library/AlbumDetail.vue:65 +#: front/src/views/admin/library/ArtistDetail.vue:64 +#: front/src/views/admin/library/TrackDetail.vue:64 +#: front/src/views/content/libraries/Detail.vue:9 +#: src/views/playlists/Detail.vue:31 +msgctxt "Content/*/Button.Label/Verb" +msgid "Edit" +msgstr "" + +#: front/src/components/auth/Settings.vue:246 +msgctxt "Content/Settings/Button.Label" +msgid "Edit" +msgstr "" + +#: front/src/components/auth/ApplicationEdit.vue:30 +#: front/src/components/auth/ApplicationEdit.vue:75 +msgctxt "Content/Applications/Title" +msgid "Edit application" +msgstr "" + +#: front/src/components/About.vue:22 +msgctxt "Content/Settings/Button.Label/Verb" +msgid "Edit instance info" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyForm.vue:3 +msgctxt "Content/Moderation/Card.Title/Verb" +msgid "Edit moderation rule" +msgstr "" + +#: front/src/components/library/AlbumEdit.vue:4 +msgctxt "Content/*/Title" +msgid "Edit this album" +msgstr "" + +#: front/src/components/library/ArtistEdit.vue:4 +msgctxt "Content/*/Title" +msgid "Edit this artist" +msgstr "" + +#: front/src/components/library/TrackEdit.vue:4 +msgctxt "Content/*/Title" +msgid "Edit this track" +msgstr "" + +#: front/src/views/admin/library/AlbumDetail.vue:182 +#: front/src/views/admin/library/ArtistDetail.vue:171 +#: front/src/views/admin/library/Base.vue:5 +#: src/views/admin/library/EditsList.vue:24 +#: front/src/views/admin/library/TrackDetail.vue:234 +msgctxt "*/Admin/*/Noun" +msgid "Edits" +msgstr "" + +#: front/src/components/mixins/Translations.vue:104 +#: front/src/components/mixins/Translations.vue:105 +msgctxt "Content/OAuth Scopes/Label" +msgid "Edits" +msgstr "" + +#: front/src/components/auth/Signup.vue:30 +#: front/src/components/manage/users/UsersTable.vue:38 +msgctxt "Content/*/*/Noun" +msgid "Email" +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:140 +msgctxt "Content/*/*" +msgid "Email address" +msgstr "" + +#: front/src/components/library/AlbumBase.vue:53 +#: front/src/components/library/ArtistBase.vue:64 +#: front/src/components/library/TrackBase.vue:72 +msgctxt "Content/*/Button.Label/Verb" +msgid "Embed" +msgstr "" + +#: front/src/components/audio/EmbedWizard.vue:20 +msgctxt "Popup/Embed/Input.Label/Noun" +msgid "Embed code" +msgstr "" + +#: front/src/components/library/AlbumBase.vue:26 +msgctxt "Popup/Album/Title/Verb" +msgid "Embed this album on your website" +msgstr "" + +#: front/src/components/library/ArtistBase.vue:37 +msgctxt "Popup/Artist/Title/Verb" +msgid "Embed this artist work on your website" +msgstr "" + +#: front/src/components/library/TrackBase.vue:45 +msgctxt "Popup/Track/Title" +msgid "Embed this track on your website" +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:259 +#: front/src/views/admin/moderation/DomainsDetail.vue:187 +msgctxt "Content/Moderation/Table.Label/Noun" +msgid "Emitted library follows" +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:243 +#: front/src/views/admin/moderation/DomainsDetail.vue:171 +msgctxt "Content/Moderation/Table.Label/Noun" +msgid "Emitted messages" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyCard.vue:8 +#: front/src/components/manage/moderation/InstancePolicyForm.vue:17 +#: front/src/views/admin/moderation/AccountsDetail.vue:156 +#: front/src/views/admin/moderation/AccountsDetail.vue:160 +msgctxt "*/*/*" +msgid "Enabled" +msgstr "" + +#: front/src/views/playlists/Detail.vue:30 +msgctxt "Content/Playlist/Button.Label/Verb" +msgid "End edition" +msgstr "" + +#: front/src/views/content/remote/ScanForm.vue:50 +msgctxt "Content/Library/Input.Placeholder" +msgid "Enter a library URL" +msgstr "" + +#: front/src/components/library/Radios.vue:141 +msgctxt "Content/Search/Input.Placeholder" +msgid "Enter a radio name…" +msgstr "" + +#: front/src/components/library/Albums.vue:119 +msgctxt "Content/Search/Input.Placeholder" +msgid "Enter album title..." +msgstr "" + +#: front/src/components/library/Artists.vue:116 +msgctxt "Content/Search/Input.Placeholder" +msgid "Enter artist name…" +msgstr "" + +#: front/src/views/playlists/List.vue:107 +msgctxt "Content/Playlist/Placeholder/Call to action" +msgid "Enter playlist name…" +msgstr "" + +#: front/src/views/auth/PasswordReset.vue:54 +msgctxt "Content/Signup/Input.Placeholder" +msgid "Enter the email address binded to your account" +msgstr "" + +#: front/src/components/auth/Signup.vue:103 +msgctxt "Content/Signup/Form/Placeholder" +msgid "Enter your email" +msgstr "" + +#: front/src/components/auth/Signup.vue:98 src/components/auth/Signup.vue:100 +msgctxt "Content/Signup/Form/Placeholder" +msgid "Enter your invitation code (case insensitive)" +msgstr "" + +#: front/src/components/metadata/Search.vue:114 +msgctxt "Content/Library/Input.Placeholder/Verb" +msgid "Enter your search query…" +msgstr "" + +#: front/src/components/auth/Signup.vue:102 +msgctxt "Content/Signup/Form/Placeholder" +msgid "Enter your username" +msgstr "" + +#: front/src/components/auth/Login.vue:83 +msgctxt "Content/Login/Input.Placeholder" +msgid "Enter your username or email" +msgstr "" + +#: front/src/components/auth/SubsonicTokenForm.vue:19 +#: front/src/views/content/libraries/Form.vue:4 +msgctxt "Content/*/Error message.Title" +msgid "Error" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:34 +#: front/src/components/library/ImportStatusModal.vue:32 +msgctxt "Popup/Import/Table.Label/Noun" +msgid "Error detail" +msgstr "" + +#: front/src/views/admin/Settings.vue:87 +msgctxt "Content/Admin/Menu" +msgid "Error reporting" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:26 +#: front/src/components/library/ImportStatusModal.vue:24 +msgctxt "Popup/Import/Table.Label/Noun" +msgid "Error type" +msgstr "" + +#: front/src/components/common/ActionTable.vue:94 +msgctxt "Content/*/Error message/Header" +msgid "Error while applying action" +msgstr "" + +#: front/src/views/auth/PasswordReset.vue:7 +msgctxt "Content/Signup/Card.Title" +msgid "Error while asking for a password reset" +msgstr "" + +#: front/src/components/auth/Authorize.vue:6 +msgctxt "Popup/Moderation/Error message" +msgid "Error while authorizing application" +msgstr "" + +#: front/src/views/auth/PasswordResetConfirm.vue:7 +msgctxt "Content/Signup/Card.Title" +msgid "Error while changing your password" +msgstr "" + +#: front/src/views/admin/moderation/DomainsList.vue:6 +msgctxt "Content/Moderation/Message.Title" +msgid "Error while creating domain" +msgstr "" + +#: front/src/components/moderation/FilterModal.vue:13 +msgctxt "Popup/Moderation/Error message" +msgid "Error while creating filter" +msgstr "" + +#: front/src/components/manage/users/InvitationForm.vue:4 +msgctxt "Content/Admin/Error message.Title" +msgid "Error while creating invitation" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyForm.vue:7 +msgctxt "Content/Moderation/Error message.Title" +msgid "Error while creating rule" +msgstr "" + +#: front/src/components/auth/Authorize.vue:7 +msgctxt "Popup/Moderation/Error message" +msgid "Error while fetching application data" +msgstr "" + +#: front/src/views/admin/moderation/DomainsDetail.vue:118 +msgctxt "Content/Moderation/Table" +msgid "Error while fetching node info" +msgstr "" + +#: front/src/components/admin/SettingsGroup.vue:5 +msgctxt "Content/Settings/Error message.Title" +msgid "Error while saving settings" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:73 +msgctxt "Content/*/Error message.Title" +msgid "Error while saving settings" +msgstr "" + +#: front/src/components/library/EditForm.vue:46 +msgctxt "Content/Library/Error message.Title" +msgid "Error while submitting edit" +msgstr "" + +#: front/src/components/mixins/Translations.vue:32 +#: front/src/components/mixins/Translations.vue:33 +msgctxt "Content/Library/Table/Short" +msgid "Errored" +msgstr "" + +#: front/src/views/content/libraries/Quota.vue:75 +msgctxt "Content/Library/Label" +msgid "Errored files" +msgstr "" + +#: front/src/components/mixins/Translations.vue:17 +#: front/src/components/mixins/Translations.vue:18 +msgctxt "Content/Settings/Dropdown/Short" +msgid "Everyone" +msgstr "" + +#: front/src/components/mixins/Translations.vue:11 +#: front/src/components/mixins/Translations.vue:12 +msgctxt "Content/Settings/Dropdown" +msgid "Everyone on this instance" +msgstr "" + +#: front/src/components/mixins/Translations.vue:12 +#: front/src/components/mixins/Translations.vue:13 +msgctxt "Content/Settings/Dropdown" +msgid "Everyone, across all instances" +msgstr "" + +#: front/src/components/library/radios/Builder.vue:62 +msgctxt "Content/Radio/Table.Label/Verb" +msgid "Exclude" +msgstr "" + +#: front/src/components/manage/users/InvitationsTable.vue:41 +#: front/src/components/mixins/Translations.vue:49 +#: front/src/components/mixins/Translations.vue:50 +msgctxt "Content/Admin/Table.Label/Noun" +msgid "Expiration date" +msgstr "" + +#: front/src/components/manage/users/InvitationsTable.vue:50 +msgctxt "Content/Admin/Table" +msgid "Expired" +msgstr "" + +#: front/src/components/manage/users/InvitationsTable.vue:21 +msgctxt "Content/Admin/Dropdown/Adjective" +msgid "Expired/used" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyForm.vue:110 +msgctxt "Content/Moderation/Help text" +msgid "Explain why you're applying this policy. Depending on your instance configuration, this will help you remember why you acted on this account or domain, and may be displayed publicly to help users understand what moderation rules are in place." +msgstr "" + +#: front/src/components/manage/library/UploadsTable.vue:25 +#: front/src/views/content/libraries/FilesTable.vue:16 +msgctxt "Content/Library/Dropdown" +msgid "Failed" +msgstr "" + +#: front/src/views/content/remote/Card.vue:62 +msgctxt "Content/Library/Card.List item/Noun" +msgid "Failed tracks:" +msgstr "" + +#: front/src/views/admin/library/AlbumDetail.vue:165 +#: front/src/views/admin/library/ArtistDetail.vue:154 +#: front/src/views/admin/library/TrackDetail.vue:217 +msgctxt "*/*/*" +msgid "Favorited tracks" +msgstr "" + +#: front/src/components/Sidebar.vue:66 +msgctxt "Sidebar/Favorites/List item.Link/Noun" +msgid "Favorites" +msgstr "" + +#: front/src/components/mixins/Translations.vue:76 +#: front/src/components/mixins/Translations.vue:77 +msgctxt "Content/OAuth Scopes/Label" +msgid "Favorites" +msgstr "" + +#: front/src/views/admin/Settings.vue:84 +msgctxt "Content/Admin/Menu" +msgid "Federation" +msgstr "" + +#: front/src/components/library/TrackDetail.vue:66 +msgctxt "Content/*/*/Noun" +msgid "Federation ID" +msgstr "" + +#: front/src/components/library/EditCard.vue:45 +msgctxt "Content/Library/Card.Table.Header/Short" +msgid "Field" +msgstr "" + +#: front/src/components/library/FileUpload.vue:93 +msgctxt "Content/Library/Table.Label" +msgid "Filename" +msgstr "" + +#: front/src/components/library/radios/Builder.vue:61 +msgctxt "Content/Radio/Table.Label/Noun" +msgid "Filter name" +msgstr "" + +#: front/src/components/manage/library/UploadsTable.vue:26 +#: front/src/components/mixins/Translations.vue:36 +#: front/src/views/content/libraries/FilesTable.vue:17 +#: front/src/components/mixins/Translations.vue:37 +msgctxt "Content/Library/*" +msgid "Finished" +msgstr "" + +#: front/src/components/manage/moderation/AccountsTable.vue:42 +#: front/src/components/manage/moderation/DomainsTable.vue:41 +#: front/src/views/admin/library/AlbumDetail.vue:149 +#: front/src/views/admin/library/ArtistDetail.vue:138 +#: front/src/views/admin/library/LibraryDetail.vue:153 +#: front/src/views/admin/library/TrackDetail.vue:201 +#: front/src/views/admin/library/UploadDetail.vue:167 +#: front/src/views/admin/moderation/AccountsDetail.vue:235 +#: front/src/views/admin/moderation/DomainsDetail.vue:151 +msgctxt "Content/Moderation/Table.Label/Short (Value is a date)" +msgid "First seen" +msgstr "" + +#: front/src/components/mixins/Translations.vue:46 +#: front/src/components/mixins/Translations.vue:47 +msgctxt "Content/Moderation/Dropdown/Noun" +msgid "First seen date" +msgstr "" + +#: front/src/views/content/remote/Card.vue:87 +msgctxt "Content/Library/Card.Button.Label/Verb" +msgid "Follow" +msgstr "" + +#: front/src/views/content/Home.vue:16 +msgctxt "Content/Library/Title/Verb" +msgid "Follow remote libraries" +msgstr "" + +#: front/src/views/content/remote/Card.vue:92 +msgctxt "Content/Library/Card.Paragraph" +msgid "Follow request pending approval" +msgstr "" + +#: front/src/components/mixins/Translations.vue:64 +#: front/src/views/admin/library/LibraryDetail.vue:161 +#: front/src/views/content/libraries/Detail.vue:7 +#: front/src/components/mixins/Translations.vue:65 +msgctxt "Content/Federation/*/Noun" +msgid "Followers" +msgstr "" + +#: front/src/components/manage/library/LibrariesTable.vue:53 +msgctxt "Content/*/*/Noun" +msgid "Followers" +msgstr "" + +#: front/src/views/content/remote/Card.vue:103 +msgctxt "Content/Library/Card.Paragraph" +msgid "Following" +msgstr "" + +#: front/src/components/mixins/Translations.vue:84 +#: front/src/components/mixins/Translations.vue:85 +msgctxt "Content/OAuth Scopes/Label" +msgid "Follows" +msgstr "" + +#: front/src/components/library/TrackBase.vue:17 +msgctxt "Content/Track/Paragraph" +msgid "From album %{ album } by %{ artist }" +msgstr "" + +#: front/src/components/auth/Authorize.vue:28 +msgctxt "Content/Auth/Label/Noun" +msgid "Full access" +msgstr "" + +#: front/src/components/auth/SubsonicTokenForm.vue:7 +msgctxt "Content/Settings/Paragraph'" +msgid "Funkwhale is compatible with other music players that support the Subsonic API." +msgstr "" + +#: front/src/components/Home.vue:90 +msgctxt "Content/Home/Paragraph" +msgid "Funkwhale is dead simple to use." +msgstr "" + +#: front/src/components/Home.vue:39 +msgctxt "Content/Home/Paragraph" +msgid "Funkwhale is designed to make it easy to listen to music you like, or to discover new artists." +msgstr "" + +#: front/src/components/Home.vue:111 +msgctxt "Content/Home/Paragraph" +msgid "Funkwhale is free and gives you control on your music." +msgstr "" + +#: front/src/components/Home.vue:66 +msgctxt "Content/Home/Paragraph" +msgid "Funkwhale takes care of handling your music" +msgstr "" + +#: front/src/components/ShortcutsModal.vue:38 +msgctxt "Popup/Keyboard shortcuts/Title" +msgid "General shortcuts" +msgstr "" + +#: front/src/components/manage/users/InvitationForm.vue:16 +msgctxt "Content/Admin/Button.Label/Verb" +msgid "Get a new invitation" +msgstr "" + +#: front/src/components/Home.vue:13 +msgctxt "Content/Home/Button.Label/Verb" +msgid "Get me to the library" +msgstr "" + +#: front/src/components/Home.vue:70 +msgctxt "Content/Home/List item/Verb" +msgid "Get quality metadata about your music thanks to MusicBrainz" +msgstr "" + +#: front/src/views/content/Home.vue:12 src/views/content/Home.vue:19 +msgctxt "Content/Library/Button.Label/Verb" +msgid "Get started" +msgstr "" + +#: front/src/components/Footer.vue:37 +msgctxt "Footer/*/Link" +msgid "Getting help" +msgstr "" + +#: front/src/components/library/ImportStatusModal.vue:45 +msgctxt "Popup/Import/Table.Label/Noun" +msgid "Getting help" +msgstr "" + +#: front/src/components/common/ActionTable.vue:35 +#: front/src/components/common/ActionTable.vue:56 +msgctxt "Content/*/Button.Label/Short, Verb" +msgid "Go" +msgstr "" + +#: front/src/components/PageNotFound.vue:14 +msgctxt "Content/*/Button.Label/Verb" +msgid "Go to home page" +msgstr "" + +#: front/src/components/auth/Settings.vue:128 +msgctxt "Content/Settings/Title" +msgid "Hidden artists" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyForm.vue:114 +msgctxt "Content/Moderation/Help text" +msgid "Hide account or domain content, except from followers." +msgstr "" + +#: front/src/components/moderation/FilterModal.vue:40 +msgctxt "Popup/*/Button.Label" +msgid "Hide content" +msgstr "" + +#: front/src/components/audio/PlayButton.vue:26 +msgctxt "*/Queue/Dropdown/Button/Label/Short" +msgid "Hide content from this artist" +msgstr "" + +#: front/src/components/audio/Player.vue:643 +msgctxt "Sidebar/Player/Icon.Tooltip/Verb" +msgid "Hide content from this artist…" +msgstr "" + +#: front/src/components/library/Home.vue:65 +msgctxt "Head/Home/Title" +msgid "Home" +msgstr "" + +#: front/src/components/instance/Stats.vue:36 +msgctxt "Content/About/Paragraph/Unit" +msgid "Hours of music" +msgstr "" + +#: front/src/components/auth/SubsonicTokenForm.vue:10 +msgctxt "Content/Settings/Paragraph" +msgid "However, accessing Funkwhale from those clients require a separate password you can set below." +msgstr "" + +#: front/src/views/auth/PasswordResetConfirm.vue:24 +msgctxt "Content/Signup/Paragraph" +msgid "If the email address provided in the previous step is valid and binded to a user account, you should receive an email with reset instructions in the next couple of minutes." +msgstr "" + +#: front/src/components/auth/Settings.vue:205 +msgctxt "Content/Applications/Paragraph" +msgid "If you authorize third-party applications to access your data, those applications will be listed here." +msgstr "" + +#: front/src/components/library/ImportStatusModal.vue:3 +msgctxt "Popup/Import/Title" +msgid "Import detail" +msgstr "" + +#: front/src/components/library/FileUpload.vue:50 +msgctxt "Content/Library/Input.Label/Noun" +msgid "Import reference" +msgstr "" + +#: front/src/components/manage/library/UploadsTable.vue:20 +#: front/src/views/content/libraries/FilesTable.vue:11 +#: front/src/views/content/libraries/FilesTable.vue:59 +msgctxt "Content/Library/*/Noun" +msgid "Import status" +msgstr "" + +#: front/src/components/manage/library/UploadsTable.vue:64 +#: front/src/views/admin/library/UploadDetail.vue:131 +msgctxt "Content/*/*/Noun" +msgid "Import status" +msgstr "" + +#: front/src/components/mixins/Translations.vue:37 +#: front/src/components/mixins/Translations.vue:38 +msgctxt "Content/Library/Help text" +msgid "Imported" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:47 +msgctxt "*/*/Error" +msgid "Impossible to connect to the remote server" +msgstr "" + +#: front/src/components/moderation/FilterModal.vue:26 +msgctxt "Popup/Moderation/List item" +msgid "In \"Recently added\" widget" +msgstr "" + +#: front/src/components/moderation/FilterModal.vue:27 +msgctxt "Popup/Moderation/List item" +msgid "In artists and album listings" +msgstr "" + +#: front/src/components/favorites/TrackFavoriteIcon.vue:3 +msgctxt "Content/Track/Button.Message" +msgid "In favorites" +msgstr "" + +#: front/src/components/moderation/FilterModal.vue:25 +msgctxt "Popup/Moderation/List item" +msgid "In other users favorites and listening history" +msgstr "" + +#: front/src/components/moderation/FilterModal.vue:28 +msgctxt "Popup/Moderation/List item" +msgid "In radio suggestions" +msgstr "" + +#: front/src/components/manage/users/UsersTable.vue:54 +msgctxt "Content/Admin/Table" +msgid "Inactive" +msgstr "" + +#: front/src/components/ShortcutsModal.vue:71 +msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb" +msgid "Increase volume" +msgstr "" + +#: front/src/components/playlists/Editor.vue:41 +msgctxt "Content/Playlist/Button.Label/Verb" +msgid "Insert from queue (%{ count } track)" +msgid_plural "Insert from queue (%{ count } tracks)" +msgstr[0] "" +msgstr[1] "" + +#: front/src/components/mixins/Translations.vue:16 +#: front/src/components/mixins/Translations.vue:17 +msgctxt "Content/Settings/Dropdown/Short" +msgid "Instance" +msgstr "" + +#: front/src/views/admin/moderation/DomainsDetail.vue:71 +msgctxt "Content/Moderation/Title" +msgid "Instance data" +msgstr "" + +#: front/src/views/admin/Settings.vue:80 +msgctxt "Content/Admin/Menu" +msgid "Instance information" +msgstr "" + +#: front/src/components/library/Radios.vue:9 +msgctxt "Content/Radio/Title" +msgid "Instance radios" +msgstr "" + +#: front/src/views/admin/Settings.vue:75 +msgctxt "Head/Admin/Title" +msgid "Instance settings" +msgstr "" + +#: front/src/components/SetInstanceModal.vue:19 +msgctxt "Popup/Instance/Input.Label/Noun" +msgid "Instance URL" +msgstr "" + +#: front/src/components/library/FileUpload.vue:268 +msgctxt "Content/Library/Help text" +msgid "Invalid file type, ensure you are uploading an audio file. Supported file extensions are %{ extensions }" +msgstr "" + +#: front/src/components/library/ImportStatusModal.vue:139 +msgctxt "Popup/Import/Error.Label" +msgid "Invalid metadata" +msgstr "" + +#: front/src/components/auth/Signup.vue:44 +#: front/src/components/manage/users/InvitationForm.vue:11 +msgctxt "Content/*/Input.Label" +msgid "Invitation code" +msgstr "" + +#: front/src/views/admin/users/Base.vue:8 +#: front/src/views/admin/users/InvitationsList.vue:24 +msgctxt "*/Admin/*/Noun" +msgid "Invitations" +msgstr "" + +#: front/src/components/Footer.vue:41 +msgctxt "Footer/*/List item.Link" +msgid "Issue tracker" +msgstr "" + +#: front/src/components/SetInstanceModal.vue:5 +msgctxt "Popup/Instance/Error message.Title" +msgid "It is not possible to connect to the given URL" +msgstr "" + +#: front/src/components/Home.vue:50 +msgctxt "Content/Home/List item/Verb" +msgid "Keep a track of your favorite songs" +msgstr "" + +#: front/src/components/Footer.vue:33 src/components/ShortcutsModal.vue:3 +msgctxt "*/*/*/Noun" +msgid "Keyboard shortcuts" +msgstr "" + +#: front/src/views/admin/moderation/DomainsDetail.vue:161 +msgctxt "Content/Moderation/Table.Label.Link" +msgid "Known accounts" +msgstr "" + +#: front/src/views/content/remote/Home.vue:14 +msgctxt "Content/Library/Title" +msgid "Known libraries" +msgstr "" + +#: front/src/components/manage/users/UsersTable.vue:41 +#: front/src/components/mixins/Translations.vue:58 +#: front/src/views/admin/moderation/AccountsDetail.vue:205 +#: front/src/components/mixins/Translations.vue:59 +msgctxt "Content/Profile/Table.Label/Short, Noun (Value is a date)" +msgid "Last activity" +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:188 +#: front/src/views/admin/moderation/DomainsDetail.vue:78 +msgctxt "Content/*/Table.Label" +msgid "Last checked" +msgstr "" + +#: front/src/components/playlists/PlaylistModal.vue:46 +msgctxt "Popup/Playlist/Table.Label/Short" +msgid "Last modification" +msgstr "" + +#: front/src/components/manage/moderation/AccountsTable.vue:43 +msgctxt "Content/Moderation/Table.Label/Noun" +msgid "Last seen" +msgstr "" + +#: front/src/components/mixins/Translations.vue:47 +#: front/src/components/mixins/Translations.vue:48 +msgctxt "Content/Moderation/Dropdown/Noun" +msgid "Last seen date" +msgstr "" + +#: front/src/views/content/remote/Card.vue:60 +msgctxt "Content/Library/Card.List item/Noun" +msgid "Last update:" +msgstr "" + +#: front/src/components/common/ActionTable.vue:49 +msgctxt "Modal/*/Button.Label/Short, Verb" +msgid "Launch" +msgstr "" + +#: front/src/components/Home.vue:10 +msgctxt "Content/Home/Button.Label/Verb" +msgid "Learn more about this instance" +msgstr "" + +#: front/src/components/manage/users/InvitationForm.vue:58 +msgctxt "Content/Admin/Input.Placeholder" +msgid "Leave empty for a random code" +msgstr "" + +#: front/src/components/audio/EmbedWizard.vue:7 +msgctxt "Popup/Embed/Paragraph" +msgid "Leave empty for a responsive widget" +msgstr "" + +#: front/src/views/admin/library/AlbumDetail.vue:232 +#: front/src/views/admin/library/ArtistDetail.vue:221 +#: front/src/views/admin/library/TrackDetail.vue:284 +#: front/src/views/admin/moderation/AccountsDetail.vue:327 +#: front/src/views/admin/moderation/DomainsDetail.vue:234 +#: front/src/views/content/Base.vue:5 +msgctxt "*/*/*/Noun" +msgid "Libraries" +msgstr "" + +#: front/src/views/admin/library/Base.vue:17 +#: front/src/views/admin/library/LibrariesList.vue:24 +msgctxt "*/*/*" +msgid "Libraries" +msgstr "" + +#: front/src/components/mixins/Translations.vue:72 +#: front/src/components/mixins/Translations.vue:73 +msgctxt "Content/OAuth Scopes/Label" +msgid "Libraries and uploads" +msgstr "" + +#: front/src/views/content/libraries/Form.vue:2 +msgctxt "Content/Library/Paragraph" +msgid "Libraries help you organize and share your music collections. You can upload your own music collection to Funkwhale and share it with your friends and family." +msgstr "" + +#: front/src/components/Sidebar.vue:85 src/components/instance/Stats.vue:30 +#: front/src/components/manage/library/UploadsTable.vue:60 +#: front/src/components/manage/users/UsersTable.vue:173 +#: front/src/views/admin/library/UploadDetail.vue:144 +#: front/src/views/admin/moderation/AccountsDetail.vue:498 +msgctxt "*/*/*" +msgid "Library" +msgstr "" + +#: front/src/views/content/libraries/Form.vue:103 +msgctxt "Content/Library/Message" +msgid "Library created" +msgstr "" + +#: front/src/views/admin/library/LibraryDetail.vue:78 +msgctxt "Content/Moderation/Title" +msgid "Library data" +msgstr "" + +#: front/src/views/content/libraries/Form.vue:123 +msgctxt "Content/Library/Message" +msgid "Library deleted" +msgstr "" + +#: front/src/views/admin/library/EditsList.vue:4 +msgctxt "Content/Admin/Title/Noun" +msgid "Library edits" +msgstr "" + +#: front/src/views/content/libraries/Form.vue:100 +msgctxt "Content/Library/Message" +msgid "Library updated" +msgstr "" + +#: front/src/components/library/TrackDetail.vue:19 +#: front/src/components/manage/library/TracksTable.vue:43 +#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:61 +msgctxt "Content/*/*/Noun" +msgid "License" +msgstr "" + +#: front/src/views/admin/library/AlbumDetail.vue:157 +#: front/src/views/admin/library/ArtistDetail.vue:146 +#: front/src/views/admin/library/TrackDetail.vue:209 +msgctxt "*/*/*/Noun" +msgid "Listenings" +msgstr "" + +#: front/src/components/mixins/Translations.vue:80 +#: front/src/components/mixins/Translations.vue:81 +msgctxt "Content/OAuth Scopes/Label" +msgid "Listenings" +msgstr "" + +#: front/src/components/audio/track/Table.vue:25 +#: front/src/components/library/ArtistDetail.vue:28 +msgctxt "Content/*/Button.Label" +msgid "Load more…" +msgstr "" + +#: front/src/views/content/libraries/Detail.vue:21 +msgctxt "Content/Library/Paragraph" +msgid "Loading followers…" +msgstr "" + +#: front/src/views/content/libraries/Home.vue:3 +msgctxt "Content/Library/Paragraph" +msgid "Loading Libraries…" +msgstr "" + +#: front/src/views/content/libraries/Detail.vue:3 +#: front/src/views/content/libraries/Upload.vue:3 +msgctxt "Content/Library/Paragraph" +msgid "Loading library data…" +msgstr "" + +#: front/src/views/Notifications.vue:19 +msgctxt "Content/Notifications/Paragraph" +msgid "Loading notifications…" +msgstr "" + +#: front/src/views/content/remote/Home.vue:3 +msgctxt "Content/Library/Paragraph" +msgid "Loading remote libraries…" +msgstr "" + +#: front/src/views/content/libraries/Quota.vue:4 +msgctxt "Content/Library/Paragraph" +msgid "Loading usage data…" +msgstr "" + +#: front/src/components/favorites/List.vue:5 +msgctxt "Content/Favorites/Message" +msgid "Loading your favorites…" +msgstr "" + +#: front/src/components/manage/library/AlbumsTable.vue:65 +#: front/src/components/manage/library/ArtistsTable.vue:58 +#: front/src/components/manage/library/LibrariesTable.vue:75 +#: front/src/components/manage/library/TracksTable.vue:71 +#: front/src/components/manage/library/UploadsTable.vue:99 +#: front/src/views/admin/library/AlbumDetail.vue:19 +#: front/src/views/admin/library/ArtistDetail.vue:18 +#: front/src/views/admin/library/LibraryDetail.vue:18 +#: front/src/views/admin/library/TrackDetail.vue:18 +#: front/src/views/admin/library/UploadDetail.vue:19 +msgctxt "Content/Moderation/*/Short, Noun" +msgid "Local" +msgstr "" + +#: front/src/components/manage/moderation/AccountsTable.vue:59 +#: front/src/views/admin/moderation/AccountsDetail.vue:18 +msgctxt "Content/Moderation/*/Short, Noun" +msgid "Local account" +msgstr "" + +#: front/src/components/auth/Login.vue:84 +msgctxt "Head/Login/Title" +msgid "Log In" +msgstr "" + +#: front/src/components/auth/Login.vue:4 +msgctxt "Content/Login/Title/Verb" +msgid "Log in to your Funkwhale account" +msgstr "" + +#: front/src/components/auth/Logout.vue:20 +msgctxt "Head/Login/Title" +msgid "Log Out" +msgstr "" + +#: front/src/components/Sidebar.vue:38 +msgctxt "Sidebar/Profile/List item.Link" +msgid "Logged in as %{ username }" +msgstr "" + +#: front/src/components/Sidebar.vue:54 src/components/auth/Login.vue:42 +msgctxt "*/Login/*/Verb" +msgid "Login" +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:148 +msgctxt "Content/*/*/Noun" +msgid "Login status" +msgstr "" + +#: front/src/components/Sidebar.vue:52 +msgctxt "Sidebar/Login/List item.Link/Verb" +msgid "Logout" +msgstr "" + +#: front/src/views/content/libraries/Home.vue:9 +msgctxt "Content/Library/Paragraph" +msgid "Looks like you don't have a library, it's time to create one." +msgstr "" + +#: front/src/components/audio/Player.vue:632 +#: src/components/audio/Player.vue:633 +msgctxt "Sidebar/Player/Icon.Tooltip" +msgid "Looping disabled. Click to switch to single-track looping." +msgstr "" + +#: front/src/components/audio/Player.vue:635 +#: src/components/audio/Player.vue:636 +msgctxt "Sidebar/Player/Icon.Tooltip" +msgid "Looping on a single track. Click to switch to whole queue looping." +msgstr "" + +#: front/src/components/audio/Player.vue:638 +#: src/components/audio/Player.vue:639 +msgctxt "Sidebar/Player/Icon.Tooltip" +msgid "Looping on whole queue. Click to disable looping." +msgstr "" + +#: front/src/components/Sidebar.vue:223 +msgctxt "Sidebar/*/Hidden text" +msgid "Main menu" +msgstr "" + +#: front/src/views/admin/library/Base.vue:31 +msgctxt "Head/Admin/Title" +msgid "Manage library" +msgstr "" + +#: front/src/components/playlists/PlaylistModal.vue:3 +msgctxt "Popup/Playlist/Title/Verb" +msgid "Manage playlists" +msgstr "" + +#: front/src/views/admin/users/Base.vue:20 +msgctxt "Head/Admin/Title" +msgid "Manage users" +msgstr "" + +#: front/src/views/playlists/List.vue:8 +msgctxt "Content/Playlist/Button.Label/Verb" +msgid "Manage your playlists" +msgstr "" + +#: front/src/views/Notifications.vue:14 +msgctxt "Content/Notifications/Button.Label/Verb" +msgid "Mark all as read" +msgstr "" + +#: front/src/components/notifications/NotificationRow.vue:46 +msgctxt "Content/Notifications/Button.Tooltip/Verb" +msgid "Mark as read" +msgstr "" + +#: front/src/components/notifications/NotificationRow.vue:47 +msgctxt "Content/Notifications/Button.Tooltip/Verb" +msgid "Mark as unread" +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:310 +msgctxt "Content/*/*/Unit" +msgid "MB" +msgstr "" + +#: front/src/components/audio/Player.vue:625 +msgctxt "Sidebar/Player/Hidden text" +msgid "Media player" +msgstr "" + +#: front/src/components/auth/Profile.vue:12 +msgctxt "Content/Profile/Paragraph" +msgid "Member since %{ date }" +msgstr "" + +#: front/src/components/Footer.vue:32 +msgctxt "Footer/*/List item.Link" +msgid "Mobile and desktop apps" +msgstr "" + +#: front/src/components/Sidebar.vue:96 +#: src/components/manage/users/UsersTable.vue:177 +#: front/src/views/admin/moderation/AccountsDetail.vue:502 +#: front/src/views/admin/moderation/Base.vue:21 +msgctxt "*/Moderation/*" +msgid "Moderation" +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:78 +#: front/src/views/admin/moderation/DomainsDetail.vue:42 +msgctxt "Content/Moderation/Card.Paragraph" +msgid "Moderation policies help you control how your instance interact with a given domain or account." +msgstr "" + +#: front/src/components/library/EditCard.vue:5 +msgctxt "Content/Library/Card/Short" +msgid "Modification %{ id }" +msgstr "" + +#: front/src/components/mixins/Translations.vue:48 +#: front/src/components/mixins/Translations.vue:49 +msgctxt "Content/Playlist/Dropdown/Noun" +msgid "Modification date" +msgstr "" + +#: front/src/components/library/AlbumBase.vue:42 +#: front/src/components/library/ArtistBase.vue:53 +#: front/src/components/library/TrackBase.vue:61 +msgctxt "*/*/Button.Label/Noun" +msgid "More…" +msgstr "" + +#: front/src/components/Sidebar.vue:63 src/views/admin/Settings.vue:82 +msgctxt "*/*/*/Noun" +msgid "Music" +msgstr "" + +#: front/src/components/audio/Player.vue:631 +msgctxt "Sidebar/Player/Icon.Tooltip/Verb" +msgid "Mute" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyCard.vue:24 +#: front/src/components/manage/moderation/InstancePolicyForm.vue:115 +msgctxt "Content/Moderation/*/Verb" +msgid "Mute activity" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyCard.vue:28 +#: front/src/components/manage/moderation/InstancePolicyForm.vue:119 +msgctxt "Content/Moderation/*/Verb" +msgid "Mute notifications" +msgstr "" + +#: front/src/components/Sidebar.vue:34 +msgctxt "Sidebar/Profile/Title" +msgid "My account" +msgstr "" + +#: front/src/components/library/radios/Builder.vue:238 +msgctxt "Content/Radio/Input.Placeholder" +msgid "My awesome description" +msgstr "" + +#: front/src/views/content/libraries/Form.vue:72 +msgctxt "Content/Library/Input.Placeholder" +msgid "My awesome library" +msgstr "" + +#: front/src/components/playlists/Form.vue:76 +msgctxt "Content/Playlist/Input.Placeholder" +msgid "My awesome playlist" +msgstr "" + +#: front/src/components/library/radios/Builder.vue:237 +msgctxt "Content/Radio/Input.Placeholder" +msgid "My awesome radio" +msgstr "" + +#: front/src/views/content/libraries/Home.vue:6 +msgctxt "Content/Library/Title" +msgid "My libraries" +msgstr "" + +#: front/src/components/audio/track/Row.vue:40 +#: src/components/library/EditCard.vue:60 +#: front/src/components/library/EditForm.vue:70 +#: front/src/components/library/TrackDetail.vue:34 +#: front/src/components/library/TrackDetail.vue:43 +#: front/src/components/library/TrackDetail.vue:52 +#: front/src/components/library/TrackDetail.vue:61 +#: front/src/components/manage/library/AlbumsTable.vue:73 +#: front/src/components/manage/library/TracksTable.vue:76 +#: front/src/components/manage/library/UploadsTable.vue:121 +#: front/src/components/manage/library/UploadsTable.vue:128 +#: front/src/components/manage/users/UsersTable.vue:61 +#: front/src/views/admin/library/UploadDetail.vue:179 +#: front/src/views/admin/library/UploadDetail.vue:214 +#: front/src/views/admin/library/UploadDetail.vue:233 +#: front/src/views/admin/library/UploadDetail.vue:244 +#: front/src/views/admin/library/UploadDetail.vue:257 +#: front/src/views/admin/moderation/AccountsDetail.vue:192 +#: front/src/views/admin/moderation/DomainsDetail.vue:82 +#: front/src/views/content/libraries/FilesTable.vue:95 +#: front/src/views/content/libraries/FilesTable.vue:101 +msgctxt "*/*/*" +msgid "N/A" +msgstr "" + +#: front/src/components/manage/library/LibrariesTable.vue:48 +#: front/src/components/manage/library/UploadsTable.vue:59 +msgctxt "*/*/*" +msgid "Name" +msgstr "" + +#: front/src/components/auth/ApplicationForm.vue:9 +msgctxt "Content/Applications/Input.Label/Noun" +msgid "Name" +msgstr "" + +#: front/src/components/auth/Settings.vue:133 +#: front/src/components/manage/library/ArtistsTable.vue:39 +#: front/src/components/manage/moderation/AccountsTable.vue:39 +#: front/src/components/manage/moderation/DomainsTable.vue:38 +#: front/src/components/mixins/Translations.vue:53 +#: front/src/components/playlists/PlaylistModal.vue:45 +#: front/src/views/admin/library/ArtistDetail.vue:98 +#: front/src/views/admin/library/LibraryDetail.vue:85 +#: front/src/views/admin/library/UploadDetail.vue:92 +#: front/src/views/admin/moderation/DomainsDetail.vue:97 +#: front/src/views/content/libraries/Form.vue:10 src/edits.js:10 +#: front/src/components/mixins/Translations.vue:54 +msgctxt "*/*/*/Noun" +msgid "Name" +msgstr "" + +#: front/src/components/auth/Settings.vue:88 +#: front/src/views/auth/PasswordResetConfirm.vue:14 +msgctxt "Content/Settings/Input.Label" +msgid "New password" +msgstr "" + +#: front/src/components/Sidebar.vue:173 +msgctxt "Sidebar/Player/Paragraph" +msgid "New tracks will be appended here automatically." +msgstr "" + +#: front/src/components/library/EditCard.vue:47 +msgctxt "Content/Library/Card.Table.Header/Short" +msgid "New value" +msgstr "" + +#: front/src/components/audio/Player.vue:629 +msgctxt "Sidebar/Player/Icon.Tooltip" +msgid "Next track" +msgstr "" + +#: front/src/components/Sidebar.vue:130 +msgctxt "*/*/*" +msgid "No" +msgstr "" + +#: front/src/components/Home.vue:95 +msgctxt "Content/Home/List item" +msgid "No add-ons, no plugins : you only need a web library" +msgstr "" + +#: front/src/components/audio/Search.vue:25 +msgctxt "Content/Search/Paragraph" +msgid "No album matched your query" +msgstr "" + +#: front/src/components/audio/Search.vue:16 +msgctxt "Content/Search/Paragraph" +msgid "No artist matched your query" +msgstr "" + +#: front/src/components/library/TrackDetail.vue:14 +msgctxt "Content/Track/Table.Paragraph" +msgid "No copyright information available for this track" +msgstr "" + +#: front/src/components/library/TrackDetail.vue:25 +msgctxt "Content/Track/Table.Paragraph" +msgid "No licensing information for this track" +msgstr "" + +#: front/src/components/federation/LibraryWidget.vue:6 +msgctxt "Content/Federation/Paragraph" +msgid "No matching library." +msgstr "" + +#: front/src/views/Notifications.vue:28 +msgctxt "Content/Notifications/Paragraph" +msgid "No notification to show." +msgstr "" + +#: front/src/components/common/EmptyState.vue:7 +msgctxt "Content/*/Paragraph" +msgid "No results were found." +msgstr "" + +#: front/src/components/mixins/Translations.vue:10 +#: front/src/components/mixins/Translations.vue:11 +msgctxt "Content/Settings/Dropdown" +msgid "Nobody except me" +msgstr "" + +#: front/src/views/content/libraries/Detail.vue:57 +msgctxt "Content/Library/Paragraph" +msgid "Nobody is following this library" +msgstr "" + +#: front/src/components/manage/users/InvitationsTable.vue:51 +msgctxt "Content/Admin/Table" +msgid "Not used" +msgstr "" + +#: front/src/components/mixins/Translations.vue:100 +#: front/src/components/mixins/Translations.vue:101 +msgctxt "Content/OAuth Scopes/Label" +msgid "Notifications" +msgstr "" + +#: front/src/components/Sidebar.vue:46 src/views/Notifications.vue:76 +msgctxt "*/Notifications/*" +msgid "Notifications" +msgstr "" + +#: front/src/components/Footer.vue:47 +msgctxt "Footer/*/List item.Link" +msgid "Official website" +msgstr "" + +#: front/src/components/auth/Settings.vue:83 +msgctxt "Content/Settings/Input.Label" +msgid "Old password" +msgstr "" + +#: front/src/components/library/EditCard.vue:46 +msgctxt "Content/Library/Card.Table.Header/Short" +msgid "Old value" +msgstr "" + +#: front/src/components/manage/users/InvitationsTable.vue:20 +msgctxt "Content/Admin/Dropdown/Adjective" +msgid "Open" +msgstr "" + +#: front/src/components/library/ImportStatusModal.vue:56 +msgctxt "Popup/Import/Table.Label/Value" +msgid "Open a support thread (include the debug information below in your message)" +msgstr "" + +#: front/src/components/library/AlbumBase.vue:73 +#: front/src/components/library/ArtistBase.vue:84 +#: front/src/components/library/TrackBase.vue:92 +msgctxt "Content/Moderation/Link" +msgid "Open in moderation interface" +msgstr "" + +#: front/src/views/admin/library/AlbumDetail.vue:31 +#: front/src/views/admin/library/ArtistDetail.vue:30 +#: front/src/views/admin/library/TrackDetail.vue:30 +msgctxt "Content/Moderation/Link/Verb" +msgid "Open local profile" +msgstr "" + +#: front/src/views/admin/library/AlbumDetail.vue:46 +#: front/src/views/admin/library/ArtistDetail.vue:45 +#: front/src/views/admin/library/TrackDetail.vue:45 +msgctxt "Content/Moderation/Link/Verb" +msgid "Open on MusicBrainz" +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:23 +msgctxt "Content/Moderation/Link/Verb" +msgid "Open profile" +msgstr "" + +#: front/src/views/admin/library/AlbumDetail.vue:54 +#: front/src/views/admin/library/ArtistDetail.vue:53 +#: front/src/views/admin/library/LibraryDetail.vue:49 +#: front/src/views/admin/library/TrackDetail.vue:53 +#: front/src/views/admin/library/UploadDetail.vue:50 +#: front/src/views/admin/moderation/AccountsDetail.vue:52 +msgctxt "Content/Moderation/Link/Verb" +msgid "Open remote profile" +msgstr "" + +#: front/src/views/admin/moderation/DomainsDetail.vue:16 +msgctxt "Content/Moderation/Link/Verb" +msgid "Open website" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyForm.vue:40 +msgctxt "Content/Moderation/Card.Title" +msgid "Or customize your rule" +msgstr "" + +#: front/src/components/favorites/List.vue:32 +#: src/components/library/Radios.vue:41 +#: front/src/components/manage/library/EditsCardList.vue:37 +#: front/src/components/manage/users/UsersTable.vue:17 +#: front/src/views/playlists/List.vue:25 +msgctxt "Content/Search/Dropdown.Label/Noun" +msgid "Order" +msgstr "" + +#: front/src/components/favorites/List.vue:24 +#: src/components/library/Albums.vue:15 +#: front/src/components/library/Artists.vue:15 +#: src/components/library/Radios.vue:33 +#: front/src/components/manage/library/AlbumsTable.vue:11 +#: front/src/components/manage/library/ArtistsTable.vue:11 +#: front/src/components/manage/library/EditsCardList.vue:29 +#: front/src/components/manage/library/LibrariesTable.vue:20 +#: front/src/components/manage/library/TracksTable.vue:11 +#: front/src/components/manage/library/UploadsTable.vue:30 +#: front/src/components/manage/moderation/AccountsTable.vue:11 +#: front/src/components/manage/moderation/DomainsTable.vue:9 +#: front/src/components/manage/users/InvitationsTable.vue:9 +#: front/src/components/manage/users/UsersTable.vue:9 +#: front/src/views/content/libraries/FilesTable.vue:21 +#: front/src/views/playlists/List.vue:17 +msgctxt "Content/Search/Dropdown.Label/Noun" +msgid "Ordering" +msgstr "" + +#: front/src/components/library/Albums.vue:23 +#: src/components/library/Artists.vue:23 +#: front/src/components/manage/library/AlbumsTable.vue:19 +#: front/src/components/manage/library/ArtistsTable.vue:19 +#: front/src/components/manage/library/LibrariesTable.vue:28 +#: front/src/components/manage/library/TracksTable.vue:19 +#: front/src/components/manage/library/UploadsTable.vue:38 +#: front/src/components/manage/moderation/AccountsTable.vue:19 +#: front/src/components/manage/moderation/DomainsTable.vue:17 +#: front/src/views/content/libraries/FilesTable.vue:29 +msgctxt "Content/Search/Dropdown.Label/Noun" +msgid "Ordering direction" +msgstr "" + +#: front/src/components/manage/users/InvitationsTable.vue:38 +msgctxt "Content/Admin/Table.Label" +msgid "Owner" +msgstr "" + +#: front/src/components/PageNotFound.vue:33 +msgctxt "Head/*/Title" +msgid "Page Not Found" +msgstr "" + +#: front/src/components/PageNotFound.vue:7 +msgctxt "Content/*/Title" +msgid "Page not found!" +msgstr "" + +#: front/src/components/Pagination.vue:39 +msgctxt "Content/*/Hidden text/Noun" +msgid "Pagination" +msgstr "" + +#: front/src/components/auth/Login.vue:33 src/components/auth/Signup.vue:40 +msgctxt "Content/*/Input.Label" +msgid "Password" +msgstr "" + +#: front/src/components/auth/SubsonicTokenForm.vue:94 +msgctxt "Content/Settings/Message" +msgid "Password updated" +msgstr "" + +#: front/src/views/auth/PasswordResetConfirm.vue:28 +msgctxt "Content/Signup/Card.Title" +msgid "Password updated successfully" +msgstr "" + +#: front/src/components/audio/Player.vue:628 +msgctxt "Sidebar/Player/Icon.Tooltip/Verb" +msgid "Pause track" +msgstr "" + +#: front/src/components/ShortcutsModal.vue:59 +msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb" +msgid "Pause/play the current track" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyCard.vue:12 +msgctxt "Content/Moderation/Card.List item" +msgid "Paused" +msgstr "" + +#: front/src/components/library/FileUpload.vue:116 +#: front/src/components/manage/library/UploadsTable.vue:23 +#: front/src/components/mixins/Translations.vue:28 +#: front/src/views/content/libraries/FilesTable.vue:14 +#: front/src/components/mixins/Translations.vue:29 +msgctxt "Content/Library/*/Short" +msgid "Pending" +msgstr "" + +#: front/src/views/content/libraries/Detail.vue:37 +msgctxt "Content/Library/Table/Short" +msgid "Pending approval" +msgstr "" + +#: front/src/views/content/libraries/Quota.vue:22 +msgctxt "Content/Library/Label" +msgid "Pending files" +msgstr "" + +#: front/src/components/Sidebar.vue:225 +msgctxt "Sidebar/Notifications/Hidden text" +msgid "Pending follow requests" +msgstr "" + +#: front/src/components/library/EditCard.vue:29 +#: front/src/components/manage/library/EditsCardList.vue:18 +msgctxt "Content/Admin/*/Noun" +msgid "Pending review" +msgstr "" + +#: front/src/components/Sidebar.vue:226 +msgctxt "Sidebar/Moderation/Hidden text" +msgid "Pending review edits" +msgstr "" + +#: front/src/components/manage/users/UsersTable.vue:42 +#: front/src/views/admin/moderation/AccountsDetail.vue:166 +msgctxt "Content/Admin/Table.Label/Noun" +msgid "Permissions" +msgstr "" + +#: front/src/components/auth/Settings.vue:176 +msgctxt "Content/*/*/Noun" +msgid "Permissions" +msgstr "" + +#: front/src/components/audio/PlayButton.vue:9 +#: front/src/components/library/TrackBase.vue:26 +msgctxt "*/Queue/Button.Label/Short, Verb" +msgid "Play" +msgstr "" + +#: front/src/components/audio/album/Card.vue:48 +#: front/src/components/audio/artist/Card.vue:44 +#: front/src/components/library/AlbumBase.vue:20 +#: front/src/components/library/AlbumDetail.vue:11 +#: src/views/playlists/Detail.vue:24 +msgctxt "Content/Queue/Button.Label/Short, Verb" +msgid "Play all" +msgstr "" + +#: front/src/components/library/ArtistBase.vue:31 +msgctxt "Content/Artist/Button.Label/Verb" +msgid "Play all albums" +msgstr "" + +#: front/src/components/audio/PlayButton.vue:76 +msgctxt "*/Queue/Dropdown/Button/Title" +msgid "Play next" +msgstr "" + +#: front/src/components/ShortcutsModal.vue:67 +msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb" +msgid "Play next track" +msgstr "" + +#: front/src/components/audio/PlayButton.vue:74 +msgctxt "*/Queue/Dropdown/Button/Title" +msgid "Play now" +msgstr "" + +#: front/src/components/ShortcutsModal.vue:63 +msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb" +msgid "Play previous track" +msgstr "" + +#: front/src/components/audio/PlayButton.vue:77 +msgctxt "*/Queue/Dropdown/Button/Title" +msgid "Play similar songs" +msgstr "" + +#: front/src/components/Sidebar.vue:224 +msgctxt "Sidebar/Player/Hidden text" +msgid "Play this track" +msgstr "" + +#: front/src/components/audio/Player.vue:627 +msgctxt "Sidebar/Player/Icon.Tooltip/Verb" +msgid "Play track" +msgstr "" + +#: front/src/components/audio/PlayButton.vue:82 +msgctxt "*/Queue/Button/Title" +msgid "Play..." +msgstr "" + +#: front/src/views/playlists/Detail.vue:91 +msgctxt "Head/Playlist/Title" +msgid "Playlist" +msgstr "" + +#: front/src/views/playlists/Detail.vue:12 +msgctxt "Content/Playlist/Header.Subtitle" +msgid "Playlist containing %{ count } track, by %{ username }" +msgid_plural "Playlist containing %{ count } tracks, by %{ username }" +msgstr[0] "" +msgstr[1] "" + +#: front/src/components/playlists/Form.vue:9 +msgctxt "Content/Playlist/Message" +msgid "Playlist created" +msgstr "" + +#: front/src/components/playlists/Editor.vue:4 +msgctxt "Content/Playlist/Title" +msgid "Playlist editor" +msgstr "" + +#: front/src/components/playlists/Form.vue:21 +msgctxt "Content/Playlist/Input.Label" +msgid "Playlist name" +msgstr "" + +#: front/src/components/playlists/Form.vue:6 +msgctxt "Content/Playlist/Message" +msgid "Playlist updated" +msgstr "" + +#: front/src/components/playlists/Form.vue:25 +msgctxt "Content/Playlist/Dropdown.Label" +msgid "Playlist visibility" +msgstr "" + +#: front/src/components/mixins/Translations.vue:88 +#: front/src/components/mixins/Translations.vue:89 +msgctxt "Content/OAuth Scopes/Label" +msgid "Playlists" +msgstr "" + +#: front/src/components/Sidebar.vue:71 src/components/library/Home.vue:16 +#: front/src/components/library/Library.vue:16 src/views/admin/Settings.vue:83 +#: front/src/views/admin/library/AlbumDetail.vue:173 +#: front/src/views/admin/library/ArtistDetail.vue:162 +#: front/src/views/admin/library/TrackDetail.vue:225 +#: src/views/playlists/List.vue:106 +msgctxt "*/*/*" +msgid "Playlists" +msgstr "" + +#: front/src/components/Home.vue:56 +msgctxt "Content/Home/List item" +msgid "Playlists? We got them" +msgstr "" + +#: front/src/components/auth/Settings.vue:79 +msgctxt "Content/Settings/Error message.List item/Call to action" +msgid "Please double-check your password is correct" +msgstr "" + +#: front/src/components/auth/Login.vue:9 +msgctxt "Content/Login/Error message.List item/Call to action" +msgid "Please double-check your username/password couple is correct" +msgstr "" + +#: front/src/components/auth/Settings.vue:46 +msgctxt "Content/Settings/Paragraph" +msgid "PNG, GIF or JPG. At most 2MB. Will be downscaled to 400x400px." +msgstr "" + +#: front/src/views/admin/library/TrackDetail.vue:137 +msgctxt "*/*/*/Noun" +msgid "Position" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyForm.vue:118 +msgctxt "Content/Moderation/Help text" +msgid "Prevent account or domain from triggering notifications, except from followers." +msgstr "" + +#: front/src/components/audio/EmbedWizard.vue:33 +msgctxt "Popup/Embed/Title/Noun" +msgid "Preview" +msgstr "" + +#: front/src/components/audio/Player.vue:626 +msgctxt "Sidebar/Player/Icon.Tooltip" +msgid "Previous track" +msgstr "" + +#: front/src/components/mixins/Translations.vue:15 +#: front/src/components/mixins/Translations.vue:16 +msgctxt "Content/Settings/Dropdown/Short" +msgid "Private" +msgstr "" + +#: front/src/views/content/remote/Card.vue:43 +msgctxt "Content/Library/Card.List item" +msgid "Problem during scanning" +msgstr "" + +#: front/src/components/library/FileUpload.vue:57 +msgctxt "Content/Library/Button.Label" +msgid "Proceed" +msgstr "" + +#: front/src/views/auth/EmailConfirm.vue:26 +#: front/src/views/auth/PasswordResetConfirm.vue:31 +msgctxt "Content/Signup/Link/Verb" +msgid "Proceed to login" +msgstr "" + +#: front/src/components/library/FileUpload.vue:17 +msgctxt "Content/Library/Tab.Title/Short" +msgid "Processing" +msgstr "" + +#: front/src/components/mixins/Translations.vue:68 +#: front/src/components/mixins/Translations.vue:69 +msgctxt "Content/OAuth Scopes/Label" +msgid "Profile" +msgstr "" + +#: front/src/components/manage/moderation/AccountsTable.vue:188 +#: front/src/components/manage/moderation/DomainsTable.vue:168 +#: front/src/views/content/libraries/Quota.vue:36 +#: front/src/views/content/libraries/Quota.vue:39 +#: front/src/views/content/libraries/Quota.vue:62 +#: front/src/views/content/libraries/Quota.vue:65 +#: front/src/views/content/libraries/Quota.vue:88 +#: front/src/views/content/libraries/Quota.vue:91 +msgctxt "*/*/*/Verb" +msgid "Purge" +msgstr "" + +#: front/src/views/content/libraries/Quota.vue:89 +msgctxt "Popup/Library/Title" +msgid "Purge errored files?" +msgstr "" + +#: front/src/views/content/libraries/Quota.vue:37 +msgctxt "Popup/Library/Title" +msgid "Purge pending files?" +msgstr "" + +#: front/src/views/content/libraries/Quota.vue:63 +msgctxt "Popup/Library/Title" +msgid "Purge skipped files?" +msgstr "" + +#: front/src/components/Sidebar.vue:20 +msgctxt "Sidebar/Queue/Tab.Title/Noun" +msgid "Queue" +msgstr "" + +#: front/src/components/audio/Player.vue:322 +msgctxt "Content/Queue/Message" +msgid "Queue shuffled!" +msgstr "" + +#: front/src/views/radios/Detail.vue:80 +msgctxt "Head/Radio/Title" +msgid "Radio" +msgstr "" + +#: front/src/components/library/radios/Builder.vue:235 +msgctxt "Head/Radio/Title" +msgid "Radio Builder" +msgstr "" + +#: front/src/components/library/radios/Builder.vue:15 +msgctxt "Content/Radio/Message" +msgid "Radio created" +msgstr "" + +#: front/src/components/library/radios/Builder.vue:21 +msgctxt "Content/Radio/Input.Label/Noun" +msgid "Radio name" +msgstr "" + +#: front/src/components/library/radios/Builder.vue:12 +msgctxt "Content/Radio/Message" +msgid "Radio updated" +msgstr "" + +#: front/src/components/library/Library.vue:13 +#: src/components/library/Radios.vue:142 +msgctxt "*/*/*" +msgid "Radios" +msgstr "" + +#: front/src/components/mixins/Translations.vue:92 +#: front/src/components/mixins/Translations.vue:93 +msgctxt "Content/OAuth Scopes/Label" +msgid "Radios" +msgstr "" + +#: front/src/components/auth/ApplicationForm.vue:151 +msgctxt "Content/OAuth Scopes/Label/Verb" +msgid "Read" +msgstr "" + +#: front/src/components/library/ImportStatusModal.vue:51 +msgctxt "Popup/Import/Table.Label/Value" +msgid "Read our documentation for this error" +msgstr "" + +#: front/src/components/auth/Authorize.vue:24 +msgctxt "Content/Auth/Label/Noun" +msgid "Read-only" +msgstr "" + +#: front/src/components/auth/ApplicationForm.vue:152 +msgctxt "Content/OAuth Scopes/Help Text" +msgid "Read-only access to user data" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyCard.vue:39 +#: front/src/components/manage/moderation/InstancePolicyForm.vue:25 +msgctxt "Content/Moderation/*/Noun" +msgid "Reason" +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:251 +#: front/src/views/admin/moderation/DomainsDetail.vue:179 +msgctxt "Content/Moderation/Table.Label/Noun" +msgid "Received library follows" +msgstr "" + +#: front/src/components/manage/moderation/DomainsTable.vue:40 +#: front/src/components/mixins/Translations.vue:62 +#: front/src/components/mixins/Translations.vue:63 +msgctxt "Content/Moderation/*/Noun" +msgid "Received messages" +msgstr "" + +#: front/src/components/library/EditForm.vue:27 +msgctxt "Content/Library/Paragraph" +msgid "Recent edits" +msgstr "" + +#: front/src/components/library/EditForm.vue:17 +msgctxt "Content/Library/Paragraph" +msgid "Recent edits awaiting review" +msgstr "" + +#: front/src/components/library/Home.vue:24 +msgctxt "Content/Home/Title" +msgid "Recently added" +msgstr "" + +#: front/src/components/library/Home.vue:11 +msgctxt "Content/Home/Title" +msgid "Recently favorited" +msgstr "" + +#: front/src/components/library/Home.vue:6 +msgctxt "Content/Home/Title" +msgid "Recently listened" +msgstr "" + +#: front/src/components/auth/ApplicationForm.vue:13 +msgctxt "Content/Applications/Input.Label/Noun" +msgid "Redirect URI" +msgstr "" + +#: front/src/components/auth/Settings.vue:125 +#: src/components/auth/Settings.vue:170 +#: front/src/components/common/EmptyState.vue:16 +#: src/views/content/remote/Home.vue:15 +msgctxt "Content/*/Button.Label/Short, Verb" +msgid "Refresh" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:20 +msgctxt "Popup/*/Message.Title" +msgid "Refresh error" +msgstr "" + +#: front/src/views/admin/library/AlbumDetail.vue:50 +#: front/src/views/admin/library/ArtistDetail.vue:49 +#: front/src/views/admin/library/TrackDetail.vue:49 +msgctxt "Content/Moderation/Button/Verb" +msgid "Refresh from remote server" +msgstr "" + +#: front/src/views/admin/moderation/DomainsDetail.vue:127 +msgctxt "Content/Moderation/Button.Label/Verb" +msgid "Refresh node info" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:79 +msgctxt "Popup/*/Message.Title" +msgid "Refresh pending" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:80 +msgctxt "Popup/*/Message.Content" +msgid "Refresh request wasn't proceed in time by our server. It will be processed later." +msgstr "" + +#: front/src/components/federation/FetchButton.vue:16 +msgctxt "Popup/*/Message.Title" +msgid "Refresh successful" +msgstr "" + +#: front/src/components/common/ActionTable.vue:275 +msgctxt "Content/*/Button.Tooltip/Verb" +msgid "Refresh table content" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:12 +msgctxt "Popup/*/Message.Title" +msgid "Refresh was skipped" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:7 +msgctxt "Popup/*/Title" +msgid "Refreshing object from remote…" +msgstr "" + +#: front/src/components/auth/Signup.vue:9 +msgctxt "Content/Signup/Form/Paragraph" +msgid "Registration are closed on this instance, you will need an invitation code to signup." +msgstr "" + +#: front/src/components/manage/users/UsersTable.vue:71 +msgctxt "Content/Admin/Table, User role" +msgid "Regular user" +msgstr "" + +#: front/src/components/library/EditCard.vue:87 +#: front/src/views/content/libraries/Detail.vue:51 +msgctxt "Content/Library/Button.Label" +msgid "Reject" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyCard.vue:32 +#: front/src/components/manage/moderation/InstancePolicyForm.vue:123 +msgctxt "Content/Moderation/*/Verb" +msgid "Reject media" +msgstr "" + +#: front/src/components/library/EditCard.vue:33 +#: front/src/components/manage/library/EditsCardList.vue:24 +#: front/src/views/content/libraries/Detail.vue:43 +msgctxt "Content/Library/*/Short" +msgid "Rejected" +msgstr "" + +#: front/src/components/manage/library/AlbumsTable.vue:43 +#: front/src/components/mixins/Translations.vue:44 src/edits.js:28 +#: front/src/components/mixins/Translations.vue:45 +msgctxt "Content/*/*/Noun" +msgid "Release date" +msgstr "" + +#: front/src/components/library/FileUpload.vue:63 +msgctxt "Content/Library/Paragraph" +msgid "Remaining storage space" +msgstr "" + +#: front/src/views/content/remote/Home.vue:6 +msgctxt "Content/Library/Title/Noun" +msgid "Remote libraries" +msgstr "" + +#: front/src/views/content/remote/Home.vue:7 +msgctxt "Content/Library/Paragraph" +msgid "Remote libraries are owned by other users on the network. You can access them as long as they are public or you are granted access." +msgstr "" + +#: front/src/components/library/radios/Filter.vue:59 +msgctxt "Content/Radio/Button.Label/Verb" +msgid "Remove" +msgstr "" + +#: front/src/components/auth/Settings.vue:58 +msgctxt "Content/Settings/Button.Label/Verb" +msgid "Remove avatar" +msgstr "" + +#: front/src/components/library/ArtistDetail.vue:12 +msgctxt "Content/Moderation/Button.Label" +msgid "Remove filter" +msgstr "" + +#: front/src/components/favorites/TrackFavoriteIcon.vue:26 +msgctxt "Content/Track/Icon.Tooltip/Verb" +msgid "Remove from favorites" +msgstr "" + +#: front/src/views/content/libraries/Quota.vue:38 +msgctxt "Popup/Library/Paragraph" +msgid "Removes uploaded but yet to be processed tracks completely, adding the corresponding data to your quota." +msgstr "" + +#: front/src/views/content/libraries/Quota.vue:64 +msgctxt "Popup/Library/Paragraph" +msgid "Removes uploaded tracks skipped during the import processes completely, adding the corresponding data to your quota." +msgstr "" + +#: front/src/views/content/libraries/Quota.vue:90 +msgctxt "Popup/Library/Paragraph" +msgid "Removes uploaded tracks that could not be processed by the server completely, adding the corresponding data to your quota." +msgstr "" + +#: front/src/components/auth/SubsonicTokenForm.vue:33 +#: front/src/components/auth/SubsonicTokenForm.vue:36 +msgctxt "*/Settings/Button.Label/Verb" +msgid "Request a new password" +msgstr "" + +#: front/src/components/auth/SubsonicTokenForm.vue:34 +msgctxt "Popup/Settings/Title" +msgid "Request a new Subsonic API password?" +msgstr "" + +#: front/src/components/auth/SubsonicTokenForm.vue:42 +msgctxt "Content/Settings/Button.Label/Verb" +msgid "Request a password" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:64 +msgctxt "Popup/*/Loading.Title" +msgid "Requesting a fetch…" +msgstr "" + +#: front/src/components/library/EditForm.vue:82 +msgctxt "Content/Library/Button.Label" +msgid "Reset to initial value: %{ value }" +msgstr "" + +#: front/src/components/auth/Login.vue:35 src/views/auth/PasswordReset.vue:4 +#: front/src/views/auth/PasswordReset.vue:53 +msgctxt "*/Login/*/Verb" +msgid "Reset your password" +msgstr "" + +#: front/src/views/content/libraries/FilesTable.vue:223 +msgctxt "Content/Library/Dropdown/Verb" +msgid "Restart import" +msgstr "" + +#: front/src/components/favorites/List.vue:39 +#: src/components/library/Albums.vue:30 +#: front/src/components/library/Artists.vue:30 +#: src/components/library/Radios.vue:52 front/src/views/playlists/List.vue:32 +msgctxt "Content/Search/Dropdown.Label/Noun" +msgid "Results per page" +msgstr "" + +#: front/src/components/library/EditForm.vue:31 +msgctxt "Content/Library/Button.Label" +msgid "Retrict to unreviewed edits" +msgstr "" + +#: front/src/views/auth/EmailConfirm.vue:17 +msgctxt "Content/Signup/Link/Verb" +msgid "Return to login" +msgstr "" + +#: front/src/components/library/ArtistDetail.vue:9 +msgctxt "Content/Moderation/Link" +msgid "Review my filters" +msgstr "" + +#: front/src/components/auth/Settings.vue:192 +msgctxt "*/*/*/Verb" +msgid "Revoke" +msgstr "" + +#: front/src/components/auth/Settings.vue:195 +msgctxt "*/Settings/Button.Label/Verb" +msgid "Revoke access" +msgstr "" + +#: front/src/components/auth/Settings.vue:193 +msgctxt "Popup/Settings/Title" +msgid "Revoke access for application \"%{ application }\"?" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyCard.vue:16 +msgctxt "Content/Moderation/Card.Title/Noun" +msgid "Rule" +msgstr "" + +#: front/src/components/admin/SettingsGroup.vue:67 +#: front/src/components/library/radios/Builder.vue:34 +msgctxt "Content/*/Button.Label/Verb" +msgid "Save" +msgstr "" + +#: front/src/views/content/remote/Card.vue:175 +msgctxt "Content/Library/Message" +msgid "Scan launched" +msgstr "" + +#: front/src/views/content/remote/Card.vue:67 +msgctxt "Content/Library/Card.Button.Label/Verb" +msgid "Scan now" +msgstr "" + +#: front/src/views/content/remote/Card.vue:35 +msgctxt "Content/Library/Card.List item" +msgid "Scan pending" +msgstr "" + +#: front/src/views/content/remote/Card.vue:176 +msgctxt "Content/Library/Message" +msgid "Scan skipped (previous scan is too recent)" +msgstr "" + +#: front/src/views/content/remote/Card.vue:47 +msgctxt "Content/Library/Card.List item" +msgid "Scanned" +msgstr "" + +#: front/src/views/content/remote/Card.vue:51 +msgctxt "Content/Library/Card.List item" +msgid "Scanned with errors" +msgstr "" + +#: front/src/views/content/remote/Card.vue:39 +msgctxt "Content/Library/Card.List item" +msgid "Scanning… (%{ progress }%)" +msgstr "" + +#: front/src/components/auth/ApplicationForm.vue:22 +msgctxt "Content/Applications/Input.Label/Noun" +msgid "Scopes" +msgstr "" + +#: front/src/components/auth/Settings.vue:226 +msgctxt "Content/*/*/Noun" +msgid "Scopes" +msgstr "" + +#: front/src/components/library/Albums.vue:10 +#: src/components/library/Artists.vue:10 +#: front/src/components/library/Radios.vue:29 +#: front/src/components/manage/library/AlbumsTable.vue:5 +#: front/src/components/manage/library/ArtistsTable.vue:5 +#: front/src/components/manage/library/EditsCardList.vue:6 +#: front/src/components/manage/library/LibrariesTable.vue:5 +#: front/src/components/manage/library/TracksTable.vue:5 +#: front/src/components/manage/library/UploadsTable.vue:5 +#: front/src/components/manage/moderation/AccountsTable.vue:5 +#: front/src/components/manage/moderation/DomainsTable.vue:5 +#: front/src/components/manage/users/InvitationsTable.vue:5 +#: front/src/components/manage/users/UsersTable.vue:5 +#: front/src/views/content/libraries/FilesTable.vue:5 +#: src/views/playlists/List.vue:13 +msgctxt "Content/Search/Input.Label/Noun" +msgid "Search" +msgstr "" + +#: front/src/views/content/remote/ScanForm.vue:9 +msgctxt "Content/Library/Input.Label/Verb" +msgid "Search a remote library" +msgstr "" + +#: front/src/components/manage/library/EditsCardList.vue:211 +msgctxt "Content/Search/Input.Placeholder" +msgid "Search by account, summary, domain…" +msgstr "" + +#: front/src/components/manage/library/LibrariesTable.vue:191 +msgctxt "Content/Search/Input.Placeholder" +msgid "Search by domain, actor, name, description…" +msgstr "" + +#: front/src/components/manage/library/UploadsTable.vue:241 +msgctxt "Content/Search/Input.Placeholder" +msgid "Search by domain, actor, name, reference, source…" +msgstr "" + +#: front/src/components/manage/library/ArtistsTable.vue:164 +msgctxt "Content/Search/Input.Placeholder" +msgid "Search by domain, name, MusicBrainz ID…" +msgstr "" + +#: front/src/components/manage/library/TracksTable.vue:174 +msgctxt "Content/Search/Input.Placeholder" +msgid "Search by domain, title, artist, album, MusicBrainz ID…" +msgstr "" + +#: front/src/components/manage/library/AlbumsTable.vue:174 +msgctxt "Content/Search/Input.Placeholder" +msgid "Search by domain, title, artist, MusicBrainz ID…" +msgstr "" + +#: front/src/components/manage/moderation/AccountsTable.vue:171 +msgctxt "Content/Search/Input.Placeholder" +msgid "Search by domain, username, bio…" +msgstr "" + +#: front/src/components/manage/moderation/DomainsTable.vue:151 +msgctxt "Content/Search/Input.Placeholder" +msgid "Search by name…" +msgstr "" + +#: front/src/views/content/libraries/FilesTable.vue:208 +msgctxt "Content/Library/Input.Placeholder" +msgid "Search by title, artist, album…" +msgstr "" + +#: front/src/components/manage/users/InvitationsTable.vue:153 +msgctxt "Content/Admin/Input.Placeholder/Verb" +msgid "Search by username, e-mail address, code…" +msgstr "" + +#: front/src/components/manage/users/UsersTable.vue:163 +msgctxt "Content/Search/Input.Placeholder" +msgid "Search by username, e-mail address, name…" +msgstr "" + +#: front/src/components/audio/SearchBar.vue:20 +msgctxt "Sidebar/Search/Input.Placeholder" +msgid "Search for artists, albums, tracks…" +msgstr "" + +#: front/src/components/audio/Search.vue:2 +msgctxt "Content/Search/Title" +msgid "Search for some music" +msgstr "" + +#: front/src/components/library/AlbumBase.vue:57 +#: front/src/components/library/ArtistBase.vue:68 +#: front/src/components/library/TrackBase.vue:76 +msgctxt "Content/*/Button.Label/Verb" +msgid "Search on Wikipedia" +msgstr "" + +#: front/src/components/library/Library.vue:35 +#: src/views/admin/library/Base.vue:32 +#: front/src/views/admin/moderation/Base.vue:22 +#: src/views/admin/users/Base.vue:21 front/src/views/content/Base.vue:19 +msgctxt "Menu/*/Hidden text" +msgid "Secondary menu" +msgstr "" + +#: front/src/views/admin/Settings.vue:15 +msgctxt "Content/Admin/Menu.Title" +msgid "Sections" +msgstr "" + +#: front/src/components/library/radios/Builder.vue:46 +msgctxt "Content/Radio/Dropdown.Placeholder/Verb" +msgid "Select a filter" +msgstr "" + +#: front/src/components/common/ActionTable.vue:79 +msgctxt "Content/*/Link/Verb" +msgid "Select all %{ total } elements" +msgid_plural "Select all %{ total } elements" +msgstr[0] "" +msgstr[1] "" + +#: front/src/components/common/ActionTable.vue:88 +msgctxt "Content/*/Link/Verb" +msgid "Select only current page" +msgstr "" + +#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:108 +#: front/src/components/manage/users/UsersTable.vue:181 +#: front/src/views/admin/moderation/AccountsDetail.vue:506 +msgctxt "*/*/*/Noun" +msgid "Settings" +msgstr "" + +#: front/src/components/auth/Settings.vue:10 +msgctxt "Content/Settings/Message" +msgid "Settings updated" +msgstr "" + +#: front/src/components/admin/SettingsGroup.vue:11 +msgctxt "Content/Settings/Paragraph" +msgid "Settings updated successfully." +msgstr "" + +#: front/src/components/manage/users/InvitationForm.vue:27 +msgctxt "Content/Admin/Table.Label/Noun" +msgid "Share link" +msgstr "" + +#: front/src/views/content/libraries/Detail.vue:15 +msgctxt "Content/Library/Paragraph" +msgid "Share this link with other users so they can request access to your library." +msgstr "" + +#: front/src/views/content/libraries/Detail.vue:14 +#: front/src/views/content/remote/Card.vue:77 +msgctxt "Content/Library/Title" +msgid "Sharing link" +msgstr "" + +#: front/src/components/audio/album/Card.vue:38 +msgctxt "Content/Album/Card.Link/Verb" +msgid "Show %{ count } more track" +msgid_plural "Show %{ count } more tracks" +msgstr[0] "" +msgstr[1] "" + +#: front/src/components/audio/artist/Card.vue:30 +msgctxt "Content/Artist/Card.Link" +msgid "Show 1 more album" +msgid_plural "Show %{ count } more albums" +msgstr[0] "" +msgstr[1] "" + +#: front/src/components/library/EditForm.vue:21 +msgctxt "Content/Library/Button.Label" +msgid "Show all edits" +msgstr "" + +#: front/src/components/ShortcutsModal.vue:42 +msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb" +msgid "Show available keyboard shortcuts" +msgstr "" + +#: front/src/views/Notifications.vue:7 +msgctxt "Content/Notifications/Form.Label/Verb" +msgid "Show read notifications" +msgstr "" + +#: front/src/components/forms/PasswordInput.vue:26 +msgctxt "Content/Settings/Button.Tooltip/Verb" +msgid "Show/hide password" +msgstr "" + +#: front/src/components/manage/library/AlbumsTable.vue:93 +#: front/src/components/manage/library/ArtistsTable.vue:84 +#: front/src/components/manage/library/EditsCardList.vue:72 +#: front/src/components/manage/library/LibrariesTable.vue:110 +#: front/src/components/manage/library/TracksTable.vue:95 +#: front/src/components/manage/library/UploadsTable.vue:144 +#: front/src/components/manage/moderation/AccountsTable.vue:88 +#: front/src/components/manage/moderation/DomainsTable.vue:74 +#: front/src/components/manage/users/InvitationsTable.vue:76 +#: front/src/components/manage/users/UsersTable.vue:87 +#: front/src/views/content/libraries/FilesTable.vue:117 +msgctxt "Content/*/Paragraph" +msgid "Showing results %{ start }-%{ end } on %{ total }" +msgstr "" + +#: front/src/components/ShortcutsModal.vue:83 +msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb" +msgid "Shuffle queue" +msgstr "" + +#: front/src/components/audio/Player.vue:641 +msgctxt "Sidebar/Player/Icon.Tooltip/Verb" +msgid "Shuffle your queue" +msgstr "" + +#: front/src/components/auth/Signup.vue:97 +msgctxt "*/Signup/Title" +msgid "Sign Up" +msgstr "" + +#: front/src/components/manage/users/UsersTable.vue:40 +msgctxt "Content/Admin/Table.Label/Short, Noun (Value is a date)" +msgid "Sign-up" +msgstr "" + +#: front/src/components/mixins/Translations.vue:57 +#: front/src/views/admin/moderation/AccountsDetail.vue:197 +#: front/src/components/mixins/Translations.vue:58 +msgctxt "Content/Admin/Table.Label/Noun" +msgid "Sign-up date" +msgstr "" + +#: front/src/components/manage/library/UploadsTable.vue:65 +#: front/src/views/admin/library/UploadDetail.vue:219 +msgctxt "Content/*/*/Noun" +msgid "Size" +msgstr "" + +#: front/src/components/library/FileUpload.vue:94 +#: front/src/components/library/TrackDetail.vue:39 +#: front/src/components/mixins/Translations.vue:54 +#: front/src/views/content/libraries/FilesTable.vue:61 +#: front/src/components/mixins/Translations.vue:55 +msgctxt "Content/Library/*/in MB" +msgid "Size" +msgstr "" + +#: front/src/components/manage/library/UploadsTable.vue:24 +#: front/src/components/mixins/Translations.vue:24 +#: front/src/views/content/libraries/FilesTable.vue:15 +#: front/src/components/mixins/Translations.vue:25 +msgctxt "Content/Library/*" +msgid "Skipped" +msgstr "" + +#: front/src/views/content/libraries/Quota.vue:49 +msgctxt "Content/Library/Label" +msgid "Skipped files" +msgstr "" + +#: front/src/views/admin/moderation/DomainsDetail.vue:89 +msgctxt "Content/Moderation/Table.Label" +msgid "Software" +msgstr "" + +#: front/src/components/playlists/Editor.vue:21 +msgctxt "Content/Playlist/Paragraph" +msgid "Some tracks in your queue are already in this playlist:" +msgstr "" + +#: front/src/components/PageNotFound.vue:10 +msgctxt "Content/*/Paragraph" +msgid "Sorry, the page you asked for does not exist:" +msgstr "" + +#: front/src/components/Footer.vue:49 +msgctxt "Footer/*/List item.Link" +msgid "Source code" +msgstr "" + +#: front/src/components/auth/Profile.vue:23 +#: front/src/components/manage/users/UsersTable.vue:70 +msgctxt "Content/Profile/User role" +msgid "Staff member" +msgstr "" + +#: front/src/components/audio/PlayButton.vue:23 +#: src/components/radios/Button.vue:4 +msgctxt "*/Queue/Button.Label/Short, Verb" +msgid "Start radio" +msgstr "" + +#: front/src/views/admin/Settings.vue:86 +msgctxt "Content/Admin/Menu" +msgid "Statistics" +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:490 +msgctxt "Content/Moderation/Help text" +msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this account" +msgstr "" + +#: front/src/views/admin/moderation/DomainsDetail.vue:371 +msgctxt "Content/Moderation/Help text" +msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this domain" +msgstr "" + +#: front/src/views/admin/library/AlbumDetail.vue:329 +#: front/src/views/admin/library/ArtistDetail.vue:328 +#: front/src/views/admin/library/LibraryDetail.vue:316 +#: front/src/views/admin/library/TrackDetail.vue:371 +#: front/src/views/admin/library/UploadDetail.vue:335 +msgctxt "Content/Moderation/Help text" +msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object" +msgstr "" + +#: front/src/views/admin/moderation/DomainsDetail.vue:115 +msgctxt "Content/Moderation/Table.Label (Value is Error message)" +msgid "Status" +msgstr "" + +#: front/src/components/library/FileUpload.vue:95 +msgctxt "Content/Library/Table.Label (Value is Uploading/Uploaded/Error)" +msgid "Status" +msgstr "" + +#: front/src/views/content/libraries/Detail.vue:28 +msgctxt "Content/Library.Federation/Table.Label (Value is Approved/Rejected)" +msgid "Status" +msgstr "" + +#: front/src/components/manage/users/InvitationsTable.vue:17 +#: front/src/components/manage/users/InvitationsTable.vue:39 +msgctxt "Content/Admin/*/Noun (Value is Used/Not used)" +msgid "Status" +msgstr "" + +#: front/src/components/manage/users/UsersTable.vue:43 +msgctxt "Content/Admin/Table.Label/Noun (Value is Regular user/Admin)" +msgid "Status" +msgstr "" + +#: front/src/components/manage/library/EditsCardList.vue:12 +msgctxt "Content/Search/Dropdown.Label (Value is All/Pending review/Approved/Rejected)" +msgid "Status" +msgstr "" + +#: front/src/components/Sidebar.vue:174 src/components/radios/Button.vue:3 +msgctxt "*/Player/Button.Label/Short, Verb" +msgid "Stop radio" +msgstr "" + +#: front/src/components/SetInstanceModal.vue:23 +msgctxt "*/*/Button.Label/Verb" +msgid "Submit" +msgstr "" + +#: front/src/components/library/EditForm.vue:98 +msgctxt "Content/Library/Button.Label/Verb" +msgid "Submit and apply edit" +msgstr "" + +#: front/src/components/library/EditForm.vue:7 +msgctxt "Content/Library/Button.Label" +msgid "Submit another edit" +msgstr "" + +#: front/src/components/library/EditForm.vue:99 +msgctxt "Content/Library/Button.Label/Verb" +msgid "Submit suggestion" +msgstr "" + +#: front/src/views/admin/Settings.vue:85 +msgctxt "Content/Admin/Menu" +msgid "Subsonic" +msgstr "" + +#: front/src/components/auth/SubsonicTokenForm.vue:2 +msgctxt "Content/Settings/Title" +msgid "Subsonic API password" +msgstr "" + +#: front/src/components/library/EditForm.vue:38 +msgctxt "Content/Library/Paragraph" +msgid "Suggest a change using the form below." +msgstr "" + +#: front/src/components/library/AlbumEdit.vue:5 +msgctxt "Content/*/Title" +msgid "Suggest an edit on this album" +msgstr "" + +#: front/src/components/library/ArtistEdit.vue:5 +msgctxt "Content/*/Title" +msgid "Suggest an edit on this artist" +msgstr "" + +#: front/src/components/library/TrackEdit.vue:5 +msgctxt "Content/*/Title" +msgid "Suggest an edit on this track" +msgstr "" + +#: front/src/components/SetInstanceModal.vue:31 +msgctxt "Popup/Instance/List.Label" +msgid "Suggested choices" +msgstr "" + +#: front/src/components/library/FileUpload.vue:3 +msgctxt "Content/Library/Tab.Title/Short" +msgid "Summary" +msgstr "" + +#: front/src/components/library/EditForm.vue:87 +msgctxt "*/*/*" +msgid "Summary (optional)" +msgstr "" + +#: front/src/components/Footer.vue:39 +msgctxt "Footer/*/Listitem.Link" +msgid "Support forum" +msgstr "" + +#: front/src/components/library/FileUpload.vue:85 +msgctxt "Content/Library/Paragraph" +msgid "Supported extensions: %{ extensions }" +msgstr "" + +#: front/src/components/playlists/Editor.vue:9 +msgctxt "Content/Playlist/Paragraph" +msgid "Syncing changes to server…" +msgstr "" + +#: front/src/components/audio/EmbedWizard.vue:25 +#: front/src/components/common/CopyInput.vue:3 +msgctxt "Content/*/Paragraph" +msgid "Text copied to clipboard!" +msgstr "" + +#: front/src/components/Home.vue:26 +msgctxt "Content/Home/Paragraph" +msgid "That's simple: we loved Grooveshark and we want to build something even better." +msgstr "" + +#: front/src/views/admin/library/AlbumDetail.vue:75 +msgctxt "Content/Moderation/Paragraph" +msgid "The album will be removed, as well as associated uploads, tracks, favorites and listening history. This action is irreversible." +msgstr "" + +#: front/src/components/auth/Authorize.vue:39 +msgctxt "Content/Auth/Paragraph" +msgid "The application is also requesting the following unknown permissions:" +msgstr "" + +#: front/src/views/admin/library/ArtistDetail.vue:74 +msgctxt "Content/Moderation/Paragraph" +msgid "The artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible." +msgstr "" + +#: front/src/components/Footer.vue:53 +msgctxt "Footer/*/List item.Link" +msgid "The funkwhale logo was kindly designed and provided by Francis Gading." +msgstr "" + +#: front/src/components/SetInstanceModal.vue:8 +msgctxt "Popup/Instance/Error message.List item" +msgid "The given address is not a Funkwhale server" +msgstr "" + +#: front/src/views/content/libraries/Form.vue:34 +msgctxt "Popup/Library/Paragraph" +msgid "The library and all its tracks will be deleted. This can not be undone." +msgstr "" + +#: front/src/views/admin/library/LibraryDetail.vue:61 +msgctxt "Content/Moderation/Paragraph" +msgid "The library will be removed, as well as associated uploads, and follows. This action is irreversible." +msgstr "" + +#: front/src/components/library/ImportStatusModal.vue:140 +msgctxt "Popup/Import/Error.Label" +msgid "The metadata included in the file is invalid or some mandatory fields are missing." +msgstr "" + +#: front/src/components/library/FileUpload.vue:38 +msgctxt "Content/Library/List item" +msgid "The music files you are uploading are tagged properly." +msgstr "" + +#: front/src/components/audio/Player.vue:65 +msgctxt "Sidebar/Player/Error message.Paragraph" +msgid "The next track will play automatically in a few seconds…" +msgstr "" + +#: front/src/components/Home.vue:116 +msgctxt "Content/Home/List item" +msgid "The plaform is free and open-source, you can install it and modify it without worries" +msgstr "" + +#: front/src/components/playlists/Form.vue:14 +msgctxt "Content/Playlist/Error message.Title" +msgid "The playlist could not be created" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:37 +msgctxt "*/*/Error" +msgid "The remote server answered with HTTP %{ status }" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:13 +msgctxt "Popup/*/Message.Content" +msgid "The remote server answered, but returned data was unsupported by Funkwhale." +msgstr "" + +#: front/src/components/federation/FetchButton.vue:44 +msgctxt "*/*/Error" +msgid "The remote server didn't answered fast enough" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:50 +msgctxt "*/*/Error" +msgid "The return server returned invalid JSON or JSON-LD data" +msgstr "" + +#: front/src/components/manage/library/AlbumsTable.vue:189 +msgctxt "Popup/*/Paragraph" +msgid "The selected albums will be removed, as well as associated tracks, uploads, favorites and listening history. This action is irreversible." +msgstr "" + +#: front/src/components/manage/library/ArtistsTable.vue:179 +msgctxt "Popup/*/Paragraph" +msgid "The selected artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible." +msgstr "" + +#: front/src/components/manage/library/LibrariesTable.vue:206 +msgctxt "Popup/*/Paragraph" +msgid "The selected library will be removed, as well as associated uploads and follows. This action is irreversible." +msgstr "" + +#: front/src/components/manage/library/TracksTable.vue:189 +msgctxt "Popup/*/Paragraph" +msgid "The selected tracks will be removed, as well as associated uploads, favorites and listening history. This action is irreversible." +msgstr "" + +#: front/src/components/manage/library/UploadsTable.vue:256 +msgctxt "Popup/*/Paragraph" +msgid "The selected upload will be removed. This action is irreversible." +msgstr "" + +#: front/src/components/SetInstanceModal.vue:7 +msgctxt "Popup/Instance/Error message.List item" +msgid "The server might be down" +msgstr "" + +#: front/src/components/auth/SubsonicTokenForm.vue:4 +msgctxt "Content/Settings/Paragraph" +msgid "The Subsonic API is not available on this Funkwhale instance." +msgstr "" + +#: front/src/components/library/EditCard.vue:96 +msgctxt "Popup/Library/Paragraph" +msgid "The suggestion will be completely removed, this action is irreversible." +msgstr "" + +#: front/src/components/playlists/PlaylistModal.vue:34 +msgctxt "Popup/Playlist/Error message.Title" +msgid "The track can't be added to a playlist" +msgstr "" + +#: front/src/components/audio/Player.vue:62 +msgctxt "Sidebar/Player/Error message.Title" +msgid "The track cannot be loaded" +msgstr "" + +#: front/src/views/admin/library/TrackDetail.vue:74 +msgctxt "Content/Moderation/Paragraph" +msgid "The track will be removed, as well as associated uploads, favorites and listening history. This action is irreversible." +msgstr "" + +#: front/src/views/admin/library/UploadDetail.vue:68 +msgctxt "Content/Moderation/Paragraph" +msgid "The upload will be removed. This action is irreversible." +msgstr "" + +#: front/src/components/library/FileUpload.vue:42 +msgctxt "Content/Library/List item" +msgid "The uploaded music files are in OGG, Flac or MP3 format" +msgstr "" + +#: front/src/views/content/Home.vue:4 +msgctxt "Content/Library/Paragraph" +msgid "There are various ways to grab new content and make it available here." +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyForm.vue:66 +msgctxt "Popup/Moderation/Paragraph" +msgid "This action is irreversible." +msgstr "" + +#: front/src/components/library/AlbumDetail.vue:29 +msgctxt "Content/Album/Paragraph" +msgid "This album is present in the following libraries:" +msgstr "" + +#: front/src/components/library/ArtistDetail.vue:42 +msgctxt "Content/Artist/Paragraph" +msgid "This artist is present in the following libraries:" +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:84 +#: front/src/views/admin/moderation/DomainsDetail.vue:48 +msgctxt "Content/Moderation/Card.Title" +msgid "This domain is subject to specific moderation rules" +msgstr "" + +#: front/src/views/content/Home.vue:9 +msgctxt "Content/Library/Paragraph" +msgid "This instance offers up to %{quota} of storage space for every user." +msgstr "" + +#: front/src/components/auth/Settings.vue:165 +msgctxt "Content/Settings/Paragraph" +msgid "This is the list of applications that have access to your account data." +msgstr "" + +#: front/src/components/auth/Settings.vue:218 +msgctxt "Content/Settings/Paragraph" +msgid "This is the list of applications that you have created." +msgstr "" + +#: front/src/components/auth/Profile.vue:16 +msgctxt "Content/Profile/Button.Paragraph" +msgid "This is you!" +msgstr "" + +#: front/src/views/content/libraries/Form.vue:73 +msgctxt "Content/Library/Input.Placeholder" +msgid "This library contains my personal music, I hope you like it." +msgstr "" + +#: front/src/views/content/remote/Card.vue:141 +msgctxt "Content/Library/Card.Help text" +msgid "This library is private and your approval from its owner is needed to access its content" +msgstr "" + +#: front/src/views/content/remote/Card.vue:142 +msgctxt "Content/Library/Card.Help text" +msgid "This library is public and you can access its content freely" +msgstr "" + +#: front/src/components/common/ActionTable.vue:47 +msgctxt "Modal/*/Paragraph" +msgid "This may affect a lot of elements or have irreversible consequences, please double check this is really what you want." +msgstr "" + +#: front/src/components/library/AlbumEdit.vue:8 +#: front/src/components/library/ArtistEdit.vue:8 +#: front/src/components/library/TrackEdit.vue:8 +msgctxt "Content/*/Message" +msgid "This object is managed by another server, you cannot edit it." +msgstr "" + +#: front/src/components/library/FileUpload.vue:51 +msgctxt "Content/Library/Paragraph" +msgid "This reference will be used to group imported files together." +msgstr "" + +#: front/src/components/mixins/Translations.vue:33 +#: front/src/components/mixins/Translations.vue:34 +msgctxt "Content/Library/Help text" +msgid "This track could not be processed, please it is tagged correctly" +msgstr "" + +#: front/src/components/mixins/Translations.vue:29 +#: front/src/components/mixins/Translations.vue:30 +msgctxt "Content/Library/Help text" +msgid "This track has been uploaded, but hasn't been processed by the server yet" +msgstr "" + +#: front/src/components/mixins/Translations.vue:25 +#: front/src/components/mixins/Translations.vue:26 +msgctxt "Content/Library/Help text" +msgid "This track is already present in one of your libraries" +msgstr "" + +#: front/src/components/audio/PlayButton.vue:85 +msgctxt "*/Queue/Button/Title" +msgid "This track is not available in any library you have access to" +msgstr "" + +#: front/src/components/library/TrackDetail.vue:82 +msgctxt "Content/Track/Paragraph" +msgid "This track is present in the following libraries:" +msgstr "" + +#: front/src/views/playlists/Detail.vue:38 +msgctxt "Popup/Playlist/Paragraph" +msgid "This will completely delete this playlist and cannot be undone." +msgstr "" + +#: front/src/views/radios/Detail.vue:27 +msgctxt "Popup/Radio/Paragraph" +msgid "This will completely delete this radio and cannot be undone." +msgstr "" + +#: front/src/components/auth/SubsonicTokenForm.vue:50 +msgctxt "Popup/Settings/Paragraph" +msgid "This will completely disable access to the Subsonic API using from account." +msgstr "" + +#: front/src/components/auth/SubsonicTokenForm.vue:35 +msgctxt "Popup/Settings/Paragraph" +msgid "This will log you out from existing devices that use the current password." +msgstr "" + +#: front/src/components/auth/Settings.vue:253 +msgctxt "Popup/Settings/Paragraph" +msgid "This will permanently delete the application and all the associated tokens." +msgstr "" + +#: front/src/components/auth/Settings.vue:194 +msgctxt "Popup/Settings/Paragraph" +msgid "This will prevent this application from accessing the service on your behalf." +msgstr "" + +#: front/src/components/playlists/Editor.vue:54 +msgctxt "Popup/Playlist/Paragraph" +msgid "This will remove all tracks from this playlist and cannot be undone." +msgstr "" + +#: front/src/views/admin/library/AlbumDetail.vue:99 +#: front/src/views/admin/library/TrackDetail.vue:98 src/edits.js:21 +#: src/edits.js:39 +msgctxt "*/*/*/Noun" +msgid "Title" +msgstr "" + +#: front/src/components/audio/track/Table.vue:7 +#: front/src/views/content/libraries/FilesTable.vue:55 +msgctxt "Content/Track/*/Noun" +msgid "Title" +msgstr "" + +#: front/src/components/manage/library/AlbumsTable.vue:39 +#: front/src/components/manage/library/TracksTable.vue:39 +msgctxt "*/*/*" +msgid "Title" +msgstr "" + +#: front/src/components/SetInstanceModal.vue:16 +msgctxt "Popup/Instance/Paragraph" +msgid "To continue, please select the Funkwhale instance you want to connect to. Enter the address directly, or select one of the suggested choices." +msgstr "" + +#: front/src/components/ShortcutsModal.vue:79 +msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb" +msgid "Toggle queue looping" +msgstr "" + +#: front/src/views/admin/library/AlbumDetail.vue:222 +#: front/src/views/admin/library/ArtistDetail.vue:211 +#: front/src/views/admin/library/LibraryDetail.vue:200 +#: front/src/views/admin/library/TrackDetail.vue:274 +#: front/src/views/admin/moderation/AccountsDetail.vue:317 +#: front/src/views/admin/moderation/DomainsDetail.vue:225 +msgctxt "Content/Moderation/Table.Label" +msgid "Total size" +msgstr "" + +#: front/src/views/content/libraries/Card.vue:68 +msgctxt "Content/Library/Card.Help text" +msgid "Total size of the files in this library" +msgstr "" + +#: front/src/views/admin/moderation/DomainsDetail.vue:105 +msgctxt "Content/*/*" +msgid "Total users" +msgstr "" + +#: front/src/views/admin/library/UploadDetail.vue:199 +msgctxt "*/*/*" +msgid "Track" +msgstr "" + +#: front/src/components/audio/SearchBar.vue:27 +#: front/src/components/library/TrackBase.vue:173 +#: front/src/components/library/TrackDetail.vue:128 +#: front/src/components/metadata/Search.vue:138 +msgctxt "*/*/*/Noun" +msgid "Track" +msgstr "" + +#: front/src/components/library/EditCard.vue:13 +msgctxt "Content/Library/Card/Short" +msgid "Track #%{ id } - %{ name }" +msgstr "" + +#: front/src/views/admin/library/TrackDetail.vue:91 +msgctxt "Content/Moderation/Title" +msgid "Track data" +msgstr "" + +#: front/src/components/library/TrackDetail.vue:4 +msgctxt "Content/Track/Title/Noun" +msgid "Track information" +msgstr "" + +#: front/src/components/mixins/Translations.vue:50 +#: front/src/components/mixins/Translations.vue:51 +msgctxt "Content/*/Dropdown/Noun" +msgid "Track name" +msgstr "" + +#: front/src/components/instance/Stats.vue:54 +#: front/src/components/library/AlbumDetail.vue:19 +#: front/src/components/playlists/PlaylistModal.vue:47 +#: front/src/views/admin/moderation/AccountsDetail.vue:362 +#: front/src/views/admin/moderation/DomainsDetail.vue:274 +#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8 +#: front/src/views/playlists/Detail.vue:51 src/views/radios/Detail.vue:34 +msgctxt "*/*/*/Noun" +msgid "Tracks" +msgstr "" + +#: front/src/components/manage/library/AlbumsTable.vue:42 +#: front/src/components/manage/library/ArtistsTable.vue:42 +#: front/src/views/admin/library/AlbumDetail.vue:252 +#: front/src/views/admin/library/ArtistDetail.vue:251 +#: front/src/views/admin/library/Base.vue:14 +#: front/src/views/admin/library/LibraryDetail.vue:229 +#: front/src/views/admin/library/TracksList.vue:24 +msgctxt "*/*/*" +msgid "Tracks" +msgstr "" + +#: front/src/components/library/ArtistDetail.vue:33 +msgctxt "Content/Artist/Title" +msgid "Tracks by this artist" +msgstr "" + +#: front/src/components/instance/Stats.vue:25 +msgctxt "Content/About/Paragraph/Unit" +msgid "Tracks favorited" +msgstr "" + +#: front/src/components/instance/Stats.vue:19 +msgctxt "Content/About/Paragraph/Unit" +msgid "tracks listened" +msgstr "" + +#: front/src/components/library/radios/Filter.vue:44 +msgctxt "Popup/Radio/Title/Noun" +msgid "Tracks matching filter" +msgstr "" + +#: front/src/components/library/TrackDetail.vue:57 +#: front/src/views/admin/library/UploadDetail.vue:250 +msgctxt "Content/Track/Table.Label/Noun" +msgid "Type" +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:180 +msgctxt "Content/Moderation/Table.Label/Noun" +msgid "Type" +msgstr "" + +#: front/src/components/manage/moderation/AccountsTable.vue:44 +#: front/src/components/manage/moderation/DomainsTable.vue:42 +msgctxt "Content/Moderation/Table.Label/Short" +msgid "Under moderation rule" +msgstr "" + +#: front/src/views/content/remote/Card.vue:109 +#: src/views/content/remote/Card.vue:114 +msgctxt "*/Library/Button.Label/Verb" +msgid "Unfollow" +msgstr "" + +#: front/src/views/content/remote/Card.vue:110 +msgctxt "Popup/Library/Title" +msgid "Unfollow this library?" +msgstr "" + +#: front/src/components/About.vue:17 +msgctxt "Content/About/Paragraph" +msgid "Unfortunately, the owners of this instance did not yet take the time to complete this page." +msgstr "" + +#: front/src/components/federation/FetchButton.vue:54 +#: front/src/components/federation/FetchButton.vue:55 +msgctxt "*/*/Error" +msgid "Unknowkn error" +msgstr "" + +#: front/src/components/library/ImportStatusModal.vue:144 +msgctxt "Popup/Import/Error.Label" +msgid "Unkwown error" +msgstr "" + +#: front/src/components/Home.vue:37 +msgctxt "Content/Home/Title" +msgid "Unlimited music" +msgstr "" + +#: front/src/components/audio/Player.vue:630 +msgctxt "Sidebar/Player/Icon.Tooltip/Verb" +msgid "Unmute" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyForm.vue:57 +msgctxt "Content/Moderation/Card.Button.Label/Verb" +msgid "Update" +msgstr "" + +#: front/src/components/auth/ApplicationForm.vue:64 +msgctxt "Content/Applications/Button.Label/Verb" +msgid "Update application" +msgstr "" + +#: front/src/components/auth/Settings.vue:50 +msgctxt "Content/Settings/Button.Label/Verb" +msgid "Update avatar" +msgstr "" + +#: front/src/views/content/libraries/Form.vue:25 +msgctxt "Content/Library/Button.Label/Verb" +msgid "Update library" +msgstr "" + +#: front/src/components/playlists/Form.vue:33 +msgctxt "Content/Playlist/Button.Label/Verb" +msgid "Update playlist" +msgstr "" + +#: front/src/components/auth/Settings.vue:27 +msgctxt "Content/Settings/Button.Label/Verb" +msgid "Update settings" +msgstr "" + +#: front/src/views/auth/PasswordResetConfirm.vue:21 +msgctxt "Content/Signup/Button.Label" +msgid "Update your password" +msgstr "" + +#: front/src/views/content/libraries/Card.vue:45 +#: front/src/views/content/libraries/DetailArea.vue:24 +msgctxt "Content/Library/Card.Button.Label/Verb" +msgid "Upload" +msgstr "" + +#: front/src/components/auth/Settings.vue:45 +msgctxt "Content/Settings/Title/Verb" +msgid "Upload a new avatar" +msgstr "" + +#: front/src/views/content/Home.vue:6 +msgctxt "Content/Library/Title/Verb" +msgid "Upload audio content" +msgstr "" + +#: front/src/views/admin/library/UploadDetail.vue:85 +msgctxt "Content/Moderation/Title" +msgid "Upload data" +msgstr "" + +#: front/src/views/content/libraries/FilesTable.vue:58 +msgctxt "*/*/*/Noun" +msgid "Upload date" +msgstr "" + +#: front/src/components/library/FileUpload.vue:258 +msgctxt "Content/Library/Help text" +msgid "Upload denied, ensure the file is not too big and that you have not reached your quota" +msgstr "" + +#: front/src/components/library/ImportStatusModal.vue:8 +msgctxt "Popup/Import/Message" +msgid "Upload is still pending and will soon be processed by the server." +msgstr "" + +#: front/src/views/content/Home.vue:7 +msgctxt "Content/Library/Paragraph" +msgid "Upload music files (MP3, OGG, FLAC, etc.) from your personal library directly from your browser to enjoy them here." +msgstr "" + +#: front/src/components/library/FileUpload.vue:30 +msgctxt "Content/Library/Title/Verb" +msgid "Upload new tracks" +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:298 +msgctxt "Content/Moderation/Table.Label/Noun" +msgid "Upload quota" +msgstr "" + +#: front/src/components/library/FileUpload.vue:267 +msgctxt "Content/Library/Help text" +msgid "Upload timeout, please try again" +msgstr "" + +#: front/src/components/library/ImportStatusModal.vue:14 +msgctxt "Popup/Import/Message" +msgid "Upload was skipped because a similar one is already available in one of your libraries." +msgstr "" + +#: front/src/components/library/ImportStatusModal.vue:11 +msgctxt "Popup/Import/Message" +msgid "Upload was successfully processed by the server." +msgstr "" + +#: front/src/components/library/FileUpload.vue:109 +msgctxt "Content/Library/Table" +msgid "Uploaded" +msgstr "" + +#: front/src/components/library/FileUpload.vue:5 +msgctxt "Content/Library/Tab.Title/Short" +msgid "Uploading" +msgstr "" + +#: front/src/components/library/FileUpload.vue:112 +msgctxt "Content/Library/Table" +msgid "Uploading…" +msgstr "" + +#: front/src/views/admin/library/Base.vue:20 +#: front/src/views/admin/library/UploadsList.vue:24 +msgctxt "*/*/*" +msgid "Uploads" +msgstr "" + +#: front/src/components/manage/moderation/AccountsTable.vue:41 +#: front/src/components/mixins/Translations.vue:63 +#: front/src/views/admin/library/AlbumDetail.vue:242 +#: front/src/views/admin/library/ArtistDetail.vue:231 +#: front/src/views/admin/library/LibraryDetail.vue:239 +#: front/src/views/admin/library/TrackDetail.vue:294 +#: front/src/views/admin/moderation/AccountsDetail.vue:337 +#: front/src/views/admin/moderation/DomainsDetail.vue:244 +#: front/src/components/mixins/Translations.vue:64 +msgctxt "Content/Moderation/Table.Label/Noun" +msgid "Uploads" +msgstr "" + +#: front/src/components/manage/library/LibrariesTable.vue:52 +msgctxt "Content/*/*/Noun" +msgid "Uploads" +msgstr "" + +#: front/src/components/auth/ApplicationForm.vue:16 +msgctxt "Content/Applications/Help Text" +msgid "Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is not served on the web." +msgstr "" + +#: front/src/components/Footer.vue:16 +msgctxt "Footer/*/List item.Link" +msgid "Use another instance" +msgstr "" + +#: front/src/views/auth/PasswordReset.vue:12 +msgctxt "Content/Signup/Paragraph" +msgid "Use this form to request a password reset. We will send an email to the given address with instructions to reset your password." +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyForm.vue:111 +msgctxt "Content/Moderation/Help text" +msgid "Use this setting to temporarily enable/disable the policy without completely removing it." +msgstr "" + +#: front/src/components/manage/users/InvitationsTable.vue:49 +msgctxt "Content/Admin/Table" +msgid "Used" +msgstr "" + +#: front/src/views/content/libraries/Detail.vue:26 +msgctxt "Content/Library/Table.Label" +msgid "User" +msgstr "" + +#: front/src/components/instance/Stats.vue:5 +msgctxt "Content/About/Title/Noun" +msgid "User activity" +msgstr "" + +#: front/src/components/library/AlbumDetail.vue:26 +#: front/src/components/library/ArtistDetail.vue:39 +#: front/src/components/library/TrackDetail.vue:79 +msgctxt "Content/*/Title/Noun" +msgid "User libraries" +msgstr "" + +#: front/src/components/library/Radios.vue:20 +msgctxt "Content/Radio/Title" +msgid "User radios" +msgstr "" + +#: front/src/components/auth/Signup.vue:19 +#: front/src/components/manage/users/UsersTable.vue:37 +#: front/src/components/mixins/Translations.vue:59 +#: front/src/views/admin/moderation/AccountsDetail.vue:114 +#: front/src/components/mixins/Translations.vue:60 +msgctxt "Content/*/*" +msgid "Username" +msgstr "" + +#: front/src/components/auth/Login.vue:15 +msgctxt "Content/Login/Input.Label/Noun" +msgid "Username or email" +msgstr "" + +#: front/src/components/instance/Stats.vue:13 +msgctxt "Content/About/Paragraph/Unit" +msgid "users" +msgstr "" + +#: front/src/components/Sidebar.vue:102 +#: front/src/components/manage/moderation/DomainsTable.vue:39 +#: front/src/components/mixins/Translations.vue:61 +#: src/views/admin/Settings.vue:81 front/src/views/admin/users/Base.vue:5 +#: src/views/admin/users/UsersList.vue:21 +#: front/src/components/mixins/Translations.vue:62 +msgctxt "*/*/*/Noun" +msgid "Users" +msgstr "" + +#: front/src/components/Footer.vue:29 +msgctxt "Footer/*/Title" +msgid "Using Funkwhale" +msgstr "" + +#: front/src/components/Footer.vue:13 +msgctxt "Footer/*/List item" +msgid "Version %{version}" +msgstr "" + +#: front/src/views/content/libraries/Quota.vue:29 +#: front/src/views/content/libraries/Quota.vue:56 +#: front/src/views/content/libraries/Quota.vue:82 +msgctxt "Content/Library/Link/Verb" +msgid "View files" +msgstr "" + +#: front/src/components/library/AlbumBase.vue:81 +#: front/src/components/library/ArtistBase.vue:92 +#: front/src/components/library/TrackBase.vue:100 +#: front/src/views/admin/library/AlbumDetail.vue:42 +#: front/src/views/admin/library/ArtistDetail.vue:41 +#: front/src/views/admin/library/LibraryDetail.vue:34 +#: front/src/views/admin/library/LibraryDetail.vue:45 +#: front/src/views/admin/library/TrackDetail.vue:41 +#: front/src/views/admin/library/UploadDetail.vue:35 +#: front/src/views/admin/library/UploadDetail.vue:46 +#: front/src/views/admin/moderation/AccountsDetail.vue:37 +#: front/src/views/admin/moderation/AccountsDetail.vue:45 +msgctxt "Content/Moderation/Link/Verb" +msgid "View in Django's admin" +msgstr "" + +#: front/src/components/library/AlbumBase.vue:61 +#: front/src/components/library/ArtistBase.vue:72 +#: front/src/components/library/TrackBase.vue:80 +#: front/src/components/metadata/ArtistCard.vue:49 +#: front/src/components/metadata/ReleaseCard.vue:53 +msgctxt "Content/*/*/Clickable, Verb" +msgid "View on MusicBrainz" +msgstr "" + +#: front/src/components/manage/library/LibrariesTable.vue:11 +#: front/src/components/manage/library/LibrariesTable.vue:51 +#: front/src/components/manage/library/UploadsTable.vue:11 +#: front/src/components/manage/library/UploadsTable.vue:63 +#: front/src/views/admin/library/LibraryDetail.vue:94 +#: front/src/views/admin/library/UploadDetail.vue:101 +msgctxt "*/*/*" +msgid "Visibility" +msgstr "" + +#: front/src/views/content/libraries/Form.vue:18 +msgctxt "Content/Library/Dropdown.Label" +msgid "Visibility" +msgstr "" + +#: front/src/components/library/AlbumDetail.vue:4 +msgctxt "Content/Album/" +msgid "Volume %{ number }" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:69 +msgctxt "Popup/*/Loading.Title" +msgid "Waiting for result…" +msgstr "" + +#: front/src/components/auth/Login.vue:7 +msgctxt "Content/Login/Error message.Title" +msgid "We cannot log you in" +msgstr "" + +#: front/src/components/auth/ApplicationForm.vue:3 +msgctxt "Content/*/Error message.Title" +msgid "We cannot save your changes" +msgstr "" + +#: front/src/components/Home.vue:122 +msgctxt "Content/Home/List item" +msgid "We do not track you or bother you with ads" +msgstr "" + +#: front/src/components/library/FileUpload.vue:39 +msgctxt "Content/Library/Link" +msgid "We recommend using Picard for that purpose." +msgstr "" + +#: front/src/components/Home.vue:7 +msgctxt "Content/Home/Title" +msgid "We think listening to music should be simple." +msgstr "" + +#: front/src/components/Home.vue:148 +msgctxt "Head/Home/Title" +msgid "Welcome" +msgstr "" + +#: front/src/components/Home.vue:5 +msgctxt "Content/Home/Title/Verb" +msgid "Welcome on Funkwhale" +msgstr "" + +#: front/src/components/Home.vue:24 +msgctxt "Content/Home/Title" +msgid "Why funkwhale?" +msgstr "" + +#: front/src/components/audio/EmbedWizard.vue:13 +msgctxt "Popup/Embed/Input.Label" +msgid "Widget height" +msgstr "" + +#: front/src/components/audio/EmbedWizard.vue:6 +msgctxt "Popup/Embed/Input.Label" +msgid "Widget width" +msgstr "" + +#: front/src/components/auth/ApplicationForm.vue:157 +msgctxt "Content/OAuth Scopes/Label/Verb" +msgid "Write" +msgstr "" + +#: front/src/components/auth/Authorize.vue:21 +msgctxt "Content/Auth/Label/Noun" +msgid "Write-only" +msgstr "" + +#: front/src/components/auth/ApplicationForm.vue:158 +msgctxt "Content/OAuth Scopes/Help Text" +msgid "Write-only access to user data" +msgstr "" + +#: front/src/components/Sidebar.vue:129 +#: front/src/components/manage/moderation/AccountsTable.vue:72 +#: front/src/components/manage/moderation/DomainsTable.vue:58 +msgctxt "*/*/*" +msgid "Yes" +msgstr "" + +#: front/src/components/auth/Logout.vue:8 +msgctxt "Content/Login/Button.Label" +msgid "Yes, log me out!" +msgstr "" + +#: front/src/views/content/libraries/Form.vue:19 +msgctxt "Content/Library/Paragraph" +msgid "You are able to share your library with other people, regardless of its visibility." +msgstr "" + +#: front/src/components/library/FileUpload.vue:32 +msgctxt "Content/Library/Paragraph" +msgid "You are about to upload music to your library. Before proceeding, please ensure that:" +msgstr "" + +#: front/src/components/SetInstanceModal.vue:12 +msgctxt "Popup/Login/Paragraph" +msgid "You are currently connected to %{ hostname } . If you continue, you will be disconnected from your current instance and all your local data will be deleted." +msgstr "" + +#: front/src/components/library/ArtistDetail.vue:6 +msgctxt "Content/Artist/Paragraph" +msgid "You are currently hiding content related to this artist." +msgstr "" + +#: front/src/components/auth/Logout.vue:7 +msgctxt "Content/Login/Paragraph" +msgid "You are currently logged in as %{ username }" +msgstr "" + +#: front/src/components/library/FileUpload.vue:35 +msgctxt "Content/Library/List item" +msgid "You are not uploading copyrighted content in a public library, otherwise you may be infringing the law" +msgstr "" + +#: front/src/components/SetInstanceModal.vue:98 +msgctxt "*/Instance/Message" +msgid "You are now using the Funkwhale instance at %{ url }" +msgstr "" + +#: front/src/views/content/Home.vue:17 +msgctxt "Content/Library/Paragraph" +msgid "You can follow libraries from other users to get access to new music. Public libraries can be followed immediatly, while following a private library requires approval from its owner." +msgstr "" + +#: front/src/components/Home.vue:128 +msgctxt "Content/Home/List item" +msgid "You can invite friends and family to your instance so they can enjoy your music" +msgstr "" + +#: front/src/components/moderation/FilterModal.vue:31 +msgctxt "Popup/Moderation/Paragraph" +msgid "You can manage and update your filters anytime from your account settings." +msgstr "" + +#: front/src/views/auth/EmailConfirm.vue:24 +msgctxt "Content/Signup/Paragraph" +msgid "You can now use the service without limitations." +msgstr "" + +#: front/src/components/library/radios/Builder.vue:7 +msgctxt "Content/Radio/Paragraph" +msgid "You can use this interface to build your own custom radio, which will play tracks according to your criteria." +msgstr "" + +#: front/src/components/auth/SubsonicTokenForm.vue:7 +msgctxt "Content/Settings/Paragraph" +msgid "You can use those to enjoy your playlist and music in offline mode, on your smartphone or tablet, for instance." +msgstr "" + +#: front/src/components/auth/Settings.vue:202 +msgctxt "Content/Applications/Paragraph" +msgid "You don't have any application connected with your account." +msgstr "" + +#: front/src/components/auth/Settings.vue:261 +msgctxt "Content/Applications/Paragraph" +msgid "You don't have any configured application yet." +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:75 +msgctxt "Content/Moderation/Card.Title" +msgid "You don't have any rule in place for this account." +msgstr "" + +#: front/src/views/admin/moderation/DomainsDetail.vue:39 +msgctxt "Content/Moderation/Card.Title" +msgid "You don't have any rule in place for this domain." +msgstr "" + +#: front/src/components/library/EditForm.vue:52 +msgctxt "Content/Library/Paragraph" +msgid "You don't have the permission to edit this object, but you can suggest changes. Once submitted, suggestions will be reviewed before approval." +msgstr "" + +#: front/src/components/Sidebar.vue:171 +msgctxt "Sidebar/Player/Title" +msgid "You have a radio playing" +msgstr "" + +#: front/src/components/audio/Player.vue:69 +msgctxt "Sidebar/Player/Error message.Paragraph" +msgid "You may have a connectivity issue." +msgstr "" + +#: front/src/components/auth/Settings.vue:100 +msgctxt "Popup/Settings/List item" +msgid "You will be logged out from this session and have to log in with the new one" +msgstr "" + +#: front/src/components/auth/Authorize.vue:51 +msgctxt "Content/Auth/Paragraph" +msgid "You will be redirected to %{ url }" +msgstr "" + +#: front/src/components/auth/Authorize.vue:49 +msgctxt "Content/Auth/Paragraph" +msgid "You will be shown a code to copy-paste in the application." +msgstr "" + +#: front/src/components/auth/Settings.vue:71 +msgctxt "Content/Settings/Paragraph" +msgid "You will have to update your password on your clients that use this password." +msgstr "" + +#: front/src/components/moderation/FilterModal.vue:20 +msgctxt "Popup/Moderation/Paragraph" +msgid "You will not see tracks, albums and user activity linked to this artist anymore:" +msgstr "" + +#: front/src/components/auth/Signup.vue:13 +msgctxt "Content/Signup/Form/Paragraph" +msgid "Your account cannot be created." +msgstr "" + +#: front/src/components/auth/Settings.vue:215 +msgctxt "Content/Settings/Title/Noun" +msgid "Your applications" +msgstr "" + +#: front/src/components/auth/Settings.vue:38 +msgctxt "Content/Settings/Error message.Title" +msgid "Your avatar cannot be saved" +msgstr "" + +#: front/src/components/library/EditForm.vue:3 +msgctxt "Content/Library/Paragraph" +msgid "Your edit was successfully submitted." +msgstr "" + +#: front/src/components/favorites/List.vue:116 +msgctxt "Head/Favorites/Title" +msgid "Your Favorites" +msgstr "" + +#: front/src/components/Home.vue:109 +msgctxt "Content/Home/Title" +msgid "Your music, your way" +msgstr "" + +#: front/src/views/Notifications.vue:4 +msgctxt "Content/Notifications/Title" +msgid "Your notifications" +msgstr "" + +#: front/src/components/auth/Settings.vue:76 +msgctxt "Content/Settings/Error message.Title" +msgid "Your password cannot be changed" +msgstr "" + +#: front/src/views/auth/PasswordResetConfirm.vue:29 +msgctxt "Content/Signup/Card.Paragraph" +msgid "Your password has been updated successfully." +msgstr "" + +#: front/src/components/auth/Settings.vue:14 +msgctxt "Content/Settings/Error message.Title" +msgid "Your settings can't be updateds" +msgstr "" + +#: front/src/components/auth/Settings.vue:101 +msgctxt "Popup/Settings/List item" +msgid "Your Subsonic password will be changed to a new, random one, logging you out from devices that used the old Subsonic password" +msgstr "" + +#: front/src/edits.js:47 +msgctxt "*/*/*/Short, Noun" +msgid "Position" +msgstr "" + +#: front/src/edits.js:54 +msgctxt "Content/Track/*/Noun" +msgid "Copyright" +msgstr "" + +#: front/src/components/library/AlbumBase.vue:183 +msgctxt "Content/Album/Header.Title" +msgid "Album containing %{ count } track, by %{ artist }" +msgid_plural "Album containing %{ count } tracks, by %{ artist }" +msgstr[0] "" +msgstr[1] "" + +#: front/src/components/audio/PlayButton.vue:220 +msgctxt "*/Queue/Message" +msgid "%{ count } track was added to your queue" +msgid_plural "%{ count } tracks were added to your queue" +msgstr[0] "" +msgstr[1] "" diff --git a/front/locales/cs/LC_MESSAGES/app.po b/front/locales/cs/LC_MESSAGES/app.po new file mode 100644 index 000000000..eedb601c5 --- /dev/null +++ b/front/locales/cs/LC_MESSAGES/app.po @@ -0,0 +1,5018 @@ +# Czech translations for front package. +# Copyright (C) 2019 THE front'S COPYRIGHT HOLDER +# This file is distributed under the same license as the front package. +# Automatically generated, 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: front 0.1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-16 10:35+0200\n" +"PO-Revision-Date: 2019-05-16 10:35+0200\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: front/src/components/playlists/PlaylistModal.vue:9 +msgctxt "Popup/Playlist/Paragraph" +msgid "\"%{ title }\", by %{ artist }" +msgstr "" + +#: front/src/components/Sidebar.vue:24 +msgctxt "Sidebar/Queue/Tab.Title" +msgid "(%{ index } of %{ length })" +msgstr "" + +#: front/src/components/Sidebar.vue:22 +msgctxt "Sidebar/Queue/Tab.Title" +msgid "(empty)" +msgstr "" + +#: front/src/components/auth/Authorize.vue:16 +msgctxt "Content/Auth/Title" +msgid "%{ app } wants to access your Funkwhale account" +msgstr "" + +#: front/src/components/common/ActionTable.vue:68 +msgctxt "Content/*/Paragraph" +msgid "%{ count } on %{ total } selected" +msgid_plural "%{ count } on %{ total } selected" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: front/src/components/Sidebar.vue:121 src/components/audio/album/Card.vue:52 +#: front/src/views/content/libraries/Card.vue:40 +#: src/views/content/remote/Card.vue:30 +msgctxt "*/*/*" +msgid "%{ count } track" +msgid_plural "%{ count } tracks" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: front/src/components/library/ArtistBase.vue:13 +msgctxt "Content/Artist/Paragraph" +msgid "%{ count } track in %{ albumsCount } albums" +msgid_plural "%{ count } tracks in %{ albumsCount } albums" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: front/src/components/library/radios/Builder.vue:81 +msgctxt "Content/Radio/Table.Paragraph/Short" +msgid "%{ count } track matching combined filters" +msgid_plural "%{ count } tracks matching combined filters" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: front/src/components/playlists/Card.vue:18 +msgctxt "Content/*/Card/List item" +msgid "%{ count} track" +msgid_plural "%{ count } tracks" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: front/src/views/content/libraries/Quota.vue:11 +msgctxt "Content/Library/Paragraph" +msgid "%{ current } used on %{ max } allowed" +msgstr "" + +#: front/src/components/common/Duration.vue:2 +msgctxt "Content/*/Paragraph" +msgid "%{ hours } h %{ minutes } min" +msgstr "" + +#: front/src/components/common/Duration.vue:5 +msgctxt "Content/*/Paragraph" +msgid "%{ minutes } min" +msgstr "" + +#: front/src/components/notifications/NotificationRow.vue:40 +msgctxt "Content/Notifications/Paragraph" +msgid "%{ username } accepted your follow on library \"%{ library }\"" +msgstr "" + +#: front/src/components/notifications/NotificationRow.vue:39 +msgctxt "Content/Notifications/Paragraph" +msgid "%{ username } followed your library \"%{ library }\"" +msgstr "" + +#: front/src/components/notifications/NotificationRow.vue:41 +msgctxt "Content/Notifications/Paragraph" +msgid "%{ username } wants to follow your library \"%{ library }\"" +msgstr "" + +#: front/src/components/auth/Profile.vue:46 +msgctxt "Head/Profile/Title" +msgid "%{ username }'s profile" +msgstr "" + +#: front/src/components/playlists/PlaylistModal.vue:21 +msgctxt "Popup/Playlist/Paragraph" +msgid "%{ track } is already in %{ playlist }." +msgstr "" + +#: front/src/components/audio/artist/Card.vue:41 +msgctxt "Content/Artist/Card" +msgid "1 album" +msgid_plural "%{ count } albums" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: front/src/components/favorites/List.vue:10 +msgctxt "Content/Favorites/Title" +msgid "1 favorite" +msgid_plural "%{ count } favorites" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: front/src/components/Home.vue:64 +msgctxt "Content/Home/Title" +msgid "A clean library" +msgstr "" + +#: front/src/components/library/FileUpload.vue:264 +msgctxt "Content/Library/Help text" +msgid "A network error occured while uploading this file" +msgstr "" + +#: front/src/components/library/EditForm.vue:145 +msgctxt "*/*/Placeholder" +msgid "A short summary describing your changes." +msgstr "" + +#: front/src/components/About.vue:5 +msgctxt "Content/About/Title/Short, Noun" +msgid "About %{ instance }" +msgstr "" + +#: front/src/components/Footer.vue:6 +msgctxt "Footer/About/Title" +msgid "About %{instanceName}" +msgstr "" + +#: front/src/components/Footer.vue:45 +msgctxt "Footer/*/Title/Short" +msgid "About Funkwhale" +msgstr "" + +#: front/src/components/Footer.vue:10 +msgctxt "Footer/About/List item.Link" +msgid "About page" +msgstr "" + +#: front/src/components/About.vue:8 src/components/About.vue:67 +msgctxt "Content/About/Title" +msgid "About this instance" +msgstr "" + +#: front/src/views/content/libraries/Detail.vue:48 +msgctxt "Content/Library/Button.Label" +msgid "Accept" +msgstr "" + +#: front/src/views/content/libraries/Detail.vue:40 +msgctxt "Content/Library/Table/Short" +msgid "Accepted" +msgstr "" + +#: front/src/components/auth/SubsonicTokenForm.vue:110 +msgctxt "Content/Settings/Message" +msgid "Access disabled" +msgstr "" + +#: front/src/components/mixins/Translations.vue:73 +#: front/src/components/mixins/Translations.vue:74 +msgctxt "Content/OAuth Scopes/Paragraph" +msgid "Access to audio files, libraries, artists, albums and tracks" +msgstr "" + +#: front/src/components/mixins/Translations.vue:97 +#: front/src/components/mixins/Translations.vue:98 +msgctxt "Content/OAuth Scopes/Paragraph" +msgid "Access to content filters" +msgstr "" + +#: front/src/components/mixins/Translations.vue:105 +#: front/src/components/mixins/Translations.vue:106 +msgctxt "Content/OAuth Scopes/Paragraph" +msgid "Access to edits" +msgstr "" + +#: front/src/components/mixins/Translations.vue:69 +#: front/src/components/mixins/Translations.vue:70 +msgctxt "Content/OAuth Scopes/Paragraph" +msgid "Access to email, username, and profile information" +msgstr "" + +#: front/src/components/mixins/Translations.vue:77 +#: front/src/components/mixins/Translations.vue:78 +msgctxt "Content/OAuth Scopes/Paragraph" +msgid "Access to favorites" +msgstr "" + +#: front/src/components/mixins/Translations.vue:85 +#: front/src/components/mixins/Translations.vue:86 +msgctxt "Content/OAuth Scopes/Paragraph" +msgid "Access to follows" +msgstr "" + +#: front/src/components/mixins/Translations.vue:81 +#: front/src/components/mixins/Translations.vue:82 +msgctxt "Content/OAuth Scopes/Paragraph" +msgid "Access to listening history" +msgstr "" + +#: front/src/components/mixins/Translations.vue:101 +#: front/src/components/mixins/Translations.vue:102 +msgctxt "Content/OAuth Scopes/Paragraph" +msgid "Access to notifications" +msgstr "" + +#: front/src/components/mixins/Translations.vue:89 +#: front/src/components/mixins/Translations.vue:90 +msgctxt "Content/OAuth Scopes/Paragraph" +msgid "Access to playlists" +msgstr "" + +#: front/src/components/mixins/Translations.vue:93 +#: front/src/components/mixins/Translations.vue:94 +msgctxt "Content/OAuth Scopes/Paragraph" +msgid "Access to radios" +msgstr "" + +#: front/src/components/Home.vue:101 +msgctxt "Content/Home/List item" +msgid "Access your music from a clean interface that focuses on what really matters" +msgstr "" + +#: front/src/components/manage/library/UploadsTable.vue:67 +#: front/src/components/mixins/Translations.vue:45 +#: front/src/views/admin/library/UploadDetail.vue:175 +#: front/src/components/mixins/Translations.vue:46 +msgctxt "Content/*/*/Noun" +msgid "Accessed date" +msgstr "" + +#: front/src/views/admin/library/LibraryDetail.vue:104 +#: front/src/views/admin/library/UploadDetail.vue:111 +msgctxt "*/*/*/Noun" +msgid "Account" +msgstr "" + +#: front/src/components/manage/library/LibrariesTable.vue:49 +#: front/src/components/manage/library/UploadsTable.vue:61 +msgctxt "*/*/*" +msgid "Account" +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:107 +msgctxt "Content/Moderation/Title" +msgid "Account data" +msgstr "" + +#: front/src/components/auth/Settings.vue:5 +msgctxt "Content/Settings/Title" +msgid "Account settings" +msgstr "" + +#: front/src/components/auth/Settings.vue:479 +msgctxt "Head/Settings/Title" +msgid "Account Settings" +msgstr "" + +#: front/src/components/manage/users/UsersTable.vue:39 +msgctxt "Content/Admin/Table.Label/Short, Noun" +msgid "Account status" +msgstr "" + +#: front/src/views/auth/PasswordReset.vue:14 +msgctxt "Content/Signup/Input.Label" +msgid "Account's email" +msgstr "" + +#: front/src/views/admin/moderation/AccountsList.vue:3 +#: front/src/views/admin/moderation/AccountsList.vue:24 +#: front/src/views/admin/moderation/Base.vue:8 +msgctxt "*/Moderation/Title" +msgid "Accounts" +msgstr "" + +#: front/src/views/content/libraries/Detail.vue:29 +msgctxt "Content/Library/Table.Label" +msgid "Action" +msgstr "" + +#: front/src/components/common/ActionTable.vue:101 +msgctxt "Content/*/Paragraph" +msgid "Action %{ action } was launched successfully on %{ count } element" +msgid_plural "Action %{ action } was launched successfully on %{ count } elements" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: front/src/components/common/ActionTable.vue:22 +#: front/src/components/library/radios/Builder.vue:65 +msgctxt "Content/*/*/Noun" +msgid "Actions" +msgstr "" + +#: front/src/components/manage/users/UsersTable.vue:53 +msgctxt "Content/Admin/Table" +msgid "Active" +msgstr "" + +#: front/src/views/admin/library/AlbumDetail.vue:134 +#: front/src/views/admin/library/ArtistDetail.vue:123 +#: front/src/views/admin/library/LibraryDetail.vue:138 +#: front/src/views/admin/library/TrackDetail.vue:186 +#: front/src/views/admin/library/UploadDetail.vue:160 +#: front/src/views/admin/moderation/AccountsDetail.vue:220 +#: front/src/views/admin/moderation/DomainsDetail.vue:136 +msgctxt "Content/Moderation/Title" +msgid "Activity" +msgstr "" + +#: front/src/components/mixins/Translations.vue:7 +#: front/src/components/mixins/Translations.vue:8 +msgctxt "Content/Settings/Dropdown.Label/Noun" +msgid "Activity visibility" +msgstr "" + +#: front/src/views/admin/moderation/DomainsList.vue:18 +msgctxt "Content/Moderation/Button/Verb" +msgid "Add" +msgstr "" + +#: front/src/views/admin/moderation/DomainsList.vue:13 +msgctxt "Content/Moderation/Form.Label/Verb" +msgid "Add a domain" +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:79 +msgctxt "Content/Moderation/Button/Verb" +msgid "Add a moderation policy" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyForm.vue:4 +msgctxt "Content/Moderation/Card.Button.Label/Verb" +msgid "Add a new moderation rule" +msgstr "" + +#: front/src/views/content/Home.vue:35 +msgctxt "Content/Library/Title/Verb" +msgid "Add and manage content" +msgstr "" + +#: front/src/components/playlists/Editor.vue:28 +#: front/src/components/playlists/PlaylistModal.vue:31 +msgctxt "*/Playlist/Button.Label/Verb" +msgid "Add anyways" +msgstr "" + +#: front/src/components/Sidebar.vue:75 src/views/content/Base.vue:18 +msgctxt "*/Library/*/Verb" +msgid "Add content" +msgstr "" + +#: front/src/components/library/radios/Builder.vue:51 +msgctxt "Content/Radio/Button.Label/Verb" +msgid "Add filter" +msgstr "" + +#: front/src/components/library/radios/Builder.vue:41 +msgctxt "Content/Radio/Paragraph" +msgid "Add filters to customize your radio" +msgstr "" + +#: front/src/components/audio/PlayButton.vue:75 +msgctxt "*/Queue/Dropdown/Button/Title" +msgid "Add to current queue" +msgstr "" + +#: front/src/components/favorites/TrackFavoriteIcon.vue:4 +#: front/src/components/favorites/TrackFavoriteIcon.vue:28 +msgctxt "Content/Track/*/Verb" +msgid "Add to favorites" +msgstr "" + +#: front/src/components/playlists/TrackPlaylistIcon.vue:6 +#: front/src/components/playlists/TrackPlaylistIcon.vue:34 +msgctxt "Sidebar/Player/Icon.Tooltip/Verb" +msgid "Add to playlist…" +msgstr "" + +#: front/src/components/audio/PlayButton.vue:15 +msgctxt "*/Queue/Dropdown/Button/Label/Short" +msgid "Add to queue" +msgstr "" + +#: front/src/components/playlists/PlaylistModal.vue:142 +msgctxt "Popup/Playlist/Table.Button.Tooltip/Verb" +msgid "Add to this playlist" +msgstr "" + +#: front/src/components/playlists/PlaylistModal.vue:68 +msgctxt "Popup/Playlist/Table.Button.Label/Verb" +msgid "Add track" +msgstr "" + +#: front/src/components/manage/users/UsersTable.vue:69 +msgctxt "Content/Admin/Table.User role" +msgid "Admin" +msgstr "" + +#: front/src/components/Sidebar.vue:79 +msgctxt "Sidebar/Admin/Title/Noun" +msgid "Administration" +msgstr "" + +#: front/src/views/admin/library/TrackDetail.vue:107 +msgctxt "*/*/*/Noun" +msgid "Album" +msgstr "" + +#: front/src/components/audio/SearchBar.vue:26 +#: src/components/audio/track/Table.vue:9 +#: front/src/components/library/AlbumBase.vue:152 +#: front/src/components/library/ArtistBase.vue:194 +#: front/src/components/manage/library/TracksTable.vue:40 +#: front/src/components/metadata/Search.vue:134 +#: front/src/views/content/libraries/FilesTable.vue:57 +msgctxt "*/*/*" +msgid "Album" +msgstr "" + +#: front/src/views/admin/library/TrackDetail.vue:128 +msgctxt "*/*/*/Noun" +msgid "Album artist" +msgstr "" + +#: front/src/views/admin/library/AlbumDetail.vue:92 +msgctxt "Content/Moderation/Title" +msgid "Album data" +msgstr "" + +#: front/src/components/mixins/Translations.vue:51 +#: front/src/components/mixins/Translations.vue:52 +msgctxt "Content/*/Dropdown/Noun" +msgid "Album name" +msgstr "" + +#: front/src/components/audio/Search.vue:19 +#: src/components/instance/Stats.vue:48 +#: front/src/components/library/Albums.vue:120 +#: src/components/library/Library.vue:7 +#: front/src/components/manage/library/ArtistsTable.vue:41 +#: front/src/views/admin/library/AlbumsList.vue:24 +#: front/src/views/admin/library/ArtistDetail.vue:241 +#: front/src/views/admin/library/Base.vue:11 +#: front/src/views/admin/library/LibraryDetail.vue:219 +#: front/src/views/admin/moderation/AccountsDetail.vue:354 +#: front/src/views/admin/moderation/DomainsDetail.vue:264 +msgctxt "*/*/*" +msgid "Albums" +msgstr "" + +#: front/src/components/library/ArtistDetail.vue:21 +msgctxt "Content/Artist/Title" +msgid "Albums by this artist" +msgstr "" + +#: front/src/components/manage/library/EditsCardList.vue:15 +#: front/src/components/manage/library/LibrariesTable.vue:13 +#: front/src/components/manage/library/UploadsTable.vue:13 +#: front/src/components/manage/library/UploadsTable.vue:22 +#: front/src/components/manage/users/InvitationsTable.vue:19 +#: front/src/views/content/libraries/FilesTable.vue:13 +msgctxt "Content/*/Dropdown" +msgid "All" +msgstr "" + +#: front/src/components/common/ActionTable.vue:59 +msgctxt "Content/*/Paragraph" +msgid "All %{ count } element selected" +msgid_plural "All %{ count } elements selected" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: front/src/components/auth/Authorize.vue:107 +msgctxt "Head/Authorize/Title" +msgid "Allow application" +msgstr "" + +#: front/src/components/library/ImportStatusModal.vue:17 +msgctxt "Popup/Import/Message" +msgid "An error occured during upload processing. You will find more information below." +msgstr "" + +#: front/src/components/playlists/Editor.vue:13 +msgctxt "Content/Playlist/Error message.Title" +msgid "An error occured while saving your changes" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:21 +msgctxt "Popup/*/Message.Content" +msgid "An error occured while trying to refresh data:" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:41 +msgctxt "*/*/Error" +msgid "An HTTP error occured while contacting the remote server" +msgstr "" + +#: front/src/components/auth/Login.vue:10 +msgctxt "Content/Login/Error message/List item" +msgid "An unknown error happend, this can mean the server is down or cannot be reached" +msgstr "" + +#: front/src/components/library/ImportStatusModal.vue:145 +msgctxt "Popup/Import/Error.Label" +msgid "An unkwown error occured" +msgstr "" + +#: front/src/components/auth/Settings.vue:175 +#: src/components/auth/Settings.vue:225 +msgctxt "*/*/*/Noun" +msgid "Application" +msgstr "" + +#: front/src/components/auth/ApplicationEdit.vue:12 +msgctxt "Content/Applications/Title" +msgid "Application details" +msgstr "" + +#: front/src/components/auth/ApplicationEdit.vue:21 +msgctxt "Content/Applications/Label" +msgid "Application ID" +msgstr "" + +#: front/src/components/auth/ApplicationEdit.vue:16 +msgctxt "Content/Application/Paragraph/" +msgid "Application ID and secret are really sensitive values and must be treated like passwords. Do not share those with anyone else." +msgstr "" + +#: front/src/components/auth/ApplicationEdit.vue:25 +msgctxt "Content/Applications/Label" +msgid "Application secret" +msgstr "" + +#: front/src/components/library/EditCard.vue:81 +#: front/src/components/notifications/NotificationRow.vue:66 +msgctxt "Content/*/Button.Label/Verb" +msgid "Approve" +msgstr "" + +#: front/src/components/library/EditCard.vue:25 +#: front/src/components/manage/library/EditsCardList.vue:21 +msgctxt "Content/*/*/Short" +msgid "Approved" +msgstr "" + +#: front/src/components/library/EditCard.vue:21 +msgctxt "Content/Library/Card/Short" +msgid "Approved and applied" +msgstr "" + +#: front/src/components/auth/Logout.vue:5 +msgctxt "Content/Login/Title" +msgid "Are you sure you want to log out?" +msgstr "" + +#: front/src/components/manage/library/AlbumsTable.vue:40 +#: front/src/components/manage/library/TracksTable.vue:41 +msgctxt "*/*/*" +msgid "Artist" +msgstr "" + +#: front/src/components/audio/SearchBar.vue:25 +#: src/components/audio/track/Table.vue:8 +#: front/src/components/metadata/Search.vue:130 +#: front/src/views/admin/library/AlbumDetail.vue:108 +#: front/src/views/admin/library/TrackDetail.vue:118 +#: front/src/views/content/libraries/FilesTable.vue:56 +msgctxt "*/*/*/Noun" +msgid "Artist" +msgstr "" + +#: front/src/views/admin/library/ArtistDetail.vue:91 +msgctxt "Content/Moderation/Title" +msgid "Artist data" +msgstr "" + +#: front/src/components/mixins/Translations.vue:52 +#: front/src/components/mixins/Translations.vue:53 +msgctxt "Content/*/Dropdown/Noun" +msgid "Artist name" +msgstr "" + +#: front/src/components/audio/Search.vue:65 +msgctxt "*/Search/Input.Placeholder" +msgid "Artist, album, track…" +msgstr "" + +#: front/src/views/admin/library/ArtistsList.vue:24 +#: front/src/views/admin/library/Base.vue:8 +#: front/src/views/admin/library/LibraryDetail.vue:209 +msgctxt "*/*/*" +msgid "Artists" +msgstr "" + +#: front/src/components/audio/Search.vue:10 +#: src/components/instance/Stats.vue:42 +#: front/src/components/library/Artists.vue:117 +#: src/components/library/Library.vue:10 +#: front/src/views/admin/moderation/AccountsDetail.vue:346 +#: front/src/views/admin/moderation/DomainsDetail.vue:254 +msgctxt "*/*/*/Noun" +msgid "Artists" +msgstr "" + +#: front/src/components/favorites/List.vue:34 +#: src/components/library/Albums.vue:25 +#: front/src/components/library/Artists.vue:25 +#: src/components/library/Radios.vue:44 +#: front/src/components/manage/library/AlbumsTable.vue:21 +#: front/src/components/manage/library/ArtistsTable.vue:21 +#: front/src/components/manage/library/EditsCardList.vue:39 +#: front/src/components/manage/library/LibrariesTable.vue:30 +#: front/src/components/manage/library/TracksTable.vue:21 +#: front/src/components/manage/library/UploadsTable.vue:40 +#: front/src/components/manage/moderation/AccountsTable.vue:21 +#: front/src/components/manage/moderation/DomainsTable.vue:19 +#: front/src/components/manage/users/UsersTable.vue:19 +#: front/src/views/content/libraries/FilesTable.vue:31 +#: front/src/views/playlists/List.vue:27 +msgctxt "Content/Search/Dropdown" +msgid "Ascending" +msgstr "" + +#: front/src/views/auth/PasswordReset.vue:28 +msgctxt "Content/Signup/Button.Label/Verb" +msgid "Ask for a password reset" +msgstr "" + +#: front/src/views/admin/library/AlbumDetail.vue:198 +#: front/src/views/admin/library/ArtistDetail.vue:187 +#: front/src/views/admin/library/LibraryDetail.vue:176 +#: front/src/views/admin/library/TrackDetail.vue:250 +#: front/src/views/admin/library/UploadDetail.vue:191 +#: front/src/views/admin/moderation/AccountsDetail.vue:274 +#: front/src/views/admin/moderation/DomainsDetail.vue:202 +msgctxt "Content/Moderation/Title" +msgid "Audio content" +msgstr "" + +#: front/src/components/ShortcutsModal.vue:55 +msgctxt "Popup/Keyboard shortcuts/Title" +msgid "Audio player shortcuts" +msgstr "" + +#: front/src/components/auth/Authorize.vue:47 +msgctxt "Content/Signup/Button.Label/Verb" +msgid "Authorize %{ app }" +msgstr "" + +#: front/src/components/auth/Authorize.vue:4 +msgctxt "Content/Auth/Title/Verb" +msgid "Authorize third-party app" +msgstr "" + +#: front/src/components/auth/Settings.vue:162 +msgctxt "Content/Settings/Title/Noun" +msgid "Authorized apps" +msgstr "" + +#: front/src/components/playlists/PlaylistModal.vue:40 +msgctxt "Popup/Playlist/Title" +msgid "Available playlists" +msgstr "" + +#: front/src/components/auth/Settings.vue:34 +msgctxt "Content/Settings/Title" +msgid "Avatar" +msgstr "" + +#: front/src/views/auth/PasswordReset.vue:25 +#: front/src/views/auth/PasswordResetConfirm.vue:18 +msgctxt "Content/Signup/Link" +msgid "Back to login" +msgstr "" + +#: front/src/components/auth/ApplicationEdit.vue:9 +#: front/src/components/auth/ApplicationNew.vue:5 +msgctxt "Content/Applications/Link" +msgid "Back to settings" +msgstr "" + +#: front/src/components/library/TrackDetail.vue:48 +#: front/src/components/mixins/Translations.vue:55 +#: front/src/views/admin/library/UploadDetail.vue:227 +#: front/src/components/mixins/Translations.vue:56 +msgctxt "Content/Track/*/Noun" +msgid "Bitrate" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyCard.vue:19 +#: front/src/components/manage/moderation/InstancePolicyForm.vue:34 +msgctxt "Content/Moderation/*/Verb" +msgid "Block everything" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyForm.vue:112 +msgctxt "Content/Moderation/Help text" +msgid "Block everything from this account or domain. This will prevent any interaction with the entity, and purge related content (uploads, libraries, follows, etc.)" +msgstr "" + +#: front/src/components/Sidebar.vue:18 src/components/library/Library.vue:4 +msgctxt "*/Library/*/Verb" +msgid "Browse" +msgstr "" + +#: front/src/components/Sidebar.vue:65 +msgctxt "Sidebar/Library/List item.Link/Verb" +msgid "Browse library" +msgstr "" + +#: front/src/components/library/Albums.vue:4 +msgctxt "Content/Album/Title" +msgid "Browsing albums" +msgstr "" + +#: front/src/components/library/Artists.vue:4 +msgctxt "Content/Artist/Title" +msgid "Browsing artists" +msgstr "" + +#: front/src/views/playlists/List.vue:3 +msgctxt "Content/Playlist/Title" +msgid "Browsing playlists" +msgstr "" + +#: front/src/components/library/Radios.vue:4 +msgctxt "Content/Radio/Title" +msgid "Browsing radios" +msgstr "" + +#: front/src/components/library/radios/Builder.vue:5 +msgctxt "Content/Radio/Title" +msgid "Builder" +msgstr "" + +#: front/src/components/audio/album/Card.vue:13 +msgctxt "Content/Album/Card" +msgid "By %{ artist }" +msgstr "" + +#: front/src/views/content/remote/Card.vue:112 +msgctxt "Popup/Library/Paragraph" +msgid "By unfollowing this library, you loose access to its content." +msgstr "" + +#: front/src/views/admin/library/AlbumDetail.vue:214 +#: front/src/views/admin/library/ArtistDetail.vue:203 +#: front/src/views/admin/library/LibraryDetail.vue:192 +#: front/src/views/admin/library/TrackDetail.vue:266 +#: front/src/views/admin/library/UploadDetail.vue:208 +#: front/src/views/admin/moderation/AccountsDetail.vue:290 +#: front/src/views/admin/moderation/DomainsDetail.vue:217 +msgctxt "Content/Moderation/Table.Label/Noun" +msgid "Cached size" +msgstr "" + +#: front/src/components/SetInstanceModal.vue:37 +#: front/src/components/common/DangerousButton.vue:17 +#: front/src/components/library/AlbumBase.vue:36 +#: front/src/components/library/ArtistBase.vue:47 +#: front/src/components/library/EditForm.vue:95 +#: front/src/components/library/TrackBase.vue:55 +#: front/src/components/library/radios/Filter.vue:53 +#: front/src/components/manage/moderation/InstancePolicyForm.vue:54 +#: front/src/components/moderation/FilterModal.vue:39 +#: front/src/components/playlists/PlaylistModal.vue:26 +#: front/src/components/playlists/PlaylistModal.vue:77 +msgctxt "*/*/Button.Label/Verb" +msgid "Cancel" +msgstr "" + +#: front/src/views/content/remote/Card.vue:97 +msgctxt "Content/Library/Card.Paragraph" +msgid "Cancel follow request" +msgstr "" + +#: front/src/components/library/radios/Builder.vue:64 +msgctxt "Content/Radio/Table.Label/Noun (Value is a number of Tracks)" +msgid "Candidates" +msgstr "" + +#: front/src/components/library/FileUpload.vue:261 +msgctxt "Content/Library/Help text" +msgid "Cannot upload this file, ensure it is not too big" +msgstr "" + +#: front/src/components/Footer.vue:21 +msgctxt "Footer/Settings/Dropdown.Label/Short, Verb" +msgid "Change language" +msgstr "" + +#: front/src/components/auth/Settings.vue:68 +msgctxt "Content/Settings/Title/Verb" +msgid "Change my password" +msgstr "" + +#: front/src/components/auth/Settings.vue:95 +msgctxt "Content/Settings/Button.Label" +msgid "Change password" +msgstr "" + +#: front/src/views/auth/PasswordResetConfirm.vue:62 +msgctxt "*/Signup/Title" +msgid "Change your password" +msgstr "" + +#: front/src/components/auth/Settings.vue:96 +msgctxt "Popup/Settings/Title" +msgid "Change your password?" +msgstr "" + +#: front/src/components/playlists/Editor.vue:31 +msgctxt "Content/Playlist/Paragraph" +msgid "Changes synced with server" +msgstr "" + +#: front/src/components/auth/Settings.vue:71 +msgctxt "Content/Settings/Paragraph'" +msgid "Changing your password will also change your Subsonic API password if you have requested one." +msgstr "" + +#: front/src/components/auth/Settings.vue:98 +msgctxt "Popup/Settings/Paragraph" +msgid "Changing your password will have the following consequences:" +msgstr "" + +#: front/src/components/Footer.vue:40 +msgctxt "Footer/*/List item.Link" +msgid "Chat room" +msgstr "" + +#: front/src/components/auth/ApplicationForm.vue:24 +msgctxt "Content/Applications/Paragraph/" +msgid "Checking the parent \"Read\" or \"Write\" scopes implies access to all the corresponding children scopes." +msgstr "" + +#: front/src/components/SetInstanceModal.vue:2 +msgctxt "Popup/Instance/Title" +msgid "Choose your instance" +msgstr "" + +#: front/src/components/manage/users/InvitationForm.vue:37 +msgctxt "Content/Admin/Button.Label/Verb" +msgid "Clear" +msgstr "" + +#: front/src/components/library/EditForm.vue:75 +msgctxt "Content/Library/Button.Label" +msgid "Clear" +msgstr "" + +#: front/src/components/playlists/Editor.vue:50 +#: front/src/components/playlists/Editor.vue:55 +msgctxt "*/Playlist/Button.Label/Verb" +msgid "Clear playlist" +msgstr "" + +#: front/src/components/audio/Player.vue:642 +msgctxt "Sidebar/Player/Icon.Tooltip/Verb" +msgid "Clear your queue" +msgstr "" + +#: front/src/components/Home.vue:44 +msgctxt "Content/Home/List item/Verb" +msgid "Click once, listen for hours using built-in radios" +msgstr "" + +#: front/src/components/mixins/Translations.vue:21 +#: front/src/components/mixins/Translations.vue:22 +msgctxt "Content/Library/Link.Title" +msgid "Click to display more information about the import process for this upload" +msgstr "" + +#: front/src/components/library/FileUpload.vue:82 +msgctxt "Content/Library/Paragraph/Call to action" +msgid "Click to select files to upload or drag and drop files or directories" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:85 +#: front/src/components/library/ImportStatusModal.vue:79 +msgctxt "*/*/Button.Label/Verb" +msgid "Close" +msgstr "" + +#: front/src/components/ShortcutsModal.vue:20 +msgctxt "Popup/Keyboard shortcuts/Button.Label/Verb" +msgid "Close" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:88 +msgctxt "*/*/Button.Label/Verb" +msgid "Close and reload page" +msgstr "" + +#: front/src/components/manage/users/InvitationForm.vue:26 +#: front/src/components/manage/users/InvitationsTable.vue:42 +msgctxt "Content/Admin/Table.Label/Noun" +msgid "Code" +msgstr "" + +#: front/src/components/audio/album/Card.vue:41 +#: front/src/components/audio/artist/Card.vue:33 +msgctxt "Content/*/Card.Link/Verb" +msgid "Collapse" +msgstr "" + +#: front/src/components/library/radios/Builder.vue:63 +msgctxt "Content/Radio/Table.Label/Verb (Value is a List of Parameters)" +msgid "Config" +msgstr "" + +#: front/src/components/common/DangerousButton.vue:21 +msgctxt "Modal/*/Button.Label/Short, Verb" +msgid "Confirm" +msgstr "" + +#: front/src/views/auth/EmailConfirm.vue:51 +msgctxt "Head/Signup/Title" +msgid "Confirm your e-mail address" +msgstr "" + +#: front/src/views/auth/EmailConfirm.vue:13 +msgctxt "Content/Signup/Form.Label" +msgid "Confirmation code" +msgstr "" + +#: front/src/components/moderation/FilterModal.vue:90 +msgctxt "*/Moderation/Message" +msgid "Content filter successfully added" +msgstr "" + +#: front/src/components/mixins/Translations.vue:96 +#: front/src/components/mixins/Translations.vue:97 +msgctxt "Content/OAuth Scopes/Label" +msgid "Content filters" +msgstr "" + +#: front/src/components/auth/Settings.vue:116 +msgctxt "Content/Settings/Title/Noun" +msgid "Content filters" +msgstr "" + +#: front/src/components/auth/Settings.vue:119 +msgctxt "Content/Settings/Paragraph" +msgid "Content filters help you hide content you don't want to see on the service." +msgstr "" + +#: front/src/components/common/ActionTable.vue:8 +msgctxt "Content/*/Button.Help text.Paragraph" +msgid "Content have been updated, click refresh to see up-to-date content" +msgstr "" + +#: front/src/components/Footer.vue:48 +msgctxt "Footer/*/List item.Link" +msgid "Contribute" +msgstr "" + +#: front/src/components/audio/EmbedWizard.vue:19 +#: front/src/components/common/CopyInput.vue:8 +msgctxt "*/*/Button.Label/Short, Verb" +msgid "Copy" +msgstr "" + +#: front/src/components/playlists/Editor.vue:194 +msgctxt "Content/Playlist/Button.Tooltip/Verb" +msgid "Copy queued tracks to playlist" +msgstr "" + +#: front/src/components/auth/Authorize.vue:55 +msgctxt "Content/Auth/Paragraph" +msgid "Copy-paste the following code in the application:" +msgstr "" + +#: front/src/components/audio/EmbedWizard.vue:21 +msgctxt "Popup/Embed/Paragraph" +msgid "Copy/paste this code in your website HTML" +msgstr "" + +#: front/src/components/library/TrackDetail.vue:10 +#: front/src/views/admin/library/TrackDetail.vue:153 +msgctxt "Content/Track/Table.Label/Noun" +msgid "Copyright" +msgstr "" + +#: front/src/views/auth/EmailConfirm.vue:7 +msgctxt "Content/Signup/Paragraph" +msgid "Could not confirm your e-mail address" +msgstr "" + +#: front/src/views/content/remote/ScanForm.vue:3 +msgctxt "Content/Library/Error message.Title" +msgid "Could not fetch remote library" +msgstr "" + +#: front/src/components/Home.vue:80 +msgctxt "Content/Home/List item" +msgid "Covers, lyrics, our goal is to have them all ;)" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyForm.vue:58 +msgctxt "Content/Moderation/Card.Button.Label/Verb" +msgid "Create" +msgstr "" + +#: front/src/components/auth/Signup.vue:4 +msgctxt "Content/Signup/Title" +msgid "Create a funkwhale account" +msgstr "" + +#: front/src/components/auth/Settings.vue:220 +msgctxt "Content/Settings/Button.Label" +msgid "Create a new application" +msgstr "" + +#: front/src/components/auth/ApplicationNew.vue:8 +#: front/src/components/auth/ApplicationNew.vue:41 +msgctxt "Content/Applications/Title" +msgid "Create a new application" +msgstr "" + +#: front/src/views/content/libraries/Home.vue:14 +msgctxt "Content/Library/Link/Verb" +msgid "Create a new library" +msgstr "" + +#: front/src/components/playlists/Form.vue:2 +msgctxt "Popup/Playlist/Title/Verb" +msgid "Create a new playlist" +msgstr "" + +#: front/src/components/Sidebar.vue:57 src/components/auth/Login.vue:17 +msgctxt "*/Signup/Link/Verb" +msgid "Create an account" +msgstr "" + +#: front/src/components/auth/ApplicationForm.vue:65 +msgctxt "Content/Applications/Button.Label/Verb" +msgid "Create application" +msgstr "" + +#: front/src/views/content/libraries/Form.vue:26 +msgctxt "Content/Library/Button.Label/Verb" +msgid "Create library" +msgstr "" + +#: front/src/components/auth/Signup.vue:53 +msgctxt "Content/Signup/Button.Label" +msgid "Create my account" +msgstr "" + +#: front/src/components/auth/Settings.vue:264 +msgctxt "Content/Applications/Paragraph" +msgid "Create one to integrate Funkwhale with third-party applications." +msgstr "" + +#: front/src/components/playlists/Form.vue:34 +msgctxt "Content/Playlist/Button.Label/Verb" +msgid "Create playlist" +msgstr "" + +#: front/src/components/library/Radios.vue:23 +msgctxt "Content/Radio/Button.Label/Verb" +msgid "Create your own radio" +msgstr "" + +#: front/src/components/auth/Settings.vue:134 +#: src/components/auth/Settings.vue:227 +#: front/src/components/manage/library/AlbumsTable.vue:44 +#: front/src/components/manage/library/ArtistsTable.vue:43 +#: front/src/components/manage/library/LibrariesTable.vue:54 +#: front/src/components/manage/library/TracksTable.vue:44 +#: front/src/components/manage/library/UploadsTable.vue:66 +#: front/src/components/manage/users/InvitationsTable.vue:40 +#: front/src/components/mixins/Translations.vue:43 +#: front/src/components/mixins/Translations.vue:44 +msgctxt "Content/*/*/Noun" +msgid "Creation date" +msgstr "" + +#: front/src/components/auth/Settings.vue:54 +msgctxt "Content/Settings/Title/Noun" +msgid "Current avatar" +msgstr "" + +#: front/src/views/content/libraries/DetailArea.vue:4 +msgctxt "Content/Library/Title" +msgid "Current library" +msgstr "" + +#: front/src/components/playlists/PlaylistModal.vue:8 +msgctxt "Popup/Playlist/Title" +msgid "Current track" +msgstr "" + +#: front/src/views/content/libraries/Quota.vue:2 +msgctxt "Content/Library/Title" +msgid "Current usage" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:53 +msgctxt "*/*/Error" +msgid "Data returned by the remote server had invalid or missing attributes" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:17 +msgctxt "Popup/*/Message.Content" +msgid "Data was refreshed successfully from remote server." +msgstr "" + +#: front/src/views/content/libraries/Detail.vue:27 +msgctxt "Content/Library/Table.Label" +msgid "Date" +msgstr "" + +#: front/src/components/library/ImportStatusModal.vue:64 +msgctxt "Popup/Import/Table.Label/Noun" +msgid "Debug information" +msgstr "" + +#: front/src/components/ShortcutsModal.vue:75 +msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb" +msgid "Decrease volume" +msgstr "" + +#: front/src/components/auth/Settings.vue:150 +#: src/components/auth/Settings.vue:251 +#: front/src/components/library/EditCard.vue:93 +#: front/src/components/library/EditCard.vue:98 +#: front/src/components/manage/library/AlbumsTable.vue:188 +#: front/src/components/manage/library/ArtistsTable.vue:178 +#: front/src/components/manage/library/LibrariesTable.vue:205 +#: front/src/components/manage/library/TracksTable.vue:188 +#: front/src/components/manage/library/UploadsTable.vue:255 +#: front/src/components/manage/moderation/InstancePolicyForm.vue:61 +#: front/src/components/manage/users/InvitationsTable.vue:167 +#: front/src/views/admin/library/AlbumDetail.vue:72 +#: front/src/views/admin/library/AlbumDetail.vue:77 +#: front/src/views/admin/library/ArtistDetail.vue:71 +#: front/src/views/admin/library/ArtistDetail.vue:76 +#: front/src/views/admin/library/LibraryDetail.vue:58 +#: front/src/views/admin/library/LibraryDetail.vue:63 +#: front/src/views/admin/library/TrackDetail.vue:71 +#: front/src/views/admin/library/TrackDetail.vue:76 +#: front/src/views/admin/library/UploadDetail.vue:65 +#: front/src/views/admin/library/UploadDetail.vue:70 +#: front/src/views/content/libraries/FilesTable.vue:222 +#: front/src/views/content/libraries/Form.vue:29 +#: src/views/playlists/Detail.vue:34 +msgctxt "*/*/*/Verb" +msgid "Delete" +msgstr "" + +#: front/src/components/auth/Settings.vue:254 +msgctxt "*/Settings/Button.Label/Verb" +msgid "Delete application" +msgstr "" + +#: front/src/components/auth/Settings.vue:252 +msgctxt "Popup/Settings/Title" +msgid "Delete application \"%{ application }\"?" +msgstr "" + +#: front/src/views/content/libraries/Form.vue:39 +msgctxt "Popup/Library/Button.Label/Verb" +msgid "Delete library" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyForm.vue:69 +msgctxt "Popup/Moderation/Button.Label/Verb" +msgid "Delete moderation rule" +msgstr "" + +#: front/src/views/playlists/Detail.vue:39 +msgctxt "Popup/Playlist/Button.Label/Verb" +msgid "Delete playlist" +msgstr "" + +#: front/src/views/radios/Detail.vue:28 +msgctxt "Popup/Radio/Button.Label/Verb" +msgid "Delete radio" +msgstr "" + +#: front/src/views/admin/library/AlbumDetail.vue:73 +#: front/src/views/admin/library/TrackDetail.vue:72 +msgctxt "Popup/Library/Title" +msgid "Delete this album?" +msgstr "" + +#: front/src/views/admin/library/ArtistDetail.vue:72 +msgctxt "Popup/Library/Title" +msgid "Delete this artist?" +msgstr "" + +#: front/src/views/admin/library/LibraryDetail.vue:59 +#: front/src/views/content/libraries/Form.vue:31 +msgctxt "Popup/Library/Title" +msgid "Delete this library?" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyForm.vue:63 +msgctxt "Popup/Moderation/Title" +msgid "Delete this moderation rule?" +msgstr "" + +#: front/src/components/library/EditCard.vue:94 +msgctxt "Popup/Library/Title" +msgid "Delete this suggestion?" +msgstr "" + +#: front/src/views/admin/library/UploadDetail.vue:66 +msgctxt "Popup/Library/Title" +msgid "Delete this upload?" +msgstr "" + +#: front/src/components/favorites/List.vue:35 +#: src/components/library/Albums.vue:26 +#: front/src/components/library/Artists.vue:26 +#: src/components/library/Radios.vue:47 +#: front/src/components/manage/library/AlbumsTable.vue:22 +#: front/src/components/manage/library/ArtistsTable.vue:22 +#: front/src/components/manage/library/EditsCardList.vue:40 +#: front/src/components/manage/library/LibrariesTable.vue:31 +#: front/src/components/manage/library/TracksTable.vue:22 +#: front/src/components/manage/library/UploadsTable.vue:41 +#: front/src/components/manage/moderation/AccountsTable.vue:22 +#: front/src/components/manage/moderation/DomainsTable.vue:20 +#: front/src/components/manage/users/UsersTable.vue:20 +#: front/src/views/content/libraries/FilesTable.vue:32 +#: front/src/views/playlists/List.vue:28 +msgctxt "Content/Search/Dropdown" +msgid "Descending" +msgstr "" + +#: front/src/views/admin/library/LibraryDetail.vue:123 +msgctxt "*/*/*/Noun" +msgid "Description" +msgstr "" + +#: front/src/components/library/radios/Builder.vue:25 +#: front/src/views/content/libraries/Form.vue:14 +msgctxt "Content/*/Input.Label/Noun" +msgid "Description" +msgstr "" + +#: front/src/views/content/libraries/Card.vue:48 +#: src/views/content/remote/Card.vue:54 +msgctxt "Content/Library/Card.Button.Label/Noun" +msgid "Details" +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:491 +msgctxt "Content/Moderation/Help text" +msgid "Determine how much content the user can upload. Leave empty to use the default value of the instance." +msgstr "" + +#: front/src/components/mixins/Translations.vue:8 +#: front/src/components/mixins/Translations.vue:9 +msgctxt "Content/Settings/Dropdown.Help text" +msgid "Determine the visibility level of your activity" +msgstr "" + +#: front/src/components/auth/Settings.vue:104 +#: front/src/components/auth/SubsonicTokenForm.vue:51 +msgctxt "Popup/Settings/Button.Label" +msgid "Disable access" +msgstr "" + +#: front/src/components/auth/SubsonicTokenForm.vue:48 +msgctxt "Content/Settings/Button.Label/Verb" +msgid "Disable Subsonic access" +msgstr "" + +#: front/src/components/auth/SubsonicTokenForm.vue:49 +msgctxt "Popup/Settings/Title" +msgid "Disable Subsonic API access?" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyForm.vue:18 +#: front/src/views/admin/moderation/AccountsDetail.vue:157 +#: front/src/views/admin/moderation/AccountsDetail.vue:161 +msgctxt "*/*/*" +msgid "Disabled" +msgstr "" + +#: front/src/views/admin/library/TrackDetail.vue:145 +msgctxt "*/*/*/Noun" +msgid "Disc number" +msgstr "" + +#: front/src/components/auth/SubsonicTokenForm.vue:13 +msgctxt "Content/Settings/Link" +msgid "Discover how to use Funkwhale from other apps" +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:132 +msgctxt "'Content/*/*/Noun'" +msgid "Display name" +msgstr "" + +#: front/src/components/library/radios/Builder.vue:30 +msgctxt "Content/Radio/Checkbox.Label/Verb" +msgid "Display publicly" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyForm.vue:122 +msgctxt "Content/Moderation/Help text" +msgid "Do not download any media file (audio, album cover, account avatar…) from this account or domain. This will purge existing content as well." +msgstr "" + +#: front/src/components/playlists/Editor.vue:51 +msgctxt "Popup/Playlist/Title" +msgid "Do you want to clear the playlist \"%{ playlist }\"?" +msgstr "" + +#: front/src/components/common/DangerousButton.vue:7 +msgctxt "Modal/*/Title" +msgid "Do you want to confirm this action?" +msgstr "" + +#: front/src/views/playlists/Detail.vue:35 +msgctxt "Popup/Playlist/Title/Call to action" +msgid "Do you want to delete the playlist \"%{ playlist }\"?" +msgstr "" + +#: front/src/views/radios/Detail.vue:26 +msgctxt "Popup/Radio/Title" +msgid "Do you want to delete the radio \"%{ radio }\"?" +msgstr "" + +#: front/src/components/moderation/FilterModal.vue:3 +msgctxt "Popup/Moderation/Title/Verb" +msgid "Do you want to hide content from artist \"%{ name }\"?" +msgstr "" + +#: front/src/components/common/ActionTable.vue:37 +msgctxt "Modal/*/Title" +msgid "Do you want to launch %{ action } on %{ count } element?" +msgid_plural "Do you want to launch %{ action } on %{ count } elements?" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: front/src/components/Sidebar.vue:118 +msgctxt "Sidebar/Queue/Message" +msgid "Do you want to restore your previous queue?" +msgstr "" + +#: front/src/components/Footer.vue:31 +msgctxt "Footer/*/List item.Link/Short, Noun" +msgid "Documentation" +msgstr "" + +#: front/src/components/manage/library/AlbumsTable.vue:41 +#: front/src/components/manage/library/ArtistsTable.vue:40 +#: front/src/components/manage/library/LibrariesTable.vue:50 +#: front/src/components/manage/library/TracksTable.vue:42 +#: front/src/components/manage/library/UploadsTable.vue:62 +#: front/src/components/manage/moderation/AccountsTable.vue:40 +#: front/src/components/mixins/Translations.vue:60 +#: front/src/views/admin/library/AlbumDetail.vue:118 +#: front/src/views/admin/library/ArtistDetail.vue:107 +#: front/src/views/admin/library/LibraryDetail.vue:114 +#: front/src/views/admin/library/TrackDetail.vue:170 +#: front/src/views/admin/library/UploadDetail.vue:121 +#: front/src/views/admin/moderation/AccountsDetail.vue:123 +#: front/src/components/mixins/Translations.vue:61 +msgctxt "Content/Moderation/*/Noun" +msgid "Domain" +msgstr "" + +#: front/src/views/admin/moderation/Base.vue:5 +#: front/src/views/admin/moderation/DomainsList.vue:3 +#: front/src/views/admin/moderation/DomainsList.vue:48 +msgctxt "*/Moderation/*/Noun" +msgid "Domains" +msgstr "" + +#: front/src/components/library/TrackBase.vue:39 +#: front/src/views/admin/library/UploadDetail.vue:58 +msgctxt "Content/Track/Link/Verb" +msgid "Download" +msgstr "" + +#: front/src/components/playlists/Editor.vue:59 +msgctxt "Content/Playlist/Paragraph/Call to action" +msgid "Drag and drop rows to reorder tracks in the playlist" +msgstr "" + +#: front/src/components/audio/track/Table.vue:10 +#: front/src/components/library/TrackDetail.vue:30 +#: front/src/components/mixins/Translations.vue:56 +#: front/src/views/admin/library/UploadDetail.vue:238 +#: front/src/views/content/libraries/FilesTable.vue:60 +#: front/src/components/mixins/Translations.vue:57 +msgctxt "Content/*/*" +msgid "Duration" +msgstr "" + +#: front/src/views/auth/EmailConfirm.vue:23 +msgctxt "Content/Signup/Message" +msgid "E-mail address confirmed" +msgstr "" + +#: front/src/components/Home.vue:88 +msgctxt "Content/Home/Title" +msgid "Easy to use" +msgstr "" + +#: front/src/components/library/AlbumBase.vue:68 +#: front/src/components/library/ArtistBase.vue:79 +#: front/src/components/library/TrackBase.vue:87 +#: front/src/components/manage/moderation/InstancePolicyCard.vue:45 +#: front/src/components/radios/Card.vue:23 +#: src/views/admin/library/AlbumDetail.vue:65 +#: front/src/views/admin/library/ArtistDetail.vue:64 +#: front/src/views/admin/library/TrackDetail.vue:64 +#: front/src/views/content/libraries/Detail.vue:9 +#: src/views/playlists/Detail.vue:31 +msgctxt "Content/*/Button.Label/Verb" +msgid "Edit" +msgstr "" + +#: front/src/components/auth/Settings.vue:246 +msgctxt "Content/Settings/Button.Label" +msgid "Edit" +msgstr "" + +#: front/src/components/auth/ApplicationEdit.vue:30 +#: front/src/components/auth/ApplicationEdit.vue:75 +msgctxt "Content/Applications/Title" +msgid "Edit application" +msgstr "" + +#: front/src/components/About.vue:22 +msgctxt "Content/Settings/Button.Label/Verb" +msgid "Edit instance info" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyForm.vue:3 +msgctxt "Content/Moderation/Card.Title/Verb" +msgid "Edit moderation rule" +msgstr "" + +#: front/src/components/library/AlbumEdit.vue:4 +msgctxt "Content/*/Title" +msgid "Edit this album" +msgstr "" + +#: front/src/components/library/ArtistEdit.vue:4 +msgctxt "Content/*/Title" +msgid "Edit this artist" +msgstr "" + +#: front/src/components/library/TrackEdit.vue:4 +msgctxt "Content/*/Title" +msgid "Edit this track" +msgstr "" + +#: front/src/views/admin/library/AlbumDetail.vue:182 +#: front/src/views/admin/library/ArtistDetail.vue:171 +#: front/src/views/admin/library/Base.vue:5 +#: src/views/admin/library/EditsList.vue:24 +#: front/src/views/admin/library/TrackDetail.vue:234 +msgctxt "*/Admin/*/Noun" +msgid "Edits" +msgstr "" + +#: front/src/components/mixins/Translations.vue:104 +#: front/src/components/mixins/Translations.vue:105 +msgctxt "Content/OAuth Scopes/Label" +msgid "Edits" +msgstr "" + +#: front/src/components/auth/Signup.vue:30 +#: front/src/components/manage/users/UsersTable.vue:38 +msgctxt "Content/*/*/Noun" +msgid "Email" +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:140 +msgctxt "Content/*/*" +msgid "Email address" +msgstr "" + +#: front/src/components/library/AlbumBase.vue:53 +#: front/src/components/library/ArtistBase.vue:64 +#: front/src/components/library/TrackBase.vue:72 +msgctxt "Content/*/Button.Label/Verb" +msgid "Embed" +msgstr "" + +#: front/src/components/audio/EmbedWizard.vue:20 +msgctxt "Popup/Embed/Input.Label/Noun" +msgid "Embed code" +msgstr "" + +#: front/src/components/library/AlbumBase.vue:26 +msgctxt "Popup/Album/Title/Verb" +msgid "Embed this album on your website" +msgstr "" + +#: front/src/components/library/ArtistBase.vue:37 +msgctxt "Popup/Artist/Title/Verb" +msgid "Embed this artist work on your website" +msgstr "" + +#: front/src/components/library/TrackBase.vue:45 +msgctxt "Popup/Track/Title" +msgid "Embed this track on your website" +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:259 +#: front/src/views/admin/moderation/DomainsDetail.vue:187 +msgctxt "Content/Moderation/Table.Label/Noun" +msgid "Emitted library follows" +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:243 +#: front/src/views/admin/moderation/DomainsDetail.vue:171 +msgctxt "Content/Moderation/Table.Label/Noun" +msgid "Emitted messages" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyCard.vue:8 +#: front/src/components/manage/moderation/InstancePolicyForm.vue:17 +#: front/src/views/admin/moderation/AccountsDetail.vue:156 +#: front/src/views/admin/moderation/AccountsDetail.vue:160 +msgctxt "*/*/*" +msgid "Enabled" +msgstr "" + +#: front/src/views/playlists/Detail.vue:30 +msgctxt "Content/Playlist/Button.Label/Verb" +msgid "End edition" +msgstr "" + +#: front/src/views/content/remote/ScanForm.vue:50 +msgctxt "Content/Library/Input.Placeholder" +msgid "Enter a library URL" +msgstr "" + +#: front/src/components/library/Radios.vue:141 +msgctxt "Content/Search/Input.Placeholder" +msgid "Enter a radio name…" +msgstr "" + +#: front/src/components/library/Albums.vue:119 +msgctxt "Content/Search/Input.Placeholder" +msgid "Enter album title..." +msgstr "" + +#: front/src/components/library/Artists.vue:116 +msgctxt "Content/Search/Input.Placeholder" +msgid "Enter artist name…" +msgstr "" + +#: front/src/views/playlists/List.vue:107 +msgctxt "Content/Playlist/Placeholder/Call to action" +msgid "Enter playlist name…" +msgstr "" + +#: front/src/views/auth/PasswordReset.vue:54 +msgctxt "Content/Signup/Input.Placeholder" +msgid "Enter the email address binded to your account" +msgstr "" + +#: front/src/components/auth/Signup.vue:103 +msgctxt "Content/Signup/Form/Placeholder" +msgid "Enter your email" +msgstr "" + +#: front/src/components/auth/Signup.vue:98 src/components/auth/Signup.vue:100 +msgctxt "Content/Signup/Form/Placeholder" +msgid "Enter your invitation code (case insensitive)" +msgstr "" + +#: front/src/components/metadata/Search.vue:114 +msgctxt "Content/Library/Input.Placeholder/Verb" +msgid "Enter your search query…" +msgstr "" + +#: front/src/components/auth/Signup.vue:102 +msgctxt "Content/Signup/Form/Placeholder" +msgid "Enter your username" +msgstr "" + +#: front/src/components/auth/Login.vue:83 +msgctxt "Content/Login/Input.Placeholder" +msgid "Enter your username or email" +msgstr "" + +#: front/src/components/auth/SubsonicTokenForm.vue:19 +#: front/src/views/content/libraries/Form.vue:4 +msgctxt "Content/*/Error message.Title" +msgid "Error" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:34 +#: front/src/components/library/ImportStatusModal.vue:32 +msgctxt "Popup/Import/Table.Label/Noun" +msgid "Error detail" +msgstr "" + +#: front/src/views/admin/Settings.vue:87 +msgctxt "Content/Admin/Menu" +msgid "Error reporting" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:26 +#: front/src/components/library/ImportStatusModal.vue:24 +msgctxt "Popup/Import/Table.Label/Noun" +msgid "Error type" +msgstr "" + +#: front/src/components/common/ActionTable.vue:94 +msgctxt "Content/*/Error message/Header" +msgid "Error while applying action" +msgstr "" + +#: front/src/views/auth/PasswordReset.vue:7 +msgctxt "Content/Signup/Card.Title" +msgid "Error while asking for a password reset" +msgstr "" + +#: front/src/components/auth/Authorize.vue:6 +msgctxt "Popup/Moderation/Error message" +msgid "Error while authorizing application" +msgstr "" + +#: front/src/views/auth/PasswordResetConfirm.vue:7 +msgctxt "Content/Signup/Card.Title" +msgid "Error while changing your password" +msgstr "" + +#: front/src/views/admin/moderation/DomainsList.vue:6 +msgctxt "Content/Moderation/Message.Title" +msgid "Error while creating domain" +msgstr "" + +#: front/src/components/moderation/FilterModal.vue:13 +msgctxt "Popup/Moderation/Error message" +msgid "Error while creating filter" +msgstr "" + +#: front/src/components/manage/users/InvitationForm.vue:4 +msgctxt "Content/Admin/Error message.Title" +msgid "Error while creating invitation" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyForm.vue:7 +msgctxt "Content/Moderation/Error message.Title" +msgid "Error while creating rule" +msgstr "" + +#: front/src/components/auth/Authorize.vue:7 +msgctxt "Popup/Moderation/Error message" +msgid "Error while fetching application data" +msgstr "" + +#: front/src/views/admin/moderation/DomainsDetail.vue:118 +msgctxt "Content/Moderation/Table" +msgid "Error while fetching node info" +msgstr "" + +#: front/src/components/admin/SettingsGroup.vue:5 +msgctxt "Content/Settings/Error message.Title" +msgid "Error while saving settings" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:73 +msgctxt "Content/*/Error message.Title" +msgid "Error while saving settings" +msgstr "" + +#: front/src/components/library/EditForm.vue:46 +msgctxt "Content/Library/Error message.Title" +msgid "Error while submitting edit" +msgstr "" + +#: front/src/components/mixins/Translations.vue:32 +#: front/src/components/mixins/Translations.vue:33 +msgctxt "Content/Library/Table/Short" +msgid "Errored" +msgstr "" + +#: front/src/views/content/libraries/Quota.vue:75 +msgctxt "Content/Library/Label" +msgid "Errored files" +msgstr "" + +#: front/src/components/mixins/Translations.vue:17 +#: front/src/components/mixins/Translations.vue:18 +msgctxt "Content/Settings/Dropdown/Short" +msgid "Everyone" +msgstr "" + +#: front/src/components/mixins/Translations.vue:11 +#: front/src/components/mixins/Translations.vue:12 +msgctxt "Content/Settings/Dropdown" +msgid "Everyone on this instance" +msgstr "" + +#: front/src/components/mixins/Translations.vue:12 +#: front/src/components/mixins/Translations.vue:13 +msgctxt "Content/Settings/Dropdown" +msgid "Everyone, across all instances" +msgstr "" + +#: front/src/components/library/radios/Builder.vue:62 +msgctxt "Content/Radio/Table.Label/Verb" +msgid "Exclude" +msgstr "" + +#: front/src/components/manage/users/InvitationsTable.vue:41 +#: front/src/components/mixins/Translations.vue:49 +#: front/src/components/mixins/Translations.vue:50 +msgctxt "Content/Admin/Table.Label/Noun" +msgid "Expiration date" +msgstr "" + +#: front/src/components/manage/users/InvitationsTable.vue:50 +msgctxt "Content/Admin/Table" +msgid "Expired" +msgstr "" + +#: front/src/components/manage/users/InvitationsTable.vue:21 +msgctxt "Content/Admin/Dropdown/Adjective" +msgid "Expired/used" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyForm.vue:110 +msgctxt "Content/Moderation/Help text" +msgid "Explain why you're applying this policy. Depending on your instance configuration, this will help you remember why you acted on this account or domain, and may be displayed publicly to help users understand what moderation rules are in place." +msgstr "" + +#: front/src/components/manage/library/UploadsTable.vue:25 +#: front/src/views/content/libraries/FilesTable.vue:16 +msgctxt "Content/Library/Dropdown" +msgid "Failed" +msgstr "" + +#: front/src/views/content/remote/Card.vue:62 +msgctxt "Content/Library/Card.List item/Noun" +msgid "Failed tracks:" +msgstr "" + +#: front/src/views/admin/library/AlbumDetail.vue:165 +#: front/src/views/admin/library/ArtistDetail.vue:154 +#: front/src/views/admin/library/TrackDetail.vue:217 +msgctxt "*/*/*" +msgid "Favorited tracks" +msgstr "" + +#: front/src/components/Sidebar.vue:66 +msgctxt "Sidebar/Favorites/List item.Link/Noun" +msgid "Favorites" +msgstr "" + +#: front/src/components/mixins/Translations.vue:76 +#: front/src/components/mixins/Translations.vue:77 +msgctxt "Content/OAuth Scopes/Label" +msgid "Favorites" +msgstr "" + +#: front/src/views/admin/Settings.vue:84 +msgctxt "Content/Admin/Menu" +msgid "Federation" +msgstr "" + +#: front/src/components/library/TrackDetail.vue:66 +msgctxt "Content/*/*/Noun" +msgid "Federation ID" +msgstr "" + +#: front/src/components/library/EditCard.vue:45 +msgctxt "Content/Library/Card.Table.Header/Short" +msgid "Field" +msgstr "" + +#: front/src/components/library/FileUpload.vue:93 +msgctxt "Content/Library/Table.Label" +msgid "Filename" +msgstr "" + +#: front/src/components/library/radios/Builder.vue:61 +msgctxt "Content/Radio/Table.Label/Noun" +msgid "Filter name" +msgstr "" + +#: front/src/components/manage/library/UploadsTable.vue:26 +#: front/src/components/mixins/Translations.vue:36 +#: front/src/views/content/libraries/FilesTable.vue:17 +#: front/src/components/mixins/Translations.vue:37 +msgctxt "Content/Library/*" +msgid "Finished" +msgstr "" + +#: front/src/components/manage/moderation/AccountsTable.vue:42 +#: front/src/components/manage/moderation/DomainsTable.vue:41 +#: front/src/views/admin/library/AlbumDetail.vue:149 +#: front/src/views/admin/library/ArtistDetail.vue:138 +#: front/src/views/admin/library/LibraryDetail.vue:153 +#: front/src/views/admin/library/TrackDetail.vue:201 +#: front/src/views/admin/library/UploadDetail.vue:167 +#: front/src/views/admin/moderation/AccountsDetail.vue:235 +#: front/src/views/admin/moderation/DomainsDetail.vue:151 +msgctxt "Content/Moderation/Table.Label/Short (Value is a date)" +msgid "First seen" +msgstr "" + +#: front/src/components/mixins/Translations.vue:46 +#: front/src/components/mixins/Translations.vue:47 +msgctxt "Content/Moderation/Dropdown/Noun" +msgid "First seen date" +msgstr "" + +#: front/src/views/content/remote/Card.vue:87 +msgctxt "Content/Library/Card.Button.Label/Verb" +msgid "Follow" +msgstr "" + +#: front/src/views/content/Home.vue:16 +msgctxt "Content/Library/Title/Verb" +msgid "Follow remote libraries" +msgstr "" + +#: front/src/views/content/remote/Card.vue:92 +msgctxt "Content/Library/Card.Paragraph" +msgid "Follow request pending approval" +msgstr "" + +#: front/src/components/mixins/Translations.vue:64 +#: front/src/views/admin/library/LibraryDetail.vue:161 +#: front/src/views/content/libraries/Detail.vue:7 +#: front/src/components/mixins/Translations.vue:65 +msgctxt "Content/Federation/*/Noun" +msgid "Followers" +msgstr "" + +#: front/src/components/manage/library/LibrariesTable.vue:53 +msgctxt "Content/*/*/Noun" +msgid "Followers" +msgstr "" + +#: front/src/views/content/remote/Card.vue:103 +msgctxt "Content/Library/Card.Paragraph" +msgid "Following" +msgstr "" + +#: front/src/components/mixins/Translations.vue:84 +#: front/src/components/mixins/Translations.vue:85 +msgctxt "Content/OAuth Scopes/Label" +msgid "Follows" +msgstr "" + +#: front/src/components/library/TrackBase.vue:17 +msgctxt "Content/Track/Paragraph" +msgid "From album %{ album } by %{ artist }" +msgstr "" + +#: front/src/components/auth/Authorize.vue:28 +msgctxt "Content/Auth/Label/Noun" +msgid "Full access" +msgstr "" + +#: front/src/components/auth/SubsonicTokenForm.vue:7 +msgctxt "Content/Settings/Paragraph'" +msgid "Funkwhale is compatible with other music players that support the Subsonic API." +msgstr "" + +#: front/src/components/Home.vue:90 +msgctxt "Content/Home/Paragraph" +msgid "Funkwhale is dead simple to use." +msgstr "" + +#: front/src/components/Home.vue:39 +msgctxt "Content/Home/Paragraph" +msgid "Funkwhale is designed to make it easy to listen to music you like, or to discover new artists." +msgstr "" + +#: front/src/components/Home.vue:111 +msgctxt "Content/Home/Paragraph" +msgid "Funkwhale is free and gives you control on your music." +msgstr "" + +#: front/src/components/Home.vue:66 +msgctxt "Content/Home/Paragraph" +msgid "Funkwhale takes care of handling your music" +msgstr "" + +#: front/src/components/ShortcutsModal.vue:38 +msgctxt "Popup/Keyboard shortcuts/Title" +msgid "General shortcuts" +msgstr "" + +#: front/src/components/manage/users/InvitationForm.vue:16 +msgctxt "Content/Admin/Button.Label/Verb" +msgid "Get a new invitation" +msgstr "" + +#: front/src/components/Home.vue:13 +msgctxt "Content/Home/Button.Label/Verb" +msgid "Get me to the library" +msgstr "" + +#: front/src/components/Home.vue:70 +msgctxt "Content/Home/List item/Verb" +msgid "Get quality metadata about your music thanks to MusicBrainz" +msgstr "" + +#: front/src/views/content/Home.vue:12 src/views/content/Home.vue:19 +msgctxt "Content/Library/Button.Label/Verb" +msgid "Get started" +msgstr "" + +#: front/src/components/Footer.vue:37 +msgctxt "Footer/*/Link" +msgid "Getting help" +msgstr "" + +#: front/src/components/library/ImportStatusModal.vue:45 +msgctxt "Popup/Import/Table.Label/Noun" +msgid "Getting help" +msgstr "" + +#: front/src/components/common/ActionTable.vue:35 +#: front/src/components/common/ActionTable.vue:56 +msgctxt "Content/*/Button.Label/Short, Verb" +msgid "Go" +msgstr "" + +#: front/src/components/PageNotFound.vue:14 +msgctxt "Content/*/Button.Label/Verb" +msgid "Go to home page" +msgstr "" + +#: front/src/components/auth/Settings.vue:128 +msgctxt "Content/Settings/Title" +msgid "Hidden artists" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyForm.vue:114 +msgctxt "Content/Moderation/Help text" +msgid "Hide account or domain content, except from followers." +msgstr "" + +#: front/src/components/moderation/FilterModal.vue:40 +msgctxt "Popup/*/Button.Label" +msgid "Hide content" +msgstr "" + +#: front/src/components/audio/PlayButton.vue:26 +msgctxt "*/Queue/Dropdown/Button/Label/Short" +msgid "Hide content from this artist" +msgstr "" + +#: front/src/components/audio/Player.vue:643 +msgctxt "Sidebar/Player/Icon.Tooltip/Verb" +msgid "Hide content from this artist…" +msgstr "" + +#: front/src/components/library/Home.vue:65 +msgctxt "Head/Home/Title" +msgid "Home" +msgstr "" + +#: front/src/components/instance/Stats.vue:36 +msgctxt "Content/About/Paragraph/Unit" +msgid "Hours of music" +msgstr "" + +#: front/src/components/auth/SubsonicTokenForm.vue:10 +msgctxt "Content/Settings/Paragraph" +msgid "However, accessing Funkwhale from those clients require a separate password you can set below." +msgstr "" + +#: front/src/views/auth/PasswordResetConfirm.vue:24 +msgctxt "Content/Signup/Paragraph" +msgid "If the email address provided in the previous step is valid and binded to a user account, you should receive an email with reset instructions in the next couple of minutes." +msgstr "" + +#: front/src/components/auth/Settings.vue:205 +msgctxt "Content/Applications/Paragraph" +msgid "If you authorize third-party applications to access your data, those applications will be listed here." +msgstr "" + +#: front/src/components/library/ImportStatusModal.vue:3 +msgctxt "Popup/Import/Title" +msgid "Import detail" +msgstr "" + +#: front/src/components/library/FileUpload.vue:50 +msgctxt "Content/Library/Input.Label/Noun" +msgid "Import reference" +msgstr "" + +#: front/src/components/manage/library/UploadsTable.vue:20 +#: front/src/views/content/libraries/FilesTable.vue:11 +#: front/src/views/content/libraries/FilesTable.vue:59 +msgctxt "Content/Library/*/Noun" +msgid "Import status" +msgstr "" + +#: front/src/components/manage/library/UploadsTable.vue:64 +#: front/src/views/admin/library/UploadDetail.vue:131 +msgctxt "Content/*/*/Noun" +msgid "Import status" +msgstr "" + +#: front/src/components/mixins/Translations.vue:37 +#: front/src/components/mixins/Translations.vue:38 +msgctxt "Content/Library/Help text" +msgid "Imported" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:47 +msgctxt "*/*/Error" +msgid "Impossible to connect to the remote server" +msgstr "" + +#: front/src/components/moderation/FilterModal.vue:26 +msgctxt "Popup/Moderation/List item" +msgid "In \"Recently added\" widget" +msgstr "" + +#: front/src/components/moderation/FilterModal.vue:27 +msgctxt "Popup/Moderation/List item" +msgid "In artists and album listings" +msgstr "" + +#: front/src/components/favorites/TrackFavoriteIcon.vue:3 +msgctxt "Content/Track/Button.Message" +msgid "In favorites" +msgstr "" + +#: front/src/components/moderation/FilterModal.vue:25 +msgctxt "Popup/Moderation/List item" +msgid "In other users favorites and listening history" +msgstr "" + +#: front/src/components/moderation/FilterModal.vue:28 +msgctxt "Popup/Moderation/List item" +msgid "In radio suggestions" +msgstr "" + +#: front/src/components/manage/users/UsersTable.vue:54 +msgctxt "Content/Admin/Table" +msgid "Inactive" +msgstr "" + +#: front/src/components/ShortcutsModal.vue:71 +msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb" +msgid "Increase volume" +msgstr "" + +#: front/src/components/playlists/Editor.vue:41 +msgctxt "Content/Playlist/Button.Label/Verb" +msgid "Insert from queue (%{ count } track)" +msgid_plural "Insert from queue (%{ count } tracks)" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: front/src/components/mixins/Translations.vue:16 +#: front/src/components/mixins/Translations.vue:17 +msgctxt "Content/Settings/Dropdown/Short" +msgid "Instance" +msgstr "" + +#: front/src/views/admin/moderation/DomainsDetail.vue:71 +msgctxt "Content/Moderation/Title" +msgid "Instance data" +msgstr "" + +#: front/src/views/admin/Settings.vue:80 +msgctxt "Content/Admin/Menu" +msgid "Instance information" +msgstr "" + +#: front/src/components/library/Radios.vue:9 +msgctxt "Content/Radio/Title" +msgid "Instance radios" +msgstr "" + +#: front/src/views/admin/Settings.vue:75 +msgctxt "Head/Admin/Title" +msgid "Instance settings" +msgstr "" + +#: front/src/components/SetInstanceModal.vue:19 +msgctxt "Popup/Instance/Input.Label/Noun" +msgid "Instance URL" +msgstr "" + +#: front/src/components/library/FileUpload.vue:268 +msgctxt "Content/Library/Help text" +msgid "Invalid file type, ensure you are uploading an audio file. Supported file extensions are %{ extensions }" +msgstr "" + +#: front/src/components/library/ImportStatusModal.vue:139 +msgctxt "Popup/Import/Error.Label" +msgid "Invalid metadata" +msgstr "" + +#: front/src/components/auth/Signup.vue:44 +#: front/src/components/manage/users/InvitationForm.vue:11 +msgctxt "Content/*/Input.Label" +msgid "Invitation code" +msgstr "" + +#: front/src/views/admin/users/Base.vue:8 +#: front/src/views/admin/users/InvitationsList.vue:24 +msgctxt "*/Admin/*/Noun" +msgid "Invitations" +msgstr "" + +#: front/src/components/Footer.vue:41 +msgctxt "Footer/*/List item.Link" +msgid "Issue tracker" +msgstr "" + +#: front/src/components/SetInstanceModal.vue:5 +msgctxt "Popup/Instance/Error message.Title" +msgid "It is not possible to connect to the given URL" +msgstr "" + +#: front/src/components/Home.vue:50 +msgctxt "Content/Home/List item/Verb" +msgid "Keep a track of your favorite songs" +msgstr "" + +#: front/src/components/Footer.vue:33 src/components/ShortcutsModal.vue:3 +msgctxt "*/*/*/Noun" +msgid "Keyboard shortcuts" +msgstr "" + +#: front/src/views/admin/moderation/DomainsDetail.vue:161 +msgctxt "Content/Moderation/Table.Label.Link" +msgid "Known accounts" +msgstr "" + +#: front/src/views/content/remote/Home.vue:14 +msgctxt "Content/Library/Title" +msgid "Known libraries" +msgstr "" + +#: front/src/components/manage/users/UsersTable.vue:41 +#: front/src/components/mixins/Translations.vue:58 +#: front/src/views/admin/moderation/AccountsDetail.vue:205 +#: front/src/components/mixins/Translations.vue:59 +msgctxt "Content/Profile/Table.Label/Short, Noun (Value is a date)" +msgid "Last activity" +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:188 +#: front/src/views/admin/moderation/DomainsDetail.vue:78 +msgctxt "Content/*/Table.Label" +msgid "Last checked" +msgstr "" + +#: front/src/components/playlists/PlaylistModal.vue:46 +msgctxt "Popup/Playlist/Table.Label/Short" +msgid "Last modification" +msgstr "" + +#: front/src/components/manage/moderation/AccountsTable.vue:43 +msgctxt "Content/Moderation/Table.Label/Noun" +msgid "Last seen" +msgstr "" + +#: front/src/components/mixins/Translations.vue:47 +#: front/src/components/mixins/Translations.vue:48 +msgctxt "Content/Moderation/Dropdown/Noun" +msgid "Last seen date" +msgstr "" + +#: front/src/views/content/remote/Card.vue:60 +msgctxt "Content/Library/Card.List item/Noun" +msgid "Last update:" +msgstr "" + +#: front/src/components/common/ActionTable.vue:49 +msgctxt "Modal/*/Button.Label/Short, Verb" +msgid "Launch" +msgstr "" + +#: front/src/components/Home.vue:10 +msgctxt "Content/Home/Button.Label/Verb" +msgid "Learn more about this instance" +msgstr "" + +#: front/src/components/manage/users/InvitationForm.vue:58 +msgctxt "Content/Admin/Input.Placeholder" +msgid "Leave empty for a random code" +msgstr "" + +#: front/src/components/audio/EmbedWizard.vue:7 +msgctxt "Popup/Embed/Paragraph" +msgid "Leave empty for a responsive widget" +msgstr "" + +#: front/src/views/admin/library/AlbumDetail.vue:232 +#: front/src/views/admin/library/ArtistDetail.vue:221 +#: front/src/views/admin/library/TrackDetail.vue:284 +#: front/src/views/admin/moderation/AccountsDetail.vue:327 +#: front/src/views/admin/moderation/DomainsDetail.vue:234 +#: front/src/views/content/Base.vue:5 +msgctxt "*/*/*/Noun" +msgid "Libraries" +msgstr "" + +#: front/src/views/admin/library/Base.vue:17 +#: front/src/views/admin/library/LibrariesList.vue:24 +msgctxt "*/*/*" +msgid "Libraries" +msgstr "" + +#: front/src/components/mixins/Translations.vue:72 +#: front/src/components/mixins/Translations.vue:73 +msgctxt "Content/OAuth Scopes/Label" +msgid "Libraries and uploads" +msgstr "" + +#: front/src/views/content/libraries/Form.vue:2 +msgctxt "Content/Library/Paragraph" +msgid "Libraries help you organize and share your music collections. You can upload your own music collection to Funkwhale and share it with your friends and family." +msgstr "" + +#: front/src/components/Sidebar.vue:85 src/components/instance/Stats.vue:30 +#: front/src/components/manage/library/UploadsTable.vue:60 +#: front/src/components/manage/users/UsersTable.vue:173 +#: front/src/views/admin/library/UploadDetail.vue:144 +#: front/src/views/admin/moderation/AccountsDetail.vue:498 +msgctxt "*/*/*" +msgid "Library" +msgstr "" + +#: front/src/views/content/libraries/Form.vue:103 +msgctxt "Content/Library/Message" +msgid "Library created" +msgstr "" + +#: front/src/views/admin/library/LibraryDetail.vue:78 +msgctxt "Content/Moderation/Title" +msgid "Library data" +msgstr "" + +#: front/src/views/content/libraries/Form.vue:123 +msgctxt "Content/Library/Message" +msgid "Library deleted" +msgstr "" + +#: front/src/views/admin/library/EditsList.vue:4 +msgctxt "Content/Admin/Title/Noun" +msgid "Library edits" +msgstr "" + +#: front/src/views/content/libraries/Form.vue:100 +msgctxt "Content/Library/Message" +msgid "Library updated" +msgstr "" + +#: front/src/components/library/TrackDetail.vue:19 +#: front/src/components/manage/library/TracksTable.vue:43 +#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:61 +msgctxt "Content/*/*/Noun" +msgid "License" +msgstr "" + +#: front/src/views/admin/library/AlbumDetail.vue:157 +#: front/src/views/admin/library/ArtistDetail.vue:146 +#: front/src/views/admin/library/TrackDetail.vue:209 +msgctxt "*/*/*/Noun" +msgid "Listenings" +msgstr "" + +#: front/src/components/mixins/Translations.vue:80 +#: front/src/components/mixins/Translations.vue:81 +msgctxt "Content/OAuth Scopes/Label" +msgid "Listenings" +msgstr "" + +#: front/src/components/audio/track/Table.vue:25 +#: front/src/components/library/ArtistDetail.vue:28 +msgctxt "Content/*/Button.Label" +msgid "Load more…" +msgstr "" + +#: front/src/views/content/libraries/Detail.vue:21 +msgctxt "Content/Library/Paragraph" +msgid "Loading followers…" +msgstr "" + +#: front/src/views/content/libraries/Home.vue:3 +msgctxt "Content/Library/Paragraph" +msgid "Loading Libraries…" +msgstr "" + +#: front/src/views/content/libraries/Detail.vue:3 +#: front/src/views/content/libraries/Upload.vue:3 +msgctxt "Content/Library/Paragraph" +msgid "Loading library data…" +msgstr "" + +#: front/src/views/Notifications.vue:19 +msgctxt "Content/Notifications/Paragraph" +msgid "Loading notifications…" +msgstr "" + +#: front/src/views/content/remote/Home.vue:3 +msgctxt "Content/Library/Paragraph" +msgid "Loading remote libraries…" +msgstr "" + +#: front/src/views/content/libraries/Quota.vue:4 +msgctxt "Content/Library/Paragraph" +msgid "Loading usage data…" +msgstr "" + +#: front/src/components/favorites/List.vue:5 +msgctxt "Content/Favorites/Message" +msgid "Loading your favorites…" +msgstr "" + +#: front/src/components/manage/library/AlbumsTable.vue:65 +#: front/src/components/manage/library/ArtistsTable.vue:58 +#: front/src/components/manage/library/LibrariesTable.vue:75 +#: front/src/components/manage/library/TracksTable.vue:71 +#: front/src/components/manage/library/UploadsTable.vue:99 +#: front/src/views/admin/library/AlbumDetail.vue:19 +#: front/src/views/admin/library/ArtistDetail.vue:18 +#: front/src/views/admin/library/LibraryDetail.vue:18 +#: front/src/views/admin/library/TrackDetail.vue:18 +#: front/src/views/admin/library/UploadDetail.vue:19 +msgctxt "Content/Moderation/*/Short, Noun" +msgid "Local" +msgstr "" + +#: front/src/components/manage/moderation/AccountsTable.vue:59 +#: front/src/views/admin/moderation/AccountsDetail.vue:18 +msgctxt "Content/Moderation/*/Short, Noun" +msgid "Local account" +msgstr "" + +#: front/src/components/auth/Login.vue:84 +msgctxt "Head/Login/Title" +msgid "Log In" +msgstr "" + +#: front/src/components/auth/Login.vue:4 +msgctxt "Content/Login/Title/Verb" +msgid "Log in to your Funkwhale account" +msgstr "" + +#: front/src/components/auth/Logout.vue:20 +msgctxt "Head/Login/Title" +msgid "Log Out" +msgstr "" + +#: front/src/components/Sidebar.vue:38 +msgctxt "Sidebar/Profile/List item.Link" +msgid "Logged in as %{ username }" +msgstr "" + +#: front/src/components/Sidebar.vue:54 src/components/auth/Login.vue:42 +msgctxt "*/Login/*/Verb" +msgid "Login" +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:148 +msgctxt "Content/*/*/Noun" +msgid "Login status" +msgstr "" + +#: front/src/components/Sidebar.vue:52 +msgctxt "Sidebar/Login/List item.Link/Verb" +msgid "Logout" +msgstr "" + +#: front/src/views/content/libraries/Home.vue:9 +msgctxt "Content/Library/Paragraph" +msgid "Looks like you don't have a library, it's time to create one." +msgstr "" + +#: front/src/components/audio/Player.vue:632 +#: src/components/audio/Player.vue:633 +msgctxt "Sidebar/Player/Icon.Tooltip" +msgid "Looping disabled. Click to switch to single-track looping." +msgstr "" + +#: front/src/components/audio/Player.vue:635 +#: src/components/audio/Player.vue:636 +msgctxt "Sidebar/Player/Icon.Tooltip" +msgid "Looping on a single track. Click to switch to whole queue looping." +msgstr "" + +#: front/src/components/audio/Player.vue:638 +#: src/components/audio/Player.vue:639 +msgctxt "Sidebar/Player/Icon.Tooltip" +msgid "Looping on whole queue. Click to disable looping." +msgstr "" + +#: front/src/components/Sidebar.vue:223 +msgctxt "Sidebar/*/Hidden text" +msgid "Main menu" +msgstr "" + +#: front/src/views/admin/library/Base.vue:31 +msgctxt "Head/Admin/Title" +msgid "Manage library" +msgstr "" + +#: front/src/components/playlists/PlaylistModal.vue:3 +msgctxt "Popup/Playlist/Title/Verb" +msgid "Manage playlists" +msgstr "" + +#: front/src/views/admin/users/Base.vue:20 +msgctxt "Head/Admin/Title" +msgid "Manage users" +msgstr "" + +#: front/src/views/playlists/List.vue:8 +msgctxt "Content/Playlist/Button.Label/Verb" +msgid "Manage your playlists" +msgstr "" + +#: front/src/views/Notifications.vue:14 +msgctxt "Content/Notifications/Button.Label/Verb" +msgid "Mark all as read" +msgstr "" + +#: front/src/components/notifications/NotificationRow.vue:46 +msgctxt "Content/Notifications/Button.Tooltip/Verb" +msgid "Mark as read" +msgstr "" + +#: front/src/components/notifications/NotificationRow.vue:47 +msgctxt "Content/Notifications/Button.Tooltip/Verb" +msgid "Mark as unread" +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:310 +msgctxt "Content/*/*/Unit" +msgid "MB" +msgstr "" + +#: front/src/components/audio/Player.vue:625 +msgctxt "Sidebar/Player/Hidden text" +msgid "Media player" +msgstr "" + +#: front/src/components/auth/Profile.vue:12 +msgctxt "Content/Profile/Paragraph" +msgid "Member since %{ date }" +msgstr "" + +#: front/src/components/Footer.vue:32 +msgctxt "Footer/*/List item.Link" +msgid "Mobile and desktop apps" +msgstr "" + +#: front/src/components/Sidebar.vue:96 +#: src/components/manage/users/UsersTable.vue:177 +#: front/src/views/admin/moderation/AccountsDetail.vue:502 +#: front/src/views/admin/moderation/Base.vue:21 +msgctxt "*/Moderation/*" +msgid "Moderation" +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:78 +#: front/src/views/admin/moderation/DomainsDetail.vue:42 +msgctxt "Content/Moderation/Card.Paragraph" +msgid "Moderation policies help you control how your instance interact with a given domain or account." +msgstr "" + +#: front/src/components/library/EditCard.vue:5 +msgctxt "Content/Library/Card/Short" +msgid "Modification %{ id }" +msgstr "" + +#: front/src/components/mixins/Translations.vue:48 +#: front/src/components/mixins/Translations.vue:49 +msgctxt "Content/Playlist/Dropdown/Noun" +msgid "Modification date" +msgstr "" + +#: front/src/components/library/AlbumBase.vue:42 +#: front/src/components/library/ArtistBase.vue:53 +#: front/src/components/library/TrackBase.vue:61 +msgctxt "*/*/Button.Label/Noun" +msgid "More…" +msgstr "" + +#: front/src/components/Sidebar.vue:63 src/views/admin/Settings.vue:82 +msgctxt "*/*/*/Noun" +msgid "Music" +msgstr "" + +#: front/src/components/audio/Player.vue:631 +msgctxt "Sidebar/Player/Icon.Tooltip/Verb" +msgid "Mute" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyCard.vue:24 +#: front/src/components/manage/moderation/InstancePolicyForm.vue:115 +msgctxt "Content/Moderation/*/Verb" +msgid "Mute activity" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyCard.vue:28 +#: front/src/components/manage/moderation/InstancePolicyForm.vue:119 +msgctxt "Content/Moderation/*/Verb" +msgid "Mute notifications" +msgstr "" + +#: front/src/components/Sidebar.vue:34 +msgctxt "Sidebar/Profile/Title" +msgid "My account" +msgstr "" + +#: front/src/components/library/radios/Builder.vue:238 +msgctxt "Content/Radio/Input.Placeholder" +msgid "My awesome description" +msgstr "" + +#: front/src/views/content/libraries/Form.vue:72 +msgctxt "Content/Library/Input.Placeholder" +msgid "My awesome library" +msgstr "" + +#: front/src/components/playlists/Form.vue:76 +msgctxt "Content/Playlist/Input.Placeholder" +msgid "My awesome playlist" +msgstr "" + +#: front/src/components/library/radios/Builder.vue:237 +msgctxt "Content/Radio/Input.Placeholder" +msgid "My awesome radio" +msgstr "" + +#: front/src/views/content/libraries/Home.vue:6 +msgctxt "Content/Library/Title" +msgid "My libraries" +msgstr "" + +#: front/src/components/audio/track/Row.vue:40 +#: src/components/library/EditCard.vue:60 +#: front/src/components/library/EditForm.vue:70 +#: front/src/components/library/TrackDetail.vue:34 +#: front/src/components/library/TrackDetail.vue:43 +#: front/src/components/library/TrackDetail.vue:52 +#: front/src/components/library/TrackDetail.vue:61 +#: front/src/components/manage/library/AlbumsTable.vue:73 +#: front/src/components/manage/library/TracksTable.vue:76 +#: front/src/components/manage/library/UploadsTable.vue:121 +#: front/src/components/manage/library/UploadsTable.vue:128 +#: front/src/components/manage/users/UsersTable.vue:61 +#: front/src/views/admin/library/UploadDetail.vue:179 +#: front/src/views/admin/library/UploadDetail.vue:214 +#: front/src/views/admin/library/UploadDetail.vue:233 +#: front/src/views/admin/library/UploadDetail.vue:244 +#: front/src/views/admin/library/UploadDetail.vue:257 +#: front/src/views/admin/moderation/AccountsDetail.vue:192 +#: front/src/views/admin/moderation/DomainsDetail.vue:82 +#: front/src/views/content/libraries/FilesTable.vue:95 +#: front/src/views/content/libraries/FilesTable.vue:101 +msgctxt "*/*/*" +msgid "N/A" +msgstr "" + +#: front/src/components/manage/library/LibrariesTable.vue:48 +#: front/src/components/manage/library/UploadsTable.vue:59 +msgctxt "*/*/*" +msgid "Name" +msgstr "" + +#: front/src/components/auth/ApplicationForm.vue:9 +msgctxt "Content/Applications/Input.Label/Noun" +msgid "Name" +msgstr "" + +#: front/src/components/auth/Settings.vue:133 +#: front/src/components/manage/library/ArtistsTable.vue:39 +#: front/src/components/manage/moderation/AccountsTable.vue:39 +#: front/src/components/manage/moderation/DomainsTable.vue:38 +#: front/src/components/mixins/Translations.vue:53 +#: front/src/components/playlists/PlaylistModal.vue:45 +#: front/src/views/admin/library/ArtistDetail.vue:98 +#: front/src/views/admin/library/LibraryDetail.vue:85 +#: front/src/views/admin/library/UploadDetail.vue:92 +#: front/src/views/admin/moderation/DomainsDetail.vue:97 +#: front/src/views/content/libraries/Form.vue:10 src/edits.js:10 +#: front/src/components/mixins/Translations.vue:54 +msgctxt "*/*/*/Noun" +msgid "Name" +msgstr "" + +#: front/src/components/auth/Settings.vue:88 +#: front/src/views/auth/PasswordResetConfirm.vue:14 +msgctxt "Content/Settings/Input.Label" +msgid "New password" +msgstr "" + +#: front/src/components/Sidebar.vue:173 +msgctxt "Sidebar/Player/Paragraph" +msgid "New tracks will be appended here automatically." +msgstr "" + +#: front/src/components/library/EditCard.vue:47 +msgctxt "Content/Library/Card.Table.Header/Short" +msgid "New value" +msgstr "" + +#: front/src/components/audio/Player.vue:629 +msgctxt "Sidebar/Player/Icon.Tooltip" +msgid "Next track" +msgstr "" + +#: front/src/components/Sidebar.vue:130 +msgctxt "*/*/*" +msgid "No" +msgstr "" + +#: front/src/components/Home.vue:95 +msgctxt "Content/Home/List item" +msgid "No add-ons, no plugins : you only need a web library" +msgstr "" + +#: front/src/components/audio/Search.vue:25 +msgctxt "Content/Search/Paragraph" +msgid "No album matched your query" +msgstr "" + +#: front/src/components/audio/Search.vue:16 +msgctxt "Content/Search/Paragraph" +msgid "No artist matched your query" +msgstr "" + +#: front/src/components/library/TrackDetail.vue:14 +msgctxt "Content/Track/Table.Paragraph" +msgid "No copyright information available for this track" +msgstr "" + +#: front/src/components/library/TrackDetail.vue:25 +msgctxt "Content/Track/Table.Paragraph" +msgid "No licensing information for this track" +msgstr "" + +#: front/src/components/federation/LibraryWidget.vue:6 +msgctxt "Content/Federation/Paragraph" +msgid "No matching library." +msgstr "" + +#: front/src/views/Notifications.vue:28 +msgctxt "Content/Notifications/Paragraph" +msgid "No notification to show." +msgstr "" + +#: front/src/components/common/EmptyState.vue:7 +msgctxt "Content/*/Paragraph" +msgid "No results were found." +msgstr "" + +#: front/src/components/mixins/Translations.vue:10 +#: front/src/components/mixins/Translations.vue:11 +msgctxt "Content/Settings/Dropdown" +msgid "Nobody except me" +msgstr "" + +#: front/src/views/content/libraries/Detail.vue:57 +msgctxt "Content/Library/Paragraph" +msgid "Nobody is following this library" +msgstr "" + +#: front/src/components/manage/users/InvitationsTable.vue:51 +msgctxt "Content/Admin/Table" +msgid "Not used" +msgstr "" + +#: front/src/components/mixins/Translations.vue:100 +#: front/src/components/mixins/Translations.vue:101 +msgctxt "Content/OAuth Scopes/Label" +msgid "Notifications" +msgstr "" + +#: front/src/components/Sidebar.vue:46 src/views/Notifications.vue:76 +msgctxt "*/Notifications/*" +msgid "Notifications" +msgstr "" + +#: front/src/components/Footer.vue:47 +msgctxt "Footer/*/List item.Link" +msgid "Official website" +msgstr "" + +#: front/src/components/auth/Settings.vue:83 +msgctxt "Content/Settings/Input.Label" +msgid "Old password" +msgstr "" + +#: front/src/components/library/EditCard.vue:46 +msgctxt "Content/Library/Card.Table.Header/Short" +msgid "Old value" +msgstr "" + +#: front/src/components/manage/users/InvitationsTable.vue:20 +msgctxt "Content/Admin/Dropdown/Adjective" +msgid "Open" +msgstr "" + +#: front/src/components/library/ImportStatusModal.vue:56 +msgctxt "Popup/Import/Table.Label/Value" +msgid "Open a support thread (include the debug information below in your message)" +msgstr "" + +#: front/src/components/library/AlbumBase.vue:73 +#: front/src/components/library/ArtistBase.vue:84 +#: front/src/components/library/TrackBase.vue:92 +msgctxt "Content/Moderation/Link" +msgid "Open in moderation interface" +msgstr "" + +#: front/src/views/admin/library/AlbumDetail.vue:31 +#: front/src/views/admin/library/ArtistDetail.vue:30 +#: front/src/views/admin/library/TrackDetail.vue:30 +msgctxt "Content/Moderation/Link/Verb" +msgid "Open local profile" +msgstr "" + +#: front/src/views/admin/library/AlbumDetail.vue:46 +#: front/src/views/admin/library/ArtistDetail.vue:45 +#: front/src/views/admin/library/TrackDetail.vue:45 +msgctxt "Content/Moderation/Link/Verb" +msgid "Open on MusicBrainz" +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:23 +msgctxt "Content/Moderation/Link/Verb" +msgid "Open profile" +msgstr "" + +#: front/src/views/admin/library/AlbumDetail.vue:54 +#: front/src/views/admin/library/ArtistDetail.vue:53 +#: front/src/views/admin/library/LibraryDetail.vue:49 +#: front/src/views/admin/library/TrackDetail.vue:53 +#: front/src/views/admin/library/UploadDetail.vue:50 +#: front/src/views/admin/moderation/AccountsDetail.vue:52 +msgctxt "Content/Moderation/Link/Verb" +msgid "Open remote profile" +msgstr "" + +#: front/src/views/admin/moderation/DomainsDetail.vue:16 +msgctxt "Content/Moderation/Link/Verb" +msgid "Open website" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyForm.vue:40 +msgctxt "Content/Moderation/Card.Title" +msgid "Or customize your rule" +msgstr "" + +#: front/src/components/favorites/List.vue:32 +#: src/components/library/Radios.vue:41 +#: front/src/components/manage/library/EditsCardList.vue:37 +#: front/src/components/manage/users/UsersTable.vue:17 +#: front/src/views/playlists/List.vue:25 +msgctxt "Content/Search/Dropdown.Label/Noun" +msgid "Order" +msgstr "" + +#: front/src/components/favorites/List.vue:24 +#: src/components/library/Albums.vue:15 +#: front/src/components/library/Artists.vue:15 +#: src/components/library/Radios.vue:33 +#: front/src/components/manage/library/AlbumsTable.vue:11 +#: front/src/components/manage/library/ArtistsTable.vue:11 +#: front/src/components/manage/library/EditsCardList.vue:29 +#: front/src/components/manage/library/LibrariesTable.vue:20 +#: front/src/components/manage/library/TracksTable.vue:11 +#: front/src/components/manage/library/UploadsTable.vue:30 +#: front/src/components/manage/moderation/AccountsTable.vue:11 +#: front/src/components/manage/moderation/DomainsTable.vue:9 +#: front/src/components/manage/users/InvitationsTable.vue:9 +#: front/src/components/manage/users/UsersTable.vue:9 +#: front/src/views/content/libraries/FilesTable.vue:21 +#: front/src/views/playlists/List.vue:17 +msgctxt "Content/Search/Dropdown.Label/Noun" +msgid "Ordering" +msgstr "" + +#: front/src/components/library/Albums.vue:23 +#: src/components/library/Artists.vue:23 +#: front/src/components/manage/library/AlbumsTable.vue:19 +#: front/src/components/manage/library/ArtistsTable.vue:19 +#: front/src/components/manage/library/LibrariesTable.vue:28 +#: front/src/components/manage/library/TracksTable.vue:19 +#: front/src/components/manage/library/UploadsTable.vue:38 +#: front/src/components/manage/moderation/AccountsTable.vue:19 +#: front/src/components/manage/moderation/DomainsTable.vue:17 +#: front/src/views/content/libraries/FilesTable.vue:29 +msgctxt "Content/Search/Dropdown.Label/Noun" +msgid "Ordering direction" +msgstr "" + +#: front/src/components/manage/users/InvitationsTable.vue:38 +msgctxt "Content/Admin/Table.Label" +msgid "Owner" +msgstr "" + +#: front/src/components/PageNotFound.vue:33 +msgctxt "Head/*/Title" +msgid "Page Not Found" +msgstr "" + +#: front/src/components/PageNotFound.vue:7 +msgctxt "Content/*/Title" +msgid "Page not found!" +msgstr "" + +#: front/src/components/Pagination.vue:39 +msgctxt "Content/*/Hidden text/Noun" +msgid "Pagination" +msgstr "" + +#: front/src/components/auth/Login.vue:33 src/components/auth/Signup.vue:40 +msgctxt "Content/*/Input.Label" +msgid "Password" +msgstr "" + +#: front/src/components/auth/SubsonicTokenForm.vue:94 +msgctxt "Content/Settings/Message" +msgid "Password updated" +msgstr "" + +#: front/src/views/auth/PasswordResetConfirm.vue:28 +msgctxt "Content/Signup/Card.Title" +msgid "Password updated successfully" +msgstr "" + +#: front/src/components/audio/Player.vue:628 +msgctxt "Sidebar/Player/Icon.Tooltip/Verb" +msgid "Pause track" +msgstr "" + +#: front/src/components/ShortcutsModal.vue:59 +msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb" +msgid "Pause/play the current track" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyCard.vue:12 +msgctxt "Content/Moderation/Card.List item" +msgid "Paused" +msgstr "" + +#: front/src/components/library/FileUpload.vue:116 +#: front/src/components/manage/library/UploadsTable.vue:23 +#: front/src/components/mixins/Translations.vue:28 +#: front/src/views/content/libraries/FilesTable.vue:14 +#: front/src/components/mixins/Translations.vue:29 +msgctxt "Content/Library/*/Short" +msgid "Pending" +msgstr "" + +#: front/src/views/content/libraries/Detail.vue:37 +msgctxt "Content/Library/Table/Short" +msgid "Pending approval" +msgstr "" + +#: front/src/views/content/libraries/Quota.vue:22 +msgctxt "Content/Library/Label" +msgid "Pending files" +msgstr "" + +#: front/src/components/Sidebar.vue:225 +msgctxt "Sidebar/Notifications/Hidden text" +msgid "Pending follow requests" +msgstr "" + +#: front/src/components/library/EditCard.vue:29 +#: front/src/components/manage/library/EditsCardList.vue:18 +msgctxt "Content/Admin/*/Noun" +msgid "Pending review" +msgstr "" + +#: front/src/components/Sidebar.vue:226 +msgctxt "Sidebar/Moderation/Hidden text" +msgid "Pending review edits" +msgstr "" + +#: front/src/components/manage/users/UsersTable.vue:42 +#: front/src/views/admin/moderation/AccountsDetail.vue:166 +msgctxt "Content/Admin/Table.Label/Noun" +msgid "Permissions" +msgstr "" + +#: front/src/components/auth/Settings.vue:176 +msgctxt "Content/*/*/Noun" +msgid "Permissions" +msgstr "" + +#: front/src/components/audio/PlayButton.vue:9 +#: front/src/components/library/TrackBase.vue:26 +msgctxt "*/Queue/Button.Label/Short, Verb" +msgid "Play" +msgstr "" + +#: front/src/components/audio/album/Card.vue:48 +#: front/src/components/audio/artist/Card.vue:44 +#: front/src/components/library/AlbumBase.vue:20 +#: front/src/components/library/AlbumDetail.vue:11 +#: src/views/playlists/Detail.vue:24 +msgctxt "Content/Queue/Button.Label/Short, Verb" +msgid "Play all" +msgstr "" + +#: front/src/components/library/ArtistBase.vue:31 +msgctxt "Content/Artist/Button.Label/Verb" +msgid "Play all albums" +msgstr "" + +#: front/src/components/audio/PlayButton.vue:76 +msgctxt "*/Queue/Dropdown/Button/Title" +msgid "Play next" +msgstr "" + +#: front/src/components/ShortcutsModal.vue:67 +msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb" +msgid "Play next track" +msgstr "" + +#: front/src/components/audio/PlayButton.vue:74 +msgctxt "*/Queue/Dropdown/Button/Title" +msgid "Play now" +msgstr "" + +#: front/src/components/ShortcutsModal.vue:63 +msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb" +msgid "Play previous track" +msgstr "" + +#: front/src/components/audio/PlayButton.vue:77 +msgctxt "*/Queue/Dropdown/Button/Title" +msgid "Play similar songs" +msgstr "" + +#: front/src/components/Sidebar.vue:224 +msgctxt "Sidebar/Player/Hidden text" +msgid "Play this track" +msgstr "" + +#: front/src/components/audio/Player.vue:627 +msgctxt "Sidebar/Player/Icon.Tooltip/Verb" +msgid "Play track" +msgstr "" + +#: front/src/components/audio/PlayButton.vue:82 +msgctxt "*/Queue/Button/Title" +msgid "Play..." +msgstr "" + +#: front/src/views/playlists/Detail.vue:91 +msgctxt "Head/Playlist/Title" +msgid "Playlist" +msgstr "" + +#: front/src/views/playlists/Detail.vue:12 +msgctxt "Content/Playlist/Header.Subtitle" +msgid "Playlist containing %{ count } track, by %{ username }" +msgid_plural "Playlist containing %{ count } tracks, by %{ username }" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: front/src/components/playlists/Form.vue:9 +msgctxt "Content/Playlist/Message" +msgid "Playlist created" +msgstr "" + +#: front/src/components/playlists/Editor.vue:4 +msgctxt "Content/Playlist/Title" +msgid "Playlist editor" +msgstr "" + +#: front/src/components/playlists/Form.vue:21 +msgctxt "Content/Playlist/Input.Label" +msgid "Playlist name" +msgstr "" + +#: front/src/components/playlists/Form.vue:6 +msgctxt "Content/Playlist/Message" +msgid "Playlist updated" +msgstr "" + +#: front/src/components/playlists/Form.vue:25 +msgctxt "Content/Playlist/Dropdown.Label" +msgid "Playlist visibility" +msgstr "" + +#: front/src/components/mixins/Translations.vue:88 +#: front/src/components/mixins/Translations.vue:89 +msgctxt "Content/OAuth Scopes/Label" +msgid "Playlists" +msgstr "" + +#: front/src/components/Sidebar.vue:71 src/components/library/Home.vue:16 +#: front/src/components/library/Library.vue:16 src/views/admin/Settings.vue:83 +#: front/src/views/admin/library/AlbumDetail.vue:173 +#: front/src/views/admin/library/ArtistDetail.vue:162 +#: front/src/views/admin/library/TrackDetail.vue:225 +#: src/views/playlists/List.vue:106 +msgctxt "*/*/*" +msgid "Playlists" +msgstr "" + +#: front/src/components/Home.vue:56 +msgctxt "Content/Home/List item" +msgid "Playlists? We got them" +msgstr "" + +#: front/src/components/auth/Settings.vue:79 +msgctxt "Content/Settings/Error message.List item/Call to action" +msgid "Please double-check your password is correct" +msgstr "" + +#: front/src/components/auth/Login.vue:9 +msgctxt "Content/Login/Error message.List item/Call to action" +msgid "Please double-check your username/password couple is correct" +msgstr "" + +#: front/src/components/auth/Settings.vue:46 +msgctxt "Content/Settings/Paragraph" +msgid "PNG, GIF or JPG. At most 2MB. Will be downscaled to 400x400px." +msgstr "" + +#: front/src/views/admin/library/TrackDetail.vue:137 +msgctxt "*/*/*/Noun" +msgid "Position" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyForm.vue:118 +msgctxt "Content/Moderation/Help text" +msgid "Prevent account or domain from triggering notifications, except from followers." +msgstr "" + +#: front/src/components/audio/EmbedWizard.vue:33 +msgctxt "Popup/Embed/Title/Noun" +msgid "Preview" +msgstr "" + +#: front/src/components/audio/Player.vue:626 +msgctxt "Sidebar/Player/Icon.Tooltip" +msgid "Previous track" +msgstr "" + +#: front/src/components/mixins/Translations.vue:15 +#: front/src/components/mixins/Translations.vue:16 +msgctxt "Content/Settings/Dropdown/Short" +msgid "Private" +msgstr "" + +#: front/src/views/content/remote/Card.vue:43 +msgctxt "Content/Library/Card.List item" +msgid "Problem during scanning" +msgstr "" + +#: front/src/components/library/FileUpload.vue:57 +msgctxt "Content/Library/Button.Label" +msgid "Proceed" +msgstr "" + +#: front/src/views/auth/EmailConfirm.vue:26 +#: front/src/views/auth/PasswordResetConfirm.vue:31 +msgctxt "Content/Signup/Link/Verb" +msgid "Proceed to login" +msgstr "" + +#: front/src/components/library/FileUpload.vue:17 +msgctxt "Content/Library/Tab.Title/Short" +msgid "Processing" +msgstr "" + +#: front/src/components/mixins/Translations.vue:68 +#: front/src/components/mixins/Translations.vue:69 +msgctxt "Content/OAuth Scopes/Label" +msgid "Profile" +msgstr "" + +#: front/src/components/manage/moderation/AccountsTable.vue:188 +#: front/src/components/manage/moderation/DomainsTable.vue:168 +#: front/src/views/content/libraries/Quota.vue:36 +#: front/src/views/content/libraries/Quota.vue:39 +#: front/src/views/content/libraries/Quota.vue:62 +#: front/src/views/content/libraries/Quota.vue:65 +#: front/src/views/content/libraries/Quota.vue:88 +#: front/src/views/content/libraries/Quota.vue:91 +msgctxt "*/*/*/Verb" +msgid "Purge" +msgstr "" + +#: front/src/views/content/libraries/Quota.vue:89 +msgctxt "Popup/Library/Title" +msgid "Purge errored files?" +msgstr "" + +#: front/src/views/content/libraries/Quota.vue:37 +msgctxt "Popup/Library/Title" +msgid "Purge pending files?" +msgstr "" + +#: front/src/views/content/libraries/Quota.vue:63 +msgctxt "Popup/Library/Title" +msgid "Purge skipped files?" +msgstr "" + +#: front/src/components/Sidebar.vue:20 +msgctxt "Sidebar/Queue/Tab.Title/Noun" +msgid "Queue" +msgstr "" + +#: front/src/components/audio/Player.vue:322 +msgctxt "Content/Queue/Message" +msgid "Queue shuffled!" +msgstr "" + +#: front/src/views/radios/Detail.vue:80 +msgctxt "Head/Radio/Title" +msgid "Radio" +msgstr "" + +#: front/src/components/library/radios/Builder.vue:235 +msgctxt "Head/Radio/Title" +msgid "Radio Builder" +msgstr "" + +#: front/src/components/library/radios/Builder.vue:15 +msgctxt "Content/Radio/Message" +msgid "Radio created" +msgstr "" + +#: front/src/components/library/radios/Builder.vue:21 +msgctxt "Content/Radio/Input.Label/Noun" +msgid "Radio name" +msgstr "" + +#: front/src/components/library/radios/Builder.vue:12 +msgctxt "Content/Radio/Message" +msgid "Radio updated" +msgstr "" + +#: front/src/components/library/Library.vue:13 +#: src/components/library/Radios.vue:142 +msgctxt "*/*/*" +msgid "Radios" +msgstr "" + +#: front/src/components/mixins/Translations.vue:92 +#: front/src/components/mixins/Translations.vue:93 +msgctxt "Content/OAuth Scopes/Label" +msgid "Radios" +msgstr "" + +#: front/src/components/auth/ApplicationForm.vue:151 +msgctxt "Content/OAuth Scopes/Label/Verb" +msgid "Read" +msgstr "" + +#: front/src/components/library/ImportStatusModal.vue:51 +msgctxt "Popup/Import/Table.Label/Value" +msgid "Read our documentation for this error" +msgstr "" + +#: front/src/components/auth/Authorize.vue:24 +msgctxt "Content/Auth/Label/Noun" +msgid "Read-only" +msgstr "" + +#: front/src/components/auth/ApplicationForm.vue:152 +msgctxt "Content/OAuth Scopes/Help Text" +msgid "Read-only access to user data" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyCard.vue:39 +#: front/src/components/manage/moderation/InstancePolicyForm.vue:25 +msgctxt "Content/Moderation/*/Noun" +msgid "Reason" +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:251 +#: front/src/views/admin/moderation/DomainsDetail.vue:179 +msgctxt "Content/Moderation/Table.Label/Noun" +msgid "Received library follows" +msgstr "" + +#: front/src/components/manage/moderation/DomainsTable.vue:40 +#: front/src/components/mixins/Translations.vue:62 +#: front/src/components/mixins/Translations.vue:63 +msgctxt "Content/Moderation/*/Noun" +msgid "Received messages" +msgstr "" + +#: front/src/components/library/EditForm.vue:27 +msgctxt "Content/Library/Paragraph" +msgid "Recent edits" +msgstr "" + +#: front/src/components/library/EditForm.vue:17 +msgctxt "Content/Library/Paragraph" +msgid "Recent edits awaiting review" +msgstr "" + +#: front/src/components/library/Home.vue:24 +msgctxt "Content/Home/Title" +msgid "Recently added" +msgstr "" + +#: front/src/components/library/Home.vue:11 +msgctxt "Content/Home/Title" +msgid "Recently favorited" +msgstr "" + +#: front/src/components/library/Home.vue:6 +msgctxt "Content/Home/Title" +msgid "Recently listened" +msgstr "" + +#: front/src/components/auth/ApplicationForm.vue:13 +msgctxt "Content/Applications/Input.Label/Noun" +msgid "Redirect URI" +msgstr "" + +#: front/src/components/auth/Settings.vue:125 +#: src/components/auth/Settings.vue:170 +#: front/src/components/common/EmptyState.vue:16 +#: src/views/content/remote/Home.vue:15 +msgctxt "Content/*/Button.Label/Short, Verb" +msgid "Refresh" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:20 +msgctxt "Popup/*/Message.Title" +msgid "Refresh error" +msgstr "" + +#: front/src/views/admin/library/AlbumDetail.vue:50 +#: front/src/views/admin/library/ArtistDetail.vue:49 +#: front/src/views/admin/library/TrackDetail.vue:49 +msgctxt "Content/Moderation/Button/Verb" +msgid "Refresh from remote server" +msgstr "" + +#: front/src/views/admin/moderation/DomainsDetail.vue:127 +msgctxt "Content/Moderation/Button.Label/Verb" +msgid "Refresh node info" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:79 +msgctxt "Popup/*/Message.Title" +msgid "Refresh pending" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:80 +msgctxt "Popup/*/Message.Content" +msgid "Refresh request wasn't proceed in time by our server. It will be processed later." +msgstr "" + +#: front/src/components/federation/FetchButton.vue:16 +msgctxt "Popup/*/Message.Title" +msgid "Refresh successful" +msgstr "" + +#: front/src/components/common/ActionTable.vue:275 +msgctxt "Content/*/Button.Tooltip/Verb" +msgid "Refresh table content" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:12 +msgctxt "Popup/*/Message.Title" +msgid "Refresh was skipped" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:7 +msgctxt "Popup/*/Title" +msgid "Refreshing object from remote…" +msgstr "" + +#: front/src/components/auth/Signup.vue:9 +msgctxt "Content/Signup/Form/Paragraph" +msgid "Registration are closed on this instance, you will need an invitation code to signup." +msgstr "" + +#: front/src/components/manage/users/UsersTable.vue:71 +msgctxt "Content/Admin/Table, User role" +msgid "Regular user" +msgstr "" + +#: front/src/components/library/EditCard.vue:87 +#: front/src/views/content/libraries/Detail.vue:51 +msgctxt "Content/Library/Button.Label" +msgid "Reject" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyCard.vue:32 +#: front/src/components/manage/moderation/InstancePolicyForm.vue:123 +msgctxt "Content/Moderation/*/Verb" +msgid "Reject media" +msgstr "" + +#: front/src/components/library/EditCard.vue:33 +#: front/src/components/manage/library/EditsCardList.vue:24 +#: front/src/views/content/libraries/Detail.vue:43 +msgctxt "Content/Library/*/Short" +msgid "Rejected" +msgstr "" + +#: front/src/components/manage/library/AlbumsTable.vue:43 +#: front/src/components/mixins/Translations.vue:44 src/edits.js:28 +#: front/src/components/mixins/Translations.vue:45 +msgctxt "Content/*/*/Noun" +msgid "Release date" +msgstr "" + +#: front/src/components/library/FileUpload.vue:63 +msgctxt "Content/Library/Paragraph" +msgid "Remaining storage space" +msgstr "" + +#: front/src/views/content/remote/Home.vue:6 +msgctxt "Content/Library/Title/Noun" +msgid "Remote libraries" +msgstr "" + +#: front/src/views/content/remote/Home.vue:7 +msgctxt "Content/Library/Paragraph" +msgid "Remote libraries are owned by other users on the network. You can access them as long as they are public or you are granted access." +msgstr "" + +#: front/src/components/library/radios/Filter.vue:59 +msgctxt "Content/Radio/Button.Label/Verb" +msgid "Remove" +msgstr "" + +#: front/src/components/auth/Settings.vue:58 +msgctxt "Content/Settings/Button.Label/Verb" +msgid "Remove avatar" +msgstr "" + +#: front/src/components/library/ArtistDetail.vue:12 +msgctxt "Content/Moderation/Button.Label" +msgid "Remove filter" +msgstr "" + +#: front/src/components/favorites/TrackFavoriteIcon.vue:26 +msgctxt "Content/Track/Icon.Tooltip/Verb" +msgid "Remove from favorites" +msgstr "" + +#: front/src/views/content/libraries/Quota.vue:38 +msgctxt "Popup/Library/Paragraph" +msgid "Removes uploaded but yet to be processed tracks completely, adding the corresponding data to your quota." +msgstr "" + +#: front/src/views/content/libraries/Quota.vue:64 +msgctxt "Popup/Library/Paragraph" +msgid "Removes uploaded tracks skipped during the import processes completely, adding the corresponding data to your quota." +msgstr "" + +#: front/src/views/content/libraries/Quota.vue:90 +msgctxt "Popup/Library/Paragraph" +msgid "Removes uploaded tracks that could not be processed by the server completely, adding the corresponding data to your quota." +msgstr "" + +#: front/src/components/auth/SubsonicTokenForm.vue:33 +#: front/src/components/auth/SubsonicTokenForm.vue:36 +msgctxt "*/Settings/Button.Label/Verb" +msgid "Request a new password" +msgstr "" + +#: front/src/components/auth/SubsonicTokenForm.vue:34 +msgctxt "Popup/Settings/Title" +msgid "Request a new Subsonic API password?" +msgstr "" + +#: front/src/components/auth/SubsonicTokenForm.vue:42 +msgctxt "Content/Settings/Button.Label/Verb" +msgid "Request a password" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:64 +msgctxt "Popup/*/Loading.Title" +msgid "Requesting a fetch…" +msgstr "" + +#: front/src/components/library/EditForm.vue:82 +msgctxt "Content/Library/Button.Label" +msgid "Reset to initial value: %{ value }" +msgstr "" + +#: front/src/components/auth/Login.vue:35 src/views/auth/PasswordReset.vue:4 +#: front/src/views/auth/PasswordReset.vue:53 +msgctxt "*/Login/*/Verb" +msgid "Reset your password" +msgstr "" + +#: front/src/views/content/libraries/FilesTable.vue:223 +msgctxt "Content/Library/Dropdown/Verb" +msgid "Restart import" +msgstr "" + +#: front/src/components/favorites/List.vue:39 +#: src/components/library/Albums.vue:30 +#: front/src/components/library/Artists.vue:30 +#: src/components/library/Radios.vue:52 front/src/views/playlists/List.vue:32 +msgctxt "Content/Search/Dropdown.Label/Noun" +msgid "Results per page" +msgstr "" + +#: front/src/components/library/EditForm.vue:31 +msgctxt "Content/Library/Button.Label" +msgid "Retrict to unreviewed edits" +msgstr "" + +#: front/src/views/auth/EmailConfirm.vue:17 +msgctxt "Content/Signup/Link/Verb" +msgid "Return to login" +msgstr "" + +#: front/src/components/library/ArtistDetail.vue:9 +msgctxt "Content/Moderation/Link" +msgid "Review my filters" +msgstr "" + +#: front/src/components/auth/Settings.vue:192 +msgctxt "*/*/*/Verb" +msgid "Revoke" +msgstr "" + +#: front/src/components/auth/Settings.vue:195 +msgctxt "*/Settings/Button.Label/Verb" +msgid "Revoke access" +msgstr "" + +#: front/src/components/auth/Settings.vue:193 +msgctxt "Popup/Settings/Title" +msgid "Revoke access for application \"%{ application }\"?" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyCard.vue:16 +msgctxt "Content/Moderation/Card.Title/Noun" +msgid "Rule" +msgstr "" + +#: front/src/components/admin/SettingsGroup.vue:67 +#: front/src/components/library/radios/Builder.vue:34 +msgctxt "Content/*/Button.Label/Verb" +msgid "Save" +msgstr "" + +#: front/src/views/content/remote/Card.vue:175 +msgctxt "Content/Library/Message" +msgid "Scan launched" +msgstr "" + +#: front/src/views/content/remote/Card.vue:67 +msgctxt "Content/Library/Card.Button.Label/Verb" +msgid "Scan now" +msgstr "" + +#: front/src/views/content/remote/Card.vue:35 +msgctxt "Content/Library/Card.List item" +msgid "Scan pending" +msgstr "" + +#: front/src/views/content/remote/Card.vue:176 +msgctxt "Content/Library/Message" +msgid "Scan skipped (previous scan is too recent)" +msgstr "" + +#: front/src/views/content/remote/Card.vue:47 +msgctxt "Content/Library/Card.List item" +msgid "Scanned" +msgstr "" + +#: front/src/views/content/remote/Card.vue:51 +msgctxt "Content/Library/Card.List item" +msgid "Scanned with errors" +msgstr "" + +#: front/src/views/content/remote/Card.vue:39 +msgctxt "Content/Library/Card.List item" +msgid "Scanning… (%{ progress }%)" +msgstr "" + +#: front/src/components/auth/ApplicationForm.vue:22 +msgctxt "Content/Applications/Input.Label/Noun" +msgid "Scopes" +msgstr "" + +#: front/src/components/auth/Settings.vue:226 +msgctxt "Content/*/*/Noun" +msgid "Scopes" +msgstr "" + +#: front/src/components/library/Albums.vue:10 +#: src/components/library/Artists.vue:10 +#: front/src/components/library/Radios.vue:29 +#: front/src/components/manage/library/AlbumsTable.vue:5 +#: front/src/components/manage/library/ArtistsTable.vue:5 +#: front/src/components/manage/library/EditsCardList.vue:6 +#: front/src/components/manage/library/LibrariesTable.vue:5 +#: front/src/components/manage/library/TracksTable.vue:5 +#: front/src/components/manage/library/UploadsTable.vue:5 +#: front/src/components/manage/moderation/AccountsTable.vue:5 +#: front/src/components/manage/moderation/DomainsTable.vue:5 +#: front/src/components/manage/users/InvitationsTable.vue:5 +#: front/src/components/manage/users/UsersTable.vue:5 +#: front/src/views/content/libraries/FilesTable.vue:5 +#: src/views/playlists/List.vue:13 +msgctxt "Content/Search/Input.Label/Noun" +msgid "Search" +msgstr "" + +#: front/src/views/content/remote/ScanForm.vue:9 +msgctxt "Content/Library/Input.Label/Verb" +msgid "Search a remote library" +msgstr "" + +#: front/src/components/manage/library/EditsCardList.vue:211 +msgctxt "Content/Search/Input.Placeholder" +msgid "Search by account, summary, domain…" +msgstr "" + +#: front/src/components/manage/library/LibrariesTable.vue:191 +msgctxt "Content/Search/Input.Placeholder" +msgid "Search by domain, actor, name, description…" +msgstr "" + +#: front/src/components/manage/library/UploadsTable.vue:241 +msgctxt "Content/Search/Input.Placeholder" +msgid "Search by domain, actor, name, reference, source…" +msgstr "" + +#: front/src/components/manage/library/ArtistsTable.vue:164 +msgctxt "Content/Search/Input.Placeholder" +msgid "Search by domain, name, MusicBrainz ID…" +msgstr "" + +#: front/src/components/manage/library/TracksTable.vue:174 +msgctxt "Content/Search/Input.Placeholder" +msgid "Search by domain, title, artist, album, MusicBrainz ID…" +msgstr "" + +#: front/src/components/manage/library/AlbumsTable.vue:174 +msgctxt "Content/Search/Input.Placeholder" +msgid "Search by domain, title, artist, MusicBrainz ID…" +msgstr "" + +#: front/src/components/manage/moderation/AccountsTable.vue:171 +msgctxt "Content/Search/Input.Placeholder" +msgid "Search by domain, username, bio…" +msgstr "" + +#: front/src/components/manage/moderation/DomainsTable.vue:151 +msgctxt "Content/Search/Input.Placeholder" +msgid "Search by name…" +msgstr "" + +#: front/src/views/content/libraries/FilesTable.vue:208 +msgctxt "Content/Library/Input.Placeholder" +msgid "Search by title, artist, album…" +msgstr "" + +#: front/src/components/manage/users/InvitationsTable.vue:153 +msgctxt "Content/Admin/Input.Placeholder/Verb" +msgid "Search by username, e-mail address, code…" +msgstr "" + +#: front/src/components/manage/users/UsersTable.vue:163 +msgctxt "Content/Search/Input.Placeholder" +msgid "Search by username, e-mail address, name…" +msgstr "" + +#: front/src/components/audio/SearchBar.vue:20 +msgctxt "Sidebar/Search/Input.Placeholder" +msgid "Search for artists, albums, tracks…" +msgstr "" + +#: front/src/components/audio/Search.vue:2 +msgctxt "Content/Search/Title" +msgid "Search for some music" +msgstr "" + +#: front/src/components/library/AlbumBase.vue:57 +#: front/src/components/library/ArtistBase.vue:68 +#: front/src/components/library/TrackBase.vue:76 +msgctxt "Content/*/Button.Label/Verb" +msgid "Search on Wikipedia" +msgstr "" + +#: front/src/components/library/Library.vue:35 +#: src/views/admin/library/Base.vue:32 +#: front/src/views/admin/moderation/Base.vue:22 +#: src/views/admin/users/Base.vue:21 front/src/views/content/Base.vue:19 +msgctxt "Menu/*/Hidden text" +msgid "Secondary menu" +msgstr "" + +#: front/src/views/admin/Settings.vue:15 +msgctxt "Content/Admin/Menu.Title" +msgid "Sections" +msgstr "" + +#: front/src/components/library/radios/Builder.vue:46 +msgctxt "Content/Radio/Dropdown.Placeholder/Verb" +msgid "Select a filter" +msgstr "" + +#: front/src/components/common/ActionTable.vue:79 +msgctxt "Content/*/Link/Verb" +msgid "Select all %{ total } elements" +msgid_plural "Select all %{ total } elements" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: front/src/components/common/ActionTable.vue:88 +msgctxt "Content/*/Link/Verb" +msgid "Select only current page" +msgstr "" + +#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:108 +#: front/src/components/manage/users/UsersTable.vue:181 +#: front/src/views/admin/moderation/AccountsDetail.vue:506 +msgctxt "*/*/*/Noun" +msgid "Settings" +msgstr "" + +#: front/src/components/auth/Settings.vue:10 +msgctxt "Content/Settings/Message" +msgid "Settings updated" +msgstr "" + +#: front/src/components/admin/SettingsGroup.vue:11 +msgctxt "Content/Settings/Paragraph" +msgid "Settings updated successfully." +msgstr "" + +#: front/src/components/manage/users/InvitationForm.vue:27 +msgctxt "Content/Admin/Table.Label/Noun" +msgid "Share link" +msgstr "" + +#: front/src/views/content/libraries/Detail.vue:15 +msgctxt "Content/Library/Paragraph" +msgid "Share this link with other users so they can request access to your library." +msgstr "" + +#: front/src/views/content/libraries/Detail.vue:14 +#: front/src/views/content/remote/Card.vue:77 +msgctxt "Content/Library/Title" +msgid "Sharing link" +msgstr "" + +#: front/src/components/audio/album/Card.vue:38 +msgctxt "Content/Album/Card.Link/Verb" +msgid "Show %{ count } more track" +msgid_plural "Show %{ count } more tracks" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: front/src/components/audio/artist/Card.vue:30 +msgctxt "Content/Artist/Card.Link" +msgid "Show 1 more album" +msgid_plural "Show %{ count } more albums" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: front/src/components/library/EditForm.vue:21 +msgctxt "Content/Library/Button.Label" +msgid "Show all edits" +msgstr "" + +#: front/src/components/ShortcutsModal.vue:42 +msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb" +msgid "Show available keyboard shortcuts" +msgstr "" + +#: front/src/views/Notifications.vue:7 +msgctxt "Content/Notifications/Form.Label/Verb" +msgid "Show read notifications" +msgstr "" + +#: front/src/components/forms/PasswordInput.vue:26 +msgctxt "Content/Settings/Button.Tooltip/Verb" +msgid "Show/hide password" +msgstr "" + +#: front/src/components/manage/library/AlbumsTable.vue:93 +#: front/src/components/manage/library/ArtistsTable.vue:84 +#: front/src/components/manage/library/EditsCardList.vue:72 +#: front/src/components/manage/library/LibrariesTable.vue:110 +#: front/src/components/manage/library/TracksTable.vue:95 +#: front/src/components/manage/library/UploadsTable.vue:144 +#: front/src/components/manage/moderation/AccountsTable.vue:88 +#: front/src/components/manage/moderation/DomainsTable.vue:74 +#: front/src/components/manage/users/InvitationsTable.vue:76 +#: front/src/components/manage/users/UsersTable.vue:87 +#: front/src/views/content/libraries/FilesTable.vue:117 +msgctxt "Content/*/Paragraph" +msgid "Showing results %{ start }-%{ end } on %{ total }" +msgstr "" + +#: front/src/components/ShortcutsModal.vue:83 +msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb" +msgid "Shuffle queue" +msgstr "" + +#: front/src/components/audio/Player.vue:641 +msgctxt "Sidebar/Player/Icon.Tooltip/Verb" +msgid "Shuffle your queue" +msgstr "" + +#: front/src/components/auth/Signup.vue:97 +msgctxt "*/Signup/Title" +msgid "Sign Up" +msgstr "" + +#: front/src/components/manage/users/UsersTable.vue:40 +msgctxt "Content/Admin/Table.Label/Short, Noun (Value is a date)" +msgid "Sign-up" +msgstr "" + +#: front/src/components/mixins/Translations.vue:57 +#: front/src/views/admin/moderation/AccountsDetail.vue:197 +#: front/src/components/mixins/Translations.vue:58 +msgctxt "Content/Admin/Table.Label/Noun" +msgid "Sign-up date" +msgstr "" + +#: front/src/components/manage/library/UploadsTable.vue:65 +#: front/src/views/admin/library/UploadDetail.vue:219 +msgctxt "Content/*/*/Noun" +msgid "Size" +msgstr "" + +#: front/src/components/library/FileUpload.vue:94 +#: front/src/components/library/TrackDetail.vue:39 +#: front/src/components/mixins/Translations.vue:54 +#: front/src/views/content/libraries/FilesTable.vue:61 +#: front/src/components/mixins/Translations.vue:55 +msgctxt "Content/Library/*/in MB" +msgid "Size" +msgstr "" + +#: front/src/components/manage/library/UploadsTable.vue:24 +#: front/src/components/mixins/Translations.vue:24 +#: front/src/views/content/libraries/FilesTable.vue:15 +#: front/src/components/mixins/Translations.vue:25 +msgctxt "Content/Library/*" +msgid "Skipped" +msgstr "" + +#: front/src/views/content/libraries/Quota.vue:49 +msgctxt "Content/Library/Label" +msgid "Skipped files" +msgstr "" + +#: front/src/views/admin/moderation/DomainsDetail.vue:89 +msgctxt "Content/Moderation/Table.Label" +msgid "Software" +msgstr "" + +#: front/src/components/playlists/Editor.vue:21 +msgctxt "Content/Playlist/Paragraph" +msgid "Some tracks in your queue are already in this playlist:" +msgstr "" + +#: front/src/components/PageNotFound.vue:10 +msgctxt "Content/*/Paragraph" +msgid "Sorry, the page you asked for does not exist:" +msgstr "" + +#: front/src/components/Footer.vue:49 +msgctxt "Footer/*/List item.Link" +msgid "Source code" +msgstr "" + +#: front/src/components/auth/Profile.vue:23 +#: front/src/components/manage/users/UsersTable.vue:70 +msgctxt "Content/Profile/User role" +msgid "Staff member" +msgstr "" + +#: front/src/components/audio/PlayButton.vue:23 +#: src/components/radios/Button.vue:4 +msgctxt "*/Queue/Button.Label/Short, Verb" +msgid "Start radio" +msgstr "" + +#: front/src/views/admin/Settings.vue:86 +msgctxt "Content/Admin/Menu" +msgid "Statistics" +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:490 +msgctxt "Content/Moderation/Help text" +msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this account" +msgstr "" + +#: front/src/views/admin/moderation/DomainsDetail.vue:371 +msgctxt "Content/Moderation/Help text" +msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this domain" +msgstr "" + +#: front/src/views/admin/library/AlbumDetail.vue:329 +#: front/src/views/admin/library/ArtistDetail.vue:328 +#: front/src/views/admin/library/LibraryDetail.vue:316 +#: front/src/views/admin/library/TrackDetail.vue:371 +#: front/src/views/admin/library/UploadDetail.vue:335 +msgctxt "Content/Moderation/Help text" +msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object" +msgstr "" + +#: front/src/views/admin/moderation/DomainsDetail.vue:115 +msgctxt "Content/Moderation/Table.Label (Value is Error message)" +msgid "Status" +msgstr "" + +#: front/src/components/library/FileUpload.vue:95 +msgctxt "Content/Library/Table.Label (Value is Uploading/Uploaded/Error)" +msgid "Status" +msgstr "" + +#: front/src/views/content/libraries/Detail.vue:28 +msgctxt "Content/Library.Federation/Table.Label (Value is Approved/Rejected)" +msgid "Status" +msgstr "" + +#: front/src/components/manage/users/InvitationsTable.vue:17 +#: front/src/components/manage/users/InvitationsTable.vue:39 +msgctxt "Content/Admin/*/Noun (Value is Used/Not used)" +msgid "Status" +msgstr "" + +#: front/src/components/manage/users/UsersTable.vue:43 +msgctxt "Content/Admin/Table.Label/Noun (Value is Regular user/Admin)" +msgid "Status" +msgstr "" + +#: front/src/components/manage/library/EditsCardList.vue:12 +msgctxt "Content/Search/Dropdown.Label (Value is All/Pending review/Approved/Rejected)" +msgid "Status" +msgstr "" + +#: front/src/components/Sidebar.vue:174 src/components/radios/Button.vue:3 +msgctxt "*/Player/Button.Label/Short, Verb" +msgid "Stop radio" +msgstr "" + +#: front/src/components/SetInstanceModal.vue:23 +msgctxt "*/*/Button.Label/Verb" +msgid "Submit" +msgstr "" + +#: front/src/components/library/EditForm.vue:98 +msgctxt "Content/Library/Button.Label/Verb" +msgid "Submit and apply edit" +msgstr "" + +#: front/src/components/library/EditForm.vue:7 +msgctxt "Content/Library/Button.Label" +msgid "Submit another edit" +msgstr "" + +#: front/src/components/library/EditForm.vue:99 +msgctxt "Content/Library/Button.Label/Verb" +msgid "Submit suggestion" +msgstr "" + +#: front/src/views/admin/Settings.vue:85 +msgctxt "Content/Admin/Menu" +msgid "Subsonic" +msgstr "" + +#: front/src/components/auth/SubsonicTokenForm.vue:2 +msgctxt "Content/Settings/Title" +msgid "Subsonic API password" +msgstr "" + +#: front/src/components/library/EditForm.vue:38 +msgctxt "Content/Library/Paragraph" +msgid "Suggest a change using the form below." +msgstr "" + +#: front/src/components/library/AlbumEdit.vue:5 +msgctxt "Content/*/Title" +msgid "Suggest an edit on this album" +msgstr "" + +#: front/src/components/library/ArtistEdit.vue:5 +msgctxt "Content/*/Title" +msgid "Suggest an edit on this artist" +msgstr "" + +#: front/src/components/library/TrackEdit.vue:5 +msgctxt "Content/*/Title" +msgid "Suggest an edit on this track" +msgstr "" + +#: front/src/components/SetInstanceModal.vue:31 +msgctxt "Popup/Instance/List.Label" +msgid "Suggested choices" +msgstr "" + +#: front/src/components/library/FileUpload.vue:3 +msgctxt "Content/Library/Tab.Title/Short" +msgid "Summary" +msgstr "" + +#: front/src/components/library/EditForm.vue:87 +msgctxt "*/*/*" +msgid "Summary (optional)" +msgstr "" + +#: front/src/components/Footer.vue:39 +msgctxt "Footer/*/Listitem.Link" +msgid "Support forum" +msgstr "" + +#: front/src/components/library/FileUpload.vue:85 +msgctxt "Content/Library/Paragraph" +msgid "Supported extensions: %{ extensions }" +msgstr "" + +#: front/src/components/playlists/Editor.vue:9 +msgctxt "Content/Playlist/Paragraph" +msgid "Syncing changes to server…" +msgstr "" + +#: front/src/components/audio/EmbedWizard.vue:25 +#: front/src/components/common/CopyInput.vue:3 +msgctxt "Content/*/Paragraph" +msgid "Text copied to clipboard!" +msgstr "" + +#: front/src/components/Home.vue:26 +msgctxt "Content/Home/Paragraph" +msgid "That's simple: we loved Grooveshark and we want to build something even better." +msgstr "" + +#: front/src/views/admin/library/AlbumDetail.vue:75 +msgctxt "Content/Moderation/Paragraph" +msgid "The album will be removed, as well as associated uploads, tracks, favorites and listening history. This action is irreversible." +msgstr "" + +#: front/src/components/auth/Authorize.vue:39 +msgctxt "Content/Auth/Paragraph" +msgid "The application is also requesting the following unknown permissions:" +msgstr "" + +#: front/src/views/admin/library/ArtistDetail.vue:74 +msgctxt "Content/Moderation/Paragraph" +msgid "The artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible." +msgstr "" + +#: front/src/components/Footer.vue:53 +msgctxt "Footer/*/List item.Link" +msgid "The funkwhale logo was kindly designed and provided by Francis Gading." +msgstr "" + +#: front/src/components/SetInstanceModal.vue:8 +msgctxt "Popup/Instance/Error message.List item" +msgid "The given address is not a Funkwhale server" +msgstr "" + +#: front/src/views/content/libraries/Form.vue:34 +msgctxt "Popup/Library/Paragraph" +msgid "The library and all its tracks will be deleted. This can not be undone." +msgstr "" + +#: front/src/views/admin/library/LibraryDetail.vue:61 +msgctxt "Content/Moderation/Paragraph" +msgid "The library will be removed, as well as associated uploads, and follows. This action is irreversible." +msgstr "" + +#: front/src/components/library/ImportStatusModal.vue:140 +msgctxt "Popup/Import/Error.Label" +msgid "The metadata included in the file is invalid or some mandatory fields are missing." +msgstr "" + +#: front/src/components/library/FileUpload.vue:38 +msgctxt "Content/Library/List item" +msgid "The music files you are uploading are tagged properly." +msgstr "" + +#: front/src/components/audio/Player.vue:65 +msgctxt "Sidebar/Player/Error message.Paragraph" +msgid "The next track will play automatically in a few seconds…" +msgstr "" + +#: front/src/components/Home.vue:116 +msgctxt "Content/Home/List item" +msgid "The plaform is free and open-source, you can install it and modify it without worries" +msgstr "" + +#: front/src/components/playlists/Form.vue:14 +msgctxt "Content/Playlist/Error message.Title" +msgid "The playlist could not be created" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:37 +msgctxt "*/*/Error" +msgid "The remote server answered with HTTP %{ status }" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:13 +msgctxt "Popup/*/Message.Content" +msgid "The remote server answered, but returned data was unsupported by Funkwhale." +msgstr "" + +#: front/src/components/federation/FetchButton.vue:44 +msgctxt "*/*/Error" +msgid "The remote server didn't answered fast enough" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:50 +msgctxt "*/*/Error" +msgid "The return server returned invalid JSON or JSON-LD data" +msgstr "" + +#: front/src/components/manage/library/AlbumsTable.vue:189 +msgctxt "Popup/*/Paragraph" +msgid "The selected albums will be removed, as well as associated tracks, uploads, favorites and listening history. This action is irreversible." +msgstr "" + +#: front/src/components/manage/library/ArtistsTable.vue:179 +msgctxt "Popup/*/Paragraph" +msgid "The selected artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible." +msgstr "" + +#: front/src/components/manage/library/LibrariesTable.vue:206 +msgctxt "Popup/*/Paragraph" +msgid "The selected library will be removed, as well as associated uploads and follows. This action is irreversible." +msgstr "" + +#: front/src/components/manage/library/TracksTable.vue:189 +msgctxt "Popup/*/Paragraph" +msgid "The selected tracks will be removed, as well as associated uploads, favorites and listening history. This action is irreversible." +msgstr "" + +#: front/src/components/manage/library/UploadsTable.vue:256 +msgctxt "Popup/*/Paragraph" +msgid "The selected upload will be removed. This action is irreversible." +msgstr "" + +#: front/src/components/SetInstanceModal.vue:7 +msgctxt "Popup/Instance/Error message.List item" +msgid "The server might be down" +msgstr "" + +#: front/src/components/auth/SubsonicTokenForm.vue:4 +msgctxt "Content/Settings/Paragraph" +msgid "The Subsonic API is not available on this Funkwhale instance." +msgstr "" + +#: front/src/components/library/EditCard.vue:96 +msgctxt "Popup/Library/Paragraph" +msgid "The suggestion will be completely removed, this action is irreversible." +msgstr "" + +#: front/src/components/playlists/PlaylistModal.vue:34 +msgctxt "Popup/Playlist/Error message.Title" +msgid "The track can't be added to a playlist" +msgstr "" + +#: front/src/components/audio/Player.vue:62 +msgctxt "Sidebar/Player/Error message.Title" +msgid "The track cannot be loaded" +msgstr "" + +#: front/src/views/admin/library/TrackDetail.vue:74 +msgctxt "Content/Moderation/Paragraph" +msgid "The track will be removed, as well as associated uploads, favorites and listening history. This action is irreversible." +msgstr "" + +#: front/src/views/admin/library/UploadDetail.vue:68 +msgctxt "Content/Moderation/Paragraph" +msgid "The upload will be removed. This action is irreversible." +msgstr "" + +#: front/src/components/library/FileUpload.vue:42 +msgctxt "Content/Library/List item" +msgid "The uploaded music files are in OGG, Flac or MP3 format" +msgstr "" + +#: front/src/views/content/Home.vue:4 +msgctxt "Content/Library/Paragraph" +msgid "There are various ways to grab new content and make it available here." +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyForm.vue:66 +msgctxt "Popup/Moderation/Paragraph" +msgid "This action is irreversible." +msgstr "" + +#: front/src/components/library/AlbumDetail.vue:29 +msgctxt "Content/Album/Paragraph" +msgid "This album is present in the following libraries:" +msgstr "" + +#: front/src/components/library/ArtistDetail.vue:42 +msgctxt "Content/Artist/Paragraph" +msgid "This artist is present in the following libraries:" +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:84 +#: front/src/views/admin/moderation/DomainsDetail.vue:48 +msgctxt "Content/Moderation/Card.Title" +msgid "This domain is subject to specific moderation rules" +msgstr "" + +#: front/src/views/content/Home.vue:9 +msgctxt "Content/Library/Paragraph" +msgid "This instance offers up to %{quota} of storage space for every user." +msgstr "" + +#: front/src/components/auth/Settings.vue:165 +msgctxt "Content/Settings/Paragraph" +msgid "This is the list of applications that have access to your account data." +msgstr "" + +#: front/src/components/auth/Settings.vue:218 +msgctxt "Content/Settings/Paragraph" +msgid "This is the list of applications that you have created." +msgstr "" + +#: front/src/components/auth/Profile.vue:16 +msgctxt "Content/Profile/Button.Paragraph" +msgid "This is you!" +msgstr "" + +#: front/src/views/content/libraries/Form.vue:73 +msgctxt "Content/Library/Input.Placeholder" +msgid "This library contains my personal music, I hope you like it." +msgstr "" + +#: front/src/views/content/remote/Card.vue:141 +msgctxt "Content/Library/Card.Help text" +msgid "This library is private and your approval from its owner is needed to access its content" +msgstr "" + +#: front/src/views/content/remote/Card.vue:142 +msgctxt "Content/Library/Card.Help text" +msgid "This library is public and you can access its content freely" +msgstr "" + +#: front/src/components/common/ActionTable.vue:47 +msgctxt "Modal/*/Paragraph" +msgid "This may affect a lot of elements or have irreversible consequences, please double check this is really what you want." +msgstr "" + +#: front/src/components/library/AlbumEdit.vue:8 +#: front/src/components/library/ArtistEdit.vue:8 +#: front/src/components/library/TrackEdit.vue:8 +msgctxt "Content/*/Message" +msgid "This object is managed by another server, you cannot edit it." +msgstr "" + +#: front/src/components/library/FileUpload.vue:51 +msgctxt "Content/Library/Paragraph" +msgid "This reference will be used to group imported files together." +msgstr "" + +#: front/src/components/mixins/Translations.vue:33 +#: front/src/components/mixins/Translations.vue:34 +msgctxt "Content/Library/Help text" +msgid "This track could not be processed, please it is tagged correctly" +msgstr "" + +#: front/src/components/mixins/Translations.vue:29 +#: front/src/components/mixins/Translations.vue:30 +msgctxt "Content/Library/Help text" +msgid "This track has been uploaded, but hasn't been processed by the server yet" +msgstr "" + +#: front/src/components/mixins/Translations.vue:25 +#: front/src/components/mixins/Translations.vue:26 +msgctxt "Content/Library/Help text" +msgid "This track is already present in one of your libraries" +msgstr "" + +#: front/src/components/audio/PlayButton.vue:85 +msgctxt "*/Queue/Button/Title" +msgid "This track is not available in any library you have access to" +msgstr "" + +#: front/src/components/library/TrackDetail.vue:82 +msgctxt "Content/Track/Paragraph" +msgid "This track is present in the following libraries:" +msgstr "" + +#: front/src/views/playlists/Detail.vue:38 +msgctxt "Popup/Playlist/Paragraph" +msgid "This will completely delete this playlist and cannot be undone." +msgstr "" + +#: front/src/views/radios/Detail.vue:27 +msgctxt "Popup/Radio/Paragraph" +msgid "This will completely delete this radio and cannot be undone." +msgstr "" + +#: front/src/components/auth/SubsonicTokenForm.vue:50 +msgctxt "Popup/Settings/Paragraph" +msgid "This will completely disable access to the Subsonic API using from account." +msgstr "" + +#: front/src/components/auth/SubsonicTokenForm.vue:35 +msgctxt "Popup/Settings/Paragraph" +msgid "This will log you out from existing devices that use the current password." +msgstr "" + +#: front/src/components/auth/Settings.vue:253 +msgctxt "Popup/Settings/Paragraph" +msgid "This will permanently delete the application and all the associated tokens." +msgstr "" + +#: front/src/components/auth/Settings.vue:194 +msgctxt "Popup/Settings/Paragraph" +msgid "This will prevent this application from accessing the service on your behalf." +msgstr "" + +#: front/src/components/playlists/Editor.vue:54 +msgctxt "Popup/Playlist/Paragraph" +msgid "This will remove all tracks from this playlist and cannot be undone." +msgstr "" + +#: front/src/views/admin/library/AlbumDetail.vue:99 +#: front/src/views/admin/library/TrackDetail.vue:98 src/edits.js:21 +#: src/edits.js:39 +msgctxt "*/*/*/Noun" +msgid "Title" +msgstr "" + +#: front/src/components/audio/track/Table.vue:7 +#: front/src/views/content/libraries/FilesTable.vue:55 +msgctxt "Content/Track/*/Noun" +msgid "Title" +msgstr "" + +#: front/src/components/manage/library/AlbumsTable.vue:39 +#: front/src/components/manage/library/TracksTable.vue:39 +msgctxt "*/*/*" +msgid "Title" +msgstr "" + +#: front/src/components/SetInstanceModal.vue:16 +msgctxt "Popup/Instance/Paragraph" +msgid "To continue, please select the Funkwhale instance you want to connect to. Enter the address directly, or select one of the suggested choices." +msgstr "" + +#: front/src/components/ShortcutsModal.vue:79 +msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb" +msgid "Toggle queue looping" +msgstr "" + +#: front/src/views/admin/library/AlbumDetail.vue:222 +#: front/src/views/admin/library/ArtistDetail.vue:211 +#: front/src/views/admin/library/LibraryDetail.vue:200 +#: front/src/views/admin/library/TrackDetail.vue:274 +#: front/src/views/admin/moderation/AccountsDetail.vue:317 +#: front/src/views/admin/moderation/DomainsDetail.vue:225 +msgctxt "Content/Moderation/Table.Label" +msgid "Total size" +msgstr "" + +#: front/src/views/content/libraries/Card.vue:68 +msgctxt "Content/Library/Card.Help text" +msgid "Total size of the files in this library" +msgstr "" + +#: front/src/views/admin/moderation/DomainsDetail.vue:105 +msgctxt "Content/*/*" +msgid "Total users" +msgstr "" + +#: front/src/views/admin/library/UploadDetail.vue:199 +msgctxt "*/*/*" +msgid "Track" +msgstr "" + +#: front/src/components/audio/SearchBar.vue:27 +#: front/src/components/library/TrackBase.vue:173 +#: front/src/components/library/TrackDetail.vue:128 +#: front/src/components/metadata/Search.vue:138 +msgctxt "*/*/*/Noun" +msgid "Track" +msgstr "" + +#: front/src/components/library/EditCard.vue:13 +msgctxt "Content/Library/Card/Short" +msgid "Track #%{ id } - %{ name }" +msgstr "" + +#: front/src/views/admin/library/TrackDetail.vue:91 +msgctxt "Content/Moderation/Title" +msgid "Track data" +msgstr "" + +#: front/src/components/library/TrackDetail.vue:4 +msgctxt "Content/Track/Title/Noun" +msgid "Track information" +msgstr "" + +#: front/src/components/mixins/Translations.vue:50 +#: front/src/components/mixins/Translations.vue:51 +msgctxt "Content/*/Dropdown/Noun" +msgid "Track name" +msgstr "" + +#: front/src/components/instance/Stats.vue:54 +#: front/src/components/library/AlbumDetail.vue:19 +#: front/src/components/playlists/PlaylistModal.vue:47 +#: front/src/views/admin/moderation/AccountsDetail.vue:362 +#: front/src/views/admin/moderation/DomainsDetail.vue:274 +#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8 +#: front/src/views/playlists/Detail.vue:51 src/views/radios/Detail.vue:34 +msgctxt "*/*/*/Noun" +msgid "Tracks" +msgstr "" + +#: front/src/components/manage/library/AlbumsTable.vue:42 +#: front/src/components/manage/library/ArtistsTable.vue:42 +#: front/src/views/admin/library/AlbumDetail.vue:252 +#: front/src/views/admin/library/ArtistDetail.vue:251 +#: front/src/views/admin/library/Base.vue:14 +#: front/src/views/admin/library/LibraryDetail.vue:229 +#: front/src/views/admin/library/TracksList.vue:24 +msgctxt "*/*/*" +msgid "Tracks" +msgstr "" + +#: front/src/components/library/ArtistDetail.vue:33 +msgctxt "Content/Artist/Title" +msgid "Tracks by this artist" +msgstr "" + +#: front/src/components/instance/Stats.vue:25 +msgctxt "Content/About/Paragraph/Unit" +msgid "Tracks favorited" +msgstr "" + +#: front/src/components/instance/Stats.vue:19 +msgctxt "Content/About/Paragraph/Unit" +msgid "tracks listened" +msgstr "" + +#: front/src/components/library/radios/Filter.vue:44 +msgctxt "Popup/Radio/Title/Noun" +msgid "Tracks matching filter" +msgstr "" + +#: front/src/components/library/TrackDetail.vue:57 +#: front/src/views/admin/library/UploadDetail.vue:250 +msgctxt "Content/Track/Table.Label/Noun" +msgid "Type" +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:180 +msgctxt "Content/Moderation/Table.Label/Noun" +msgid "Type" +msgstr "" + +#: front/src/components/manage/moderation/AccountsTable.vue:44 +#: front/src/components/manage/moderation/DomainsTable.vue:42 +msgctxt "Content/Moderation/Table.Label/Short" +msgid "Under moderation rule" +msgstr "" + +#: front/src/views/content/remote/Card.vue:109 +#: src/views/content/remote/Card.vue:114 +msgctxt "*/Library/Button.Label/Verb" +msgid "Unfollow" +msgstr "" + +#: front/src/views/content/remote/Card.vue:110 +msgctxt "Popup/Library/Title" +msgid "Unfollow this library?" +msgstr "" + +#: front/src/components/About.vue:17 +msgctxt "Content/About/Paragraph" +msgid "Unfortunately, the owners of this instance did not yet take the time to complete this page." +msgstr "" + +#: front/src/components/federation/FetchButton.vue:54 +#: front/src/components/federation/FetchButton.vue:55 +msgctxt "*/*/Error" +msgid "Unknowkn error" +msgstr "" + +#: front/src/components/library/ImportStatusModal.vue:144 +msgctxt "Popup/Import/Error.Label" +msgid "Unkwown error" +msgstr "" + +#: front/src/components/Home.vue:37 +msgctxt "Content/Home/Title" +msgid "Unlimited music" +msgstr "" + +#: front/src/components/audio/Player.vue:630 +msgctxt "Sidebar/Player/Icon.Tooltip/Verb" +msgid "Unmute" +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyForm.vue:57 +msgctxt "Content/Moderation/Card.Button.Label/Verb" +msgid "Update" +msgstr "" + +#: front/src/components/auth/ApplicationForm.vue:64 +msgctxt "Content/Applications/Button.Label/Verb" +msgid "Update application" +msgstr "" + +#: front/src/components/auth/Settings.vue:50 +msgctxt "Content/Settings/Button.Label/Verb" +msgid "Update avatar" +msgstr "" + +#: front/src/views/content/libraries/Form.vue:25 +msgctxt "Content/Library/Button.Label/Verb" +msgid "Update library" +msgstr "" + +#: front/src/components/playlists/Form.vue:33 +msgctxt "Content/Playlist/Button.Label/Verb" +msgid "Update playlist" +msgstr "" + +#: front/src/components/auth/Settings.vue:27 +msgctxt "Content/Settings/Button.Label/Verb" +msgid "Update settings" +msgstr "" + +#: front/src/views/auth/PasswordResetConfirm.vue:21 +msgctxt "Content/Signup/Button.Label" +msgid "Update your password" +msgstr "" + +#: front/src/views/content/libraries/Card.vue:45 +#: front/src/views/content/libraries/DetailArea.vue:24 +msgctxt "Content/Library/Card.Button.Label/Verb" +msgid "Upload" +msgstr "" + +#: front/src/components/auth/Settings.vue:45 +msgctxt "Content/Settings/Title/Verb" +msgid "Upload a new avatar" +msgstr "" + +#: front/src/views/content/Home.vue:6 +msgctxt "Content/Library/Title/Verb" +msgid "Upload audio content" +msgstr "" + +#: front/src/views/admin/library/UploadDetail.vue:85 +msgctxt "Content/Moderation/Title" +msgid "Upload data" +msgstr "" + +#: front/src/views/content/libraries/FilesTable.vue:58 +msgctxt "*/*/*/Noun" +msgid "Upload date" +msgstr "" + +#: front/src/components/library/FileUpload.vue:258 +msgctxt "Content/Library/Help text" +msgid "Upload denied, ensure the file is not too big and that you have not reached your quota" +msgstr "" + +#: front/src/components/library/ImportStatusModal.vue:8 +msgctxt "Popup/Import/Message" +msgid "Upload is still pending and will soon be processed by the server." +msgstr "" + +#: front/src/views/content/Home.vue:7 +msgctxt "Content/Library/Paragraph" +msgid "Upload music files (MP3, OGG, FLAC, etc.) from your personal library directly from your browser to enjoy them here." +msgstr "" + +#: front/src/components/library/FileUpload.vue:30 +msgctxt "Content/Library/Title/Verb" +msgid "Upload new tracks" +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:298 +msgctxt "Content/Moderation/Table.Label/Noun" +msgid "Upload quota" +msgstr "" + +#: front/src/components/library/FileUpload.vue:267 +msgctxt "Content/Library/Help text" +msgid "Upload timeout, please try again" +msgstr "" + +#: front/src/components/library/ImportStatusModal.vue:14 +msgctxt "Popup/Import/Message" +msgid "Upload was skipped because a similar one is already available in one of your libraries." +msgstr "" + +#: front/src/components/library/ImportStatusModal.vue:11 +msgctxt "Popup/Import/Message" +msgid "Upload was successfully processed by the server." +msgstr "" + +#: front/src/components/library/FileUpload.vue:109 +msgctxt "Content/Library/Table" +msgid "Uploaded" +msgstr "" + +#: front/src/components/library/FileUpload.vue:5 +msgctxt "Content/Library/Tab.Title/Short" +msgid "Uploading" +msgstr "" + +#: front/src/components/library/FileUpload.vue:112 +msgctxt "Content/Library/Table" +msgid "Uploading…" +msgstr "" + +#: front/src/views/admin/library/Base.vue:20 +#: front/src/views/admin/library/UploadsList.vue:24 +msgctxt "*/*/*" +msgid "Uploads" +msgstr "" + +#: front/src/components/manage/moderation/AccountsTable.vue:41 +#: front/src/components/mixins/Translations.vue:63 +#: front/src/views/admin/library/AlbumDetail.vue:242 +#: front/src/views/admin/library/ArtistDetail.vue:231 +#: front/src/views/admin/library/LibraryDetail.vue:239 +#: front/src/views/admin/library/TrackDetail.vue:294 +#: front/src/views/admin/moderation/AccountsDetail.vue:337 +#: front/src/views/admin/moderation/DomainsDetail.vue:244 +#: front/src/components/mixins/Translations.vue:64 +msgctxt "Content/Moderation/Table.Label/Noun" +msgid "Uploads" +msgstr "" + +#: front/src/components/manage/library/LibrariesTable.vue:52 +msgctxt "Content/*/*/Noun" +msgid "Uploads" +msgstr "" + +#: front/src/components/auth/ApplicationForm.vue:16 +msgctxt "Content/Applications/Help Text" +msgid "Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is not served on the web." +msgstr "" + +#: front/src/components/Footer.vue:16 +msgctxt "Footer/*/List item.Link" +msgid "Use another instance" +msgstr "" + +#: front/src/views/auth/PasswordReset.vue:12 +msgctxt "Content/Signup/Paragraph" +msgid "Use this form to request a password reset. We will send an email to the given address with instructions to reset your password." +msgstr "" + +#: front/src/components/manage/moderation/InstancePolicyForm.vue:111 +msgctxt "Content/Moderation/Help text" +msgid "Use this setting to temporarily enable/disable the policy without completely removing it." +msgstr "" + +#: front/src/components/manage/users/InvitationsTable.vue:49 +msgctxt "Content/Admin/Table" +msgid "Used" +msgstr "" + +#: front/src/views/content/libraries/Detail.vue:26 +msgctxt "Content/Library/Table.Label" +msgid "User" +msgstr "" + +#: front/src/components/instance/Stats.vue:5 +msgctxt "Content/About/Title/Noun" +msgid "User activity" +msgstr "" + +#: front/src/components/library/AlbumDetail.vue:26 +#: front/src/components/library/ArtistDetail.vue:39 +#: front/src/components/library/TrackDetail.vue:79 +msgctxt "Content/*/Title/Noun" +msgid "User libraries" +msgstr "" + +#: front/src/components/library/Radios.vue:20 +msgctxt "Content/Radio/Title" +msgid "User radios" +msgstr "" + +#: front/src/components/auth/Signup.vue:19 +#: front/src/components/manage/users/UsersTable.vue:37 +#: front/src/components/mixins/Translations.vue:59 +#: front/src/views/admin/moderation/AccountsDetail.vue:114 +#: front/src/components/mixins/Translations.vue:60 +msgctxt "Content/*/*" +msgid "Username" +msgstr "" + +#: front/src/components/auth/Login.vue:15 +msgctxt "Content/Login/Input.Label/Noun" +msgid "Username or email" +msgstr "" + +#: front/src/components/instance/Stats.vue:13 +msgctxt "Content/About/Paragraph/Unit" +msgid "users" +msgstr "" + +#: front/src/components/Sidebar.vue:102 +#: front/src/components/manage/moderation/DomainsTable.vue:39 +#: front/src/components/mixins/Translations.vue:61 +#: src/views/admin/Settings.vue:81 front/src/views/admin/users/Base.vue:5 +#: src/views/admin/users/UsersList.vue:21 +#: front/src/components/mixins/Translations.vue:62 +msgctxt "*/*/*/Noun" +msgid "Users" +msgstr "" + +#: front/src/components/Footer.vue:29 +msgctxt "Footer/*/Title" +msgid "Using Funkwhale" +msgstr "" + +#: front/src/components/Footer.vue:13 +msgctxt "Footer/*/List item" +msgid "Version %{version}" +msgstr "" + +#: front/src/views/content/libraries/Quota.vue:29 +#: front/src/views/content/libraries/Quota.vue:56 +#: front/src/views/content/libraries/Quota.vue:82 +msgctxt "Content/Library/Link/Verb" +msgid "View files" +msgstr "" + +#: front/src/components/library/AlbumBase.vue:81 +#: front/src/components/library/ArtistBase.vue:92 +#: front/src/components/library/TrackBase.vue:100 +#: front/src/views/admin/library/AlbumDetail.vue:42 +#: front/src/views/admin/library/ArtistDetail.vue:41 +#: front/src/views/admin/library/LibraryDetail.vue:34 +#: front/src/views/admin/library/LibraryDetail.vue:45 +#: front/src/views/admin/library/TrackDetail.vue:41 +#: front/src/views/admin/library/UploadDetail.vue:35 +#: front/src/views/admin/library/UploadDetail.vue:46 +#: front/src/views/admin/moderation/AccountsDetail.vue:37 +#: front/src/views/admin/moderation/AccountsDetail.vue:45 +msgctxt "Content/Moderation/Link/Verb" +msgid "View in Django's admin" +msgstr "" + +#: front/src/components/library/AlbumBase.vue:61 +#: front/src/components/library/ArtistBase.vue:72 +#: front/src/components/library/TrackBase.vue:80 +#: front/src/components/metadata/ArtistCard.vue:49 +#: front/src/components/metadata/ReleaseCard.vue:53 +msgctxt "Content/*/*/Clickable, Verb" +msgid "View on MusicBrainz" +msgstr "" + +#: front/src/components/manage/library/LibrariesTable.vue:11 +#: front/src/components/manage/library/LibrariesTable.vue:51 +#: front/src/components/manage/library/UploadsTable.vue:11 +#: front/src/components/manage/library/UploadsTable.vue:63 +#: front/src/views/admin/library/LibraryDetail.vue:94 +#: front/src/views/admin/library/UploadDetail.vue:101 +msgctxt "*/*/*" +msgid "Visibility" +msgstr "" + +#: front/src/views/content/libraries/Form.vue:18 +msgctxt "Content/Library/Dropdown.Label" +msgid "Visibility" +msgstr "" + +#: front/src/components/library/AlbumDetail.vue:4 +msgctxt "Content/Album/" +msgid "Volume %{ number }" +msgstr "" + +#: front/src/components/federation/FetchButton.vue:69 +msgctxt "Popup/*/Loading.Title" +msgid "Waiting for result…" +msgstr "" + +#: front/src/components/auth/Login.vue:7 +msgctxt "Content/Login/Error message.Title" +msgid "We cannot log you in" +msgstr "" + +#: front/src/components/auth/ApplicationForm.vue:3 +msgctxt "Content/*/Error message.Title" +msgid "We cannot save your changes" +msgstr "" + +#: front/src/components/Home.vue:122 +msgctxt "Content/Home/List item" +msgid "We do not track you or bother you with ads" +msgstr "" + +#: front/src/components/library/FileUpload.vue:39 +msgctxt "Content/Library/Link" +msgid "We recommend using Picard for that purpose." +msgstr "" + +#: front/src/components/Home.vue:7 +msgctxt "Content/Home/Title" +msgid "We think listening to music should be simple." +msgstr "" + +#: front/src/components/Home.vue:148 +msgctxt "Head/Home/Title" +msgid "Welcome" +msgstr "" + +#: front/src/components/Home.vue:5 +msgctxt "Content/Home/Title/Verb" +msgid "Welcome on Funkwhale" +msgstr "" + +#: front/src/components/Home.vue:24 +msgctxt "Content/Home/Title" +msgid "Why funkwhale?" +msgstr "" + +#: front/src/components/audio/EmbedWizard.vue:13 +msgctxt "Popup/Embed/Input.Label" +msgid "Widget height" +msgstr "" + +#: front/src/components/audio/EmbedWizard.vue:6 +msgctxt "Popup/Embed/Input.Label" +msgid "Widget width" +msgstr "" + +#: front/src/components/auth/ApplicationForm.vue:157 +msgctxt "Content/OAuth Scopes/Label/Verb" +msgid "Write" +msgstr "" + +#: front/src/components/auth/Authorize.vue:21 +msgctxt "Content/Auth/Label/Noun" +msgid "Write-only" +msgstr "" + +#: front/src/components/auth/ApplicationForm.vue:158 +msgctxt "Content/OAuth Scopes/Help Text" +msgid "Write-only access to user data" +msgstr "" + +#: front/src/components/Sidebar.vue:129 +#: front/src/components/manage/moderation/AccountsTable.vue:72 +#: front/src/components/manage/moderation/DomainsTable.vue:58 +msgctxt "*/*/*" +msgid "Yes" +msgstr "" + +#: front/src/components/auth/Logout.vue:8 +msgctxt "Content/Login/Button.Label" +msgid "Yes, log me out!" +msgstr "" + +#: front/src/views/content/libraries/Form.vue:19 +msgctxt "Content/Library/Paragraph" +msgid "You are able to share your library with other people, regardless of its visibility." +msgstr "" + +#: front/src/components/library/FileUpload.vue:32 +msgctxt "Content/Library/Paragraph" +msgid "You are about to upload music to your library. Before proceeding, please ensure that:" +msgstr "" + +#: front/src/components/SetInstanceModal.vue:12 +msgctxt "Popup/Login/Paragraph" +msgid "You are currently connected to %{ hostname } . If you continue, you will be disconnected from your current instance and all your local data will be deleted." +msgstr "" + +#: front/src/components/library/ArtistDetail.vue:6 +msgctxt "Content/Artist/Paragraph" +msgid "You are currently hiding content related to this artist." +msgstr "" + +#: front/src/components/auth/Logout.vue:7 +msgctxt "Content/Login/Paragraph" +msgid "You are currently logged in as %{ username }" +msgstr "" + +#: front/src/components/library/FileUpload.vue:35 +msgctxt "Content/Library/List item" +msgid "You are not uploading copyrighted content in a public library, otherwise you may be infringing the law" +msgstr "" + +#: front/src/components/SetInstanceModal.vue:98 +msgctxt "*/Instance/Message" +msgid "You are now using the Funkwhale instance at %{ url }" +msgstr "" + +#: front/src/views/content/Home.vue:17 +msgctxt "Content/Library/Paragraph" +msgid "You can follow libraries from other users to get access to new music. Public libraries can be followed immediatly, while following a private library requires approval from its owner." +msgstr "" + +#: front/src/components/Home.vue:128 +msgctxt "Content/Home/List item" +msgid "You can invite friends and family to your instance so they can enjoy your music" +msgstr "" + +#: front/src/components/moderation/FilterModal.vue:31 +msgctxt "Popup/Moderation/Paragraph" +msgid "You can manage and update your filters anytime from your account settings." +msgstr "" + +#: front/src/views/auth/EmailConfirm.vue:24 +msgctxt "Content/Signup/Paragraph" +msgid "You can now use the service without limitations." +msgstr "" + +#: front/src/components/library/radios/Builder.vue:7 +msgctxt "Content/Radio/Paragraph" +msgid "You can use this interface to build your own custom radio, which will play tracks according to your criteria." +msgstr "" + +#: front/src/components/auth/SubsonicTokenForm.vue:7 +msgctxt "Content/Settings/Paragraph" +msgid "You can use those to enjoy your playlist and music in offline mode, on your smartphone or tablet, for instance." +msgstr "" + +#: front/src/components/auth/Settings.vue:202 +msgctxt "Content/Applications/Paragraph" +msgid "You don't have any application connected with your account." +msgstr "" + +#: front/src/components/auth/Settings.vue:261 +msgctxt "Content/Applications/Paragraph" +msgid "You don't have any configured application yet." +msgstr "" + +#: front/src/views/admin/moderation/AccountsDetail.vue:75 +msgctxt "Content/Moderation/Card.Title" +msgid "You don't have any rule in place for this account." +msgstr "" + +#: front/src/views/admin/moderation/DomainsDetail.vue:39 +msgctxt "Content/Moderation/Card.Title" +msgid "You don't have any rule in place for this domain." +msgstr "" + +#: front/src/components/library/EditForm.vue:52 +msgctxt "Content/Library/Paragraph" +msgid "You don't have the permission to edit this object, but you can suggest changes. Once submitted, suggestions will be reviewed before approval." +msgstr "" + +#: front/src/components/Sidebar.vue:171 +msgctxt "Sidebar/Player/Title" +msgid "You have a radio playing" +msgstr "" + +#: front/src/components/audio/Player.vue:69 +msgctxt "Sidebar/Player/Error message.Paragraph" +msgid "You may have a connectivity issue." +msgstr "" + +#: front/src/components/auth/Settings.vue:100 +msgctxt "Popup/Settings/List item" +msgid "You will be logged out from this session and have to log in with the new one" +msgstr "" + +#: front/src/components/auth/Authorize.vue:51 +msgctxt "Content/Auth/Paragraph" +msgid "You will be redirected to %{ url }" +msgstr "" + +#: front/src/components/auth/Authorize.vue:49 +msgctxt "Content/Auth/Paragraph" +msgid "You will be shown a code to copy-paste in the application." +msgstr "" + +#: front/src/components/auth/Settings.vue:71 +msgctxt "Content/Settings/Paragraph" +msgid "You will have to update your password on your clients that use this password." +msgstr "" + +#: front/src/components/moderation/FilterModal.vue:20 +msgctxt "Popup/Moderation/Paragraph" +msgid "You will not see tracks, albums and user activity linked to this artist anymore:" +msgstr "" + +#: front/src/components/auth/Signup.vue:13 +msgctxt "Content/Signup/Form/Paragraph" +msgid "Your account cannot be created." +msgstr "" + +#: front/src/components/auth/Settings.vue:215 +msgctxt "Content/Settings/Title/Noun" +msgid "Your applications" +msgstr "" + +#: front/src/components/auth/Settings.vue:38 +msgctxt "Content/Settings/Error message.Title" +msgid "Your avatar cannot be saved" +msgstr "" + +#: front/src/components/library/EditForm.vue:3 +msgctxt "Content/Library/Paragraph" +msgid "Your edit was successfully submitted." +msgstr "" + +#: front/src/components/favorites/List.vue:116 +msgctxt "Head/Favorites/Title" +msgid "Your Favorites" +msgstr "" + +#: front/src/components/Home.vue:109 +msgctxt "Content/Home/Title" +msgid "Your music, your way" +msgstr "" + +#: front/src/views/Notifications.vue:4 +msgctxt "Content/Notifications/Title" +msgid "Your notifications" +msgstr "" + +#: front/src/components/auth/Settings.vue:76 +msgctxt "Content/Settings/Error message.Title" +msgid "Your password cannot be changed" +msgstr "" + +#: front/src/views/auth/PasswordResetConfirm.vue:29 +msgctxt "Content/Signup/Card.Paragraph" +msgid "Your password has been updated successfully." +msgstr "" + +#: front/src/components/auth/Settings.vue:14 +msgctxt "Content/Settings/Error message.Title" +msgid "Your settings can't be updateds" +msgstr "" + +#: front/src/components/auth/Settings.vue:101 +msgctxt "Popup/Settings/List item" +msgid "Your Subsonic password will be changed to a new, random one, logging you out from devices that used the old Subsonic password" +msgstr "" + +#: front/src/edits.js:47 +msgctxt "*/*/*/Short, Noun" +msgid "Position" +msgstr "" + +#: front/src/edits.js:54 +msgctxt "Content/Track/*/Noun" +msgid "Copyright" +msgstr "" + +#: front/src/components/library/AlbumBase.vue:183 +msgctxt "Content/Album/Header.Title" +msgid "Album containing %{ count } track, by %{ artist }" +msgid_plural "Album containing %{ count } tracks, by %{ artist }" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: front/src/components/audio/PlayButton.vue:220 +msgctxt "*/Queue/Message" +msgid "%{ count } track was added to your queue" +msgid_plural "%{ count } tracks were added to your queue" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" diff --git a/front/locales/en_GB/LC_MESSAGES/app.po b/front/locales/en_GB/LC_MESSAGES/app.po index c621fceda..fdd475755 100644 --- a/front/locales/en_GB/LC_MESSAGES/app.po +++ b/front/locales/en_GB/LC_MESSAGES/app.po @@ -1,1890 +1,3116 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# English translations for front package. +# Copyright (C) 2019 THE front'S COPYRIGHT HOLDER # This file is distributed under the same license as the front package. -# FIRST AUTHOR , YEAR. +# Automatically generated, 2019. # msgid "" msgstr "" "Project-Id-Version: front 0.1.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-01-29 10:47+0100\n" -"PO-Revision-Date: 2019-06-06 09:17+0000\n" -"Last-Translator: Ciarán Ainsworth \n" +"POT-Creation-Date: 2019-05-16 10:35+0200\n" +"PO-Revision-Date: 2019-06-06 12:44+0100\n" +"Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: en_GB\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.2.2\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.2.3\n" #: front/src/components/playlists/PlaylistModal.vue:9 +msgctxt "Popup/Playlist/Paragraph" msgid "\"%{ title }\", by %{ artist }" msgstr "\"%{ title }\", by %{ artist }" #: front/src/components/Sidebar.vue:24 +msgctxt "Sidebar/Queue/Tab.Title" msgid "(%{ index } of %{ length })" msgstr "(%{ index } of %{ length })" #: front/src/components/Sidebar.vue:22 +msgctxt "Sidebar/Queue/Tab.Title" msgid "(empty)" msgstr "(empty)" -#: front/src/components/common/ActionTable.vue:57 -#: front/src/components/common/ActionTable.vue:66 +#: front/src/components/auth/Authorize.vue:16 +msgctxt "Content/Auth/Title" +msgid "%{ app } wants to access your Funkwhale account" +msgstr "%{ app } wants to access your Funkwhale account" + +#: front/src/components/common/ActionTable.vue:68 +msgctxt "Content/*/Paragraph" msgid "%{ count } on %{ total } selected" msgid_plural "%{ count } on %{ total } selected" msgstr[0] "%{ count } on %{ total } selected" msgstr[1] "%{ count } on %{ total } selected" -#: front/src/components/Sidebar.vue:110 src/components/audio/album/Card.vue:54 -#: front/src/views/content/libraries/Card.vue:39 src/views/content/remote/Card.vue:26 +#: front/src/components/Sidebar.vue:121 src/components/audio/album/Card.vue:52 +#: front/src/views/content/libraries/Card.vue:40 +#: src/views/content/remote/Card.vue:30 +msgctxt "*/*/*" msgid "%{ count } track" msgid_plural "%{ count } tracks" msgstr[0] "%{ count } track" msgstr[1] "%{ count } tracks" -#: front/src/components/library/Artist.vue:13 +#: front/src/components/library/ArtistBase.vue:13 +msgctxt "Content/Artist/Paragraph" msgid "%{ count } track in %{ albumsCount } albums" msgid_plural "%{ count } tracks in %{ albumsCount } albums" msgstr[0] "%{ count } track in %{ albumsCount } albums" msgstr[1] "%{ count } tracks in %{ albumsCount } albums" -#: front/src/components/library/radios/Builder.vue:80 +#: front/src/components/library/radios/Builder.vue:81 +msgctxt "Content/Radio/Table.Paragraph/Short" msgid "%{ count } track matching combined filters" msgid_plural "%{ count } tracks matching combined filters" msgstr[0] "%{ count } track matching combined filters" msgstr[1] "%{ count } tracks matching combined filters" -#: front/src/components/audio/PlayButton.vue:180 -msgid "%{ count } track was added to your queue" -msgid_plural "%{ count } tracks were added to your queue" -msgstr[0] "%{ count } track was added to your queue" -msgstr[1] "%{ count } tracks were added to your queue" - #: front/src/components/playlists/Card.vue:18 +msgctxt "Content/*/Card/List item" msgid "%{ count} track" msgid_plural "%{ count } tracks" msgstr[0] "%{ count} track" msgstr[1] "%{ count } tracks" #: front/src/views/content/libraries/Quota.vue:11 +msgctxt "Content/Library/Paragraph" msgid "%{ current } used on %{ max } allowed" msgstr "%{ current } used on %{ max } allowed" #: front/src/components/common/Duration.vue:2 +msgctxt "Content/*/Paragraph" msgid "%{ hours } h %{ minutes } min" msgstr "%{ hours } h %{ minutes } min" #: front/src/components/common/Duration.vue:5 +msgctxt "Content/*/Paragraph" msgid "%{ minutes } min" msgstr "%{ minutes } min" #: front/src/components/notifications/NotificationRow.vue:40 +msgctxt "Content/Notifications/Paragraph" msgid "%{ username } accepted your follow on library \"%{ library }\"" msgstr "%{ username } accepted your follow on library \"%{ library }\"" #: front/src/components/notifications/NotificationRow.vue:39 +msgctxt "Content/Notifications/Paragraph" msgid "%{ username } followed your library \"%{ library }\"" msgstr "%{ username } followed your library \"%{ library }\"" #: front/src/components/notifications/NotificationRow.vue:41 +msgctxt "Content/Notifications/Paragraph" msgid "%{ username } wants to follow your library \"%{ library }\"" msgstr "%{ username } wants to follow your library \"%{ library }\"" #: front/src/components/auth/Profile.vue:46 +msgctxt "Head/Profile/Title" msgid "%{ username }'s profile" msgstr "%{ username }'s profile" +#: front/src/components/playlists/PlaylistModal.vue:21 +msgctxt "Popup/Playlist/Paragraph" +msgid "%{ track } is already in %{ playlist }." +msgstr "%{ track } is already in %{ playlist }." + #: front/src/components/audio/artist/Card.vue:41 +msgctxt "Content/Artist/Card" msgid "1 album" msgid_plural "%{ count } albums" msgstr[0] "1 album" msgstr[1] "%{ count } albums" #: front/src/components/favorites/List.vue:10 +msgctxt "Content/Favorites/Title" msgid "1 favorite" msgid_plural "%{ count } favorites" msgstr[0] "1 favourite" msgstr[1] "%{ count } favourites" -#: front/src/components/library/FileUpload.vue:226 -#: front/src/components/library/FileUpload.vue:227 +#: front/src/components/Home.vue:64 +msgctxt "Content/Home/Title" +msgid "A clean library" +msgstr "A clean library" + +#: front/src/components/library/FileUpload.vue:264 +msgctxt "Content/Library/Help text" msgid "A network error occured while uploading this file" msgstr "A network error occurred while uploading this file" +#: front/src/components/library/EditForm.vue:145 +msgctxt "*/*/Placeholder" +msgid "A short summary describing your changes." +msgstr "A short summary describing your changes." + #: front/src/components/About.vue:5 +msgctxt "Content/About/Title/Short, Noun" msgid "About %{ instance }" msgstr "About %{ instance }" #: front/src/components/Footer.vue:6 +msgctxt "Footer/About/Title" msgid "About %{instanceName}" msgstr "About %{instanceName}" #: front/src/components/Footer.vue:45 +msgctxt "Footer/*/Title/Short" msgid "About Funkwhale" msgstr "About Funkwhale" #: front/src/components/Footer.vue:10 +msgctxt "Footer/About/List item.Link" msgid "About page" msgstr "About page" #: front/src/components/About.vue:8 src/components/About.vue:67 +msgctxt "Content/About/Title" msgid "About this instance" msgstr "About this instance" #: front/src/views/content/libraries/Detail.vue:48 +msgctxt "Content/Library/Button.Label" msgid "Accept" msgstr "Accept" #: front/src/views/content/libraries/Detail.vue:40 +msgctxt "Content/Library/Table/Short" msgid "Accepted" msgstr "Accepted" #: front/src/components/auth/SubsonicTokenForm.vue:110 +msgctxt "Content/Settings/Message" msgid "Access disabled" msgstr "Access disabled" -#: front/src/components/Home.vue:106 -msgid "Access your music from a clean interface that focus on what really matters" -msgstr "" -"Access your music from a clean interface that focuses on what really matters" +#: front/src/components/mixins/Translations.vue:73 +#: front/src/components/mixins/Translations.vue:74 +msgctxt "Content/OAuth Scopes/Paragraph" +msgid "Access to audio files, libraries, artists, albums and tracks" +msgstr "Access to audio files, libraries, artists, albums and tracks" -#: front/src/components/mixins/Translations.vue:19 -#: front/src/components/mixins/Translations.vue:20 +#: front/src/components/mixins/Translations.vue:97 +#: front/src/components/mixins/Translations.vue:98 +msgctxt "Content/OAuth Scopes/Paragraph" +msgid "Access to content filters" +msgstr "Access to content filters" + +#: front/src/components/mixins/Translations.vue:105 +#: front/src/components/mixins/Translations.vue:106 +msgctxt "Content/OAuth Scopes/Paragraph" +msgid "Access to edits" +msgstr "Access to edits" + +#: front/src/components/mixins/Translations.vue:69 +#: front/src/components/mixins/Translations.vue:70 +msgctxt "Content/OAuth Scopes/Paragraph" +msgid "Access to email, username, and profile information" +msgstr "Access to email, username, and profile information" + +#: front/src/components/mixins/Translations.vue:77 +#: front/src/components/mixins/Translations.vue:78 +msgctxt "Content/OAuth Scopes/Paragraph" +msgid "Access to favorites" +msgstr "Access to favourites" + +#: front/src/components/mixins/Translations.vue:85 +#: front/src/components/mixins/Translations.vue:86 +msgctxt "Content/OAuth Scopes/Paragraph" +msgid "Access to follows" +msgstr "Access to follows" + +#: front/src/components/mixins/Translations.vue:81 +#: front/src/components/mixins/Translations.vue:82 +msgctxt "Content/OAuth Scopes/Paragraph" +msgid "Access to listening history" +msgstr "Access to listening history" + +#: front/src/components/mixins/Translations.vue:101 +#: front/src/components/mixins/Translations.vue:102 +msgctxt "Content/OAuth Scopes/Paragraph" +msgid "Access to notifications" +msgstr "Access to notifications" + +#: front/src/components/mixins/Translations.vue:89 +#: front/src/components/mixins/Translations.vue:90 +msgctxt "Content/OAuth Scopes/Paragraph" +msgid "Access to playlists" +msgstr "Access to playlists" + +#: front/src/components/mixins/Translations.vue:93 +#: front/src/components/mixins/Translations.vue:94 +msgctxt "Content/OAuth Scopes/Paragraph" +msgid "Access to radios" +msgstr "Access to radios" + +#: front/src/components/Home.vue:101 +msgctxt "Content/Home/List item" +msgid "Access your music from a clean interface that focuses on what really matters" +msgstr "Access your music from a clean interface that focuses on what really matters" + +#: front/src/components/manage/library/UploadsTable.vue:67 +#: front/src/components/mixins/Translations.vue:45 +#: front/src/views/admin/library/UploadDetail.vue:175 +#: front/src/components/mixins/Translations.vue:46 +msgctxt "Content/*/*/Noun" msgid "Accessed date" -msgstr "Access date" +msgstr "Accessed date" -#: front/src/views/admin/moderation/AccountsDetail.vue:78 +#: front/src/views/admin/library/LibraryDetail.vue:104 +#: front/src/views/admin/library/UploadDetail.vue:111 +msgctxt "*/*/*/Noun" +msgid "Account" +msgstr "Account" + +#: front/src/components/manage/library/LibrariesTable.vue:49 +#: front/src/components/manage/library/UploadsTable.vue:61 +msgctxt "*/*/*" +msgid "Account" +msgstr "Account" + +#: front/src/views/admin/moderation/AccountsDetail.vue:107 +msgctxt "Content/Moderation/Title" msgid "Account data" msgstr "Account data" #: front/src/components/auth/Settings.vue:5 +msgctxt "Content/Settings/Title" msgid "Account settings" msgstr "Account settings" -#: front/src/components/auth/Settings.vue:263 +#: front/src/components/auth/Settings.vue:479 +msgctxt "Head/Settings/Title" msgid "Account Settings" msgstr "Account Settings" #: front/src/components/manage/users/UsersTable.vue:39 +msgctxt "Content/Admin/Table.Label/Short, Noun" msgid "Account status" msgstr "Account status" #: front/src/views/auth/PasswordReset.vue:14 +msgctxt "Content/Signup/Input.Label" msgid "Account's email" msgstr "Account's email" #: front/src/views/admin/moderation/AccountsList.vue:3 #: front/src/views/admin/moderation/AccountsList.vue:24 #: front/src/views/admin/moderation/Base.vue:8 +msgctxt "*/Moderation/Title" msgid "Accounts" msgstr "Accounts" #: front/src/views/content/libraries/Detail.vue:29 +msgctxt "Content/Library/Table.Label" msgid "Action" msgstr "Action" -#: front/src/components/common/ActionTable.vue:99 +#: front/src/components/common/ActionTable.vue:101 +msgctxt "Content/*/Paragraph" msgid "Action %{ action } was launched successfully on %{ count } element" msgid_plural "Action %{ action } was launched successfully on %{ count } elements" msgstr[0] "Action %{ action } was launched successfully on %{ count } element" msgstr[1] "Action %{ action } was launched successfully on %{ count } elements" -#: front/src/components/common/ActionTable.vue:21 -#: front/src/components/library/radios/Builder.vue:64 +#: front/src/components/common/ActionTable.vue:22 +#: front/src/components/library/radios/Builder.vue:65 +msgctxt "Content/*/*/Noun" msgid "Actions" msgstr "Actions" #: front/src/components/manage/users/UsersTable.vue:53 +msgctxt "Content/Admin/Table" msgid "Active" msgstr "Active" -#: front/src/views/admin/moderation/AccountsDetail.vue:199 -#: front/src/views/admin/moderation/DomainsDetail.vue:144 +#: front/src/views/admin/library/AlbumDetail.vue:134 +#: front/src/views/admin/library/ArtistDetail.vue:123 +#: front/src/views/admin/library/LibraryDetail.vue:138 +#: front/src/views/admin/library/TrackDetail.vue:186 +#: front/src/views/admin/library/UploadDetail.vue:160 +#: front/src/views/admin/moderation/AccountsDetail.vue:220 +#: front/src/views/admin/moderation/DomainsDetail.vue:136 +msgctxt "Content/Moderation/Title" msgid "Activity" msgstr "Activity" #: front/src/components/mixins/Translations.vue:7 #: front/src/components/mixins/Translations.vue:8 +msgctxt "Content/Settings/Dropdown.Label/Noun" msgid "Activity visibility" msgstr "Activity visibility" #: front/src/views/admin/moderation/DomainsList.vue:18 +msgctxt "Content/Moderation/Button/Verb" msgid "Add" msgstr "Add" #: front/src/views/admin/moderation/DomainsList.vue:13 +msgctxt "Content/Moderation/Form.Label/Verb" msgid "Add a domain" msgstr "Add a domain" +#: front/src/views/admin/moderation/AccountsDetail.vue:79 +msgctxt "Content/Moderation/Button/Verb" +msgid "Add a moderation policy" +msgstr "Add a moderation policy" + #: front/src/components/manage/moderation/InstancePolicyForm.vue:4 +msgctxt "Content/Moderation/Card.Button.Label/Verb" msgid "Add a new moderation rule" msgstr "Add a new moderation rule" #: front/src/views/content/Home.vue:35 +msgctxt "Content/Library/Title/Verb" msgid "Add and manage content" msgstr "Add and manage content" +#: front/src/components/playlists/Editor.vue:28 +#: front/src/components/playlists/PlaylistModal.vue:31 +msgctxt "*/Playlist/Button.Label/Verb" +msgid "Add anyways" +msgstr "Add anyways" + #: front/src/components/Sidebar.vue:75 src/views/content/Base.vue:18 +msgctxt "*/Library/*/Verb" msgid "Add content" msgstr "Add content" -#: front/src/components/library/radios/Builder.vue:50 +#: front/src/components/library/radios/Builder.vue:51 +msgctxt "Content/Radio/Button.Label/Verb" msgid "Add filter" msgstr "Add filter" -#: front/src/components/library/radios/Builder.vue:40 +#: front/src/components/library/radios/Builder.vue:41 +msgctxt "Content/Radio/Paragraph" msgid "Add filters to customize your radio" msgstr "Add filters to customise your radio" -#: front/src/components/audio/PlayButton.vue:64 +#: front/src/components/audio/PlayButton.vue:75 +msgctxt "*/Queue/Dropdown/Button/Title" msgid "Add to current queue" msgstr "Add to current queue" #: front/src/components/favorites/TrackFavoriteIcon.vue:4 #: front/src/components/favorites/TrackFavoriteIcon.vue:28 +msgctxt "Content/Track/*/Verb" msgid "Add to favorites" msgstr "Add to favourites" #: front/src/components/playlists/TrackPlaylistIcon.vue:6 #: front/src/components/playlists/TrackPlaylistIcon.vue:34 +msgctxt "Sidebar/Player/Icon.Tooltip/Verb" msgid "Add to playlist…" msgstr "Add to playlist…" -#: front/src/components/audio/PlayButton.vue:14 +#: front/src/components/audio/PlayButton.vue:15 +msgctxt "*/Queue/Dropdown/Button/Label/Short" msgid "Add to queue" msgstr "Add to queue" -#: front/src/components/playlists/PlaylistModal.vue:116 +#: front/src/components/playlists/PlaylistModal.vue:142 +msgctxt "Popup/Playlist/Table.Button.Tooltip/Verb" msgid "Add to this playlist" msgstr "Add to this playlist" -#: front/src/components/playlists/PlaylistModal.vue:54 +#: front/src/components/playlists/PlaylistModal.vue:68 +msgctxt "Popup/Playlist/Table.Button.Label/Verb" msgid "Add track" msgstr "Add track" #: front/src/components/manage/users/UsersTable.vue:69 +msgctxt "Content/Admin/Table.User role" msgid "Admin" msgstr "Admin" #: front/src/components/Sidebar.vue:79 +msgctxt "Sidebar/Admin/Title/Noun" msgid "Administration" msgstr "Administration" -#: front/src/components/audio/SearchBar.vue:26 src/components/audio/track/Table.vue:8 -#: front/src/components/library/Album.vue:153 -#: front/src/components/manage/library/FilesTable.vue:39 -#: front/src/components/metadata/Search.vue:134 -#: front/src/views/content/libraries/FilesTable.vue:56 +#: front/src/views/admin/library/TrackDetail.vue:107 +msgctxt "*/*/*/Noun" msgid "Album" msgstr "Album" -#: front/src/components/library/Album.vue:183 -msgid "Album containing %{ count } track, by %{ artist }" -msgid_plural "Album containing %{ count } tracks, by %{ artist }" -msgstr[0] "Album containing %{ count } track, by %{ artist }" -msgstr[1] "Album containing %{ count } tracks, by %{ artist }" +#: front/src/components/audio/SearchBar.vue:26 +#: src/components/audio/track/Table.vue:9 +#: front/src/components/library/AlbumBase.vue:152 +#: front/src/components/library/ArtistBase.vue:194 +#: front/src/components/manage/library/TracksTable.vue:40 +#: front/src/components/metadata/Search.vue:134 +#: front/src/views/content/libraries/FilesTable.vue:57 +msgctxt "*/*/*" +msgid "Album" +msgstr "Album" -#: front/src/components/mixins/Translations.vue:24 -#: front/src/components/mixins/Translations.vue:25 +#: front/src/views/admin/library/TrackDetail.vue:128 +msgctxt "*/*/*/Noun" +msgid "Album artist" +msgstr "Album artist" + +#: front/src/views/admin/library/AlbumDetail.vue:92 +msgctxt "Content/Moderation/Title" +msgid "Album data" +msgstr "Album data" + +#: front/src/components/mixins/Translations.vue:51 +#: front/src/components/mixins/Translations.vue:52 +msgctxt "Content/*/Dropdown/Noun" msgid "Album name" msgstr "Album name" -#: front/src/components/library/Track.vue:27 -msgid "Album page" -msgstr "Album page" - -#: front/src/components/audio/Search.vue:19 src/components/instance/Stats.vue:48 -#: front/src/views/admin/moderation/AccountsDetail.vue:321 -#: front/src/views/admin/moderation/DomainsDetail.vue:257 +#: front/src/components/audio/Search.vue:19 +#: src/components/instance/Stats.vue:48 +#: front/src/components/library/Albums.vue:120 +#: src/components/library/Library.vue:7 +#: front/src/components/manage/library/ArtistsTable.vue:41 +#: front/src/views/admin/library/AlbumsList.vue:24 +#: front/src/views/admin/library/ArtistDetail.vue:241 +#: front/src/views/admin/library/Base.vue:11 +#: front/src/views/admin/library/LibraryDetail.vue:219 +#: front/src/views/admin/moderation/AccountsDetail.vue:354 +#: front/src/views/admin/moderation/DomainsDetail.vue:264 +msgctxt "*/*/*" msgid "Albums" msgstr "Albums" -#: front/src/components/library/Artist.vue:44 +#: front/src/components/library/ArtistDetail.vue:21 +msgctxt "Content/Artist/Title" msgid "Albums by this artist" msgstr "Albums by this artist" +#: front/src/components/manage/library/EditsCardList.vue:15 +#: front/src/components/manage/library/LibrariesTable.vue:13 +#: front/src/components/manage/library/UploadsTable.vue:13 +#: front/src/components/manage/library/UploadsTable.vue:22 #: front/src/components/manage/users/InvitationsTable.vue:19 #: front/src/views/content/libraries/FilesTable.vue:13 +msgctxt "Content/*/Dropdown" msgid "All" msgstr "All" +#: front/src/components/common/ActionTable.vue:59 +msgctxt "Content/*/Paragraph" +msgid "All %{ count } element selected" +msgid_plural "All %{ count } elements selected" +msgstr[0] "All %{ count } element selected" +msgstr[1] "All %{ count } elements selected" + +#: front/src/components/auth/Authorize.vue:107 +msgctxt "Head/Authorize/Title" +msgid "Allow application" +msgstr "Allow application" + +#: front/src/components/library/ImportStatusModal.vue:17 +msgctxt "Popup/Import/Message" +msgid "An error occured during upload processing. You will find more information below." +msgstr "An error occurred during upload processing. You will find more information below." + #: front/src/components/playlists/Editor.vue:13 +msgctxt "Content/Playlist/Error message.Title" msgid "An error occured while saving your changes" msgstr "An error occurred while saving your changes" -#: front/src/components/auth/Login.vue:10 -msgid "An unknown error happend, this can mean the server is down or cannot be reached" -msgstr "" -"An unknown error happened, this can mean the server is down or cannot be " -"reached" +#: front/src/components/federation/FetchButton.vue:21 +msgctxt "Popup/*/Message.Content" +msgid "An error occured while trying to refresh data:" +msgstr "An error occurred while trying to refresh data:" +#: front/src/components/federation/FetchButton.vue:41 +msgctxt "*/*/Error" +msgid "An HTTP error occured while contacting the remote server" +msgstr "An HTTP error occurred while contacting the remote server" + +#: front/src/components/auth/Login.vue:10 +msgctxt "Content/Login/Error message/List item" +msgid "An unknown error happend, this can mean the server is down or cannot be reached" +msgstr "An unknown error occurred, this can mean the server is down or cannot be reached" + +#: front/src/components/library/ImportStatusModal.vue:145 +msgctxt "Popup/Import/Error.Label" +msgid "An unkwown error occured" +msgstr "An unknown error occurred" + +#: front/src/components/auth/Settings.vue:175 +#: src/components/auth/Settings.vue:225 +msgctxt "*/*/*/Noun" +msgid "Application" +msgstr "Application" + +#: front/src/components/auth/ApplicationEdit.vue:12 +msgctxt "Content/Applications/Title" +msgid "Application details" +msgstr "Application details" + +#: front/src/components/auth/ApplicationEdit.vue:21 +msgctxt "Content/Applications/Label" +msgid "Application ID" +msgstr "Application ID" + +#: front/src/components/auth/ApplicationEdit.vue:16 +msgctxt "Content/Application/Paragraph/" +msgid "Application ID and secret are really sensitive values and must be treated like passwords. Do not share those with anyone else." +msgstr "Application ID and secret are really sensitive values and must be treated like passwords. Do not share those with anyone else." + +#: front/src/components/auth/ApplicationEdit.vue:25 +msgctxt "Content/Applications/Label" +msgid "Application secret" +msgstr "Application secret" + +#: front/src/components/library/EditCard.vue:81 #: front/src/components/notifications/NotificationRow.vue:66 +msgctxt "Content/*/Button.Label/Verb" msgid "Approve" msgstr "Approve" +#: front/src/components/library/EditCard.vue:25 +#: front/src/components/manage/library/EditsCardList.vue:21 +msgctxt "Content/*/*/Short" +msgid "Approved" +msgstr "Approved" + +#: front/src/components/library/EditCard.vue:21 +msgctxt "Content/Library/Card/Short" +msgid "Approved and applied" +msgstr "Approved and applied" + #: front/src/components/auth/Logout.vue:5 +msgctxt "Content/Login/Title" msgid "Are you sure you want to log out?" msgstr "Are you sure you want to log out?" -#: front/src/components/audio/SearchBar.vue:25 src/components/audio/track/Table.vue:7 -#: front/src/components/library/Artist.vue:137 -#: front/src/components/manage/library/FilesTable.vue:38 -#: front/src/components/metadata/Search.vue:130 -#: front/src/views/content/libraries/FilesTable.vue:55 +#: front/src/components/manage/library/AlbumsTable.vue:40 +#: front/src/components/manage/library/TracksTable.vue:41 +msgctxt "*/*/*" msgid "Artist" msgstr "Artist" -#: front/src/components/mixins/Translations.vue:25 -#: front/src/components/mixins/Translations.vue:26 +#: front/src/components/audio/SearchBar.vue:25 +#: src/components/audio/track/Table.vue:8 +#: front/src/components/metadata/Search.vue:130 +#: front/src/views/admin/library/AlbumDetail.vue:108 +#: front/src/views/admin/library/TrackDetail.vue:118 +#: front/src/views/content/libraries/FilesTable.vue:56 +msgctxt "*/*/*/Noun" +msgid "Artist" +msgstr "Artist" + +#: front/src/views/admin/library/ArtistDetail.vue:91 +msgctxt "Content/Moderation/Title" +msgid "Artist data" +msgstr "Artist data" + +#: front/src/components/mixins/Translations.vue:52 +#: front/src/components/mixins/Translations.vue:53 +msgctxt "Content/*/Dropdown/Noun" msgid "Artist name" msgstr "Artist name" -#: front/src/components/library/Album.vue:16 src/components/library/Track.vue:33 -msgid "Artist page" -msgstr "Artist page" - #: front/src/components/audio/Search.vue:65 +msgctxt "*/Search/Input.Placeholder" msgid "Artist, album, track…" msgstr "Artist, album, track…" -#: front/src/components/audio/Search.vue:10 src/components/instance/Stats.vue:42 -#: front/src/components/library/Artists.vue:119 src/components/library/Library.vue:7 -#: front/src/views/admin/moderation/AccountsDetail.vue:313 -#: front/src/views/admin/moderation/DomainsDetail.vue:249 +#: front/src/views/admin/library/ArtistsList.vue:24 +#: front/src/views/admin/library/Base.vue:8 +#: front/src/views/admin/library/LibraryDetail.vue:209 +msgctxt "*/*/*" msgid "Artists" msgstr "Artists" -#: front/src/components/favorites/List.vue:33 src/components/library/Artists.vue:25 -#: front/src/components/library/Radios.vue:44 -#: front/src/components/manage/library/FilesTable.vue:19 +#: front/src/components/audio/Search.vue:10 +#: src/components/instance/Stats.vue:42 +#: front/src/components/library/Artists.vue:117 +#: src/components/library/Library.vue:10 +#: front/src/views/admin/moderation/AccountsDetail.vue:346 +#: front/src/views/admin/moderation/DomainsDetail.vue:254 +msgctxt "*/*/*/Noun" +msgid "Artists" +msgstr "Artists" + +#: front/src/components/favorites/List.vue:34 +#: src/components/library/Albums.vue:25 +#: front/src/components/library/Artists.vue:25 +#: src/components/library/Radios.vue:44 +#: front/src/components/manage/library/AlbumsTable.vue:21 +#: front/src/components/manage/library/ArtistsTable.vue:21 +#: front/src/components/manage/library/EditsCardList.vue:39 +#: front/src/components/manage/library/LibrariesTable.vue:30 +#: front/src/components/manage/library/TracksTable.vue:21 +#: front/src/components/manage/library/UploadsTable.vue:40 #: front/src/components/manage/moderation/AccountsTable.vue:21 #: front/src/components/manage/moderation/DomainsTable.vue:19 #: front/src/components/manage/users/UsersTable.vue:19 #: front/src/views/content/libraries/FilesTable.vue:31 #: front/src/views/playlists/List.vue:27 +msgctxt "Content/Search/Dropdown" msgid "Ascending" msgstr "Ascending" #: front/src/views/auth/PasswordReset.vue:28 +msgctxt "Content/Signup/Button.Label/Verb" msgid "Ask for a password reset" msgstr "Ask for a password reset" -#: front/src/views/admin/moderation/AccountsDetail.vue:245 +#: front/src/views/admin/library/AlbumDetail.vue:198 +#: front/src/views/admin/library/ArtistDetail.vue:187 +#: front/src/views/admin/library/LibraryDetail.vue:176 +#: front/src/views/admin/library/TrackDetail.vue:250 +#: front/src/views/admin/library/UploadDetail.vue:191 +#: front/src/views/admin/moderation/AccountsDetail.vue:274 #: front/src/views/admin/moderation/DomainsDetail.vue:202 +msgctxt "Content/Moderation/Title" msgid "Audio content" msgstr "Audio content" #: front/src/components/ShortcutsModal.vue:55 +msgctxt "Popup/Keyboard shortcuts/Title" msgid "Audio player shortcuts" msgstr "Audio player shortcuts" -#: front/src/components/playlists/PlaylistModal.vue:26 +#: front/src/components/auth/Authorize.vue:47 +msgctxt "Content/Signup/Button.Label/Verb" +msgid "Authorize %{ app }" +msgstr "Authorise %{ app }" + +#: front/src/components/auth/Authorize.vue:4 +msgctxt "Content/Auth/Title/Verb" +msgid "Authorize third-party app" +msgstr "Authorise third-party app" + +#: front/src/components/auth/Settings.vue:162 +msgctxt "Content/Settings/Title/Noun" +msgid "Authorized apps" +msgstr "Authorised apps" + +#: front/src/components/playlists/PlaylistModal.vue:40 +msgctxt "Popup/Playlist/Title" msgid "Available playlists" msgstr "Available playlists" #: front/src/components/auth/Settings.vue:34 +msgctxt "Content/Settings/Title" msgid "Avatar" msgstr "Avatar" #: front/src/views/auth/PasswordReset.vue:25 #: front/src/views/auth/PasswordResetConfirm.vue:18 +msgctxt "Content/Signup/Link" msgid "Back to login" msgstr "Back to login" -#: front/src/components/library/Track.vue:129 -#: front/src/components/manage/library/FilesTable.vue:42 -#: front/src/components/mixins/Translations.vue:29 -#: front/src/components/mixins/Translations.vue:30 +#: front/src/components/auth/ApplicationEdit.vue:9 +#: front/src/components/auth/ApplicationNew.vue:5 +msgctxt "Content/Applications/Link" +msgid "Back to settings" +msgstr "Back to settings" + +#: front/src/components/library/TrackDetail.vue:48 +#: front/src/components/mixins/Translations.vue:55 +#: front/src/views/admin/library/UploadDetail.vue:227 +#: front/src/components/mixins/Translations.vue:56 +msgctxt "Content/Track/*/Noun" msgid "Bitrate" msgstr "Bitrate" #: front/src/components/manage/moderation/InstancePolicyCard.vue:19 #: front/src/components/manage/moderation/InstancePolicyForm.vue:34 +msgctxt "Content/Moderation/*/Verb" msgid "Block everything" msgstr "Block everything" #: front/src/components/manage/moderation/InstancePolicyForm.vue:112 +msgctxt "Content/Moderation/Help text" msgid "Block everything from this account or domain. This will prevent any interaction with the entity, and purge related content (uploads, libraries, follows, etc.)" -msgstr "" -"Block everything from this account or domain. This will prevent any " -"interaction with the entity, and purge related content (uploads, libraries, " -"follows, etc.)" +msgstr "Block everything from this account or domain. This will prevent any interaction with the entity, and purge related content (uploads, libraries, follows, etc.)" #: front/src/components/Sidebar.vue:18 src/components/library/Library.vue:4 +msgctxt "*/Library/*/Verb" msgid "Browse" msgstr "Browse" #: front/src/components/Sidebar.vue:65 +msgctxt "Sidebar/Library/List item.Link/Verb" msgid "Browse library" msgstr "Browse library" +#: front/src/components/library/Albums.vue:4 +msgctxt "Content/Album/Title" +msgid "Browsing albums" +msgstr "Browsing albums" + #: front/src/components/library/Artists.vue:4 +msgctxt "Content/Artist/Title" msgid "Browsing artists" msgstr "Browsing artists" #: front/src/views/playlists/List.vue:3 +msgctxt "Content/Playlist/Title" msgid "Browsing playlists" msgstr "Browsing playlists" #: front/src/components/library/Radios.vue:4 +msgctxt "Content/Radio/Title" msgid "Browsing radios" msgstr "Browsing radios" #: front/src/components/library/radios/Builder.vue:5 +msgctxt "Content/Radio/Title" msgid "Builder" msgstr "Builder" #: front/src/components/audio/album/Card.vue:13 +msgctxt "Content/Album/Card" msgid "By %{ artist }" msgstr "By %{ artist }" -#: front/src/views/content/remote/Card.vue:103 +#: front/src/views/content/remote/Card.vue:112 +msgctxt "Popup/Library/Paragraph" msgid "By unfollowing this library, you loose access to its content." -msgstr "By unfollowing this library, you lose access to its content." +msgstr "By unfollowing this library, you loose access to its content." -#: front/src/views/admin/moderation/AccountsDetail.vue:261 +#: front/src/views/admin/library/AlbumDetail.vue:214 +#: front/src/views/admin/library/ArtistDetail.vue:203 +#: front/src/views/admin/library/LibraryDetail.vue:192 +#: front/src/views/admin/library/TrackDetail.vue:266 +#: front/src/views/admin/library/UploadDetail.vue:208 +#: front/src/views/admin/moderation/AccountsDetail.vue:290 #: front/src/views/admin/moderation/DomainsDetail.vue:217 +msgctxt "Content/Moderation/Table.Label/Noun" msgid "Cached size" msgstr "Cached size" +#: front/src/components/SetInstanceModal.vue:37 #: front/src/components/common/DangerousButton.vue:17 -#: front/src/components/library/Album.vue:52 src/components/library/Track.vue:76 +#: front/src/components/library/AlbumBase.vue:36 +#: front/src/components/library/ArtistBase.vue:47 +#: front/src/components/library/EditForm.vue:95 +#: front/src/components/library/TrackBase.vue:55 #: front/src/components/library/radios/Filter.vue:53 #: front/src/components/manage/moderation/InstancePolicyForm.vue:54 -#: front/src/components/playlists/PlaylistModal.vue:63 +#: front/src/components/moderation/FilterModal.vue:39 +#: front/src/components/playlists/PlaylistModal.vue:26 +#: front/src/components/playlists/PlaylistModal.vue:77 +msgctxt "*/*/Button.Label/Verb" msgid "Cancel" msgstr "Cancel" -#: front/src/components/library/radios/Builder.vue:63 +#: front/src/views/content/remote/Card.vue:97 +msgctxt "Content/Library/Card.Paragraph" +msgid "Cancel follow request" +msgstr "Cancel follow request" + +#: front/src/components/library/radios/Builder.vue:64 +msgctxt "Content/Radio/Table.Label/Noun (Value is a number of Tracks)" msgid "Candidates" msgstr "Candidates" -#: front/src/components/auth/Settings.vue:75 -msgid "Cannot change your password" -msgstr "Cannot change your password" - -#: front/src/components/library/FileUpload.vue:223 -#: front/src/components/library/FileUpload.vue:224 +#: front/src/components/library/FileUpload.vue:261 +msgctxt "Content/Library/Help text" msgid "Cannot upload this file, ensure it is not too big" msgstr "Cannot upload this file, ensure it is not too big" #: front/src/components/Footer.vue:21 +msgctxt "Footer/Settings/Dropdown.Label/Short, Verb" msgid "Change language" msgstr "Change language" -#: front/src/components/auth/Settings.vue:67 +#: front/src/components/auth/Settings.vue:68 +msgctxt "Content/Settings/Title/Verb" msgid "Change my password" msgstr "Change my password" -#: front/src/components/auth/Settings.vue:94 +#: front/src/components/auth/Settings.vue:95 +msgctxt "Content/Settings/Button.Label" msgid "Change password" msgstr "Change password" -#: front/src/views/auth/PasswordResetConfirm.vue:4 #: front/src/views/auth/PasswordResetConfirm.vue:62 +msgctxt "*/Signup/Title" msgid "Change your password" msgstr "Change your password" -#: front/src/components/auth/Settings.vue:95 +#: front/src/components/auth/Settings.vue:96 +msgctxt "Popup/Settings/Title" msgid "Change your password?" msgstr "Change your password?" -#: front/src/components/playlists/Editor.vue:21 +#: front/src/components/playlists/Editor.vue:31 +msgctxt "Content/Playlist/Paragraph" msgid "Changes synced with server" msgstr "Changes synced with server" -#: front/src/components/auth/Settings.vue:70 +#: front/src/components/auth/Settings.vue:71 +msgctxt "Content/Settings/Paragraph'" msgid "Changing your password will also change your Subsonic API password if you have requested one." -msgstr "" -"Changing your password will also change your Subsonic API password if you " -"have requested one." +msgstr "Changing your password will also change your Subsonic API password if you have requested one." -#: front/src/components/auth/Settings.vue:97 -msgid "Changing your password will have the following consequences" -msgstr "Changing your password will have the following consequences" +#: front/src/components/auth/Settings.vue:98 +msgctxt "Popup/Settings/Paragraph" +msgid "Changing your password will have the following consequences:" +msgstr "Changing your password will have the following consequences:" #: front/src/components/Footer.vue:40 +msgctxt "Footer/*/List item.Link" msgid "Chat room" msgstr "Chat room" -#: front/src/App.vue:13 +#: front/src/components/auth/ApplicationForm.vue:24 +msgctxt "Content/Applications/Paragraph/" +msgid "Checking the parent \"Read\" or \"Write\" scopes implies access to all the corresponding children scopes." +msgstr "Checking the parent \"Read\" or \"Write\" scopes implies access to all the corresponding children scopes." + +#: front/src/components/SetInstanceModal.vue:2 +msgctxt "Popup/Instance/Title" msgid "Choose your instance" msgstr "Choose your instance" -#: front/src/components/Home.vue:64 -msgid "Clean library" -msgstr "Clean library" - #: front/src/components/manage/users/InvitationForm.vue:37 +msgctxt "Content/Admin/Button.Label/Verb" msgid "Clear" msgstr "Clear" -#: front/src/components/playlists/Editor.vue:40 -#: front/src/components/playlists/Editor.vue:45 +#: front/src/components/library/EditForm.vue:75 +msgctxt "Content/Library/Button.Label" +msgid "Clear" +msgstr "Clear" + +#: front/src/components/playlists/Editor.vue:50 +#: front/src/components/playlists/Editor.vue:55 +msgctxt "*/Playlist/Button.Label/Verb" msgid "Clear playlist" msgstr "Clear playlist" -#: front/src/components/audio/Player.vue:366 +#: front/src/components/audio/Player.vue:642 +msgctxt "Sidebar/Player/Icon.Tooltip/Verb" msgid "Clear your queue" msgstr "Clear your queue" #: front/src/components/Home.vue:44 +msgctxt "Content/Home/List item/Verb" msgid "Click once, listen for hours using built-in radios" msgstr "Click once, listen for hours using built-in radios" -#: front/src/components/library/FileUpload.vue:75 +#: front/src/components/mixins/Translations.vue:21 +#: front/src/components/mixins/Translations.vue:22 +msgctxt "Content/Library/Link.Title" +msgid "Click to display more information about the import process for this upload" +msgstr "Click to display more information about the import process for this upload" + +#: front/src/components/library/FileUpload.vue:82 +msgctxt "Content/Library/Paragraph/Call to action" msgid "Click to select files to upload or drag and drop files or directories" msgstr "Click to select files to upload or drag and drop files or directories" -#: front/src/components/ShortcutsModal.vue:20 +#: front/src/components/federation/FetchButton.vue:85 +#: front/src/components/library/ImportStatusModal.vue:79 +msgctxt "*/*/Button.Label/Verb" msgid "Close" msgstr "Close" +#: front/src/components/ShortcutsModal.vue:20 +msgctxt "Popup/Keyboard shortcuts/Button.Label/Verb" +msgid "Close" +msgstr "Close" + +#: front/src/components/federation/FetchButton.vue:88 +msgctxt "*/*/Button.Label/Verb" +msgid "Close and reload page" +msgstr "Close and reload page" + #: front/src/components/manage/users/InvitationForm.vue:26 #: front/src/components/manage/users/InvitationsTable.vue:42 +msgctxt "Content/Admin/Table.Label/Noun" msgid "Code" msgstr "Code" -#: front/src/components/audio/album/Card.vue:43 +#: front/src/components/audio/album/Card.vue:41 #: front/src/components/audio/artist/Card.vue:33 +msgctxt "Content/*/Card.Link/Verb" msgid "Collapse" msgstr "Collapse" -#: front/src/components/library/radios/Builder.vue:62 +#: front/src/components/library/radios/Builder.vue:63 +msgctxt "Content/Radio/Table.Label/Verb (Value is a List of Parameters)" msgid "Config" msgstr "Config" #: front/src/components/common/DangerousButton.vue:21 +msgctxt "Modal/*/Button.Label/Short, Verb" msgid "Confirm" msgstr "Confirm" -#: front/src/views/auth/EmailConfirm.vue:4 src/views/auth/EmailConfirm.vue:20 #: front/src/views/auth/EmailConfirm.vue:51 +msgctxt "Head/Signup/Title" msgid "Confirm your e-mail address" msgstr "Confirm your e-mail address" #: front/src/views/auth/EmailConfirm.vue:13 +msgctxt "Content/Signup/Form.Label" msgid "Confirmation code" msgstr "Confirmation code" -#: front/src/components/common/ActionTable.vue:7 +#: front/src/components/moderation/FilterModal.vue:90 +msgctxt "*/Moderation/Message" +msgid "Content filter successfully added" +msgstr "Content filter successfully added" + +#: front/src/components/mixins/Translations.vue:96 +#: front/src/components/mixins/Translations.vue:97 +msgctxt "Content/OAuth Scopes/Label" +msgid "Content filters" +msgstr "Content filters" + +#: front/src/components/auth/Settings.vue:116 +msgctxt "Content/Settings/Title/Noun" +msgid "Content filters" +msgstr "Content filters" + +#: front/src/components/auth/Settings.vue:119 +msgctxt "Content/Settings/Paragraph" +msgid "Content filters help you hide content you don't want to see on the service." +msgstr "Content filters help you hide content you don't want to see on the service." + +#: front/src/components/common/ActionTable.vue:8 +msgctxt "Content/*/Button.Help text.Paragraph" msgid "Content have been updated, click refresh to see up-to-date content" -msgstr "Content has been updated. Click refresh to see up-to-date content" +msgstr "Content have been updated, click refresh to see up-to-date content" #: front/src/components/Footer.vue:48 +msgctxt "Footer/*/List item.Link" msgid "Contribute" msgstr "Contribute" #: front/src/components/audio/EmbedWizard.vue:19 #: front/src/components/common/CopyInput.vue:8 +msgctxt "*/*/Button.Label/Short, Verb" msgid "Copy" msgstr "Copy" -#: front/src/components/playlists/Editor.vue:163 +#: front/src/components/playlists/Editor.vue:194 +msgctxt "Content/Playlist/Button.Tooltip/Verb" msgid "Copy queued tracks to playlist" msgstr "Copy queued tracks to playlist" +#: front/src/components/auth/Authorize.vue:55 +msgctxt "Content/Auth/Paragraph" +msgid "Copy-paste the following code in the application:" +msgstr "Copy-paste the following code in the application:" + #: front/src/components/audio/EmbedWizard.vue:21 +msgctxt "Popup/Embed/Paragraph" msgid "Copy/paste this code in your website HTML" msgstr "Copy/paste this code in your website HTML" -#: front/src/components/library/Track.vue:91 +#: front/src/components/library/TrackDetail.vue:10 +#: front/src/views/admin/library/TrackDetail.vue:153 +msgctxt "Content/Track/Table.Label/Noun" msgid "Copyright" msgstr "Copyright" #: front/src/views/auth/EmailConfirm.vue:7 +msgctxt "Content/Signup/Paragraph" msgid "Could not confirm your e-mail address" msgstr "Could not confirm your e-mail address" #: front/src/views/content/remote/ScanForm.vue:3 +msgctxt "Content/Library/Error message.Title" msgid "Could not fetch remote library" msgstr "Could not fetch remote library" -#: front/src/views/content/libraries/FilesTable.vue:213 -msgid "Could not process this track, ensure it is tagged correctly" -msgstr "Could not process this track, ensure it is tagged correctly" - -#: front/src/components/Home.vue:85 +#: front/src/components/Home.vue:80 +msgctxt "Content/Home/List item" msgid "Covers, lyrics, our goal is to have them all ;)" msgstr "Covers, lyrics, our goal is to have them all ;)" #: front/src/components/manage/moderation/InstancePolicyForm.vue:58 +msgctxt "Content/Moderation/Card.Button.Label/Verb" msgid "Create" msgstr "Create" #: front/src/components/auth/Signup.vue:4 +msgctxt "Content/Signup/Title" msgid "Create a funkwhale account" -msgstr "Create a Funkwhale account" +msgstr "Create a funkwhale account" + +#: front/src/components/auth/Settings.vue:220 +msgctxt "Content/Settings/Button.Label" +msgid "Create a new application" +msgstr "Create a new application" + +#: front/src/components/auth/ApplicationNew.vue:8 +#: front/src/components/auth/ApplicationNew.vue:41 +msgctxt "Content/Applications/Title" +msgid "Create a new application" +msgstr "Create a new application" #: front/src/views/content/libraries/Home.vue:14 +msgctxt "Content/Library/Link/Verb" msgid "Create a new library" msgstr "Create a new library" #: front/src/components/playlists/Form.vue:2 +msgctxt "Popup/Playlist/Title/Verb" msgid "Create a new playlist" msgstr "Create a new playlist" #: front/src/components/Sidebar.vue:57 src/components/auth/Login.vue:17 +msgctxt "*/Signup/Link/Verb" msgid "Create an account" msgstr "Create an account" +#: front/src/components/auth/ApplicationForm.vue:65 +msgctxt "Content/Applications/Button.Label/Verb" +msgid "Create application" +msgstr "Create application" + #: front/src/views/content/libraries/Form.vue:26 +msgctxt "Content/Library/Button.Label/Verb" msgid "Create library" msgstr "Create library" #: front/src/components/auth/Signup.vue:53 +msgctxt "Content/Signup/Button.Label" msgid "Create my account" msgstr "Create my account" +#: front/src/components/auth/Settings.vue:264 +msgctxt "Content/Applications/Paragraph" +msgid "Create one to integrate Funkwhale with third-party applications." +msgstr "Create one to integrate Funkwhale with third-party applications." + #: front/src/components/playlists/Form.vue:34 +msgctxt "Content/Playlist/Button.Label/Verb" msgid "Create playlist" msgstr "Create playlist" #: front/src/components/library/Radios.vue:23 +msgctxt "Content/Radio/Button.Label/Verb" msgid "Create your own radio" msgstr "Create your own radio" +#: front/src/components/auth/Settings.vue:134 +#: src/components/auth/Settings.vue:227 +#: front/src/components/manage/library/AlbumsTable.vue:44 +#: front/src/components/manage/library/ArtistsTable.vue:43 +#: front/src/components/manage/library/LibrariesTable.vue:54 +#: front/src/components/manage/library/TracksTable.vue:44 +#: front/src/components/manage/library/UploadsTable.vue:66 #: front/src/components/manage/users/InvitationsTable.vue:40 -#: front/src/components/mixins/Translations.vue:16 -#: front/src/components/mixins/Translations.vue:17 +#: front/src/components/mixins/Translations.vue:43 +#: front/src/components/mixins/Translations.vue:44 +msgctxt "Content/*/*/Noun" msgid "Creation date" msgstr "Creation date" #: front/src/components/auth/Settings.vue:54 +msgctxt "Content/Settings/Title/Noun" msgid "Current avatar" msgstr "Current avatar" #: front/src/views/content/libraries/DetailArea.vue:4 +msgctxt "Content/Library/Title" msgid "Current library" msgstr "Current library" #: front/src/components/playlists/PlaylistModal.vue:8 +msgctxt "Popup/Playlist/Title" msgid "Current track" msgstr "Current track" #: front/src/views/content/libraries/Quota.vue:2 +msgctxt "Content/Library/Title" msgid "Current usage" msgstr "Current usage" +#: front/src/components/federation/FetchButton.vue:53 +msgctxt "*/*/Error" +msgid "Data returned by the remote server had invalid or missing attributes" +msgstr "Data returned by the remote server had invalid or missing attributes" + +#: front/src/components/federation/FetchButton.vue:17 +msgctxt "Popup/*/Message.Content" +msgid "Data was refreshed successfully from remote server." +msgstr "Data was refreshed successfully from remote server." + #: front/src/views/content/libraries/Detail.vue:27 +msgctxt "Content/Library/Table.Label" msgid "Date" msgstr "Date" +#: front/src/components/library/ImportStatusModal.vue:64 +msgctxt "Popup/Import/Table.Label/Noun" +msgid "Debug information" +msgstr "Debug information" + #: front/src/components/ShortcutsModal.vue:75 +msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb" msgid "Decrease volume" msgstr "Decrease volume" -#: front/src/components/manage/library/FilesTable.vue:190 +#: front/src/components/auth/Settings.vue:150 +#: src/components/auth/Settings.vue:251 +#: front/src/components/library/EditCard.vue:93 +#: front/src/components/library/EditCard.vue:98 +#: front/src/components/manage/library/AlbumsTable.vue:188 +#: front/src/components/manage/library/ArtistsTable.vue:178 +#: front/src/components/manage/library/LibrariesTable.vue:205 +#: front/src/components/manage/library/TracksTable.vue:188 +#: front/src/components/manage/library/UploadsTable.vue:255 #: front/src/components/manage/moderation/InstancePolicyForm.vue:61 #: front/src/components/manage/users/InvitationsTable.vue:167 -#: front/src/views/content/libraries/FilesTable.vue:233 -#: front/src/views/content/libraries/Form.vue:29 src/views/playlists/Detail.vue:33 +#: front/src/views/admin/library/AlbumDetail.vue:72 +#: front/src/views/admin/library/AlbumDetail.vue:77 +#: front/src/views/admin/library/ArtistDetail.vue:71 +#: front/src/views/admin/library/ArtistDetail.vue:76 +#: front/src/views/admin/library/LibraryDetail.vue:58 +#: front/src/views/admin/library/LibraryDetail.vue:63 +#: front/src/views/admin/library/TrackDetail.vue:71 +#: front/src/views/admin/library/TrackDetail.vue:76 +#: front/src/views/admin/library/UploadDetail.vue:65 +#: front/src/views/admin/library/UploadDetail.vue:70 +#: front/src/views/content/libraries/FilesTable.vue:222 +#: front/src/views/content/libraries/Form.vue:29 +#: src/views/playlists/Detail.vue:34 +msgctxt "*/*/*/Verb" msgid "Delete" msgstr "Delete" +#: front/src/components/auth/Settings.vue:254 +msgctxt "*/Settings/Button.Label/Verb" +msgid "Delete application" +msgstr "Delete application" + +#: front/src/components/auth/Settings.vue:252 +msgctxt "Popup/Settings/Title" +msgid "Delete application \"%{ application }\"?" +msgstr "Delete application \"%{ application }\"?" + #: front/src/views/content/libraries/Form.vue:39 +msgctxt "Popup/Library/Button.Label/Verb" msgid "Delete library" msgstr "Delete library" #: front/src/components/manage/moderation/InstancePolicyForm.vue:69 +msgctxt "Popup/Moderation/Button.Label/Verb" msgid "Delete moderation rule" msgstr "Delete moderation rule" -#: front/src/views/playlists/Detail.vue:38 +#: front/src/views/playlists/Detail.vue:39 +msgctxt "Popup/Playlist/Button.Label/Verb" msgid "Delete playlist" msgstr "Delete playlist" #: front/src/views/radios/Detail.vue:28 +msgctxt "Popup/Radio/Button.Label/Verb" msgid "Delete radio" msgstr "Delete radio" +#: front/src/views/admin/library/AlbumDetail.vue:73 +#: front/src/views/admin/library/TrackDetail.vue:72 +msgctxt "Popup/Library/Title" +msgid "Delete this album?" +msgstr "Delete this album?" + +#: front/src/views/admin/library/ArtistDetail.vue:72 +msgctxt "Popup/Library/Title" +msgid "Delete this artist?" +msgstr "Delete this artist?" + +#: front/src/views/admin/library/LibraryDetail.vue:59 #: front/src/views/content/libraries/Form.vue:31 +msgctxt "Popup/Library/Title" msgid "Delete this library?" msgstr "Delete this library?" #: front/src/components/manage/moderation/InstancePolicyForm.vue:63 +msgctxt "Popup/Moderation/Title" msgid "Delete this moderation rule?" msgstr "Delete this moderation rule?" -#: front/src/components/favorites/List.vue:34 src/components/library/Artists.vue:26 -#: front/src/components/library/Radios.vue:47 -#: front/src/components/manage/library/FilesTable.vue:20 +#: front/src/components/library/EditCard.vue:94 +msgctxt "Popup/Library/Title" +msgid "Delete this suggestion?" +msgstr "Delete this suggestion?" + +#: front/src/views/admin/library/UploadDetail.vue:66 +msgctxt "Popup/Library/Title" +msgid "Delete this upload?" +msgstr "Delete this upload?" + +#: front/src/components/favorites/List.vue:35 +#: src/components/library/Albums.vue:26 +#: front/src/components/library/Artists.vue:26 +#: src/components/library/Radios.vue:47 +#: front/src/components/manage/library/AlbumsTable.vue:22 +#: front/src/components/manage/library/ArtistsTable.vue:22 +#: front/src/components/manage/library/EditsCardList.vue:40 +#: front/src/components/manage/library/LibrariesTable.vue:31 +#: front/src/components/manage/library/TracksTable.vue:22 +#: front/src/components/manage/library/UploadsTable.vue:41 #: front/src/components/manage/moderation/AccountsTable.vue:22 #: front/src/components/manage/moderation/DomainsTable.vue:20 #: front/src/components/manage/users/UsersTable.vue:20 #: front/src/views/content/libraries/FilesTable.vue:32 #: front/src/views/playlists/List.vue:28 +msgctxt "Content/Search/Dropdown" msgid "Descending" msgstr "Descending" -#: front/src/components/library/radios/Builder.vue:25 -#: front/src/views/content/libraries/Form.vue:14 +#: front/src/views/admin/library/LibraryDetail.vue:123 +msgctxt "*/*/*/Noun" msgid "Description" msgstr "Description" -#: front/src/views/content/libraries/Card.vue:47 -msgid "Detail" -msgstr "Detail" +#: front/src/components/library/radios/Builder.vue:25 +#: front/src/views/content/libraries/Form.vue:14 +msgctxt "Content/*/Input.Label/Noun" +msgid "Description" +msgstr "Description" -#: front/src/views/content/remote/Card.vue:50 +#: front/src/views/content/libraries/Card.vue:48 +#: src/views/content/remote/Card.vue:54 +msgctxt "Content/Library/Card.Button.Label/Noun" msgid "Details" msgstr "Details" -#: front/src/views/admin/moderation/AccountsDetail.vue:455 +#: front/src/views/admin/moderation/AccountsDetail.vue:491 +msgctxt "Content/Moderation/Help text" msgid "Determine how much content the user can upload. Leave empty to use the default value of the instance." -msgstr "" -"Determine how much content the user can upload. Leave empty to use the " -"default value of the instance." +msgstr "Determine how much content the user can upload. Leave empty to use the default value of the instance." #: front/src/components/mixins/Translations.vue:8 #: front/src/components/mixins/Translations.vue:9 +msgctxt "Content/Settings/Dropdown.Help text" msgid "Determine the visibility level of your activity" msgstr "Determine the visibility level of your activity" -#: front/src/components/auth/Settings.vue:103 +#: front/src/components/auth/Settings.vue:104 #: front/src/components/auth/SubsonicTokenForm.vue:51 +msgctxt "Popup/Settings/Button.Label" msgid "Disable access" msgstr "Disable access" #: front/src/components/auth/SubsonicTokenForm.vue:48 +msgctxt "Content/Settings/Button.Label/Verb" msgid "Disable Subsonic access" msgstr "Disable Subsonic access" #: front/src/components/auth/SubsonicTokenForm.vue:49 +msgctxt "Popup/Settings/Title" msgid "Disable Subsonic API access?" msgstr "Disable Subsonic API access?" #: front/src/components/manage/moderation/InstancePolicyForm.vue:18 -#: front/src/views/admin/moderation/AccountsDetail.vue:128 -#: front/src/views/admin/moderation/AccountsDetail.vue:132 +#: front/src/views/admin/moderation/AccountsDetail.vue:157 +#: front/src/views/admin/moderation/AccountsDetail.vue:161 +msgctxt "*/*/*" msgid "Disabled" msgstr "Disabled" +#: front/src/views/admin/library/TrackDetail.vue:145 +msgctxt "*/*/*/Noun" +msgid "Disc number" +msgstr "Disc number" + #: front/src/components/auth/SubsonicTokenForm.vue:13 +msgctxt "Content/Settings/Link" msgid "Discover how to use Funkwhale from other apps" msgstr "Discover how to use Funkwhale from other apps" -#: front/src/views/admin/moderation/AccountsDetail.vue:103 +#: front/src/views/admin/moderation/AccountsDetail.vue:132 +msgctxt "'Content/*/*/Noun'" msgid "Display name" msgstr "Display name" #: front/src/components/library/radios/Builder.vue:30 +msgctxt "Content/Radio/Checkbox.Label/Verb" msgid "Display publicly" msgstr "Display publicly" #: front/src/components/manage/moderation/InstancePolicyForm.vue:122 +msgctxt "Content/Moderation/Help text" msgid "Do not download any media file (audio, album cover, account avatar…) from this account or domain. This will purge existing content as well." -msgstr "" -"Do not download any media files (audio, album cover, account avatar…) from " -"this account or domain. This will purge existing content as well." +msgstr "Do not download any media file (audio, album cover, account avatar…) from this account or domain. This will purge existing content as well." -#: front/src/components/playlists/Editor.vue:42 +#: front/src/components/playlists/Editor.vue:51 +msgctxt "Popup/Playlist/Title" msgid "Do you want to clear the playlist \"%{ playlist }\"?" msgstr "Do you want to clear the playlist \"%{ playlist }\"?" #: front/src/components/common/DangerousButton.vue:7 +msgctxt "Modal/*/Title" msgid "Do you want to confirm this action?" msgstr "Do you want to confirm this action?" #: front/src/views/playlists/Detail.vue:35 +msgctxt "Popup/Playlist/Title/Call to action" msgid "Do you want to delete the playlist \"%{ playlist }\"?" msgstr "Do you want to delete the playlist \"%{ playlist }\"?" #: front/src/views/radios/Detail.vue:26 +msgctxt "Popup/Radio/Title" msgid "Do you want to delete the radio \"%{ radio }\"?" msgstr "Do you want to delete the radio \"%{ radio }\"?" -#: front/src/components/common/ActionTable.vue:36 +#: front/src/components/moderation/FilterModal.vue:3 +msgctxt "Popup/Moderation/Title/Verb" +msgid "Do you want to hide content from artist \"%{ name }\"?" +msgstr "Do you want to hide content from artist \"%{ name }\"?" + +#: front/src/components/common/ActionTable.vue:37 +msgctxt "Modal/*/Title" msgid "Do you want to launch %{ action } on %{ count } element?" msgid_plural "Do you want to launch %{ action } on %{ count } elements?" msgstr[0] "Do you want to launch %{ action } on %{ count } element?" msgstr[1] "Do you want to launch %{ action } on %{ count } elements?" -#: front/src/components/Sidebar.vue:107 +#: front/src/components/Sidebar.vue:118 +msgctxt "Sidebar/Queue/Message" msgid "Do you want to restore your previous queue?" msgstr "Do you want to restore your previous queue?" #: front/src/components/Footer.vue:31 +msgctxt "Footer/*/List item.Link/Short, Noun" msgid "Documentation" msgstr "Documentation" +#: front/src/components/manage/library/AlbumsTable.vue:41 +#: front/src/components/manage/library/ArtistsTable.vue:40 +#: front/src/components/manage/library/LibrariesTable.vue:50 +#: front/src/components/manage/library/TracksTable.vue:42 +#: front/src/components/manage/library/UploadsTable.vue:62 #: front/src/components/manage/moderation/AccountsTable.vue:40 -#: front/src/components/mixins/Translations.vue:34 -#: front/src/views/admin/moderation/AccountsDetail.vue:93 -#: front/src/components/mixins/Translations.vue:35 +#: front/src/components/mixins/Translations.vue:60 +#: front/src/views/admin/library/AlbumDetail.vue:118 +#: front/src/views/admin/library/ArtistDetail.vue:107 +#: front/src/views/admin/library/LibraryDetail.vue:114 +#: front/src/views/admin/library/TrackDetail.vue:170 +#: front/src/views/admin/library/UploadDetail.vue:121 +#: front/src/views/admin/moderation/AccountsDetail.vue:123 +#: front/src/components/mixins/Translations.vue:61 +msgctxt "Content/Moderation/*/Noun" msgid "Domain" msgstr "Domain" #: front/src/views/admin/moderation/Base.vue:5 #: front/src/views/admin/moderation/DomainsList.vue:3 #: front/src/views/admin/moderation/DomainsList.vue:48 +msgctxt "*/Moderation/*/Noun" msgid "Domains" msgstr "Domains" -#: front/src/components/library/Track.vue:55 +#: front/src/components/library/TrackBase.vue:39 +#: front/src/views/admin/library/UploadDetail.vue:58 +msgctxt "Content/Track/Link/Verb" msgid "Download" msgstr "Download" -#: front/src/components/playlists/Editor.vue:49 +#: front/src/components/playlists/Editor.vue:59 +msgctxt "Content/Playlist/Paragraph/Call to action" msgid "Drag and drop rows to reorder tracks in the playlist" msgstr "Drag and drop rows to reorder tracks in the playlist" -#: front/src/components/audio/track/Table.vue:9 src/components/library/Track.vue:111 -#: front/src/components/manage/library/FilesTable.vue:43 -#: front/src/components/mixins/Translations.vue:30 -#: front/src/views/content/libraries/FilesTable.vue:59 -#: front/src/components/mixins/Translations.vue:31 +#: front/src/components/audio/track/Table.vue:10 +#: front/src/components/library/TrackDetail.vue:30 +#: front/src/components/mixins/Translations.vue:56 +#: front/src/views/admin/library/UploadDetail.vue:238 +#: front/src/views/content/libraries/FilesTable.vue:60 +#: front/src/components/mixins/Translations.vue:57 +msgctxt "Content/*/*" msgid "Duration" msgstr "Duration" #: front/src/views/auth/EmailConfirm.vue:23 +msgctxt "Content/Signup/Message" msgid "E-mail address confirmed" msgstr "E-mail address confirmed" -#: front/src/components/Home.vue:93 +#: front/src/components/Home.vue:88 +msgctxt "Content/Home/Title" msgid "Easy to use" msgstr "Easy to use" +#: front/src/components/library/AlbumBase.vue:68 +#: front/src/components/library/ArtistBase.vue:79 +#: front/src/components/library/TrackBase.vue:87 +#: front/src/components/manage/moderation/InstancePolicyCard.vue:45 +#: front/src/components/radios/Card.vue:23 +#: src/views/admin/library/AlbumDetail.vue:65 +#: front/src/views/admin/library/ArtistDetail.vue:64 +#: front/src/views/admin/library/TrackDetail.vue:64 #: front/src/views/content/libraries/Detail.vue:9 +#: src/views/playlists/Detail.vue:31 +msgctxt "Content/*/Button.Label/Verb" msgid "Edit" msgstr "Edit" +#: front/src/components/auth/Settings.vue:246 +msgctxt "Content/Settings/Button.Label" +msgid "Edit" +msgstr "Edit" + +#: front/src/components/auth/ApplicationEdit.vue:30 +#: front/src/components/auth/ApplicationEdit.vue:75 +msgctxt "Content/Applications/Title" +msgid "Edit application" +msgstr "Edit application" + #: front/src/components/About.vue:22 +msgctxt "Content/Settings/Button.Label/Verb" msgid "Edit instance info" msgstr "Edit instance info" -#: front/src/components/radios/Card.vue:22 src/views/playlists/Detail.vue:30 -msgid "Edit…" -msgstr "Edit…" +#: front/src/components/manage/moderation/InstancePolicyForm.vue:3 +msgctxt "Content/Moderation/Card.Title/Verb" +msgid "Edit moderation rule" +msgstr "Edit moderation rule" + +#: front/src/components/library/AlbumEdit.vue:4 +msgctxt "Content/*/Title" +msgid "Edit this album" +msgstr "Edit this album" + +#: front/src/components/library/ArtistEdit.vue:4 +msgctxt "Content/*/Title" +msgid "Edit this artist" +msgstr "Edit this artist" + +#: front/src/components/library/TrackEdit.vue:4 +msgctxt "Content/*/Title" +msgid "Edit this track" +msgstr "Edit this track" + +#: front/src/views/admin/library/AlbumDetail.vue:182 +#: front/src/views/admin/library/ArtistDetail.vue:171 +#: front/src/views/admin/library/Base.vue:5 +#: src/views/admin/library/EditsList.vue:24 +#: front/src/views/admin/library/TrackDetail.vue:234 +msgctxt "*/Admin/*/Noun" +msgid "Edits" +msgstr "Edits" + +#: front/src/components/mixins/Translations.vue:104 +#: front/src/components/mixins/Translations.vue:105 +msgctxt "Content/OAuth Scopes/Label" +msgid "Edits" +msgstr "Edits" #: front/src/components/auth/Signup.vue:30 #: front/src/components/manage/users/UsersTable.vue:38 +msgctxt "Content/*/*/Noun" msgid "Email" msgstr "Email" -#: front/src/views/admin/moderation/AccountsDetail.vue:111 +#: front/src/views/admin/moderation/AccountsDetail.vue:140 +msgctxt "Content/*/*" msgid "Email address" msgstr "Email address" -#: front/src/components/library/Album.vue:38 src/components/library/Track.vue:62 +#: front/src/components/library/AlbumBase.vue:53 +#: front/src/components/library/ArtistBase.vue:64 +#: front/src/components/library/TrackBase.vue:72 +msgctxt "Content/*/Button.Label/Verb" msgid "Embed" msgstr "Embed" #: front/src/components/audio/EmbedWizard.vue:20 +msgctxt "Popup/Embed/Input.Label/Noun" msgid "Embed code" msgstr "Embed code" -#: front/src/components/library/Album.vue:42 +#: front/src/components/library/AlbumBase.vue:26 +msgctxt "Popup/Album/Title/Verb" msgid "Embed this album on your website" msgstr "Embed this album on your website" -#: front/src/components/library/Track.vue:66 +#: front/src/components/library/ArtistBase.vue:37 +msgctxt "Popup/Artist/Title/Verb" +msgid "Embed this artist work on your website" +msgstr "Embed this artist work on your website" + +#: front/src/components/library/TrackBase.vue:45 +msgctxt "Popup/Track/Title" msgid "Embed this track on your website" msgstr "Embed this track on your website" -#: front/src/views/admin/moderation/AccountsDetail.vue:230 +#: front/src/views/admin/moderation/AccountsDetail.vue:259 #: front/src/views/admin/moderation/DomainsDetail.vue:187 +msgctxt "Content/Moderation/Table.Label/Noun" msgid "Emitted library follows" msgstr "Emitted library follows" -#: front/src/views/admin/moderation/AccountsDetail.vue:214 +#: front/src/views/admin/moderation/AccountsDetail.vue:243 #: front/src/views/admin/moderation/DomainsDetail.vue:171 +msgctxt "Content/Moderation/Table.Label/Noun" msgid "Emitted messages" msgstr "Emitted messages" #: front/src/components/manage/moderation/InstancePolicyCard.vue:8 #: front/src/components/manage/moderation/InstancePolicyForm.vue:17 -#: front/src/views/admin/moderation/AccountsDetail.vue:127 -#: front/src/views/admin/moderation/AccountsDetail.vue:131 +#: front/src/views/admin/moderation/AccountsDetail.vue:156 +#: front/src/views/admin/moderation/AccountsDetail.vue:160 +msgctxt "*/*/*" msgid "Enabled" msgstr "Enabled" -#: front/src/views/playlists/Detail.vue:29 +#: front/src/views/playlists/Detail.vue:30 +msgctxt "Content/Playlist/Button.Label/Verb" msgid "End edition" msgstr "End edition" #: front/src/views/content/remote/ScanForm.vue:50 +msgctxt "Content/Library/Input.Placeholder" msgid "Enter a library URL" msgstr "Enter a library URL" -#: front/src/components/library/Radios.vue:140 +#: front/src/components/library/Radios.vue:141 +msgctxt "Content/Search/Input.Placeholder" msgid "Enter a radio name…" msgstr "Enter a radio name…" -#: front/src/components/library/Artists.vue:118 +#: front/src/components/library/Albums.vue:119 +msgctxt "Content/Search/Input.Placeholder" +msgid "Enter album title..." +msgstr "Enter album title..." + +#: front/src/components/library/Artists.vue:116 +msgctxt "Content/Search/Input.Placeholder" msgid "Enter artist name…" msgstr "Enter artist name…" #: front/src/views/playlists/List.vue:107 +msgctxt "Content/Playlist/Placeholder/Call to action" msgid "Enter playlist name…" msgstr "Enter playlist name…" -#: front/src/components/auth/Signup.vue:102 +#: front/src/views/auth/PasswordReset.vue:54 +msgctxt "Content/Signup/Input.Placeholder" +msgid "Enter the email address binded to your account" +msgstr "Enter the email address binded to your account" + +#: front/src/components/auth/Signup.vue:103 +msgctxt "Content/Signup/Form/Placeholder" msgid "Enter your email" msgstr "Enter your email" -#: front/src/components/auth/Signup.vue:98 src/components/auth/Signup.vue:99 +#: front/src/components/auth/Signup.vue:98 src/components/auth/Signup.vue:100 +msgctxt "Content/Signup/Form/Placeholder" msgid "Enter your invitation code (case insensitive)" msgstr "Enter your invitation code (case insensitive)" #: front/src/components/metadata/Search.vue:114 +msgctxt "Content/Library/Input.Placeholder/Verb" msgid "Enter your search query…" msgstr "Enter your search query…" -#: front/src/components/auth/Signup.vue:101 +#: front/src/components/auth/Signup.vue:102 +msgctxt "Content/Signup/Form/Placeholder" msgid "Enter your username" msgstr "Enter your username" #: front/src/components/auth/Login.vue:83 +msgctxt "Content/Login/Input.Placeholder" msgid "Enter your username or email" msgstr "Enter your username or email" #: front/src/components/auth/SubsonicTokenForm.vue:19 #: front/src/views/content/libraries/Form.vue:4 +msgctxt "Content/*/Error message.Title" msgid "Error" msgstr "Error" +#: front/src/components/federation/FetchButton.vue:34 +#: front/src/components/library/ImportStatusModal.vue:32 +msgctxt "Popup/Import/Table.Label/Noun" +msgid "Error detail" +msgstr "Error detail" + #: front/src/views/admin/Settings.vue:87 +msgctxt "Content/Admin/Menu" msgid "Error reporting" msgstr "Error reporting" -#: front/src/components/common/ActionTable.vue:92 +#: front/src/components/federation/FetchButton.vue:26 +#: front/src/components/library/ImportStatusModal.vue:24 +msgctxt "Popup/Import/Table.Label/Noun" +msgid "Error type" +msgstr "Error type" + +#: front/src/components/common/ActionTable.vue:94 +msgctxt "Content/*/Error message/Header" msgid "Error while applying action" msgstr "Error while applying action" #: front/src/views/auth/PasswordReset.vue:7 +msgctxt "Content/Signup/Card.Title" msgid "Error while asking for a password reset" msgstr "Error while asking for a password reset" +#: front/src/components/auth/Authorize.vue:6 +msgctxt "Popup/Moderation/Error message" +msgid "Error while authorizing application" +msgstr "Error while authorizing application" + #: front/src/views/auth/PasswordResetConfirm.vue:7 +msgctxt "Content/Signup/Card.Title" msgid "Error while changing your password" msgstr "Error while changing your password" #: front/src/views/admin/moderation/DomainsList.vue:6 +msgctxt "Content/Moderation/Message.Title" msgid "Error while creating domain" msgstr "Error while creating domain" +#: front/src/components/moderation/FilterModal.vue:13 +msgctxt "Popup/Moderation/Error message" +msgid "Error while creating filter" +msgstr "Error while creating filter" + #: front/src/components/manage/users/InvitationForm.vue:4 +msgctxt "Content/Admin/Error message.Title" msgid "Error while creating invitation" msgstr "Error while creating invitation" #: front/src/components/manage/moderation/InstancePolicyForm.vue:7 +msgctxt "Content/Moderation/Error message.Title" msgid "Error while creating rule" msgstr "Error while creating rule" -#: front/src/views/admin/moderation/DomainsDetail.vue:126 +#: front/src/components/auth/Authorize.vue:7 +msgctxt "Popup/Moderation/Error message" +msgid "Error while fetching application data" +msgstr "Error while fetching application data" + +#: front/src/views/admin/moderation/DomainsDetail.vue:118 +msgctxt "Content/Moderation/Table" msgid "Error while fetching node info" msgstr "Error while fetching node info" #: front/src/components/admin/SettingsGroup.vue:5 +msgctxt "Content/Settings/Error message.Title" msgid "Error while saving settings" msgstr "Error while saving settings" -#: front/src/views/content/libraries/FilesTable.vue:212 +#: front/src/components/federation/FetchButton.vue:73 +msgctxt "Content/*/Error message.Title" +msgid "Error while saving settings" +msgstr "Error while saving settings" + +#: front/src/components/library/EditForm.vue:46 +msgctxt "Content/Library/Error message.Title" +msgid "Error while submitting edit" +msgstr "Error while submitting edit" + +#: front/src/components/mixins/Translations.vue:32 +#: front/src/components/mixins/Translations.vue:33 +msgctxt "Content/Library/Table/Short" msgid "Errored" msgstr "Errored" #: front/src/views/content/libraries/Quota.vue:75 +msgctxt "Content/Library/Label" msgid "Errored files" msgstr "Errored files" -#: front/src/components/playlists/Form.vue:89 +#: front/src/components/mixins/Translations.vue:17 +#: front/src/components/mixins/Translations.vue:18 +msgctxt "Content/Settings/Dropdown/Short" msgid "Everyone" msgstr "Everyone" #: front/src/components/mixins/Translations.vue:11 -#: front/src/components/playlists/Form.vue:85 src/views/content/libraries/Form.vue:73 #: front/src/components/mixins/Translations.vue:12 +msgctxt "Content/Settings/Dropdown" msgid "Everyone on this instance" msgstr "Everyone on this instance" -#: front/src/views/content/libraries/Form.vue:74 +#: front/src/components/mixins/Translations.vue:12 +#: front/src/components/mixins/Translations.vue:13 +msgctxt "Content/Settings/Dropdown" msgid "Everyone, across all instances" msgstr "Everyone, across all instances" -#: front/src/components/library/radios/Builder.vue:61 +#: front/src/components/library/radios/Builder.vue:62 +msgctxt "Content/Radio/Table.Label/Verb" msgid "Exclude" msgstr "Exclude" #: front/src/components/manage/users/InvitationsTable.vue:41 -#: front/src/components/mixins/Translations.vue:22 -#: front/src/components/mixins/Translations.vue:23 +#: front/src/components/mixins/Translations.vue:49 +#: front/src/components/mixins/Translations.vue:50 +msgctxt "Content/Admin/Table.Label/Noun" msgid "Expiration date" -msgstr "Expiry date" +msgstr "Expiration date" #: front/src/components/manage/users/InvitationsTable.vue:50 +msgctxt "Content/Admin/Table" msgid "Expired" msgstr "Expired" #: front/src/components/manage/users/InvitationsTable.vue:21 +msgctxt "Content/Admin/Dropdown/Adjective" msgid "Expired/used" msgstr "Expired/used" #: front/src/components/manage/moderation/InstancePolicyForm.vue:110 +msgctxt "Content/Moderation/Help text" msgid "Explain why you're applying this policy. Depending on your instance configuration, this will help you remember why you acted on this account or domain, and may be displayed publicly to help users understand what moderation rules are in place." -msgstr "" -"Explain why you're applying this policy. Depending on your instance " -"configuration, this will help you remember why you acted on this account or " -"domain, and may be displayed publicly to help users understand what " -"moderation rules are in place." +msgstr "Explain why you're applying this policy. Depending on your instance configuration, this will help you remember why you acted on this account or domain, and may be displayed publicly to help users understand what moderation rules are in place." +#: front/src/components/manage/library/UploadsTable.vue:25 #: front/src/views/content/libraries/FilesTable.vue:16 +msgctxt "Content/Library/Dropdown" msgid "Failed" msgstr "Failed" -#: front/src/views/content/remote/Card.vue:58 +#: front/src/views/content/remote/Card.vue:62 +msgctxt "Content/Library/Card.List item/Noun" msgid "Failed tracks:" msgstr "Failed tracks:" +#: front/src/views/admin/library/AlbumDetail.vue:165 +#: front/src/views/admin/library/ArtistDetail.vue:154 +#: front/src/views/admin/library/TrackDetail.vue:217 +msgctxt "*/*/*" +msgid "Favorited tracks" +msgstr "Favorited tracks" + #: front/src/components/Sidebar.vue:66 +msgctxt "Sidebar/Favorites/List item.Link/Noun" msgid "Favorites" -msgstr "Favourites" +msgstr "Favorites" + +#: front/src/components/mixins/Translations.vue:76 +#: front/src/components/mixins/Translations.vue:77 +msgctxt "Content/OAuth Scopes/Label" +msgid "Favorites" +msgstr "Favorites" #: front/src/views/admin/Settings.vue:84 +msgctxt "Content/Admin/Menu" msgid "Federation" msgstr "Federation" -#: front/src/components/library/FileUpload.vue:84 +#: front/src/components/library/TrackDetail.vue:66 +msgctxt "Content/*/*/Noun" +msgid "Federation ID" +msgstr "Federation ID" + +#: front/src/components/library/EditCard.vue:45 +msgctxt "Content/Library/Card.Table.Header/Short" +msgid "Field" +msgstr "Field" + +#: front/src/components/library/FileUpload.vue:93 +msgctxt "Content/Library/Table.Label" msgid "Filename" msgstr "Filename" -#: front/src/views/admin/library/Base.vue:5 src/views/admin/library/FilesList.vue:21 -msgid "Files" -msgstr "Files" - -#: front/src/components/library/radios/Builder.vue:60 +#: front/src/components/library/radios/Builder.vue:61 +msgctxt "Content/Radio/Table.Label/Noun" msgid "Filter name" msgstr "Filter name" +#: front/src/components/manage/library/UploadsTable.vue:26 +#: front/src/components/mixins/Translations.vue:36 #: front/src/views/content/libraries/FilesTable.vue:17 -#: front/src/views/content/libraries/FilesTable.vue:216 +#: front/src/components/mixins/Translations.vue:37 +msgctxt "Content/Library/*" msgid "Finished" msgstr "Finished" #: front/src/components/manage/moderation/AccountsTable.vue:42 #: front/src/components/manage/moderation/DomainsTable.vue:41 -#: front/src/views/admin/moderation/AccountsDetail.vue:159 -#: front/src/views/admin/moderation/DomainsDetail.vue:78 +#: front/src/views/admin/library/AlbumDetail.vue:149 +#: front/src/views/admin/library/ArtistDetail.vue:138 +#: front/src/views/admin/library/LibraryDetail.vue:153 +#: front/src/views/admin/library/TrackDetail.vue:201 +#: front/src/views/admin/library/UploadDetail.vue:167 +#: front/src/views/admin/moderation/AccountsDetail.vue:235 +#: front/src/views/admin/moderation/DomainsDetail.vue:151 +msgctxt "Content/Moderation/Table.Label/Short (Value is a date)" msgid "First seen" msgstr "First seen" -#: front/src/components/mixins/Translations.vue:17 -#: front/src/components/mixins/Translations.vue:18 +#: front/src/components/mixins/Translations.vue:46 +#: front/src/components/mixins/Translations.vue:47 +msgctxt "Content/Moderation/Dropdown/Noun" msgid "First seen date" msgstr "First seen date" -#: front/src/views/content/remote/Card.vue:83 +#: front/src/views/content/remote/Card.vue:87 +msgctxt "Content/Library/Card.Button.Label/Verb" msgid "Follow" msgstr "Follow" #: front/src/views/content/Home.vue:16 +msgctxt "Content/Library/Title/Verb" msgid "Follow remote libraries" msgstr "Follow remote libraries" -#: front/src/views/content/remote/Card.vue:88 +#: front/src/views/content/remote/Card.vue:92 +msgctxt "Content/Library/Card.Paragraph" msgid "Follow request pending approval" msgstr "Follow request pending approval" -#: front/src/components/mixins/Translations.vue:38 +#: front/src/components/mixins/Translations.vue:64 +#: front/src/views/admin/library/LibraryDetail.vue:161 #: front/src/views/content/libraries/Detail.vue:7 -#: front/src/components/mixins/Translations.vue:39 +#: front/src/components/mixins/Translations.vue:65 +msgctxt "Content/Federation/*/Noun" msgid "Followers" msgstr "Followers" -#: front/src/views/content/remote/Card.vue:93 +#: front/src/components/manage/library/LibrariesTable.vue:53 +msgctxt "Content/*/*/Noun" +msgid "Followers" +msgstr "Followers" + +#: front/src/views/content/remote/Card.vue:103 +msgctxt "Content/Library/Card.Paragraph" msgid "Following" msgstr "Following" -#: front/src/components/library/Track.vue:17 -msgid "From album %{ album } by %{ artist }" -msgstr "From album %{ album } by %{ artist }" +#: front/src/components/mixins/Translations.vue:84 +#: front/src/components/mixins/Translations.vue:85 +msgctxt "Content/OAuth Scopes/Label" +msgid "Follows" +msgstr "Follows" + +#: front/src/components/library/TrackBase.vue:17 +msgctxt "Content/Track/Paragraph" +msgid "From album %{ album } by %{ artist }" +msgstr "From album %{ album } by %{ artist }" + +#: front/src/components/auth/Authorize.vue:28 +msgctxt "Content/Auth/Label/Noun" +msgid "Full access" +msgstr "Full access" #: front/src/components/auth/SubsonicTokenForm.vue:7 +msgctxt "Content/Settings/Paragraph'" msgid "Funkwhale is compatible with other music players that support the Subsonic API." -msgstr "" -"Funkwhale is compatible with other music players that support the Subsonic " -"API." +msgstr "Funkwhale is compatible with other music players that support the Subsonic API." -#: front/src/components/Home.vue:95 +#: front/src/components/Home.vue:90 +msgctxt "Content/Home/Paragraph" msgid "Funkwhale is dead simple to use." msgstr "Funkwhale is dead simple to use." #: front/src/components/Home.vue:39 +msgctxt "Content/Home/Paragraph" msgid "Funkwhale is designed to make it easy to listen to music you like, or to discover new artists." -msgstr "" -"Funkwhale is designed to make it easy to listen to music you like, or to " -"discover new artists." +msgstr "Funkwhale is designed to make it easy to listen to music you like, or to discover new artists." -#: front/src/components/Home.vue:116 +#: front/src/components/Home.vue:111 +msgctxt "Content/Home/Paragraph" msgid "Funkwhale is free and gives you control on your music." -msgstr "Funkwhale is free and gives you control of your music." +msgstr "Funkwhale is free and gives you control on your music." #: front/src/components/Home.vue:66 +msgctxt "Content/Home/Paragraph" msgid "Funkwhale takes care of handling your music" msgstr "Funkwhale takes care of handling your music" #: front/src/components/ShortcutsModal.vue:38 +msgctxt "Popup/Keyboard shortcuts/Title" msgid "General shortcuts" msgstr "General shortcuts" #: front/src/components/manage/users/InvitationForm.vue:16 +msgctxt "Content/Admin/Button.Label/Verb" msgid "Get a new invitation" msgstr "Get a new invitation" #: front/src/components/Home.vue:13 +msgctxt "Content/Home/Button.Label/Verb" msgid "Get me to the library" msgstr "Get me to the library" -#: front/src/components/Home.vue:76 +#: front/src/components/Home.vue:70 +msgctxt "Content/Home/List item/Verb" msgid "Get quality metadata about your music thanks to MusicBrainz" -msgstr "" -"Get quality metadata about your music thanks to MusicBrainz" +msgstr "Get quality metadata about your music thanks to MusicBrainz" #: front/src/views/content/Home.vue:12 src/views/content/Home.vue:19 +msgctxt "Content/Library/Button.Label/Verb" msgid "Get started" msgstr "Get started" #: front/src/components/Footer.vue:37 +msgctxt "Footer/*/Link" msgid "Getting help" msgstr "Getting help" -#: front/src/components/common/ActionTable.vue:34 -#: front/src/components/common/ActionTable.vue:54 +#: front/src/components/library/ImportStatusModal.vue:45 +msgctxt "Popup/Import/Table.Label/Noun" +msgid "Getting help" +msgstr "Getting help" + +#: front/src/components/common/ActionTable.vue:35 +#: front/src/components/common/ActionTable.vue:56 +msgctxt "Content/*/Button.Label/Short, Verb" msgid "Go" msgstr "Go" #: front/src/components/PageNotFound.vue:14 +msgctxt "Content/*/Button.Label/Verb" msgid "Go to home page" msgstr "Go to home page" +#: front/src/components/auth/Settings.vue:128 +msgctxt "Content/Settings/Title" +msgid "Hidden artists" +msgstr "Hidden artists" + #: front/src/components/manage/moderation/InstancePolicyForm.vue:114 +msgctxt "Content/Moderation/Help text" msgid "Hide account or domain content, except from followers." msgstr "Hide account or domain content, except from followers." +#: front/src/components/moderation/FilterModal.vue:40 +msgctxt "Popup/*/Button.Label" +msgid "Hide content" +msgstr "Hide content" + +#: front/src/components/audio/PlayButton.vue:26 +msgctxt "*/Queue/Dropdown/Button/Label/Short" +msgid "Hide content from this artist" +msgstr "Hide content from this artist" + +#: front/src/components/audio/Player.vue:643 +msgctxt "Sidebar/Player/Icon.Tooltip/Verb" +msgid "Hide content from this artist…" +msgstr "Hide content from this artist…" + #: front/src/components/library/Home.vue:65 +msgctxt "Head/Home/Title" msgid "Home" msgstr "Home" #: front/src/components/instance/Stats.vue:36 +msgctxt "Content/About/Paragraph/Unit" msgid "Hours of music" msgstr "Hours of music" #: front/src/components/auth/SubsonicTokenForm.vue:10 +msgctxt "Content/Settings/Paragraph" msgid "However, accessing Funkwhale from those clients require a separate password you can set below." -msgstr "" -"However, accessing Funkwhale from those clients requires a separate password " -"you can set below." +msgstr "However, accessing Funkwhale from those clients require a separate password you can set below." #: front/src/views/auth/PasswordResetConfirm.vue:24 +msgctxt "Content/Signup/Paragraph" msgid "If the email address provided in the previous step is valid and binded to a user account, you should receive an email with reset instructions in the next couple of minutes." -msgstr "" -"If the email address provided in the previous step is valid and binded to a " -"user account, you should receive an email with reset instructions in the " -"next couple of minutes." +msgstr "If the email address provided in the previous step is valid and binded to a user account, you should receive an email with reset instructions in the next couple of minutes." -#: front/src/components/manage/library/FilesTable.vue:40 -msgid "Import date" -msgstr "Import date" +#: front/src/components/auth/Settings.vue:205 +msgctxt "Content/Applications/Paragraph" +msgid "If you authorize third-party applications to access your data, those applications will be listed here." +msgstr "If you authorise third-party applications to access your data, those applications will be listed here." -#: front/src/components/Home.vue:71 -msgid "Import music from various platforms, such as YouTube or SoundCloud" -msgstr "Import music from various platforms, such as YouTube or SoundCloud" +#: front/src/components/library/ImportStatusModal.vue:3 +msgctxt "Popup/Import/Title" +msgid "Import detail" +msgstr "Import detail" -#: front/src/components/library/FileUpload.vue:51 +#: front/src/components/library/FileUpload.vue:50 +msgctxt "Content/Library/Input.Label/Noun" msgid "Import reference" msgstr "Import reference" +#: front/src/components/manage/library/UploadsTable.vue:20 #: front/src/views/content/libraries/FilesTable.vue:11 -#: front/src/views/content/libraries/FilesTable.vue:58 +#: front/src/views/content/libraries/FilesTable.vue:59 +msgctxt "Content/Library/*/Noun" msgid "Import status" msgstr "Import status" -#: front/src/views/content/libraries/FilesTable.vue:217 +#: front/src/components/manage/library/UploadsTable.vue:64 +#: front/src/views/admin/library/UploadDetail.vue:131 +msgctxt "Content/*/*/Noun" +msgid "Import status" +msgstr "Import status" + +#: front/src/components/mixins/Translations.vue:37 +#: front/src/components/mixins/Translations.vue:38 +msgctxt "Content/Library/Help text" msgid "Imported" msgstr "Imported" -#: front/src/components/mixins/Translations.vue:21 -#: front/src/components/mixins/Translations.vue:22 -msgid "Imported date" -msgstr "Imported date" +#: front/src/components/federation/FetchButton.vue:47 +msgctxt "*/*/Error" +msgid "Impossible to connect to the remote server" +msgstr "Impossible to connect to the remote server" + +#: front/src/components/moderation/FilterModal.vue:26 +msgctxt "Popup/Moderation/List item" +msgid "In \"Recently added\" widget" +msgstr "In \"Recently added\" widget" + +#: front/src/components/moderation/FilterModal.vue:27 +msgctxt "Popup/Moderation/List item" +msgid "In artists and album listings" +msgstr "In artists and album listings" #: front/src/components/favorites/TrackFavoriteIcon.vue:3 +msgctxt "Content/Track/Button.Message" msgid "In favorites" msgstr "In favourites" +#: front/src/components/moderation/FilterModal.vue:25 +msgctxt "Popup/Moderation/List item" +msgid "In other users favorites and listening history" +msgstr "In other users favourites and listening history" + +#: front/src/components/moderation/FilterModal.vue:28 +msgctxt "Popup/Moderation/List item" +msgid "In radio suggestions" +msgstr "In radio suggestions" + #: front/src/components/manage/users/UsersTable.vue:54 +msgctxt "Content/Admin/Table" msgid "Inactive" msgstr "Inactive" #: front/src/components/ShortcutsModal.vue:71 +msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb" msgid "Increase volume" msgstr "Increase volume" -#: front/src/views/auth/PasswordReset.vue:54 -msgid "Input the email address binded to your account" -msgstr "Input the email address bound to your account" - -#: front/src/components/playlists/Editor.vue:31 +#: front/src/components/playlists/Editor.vue:41 +msgctxt "Content/Playlist/Button.Label/Verb" msgid "Insert from queue (%{ count } track)" msgid_plural "Insert from queue (%{ count } tracks)" msgstr[0] "Insert from queue (%{ count } track)" msgstr[1] "Insert from queue (%{ count } tracks)" +#: front/src/components/mixins/Translations.vue:16 +#: front/src/components/mixins/Translations.vue:17 +msgctxt "Content/Settings/Dropdown/Short" +msgid "Instance" +msgstr "Instance" + #: front/src/views/admin/moderation/DomainsDetail.vue:71 +msgctxt "Content/Moderation/Title" msgid "Instance data" msgstr "Instance data" #: front/src/views/admin/Settings.vue:80 +msgctxt "Content/Admin/Menu" msgid "Instance information" msgstr "Instance information" #: front/src/components/library/Radios.vue:9 +msgctxt "Content/Radio/Title" msgid "Instance radios" msgstr "Instance radios" #: front/src/views/admin/Settings.vue:75 +msgctxt "Head/Admin/Title" msgid "Instance settings" msgstr "Instance settings" -#: front/src/components/library/FileUpload.vue:230 -#: front/src/components/library/FileUpload.vue:231 +#: front/src/components/SetInstanceModal.vue:19 +msgctxt "Popup/Instance/Input.Label/Noun" +msgid "Instance URL" +msgstr "Instance URL" + +#: front/src/components/library/FileUpload.vue:268 +msgctxt "Content/Library/Help text" msgid "Invalid file type, ensure you are uploading an audio file. Supported file extensions are %{ extensions }" -msgstr "" -"Invalid file type, ensure you are uploading an audio file. Supported file " -"extensions are %{ extensions }" +msgstr "Invalid file type, ensure you are uploading an audio file. Supported file extensions are %{ extensions }" + +#: front/src/components/library/ImportStatusModal.vue:139 +msgctxt "Popup/Import/Error.Label" +msgid "Invalid metadata" +msgstr "Invalid metadata" #: front/src/components/auth/Signup.vue:44 #: front/src/components/manage/users/InvitationForm.vue:11 +msgctxt "Content/*/Input.Label" msgid "Invitation code" msgstr "Invitation code" -#: front/src/views/admin/users/Base.vue:8 src/views/admin/users/InvitationsList.vue:3 +#: front/src/views/admin/users/Base.vue:8 #: front/src/views/admin/users/InvitationsList.vue:24 +msgctxt "*/Admin/*/Noun" msgid "Invitations" msgstr "Invitations" #: front/src/components/Footer.vue:41 +msgctxt "Footer/*/List item.Link" msgid "Issue tracker" msgstr "Issue tracker" +#: front/src/components/SetInstanceModal.vue:5 +msgctxt "Popup/Instance/Error message.Title" +msgid "It is not possible to connect to the given URL" +msgstr "It is not possible to connect to the given URL" + #: front/src/components/Home.vue:50 +msgctxt "Content/Home/List item/Verb" msgid "Keep a track of your favorite songs" -msgstr "Keep track of your favourite songs" +msgstr "Keep a track of your favourite songs" #: front/src/components/Footer.vue:33 src/components/ShortcutsModal.vue:3 +msgctxt "*/*/*/Noun" msgid "Keyboard shortcuts" msgstr "Keyboard shortcuts" #: front/src/views/admin/moderation/DomainsDetail.vue:161 +msgctxt "Content/Moderation/Table.Label.Link" msgid "Known accounts" msgstr "Known accounts" #: front/src/views/content/remote/Home.vue:14 +msgctxt "Content/Library/Title" msgid "Known libraries" msgstr "Known libraries" #: front/src/components/manage/users/UsersTable.vue:41 -#: front/src/components/mixins/Translations.vue:32 -#: front/src/views/admin/moderation/AccountsDetail.vue:184 -#: front/src/components/mixins/Translations.vue:33 +#: front/src/components/mixins/Translations.vue:58 +#: front/src/views/admin/moderation/AccountsDetail.vue:205 +#: front/src/components/mixins/Translations.vue:59 +msgctxt "Content/Profile/Table.Label/Short, Noun (Value is a date)" msgid "Last activity" msgstr "Last activity" -#: front/src/views/admin/moderation/AccountsDetail.vue:167 -#: front/src/views/admin/moderation/DomainsDetail.vue:86 +#: front/src/views/admin/moderation/AccountsDetail.vue:188 +#: front/src/views/admin/moderation/DomainsDetail.vue:78 +msgctxt "Content/*/Table.Label" msgid "Last checked" msgstr "Last checked" -#: front/src/components/playlists/PlaylistModal.vue:32 +#: front/src/components/playlists/PlaylistModal.vue:46 +msgctxt "Popup/Playlist/Table.Label/Short" msgid "Last modification" msgstr "Last modification" #: front/src/components/manage/moderation/AccountsTable.vue:43 +msgctxt "Content/Moderation/Table.Label/Noun" msgid "Last seen" msgstr "Last seen" -#: front/src/components/mixins/Translations.vue:18 -#: front/src/components/mixins/Translations.vue:19 +#: front/src/components/mixins/Translations.vue:47 +#: front/src/components/mixins/Translations.vue:48 +msgctxt "Content/Moderation/Dropdown/Noun" msgid "Last seen date" msgstr "Last seen date" -#: front/src/views/content/remote/Card.vue:56 +#: front/src/views/content/remote/Card.vue:60 +msgctxt "Content/Library/Card.List item/Noun" msgid "Last update:" msgstr "Last update:" -#: front/src/components/common/ActionTable.vue:47 +#: front/src/components/common/ActionTable.vue:49 +msgctxt "Modal/*/Button.Label/Short, Verb" msgid "Launch" msgstr "Launch" #: front/src/components/Home.vue:10 +msgctxt "Content/Home/Button.Label/Verb" msgid "Learn more about this instance" msgstr "Learn more about this instance" #: front/src/components/manage/users/InvitationForm.vue:58 +msgctxt "Content/Admin/Input.Placeholder" msgid "Leave empty for a random code" msgstr "Leave empty for a random code" #: front/src/components/audio/EmbedWizard.vue:7 +msgctxt "Popup/Embed/Paragraph" msgid "Leave empty for a responsive widget" msgstr "Leave empty for a responsive widget" -#: front/src/views/admin/moderation/AccountsDetail.vue:297 -#: front/src/views/admin/moderation/DomainsDetail.vue:233 +#: front/src/views/admin/library/AlbumDetail.vue:232 +#: front/src/views/admin/library/ArtistDetail.vue:221 +#: front/src/views/admin/library/TrackDetail.vue:284 +#: front/src/views/admin/moderation/AccountsDetail.vue:327 +#: front/src/views/admin/moderation/DomainsDetail.vue:234 #: front/src/views/content/Base.vue:5 +msgctxt "*/*/*/Noun" msgid "Libraries" msgstr "Libraries" -#: front/src/views/content/libraries/Form.vue:2 -msgid "Libraries help you organize and share your music collections. You can upload your own music collection to Funkwhale and share it with your friends and family." -msgstr "" -"Libraries help you organise and share your music collections. You can upload " -"your own music collection to Funkwhale and share it with your friends and " -"family." +#: front/src/views/admin/library/Base.vue:17 +#: front/src/views/admin/library/LibrariesList.vue:24 +msgctxt "*/*/*" +msgid "Libraries" +msgstr "Libraries" -#: front/src/components/instance/Stats.vue:30 +#: front/src/components/mixins/Translations.vue:72 +#: front/src/components/mixins/Translations.vue:73 +msgctxt "Content/OAuth Scopes/Label" +msgid "Libraries and uploads" +msgstr "Libraries and uploads" + +#: front/src/views/content/libraries/Form.vue:2 +msgctxt "Content/Library/Paragraph" +msgid "Libraries help you organize and share your music collections. You can upload your own music collection to Funkwhale and share it with your friends and family." +msgstr "Libraries help you organise and share your music collections. You can upload your own music collection to Funkwhale and share it with your friends and family." + +#: front/src/components/Sidebar.vue:85 src/components/instance/Stats.vue:30 +#: front/src/components/manage/library/UploadsTable.vue:60 #: front/src/components/manage/users/UsersTable.vue:173 -#: front/src/views/admin/moderation/AccountsDetail.vue:464 +#: front/src/views/admin/library/UploadDetail.vue:144 +#: front/src/views/admin/moderation/AccountsDetail.vue:498 +msgctxt "*/*/*" msgid "Library" msgstr "Library" -#: front/src/views/content/libraries/Form.vue:109 +#: front/src/views/content/libraries/Form.vue:103 +msgctxt "Content/Library/Message" msgid "Library created" msgstr "Library created" -#: front/src/views/content/libraries/Form.vue:129 +#: front/src/views/admin/library/LibraryDetail.vue:78 +msgctxt "Content/Moderation/Title" +msgid "Library data" +msgstr "Library data" + +#: front/src/views/content/libraries/Form.vue:123 +msgctxt "Content/Library/Message" msgid "Library deleted" msgstr "Library deleted" -#: front/src/views/admin/library/FilesList.vue:3 -msgid "Library files" -msgstr "Library files" +#: front/src/views/admin/library/EditsList.vue:4 +msgctxt "Content/Admin/Title/Noun" +msgid "Library edits" +msgstr "Library edits" -#: front/src/views/content/libraries/Form.vue:106 +#: front/src/views/content/libraries/Form.vue:100 +msgctxt "Content/Library/Message" msgid "Library updated" msgstr "Library updated" -#: front/src/components/library/Track.vue:100 +#: front/src/components/library/TrackDetail.vue:19 +#: front/src/components/manage/library/TracksTable.vue:43 +#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:61 +msgctxt "Content/*/*/Noun" msgid "License" msgstr "License" +#: front/src/views/admin/library/AlbumDetail.vue:157 +#: front/src/views/admin/library/ArtistDetail.vue:146 +#: front/src/views/admin/library/TrackDetail.vue:209 +msgctxt "*/*/*/Noun" +msgid "Listenings" +msgstr "Listenings" + +#: front/src/components/mixins/Translations.vue:80 +#: front/src/components/mixins/Translations.vue:81 +msgctxt "Content/OAuth Scopes/Label" +msgid "Listenings" +msgstr "Listenings" + +#: front/src/components/audio/track/Table.vue:25 +#: front/src/components/library/ArtistDetail.vue:28 +msgctxt "Content/*/Button.Label" +msgid "Load more…" +msgstr "Load more…" + #: front/src/views/content/libraries/Detail.vue:21 +msgctxt "Content/Library/Paragraph" msgid "Loading followers…" msgstr "Loading followers…" #: front/src/views/content/libraries/Home.vue:3 +msgctxt "Content/Library/Paragraph" msgid "Loading Libraries…" msgstr "Loading Libraries…" #: front/src/views/content/libraries/Detail.vue:3 #: front/src/views/content/libraries/Upload.vue:3 +msgctxt "Content/Library/Paragraph" msgid "Loading library data…" msgstr "Loading library data…" -#: front/src/views/Notifications.vue:4 +#: front/src/views/Notifications.vue:19 +msgctxt "Content/Notifications/Paragraph" msgid "Loading notifications…" msgstr "Loading notifications…" #: front/src/views/content/remote/Home.vue:3 +msgctxt "Content/Library/Paragraph" msgid "Loading remote libraries…" msgstr "Loading remote libraries…" #: front/src/views/content/libraries/Quota.vue:4 +msgctxt "Content/Library/Paragraph" msgid "Loading usage data…" msgstr "Loading usage data…" #: front/src/components/favorites/List.vue:5 +msgctxt "Content/Favorites/Message" msgid "Loading your favorites…" msgstr "Loading your favourites…" +#: front/src/components/manage/library/AlbumsTable.vue:65 +#: front/src/components/manage/library/ArtistsTable.vue:58 +#: front/src/components/manage/library/LibrariesTable.vue:75 +#: front/src/components/manage/library/TracksTable.vue:71 +#: front/src/components/manage/library/UploadsTable.vue:99 +#: front/src/views/admin/library/AlbumDetail.vue:19 +#: front/src/views/admin/library/ArtistDetail.vue:18 +#: front/src/views/admin/library/LibraryDetail.vue:18 +#: front/src/views/admin/library/TrackDetail.vue:18 +#: front/src/views/admin/library/UploadDetail.vue:19 +msgctxt "Content/Moderation/*/Short, Noun" +msgid "Local" +msgstr "Local" + #: front/src/components/manage/moderation/AccountsTable.vue:59 #: front/src/views/admin/moderation/AccountsDetail.vue:18 +msgctxt "Content/Moderation/*/Short, Noun" msgid "Local account" msgstr "Local account" #: front/src/components/auth/Login.vue:84 +msgctxt "Head/Login/Title" msgid "Log In" msgstr "Log In" #: front/src/components/auth/Login.vue:4 +msgctxt "Content/Login/Title/Verb" msgid "Log in to your Funkwhale account" msgstr "Log in to your Funkwhale account" #: front/src/components/auth/Logout.vue:20 +msgctxt "Head/Login/Title" msgid "Log Out" msgstr "Log Out" #: front/src/components/Sidebar.vue:38 +msgctxt "Sidebar/Profile/List item.Link" msgid "Logged in as %{ username }" msgstr "Logged in as %{ username }" #: front/src/components/Sidebar.vue:54 src/components/auth/Login.vue:42 +msgctxt "*/Login/*/Verb" msgid "Login" msgstr "Login" -#: front/src/views/admin/moderation/AccountsDetail.vue:119 +#: front/src/views/admin/moderation/AccountsDetail.vue:148 +msgctxt "Content/*/*/Noun" msgid "Login status" msgstr "Login status" #: front/src/components/Sidebar.vue:52 +msgctxt "Sidebar/Login/List item.Link/Verb" msgid "Logout" msgstr "Logout" #: front/src/views/content/libraries/Home.vue:9 +msgctxt "Content/Library/Paragraph" msgid "Looks like you don't have a library, it's time to create one." msgstr "Looks like you don't have a library, it's time to create one." -#: front/src/components/audio/Player.vue:356 src/components/audio/Player.vue:357 +#: front/src/components/audio/Player.vue:632 +#: src/components/audio/Player.vue:633 +msgctxt "Sidebar/Player/Icon.Tooltip" msgid "Looping disabled. Click to switch to single-track looping." msgstr "Looping disabled. Click to switch to single-track looping." -#: front/src/components/audio/Player.vue:359 src/components/audio/Player.vue:360 +#: front/src/components/audio/Player.vue:635 +#: src/components/audio/Player.vue:636 +msgctxt "Sidebar/Player/Icon.Tooltip" msgid "Looping on a single track. Click to switch to whole queue looping." msgstr "Looping on a single track. Click to switch to whole queue looping." -#: front/src/components/audio/Player.vue:362 src/components/audio/Player.vue:363 +#: front/src/components/audio/Player.vue:638 +#: src/components/audio/Player.vue:639 +msgctxt "Sidebar/Player/Icon.Tooltip" msgid "Looping on whole queue. Click to disable looping." msgstr "Looping on whole queue. Click to disable looping." -#: front/src/components/library/Track.vue:150 -msgid "Lyrics" -msgstr "Lyrics" - -#: front/src/components/Sidebar.vue:210 +#: front/src/components/Sidebar.vue:223 +msgctxt "Sidebar/*/Hidden text" msgid "Main menu" msgstr "Main menu" -#: front/src/views/admin/library/Base.vue:16 +#: front/src/views/admin/library/Base.vue:31 +msgctxt "Head/Admin/Title" msgid "Manage library" msgstr "Manage library" #: front/src/components/playlists/PlaylistModal.vue:3 +msgctxt "Popup/Playlist/Title/Verb" msgid "Manage playlists" msgstr "Manage playlists" #: front/src/views/admin/users/Base.vue:20 +msgctxt "Head/Admin/Title" msgid "Manage users" msgstr "Manage users" #: front/src/views/playlists/List.vue:8 +msgctxt "Content/Playlist/Button.Label/Verb" msgid "Manage your playlists" msgstr "Manage your playlists" -#: front/src/views/Notifications.vue:17 +#: front/src/views/Notifications.vue:14 +msgctxt "Content/Notifications/Button.Label/Verb" msgid "Mark all as read" msgstr "Mark all as read" #: front/src/components/notifications/NotificationRow.vue:46 +msgctxt "Content/Notifications/Button.Tooltip/Verb" msgid "Mark as read" msgstr "Mark as read" #: front/src/components/notifications/NotificationRow.vue:47 +msgctxt "Content/Notifications/Button.Tooltip/Verb" msgid "Mark as unread" msgstr "Mark as unread" -#: front/src/views/admin/moderation/AccountsDetail.vue:281 +#: front/src/views/admin/moderation/AccountsDetail.vue:310 +msgctxt "Content/*/*/Unit" msgid "MB" msgstr "MB" -#: front/src/components/audio/Player.vue:349 +#: front/src/components/audio/Player.vue:625 +msgctxt "Sidebar/Player/Hidden text" msgid "Media player" msgstr "Media player" #: front/src/components/auth/Profile.vue:12 +msgctxt "Content/Profile/Paragraph" msgid "Member since %{ date }" msgstr "Member since %{ date }" #: front/src/components/Footer.vue:32 +msgctxt "Footer/*/List item.Link" msgid "Mobile and desktop apps" msgstr "Mobile and desktop apps" -#: front/src/components/Sidebar.vue:97 src/components/manage/users/UsersTable.vue:177 -#: front/src/views/admin/moderation/AccountsDetail.vue:468 +#: front/src/components/Sidebar.vue:96 +#: src/components/manage/users/UsersTable.vue:177 +#: front/src/views/admin/moderation/AccountsDetail.vue:502 #: front/src/views/admin/moderation/Base.vue:21 +msgctxt "*/Moderation/*" msgid "Moderation" msgstr "Moderation" -#: front/src/views/admin/moderation/AccountsDetail.vue:49 +#: front/src/views/admin/moderation/AccountsDetail.vue:78 #: front/src/views/admin/moderation/DomainsDetail.vue:42 +msgctxt "Content/Moderation/Card.Paragraph" msgid "Moderation policies help you control how your instance interact with a given domain or account." -msgstr "" -"Moderation policies help you control how your instance interact with a given " -"domain or account." +msgstr "Moderation policies help you control how your instance interact with a given domain or account." -#: front/src/components/mixins/Translations.vue:20 -#: front/src/components/mixins/Translations.vue:21 +#: front/src/components/library/EditCard.vue:5 +msgctxt "Content/Library/Card/Short" +msgid "Modification %{ id }" +msgstr "Modification %{ id }" + +#: front/src/components/mixins/Translations.vue:48 +#: front/src/components/mixins/Translations.vue:49 +msgctxt "Content/Playlist/Dropdown/Noun" msgid "Modification date" msgstr "Modification date" +#: front/src/components/library/AlbumBase.vue:42 +#: front/src/components/library/ArtistBase.vue:53 +#: front/src/components/library/TrackBase.vue:61 +msgctxt "*/*/Button.Label/Noun" +msgid "More…" +msgstr "More…" + #: front/src/components/Sidebar.vue:63 src/views/admin/Settings.vue:82 +msgctxt "*/*/*/Noun" msgid "Music" msgstr "Music" -#: front/src/components/audio/Player.vue:355 +#: front/src/components/audio/Player.vue:631 +msgctxt "Sidebar/Player/Icon.Tooltip/Verb" msgid "Mute" msgstr "Mute" #: front/src/components/manage/moderation/InstancePolicyCard.vue:24 #: front/src/components/manage/moderation/InstancePolicyForm.vue:115 +msgctxt "Content/Moderation/*/Verb" msgid "Mute activity" msgstr "Mute activity" #: front/src/components/manage/moderation/InstancePolicyCard.vue:28 +#: front/src/components/manage/moderation/InstancePolicyForm.vue:119 +msgctxt "Content/Moderation/*/Verb" msgid "Mute notifications" msgstr "Mute notifications" #: front/src/components/Sidebar.vue:34 +msgctxt "Sidebar/Profile/Title" msgid "My account" msgstr "My account" -#: front/src/components/library/radios/Builder.vue:236 +#: front/src/components/library/radios/Builder.vue:238 +msgctxt "Content/Radio/Input.Placeholder" msgid "My awesome description" msgstr "My awesome description" -#: front/src/views/content/libraries/Form.vue:70 +#: front/src/views/content/libraries/Form.vue:72 +msgctxt "Content/Library/Input.Placeholder" msgid "My awesome library" msgstr "My awesome library" -#: front/src/components/playlists/Form.vue:74 +#: front/src/components/playlists/Form.vue:76 +msgctxt "Content/Playlist/Input.Placeholder" msgid "My awesome playlist" msgstr "My awesome playlist" -#: front/src/components/library/radios/Builder.vue:235 +#: front/src/components/library/radios/Builder.vue:237 +msgctxt "Content/Radio/Input.Placeholder" msgid "My awesome radio" msgstr "My awesome radio" #: front/src/views/content/libraries/Home.vue:6 +msgctxt "Content/Library/Title" msgid "My libraries" msgstr "My libraries" -#: front/src/components/audio/track/Row.vue:40 src/components/library/Track.vue:115 -#: front/src/components/library/Track.vue:124 src/components/library/Track.vue:133 -#: front/src/components/library/Track.vue:142 -#: front/src/components/manage/library/FilesTable.vue:63 -#: front/src/components/manage/library/FilesTable.vue:69 -#: front/src/components/manage/library/FilesTable.vue:75 -#: front/src/components/manage/library/FilesTable.vue:81 +#: front/src/components/audio/track/Row.vue:40 +#: src/components/library/EditCard.vue:60 +#: front/src/components/library/EditForm.vue:70 +#: front/src/components/library/TrackDetail.vue:34 +#: front/src/components/library/TrackDetail.vue:43 +#: front/src/components/library/TrackDetail.vue:52 +#: front/src/components/library/TrackDetail.vue:61 +#: front/src/components/manage/library/AlbumsTable.vue:73 +#: front/src/components/manage/library/TracksTable.vue:76 +#: front/src/components/manage/library/UploadsTable.vue:121 +#: front/src/components/manage/library/UploadsTable.vue:128 #: front/src/components/manage/users/UsersTable.vue:61 -#: front/src/views/admin/moderation/AccountsDetail.vue:171 -#: front/src/views/admin/moderation/DomainsDetail.vue:90 -#: front/src/views/content/libraries/FilesTable.vue:92 -#: front/src/views/content/libraries/FilesTable.vue:98 -#: front/src/views/admin/moderation/DomainsDetail.vue:109 -#: front/src/views/admin/moderation/DomainsDetail.vue:117 +#: front/src/views/admin/library/UploadDetail.vue:179 +#: front/src/views/admin/library/UploadDetail.vue:214 +#: front/src/views/admin/library/UploadDetail.vue:233 +#: front/src/views/admin/library/UploadDetail.vue:244 +#: front/src/views/admin/library/UploadDetail.vue:257 +#: front/src/views/admin/moderation/AccountsDetail.vue:192 +#: front/src/views/admin/moderation/DomainsDetail.vue:82 +#: front/src/views/content/libraries/FilesTable.vue:95 +#: front/src/views/content/libraries/FilesTable.vue:101 +msgctxt "*/*/*" msgid "N/A" msgstr "N/A" -#: front/src/components/manage/moderation/AccountsTable.vue:39 -#: front/src/components/manage/moderation/DomainsTable.vue:38 -#: front/src/components/mixins/Translations.vue:26 -#: front/src/components/playlists/PlaylistModal.vue:31 -#: front/src/views/admin/moderation/DomainsDetail.vue:105 -#: front/src/views/content/libraries/Form.vue:10 -#: front/src/components/mixins/Translations.vue:27 +#: front/src/components/manage/library/LibrariesTable.vue:48 +#: front/src/components/manage/library/UploadsTable.vue:59 +msgctxt "*/*/*" msgid "Name" msgstr "Name" -#: front/src/components/auth/Settings.vue:87 +#: front/src/components/auth/ApplicationForm.vue:9 +msgctxt "Content/Applications/Input.Label/Noun" +msgid "Name" +msgstr "Name" + +#: front/src/components/auth/Settings.vue:133 +#: front/src/components/manage/library/ArtistsTable.vue:39 +#: front/src/components/manage/moderation/AccountsTable.vue:39 +#: front/src/components/manage/moderation/DomainsTable.vue:38 +#: front/src/components/mixins/Translations.vue:53 +#: front/src/components/playlists/PlaylistModal.vue:45 +#: front/src/views/admin/library/ArtistDetail.vue:98 +#: front/src/views/admin/library/LibraryDetail.vue:85 +#: front/src/views/admin/library/UploadDetail.vue:92 +#: front/src/views/admin/moderation/DomainsDetail.vue:97 +#: front/src/views/content/libraries/Form.vue:10 src/edits.js:10 +#: front/src/components/mixins/Translations.vue:54 +msgctxt "*/*/*/Noun" +msgid "Name" +msgstr "Name" + +#: front/src/components/auth/Settings.vue:88 #: front/src/views/auth/PasswordResetConfirm.vue:14 +msgctxt "Content/Settings/Input.Label" msgid "New password" msgstr "New password" -#: front/src/components/Sidebar.vue:160 +#: front/src/components/Sidebar.vue:173 +msgctxt "Sidebar/Player/Paragraph" msgid "New tracks will be appended here automatically." msgstr "New tracks will be appended here automatically." -#: front/src/components/audio/Player.vue:353 +#: front/src/components/library/EditCard.vue:47 +msgctxt "Content/Library/Card.Table.Header/Short" +msgid "New value" +msgstr "New value" + +#: front/src/components/audio/Player.vue:629 +msgctxt "Sidebar/Player/Icon.Tooltip" msgid "Next track" msgstr "Next track" -#: front/src/components/Sidebar.vue:119 +#: front/src/components/Sidebar.vue:130 +msgctxt "*/*/*" msgid "No" msgstr "No" -#: front/src/components/Home.vue:100 +#: front/src/components/Home.vue:95 +msgctxt "Content/Home/List item" msgid "No add-ons, no plugins : you only need a web library" msgstr "No add-ons, no plugins : you only need a web library" #: front/src/components/audio/Search.vue:25 +msgctxt "Content/Search/Paragraph" msgid "No album matched your query" msgstr "No album matched your query" #: front/src/components/audio/Search.vue:16 +msgctxt "Content/Search/Paragraph" msgid "No artist matched your query" msgstr "No artist matched your query" -#: front/src/components/library/Track.vue:158 -msgid "No lyrics available for this track." -msgstr "No lyrics available for this track." +#: front/src/components/library/TrackDetail.vue:14 +msgctxt "Content/Track/Table.Paragraph" +msgid "No copyright information available for this track" +msgstr "No copyright information available for this track" + +#: front/src/components/library/TrackDetail.vue:25 +msgctxt "Content/Track/Table.Paragraph" +msgid "No licensing information for this track" +msgstr "No licensing information for this track" #: front/src/components/federation/LibraryWidget.vue:6 +msgctxt "Content/Federation/Paragraph" msgid "No matching library." msgstr "No matching library." -#: front/src/views/Notifications.vue:26 +#: front/src/views/Notifications.vue:28 +msgctxt "Content/Notifications/Paragraph" msgid "No notification to show." msgstr "No notification to show." +#: front/src/components/common/EmptyState.vue:7 +msgctxt "Content/*/Paragraph" +msgid "No results were found." +msgstr "No results were found." + #: front/src/components/mixins/Translations.vue:10 -#: front/src/components/playlists/Form.vue:81 src/views/content/libraries/Form.vue:72 #: front/src/components/mixins/Translations.vue:11 +msgctxt "Content/Settings/Dropdown" msgid "Nobody except me" msgstr "Nobody except me" #: front/src/views/content/libraries/Detail.vue:57 +msgctxt "Content/Library/Paragraph" msgid "Nobody is following this library" msgstr "Nobody is following this library" #: front/src/components/manage/users/InvitationsTable.vue:51 +msgctxt "Content/Admin/Table" msgid "Not used" msgstr "Not used" -#: front/src/components/Sidebar.vue:46 src/views/Notifications.vue:74 +#: front/src/components/mixins/Translations.vue:100 +#: front/src/components/mixins/Translations.vue:101 +msgctxt "Content/OAuth Scopes/Label" +msgid "Notifications" +msgstr "Notifications" + +#: front/src/components/Sidebar.vue:46 src/views/Notifications.vue:76 +msgctxt "*/Notifications/*" msgid "Notifications" msgstr "Notifications" #: front/src/components/Footer.vue:47 +msgctxt "Footer/*/List item.Link" msgid "Official website" msgstr "Official website" -#: front/src/components/auth/Settings.vue:82 +#: front/src/components/auth/Settings.vue:83 +msgctxt "Content/Settings/Input.Label" msgid "Old password" msgstr "Old password" +#: front/src/components/library/EditCard.vue:46 +msgctxt "Content/Library/Card.Table.Header/Short" +msgid "Old value" +msgstr "Old value" + #: front/src/components/manage/users/InvitationsTable.vue:20 +msgctxt "Content/Admin/Dropdown/Adjective" msgid "Open" msgstr "Open" +#: front/src/components/library/ImportStatusModal.vue:56 +msgctxt "Popup/Import/Table.Label/Value" +msgid "Open a support thread (include the debug information below in your message)" +msgstr "Open a support thread (include the debug information below in your message)" + +#: front/src/components/library/AlbumBase.vue:73 +#: front/src/components/library/ArtistBase.vue:84 +#: front/src/components/library/TrackBase.vue:92 +msgctxt "Content/Moderation/Link" +msgid "Open in moderation interface" +msgstr "Open in moderation interface" + +#: front/src/views/admin/library/AlbumDetail.vue:31 +#: front/src/views/admin/library/ArtistDetail.vue:30 +#: front/src/views/admin/library/TrackDetail.vue:30 +msgctxt "Content/Moderation/Link/Verb" +msgid "Open local profile" +msgstr "Open local profile" + +#: front/src/views/admin/library/AlbumDetail.vue:46 +#: front/src/views/admin/library/ArtistDetail.vue:45 +#: front/src/views/admin/library/TrackDetail.vue:45 +msgctxt "Content/Moderation/Link/Verb" +msgid "Open on MusicBrainz" +msgstr "Open on MusicBrainz" + #: front/src/views/admin/moderation/AccountsDetail.vue:23 +msgctxt "Content/Moderation/Link/Verb" msgid "Open profile" msgstr "Open profile" +#: front/src/views/admin/library/AlbumDetail.vue:54 +#: front/src/views/admin/library/ArtistDetail.vue:53 +#: front/src/views/admin/library/LibraryDetail.vue:49 +#: front/src/views/admin/library/TrackDetail.vue:53 +#: front/src/views/admin/library/UploadDetail.vue:50 +#: front/src/views/admin/moderation/AccountsDetail.vue:52 +msgctxt "Content/Moderation/Link/Verb" +msgid "Open remote profile" +msgstr "Open remote profile" + #: front/src/views/admin/moderation/DomainsDetail.vue:16 +msgctxt "Content/Moderation/Link/Verb" msgid "Open website" msgstr "Open website" #: front/src/components/manage/moderation/InstancePolicyForm.vue:40 +msgctxt "Content/Moderation/Card.Title" msgid "Or customize your rule" msgstr "Or customise your rule" -#: front/src/components/favorites/List.vue:31 src/components/library/Radios.vue:41 -#: front/src/components/manage/library/FilesTable.vue:17 +#: front/src/components/favorites/List.vue:32 +#: src/components/library/Radios.vue:41 +#: front/src/components/manage/library/EditsCardList.vue:37 #: front/src/components/manage/users/UsersTable.vue:17 #: front/src/views/playlists/List.vue:25 +msgctxt "Content/Search/Dropdown.Label/Noun" msgid "Order" msgstr "Order" -#: front/src/components/favorites/List.vue:23 src/components/library/Artists.vue:15 -#: front/src/components/library/Radios.vue:33 -#: front/src/components/manage/library/FilesTable.vue:9 +#: front/src/components/favorites/List.vue:24 +#: src/components/library/Albums.vue:15 +#: front/src/components/library/Artists.vue:15 +#: src/components/library/Radios.vue:33 +#: front/src/components/manage/library/AlbumsTable.vue:11 +#: front/src/components/manage/library/ArtistsTable.vue:11 +#: front/src/components/manage/library/EditsCardList.vue:29 +#: front/src/components/manage/library/LibrariesTable.vue:20 +#: front/src/components/manage/library/TracksTable.vue:11 +#: front/src/components/manage/library/UploadsTable.vue:30 #: front/src/components/manage/moderation/AccountsTable.vue:11 #: front/src/components/manage/moderation/DomainsTable.vue:9 #: front/src/components/manage/users/InvitationsTable.vue:9 #: front/src/components/manage/users/UsersTable.vue:9 #: front/src/views/content/libraries/FilesTable.vue:21 #: front/src/views/playlists/List.vue:17 +msgctxt "Content/Search/Dropdown.Label/Noun" msgid "Ordering" msgstr "Ordering" -#: front/src/components/library/Artists.vue:23 +#: front/src/components/library/Albums.vue:23 +#: src/components/library/Artists.vue:23 +#: front/src/components/manage/library/AlbumsTable.vue:19 +#: front/src/components/manage/library/ArtistsTable.vue:19 +#: front/src/components/manage/library/LibrariesTable.vue:28 +#: front/src/components/manage/library/TracksTable.vue:19 +#: front/src/components/manage/library/UploadsTable.vue:38 #: front/src/components/manage/moderation/AccountsTable.vue:19 #: front/src/components/manage/moderation/DomainsTable.vue:17 #: front/src/views/content/libraries/FilesTable.vue:29 +msgctxt "Content/Search/Dropdown.Label/Noun" msgid "Ordering direction" msgstr "Ordering direction" #: front/src/components/manage/users/InvitationsTable.vue:38 +msgctxt "Content/Admin/Table.Label" msgid "Owner" msgstr "Owner" #: front/src/components/PageNotFound.vue:33 +msgctxt "Head/*/Title" msgid "Page Not Found" msgstr "Page Not Found" #: front/src/components/PageNotFound.vue:7 +msgctxt "Content/*/Title" msgid "Page not found!" msgstr "Page not found!" #: front/src/components/Pagination.vue:39 +msgctxt "Content/*/Hidden text/Noun" msgid "Pagination" msgstr "Pagination" #: front/src/components/auth/Login.vue:33 src/components/auth/Signup.vue:40 +msgctxt "Content/*/Input.Label" msgid "Password" msgstr "Password" #: front/src/components/auth/SubsonicTokenForm.vue:94 +msgctxt "Content/Settings/Message" msgid "Password updated" msgstr "Password updated" #: front/src/views/auth/PasswordResetConfirm.vue:28 +msgctxt "Content/Signup/Card.Title" msgid "Password updated successfully" msgstr "Password updated successfully" -#: front/src/components/audio/Player.vue:352 +#: front/src/components/audio/Player.vue:628 +msgctxt "Sidebar/Player/Icon.Tooltip/Verb" msgid "Pause track" msgstr "Pause track" #: front/src/components/ShortcutsModal.vue:59 +msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb" msgid "Pause/play the current track" msgstr "Pause/play the current track" #: front/src/components/manage/moderation/InstancePolicyCard.vue:12 +msgctxt "Content/Moderation/Card.List item" msgid "Paused" msgstr "Paused" -#: front/src/components/library/FileUpload.vue:107 +#: front/src/components/library/FileUpload.vue:116 +#: front/src/components/manage/library/UploadsTable.vue:23 +#: front/src/components/mixins/Translations.vue:28 #: front/src/views/content/libraries/FilesTable.vue:14 -#: front/src/views/content/libraries/FilesTable.vue:208 +#: front/src/components/mixins/Translations.vue:29 +msgctxt "Content/Library/*/Short" msgid "Pending" msgstr "Pending" #: front/src/views/content/libraries/Detail.vue:37 +msgctxt "Content/Library/Table/Short" msgid "Pending approval" msgstr "Pending approval" #: front/src/views/content/libraries/Quota.vue:22 +msgctxt "Content/Library/Label" msgid "Pending files" msgstr "Pending files" -#: front/src/components/Sidebar.vue:212 +#: front/src/components/Sidebar.vue:225 +msgctxt "Sidebar/Notifications/Hidden text" msgid "Pending follow requests" msgstr "Pending follow requests" +#: front/src/components/library/EditCard.vue:29 +#: front/src/components/manage/library/EditsCardList.vue:18 +msgctxt "Content/Admin/*/Noun" +msgid "Pending review" +msgstr "Pending review" + +#: front/src/components/Sidebar.vue:226 +msgctxt "Sidebar/Moderation/Hidden text" +msgid "Pending review edits" +msgstr "Pending review edits" + #: front/src/components/manage/users/UsersTable.vue:42 -#: front/src/views/admin/moderation/AccountsDetail.vue:137 +#: front/src/views/admin/moderation/AccountsDetail.vue:166 +msgctxt "Content/Admin/Table.Label/Noun" msgid "Permissions" msgstr "Permissions" -#: front/src/components/audio/PlayButton.vue:9 src/components/library/Track.vue:40 +#: front/src/components/auth/Settings.vue:176 +msgctxt "Content/*/*/Noun" +msgid "Permissions" +msgstr "Permissions" + +#: front/src/components/audio/PlayButton.vue:9 +#: front/src/components/library/TrackBase.vue:26 +msgctxt "*/Queue/Button.Label/Short, Verb" msgid "Play" msgstr "Play" -#: front/src/components/audio/album/Card.vue:50 -#: front/src/components/audio/artist/Card.vue:44 src/components/library/Album.vue:22 -#: front/src/components/library/Album.vue:67 src/views/playlists/Detail.vue:23 +#: front/src/components/audio/album/Card.vue:48 +#: front/src/components/audio/artist/Card.vue:44 +#: front/src/components/library/AlbumBase.vue:20 +#: front/src/components/library/AlbumDetail.vue:11 +#: src/views/playlists/Detail.vue:24 +msgctxt "Content/Queue/Button.Label/Short, Verb" msgid "Play all" msgstr "Play all" -#: front/src/components/library/Artist.vue:26 +#: front/src/components/library/ArtistBase.vue:31 +msgctxt "Content/Artist/Button.Label/Verb" msgid "Play all albums" msgstr "Play all albums" -#: front/src/components/audio/PlayButton.vue:15 -#: front/src/components/audio/PlayButton.vue:65 +#: front/src/components/audio/PlayButton.vue:76 +msgctxt "*/Queue/Dropdown/Button/Title" msgid "Play next" msgstr "Play next" #: front/src/components/ShortcutsModal.vue:67 +msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb" msgid "Play next track" msgstr "Play next track" -#: front/src/components/audio/PlayButton.vue:16 -#: front/src/components/audio/PlayButton.vue:63 +#: front/src/components/audio/PlayButton.vue:74 +msgctxt "*/Queue/Dropdown/Button/Title" msgid "Play now" msgstr "Play now" #: front/src/components/ShortcutsModal.vue:63 +msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb" msgid "Play previous track" msgstr "Play previous track" -#: front/src/components/Sidebar.vue:211 +#: front/src/components/audio/PlayButton.vue:77 +msgctxt "*/Queue/Dropdown/Button/Title" +msgid "Play similar songs" +msgstr "Play similar songs" + +#: front/src/components/Sidebar.vue:224 +msgctxt "Sidebar/Player/Hidden text" msgid "Play this track" msgstr "Play this track" -#: front/src/components/audio/Player.vue:351 +#: front/src/components/audio/Player.vue:627 +msgctxt "Sidebar/Player/Icon.Tooltip/Verb" msgid "Play track" msgstr "Play track" -#: front/src/components/audio/PlayButton.vue:70 +#: front/src/components/audio/PlayButton.vue:82 +msgctxt "*/Queue/Button/Title" msgid "Play..." -msgstr "Play…" +msgstr "Play..." -#: front/src/views/playlists/Detail.vue:90 +#: front/src/views/playlists/Detail.vue:91 +msgctxt "Head/Playlist/Title" msgid "Playlist" msgstr "Playlist" #: front/src/views/playlists/Detail.vue:12 +msgctxt "Content/Playlist/Header.Subtitle" msgid "Playlist containing %{ count } track, by %{ username }" msgid_plural "Playlist containing %{ count } tracks, by %{ username }" msgstr[0] "Playlist containing %{ count } track, by %{ username }" msgstr[1] "Playlist containing %{ count } tracks, by %{ username }" #: front/src/components/playlists/Form.vue:9 +msgctxt "Content/Playlist/Message" msgid "Playlist created" msgstr "Playlist created" #: front/src/components/playlists/Editor.vue:4 +msgctxt "Content/Playlist/Title" msgid "Playlist editor" msgstr "Playlist editor" #: front/src/components/playlists/Form.vue:21 +msgctxt "Content/Playlist/Input.Label" msgid "Playlist name" msgstr "Playlist name" #: front/src/components/playlists/Form.vue:6 +msgctxt "Content/Playlist/Message" msgid "Playlist updated" msgstr "Playlist updated" #: front/src/components/playlists/Form.vue:25 +msgctxt "Content/Playlist/Dropdown.Label" msgid "Playlist visibility" msgstr "Playlist visibility" +#: front/src/components/mixins/Translations.vue:88 +#: front/src/components/mixins/Translations.vue:89 +msgctxt "Content/OAuth Scopes/Label" +msgid "Playlists" +msgstr "Playlists" + #: front/src/components/Sidebar.vue:71 src/components/library/Home.vue:16 -#: front/src/components/library/Library.vue:13 src/views/admin/Settings.vue:83 -#: front/src/views/playlists/List.vue:106 +#: front/src/components/library/Library.vue:16 src/views/admin/Settings.vue:83 +#: front/src/views/admin/library/AlbumDetail.vue:173 +#: front/src/views/admin/library/ArtistDetail.vue:162 +#: front/src/views/admin/library/TrackDetail.vue:225 +#: src/views/playlists/List.vue:106 +msgctxt "*/*/*" msgid "Playlists" msgstr "Playlists" #: front/src/components/Home.vue:56 +msgctxt "Content/Home/List item" msgid "Playlists? We got them" msgstr "Playlists? We got them" -#: front/src/components/auth/Settings.vue:78 +#: front/src/components/auth/Settings.vue:79 +msgctxt "Content/Settings/Error message.List item/Call to action" msgid "Please double-check your password is correct" msgstr "Please double-check your password is correct" #: front/src/components/auth/Login.vue:9 +msgctxt "Content/Login/Error message.List item/Call to action" msgid "Please double-check your username/password couple is correct" msgstr "Please double-check your username/password couple is correct" #: front/src/components/auth/Settings.vue:46 +msgctxt "Content/Settings/Paragraph" msgid "PNG, GIF or JPG. At most 2MB. Will be downscaled to 400x400px." msgstr "PNG, GIF or JPG. At most 2MB. Will be downscaled to 400x400px." -#: front/src/components/manage/moderation/InstancePolicyForm.vue:118 -msgid "Prevent account or domain from triggering notifications, except from followers." -msgstr "" -"Prevent account or domain from triggering notifications, except from " -"followers." +#: front/src/views/admin/library/TrackDetail.vue:137 +msgctxt "*/*/*/Noun" +msgid "Position" +msgstr "Position" -#: front/src/components/audio/EmbedWizard.vue:29 +#: front/src/components/manage/moderation/InstancePolicyForm.vue:118 +msgctxt "Content/Moderation/Help text" +msgid "Prevent account or domain from triggering notifications, except from followers." +msgstr "Prevent account or domain from triggering notifications, except from followers." + +#: front/src/components/audio/EmbedWizard.vue:33 +msgctxt "Popup/Embed/Title/Noun" msgid "Preview" msgstr "Preview" -#: front/src/components/audio/Player.vue:350 +#: front/src/components/audio/Player.vue:626 +msgctxt "Sidebar/Player/Icon.Tooltip" msgid "Previous track" msgstr "Previous track" -#: front/src/views/content/remote/Card.vue:39 +#: front/src/components/mixins/Translations.vue:15 +#: front/src/components/mixins/Translations.vue:16 +msgctxt "Content/Settings/Dropdown/Short" +msgid "Private" +msgstr "Private" + +#: front/src/views/content/remote/Card.vue:43 +msgctxt "Content/Library/Card.List item" msgid "Problem during scanning" msgstr "Problem during scanning" -#: front/src/components/library/FileUpload.vue:58 +#: front/src/components/library/FileUpload.vue:57 +msgctxt "Content/Library/Button.Label" msgid "Proceed" msgstr "Proceed" #: front/src/views/auth/EmailConfirm.vue:26 #: front/src/views/auth/PasswordResetConfirm.vue:31 +msgctxt "Content/Signup/Link/Verb" msgid "Proceed to login" msgstr "Proceed to login" #: front/src/components/library/FileUpload.vue:17 +msgctxt "Content/Library/Tab.Title/Short" msgid "Processing" msgstr "Processing" +#: front/src/components/mixins/Translations.vue:68 +#: front/src/components/mixins/Translations.vue:69 +msgctxt "Content/OAuth Scopes/Label" +msgid "Profile" +msgstr "Profile" + #: front/src/components/manage/moderation/AccountsTable.vue:188 #: front/src/components/manage/moderation/DomainsTable.vue:168 #: front/src/views/content/libraries/Quota.vue:36 @@ -1893,1096 +3119,1884 @@ msgstr "Processing" #: front/src/views/content/libraries/Quota.vue:65 #: front/src/views/content/libraries/Quota.vue:88 #: front/src/views/content/libraries/Quota.vue:91 +msgctxt "*/*/*/Verb" msgid "Purge" msgstr "Purge" #: front/src/views/content/libraries/Quota.vue:89 +msgctxt "Popup/Library/Title" msgid "Purge errored files?" msgstr "Purge errored files?" #: front/src/views/content/libraries/Quota.vue:37 +msgctxt "Popup/Library/Title" msgid "Purge pending files?" msgstr "Purge pending files?" #: front/src/views/content/libraries/Quota.vue:63 +msgctxt "Popup/Library/Title" msgid "Purge skipped files?" msgstr "Purge skipped files?" #: front/src/components/Sidebar.vue:20 +msgctxt "Sidebar/Queue/Tab.Title/Noun" msgid "Queue" msgstr "Queue" -#: front/src/components/audio/Player.vue:283 +#: front/src/components/audio/Player.vue:322 +msgctxt "Content/Queue/Message" msgid "Queue shuffled!" msgstr "Queue shuffled!" #: front/src/views/radios/Detail.vue:80 +msgctxt "Head/Radio/Title" msgid "Radio" msgstr "Radio" -#: front/src/components/library/radios/Builder.vue:233 +#: front/src/components/library/radios/Builder.vue:235 +msgctxt "Head/Radio/Title" msgid "Radio Builder" msgstr "Radio Builder" #: front/src/components/library/radios/Builder.vue:15 +msgctxt "Content/Radio/Message" msgid "Radio created" msgstr "Radio created" #: front/src/components/library/radios/Builder.vue:21 +msgctxt "Content/Radio/Input.Label/Noun" msgid "Radio name" msgstr "Radio name" #: front/src/components/library/radios/Builder.vue:12 +msgctxt "Content/Radio/Message" msgid "Radio updated" msgstr "Radio updated" -#: front/src/components/library/Library.vue:10 src/components/library/Radios.vue:141 +#: front/src/components/library/Library.vue:13 +#: src/components/library/Radios.vue:142 +msgctxt "*/*/*" msgid "Radios" msgstr "Radios" +#: front/src/components/mixins/Translations.vue:92 +#: front/src/components/mixins/Translations.vue:93 +msgctxt "Content/OAuth Scopes/Label" +msgid "Radios" +msgstr "Radios" + +#: front/src/components/auth/ApplicationForm.vue:151 +msgctxt "Content/OAuth Scopes/Label/Verb" +msgid "Read" +msgstr "Read" + +#: front/src/components/library/ImportStatusModal.vue:51 +msgctxt "Popup/Import/Table.Label/Value" +msgid "Read our documentation for this error" +msgstr "Read our documentation for this error" + +#: front/src/components/auth/Authorize.vue:24 +msgctxt "Content/Auth/Label/Noun" +msgid "Read-only" +msgstr "Read-only" + +#: front/src/components/auth/ApplicationForm.vue:152 +msgctxt "Content/OAuth Scopes/Help Text" +msgid "Read-only access to user data" +msgstr "Read-only access to user data" + #: front/src/components/manage/moderation/InstancePolicyCard.vue:39 #: front/src/components/manage/moderation/InstancePolicyForm.vue:25 +msgctxt "Content/Moderation/*/Noun" msgid "Reason" msgstr "Reason" -#: front/src/views/admin/moderation/AccountsDetail.vue:222 +#: front/src/views/admin/moderation/AccountsDetail.vue:251 #: front/src/views/admin/moderation/DomainsDetail.vue:179 +msgctxt "Content/Moderation/Table.Label/Noun" msgid "Received library follows" msgstr "Received library follows" #: front/src/components/manage/moderation/DomainsTable.vue:40 -#: front/src/components/mixins/Translations.vue:36 -#: front/src/components/mixins/Translations.vue:37 +#: front/src/components/mixins/Translations.vue:62 +#: front/src/components/mixins/Translations.vue:63 +msgctxt "Content/Moderation/*/Noun" msgid "Received messages" msgstr "Received messages" +#: front/src/components/library/EditForm.vue:27 +msgctxt "Content/Library/Paragraph" +msgid "Recent edits" +msgstr "Recent edits" + +#: front/src/components/library/EditForm.vue:17 +msgctxt "Content/Library/Paragraph" +msgid "Recent edits awaiting review" +msgstr "Recent edits awaiting review" + #: front/src/components/library/Home.vue:24 +msgctxt "Content/Home/Title" msgid "Recently added" msgstr "Recently added" #: front/src/components/library/Home.vue:11 +msgctxt "Content/Home/Title" msgid "Recently favorited" msgstr "Recently favourited" #: front/src/components/library/Home.vue:6 +msgctxt "Content/Home/Title" msgid "Recently listened" msgstr "Recently listened" -#: front/src/views/content/remote/Home.vue:15 +#: front/src/components/auth/ApplicationForm.vue:13 +msgctxt "Content/Applications/Input.Label/Noun" +msgid "Redirect URI" +msgstr "Redirect URI" + +#: front/src/components/auth/Settings.vue:125 +#: src/components/auth/Settings.vue:170 +#: front/src/components/common/EmptyState.vue:16 +#: src/views/content/remote/Home.vue:15 +msgctxt "Content/*/Button.Label/Short, Verb" msgid "Refresh" msgstr "Refresh" -#: front/src/views/admin/moderation/DomainsDetail.vue:135 +#: front/src/components/federation/FetchButton.vue:20 +msgctxt "Popup/*/Message.Title" +msgid "Refresh error" +msgstr "Refresh error" + +#: front/src/views/admin/library/AlbumDetail.vue:50 +#: front/src/views/admin/library/ArtistDetail.vue:49 +#: front/src/views/admin/library/TrackDetail.vue:49 +msgctxt "Content/Moderation/Button/Verb" +msgid "Refresh from remote server" +msgstr "Refresh from remote server" + +#: front/src/views/admin/moderation/DomainsDetail.vue:127 +msgctxt "Content/Moderation/Button.Label/Verb" msgid "Refresh node info" msgstr "Refresh node info" -#: front/src/components/common/ActionTable.vue:272 +#: front/src/components/federation/FetchButton.vue:79 +msgctxt "Popup/*/Message.Title" +msgid "Refresh pending" +msgstr "Refresh pending" + +#: front/src/components/federation/FetchButton.vue:80 +msgctxt "Popup/*/Message.Content" +msgid "Refresh request wasn't proceed in time by our server. It will be processed later." +msgstr "Refresh request wasn't proceed in time by our server. It will be processed later." + +#: front/src/components/federation/FetchButton.vue:16 +msgctxt "Popup/*/Message.Title" +msgid "Refresh successful" +msgstr "Refresh successful" + +#: front/src/components/common/ActionTable.vue:275 +msgctxt "Content/*/Button.Tooltip/Verb" msgid "Refresh table content" msgstr "Refresh table content" +#: front/src/components/federation/FetchButton.vue:12 +msgctxt "Popup/*/Message.Title" +msgid "Refresh was skipped" +msgstr "Refresh was skipped" + +#: front/src/components/federation/FetchButton.vue:7 +msgctxt "Popup/*/Title" +msgid "Refreshing object from remote…" +msgstr "Refreshing object from remote…" + #: front/src/components/auth/Signup.vue:9 +msgctxt "Content/Signup/Form/Paragraph" msgid "Registration are closed on this instance, you will need an invitation code to signup." -msgstr "" -"Registration are closed on this instance, you will need an invitation code " -"to signup." +msgstr "Registration are closed on this instance, you will need an invitation code to signup." #: front/src/components/manage/users/UsersTable.vue:71 -msgid "regular user" -msgstr "regular user" +msgctxt "Content/Admin/Table, User role" +msgid "Regular user" +msgstr "Regular user" +#: front/src/components/library/EditCard.vue:87 #: front/src/views/content/libraries/Detail.vue:51 +msgctxt "Content/Library/Button.Label" msgid "Reject" msgstr "Reject" #: front/src/components/manage/moderation/InstancePolicyCard.vue:32 #: front/src/components/manage/moderation/InstancePolicyForm.vue:123 +msgctxt "Content/Moderation/*/Verb" msgid "Reject media" msgstr "Reject media" +#: front/src/components/library/EditCard.vue:33 +#: front/src/components/manage/library/EditsCardList.vue:24 #: front/src/views/content/libraries/Detail.vue:43 +msgctxt "Content/Library/*/Short" msgid "Rejected" msgstr "Rejected" -#: front/src/views/content/libraries/FilesTable.vue:234 -msgid "Relaunch import" -msgstr "Relaunch import" +#: front/src/components/manage/library/AlbumsTable.vue:43 +#: front/src/components/mixins/Translations.vue:44 src/edits.js:28 +#: front/src/components/mixins/Translations.vue:45 +msgctxt "Content/*/*/Noun" +msgid "Release date" +msgstr "Release date" + +#: front/src/components/library/FileUpload.vue:63 +msgctxt "Content/Library/Paragraph" +msgid "Remaining storage space" +msgstr "Remaining storage space" #: front/src/views/content/remote/Home.vue:6 +msgctxt "Content/Library/Title/Noun" msgid "Remote libraries" msgstr "Remote libraries" #: front/src/views/content/remote/Home.vue:7 +msgctxt "Content/Library/Paragraph" msgid "Remote libraries are owned by other users on the network. You can access them as long as they are public or you are granted access." -msgstr "" -"Remote libraries are owned by other users on the network. You can access " -"them as long as they are public or you are granted access." +msgstr "Remote libraries are owned by other users on the network. You can access them as long as they are public or you are granted access." #: front/src/components/library/radios/Filter.vue:59 +msgctxt "Content/Radio/Button.Label/Verb" msgid "Remove" msgstr "Remove" #: front/src/components/auth/Settings.vue:58 +msgctxt "Content/Settings/Button.Label/Verb" msgid "Remove avatar" msgstr "Remove avatar" +#: front/src/components/library/ArtistDetail.vue:12 +msgctxt "Content/Moderation/Button.Label" +msgid "Remove filter" +msgstr "Remove filter" + #: front/src/components/favorites/TrackFavoriteIcon.vue:26 +msgctxt "Content/Track/Icon.Tooltip/Verb" msgid "Remove from favorites" msgstr "Remove from favourites" #: front/src/views/content/libraries/Quota.vue:38 +msgctxt "Popup/Library/Paragraph" msgid "Removes uploaded but yet to be processed tracks completely, adding the corresponding data to your quota." -msgstr "" -"Removes uploaded but yet to be processed tracks completely, adding the " -"corresponding data to your quota." +msgstr "Removes uploaded but yet to be processed tracks completely, adding the corresponding data to your quota." #: front/src/views/content/libraries/Quota.vue:64 +msgctxt "Popup/Library/Paragraph" msgid "Removes uploaded tracks skipped during the import processes completely, adding the corresponding data to your quota." -msgstr "" -"Removes uploaded tracks skipped during the import processes completely, " -"adding the corresponding data to your quota." +msgstr "Removes uploaded tracks skipped during the import processes completely, adding the corresponding data to your quota." #: front/src/views/content/libraries/Quota.vue:90 +msgctxt "Popup/Library/Paragraph" msgid "Removes uploaded tracks that could not be processed by the server completely, adding the corresponding data to your quota." -msgstr "" -"Removes uploaded tracks that could not be processed by the server " -"completely, adding the corresponding data to your quota." +msgstr "Removes uploaded tracks that could not be processed by the server completely, adding the corresponding data to your quota." #: front/src/components/auth/SubsonicTokenForm.vue:33 #: front/src/components/auth/SubsonicTokenForm.vue:36 +msgctxt "*/Settings/Button.Label/Verb" msgid "Request a new password" msgstr "Request a new password" #: front/src/components/auth/SubsonicTokenForm.vue:34 +msgctxt "Popup/Settings/Title" msgid "Request a new Subsonic API password?" msgstr "Request a new Subsonic API password?" #: front/src/components/auth/SubsonicTokenForm.vue:42 +msgctxt "Content/Settings/Button.Label/Verb" msgid "Request a password" msgstr "Request a password" +#: front/src/components/federation/FetchButton.vue:64 +msgctxt "Popup/*/Loading.Title" +msgid "Requesting a fetch…" +msgstr "Requesting a fetch…" + +#: front/src/components/library/EditForm.vue:82 +msgctxt "Content/Library/Button.Label" +msgid "Reset to initial value: %{ value }" +msgstr "Reset to initial value: %{ value }" + #: front/src/components/auth/Login.vue:35 src/views/auth/PasswordReset.vue:4 #: front/src/views/auth/PasswordReset.vue:53 +msgctxt "*/Login/*/Verb" msgid "Reset your password" msgstr "Reset your password" -#: front/src/components/favorites/List.vue:38 src/components/library/Artists.vue:30 -#: front/src/components/library/Radios.vue:52 src/views/playlists/List.vue:32 +#: front/src/views/content/libraries/FilesTable.vue:223 +msgctxt "Content/Library/Dropdown/Verb" +msgid "Restart import" +msgstr "Restart import" + +#: front/src/components/favorites/List.vue:39 +#: src/components/library/Albums.vue:30 +#: front/src/components/library/Artists.vue:30 +#: src/components/library/Radios.vue:52 front/src/views/playlists/List.vue:32 +msgctxt "Content/Search/Dropdown.Label/Noun" msgid "Results per page" msgstr "Results per page" +#: front/src/components/library/EditForm.vue:31 +msgctxt "Content/Library/Button.Label" +msgid "Retrict to unreviewed edits" +msgstr "Retrict to unreviewed edits" + #: front/src/views/auth/EmailConfirm.vue:17 +msgctxt "Content/Signup/Link/Verb" msgid "Return to login" msgstr "Return to login" +#: front/src/components/library/ArtistDetail.vue:9 +msgctxt "Content/Moderation/Link" +msgid "Review my filters" +msgstr "Review my filters" + +#: front/src/components/auth/Settings.vue:192 +msgctxt "*/*/*/Verb" +msgid "Revoke" +msgstr "Revoke" + +#: front/src/components/auth/Settings.vue:195 +msgctxt "*/Settings/Button.Label/Verb" +msgid "Revoke access" +msgstr "Revoke access" + +#: front/src/components/auth/Settings.vue:193 +msgctxt "Popup/Settings/Title" +msgid "Revoke access for application \"%{ application }\"?" +msgstr "Revoke access for application \"%{ application }\"?" + #: front/src/components/manage/moderation/InstancePolicyCard.vue:16 +msgctxt "Content/Moderation/Card.Title/Noun" msgid "Rule" msgstr "Rule" #: front/src/components/admin/SettingsGroup.vue:67 -#: front/src/components/library/radios/Builder.vue:33 +#: front/src/components/library/radios/Builder.vue:34 +msgctxt "Content/*/Button.Label/Verb" msgid "Save" msgstr "Save" -#: front/src/views/content/remote/Card.vue:165 +#: front/src/views/content/remote/Card.vue:175 +msgctxt "Content/Library/Message" msgid "Scan launched" msgstr "Scan launched" -#: front/src/views/content/remote/Card.vue:63 +#: front/src/views/content/remote/Card.vue:67 +msgctxt "Content/Library/Card.Button.Label/Verb" msgid "Scan now" msgstr "Scan now" -#: front/src/views/content/remote/Card.vue:166 +#: front/src/views/content/remote/Card.vue:35 +msgctxt "Content/Library/Card.List item" +msgid "Scan pending" +msgstr "Scan pending" + +#: front/src/views/content/remote/Card.vue:176 +msgctxt "Content/Library/Message" msgid "Scan skipped (previous scan is too recent)" msgstr "Scan skipped (previous scan is too recent)" -#: front/src/views/content/remote/Card.vue:31 -msgid "Scan waiting" -msgstr "Scan waiting" - -#: front/src/views/content/remote/Card.vue:43 +#: front/src/views/content/remote/Card.vue:47 +msgctxt "Content/Library/Card.List item" msgid "Scanned" msgstr "Scanned" -#: front/src/views/content/remote/Card.vue:47 +#: front/src/views/content/remote/Card.vue:51 +msgctxt "Content/Library/Card.List item" msgid "Scanned with errors" msgstr "Scanned with errors" -#: front/src/views/content/remote/Card.vue:35 +#: front/src/views/content/remote/Card.vue:39 +msgctxt "Content/Library/Card.List item" msgid "Scanning… (%{ progress }%)" msgstr "Scanning… (%{ progress }%)" -#: front/src/components/library/Artists.vue:10 src/components/library/Radios.vue:29 -#: front/src/components/manage/library/FilesTable.vue:5 +#: front/src/components/auth/ApplicationForm.vue:22 +msgctxt "Content/Applications/Input.Label/Noun" +msgid "Scopes" +msgstr "Scopes" + +#: front/src/components/auth/Settings.vue:226 +msgctxt "Content/*/*/Noun" +msgid "Scopes" +msgstr "Scopes" + +#: front/src/components/library/Albums.vue:10 +#: src/components/library/Artists.vue:10 +#: front/src/components/library/Radios.vue:29 +#: front/src/components/manage/library/AlbumsTable.vue:5 +#: front/src/components/manage/library/ArtistsTable.vue:5 +#: front/src/components/manage/library/EditsCardList.vue:6 +#: front/src/components/manage/library/LibrariesTable.vue:5 +#: front/src/components/manage/library/TracksTable.vue:5 +#: front/src/components/manage/library/UploadsTable.vue:5 #: front/src/components/manage/moderation/AccountsTable.vue:5 #: front/src/components/manage/moderation/DomainsTable.vue:5 #: front/src/components/manage/users/InvitationsTable.vue:5 #: front/src/components/manage/users/UsersTable.vue:5 -#: front/src/views/content/libraries/FilesTable.vue:5 src/views/playlists/List.vue:13 +#: front/src/views/content/libraries/FilesTable.vue:5 +#: src/views/playlists/List.vue:13 +msgctxt "Content/Search/Input.Label/Noun" msgid "Search" msgstr "Search" #: front/src/views/content/remote/ScanForm.vue:9 +msgctxt "Content/Library/Input.Label/Verb" msgid "Search a remote library" msgstr "Search a remote library" +#: front/src/components/manage/library/EditsCardList.vue:211 +msgctxt "Content/Search/Input.Placeholder" +msgid "Search by account, summary, domain…" +msgstr "Search by account, summary, domain…" + +#: front/src/components/manage/library/LibrariesTable.vue:191 +msgctxt "Content/Search/Input.Placeholder" +msgid "Search by domain, actor, name, description…" +msgstr "Search by domain, actor, name, description…" + +#: front/src/components/manage/library/UploadsTable.vue:241 +msgctxt "Content/Search/Input.Placeholder" +msgid "Search by domain, actor, name, reference, source…" +msgstr "Search by domain, actor, name, reference, source…" + +#: front/src/components/manage/library/ArtistsTable.vue:164 +msgctxt "Content/Search/Input.Placeholder" +msgid "Search by domain, name, MusicBrainz ID…" +msgstr "Search by domain, name, MusicBrainz ID…" + +#: front/src/components/manage/library/TracksTable.vue:174 +msgctxt "Content/Search/Input.Placeholder" +msgid "Search by domain, title, artist, album, MusicBrainz ID…" +msgstr "Search by domain, title, artist, album, MusicBrainz ID…" + +#: front/src/components/manage/library/AlbumsTable.vue:174 +msgctxt "Content/Search/Input.Placeholder" +msgid "Search by domain, title, artist, MusicBrainz ID…" +msgstr "Search by domain, title, artist, MusicBrainz ID…" + #: front/src/components/manage/moderation/AccountsTable.vue:171 +msgctxt "Content/Search/Input.Placeholder" msgid "Search by domain, username, bio…" msgstr "Search by domain, username, bio…" #: front/src/components/manage/moderation/DomainsTable.vue:151 +msgctxt "Content/Search/Input.Placeholder" msgid "Search by name…" msgstr "Search by name…" -#: front/src/views/content/libraries/FilesTable.vue:201 +#: front/src/views/content/libraries/FilesTable.vue:208 +msgctxt "Content/Library/Input.Placeholder" msgid "Search by title, artist, album…" msgstr "Search by title, artist, album…" -#: front/src/components/manage/library/FilesTable.vue:176 -msgid "Search by title, artist, domain…" -msgstr "Search by title, artist, domain…" - #: front/src/components/manage/users/InvitationsTable.vue:153 +msgctxt "Content/Admin/Input.Placeholder/Verb" msgid "Search by username, e-mail address, code…" msgstr "Search by username, e-mail address, code…" #: front/src/components/manage/users/UsersTable.vue:163 +msgctxt "Content/Search/Input.Placeholder" msgid "Search by username, e-mail address, name…" msgstr "Search by username, e-mail address, name…" #: front/src/components/audio/SearchBar.vue:20 +msgctxt "Sidebar/Search/Input.Placeholder" msgid "Search for artists, albums, tracks…" msgstr "Search for artists, albums, tracks…" #: front/src/components/audio/Search.vue:2 +msgctxt "Content/Search/Title" msgid "Search for some music" msgstr "Search for some music" -#: front/src/components/library/Track.vue:162 -msgid "Search on lyrics.wikia.com" -msgstr "Search on lyrics.wikia.com" - -#: front/src/components/library/Album.vue:27 src/components/library/Artist.vue:31 -#: front/src/components/library/Track.vue:47 +#: front/src/components/library/AlbumBase.vue:57 +#: front/src/components/library/ArtistBase.vue:68 +#: front/src/components/library/TrackBase.vue:76 +msgctxt "Content/*/Button.Label/Verb" msgid "Search on Wikipedia" msgstr "Search on Wikipedia" -#: front/src/components/library/Library.vue:32 src/views/admin/library/Base.vue:17 -#: front/src/views/admin/moderation/Base.vue:22 src/views/admin/users/Base.vue:21 -#: front/src/views/content/Base.vue:19 +#: front/src/components/library/Library.vue:35 +#: src/views/admin/library/Base.vue:32 +#: front/src/views/admin/moderation/Base.vue:22 +#: src/views/admin/users/Base.vue:21 front/src/views/content/Base.vue:19 +msgctxt "Menu/*/Hidden text" msgid "Secondary menu" msgstr "Secondary menu" #: front/src/views/admin/Settings.vue:15 +msgctxt "Content/Admin/Menu.Title" msgid "Sections" msgstr "Sections" -#: front/src/components/library/radios/Builder.vue:45 +#: front/src/components/library/radios/Builder.vue:46 +msgctxt "Content/Radio/Dropdown.Placeholder/Verb" msgid "Select a filter" msgstr "Select a filter" -#: front/src/components/common/ActionTable.vue:77 +#: front/src/components/common/ActionTable.vue:79 +msgctxt "Content/*/Link/Verb" msgid "Select all %{ total } elements" msgid_plural "Select all %{ total } elements" msgstr[0] "Select all %{ total } elements" msgstr[1] "Select all %{ total } elements" -#: front/src/components/common/ActionTable.vue:86 +#: front/src/components/common/ActionTable.vue:88 +msgctxt "Content/*/Link/Verb" msgid "Select only current page" msgstr "Select only current page" -#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:85 +#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:108 #: front/src/components/manage/users/UsersTable.vue:181 -#: front/src/views/admin/moderation/AccountsDetail.vue:472 +#: front/src/views/admin/moderation/AccountsDetail.vue:506 +msgctxt "*/*/*/Noun" msgid "Settings" msgstr "Settings" #: front/src/components/auth/Settings.vue:10 +msgctxt "Content/Settings/Message" msgid "Settings updated" msgstr "Settings updated" #: front/src/components/admin/SettingsGroup.vue:11 +msgctxt "Content/Settings/Paragraph" msgid "Settings updated successfully." msgstr "Settings updated successfully." #: front/src/components/manage/users/InvitationForm.vue:27 +msgctxt "Content/Admin/Table.Label/Noun" msgid "Share link" msgstr "Share link" #: front/src/views/content/libraries/Detail.vue:15 +msgctxt "Content/Library/Paragraph" msgid "Share this link with other users so they can request access to your library." -msgstr "" -"Share this link with other users so they can request access to your library." +msgstr "Share this link with other users so they can request access to your library." #: front/src/views/content/libraries/Detail.vue:14 -#: front/src/views/content/remote/Card.vue:73 +#: front/src/views/content/remote/Card.vue:77 +msgctxt "Content/Library/Title" msgid "Sharing link" msgstr "Sharing link" -#: front/src/components/audio/album/Card.vue:40 +#: front/src/components/audio/album/Card.vue:38 +msgctxt "Content/Album/Card.Link/Verb" msgid "Show %{ count } more track" msgid_plural "Show %{ count } more tracks" msgstr[0] "Show %{ count } more track" msgstr[1] "Show %{ count } more tracks" #: front/src/components/audio/artist/Card.vue:30 +msgctxt "Content/Artist/Card.Link" msgid "Show 1 more album" msgid_plural "Show %{ count } more albums" msgstr[0] "Show 1 more album" msgstr[1] "Show %{ count } more albums" +#: front/src/components/library/EditForm.vue:21 +msgctxt "Content/Library/Button.Label" +msgid "Show all edits" +msgstr "Show all edits" + #: front/src/components/ShortcutsModal.vue:42 +msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb" msgid "Show available keyboard shortcuts" msgstr "Show available keyboard shortcuts" -#: front/src/views/Notifications.vue:10 +#: front/src/views/Notifications.vue:7 +msgctxt "Content/Notifications/Form.Label/Verb" msgid "Show read notifications" msgstr "Show read notifications" #: front/src/components/forms/PasswordInput.vue:26 +msgctxt "Content/Settings/Button.Tooltip/Verb" msgid "Show/hide password" msgstr "Show/hide password" -#: front/src/components/manage/library/FilesTable.vue:97 +#: front/src/components/manage/library/AlbumsTable.vue:93 +#: front/src/components/manage/library/ArtistsTable.vue:84 +#: front/src/components/manage/library/EditsCardList.vue:72 +#: front/src/components/manage/library/LibrariesTable.vue:110 +#: front/src/components/manage/library/TracksTable.vue:95 +#: front/src/components/manage/library/UploadsTable.vue:144 #: front/src/components/manage/moderation/AccountsTable.vue:88 #: front/src/components/manage/moderation/DomainsTable.vue:74 #: front/src/components/manage/users/InvitationsTable.vue:76 #: front/src/components/manage/users/UsersTable.vue:87 -#: front/src/views/content/libraries/FilesTable.vue:114 +#: front/src/views/content/libraries/FilesTable.vue:117 +msgctxt "Content/*/Paragraph" msgid "Showing results %{ start }-%{ end } on %{ total }" msgstr "Showing results %{ start }-%{ end } on %{ total }" #: front/src/components/ShortcutsModal.vue:83 +msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb" msgid "Shuffle queue" msgstr "Shuffle queue" -#: front/src/components/audio/Player.vue:365 +#: front/src/components/audio/Player.vue:641 +msgctxt "Sidebar/Player/Icon.Tooltip/Verb" msgid "Shuffle your queue" msgstr "Shuffle your queue" #: front/src/components/auth/Signup.vue:97 +msgctxt "*/Signup/Title" msgid "Sign Up" msgstr "Sign Up" #: front/src/components/manage/users/UsersTable.vue:40 +msgctxt "Content/Admin/Table.Label/Short, Noun (Value is a date)" msgid "Sign-up" msgstr "Sign-up" -#: front/src/components/mixins/Translations.vue:31 -#: front/src/views/admin/moderation/AccountsDetail.vue:176 -#: front/src/components/mixins/Translations.vue:32 +#: front/src/components/mixins/Translations.vue:57 +#: front/src/views/admin/moderation/AccountsDetail.vue:197 +#: front/src/components/mixins/Translations.vue:58 +msgctxt "Content/Admin/Table.Label/Noun" msgid "Sign-up date" msgstr "Sign-up date" -#: front/src/components/manage/moderation/InstancePolicyForm.vue:119 -msgid "Silence notifications" -msgstr "Silence notifications" - -#: front/src/components/library/FileUpload.vue:85 -#: front/src/components/library/Track.vue:120 -#: front/src/components/manage/library/FilesTable.vue:44 -#: front/src/components/mixins/Translations.vue:28 -#: front/src/views/content/libraries/FilesTable.vue:60 -#: front/src/components/mixins/Translations.vue:29 +#: front/src/components/manage/library/UploadsTable.vue:65 +#: front/src/views/admin/library/UploadDetail.vue:219 +msgctxt "Content/*/*/Noun" msgid "Size" msgstr "Size" +#: front/src/components/library/FileUpload.vue:94 +#: front/src/components/library/TrackDetail.vue:39 +#: front/src/components/mixins/Translations.vue:54 +#: front/src/views/content/libraries/FilesTable.vue:61 +#: front/src/components/mixins/Translations.vue:55 +msgctxt "Content/Library/*/in MB" +msgid "Size" +msgstr "Size" + +#: front/src/components/manage/library/UploadsTable.vue:24 +#: front/src/components/mixins/Translations.vue:24 #: front/src/views/content/libraries/FilesTable.vue:15 -#: front/src/views/content/libraries/FilesTable.vue:204 +#: front/src/components/mixins/Translations.vue:25 +msgctxt "Content/Library/*" msgid "Skipped" msgstr "Skipped" #: front/src/views/content/libraries/Quota.vue:49 +msgctxt "Content/Library/Label" msgid "Skipped files" msgstr "Skipped files" -#: front/src/views/admin/moderation/DomainsDetail.vue:97 +#: front/src/views/admin/moderation/DomainsDetail.vue:89 +msgctxt "Content/Moderation/Table.Label" msgid "Software" msgstr "Software" +#: front/src/components/playlists/Editor.vue:21 +msgctxt "Content/Playlist/Paragraph" +msgid "Some tracks in your queue are already in this playlist:" +msgstr "Some tracks in your queue are already in this playlist:" + +#: front/src/components/PageNotFound.vue:10 +msgctxt "Content/*/Paragraph" +msgid "Sorry, the page you asked for does not exist:" +msgstr "Sorry, the page you asked for does not exist:" + #: front/src/components/Footer.vue:49 +msgctxt "Footer/*/List item.Link" msgid "Source code" msgstr "Source code" #: front/src/components/auth/Profile.vue:23 #: front/src/components/manage/users/UsersTable.vue:70 +msgctxt "Content/Profile/User role" msgid "Staff member" msgstr "Staff member" -#: front/src/components/radios/Button.vue:4 -msgid "Start" -msgstr "Start" +#: front/src/components/audio/PlayButton.vue:23 +#: src/components/radios/Button.vue:4 +msgctxt "*/Queue/Button.Label/Short, Verb" +msgid "Start radio" +msgstr "Start radio" #: front/src/views/admin/Settings.vue:86 +msgctxt "Content/Admin/Menu" msgid "Statistics" msgstr "Statistics" -#: front/src/views/admin/moderation/AccountsDetail.vue:454 +#: front/src/views/admin/moderation/AccountsDetail.vue:490 +msgctxt "Content/Moderation/Help text" msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this account" -msgstr "" -"Statistics are computed from known activity and content on your instance, " -"and do not reflect general activity for this account" +msgstr "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this account" -#: front/src/views/admin/moderation/DomainsDetail.vue:358 +#: front/src/views/admin/moderation/DomainsDetail.vue:371 +msgctxt "Content/Moderation/Help text" msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this domain" -msgstr "" -"Statistics are computed from known activity and content on your instance, " -"and do not reflect general activity for this domain" +msgstr "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this domain" -#: front/src/components/library/FileUpload.vue:86 -#: front/src/components/manage/users/InvitationsTable.vue:17 -#: front/src/components/manage/users/InvitationsTable.vue:39 -#: front/src/components/manage/users/UsersTable.vue:43 -#: front/src/views/admin/moderation/DomainsDetail.vue:123 -#: front/src/views/content/libraries/Detail.vue:28 +#: front/src/views/admin/library/AlbumDetail.vue:329 +#: front/src/views/admin/library/ArtistDetail.vue:328 +#: front/src/views/admin/library/LibraryDetail.vue:316 +#: front/src/views/admin/library/TrackDetail.vue:371 +#: front/src/views/admin/library/UploadDetail.vue:335 +msgctxt "Content/Moderation/Help text" +msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object" +msgstr "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object" + +#: front/src/views/admin/moderation/DomainsDetail.vue:115 +msgctxt "Content/Moderation/Table.Label (Value is Error message)" msgid "Status" msgstr "Status" -#: front/src/components/radios/Button.vue:3 -msgid "Stop" -msgstr "Stop" +#: front/src/components/library/FileUpload.vue:95 +msgctxt "Content/Library/Table.Label (Value is Uploading/Uploaded/Error)" +msgid "Status" +msgstr "Status" -#: front/src/components/Sidebar.vue:161 +#: front/src/views/content/libraries/Detail.vue:28 +msgctxt "Content/Library.Federation/Table.Label (Value is Approved/Rejected)" +msgid "Status" +msgstr "Status" + +#: front/src/components/manage/users/InvitationsTable.vue:17 +#: front/src/components/manage/users/InvitationsTable.vue:39 +msgctxt "Content/Admin/*/Noun (Value is Used/Not used)" +msgid "Status" +msgstr "Status" + +#: front/src/components/manage/users/UsersTable.vue:43 +msgctxt "Content/Admin/Table.Label/Noun (Value is Regular user/Admin)" +msgid "Status" +msgstr "Status" + +#: front/src/components/manage/library/EditsCardList.vue:12 +msgctxt "Content/Search/Dropdown.Label (Value is All/Pending review/Approved/Rejected)" +msgid "Status" +msgstr "Status" + +#: front/src/components/Sidebar.vue:174 src/components/radios/Button.vue:3 +msgctxt "*/Player/Button.Label/Short, Verb" msgid "Stop radio" msgstr "Stop radio" -#: front/src/App.vue:22 +#: front/src/components/SetInstanceModal.vue:23 +msgctxt "*/*/Button.Label/Verb" msgid "Submit" msgstr "Submit" +#: front/src/components/library/EditForm.vue:98 +msgctxt "Content/Library/Button.Label/Verb" +msgid "Submit and apply edit" +msgstr "Submit and apply edit" + +#: front/src/components/library/EditForm.vue:7 +msgctxt "Content/Library/Button.Label" +msgid "Submit another edit" +msgstr "Submit another edit" + +#: front/src/components/library/EditForm.vue:99 +msgctxt "Content/Library/Button.Label/Verb" +msgid "Submit suggestion" +msgstr "Submit suggestion" + #: front/src/views/admin/Settings.vue:85 +msgctxt "Content/Admin/Menu" msgid "Subsonic" msgstr "Subsonic" #: front/src/components/auth/SubsonicTokenForm.vue:2 +msgctxt "Content/Settings/Title" msgid "Subsonic API password" msgstr "Subsonic API password" -#: front/src/App.vue:26 +#: front/src/components/library/EditForm.vue:38 +msgctxt "Content/Library/Paragraph" +msgid "Suggest a change using the form below." +msgstr "Suggest a change using the form below." + +#: front/src/components/library/AlbumEdit.vue:5 +msgctxt "Content/*/Title" +msgid "Suggest an edit on this album" +msgstr "Suggest an edit on this album" + +#: front/src/components/library/ArtistEdit.vue:5 +msgctxt "Content/*/Title" +msgid "Suggest an edit on this artist" +msgstr "Suggest an edit on this artist" + +#: front/src/components/library/TrackEdit.vue:5 +msgctxt "Content/*/Title" +msgid "Suggest an edit on this track" +msgstr "Suggest an edit on this track" + +#: front/src/components/SetInstanceModal.vue:31 +msgctxt "Popup/Instance/List.Label" msgid "Suggested choices" msgstr "Suggested choices" #: front/src/components/library/FileUpload.vue:3 +msgctxt "Content/Library/Tab.Title/Short" msgid "Summary" msgstr "Summary" +#: front/src/components/library/EditForm.vue:87 +msgctxt "*/*/*" +msgid "Summary (optional)" +msgstr "Summary (optional)" + #: front/src/components/Footer.vue:39 +msgctxt "Footer/*/Listitem.Link" msgid "Support forum" msgstr "Support forum" -#: front/src/components/library/FileUpload.vue:78 +#: front/src/components/library/FileUpload.vue:85 +msgctxt "Content/Library/Paragraph" msgid "Supported extensions: %{ extensions }" msgstr "Supported extensions: %{ extensions }" #: front/src/components/playlists/Editor.vue:9 +msgctxt "Content/Playlist/Paragraph" msgid "Syncing changes to server…" msgstr "Syncing changes to server…" +#: front/src/components/audio/EmbedWizard.vue:25 #: front/src/components/common/CopyInput.vue:3 +msgctxt "Content/*/Paragraph" msgid "Text copied to clipboard!" msgstr "Text copied to clipboard!" #: front/src/components/Home.vue:26 +msgctxt "Content/Home/Paragraph" msgid "That's simple: we loved Grooveshark and we want to build something even better." -msgstr "" -"That's simple: we loved Grooveshark and we want to build something even " -"better." +msgstr "That's simple: we loved Grooveshark and we want to build something even better." + +#: front/src/views/admin/library/AlbumDetail.vue:75 +msgctxt "Content/Moderation/Paragraph" +msgid "The album will be removed, as well as associated uploads, tracks, favorites and listening history. This action is irreversible." +msgstr "The album will be removed, as well as associated uploads, tracks, favourites and listening history. This action is irreversible." + +#: front/src/components/auth/Authorize.vue:39 +msgctxt "Content/Auth/Paragraph" +msgid "The application is also requesting the following unknown permissions:" +msgstr "The application is also requesting the following unknown permissions:" + +#: front/src/views/admin/library/ArtistDetail.vue:74 +msgctxt "Content/Moderation/Paragraph" +msgid "The artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible." +msgstr "The artist will be removed, as well as associated uploads, tracks, albums, favourites and listening history. This action is irreversible." #: front/src/components/Footer.vue:53 +msgctxt "Footer/*/List item.Link" msgid "The funkwhale logo was kindly designed and provided by Francis Gading." msgstr "The funkwhale logo was kindly designed and provided by Francis Gading." +#: front/src/components/SetInstanceModal.vue:8 +msgctxt "Popup/Instance/Error message.List item" +msgid "The given address is not a Funkwhale server" +msgstr "The given address is not a Funkwhale server" + #: front/src/views/content/libraries/Form.vue:34 +msgctxt "Popup/Library/Paragraph" msgid "The library and all its tracks will be deleted. This can not be undone." msgstr "The library and all its tracks will be deleted. This can not be undone." -#: front/src/components/library/FileUpload.vue:39 -msgid "The music files you are uploading are tagged properly:" -msgstr "The music files you are uploading are tagged properly:" +#: front/src/views/admin/library/LibraryDetail.vue:61 +msgctxt "Content/Moderation/Paragraph" +msgid "The library will be removed, as well as associated uploads, and follows. This action is irreversible." +msgstr "The library will be removed, as well as associated uploads, and follows. This action is irreversible." -#: front/src/components/audio/Player.vue:67 +#: front/src/components/library/ImportStatusModal.vue:140 +msgctxt "Popup/Import/Error.Label" +msgid "The metadata included in the file is invalid or some mandatory fields are missing." +msgstr "The metadata included in the file is invalid or some mandatory fields are missing." + +#: front/src/components/library/FileUpload.vue:38 +msgctxt "Content/Library/List item" +msgid "The music files you are uploading are tagged properly." +msgstr "The music files you are uploading are tagged properly." + +#: front/src/components/audio/Player.vue:65 +msgctxt "Sidebar/Player/Error message.Paragraph" msgid "The next track will play automatically in a few seconds…" msgstr "The next track will play automatically in a few seconds…" -#: front/src/components/Home.vue:121 +#: front/src/components/Home.vue:116 +msgctxt "Content/Home/List item" msgid "The plaform is free and open-source, you can install it and modify it without worries" -msgstr "" -"The platform is free and open-source, you can install it and modify it " -"without worries" +msgstr "The plaform is free and open-source, you can install it and modify it without worries" + +#: front/src/components/playlists/Form.vue:14 +msgctxt "Content/Playlist/Error message.Title" +msgid "The playlist could not be created" +msgstr "The playlist could not be created" + +#: front/src/components/federation/FetchButton.vue:37 +msgctxt "*/*/Error" +msgid "The remote server answered with HTTP %{ status }" +msgstr "The remote server answered with HTTP %{ status }" + +#: front/src/components/federation/FetchButton.vue:13 +msgctxt "Popup/*/Message.Content" +msgid "The remote server answered, but returned data was unsupported by Funkwhale." +msgstr "The remote server answered, but returned data was unsupported by Funkwhale." + +#: front/src/components/federation/FetchButton.vue:44 +msgctxt "*/*/Error" +msgid "The remote server didn't answered fast enough" +msgstr "The remote server didn't answered fast enough" + +#: front/src/components/federation/FetchButton.vue:50 +msgctxt "*/*/Error" +msgid "The return server returned invalid JSON or JSON-LD data" +msgstr "The return server returned invalid JSON or JSON-LD data" + +#: front/src/components/manage/library/AlbumsTable.vue:189 +msgctxt "Popup/*/Paragraph" +msgid "The selected albums will be removed, as well as associated tracks, uploads, favorites and listening history. This action is irreversible." +msgstr "The selected albums will be removed, as well as associated tracks, uploads, favourites and listening history. This action is irreversible." + +#: front/src/components/manage/library/ArtistsTable.vue:179 +msgctxt "Popup/*/Paragraph" +msgid "The selected artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible." +msgstr "The selected artist will be removed, as well as associated uploads, tracks, albums, favourites and listening history. This action is irreversible." + +#: front/src/components/manage/library/LibrariesTable.vue:206 +msgctxt "Popup/*/Paragraph" +msgid "The selected library will be removed, as well as associated uploads and follows. This action is irreversible." +msgstr "The selected library will be removed, as well as associated uploads and follows. This action is irreversible." + +#: front/src/components/manage/library/TracksTable.vue:189 +msgctxt "Popup/*/Paragraph" +msgid "The selected tracks will be removed, as well as associated uploads, favorites and listening history. This action is irreversible." +msgstr "The selected tracks will be removed, as well as associated uploads, favourites and listening history. This action is irreversible." + +#: front/src/components/manage/library/UploadsTable.vue:256 +msgctxt "Popup/*/Paragraph" +msgid "The selected upload will be removed. This action is irreversible." +msgstr "The selected upload will be removed. This action is irreversible." + +#: front/src/components/SetInstanceModal.vue:7 +msgctxt "Popup/Instance/Error message.List item" +msgid "The server might be down" +msgstr "The server might be down" #: front/src/components/auth/SubsonicTokenForm.vue:4 +msgctxt "Content/Settings/Paragraph" msgid "The Subsonic API is not available on this Funkwhale instance." msgstr "The Subsonic API is not available on this Funkwhale instance." -#: front/src/components/library/FileUpload.vue:43 +#: front/src/components/library/EditCard.vue:96 +msgctxt "Popup/Library/Paragraph" +msgid "The suggestion will be completely removed, this action is irreversible." +msgstr "The suggestion will be completely removed, this action is irreversible." + +#: front/src/components/playlists/PlaylistModal.vue:34 +msgctxt "Popup/Playlist/Error message.Title" +msgid "The track can't be added to a playlist" +msgstr "The track can't be added to a playlist" + +#: front/src/components/audio/Player.vue:62 +msgctxt "Sidebar/Player/Error message.Title" +msgid "The track cannot be loaded" +msgstr "The track cannot be loaded" + +#: front/src/views/admin/library/TrackDetail.vue:74 +msgctxt "Content/Moderation/Paragraph" +msgid "The track will be removed, as well as associated uploads, favorites and listening history. This action is irreversible." +msgstr "The track will be removed, as well as associated uploads, favourites and listening history. This action is irreversible." + +#: front/src/views/admin/library/UploadDetail.vue:68 +msgctxt "Content/Moderation/Paragraph" +msgid "The upload will be removed. This action is irreversible." +msgstr "The upload will be removed. This action is irreversible." + +#: front/src/components/library/FileUpload.vue:42 +msgctxt "Content/Library/List item" msgid "The uploaded music files are in OGG, Flac or MP3 format" msgstr "The uploaded music files are in OGG, Flac or MP3 format" #: front/src/views/content/Home.vue:4 +msgctxt "Content/Library/Paragraph" msgid "There are various ways to grab new content and make it available here." msgstr "There are various ways to grab new content and make it available here." #: front/src/components/manage/moderation/InstancePolicyForm.vue:66 +msgctxt "Popup/Moderation/Paragraph" msgid "This action is irreversible." msgstr "This action is irreversible." -#: front/src/components/library/Album.vue:85 +#: front/src/components/library/AlbumDetail.vue:29 +msgctxt "Content/Album/Paragraph" msgid "This album is present in the following libraries:" msgstr "This album is present in the following libraries:" -#: front/src/components/library/Artist.vue:63 +#: front/src/components/library/ArtistDetail.vue:42 +msgctxt "Content/Artist/Paragraph" msgid "This artist is present in the following libraries:" msgstr "This artist is present in the following libraries:" -#: front/src/views/admin/moderation/AccountsDetail.vue:55 +#: front/src/views/admin/moderation/AccountsDetail.vue:84 #: front/src/views/admin/moderation/DomainsDetail.vue:48 +msgctxt "Content/Moderation/Card.Title" msgid "This domain is subject to specific moderation rules" msgstr "This domain is subject to specific moderation rules" #: front/src/views/content/Home.vue:9 +msgctxt "Content/Library/Paragraph" msgid "This instance offers up to %{quota} of storage space for every user." msgstr "This instance offers up to %{quota} of storage space for every user." +#: front/src/components/auth/Settings.vue:165 +msgctxt "Content/Settings/Paragraph" +msgid "This is the list of applications that have access to your account data." +msgstr "This is the list of applications that have access to your account data." + +#: front/src/components/auth/Settings.vue:218 +msgctxt "Content/Settings/Paragraph" +msgid "This is the list of applications that you have created." +msgstr "This is the list of applications that you have created." + #: front/src/components/auth/Profile.vue:16 +msgctxt "Content/Profile/Button.Paragraph" msgid "This is you!" msgstr "This is you!" -#: front/src/views/content/libraries/Form.vue:71 +#: front/src/views/content/libraries/Form.vue:73 +msgctxt "Content/Library/Input.Placeholder" msgid "This library contains my personal music, I hope you like it." msgstr "This library contains my personal music, I hope you like it." -#: front/src/views/content/remote/Card.vue:131 +#: front/src/views/content/remote/Card.vue:141 +msgctxt "Content/Library/Card.Help text" msgid "This library is private and your approval from its owner is needed to access its content" -msgstr "" -"This library is private and approval from its owner is needed to access its " -"content" +msgstr "This library is private and your approval from its owner is needed to access its content" -#: front/src/views/content/remote/Card.vue:132 +#: front/src/views/content/remote/Card.vue:142 +msgctxt "Content/Library/Card.Help text" msgid "This library is public and you can access its content freely" msgstr "This library is public and you can access its content freely" -#: front/src/components/common/ActionTable.vue:45 +#: front/src/components/common/ActionTable.vue:47 +msgctxt "Modal/*/Paragraph" msgid "This may affect a lot of elements or have irreversible consequences, please double check this is really what you want." -msgstr "" -"This may affect a lot of elements or have irreversible consequences, please " -"double check this is really what you want." +msgstr "This may affect a lot of elements or have irreversible consequences, please double check this is really what you want." -#: front/src/components/library/FileUpload.vue:52 +#: front/src/components/library/AlbumEdit.vue:8 +#: front/src/components/library/ArtistEdit.vue:8 +#: front/src/components/library/TrackEdit.vue:8 +msgctxt "Content/*/Message" +msgid "This object is managed by another server, you cannot edit it." +msgstr "This object is managed by another server, you cannot edit it." + +#: front/src/components/library/FileUpload.vue:51 +msgctxt "Content/Library/Paragraph" msgid "This reference will be used to group imported files together." msgstr "This reference will be used to group imported files together." -#: front/src/components/audio/PlayButton.vue:73 +#: front/src/components/mixins/Translations.vue:33 +#: front/src/components/mixins/Translations.vue:34 +msgctxt "Content/Library/Help text" +msgid "This track could not be processed, please it is tagged correctly" +msgstr "This track could not be processed, please it is tagged correctly" + +#: front/src/components/mixins/Translations.vue:29 +#: front/src/components/mixins/Translations.vue:30 +msgctxt "Content/Library/Help text" +msgid "This track has been uploaded, but hasn't been processed by the server yet" +msgstr "This track has been uploaded, but hasn't been processed by the server yet" + +#: front/src/components/mixins/Translations.vue:25 +#: front/src/components/mixins/Translations.vue:26 +msgctxt "Content/Library/Help text" +msgid "This track is already present in one of your libraries" +msgstr "This track is already present in one of your libraries" + +#: front/src/components/audio/PlayButton.vue:85 +msgctxt "*/Queue/Button/Title" msgid "This track is not available in any library you have access to" msgstr "This track is not available in any library you have access to" -#: front/src/components/library/Track.vue:171 +#: front/src/components/library/TrackDetail.vue:82 +msgctxt "Content/Track/Paragraph" msgid "This track is present in the following libraries:" msgstr "This track is present in the following libraries:" -#: front/src/views/playlists/Detail.vue:37 +#: front/src/views/playlists/Detail.vue:38 +msgctxt "Popup/Playlist/Paragraph" msgid "This will completely delete this playlist and cannot be undone." msgstr "This will completely delete this playlist and cannot be undone." #: front/src/views/radios/Detail.vue:27 +msgctxt "Popup/Radio/Paragraph" msgid "This will completely delete this radio and cannot be undone." msgstr "This will completely delete this radio and cannot be undone." #: front/src/components/auth/SubsonicTokenForm.vue:50 +msgctxt "Popup/Settings/Paragraph" msgid "This will completely disable access to the Subsonic API using from account." -msgstr "" -"This will completely disable access to the Subsonic API using from account." - -#: front/src/App.vue:132 src/components/Footer.vue:72 -msgid "This will erase your local data and disconnect you, do you want to continue?" -msgstr "" -"This will erase your local data and disconnect you, do you want to continue?" +msgstr "This will completely disable access to the Subsonic API using from account." #: front/src/components/auth/SubsonicTokenForm.vue:35 +msgctxt "Popup/Settings/Paragraph" msgid "This will log you out from existing devices that use the current password." -msgstr "" -"This will log you out from existing devices that use the current password." +msgstr "This will log you out from existing devices that use the current password." -#: front/src/components/playlists/Editor.vue:44 +#: front/src/components/auth/Settings.vue:253 +msgctxt "Popup/Settings/Paragraph" +msgid "This will permanently delete the application and all the associated tokens." +msgstr "This will permanently delete the application and all the associated tokens." + +#: front/src/components/auth/Settings.vue:194 +msgctxt "Popup/Settings/Paragraph" +msgid "This will prevent this application from accessing the service on your behalf." +msgstr "This will prevent this application from accessing the service on your behalf." + +#: front/src/components/playlists/Editor.vue:54 +msgctxt "Popup/Playlist/Paragraph" msgid "This will remove all tracks from this playlist and cannot be undone." msgstr "This will remove all tracks from this playlist and cannot be undone." -#: front/src/components/audio/track/Table.vue:6 -#: front/src/components/manage/library/FilesTable.vue:37 -#: front/src/components/mixins/Translations.vue:27 -#: front/src/views/content/libraries/FilesTable.vue:54 -#: front/src/components/mixins/Translations.vue:28 +#: front/src/views/admin/library/AlbumDetail.vue:99 +#: front/src/views/admin/library/TrackDetail.vue:98 src/edits.js:21 +#: src/edits.js:39 +msgctxt "*/*/*/Noun" msgid "Title" msgstr "Title" +#: front/src/components/audio/track/Table.vue:7 +#: front/src/views/content/libraries/FilesTable.vue:55 +msgctxt "Content/Track/*/Noun" +msgid "Title" +msgstr "Title" + +#: front/src/components/manage/library/AlbumsTable.vue:39 +#: front/src/components/manage/library/TracksTable.vue:39 +msgctxt "*/*/*" +msgid "Title" +msgstr "Title" + +#: front/src/components/SetInstanceModal.vue:16 +msgctxt "Popup/Instance/Paragraph" +msgid "To continue, please select the Funkwhale instance you want to connect to. Enter the address directly, or select one of the suggested choices." +msgstr "To continue, please select the Funkwhale instance you want to connect to. Enter the address directly, or select one of the suggested choices." + #: front/src/components/ShortcutsModal.vue:79 +msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb" msgid "Toggle queue looping" msgstr "Toggle queue looping" -#: front/src/views/admin/moderation/AccountsDetail.vue:288 +#: front/src/views/admin/library/AlbumDetail.vue:222 +#: front/src/views/admin/library/ArtistDetail.vue:211 +#: front/src/views/admin/library/LibraryDetail.vue:200 +#: front/src/views/admin/library/TrackDetail.vue:274 +#: front/src/views/admin/moderation/AccountsDetail.vue:317 #: front/src/views/admin/moderation/DomainsDetail.vue:225 +msgctxt "Content/Moderation/Table.Label" msgid "Total size" msgstr "Total size" -#: front/src/views/content/libraries/Card.vue:61 +#: front/src/views/content/libraries/Card.vue:68 +msgctxt "Content/Library/Card.Help text" msgid "Total size of the files in this library" msgstr "Total size of the files in this library" -#: front/src/views/admin/moderation/DomainsDetail.vue:113 +#: front/src/views/admin/moderation/DomainsDetail.vue:105 +msgctxt "Content/*/*" msgid "Total users" msgstr "Total users" -#: front/src/components/audio/SearchBar.vue:27 src/components/library/Track.vue:262 -#: front/src/components/metadata/Search.vue:138 +#: front/src/views/admin/library/UploadDetail.vue:199 +msgctxt "*/*/*" msgid "Track" msgstr "Track" -#: front/src/views/content/libraries/FilesTable.vue:205 -msgid "Track already present in one of your libraries" -msgstr "Track already present in one of your libraries" +#: front/src/components/audio/SearchBar.vue:27 +#: front/src/components/library/TrackBase.vue:173 +#: front/src/components/library/TrackDetail.vue:128 +#: front/src/components/metadata/Search.vue:138 +msgctxt "*/*/*/Noun" +msgid "Track" +msgstr "Track" -#: front/src/components/library/Track.vue:85 +#: front/src/components/library/EditCard.vue:13 +msgctxt "Content/Library/Card/Short" +msgid "Track #%{ id } - %{ name }" +msgstr "Track #%{ id } - %{ name }" + +#: front/src/views/admin/library/TrackDetail.vue:91 +msgctxt "Content/Moderation/Title" +msgid "Track data" +msgstr "Track data" + +#: front/src/components/library/TrackDetail.vue:4 +msgctxt "Content/Track/Title/Noun" msgid "Track information" msgstr "Track information" -#: front/src/components/library/radios/Filter.vue:44 -msgid "Track matching filter" -msgstr "Track matching filter" - -#: front/src/components/mixins/Translations.vue:23 -#: front/src/components/mixins/Translations.vue:24 +#: front/src/components/mixins/Translations.vue:50 +#: front/src/components/mixins/Translations.vue:51 +msgctxt "Content/*/Dropdown/Noun" msgid "Track name" msgstr "Track name" -#: front/src/views/content/libraries/FilesTable.vue:209 -msgid "Track uploaded, but not processed by the server yet" -msgstr "Track uploaded, but not processed by the server yet" - #: front/src/components/instance/Stats.vue:54 -msgid "tracks" -msgstr "tracks" - -#: front/src/components/library/Album.vue:75 -#: front/src/components/playlists/PlaylistModal.vue:33 -#: front/src/views/admin/moderation/AccountsDetail.vue:329 -#: front/src/views/admin/moderation/DomainsDetail.vue:265 +#: front/src/components/library/AlbumDetail.vue:19 +#: front/src/components/playlists/PlaylistModal.vue:47 +#: front/src/views/admin/moderation/AccountsDetail.vue:362 +#: front/src/views/admin/moderation/DomainsDetail.vue:274 #: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8 -#: front/src/views/playlists/Detail.vue:50 src/views/radios/Detail.vue:34 +#: front/src/views/playlists/Detail.vue:51 src/views/radios/Detail.vue:34 +msgctxt "*/*/*/Noun" msgid "Tracks" msgstr "Tracks" -#: front/src/components/library/Artist.vue:54 +#: front/src/components/manage/library/AlbumsTable.vue:42 +#: front/src/components/manage/library/ArtistsTable.vue:42 +#: front/src/views/admin/library/AlbumDetail.vue:252 +#: front/src/views/admin/library/ArtistDetail.vue:251 +#: front/src/views/admin/library/Base.vue:14 +#: front/src/views/admin/library/LibraryDetail.vue:229 +#: front/src/views/admin/library/TracksList.vue:24 +msgctxt "*/*/*" +msgid "Tracks" +msgstr "Tracks" + +#: front/src/components/library/ArtistDetail.vue:33 +msgctxt "Content/Artist/Title" msgid "Tracks by this artist" msgstr "Tracks by this artist" #: front/src/components/instance/Stats.vue:25 +msgctxt "Content/About/Paragraph/Unit" msgid "Tracks favorited" msgstr "Tracks favourited" #: front/src/components/instance/Stats.vue:19 +msgctxt "Content/About/Paragraph/Unit" msgid "tracks listened" msgstr "tracks listened" -#: front/src/components/library/Track.vue:138 -#: front/src/components/manage/library/FilesTable.vue:41 -#: front/src/views/admin/moderation/AccountsDetail.vue:151 +#: front/src/components/library/radios/Filter.vue:44 +msgctxt "Popup/Radio/Title/Noun" +msgid "Tracks matching filter" +msgstr "Tracks matching filter" + +#: front/src/components/library/TrackDetail.vue:57 +#: front/src/views/admin/library/UploadDetail.vue:250 +msgctxt "Content/Track/Table.Label/Noun" +msgid "Type" +msgstr "Type" + +#: front/src/views/admin/moderation/AccountsDetail.vue:180 +msgctxt "Content/Moderation/Table.Label/Noun" msgid "Type" msgstr "Type" #: front/src/components/manage/moderation/AccountsTable.vue:44 #: front/src/components/manage/moderation/DomainsTable.vue:42 +msgctxt "Content/Moderation/Table.Label/Short" msgid "Under moderation rule" msgstr "Under moderation rule" -#: front/src/views/content/remote/Card.vue:100 src/views/content/remote/Card.vue:105 +#: front/src/views/content/remote/Card.vue:109 +#: src/views/content/remote/Card.vue:114 +msgctxt "*/Library/Button.Label/Verb" msgid "Unfollow" msgstr "Unfollow" -#: front/src/views/content/remote/Card.vue:101 +#: front/src/views/content/remote/Card.vue:110 +msgctxt "Popup/Library/Title" msgid "Unfollow this library?" msgstr "Unfollow this library?" #: front/src/components/About.vue:17 -msgid "Unfortunately, owners of this instance did not yet take the time to complete this page." -msgstr "" -"Unfortunately, owners of this instance did not yet take the time to complete " -"this page." +msgctxt "Content/About/Paragraph" +msgid "Unfortunately, the owners of this instance did not yet take the time to complete this page." +msgstr "Unfortunately, the owners of this instance did not yet take the time to complete this page." + +#: front/src/components/federation/FetchButton.vue:54 +#: front/src/components/federation/FetchButton.vue:55 +msgctxt "*/*/Error" +msgid "Unknowkn error" +msgstr "Unknown error" + +#: front/src/components/library/ImportStatusModal.vue:144 +msgctxt "Popup/Import/Error.Label" +msgid "Unkwown error" +msgstr "Unkwown error" #: front/src/components/Home.vue:37 +msgctxt "Content/Home/Title" msgid "Unlimited music" msgstr "Unlimited music" -#: front/src/components/audio/Player.vue:354 +#: front/src/components/audio/Player.vue:630 +msgctxt "Sidebar/Player/Icon.Tooltip/Verb" msgid "Unmute" msgstr "Unmute" -#: front/src/components/manage/moderation/InstancePolicyCard.vue:45 #: front/src/components/manage/moderation/InstancePolicyForm.vue:57 +msgctxt "Content/Moderation/Card.Button.Label/Verb" msgid "Update" msgstr "Update" +#: front/src/components/auth/ApplicationForm.vue:64 +msgctxt "Content/Applications/Button.Label/Verb" +msgid "Update application" +msgstr "Update application" + #: front/src/components/auth/Settings.vue:50 +msgctxt "Content/Settings/Button.Label/Verb" msgid "Update avatar" msgstr "Update avatar" #: front/src/views/content/libraries/Form.vue:25 +msgctxt "Content/Library/Button.Label/Verb" msgid "Update library" msgstr "Update library" -#: front/src/components/manage/moderation/InstancePolicyForm.vue:3 -msgid "Update moderation rule" -msgstr "Update moderation rule" - #: front/src/components/playlists/Form.vue:33 +msgctxt "Content/Playlist/Button.Label/Verb" msgid "Update playlist" msgstr "Update playlist" #: front/src/components/auth/Settings.vue:27 +msgctxt "Content/Settings/Button.Label/Verb" msgid "Update settings" msgstr "Update settings" #: front/src/views/auth/PasswordResetConfirm.vue:21 +msgctxt "Content/Signup/Button.Label" msgid "Update your password" msgstr "Update your password" -#: front/src/views/content/libraries/Card.vue:44 +#: front/src/views/content/libraries/Card.vue:45 #: front/src/views/content/libraries/DetailArea.vue:24 +msgctxt "Content/Library/Card.Button.Label/Verb" msgid "Upload" msgstr "Upload" #: front/src/components/auth/Settings.vue:45 +msgctxt "Content/Settings/Title/Verb" msgid "Upload a new avatar" msgstr "Upload a new avatar" #: front/src/views/content/Home.vue:6 +msgctxt "Content/Library/Title/Verb" msgid "Upload audio content" msgstr "Upload audio content" -#: front/src/views/content/libraries/FilesTable.vue:57 +#: front/src/views/admin/library/UploadDetail.vue:85 +msgctxt "Content/Moderation/Title" +msgid "Upload data" +msgstr "Upload data" + +#: front/src/views/content/libraries/FilesTable.vue:58 +msgctxt "*/*/*/Noun" msgid "Upload date" msgstr "Upload date" -#: front/src/components/library/FileUpload.vue:220 -#: front/src/components/library/FileUpload.vue:221 +#: front/src/components/library/FileUpload.vue:258 +msgctxt "Content/Library/Help text" msgid "Upload denied, ensure the file is not too big and that you have not reached your quota" -msgstr "" -"Upload denied, ensure the file is not too big and that you have not reached " -"your quota" +msgstr "Upload denied, ensure the file is not too big and that you have not reached your quota" + +#: front/src/components/library/ImportStatusModal.vue:8 +msgctxt "Popup/Import/Message" +msgid "Upload is still pending and will soon be processed by the server." +msgstr "Upload is still pending and will soon be processed by the server." #: front/src/views/content/Home.vue:7 +msgctxt "Content/Library/Paragraph" msgid "Upload music files (MP3, OGG, FLAC, etc.) from your personal library directly from your browser to enjoy them here." -msgstr "" -"Upload music files (MP3, OGG, FLAC, etc.) from your personal library " -"directly from your browser to enjoy them here." +msgstr "Upload music files (MP3, OGG, FLAC, etc.) from your personal library directly from your browser to enjoy them here." -#: front/src/components/library/FileUpload.vue:31 +#: front/src/components/library/FileUpload.vue:30 +msgctxt "Content/Library/Title/Verb" msgid "Upload new tracks" msgstr "Upload new tracks" -#: front/src/views/admin/moderation/AccountsDetail.vue:269 +#: front/src/views/admin/moderation/AccountsDetail.vue:298 +msgctxt "Content/Moderation/Table.Label/Noun" msgid "Upload quota" msgstr "Upload quota" -#: front/src/components/library/FileUpload.vue:229 +#: front/src/components/library/FileUpload.vue:267 +msgctxt "Content/Library/Help text" msgid "Upload timeout, please try again" msgstr "Upload timeout, please try again" -#: front/src/components/library/FileUpload.vue:100 +#: front/src/components/library/ImportStatusModal.vue:14 +msgctxt "Popup/Import/Message" +msgid "Upload was skipped because a similar one is already available in one of your libraries." +msgstr "Upload was skipped because a similar one is already available in one of your libraries." + +#: front/src/components/library/ImportStatusModal.vue:11 +msgctxt "Popup/Import/Message" +msgid "Upload was successfully processed by the server." +msgstr "Upload was successfully processed by the server." + +#: front/src/components/library/FileUpload.vue:109 +msgctxt "Content/Library/Table" msgid "Uploaded" msgstr "Uploaded" #: front/src/components/library/FileUpload.vue:5 +msgctxt "Content/Library/Tab.Title/Short" msgid "Uploading" msgstr "Uploading" -#: front/src/components/library/FileUpload.vue:103 +#: front/src/components/library/FileUpload.vue:112 +msgctxt "Content/Library/Table" msgid "Uploading…" msgstr "Uploading…" -#: front/src/components/manage/moderation/AccountsTable.vue:41 -#: front/src/components/mixins/Translations.vue:37 -#: front/src/views/admin/moderation/AccountsDetail.vue:305 -#: front/src/views/admin/moderation/DomainsDetail.vue:241 -#: front/src/components/mixins/Translations.vue:38 +#: front/src/views/admin/library/Base.vue:20 +#: front/src/views/admin/library/UploadsList.vue:24 +msgctxt "*/*/*" msgid "Uploads" msgstr "Uploads" +#: front/src/components/manage/moderation/AccountsTable.vue:41 +#: front/src/components/mixins/Translations.vue:63 +#: front/src/views/admin/library/AlbumDetail.vue:242 +#: front/src/views/admin/library/ArtistDetail.vue:231 +#: front/src/views/admin/library/LibraryDetail.vue:239 +#: front/src/views/admin/library/TrackDetail.vue:294 +#: front/src/views/admin/moderation/AccountsDetail.vue:337 +#: front/src/views/admin/moderation/DomainsDetail.vue:244 +#: front/src/components/mixins/Translations.vue:64 +msgctxt "Content/Moderation/Table.Label/Noun" +msgid "Uploads" +msgstr "Uploads" + +#: front/src/components/manage/library/LibrariesTable.vue:52 +msgctxt "Content/*/*/Noun" +msgid "Uploads" +msgstr "Uploads" + +#: front/src/components/auth/ApplicationForm.vue:16 +msgctxt "Content/Applications/Help Text" +msgid "Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is not served on the web." +msgstr "Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is not served on the web." + #: front/src/components/Footer.vue:16 +msgctxt "Footer/*/List item.Link" msgid "Use another instance" msgstr "Use another instance" #: front/src/views/auth/PasswordReset.vue:12 +msgctxt "Content/Signup/Paragraph" msgid "Use this form to request a password reset. We will send an email to the given address with instructions to reset your password." -msgstr "" -"Use this form to request a password reset. We will send an email to the " -"given address with instructions to reset your password." +msgstr "Use this form to request a password reset. We will send an email to the given address with instructions to reset your password." #: front/src/components/manage/moderation/InstancePolicyForm.vue:111 +msgctxt "Content/Moderation/Help text" msgid "Use this setting to temporarily enable/disable the policy without completely removing it." -msgstr "" -"Use this setting to temporarily enable/disable the policy without completely " -"removing it." +msgstr "Use this setting to temporarily enable/disable the policy without completely removing it." #: front/src/components/manage/users/InvitationsTable.vue:49 +msgctxt "Content/Admin/Table" msgid "Used" msgstr "Used" #: front/src/views/content/libraries/Detail.vue:26 +msgctxt "Content/Library/Table.Label" msgid "User" msgstr "User" #: front/src/components/instance/Stats.vue:5 +msgctxt "Content/About/Title/Noun" msgid "User activity" msgstr "User activity" -#: front/src/components/library/Album.vue:82 src/components/library/Artist.vue:60 -#: front/src/components/library/Track.vue:168 +#: front/src/components/library/AlbumDetail.vue:26 +#: front/src/components/library/ArtistDetail.vue:39 +#: front/src/components/library/TrackDetail.vue:79 +msgctxt "Content/*/Title/Noun" msgid "User libraries" msgstr "User libraries" #: front/src/components/library/Radios.vue:20 +msgctxt "Content/Radio/Title" msgid "User radios" msgstr "User radios" #: front/src/components/auth/Signup.vue:19 #: front/src/components/manage/users/UsersTable.vue:37 -#: front/src/components/mixins/Translations.vue:33 -#: front/src/views/admin/moderation/AccountsDetail.vue:85 -#: front/src/components/mixins/Translations.vue:34 +#: front/src/components/mixins/Translations.vue:59 +#: front/src/views/admin/moderation/AccountsDetail.vue:114 +#: front/src/components/mixins/Translations.vue:60 +msgctxt "Content/*/*" msgid "Username" msgstr "Username" #: front/src/components/auth/Login.vue:15 +msgctxt "Content/Login/Input.Label/Noun" msgid "Username or email" msgstr "Username or email" #: front/src/components/instance/Stats.vue:13 +msgctxt "Content/About/Paragraph/Unit" msgid "users" msgstr "users" -#: front/src/components/Sidebar.vue:91 +#: front/src/components/Sidebar.vue:102 #: front/src/components/manage/moderation/DomainsTable.vue:39 -#: front/src/components/mixins/Translations.vue:35 src/views/admin/Settings.vue:81 -#: front/src/views/admin/users/Base.vue:5 src/views/admin/users/UsersList.vue:3 -#: front/src/views/admin/users/UsersList.vue:21 -#: front/src/components/mixins/Translations.vue:36 +#: front/src/components/mixins/Translations.vue:61 +#: src/views/admin/Settings.vue:81 front/src/views/admin/users/Base.vue:5 +#: src/views/admin/users/UsersList.vue:21 +#: front/src/components/mixins/Translations.vue:62 +msgctxt "*/*/*/Noun" msgid "Users" msgstr "Users" #: front/src/components/Footer.vue:29 +msgctxt "Footer/*/Title" msgid "Using Funkwhale" msgstr "Using Funkwhale" #: front/src/components/Footer.vue:13 +msgctxt "Footer/*/List item" msgid "Version %{version}" msgstr "Version %{version}" #: front/src/views/content/libraries/Quota.vue:29 #: front/src/views/content/libraries/Quota.vue:56 #: front/src/views/content/libraries/Quota.vue:82 +msgctxt "Content/Library/Link/Verb" msgid "View files" msgstr "View files" -#: front/src/components/library/Album.vue:31 src/components/library/Artist.vue:35 -#: front/src/components/library/Track.vue:51 +#: front/src/components/library/AlbumBase.vue:81 +#: front/src/components/library/ArtistBase.vue:92 +#: front/src/components/library/TrackBase.vue:100 +#: front/src/views/admin/library/AlbumDetail.vue:42 +#: front/src/views/admin/library/ArtistDetail.vue:41 +#: front/src/views/admin/library/LibraryDetail.vue:34 +#: front/src/views/admin/library/LibraryDetail.vue:45 +#: front/src/views/admin/library/TrackDetail.vue:41 +#: front/src/views/admin/library/UploadDetail.vue:35 +#: front/src/views/admin/library/UploadDetail.vue:46 +#: front/src/views/admin/moderation/AccountsDetail.vue:37 +#: front/src/views/admin/moderation/AccountsDetail.vue:45 +msgctxt "Content/Moderation/Link/Verb" +msgid "View in Django's admin" +msgstr "View in Django's admin" + +#: front/src/components/library/AlbumBase.vue:61 +#: front/src/components/library/ArtistBase.vue:72 +#: front/src/components/library/TrackBase.vue:80 #: front/src/components/metadata/ArtistCard.vue:49 #: front/src/components/metadata/ReleaseCard.vue:53 +msgctxt "Content/*/*/Clickable, Verb" msgid "View on MusicBrainz" msgstr "View on MusicBrainz" -#: front/src/views/content/libraries/Form.vue:18 +#: front/src/components/manage/library/LibrariesTable.vue:11 +#: front/src/components/manage/library/LibrariesTable.vue:51 +#: front/src/components/manage/library/UploadsTable.vue:11 +#: front/src/components/manage/library/UploadsTable.vue:63 +#: front/src/views/admin/library/LibraryDetail.vue:94 +#: front/src/views/admin/library/UploadDetail.vue:101 +msgctxt "*/*/*" msgid "Visibility" msgstr "Visibility" -#: front/src/views/content/libraries/Card.vue:59 -msgid "Visibility: everyone on this instance" -msgstr "Visibility: everyone on this instance" +#: front/src/views/content/libraries/Form.vue:18 +msgctxt "Content/Library/Dropdown.Label" +msgid "Visibility" +msgstr "Visibility" -#: front/src/views/content/libraries/Card.vue:60 -msgid "Visibility: everyone, including other instances" -msgstr "Visibility: everyone, including other instances" - -#: front/src/views/content/libraries/Card.vue:58 -msgid "Visibility: nobody except me" -msgstr "Visibility: nobody except me" - -#: front/src/components/library/Album.vue:61 +#: front/src/components/library/AlbumDetail.vue:4 +msgctxt "Content/Album/" msgid "Volume %{ number }" msgstr "Volume %{ number }" -#: front/src/components/playlists/PlaylistModal.vue:20 -msgid "We cannot add the track to a playlist" -msgstr "We cannot add the track to a playlist" - -#: front/src/components/playlists/Form.vue:14 -msgid "We cannot create the playlist" -msgstr "We cannot create the playlist" - -#: front/src/components/auth/Signup.vue:13 -msgid "We cannot create your account" -msgstr "We cannot create your account" - -#: front/src/components/audio/Player.vue:64 -msgid "We cannot load this track" -msgstr "We cannot load this track" +#: front/src/components/federation/FetchButton.vue:69 +msgctxt "Popup/*/Loading.Title" +msgid "Waiting for result…" +msgstr "Waiting for result…" #: front/src/components/auth/Login.vue:7 +msgctxt "Content/Login/Error message.Title" msgid "We cannot log you in" msgstr "We cannot log you in" -#: front/src/components/auth/Settings.vue:38 -msgid "We cannot save your avatar" -msgstr "We cannot save your avatar" +#: front/src/components/auth/ApplicationForm.vue:3 +msgctxt "Content/*/Error message.Title" +msgid "We cannot save your changes" +msgstr "We cannot save your changes" -#: front/src/components/auth/Settings.vue:14 -msgid "We cannot save your settings" -msgstr "We cannot save your settings" - -#: front/src/components/Home.vue:127 +#: front/src/components/Home.vue:122 +msgctxt "Content/Home/List item" msgid "We do not track you or bother you with ads" msgstr "We do not track you or bother you with ads" -#: front/src/components/library/Track.vue:95 -msgid "We don't have any copyright information for this track" -msgstr "We don't have any copyright information for this track" - -#: front/src/components/library/Track.vue:106 -msgid "We don't have any licensing information for this track" -msgstr "We don't have any licensing information for this track" - -#: front/src/components/library/FileUpload.vue:40 +#: front/src/components/library/FileUpload.vue:39 +msgctxt "Content/Library/Link" msgid "We recommend using Picard for that purpose." msgstr "We recommend using Picard for that purpose." #: front/src/components/Home.vue:7 +msgctxt "Content/Home/Title" msgid "We think listening to music should be simple." msgstr "We think listening to music should be simple." -#: front/src/components/PageNotFound.vue:10 -msgid "We're sorry, the page you asked for does not exist:" -msgstr "We're sorry, the page you asked for does not exist:" - -#: front/src/components/Home.vue:153 +#: front/src/components/Home.vue:148 +msgctxt "Head/Home/Title" msgid "Welcome" msgstr "Welcome" #: front/src/components/Home.vue:5 +msgctxt "Content/Home/Title/Verb" msgid "Welcome on Funkwhale" -msgstr "Welcome to Funkwhale" +msgstr "Welcome on Funkwhale" #: front/src/components/Home.vue:24 +msgctxt "Content/Home/Title" msgid "Why funkwhale?" msgstr "Why funkwhale?" #: front/src/components/audio/EmbedWizard.vue:13 +msgctxt "Popup/Embed/Input.Label" msgid "Widget height" msgstr "Widget height" #: front/src/components/audio/EmbedWizard.vue:6 +msgctxt "Popup/Embed/Input.Label" msgid "Widget width" msgstr "Widget width" -#: front/src/components/Sidebar.vue:118 +#: front/src/components/auth/ApplicationForm.vue:157 +msgctxt "Content/OAuth Scopes/Label/Verb" +msgid "Write" +msgstr "Write" + +#: front/src/components/auth/Authorize.vue:21 +msgctxt "Content/Auth/Label/Noun" +msgid "Write-only" +msgstr "Write-only" + +#: front/src/components/auth/ApplicationForm.vue:158 +msgctxt "Content/OAuth Scopes/Help Text" +msgid "Write-only access to user data" +msgstr "Write-only access to user data" + +#: front/src/components/Sidebar.vue:129 #: front/src/components/manage/moderation/AccountsTable.vue:72 #: front/src/components/manage/moderation/DomainsTable.vue:58 +msgctxt "*/*/*" msgid "Yes" msgstr "Yes" #: front/src/components/auth/Logout.vue:8 +msgctxt "Content/Login/Button.Label" msgid "Yes, log me out!" msgstr "Yes, log me out!" #: front/src/views/content/libraries/Form.vue:19 +msgctxt "Content/Library/Paragraph" msgid "You are able to share your library with other people, regardless of its visibility." -msgstr "" -"You are able to share your library with other people, regardless of its " -"visibility." +msgstr "You are able to share your library with other people, regardless of its visibility." -#: front/src/components/library/FileUpload.vue:33 +#: front/src/components/library/FileUpload.vue:32 +msgctxt "Content/Library/Paragraph" msgid "You are about to upload music to your library. Before proceeding, please ensure that:" -msgstr "" -"You are about to upload music to your library. Before proceeding, please " -"ensure that:" +msgstr "You are about to upload music to your library. Before proceeding, please ensure that:" + +#: front/src/components/SetInstanceModal.vue:12 +msgctxt "Popup/Login/Paragraph" +msgid "You are currently connected to %{ hostname } . If you continue, you will be disconnected from your current instance and all your local data will be deleted." +msgstr "You are currently connected to %{ hostname } . If you continue, you will be disconnected from your current instance and all your local data will be deleted." + +#: front/src/components/library/ArtistDetail.vue:6 +msgctxt "Content/Artist/Paragraph" +msgid "You are currently hiding content related to this artist." +msgstr "You are currently hiding content related to this artist." #: front/src/components/auth/Logout.vue:7 +msgctxt "Content/Login/Paragraph" msgid "You are currently logged in as %{ username }" msgstr "You are currently logged in as %{ username }" -#: front/src/views/content/Home.vue:17 -msgid "You can follow libraries from other users to get access to new music. Public libraries can be followed immediatly, while following a private library requires approval from its owner." -msgstr "" -"You can follow libraries from other users to get access to new music. Public " -"libraries can be followed immediately, while following a private library " -"requires approval from its owner." +#: front/src/components/library/FileUpload.vue:35 +msgctxt "Content/Library/List item" +msgid "You are not uploading copyrighted content in a public library, otherwise you may be infringing the law" +msgstr "You are not uploading copyrighted content in a public library, otherwise you may be infringing the law" -#: front/src/components/Home.vue:133 +#: front/src/components/SetInstanceModal.vue:98 +msgctxt "*/Instance/Message" +msgid "You are now using the Funkwhale instance at %{ url }" +msgstr "You are now using the Funkwhale instance at %{ url }" + +#: front/src/views/content/Home.vue:17 +msgctxt "Content/Library/Paragraph" +msgid "You can follow libraries from other users to get access to new music. Public libraries can be followed immediatly, while following a private library requires approval from its owner." +msgstr "You can follow libraries from other users to get access to new music. Public libraries can be followed immediatly, while following a private library requires approval from its owner." + +#: front/src/components/Home.vue:128 +msgctxt "Content/Home/List item" msgid "You can invite friends and family to your instance so they can enjoy your music" -msgstr "" -"You can invite friends and family to your instance so they can enjoy your " -"music" +msgstr "You can invite friends and family to your instance so they can enjoy your music" + +#: front/src/components/moderation/FilterModal.vue:31 +msgctxt "Popup/Moderation/Paragraph" +msgid "You can manage and update your filters anytime from your account settings." +msgstr "You can manage and update your filters anytime from your account settings." #: front/src/views/auth/EmailConfirm.vue:24 +msgctxt "Content/Signup/Paragraph" msgid "You can now use the service without limitations." msgstr "You can now use the service without limitations." #: front/src/components/library/radios/Builder.vue:7 +msgctxt "Content/Radio/Paragraph" msgid "You can use this interface to build your own custom radio, which will play tracks according to your criteria." -msgstr "" -"You can use this interface to build your own custom radio, which will play " -"tracks according to your criteria." +msgstr "You can use this interface to build your own custom radio, which will play tracks according to your criteria." #: front/src/components/auth/SubsonicTokenForm.vue:7 +msgctxt "Content/Settings/Paragraph" msgid "You can use those to enjoy your playlist and music in offline mode, on your smartphone or tablet, for instance." -msgstr "" -"You can use those to enjoy your playlist and music in offline mode, on your " -"smartphone or tablet, for instance." +msgstr "You can use those to enjoy your playlist and music in offline mode, on your smartphone or tablet, for instance." -#: front/src/views/admin/moderation/AccountsDetail.vue:46 +#: front/src/components/auth/Settings.vue:202 +msgctxt "Content/Applications/Paragraph" +msgid "You don't have any application connected with your account." +msgstr "You don't have any application connected with your account." + +#: front/src/components/auth/Settings.vue:261 +msgctxt "Content/Applications/Paragraph" +msgid "You don't have any configured application yet." +msgstr "You don't have any configured application yet." + +#: front/src/views/admin/moderation/AccountsDetail.vue:75 +msgctxt "Content/Moderation/Card.Title" msgid "You don't have any rule in place for this account." msgstr "You don't have any rule in place for this account." #: front/src/views/admin/moderation/DomainsDetail.vue:39 +msgctxt "Content/Moderation/Card.Title" msgid "You don't have any rule in place for this domain." msgstr "You don't have any rule in place for this domain." -#: front/src/components/Sidebar.vue:158 +#: front/src/components/library/EditForm.vue:52 +msgctxt "Content/Library/Paragraph" +msgid "You don't have the permission to edit this object, but you can suggest changes. Once submitted, suggestions will be reviewed before approval." +msgstr "You don't have the permission to edit this object, but you can suggest changes. Once submitted, suggestions will be reviewed before approval." + +#: front/src/components/Sidebar.vue:171 +msgctxt "Sidebar/Player/Title" msgid "You have a radio playing" msgstr "You have a radio playing" -#: front/src/components/audio/Player.vue:71 +#: front/src/components/audio/Player.vue:69 +msgctxt "Sidebar/Player/Error message.Paragraph" msgid "You may have a connectivity issue." msgstr "You may have a connectivity issue." -#: front/src/App.vue:17 -msgid "You need to select an instance in order to continue" -msgstr "You need to select an instance in order to continue" - -#: front/src/components/auth/Settings.vue:99 +#: front/src/components/auth/Settings.vue:100 +msgctxt "Popup/Settings/List item" msgid "You will be logged out from this session and have to log in with the new one" -msgstr "" -"You will be logged out from this session and have to log in with the new one" +msgstr "You will be logged out from this session and have to log in with the new one" -#: front/src/components/auth/Settings.vue:70 +#: front/src/components/auth/Authorize.vue:51 +msgctxt "Content/Auth/Paragraph" +msgid "You will be redirected to %{ url }" +msgstr "You will be redirected to %{ url }" + +#: front/src/components/auth/Authorize.vue:49 +msgctxt "Content/Auth/Paragraph" +msgid "You will be shown a code to copy-paste in the application." +msgstr "You will be shown a code to copy-paste in the application." + +#: front/src/components/auth/Settings.vue:71 +msgctxt "Content/Settings/Paragraph" msgid "You will have to update your password on your clients that use this password." -msgstr "" -"You will have to update your password on your clients that use this password." +msgstr "You will have to update your password on your clients that use this password." -#: front/src/components/favorites/List.vue:115 +#: front/src/components/moderation/FilterModal.vue:20 +msgctxt "Popup/Moderation/Paragraph" +msgid "You will not see tracks, albums and user activity linked to this artist anymore:" +msgstr "You will not see tracks, albums and user activity linked to this artist anymore:" + +#: front/src/components/auth/Signup.vue:13 +msgctxt "Content/Signup/Form/Paragraph" +msgid "Your account cannot be created." +msgstr "Your account cannot be created." + +#: front/src/components/auth/Settings.vue:215 +msgctxt "Content/Settings/Title/Noun" +msgid "Your applications" +msgstr "Your applications" + +#: front/src/components/auth/Settings.vue:38 +msgctxt "Content/Settings/Error message.Title" +msgid "Your avatar cannot be saved" +msgstr "Your avatar cannot be saved" + +#: front/src/components/library/EditForm.vue:3 +msgctxt "Content/Library/Paragraph" +msgid "Your edit was successfully submitted." +msgstr "Your edit was successfully submitted." + +#: front/src/components/favorites/List.vue:116 +msgctxt "Head/Favorites/Title" msgid "Your Favorites" -msgstr "Your Favourites" +msgstr "Your Favorites" -#: front/src/components/Home.vue:114 +#: front/src/components/Home.vue:109 +msgctxt "Content/Home/Title" msgid "Your music, your way" msgstr "Your music, your way" -#: front/src/views/Notifications.vue:7 +#: front/src/views/Notifications.vue:4 +msgctxt "Content/Notifications/Title" msgid "Your notifications" msgstr "Your notifications" +#: front/src/components/auth/Settings.vue:76 +msgctxt "Content/Settings/Error message.Title" +msgid "Your password cannot be changed" +msgstr "Your password cannot be changed" + #: front/src/views/auth/PasswordResetConfirm.vue:29 +msgctxt "Content/Signup/Card.Paragraph" msgid "Your password has been updated successfully." msgstr "Your password has been updated successfully." -#: front/src/components/auth/Settings.vue:100 +#: front/src/components/auth/Settings.vue:14 +msgctxt "Content/Settings/Error message.Title" +msgid "Your settings can't be updateds" +msgstr "Your settings can't be updateds" + +#: front/src/components/auth/Settings.vue:101 +msgctxt "Popup/Settings/List item" msgid "Your Subsonic password will be changed to a new, random one, logging you out from devices that used the old Subsonic password" -msgstr "" -"Your Subsonic password will be changed to a new, random one, logging you out " -"from devices that used the old Subsonic password" +msgstr "Your Subsonic password will be changed to a new, random one, logging you out from devices that used the old Subsonic password" + +#: front/src/edits.js:47 +msgctxt "*/*/*/Short, Noun" +msgid "Position" +msgstr "Position" + +#: front/src/edits.js:54 +msgctxt "Content/Track/*/Noun" +msgid "Copyright" +msgstr "Copyright" + +#: front/src/components/library/AlbumBase.vue:183 +msgctxt "Content/Album/Header.Title" +msgid "Album containing %{ count } track, by %{ artist }" +msgid_plural "Album containing %{ count } tracks, by %{ artist }" +msgstr[0] "Album containing %{ count } track, by %{ artist }" +msgstr[1] "Album containing %{ count } tracks, by %{ artist }" + +#: front/src/components/audio/PlayButton.vue:220 +msgctxt "*/Queue/Message" +msgid "%{ count } track was added to your queue" +msgid_plural "%{ count } tracks were added to your queue" +msgstr[0] "%{ count } track was added to your queue" +msgstr[1] "%{ count } tracks were added to your queue" diff --git a/front/src/locales.js b/front/src/locales.js index 287581217..a31efeba0 100644 --- a/front/src/locales.js +++ b/front/src/locales.js @@ -8,9 +8,18 @@ export default { { "code": "en_US", "label": "English (United-States)" - },{ - "code": "eo", - "label": "Esperanto" + }, + { + "code": "en_GB", + "label": "English (UK)" + }, + { + "code": "ca", + "label": "Català" + }, + { + "code": "cs", + "label": "Čeština" }, { "code": "de", From 4ab490eb69cfb7412895316eee3224996b668593 Mon Sep 17 00:00:00 2001 From: Eliot Berriot Date: Fri, 7 Jun 2019 16:41:50 +0200 Subject: [PATCH 013/291] Added username and domain filter on /history/listenings endpoint --- api/funkwhale_api/history/filters.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/api/funkwhale_api/history/filters.py b/api/funkwhale_api/history/filters.py index 30bc78f6a..02549b3b1 100644 --- a/api/funkwhale_api/history/filters.py +++ b/api/funkwhale_api/history/filters.py @@ -1,9 +1,14 @@ +import django_filters + from funkwhale_api.moderation import filters as moderation_filters from . import models class ListeningFilter(moderation_filters.HiddenContentFilterSet): + username = django_filters.CharFilter("user__username") + domain = django_filters.CharFilter("user__actor__domain_id") + class Meta: model = models.Listening hidden_content_fields_mapping = moderation_filters.USER_FILTER_CONFIG[ From bc67779303e5ea8bc4fc7552cd7c66e9dc265cd0 Mon Sep 17 00:00:00 2001 From: Creak Date: Sat, 8 Jun 2019 21:03:18 +0200 Subject: [PATCH 014/291] Fix French translation for "Start radio" --- changes/changelog.d/849.bugfix | 1 + front/locales/fr_FR/LC_MESSAGES/app.po | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 changes/changelog.d/849.bugfix diff --git a/changes/changelog.d/849.bugfix b/changes/changelog.d/849.bugfix new file mode 100644 index 000000000..61f1c2a2e --- /dev/null +++ b/changes/changelog.d/849.bugfix @@ -0,0 +1 @@ +Fixed issue with French translation for "Start radio" (#849) diff --git a/front/locales/fr_FR/LC_MESSAGES/app.po b/front/locales/fr_FR/LC_MESSAGES/app.po index c93e5d43f..bb9db8d34 100644 --- a/front/locales/fr_FR/LC_MESSAGES/app.po +++ b/front/locales/fr_FR/LC_MESSAGES/app.po @@ -3986,7 +3986,7 @@ msgstr "Membre de l'équipe" #: src/components/radios/Button.vue:4 msgctxt "*/Queue/Button.Label/Short, Verb" msgid "Start radio" -msgstr "Arrêter la radio" +msgstr "Démarrer la radio" #: front/src/views/admin/Settings.vue:86 msgctxt "Content/Admin/Menu" From aa5fd6b2b7be5c8bc6044b4994a22a374a07b84a Mon Sep 17 00:00:00 2001 From: ealgase Date: Sun, 9 Jun 2019 21:54:18 +0200 Subject: [PATCH 015/291] Fix websockets reverse proxy --- deploy/apache.conf | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/deploy/apache.conf b/deploy/apache.conf index e1409a627..3b34dcdba 100644 --- a/deploy/apache.conf +++ b/deploy/apache.conf @@ -64,11 +64,6 @@ Define MUSIC_DIRECTORY_PATH /srv/funkwhale/data/music Allow from all - # Activating WebSockets - - ProxyPass ${funkwhale-api-ws}/api/v1/activity - - # similar to nginx 'client_max_body_size 100M;' LimitRequestBody 104857600 @@ -107,6 +102,11 @@ Define MUSIC_DIRECTORY_PATH /srv/funkwhale/data/music Alias /staticfiles /srv/funkwhale/data/static + # Activating WebSockets + + ProxyPass ${funkwhale-api-ws}/api/v1/activity + + # Setting appropriate access levels to serve frontend Options FollowSymLinks From 8394abe15a3e4385201af2dee15569bb7e1def22 Mon Sep 17 00:00:00 2001 From: Eliot Berriot Date: Mon, 10 Jun 2019 15:28:09 +0200 Subject: [PATCH 016/291] Fix #834: Simplified embedded docker reverse proxy IP configuration --- changes/changelog.d/834.enhancement | 1 + deploy/docker.funkwhale_proxy.conf | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 changes/changelog.d/834.enhancement diff --git a/changes/changelog.d/834.enhancement b/changes/changelog.d/834.enhancement new file mode 100644 index 000000000..58ab1161e --- /dev/null +++ b/changes/changelog.d/834.enhancement @@ -0,0 +1 @@ +Simplified embedded docker reverse proxy IP configuration (#834) diff --git a/deploy/docker.funkwhale_proxy.conf b/deploy/docker.funkwhale_proxy.conf index a1b0a31e5..dccc782f2 100644 --- a/deploy/docker.funkwhale_proxy.conf +++ b/deploy/docker.funkwhale_proxy.conf @@ -4,10 +4,9 @@ # at https://dev.funkwhale.audio/funkwhale/funkwhale/blob/develop/deploy/funkwhale_proxy.conf # your proxy will also need to support websockets -real_ip_header X-Forwarded-For; -set_real_ip_from 172.17.0.0/16; +proxy_set_header Host $host; +proxy_set_header X-Real-IP $remote_addr; -proxy_set_header Host $http_x_forwarded_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto; proxy_set_header X-Forwarded-Host $http_x_forwarded_host; From 2bc119e3537aff856575c6dcb190d3feacb9f2e3 Mon Sep 17 00:00:00 2001 From: Eliot Berriot Date: Thu, 13 Jun 2019 14:09:07 +0200 Subject: [PATCH 017/291] Restored review app for front-end --- .gitlab-ci.yml | 81 ++++++++------------------------------- front/src/router/index.js | 6 +++ front/vue.config.js | 2 +- 3 files changed, 22 insertions(+), 67 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8bab09fdb..f02a194a0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -20,91 +20,40 @@ review_front: image: node:9 when: manual allow_failure: true + variables: + BASE_URL: /-/$CI_PROJECT_NAME/-/jobs/$CI_JOB_ID/artifacts/front-review/ + VUE_APP_ROUTER_BASE_URL: /-/$CI_PROJECT_NAME/-/jobs/$CI_JOB_ID/artifacts/front-review/ + VUE_APP_INSTANCE_URL: $REVIEW_INSTANCE_URL before_script: - curl -L -o /usr/local/bin/jq https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64 - chmod +x /usr/local/bin/jq + - rm -rf front-review + - mkdir front-review - cd front script: - yarn install - yarn run i18n-compile # this is to ensure we don't have any errors in the output, # cf https://dev.funkwhale.audio/funkwhale/funkwhale/issues/169 - - VUE_APP_INSTANCE_URL=$REVIEW_INSTANCE_URL yarn run build | tee /dev/stderr | (! grep -i 'ERROR in') - - mkdir -p /static/front/$CI_PROJECT_PATH_SLUG-$CI_BUILD_REF_SLUG - - cp -r dist/* /static/front/$CI_PROJECT_PATH_SLUG-$CI_BUILD_REF_SLUG + - yarn run build | tee /dev/stderr | (! grep -i 'ERROR in') + - cp -r dist/* ../front-review + artifacts: + expire_in: 2 weeks + paths: + - front-review cache: key: "funkwhale__front_dependencies" paths: - front/node_modules - front/yarn.lock - environment: - name: review/front/$CI_PROJECT_PATH_SLUG-$CI_BUILD_REF_SLUG - url: http://front-$CI_PROJECT_PATH_SLUG-$CI_BUILD_REF_SLUG.$REVIEW_DOMAIN - on_stop: stop_front_review only: - branches tags: - - funkwhale-review - -stop_front_review: - stage: review - script: - - rm -rf /static/front/$CI_PROJECT_PATH_SLUG-$CI_BUILD_REF_SLUG/ - variables: - GIT_STRATEGY: none - when: manual - only: - - branches + - docker environment: - name: review/front/$CI_PROJECT_PATH_SLUG-$CI_BUILD_REF_SLUG - action: stop - tags: - - funkwhale-review + name: review/front/$CI_COMMIT_REF_NAME + url: http://$CI_PROJECT_NAMESPACE.pages.funkwhale.audio/-/$CI_PROJECT_NAME/-/jobs/$CI_JOB_ID/artifacts/front-review/index.html -review_docs: - stage: review - image: python:3.6 - when: manual - allow_failure: true - variables: - BUILD_PATH: "../public" - before_script: - - cd docs - - apt-get update - - apt-get install -y graphviz - - pip install sphinx - - cache: - key: "$CI_PROJECT_ID__sphinx" - paths: - - "$PIP_CACHE_DIR" - script: - - ./build_docs.sh - - mkdir -p /static/docs/$CI_PROJECT_PATH_SLUG-$CI_BUILD_REF_SLUG - - cp -r $CI_PROJECT_DIR/public/* /static/docs/$CI_PROJECT_PATH_SLUG-$CI_BUILD_REF_SLUG - environment: - name: review/docs/$CI_PROJECT_PATH_SLUG-$CI_BUILD_REF_SLUG - url: http://docs-$CI_PROJECT_PATH_SLUG-$CI_BUILD_REF_SLUG.$REVIEW_DOMAIN - on_stop: stop_docs_review - only: - - branches - tags: - - funkwhale-review - -stop_docs_review: - stage: review - script: - - rm -rf /static/docs/$CI_PROJECT_PATH_SLUG-$CI_BUILD_REF_SLUG/ - variables: - GIT_STRATEGY: none - when: manual - only: - - branches - environment: - name: review/docs/$CI_PROJECT_PATH_SLUG-$CI_BUILD_REF_SLUG - action: stop - tags: - - funkwhale-review black: image: python:3.6 diff --git a/front/src/router/index.js b/front/src/router/index.js index 182cf61b0..6a9ba6112 100644 --- a/front/src/router/index.js +++ b/front/src/router/index.js @@ -3,9 +3,11 @@ import Router from 'vue-router' Vue.use(Router) +console.log('PROCESS', process.env) export default new Router({ mode: 'history', linkActiveClass: 'active', + base: process.env.VUE_APP_ROUTER_BASE_URL || '/', routes: [ { path: '/', @@ -552,6 +554,10 @@ export default new Router({ }, ] }, + { + path: '*/index.html', + redirect: '/' + }, { path: '*', component: () => diff --git a/front/vue.config.js b/front/vue.config.js index c397f824a..4b1d9f5d4 100644 --- a/front/vue.config.js +++ b/front/vue.config.js @@ -10,7 +10,7 @@ if (process.env.BUNDLE_ANALYZE === '1') { plugins.push(new BundleAnalyzerPlugin()) } module.exports = { - baseUrl: '/front/', + baseUrl: process.env.BASE_URL || '/front/', pages: { embed: { entry: 'src/embed.js', From a6f5dd026c6a0026c3ba430776bee49f3ed0e585 Mon Sep 17 00:00:00 2001 From: Eliot Berriot Date: Thu, 13 Jun 2019 14:50:31 +0200 Subject: [PATCH 018/291] Restored review app for docs --- .gitlab-ci.yml | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f02a194a0..cc53bc652 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -55,6 +55,39 @@ review_front: url: http://$CI_PROJECT_NAMESPACE.pages.funkwhale.audio/-/$CI_PROJECT_NAME/-/jobs/$CI_JOB_ID/artifacts/front-review/index.html +review_docs: + stage: review + when: manual + allow_failure: true + image: python:3.6 + variables: + BUILD_PATH: "../docs-review" + before_script: + - rm -rf docs-review + - mkdir docs-review + - cd docs + - apt-get update + - apt-get install -y graphviz + - pip install sphinx + script: + - ./build_docs.sh + cache: + key: "$CI_PROJECT_ID__sphinx" + paths: + - "$PIP_CACHE_DIR" + artifacts: + expire_in: 2 weeks + paths: + - docs-review + only: + - branches + tags: + - docker + environment: + name: review/docs/$CI_COMMIT_REF_NAME + url: http://$CI_PROJECT_NAMESPACE.pages.funkwhale.audio/-/$CI_PROJECT_NAME/-/jobs/$CI_JOB_ID/artifacts/docs-review/index.html + + black: image: python:3.6 stage: lint From a28acb8353fee596dcd26a5b162c61a17e2bdc68 Mon Sep 17 00:00:00 2001 From: Ciaran Ainsworth Date: Sun, 16 Jun 2019 16:23:12 +0100 Subject: [PATCH 019/291] Added buttons to search for objects on Discogs --- changes/changelog.d/368.enhancement | 1 + front/src/components/library/AlbumBase.vue | 13 ++++++++++++- front/src/components/library/ArtistBase.vue | 10 ++++++++++ front/src/components/library/TrackBase.vue | 12 ++++++++++++ 4 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 changes/changelog.d/368.enhancement diff --git a/changes/changelog.d/368.enhancement b/changes/changelog.d/368.enhancement new file mode 100644 index 000000000..7e8f78c0a --- /dev/null +++ b/changes/changelog.d/368.enhancement @@ -0,0 +1 @@ +Added button to search for objects on Discogs (#368) diff --git a/front/src/components/library/AlbumBase.vue b/front/src/components/library/AlbumBase.vue index 1f89bef88..2b3c978bc 100644 --- a/front/src/components/library/AlbumBase.vue +++ b/front/src/components/library/AlbumBase.vue @@ -61,7 +61,11 @@ View on MusicBrainz - + + Search on Discogs + + @@ -168,6 +172,13 @@ export default { return "https://musicbrainz.org/release/" + this.object.mbid } }, + discogsUrl() { + return ( + "https://discogs.com/search/?type=release&title=" + + encodeURI(this.object.title) + "&artist=" + + encodeURI(this.object.artist.name) + ) + }, headerStyle() { if (!this.object.cover.original) { return "" diff --git a/front/src/components/library/ArtistBase.vue b/front/src/components/library/ArtistBase.vue index 5da7370ba..3c21f603f 100644 --- a/front/src/components/library/ArtistBase.vue +++ b/front/src/components/library/ArtistBase.vue @@ -72,6 +72,10 @@ View on MusicBrainz + + + Search on Discogs + { diff --git a/front/src/components/library/TrackBase.vue b/front/src/components/library/TrackBase.vue index 639c8f51b..a968f8b0c 100644 --- a/front/src/components/library/TrackBase.vue +++ b/front/src/components/library/TrackBase.vue @@ -80,6 +80,10 @@ View on MusicBrainz + + + Search on Discogs + Date: Mon, 17 Jun 2019 08:45:31 +0200 Subject: [PATCH 020/291] Fix #756: Dark Theme --- changes/changelog.d/756.feature | 1 + front/public/index.html | 2 +- front/src/App.vue | 8 + front/src/components/Footer.vue | 29 ++- .../notifications/NotificationRow.vue | 3 - front/src/components/playlists/Card.vue | 6 +- front/src/store/index.js | 2 +- front/src/store/ui.js | 4 + front/src/style/_main.scss | 18 +- front/src/style/themes/_dark.scss | 222 ++++++++++++++++++ front/src/style/themes/_light.scss | 35 +++ 11 files changed, 303 insertions(+), 27 deletions(-) create mode 100644 changes/changelog.d/756.feature create mode 100644 front/src/style/themes/_dark.scss create mode 100644 front/src/style/themes/_light.scss diff --git a/changes/changelog.d/756.feature b/changes/changelog.d/756.feature new file mode 100644 index 000000000..402b0e589 --- /dev/null +++ b/changes/changelog.d/756.feature @@ -0,0 +1 @@ +Dark theme (#756) diff --git a/front/public/index.html b/front/public/index.html index 7b09feaf0..142419ca6 100644 --- a/front/public/index.html +++ b/front/public/index.html @@ -9,7 +9,7 @@ Funkwhale - + diff --git a/front/src/App.vue b/front/src/App.vue index 5711466c5..e401d475e 100644 --- a/front/src/App.vue +++ b/front/src/App.vue @@ -251,6 +251,14 @@ export default { this.$store.dispatch('instance/fetchSettings') this.fetchNodeInfo() }, + '$store.state.ui.theme': { + immediate: true, + handler (newValue, oldValue) { + let oldTheme = oldValue || 'light' + document.body.classList.remove(`theme-${oldTheme}`) + document.body.classList.add(`theme-${newValue}`) + }, + }, '$store.state.auth.authenticated' (newValue) { if (!newValue) { this.disconnect() diff --git a/front/src/components/Footer.vue b/front/src/components/Footer.vue index 2d06b50c7..d758b456b 100644 --- a/front/src/components/Footer.vue +++ b/front/src/components/Footer.vue @@ -33,6 +33,14 @@ Mobile and desktop apps
Keyboard shortcuts
+
+
+ + +
+

Getting help

@@ -76,15 +84,18 @@ export default { parser.href = url return parser.hostname }, + themes () { + return [ + { + name: this.$pgettext('Footer/Settings/Dropdown.Label/Theme name', 'Light'), + key: 'light' + }, + { + name: this.$pgettext('Footer/Settings/Dropdown.Label/Theme name', 'Dark'), + key: 'dark' + } + ] + } } } - diff --git a/front/src/components/notifications/NotificationRow.vue b/front/src/components/notifications/NotificationRow.vue index b8e145647..95f8e3644 100644 --- a/front/src/components/notifications/NotificationRow.vue +++ b/front/src/components/notifications/NotificationRow.vue @@ -126,7 +126,4 @@ export default { .read > span { cursor: pointer; } -.disabled-row { - color: rgba(40, 40, 40, 0.3); -} diff --git a/front/src/components/playlists/Card.vue b/front/src/components/playlists/Card.vue index 60a322ab4..6efc2350e 100644 --- a/front/src/components/playlists/Card.vue +++ b/front/src/components/playlists/Card.vue @@ -59,12 +59,10 @@ export default { diff --git a/front/src/store/index.js b/front/src/store/index.js index 791dbb1e9..126368e23 100644 --- a/front/src/store/index.js +++ b/front/src/store/index.js @@ -40,7 +40,7 @@ export default new Vuex.Store({ }), createPersistedState({ key: 'ui', - paths: ['ui.currentLanguage', 'ui.momentLocale'] + paths: ['ui.currentLanguage', 'ui.momentLocale', 'ui.theme'] }), createPersistedState({ key: 'radios', diff --git a/front/src/store/ui.js b/front/src/store/ui.js index 8a8bc1da0..d13a92d88 100644 --- a/front/src/store/ui.js +++ b/front/src/store/ui.js @@ -10,6 +10,7 @@ export default { maxMessages: 100, messageDisplayDuration: 10000, messages: [], + theme: 'light', notifications: { inbox: 0, pendingReviewEdits: 0, @@ -39,6 +40,9 @@ export default { computeLastDate: (state) => { state.lastDate = new Date() }, + theme: (state, value) => { + state.theme = value + }, addMessage (state, message) { state.messages.push(message) if (state.messages.length > state.maxMessages) { diff --git a/front/src/style/_main.scss b/front/src/style/_main.scss index 8f8ee8b16..bc527415c 100644 --- a/front/src/style/_main.scss +++ b/front/src/style/_main.scss @@ -10,6 +10,10 @@ Import this file into your LESS project to use Semantic UI without build tools */ +// Those semantic-ui-css/*.scss don't exist in the package, but we create them +// via scripts/link-scss-files.sh on postinstall, so we can include theme +// under a class namespace + /* Global */ @import "~semantic-ui-css/components/reset.css"; // we use our custom site css here to avoid loading google font @@ -96,6 +100,7 @@ body { #app > main, #app > .main { flex: 1; } + .instance-chooser { margin-top: 2em; } @@ -126,14 +131,10 @@ body { margin-left: 0; margin-right: 0; border: none; - box-shadow: inset 0px -2px 0px 0px rgba(34, 36, 38, 0.15); .ui.item { border: none; border-bottom-style: none; margin-bottom: 0px; - &.active { - box-shadow: inset 0px -2px 0px 0px #000; - } } @include media(">tablet") { padding: 0 2.5rem; @@ -148,7 +149,6 @@ body { @include media(">widedesktop") { left: $widedesktop-sidebar-width; } - background-color: white; .item { padding-top: 1.5em; padding-bottom: 1.5em; @@ -208,9 +208,6 @@ body { } } -.discrete { - color: rgba(0, 0, 0, 0.87); -} .link { cursor: pointer; } @@ -355,3 +352,8 @@ input + .help { .table td .ui.dropdown { min-width: 150px; } + + + +@import "./themes/_light.scss"; +@import "./themes/_dark.scss"; diff --git a/front/src/style/themes/_dark.scss b/front/src/style/themes/_dark.scss new file mode 100644 index 000000000..f612914ca --- /dev/null +++ b/front/src/style/themes/_dark.scss @@ -0,0 +1,222 @@ +$background-color: rgb(43, 58, 66); +$button-hover-color: rgb(33, 48, 56); +$light-background-color: rgb(51, 71, 82); +$input-background-color: rgb(189, 211, 222); +$loading-background-color: rgba(43, 58, 66, 0.9); +$text-color: rgb(223, 235, 240); +$discrete-text-color: rgba(223, 235, 240, 0.904); +$border-color: rgb(63, 88, 102); +$light-shadow-color: rgba(223, 235, 240, 0.15); +$shadow-color: rgba(63, 102, 97, 0.95); +$box-shadow: 0px 1px 3px 0px rgba(63, 88, 102, 0.95), 0px 0px 0px 1px rgba(63, 88, 102, 0.98); +$link-color: rgb(255, 144, 0); + +.theme-dark { + background-color: $background-color; + .ui.labeled.input { + input, .label { + background-color: $input-background-color; + &::placeholder { + color: $light-background-color; + + } + + } + } + .ui.statistics .statistic { + > .label, > .value { + color: $text-color; + } + } + .ui.link.list.list .active.item, .ui.link.list.list .active.item a:not(.ui) { + color: inherit; + } + .ui.form textarea, .ui.form select, .ui.selection.dropdown, .ui.dropdown.selected, .ui.dropdown .menu .selected.item, .ui.form input:not([type]), .ui.form input[type="date"], .ui.form input[type="datetime-local"], .ui.form input[type="email"], .ui.form input[type="number"], .ui.form input[type="password"], .ui.form input[type="search"], .ui.form input[type="tel"], .ui.form input[type="time"], .ui.form input[type="text"], .ui.form input[type="file"], .ui.form input[type="url"] { + background-color: $input-background-color; + &::placeholder { + color: $light-background-color; + + } + } + .ui.dropdown .menu .item:hover { + background-color: $light-background-color; + color: $text-color; + + } + .main.pusher > .ui.secondary.menu { + background-color: $background-color; + box-shadow: inset 0px -2px 0px 0px $light-background-color; + .ui.item { + color: $text-color; + &.active { + box-shadow: inset 0px -2px 0px 0px $shadow-color; + } + } + } + .ui.modal { + > .header, > .content, > .actions { + background-color: $background-color; + } + > .header { + border-bottom: 1px solid $border-color; + } + + > .actions { + border-top: 1px solid $border-color; + } + } + main, .main, footer, .modal { + + .ui.menu { + background-color: $light-background-color; + .item { + + color: $text-color; + } + } + .ui.secondary.menu .dropdown.item:hover, .ui.secondary.menu .link.item:hover, .ui.secondary.menu a.item:hover { + background: $background-color; + color: $text-color; + } + .header, .ui.form .field > label, .sub.header { + color: $text-color; + } + .ui.attached.header { + background-color: transparent; + } + .ui.toggle.checkbox input:checked ~ .box, .ui.toggle.checkbox input:checked ~ label { + color: $text-color !important; + } + .ui.toggle.checkbox .box::before, .ui.toggle.checkbox label::before { + background-color: $light-background-color; + } + a:not(.ui):not(.discrete) { + color: $link-color; + } + .ui.segment:not(.basic) { + background-color: $light-background-color; + } + .ui.list, .ui.dropdown { + .item, div.item, a.item, .button.item { + background-color: $background-color; + color: $discrete-text-color; + } + .selected.item:not(:hover) { + color: $background-color; + } + } + .ui.divided.items > .item:not(:first-child) { + border-top: 1px solid $border-color; + } + .ui.items { + .extra { + color: $discrete-text-color; + } + } + label, .toggle label { + color: $text-color !important; + } + &, .main.pusher, .ui.vertical.segment { + color: $text-color; + background-color: $background-color; + } + + .discrete { + color: $discrete-text-color; + } + + .ui.table thead th, .ui.table { + color: $text-color; + } + .ui.divider:not(.vertical):not(.horizontal) { + border-top: 1px solid $border-color; + border-bottom: 1px solid $border-color; + } + .ui.cards > .card, .ui.card { + color: $text-color; + background-color: $background-color; + box-shadow: $box-shadow; + .content, .header, .description { + color: $text-color; + } + .extra, .meta { + color: $discrete-text-color; + } + } + .playlist.card { + .attached.button { + background-color: $light-background-color; + } + } + + // buttons + [class='ui button ui button'], [class='ui button'], [class='ui icon button'], [class='ui fluid button'], [class='ui cancel button'] { + background-color: $light-background-color; + color: $text-color; + &:hover { + background-color: $button-hover-color; + + } + } + .ui.buttons > .ui.button:not(.basic):not(.inverted), .ui.buttons:not(.basic):not(.inverted) > .button { + box-shadow: 0px 0px 0px 1px $light-shadow-color inset; + + } + .ui.basic.buttons:not(:hover):not(.green):not(.orange):not(.yellow):not(.red) .button, .ui.basic.button { + box-shadow: 0px 0px 0px 1px $text-color inset; + &:not(:hover):not(.green):not(.orange):not(.yellow):not(.red) { + color: $text-color !important; + } + } + .ui.basic.buttons .button, .ui.basic.button { + &:hover { + color: $text-color !important; + } + + } + .ui.basic.buttons:not(.green):not(.orange):not(.yellow):not(.red) .button:hover, .ui.basic.button:not(.green):not(.orange):not(.yellow):not(.red):hover, .ui.basic.button:not(.green):not(.orange):not(.yellow):not(.red):active, .ui.basic.button:not(.green):not(.orange):not(.yellow):not(.red):focus { + color: $background-color !important; + } + // loading /dimmers + .ui.loading.form::before { + background-color: $loading-background-color; + } + .ui.inverted.dimmer { + background-color: $loading-background-color; + } + // table + .ui.basic.table tbody tr, .ui.table tr td { + border-bottom: 1px solid $border-color; + } + .ui.table thead th { + border-bottom: 1px solid $border-color; + } + .ui.table { + &:not(.basic) { + &, thead th { + background-color: $light-background-color; + } + } + } + } + .ui.link.list.list a.item:hover, .ui.link.list.list .item a:not(.ui):not(.button):hover { + color: $link-color; + } + [data-tooltip]::after { + background-color: $light-background-color; + color: $text-color; + } + .ui.progress > .label { + color: $text-color; + + } + i.grey.icon { + color: $text-color !important; + } + input { + &::selection, &::-moz-selection { + background: $background-color; + color: $text-color; + } + } +} diff --git a/front/src/style/themes/_light.scss b/front/src/style/themes/_light.scss new file mode 100644 index 000000000..a6e1a0cdf --- /dev/null +++ b/front/src/style/themes/_light.scss @@ -0,0 +1,35 @@ + + +.theme-light { + + .main.pusher > .ui.secondary.menu { + box-shadow: inset 0px -2px 0px 0px rgba(34, 36, 38, 0.15); + background-color: white; + .ui.item { + &.active { + box-shadow: inset 0px -2px 0px 0px #000; + } + } + } + + .discrete { + color: rgba(0, 0, 0, 0.87); + } + .playlist.card { + .attached.button { + background-color: rgb(243, 244, 245); + } + } + + .disabled-row { + color: rgba(40, 40, 40, 0.3); + } + footer p { + color: grey; + } + + footer#footer div.item:hover { + color: rgba(0, 0, 0, 0.87); + } + +} From 2b2b64f0a7251abd2e7b5655dbb9eb5ba48bfa27 Mon Sep 17 00:00:00 2001 From: Eliot Berriot Date: Mon, 17 Jun 2019 08:48:05 +0200 Subject: [PATCH 021/291] Model / settings for allow-listing --- api/funkwhale_api/federation/admin.py | 3 ++- .../migrations/0019_auto_20190611_0851.py | 19 ++++++++++++++ api/funkwhale_api/federation/models.py | 3 +++ api/funkwhale_api/manage/serializers.py | 6 +++++ api/funkwhale_api/manage/views.py | 8 ++++++ .../dynamic_preferences_registry.py | 26 +++++++++++++++++++ api/tests/manage/test_serializers.py | 1 + api/tests/manage/test_views.py | 25 ++++++++++++++++++ 8 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 api/funkwhale_api/federation/migrations/0019_auto_20190611_0851.py create mode 100644 api/funkwhale_api/moderation/dynamic_preferences_registry.py diff --git a/api/funkwhale_api/federation/admin.py b/api/funkwhale_api/federation/admin.py index 263af80cb..40f7b4f69 100644 --- a/api/funkwhale_api/federation/admin.py +++ b/api/funkwhale_api/federation/admin.py @@ -26,7 +26,8 @@ redeliver_activities.short_description = "Redeliver" @admin.register(models.Domain) class DomainAdmin(admin.ModelAdmin): - list_display = ["name", "creation_date"] + list_display = ["name", "allowed", "creation_date"] + list_filter = ["allowed"] search_fields = ["name"] diff --git a/api/funkwhale_api/federation/migrations/0019_auto_20190611_0851.py b/api/funkwhale_api/federation/migrations/0019_auto_20190611_0851.py new file mode 100644 index 000000000..4ae5e31fb --- /dev/null +++ b/api/funkwhale_api/federation/migrations/0019_auto_20190611_0851.py @@ -0,0 +1,19 @@ +# Generated by Django 2.2.2 on 2019-06-11 08:51 + +import django.contrib.postgres.fields.jsonb +import django.core.serializers.json +from django.db import migrations, models +import funkwhale_api.federation.models + + +class Migration(migrations.Migration): + + dependencies = [("federation", "0018_fetch")] + + operations = [ + migrations.AddField( + model_name="domain", + name="allowed", + field=models.BooleanField(default=None, null=True), + ) + ] diff --git a/api/funkwhale_api/federation/models.py b/api/funkwhale_api/federation/models.py index d530c62df..df81cd500 100644 --- a/api/funkwhale_api/federation/models.py +++ b/api/funkwhale_api/federation/models.py @@ -118,6 +118,9 @@ class Domain(models.Model): null=True, blank=True, ) + # are interactions with this domain allowed (only applies when allow-listing is on) + allowed = models.BooleanField(default=None, null=True) + objects = DomainQuerySet.as_manager() def __str__(self): diff --git a/api/funkwhale_api/manage/serializers.py b/api/funkwhale_api/manage/serializers.py index add9364e8..25f8c01db 100644 --- a/api/funkwhale_api/manage/serializers.py +++ b/api/funkwhale_api/manage/serializers.py @@ -130,6 +130,7 @@ class ManageDomainSerializer(serializers.ModelSerializer): "nodeinfo", "nodeinfo_fetch_date", "instance_policy", + "allowed", ] read_only_fields = [ "creation_date", @@ -145,6 +146,11 @@ class ManageDomainSerializer(serializers.ModelSerializer): return getattr(o, "outbox_activities_count", 0) +class ManageDomainUpdateSerializer(ManageDomainSerializer): + class Meta(ManageDomainSerializer.Meta): + read_only_fields = ["name"] + ManageDomainSerializer.Meta.read_only_fields + + class ManageDomainActionSerializer(common_serializers.ActionSerializer): actions = [common_serializers.Action("purge", allow_all=False)] filterset_class = filters.ManageDomainFilterSet diff --git a/api/funkwhale_api/manage/views.py b/api/funkwhale_api/manage/views.py index 83981116c..fb9ceabc5 100644 --- a/api/funkwhale_api/manage/views.py +++ b/api/funkwhale_api/manage/views.py @@ -339,6 +339,7 @@ class ManageDomainViewSet( mixins.CreateModelMixin, mixins.ListModelMixin, mixins.RetrieveModelMixin, + mixins.UpdateModelMixin, viewsets.GenericViewSet, ): lookup_value_regex = r"[a-zA-Z0-9\-\.]+" @@ -361,6 +362,13 @@ class ManageDomainViewSet( "instance_policy", ] + def get_serializer_class(self): + if self.action in ["update", "partial_update"]: + # A dedicated serializer for update + # to ensure domain name can't be changed + return serializers.ManageDomainUpdateSerializer + return super().get_serializer_class() + def perform_create(self, serializer): domain = serializer.save() federation_tasks.update_domain_nodeinfo(domain_name=domain.name) diff --git a/api/funkwhale_api/moderation/dynamic_preferences_registry.py b/api/funkwhale_api/moderation/dynamic_preferences_registry.py new file mode 100644 index 000000000..ff4201b57 --- /dev/null +++ b/api/funkwhale_api/moderation/dynamic_preferences_registry.py @@ -0,0 +1,26 @@ +from dynamic_preferences import types +from dynamic_preferences.registries import global_preferences_registry + +moderation = types.Section("Moderation") + + +@global_preferences_registry.register +class AllowListEnabled(types.BooleanPreference): + section = moderation + name = "allow_list_enabled" + verbose_name = "Enable allow-listing" + help_text = "If enabled, only interactions with explicitely allowed domains will be authorized." + default = False + + +@global_preferences_registry.register +class AllowListPublic(types.BooleanPreference): + section = moderation + name = "allow_list_public" + verbose_name = "Publish your allowed-domains list" + help_text = ( + "If enabled, everyone will be able to retrieve the list of domains you allowed. ", + "This is useful on open setups, to help people decide if they want to join your pod, or to " + "make your moderation policy public.", + ) + default = False diff --git a/api/tests/manage/test_serializers.py b/api/tests/manage/test_serializers.py index 65c75c2c3..cfbb17517 100644 --- a/api/tests/manage/test_serializers.py +++ b/api/tests/manage/test_serializers.py @@ -51,6 +51,7 @@ def test_manage_domain_serializer(factories, now): "nodeinfo": {}, "nodeinfo_fetch_date": None, "instance_policy": None, + "allowed": None, } s = serializers.ManageDomainSerializer(domain) diff --git a/api/tests/manage/test_views.py b/api/tests/manage/test_views.py index e3d136a0e..72394052c 100644 --- a/api/tests/manage/test_views.py +++ b/api/tests/manage/test_views.py @@ -73,6 +73,31 @@ def test_domain_create(superuser_api_client, mocker): update_domain_nodeinfo.assert_called_once_with(domain_name="test.federation") +def test_domain_update_allowed(superuser_api_client, factories): + domain = factories["federation.Domain"]() + url = reverse("api:v1:manage:federation:domains-detail", kwargs={"pk": domain.name}) + response = superuser_api_client.put(url, {"allowed": True}) + + assert response.status_code == 200 + domain.refresh_from_db() + assert domain.allowed is True + + +def test_domain_update_cannot_change_name(superuser_api_client, factories): + domain = factories["federation.Domain"]() + old_name = domain.name + url = reverse("api:v1:manage:federation:domains-detail", kwargs={"pk": old_name}) + response = superuser_api_client.put(url, {"name": "something.else"}) + + domain.refresh_from_db() + + assert response.status_code == 200 + assert domain.name == old_name + # changing the pk of a model and saving results in a new DB entry in django, + # so we check that no other entry was created + assert domain.__class__.objects.count() == 1 + + def test_domain_nodeinfo(factories, superuser_api_client, mocker): domain = factories["federation.Domain"]() url = reverse( From d0af4507d9cde07908d65bc84249b3849213f4c9 Mon Sep 17 00:00:00 2001 From: Eliot Berriot Date: Mon, 17 Jun 2019 09:46:19 +0200 Subject: [PATCH 022/291] Yarn upgrade --- front/yarn.lock | 3620 ++++++++++++++++++++++++++--------------------- 1 file changed, 1978 insertions(+), 1642 deletions(-) diff --git a/front/yarn.lock b/front/yarn.lock index 5d20f4ac1..a00f8dc13 100644 --- a/front/yarn.lock +++ b/front/yarn.lock @@ -10,33 +10,33 @@ "@babel/highlight" "^7.0.0" "@babel/core@^7.0.0": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.2.2.tgz#07adba6dde27bb5ad8d8672f15fde3e08184a687" - integrity sha512-59vB0RWt09cAct5EIe58+NzGP4TFSD3Bz//2/ELy3ZeTeKF6VTD1AXlH8BGGbCX0PuobZBsIzO7IAI9PH67eKw== + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.5.tgz#081f97e8ffca65a9b4b0fdc7e274e703f000c06a" + integrity sha512-OvjIh6aqXtlsA8ujtGKfC7LYWksYSX8yQcM8Ay3LuvVeQ63lcOKgoZWVqcpFwkd29aYU9rVx7jxhfhiEDV9MZA== dependencies: "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.2.2" - "@babel/helpers" "^7.2.0" - "@babel/parser" "^7.2.2" - "@babel/template" "^7.2.2" - "@babel/traverse" "^7.2.2" - "@babel/types" "^7.2.2" + "@babel/generator" "^7.4.4" + "@babel/helpers" "^7.4.4" + "@babel/parser" "^7.4.5" + "@babel/template" "^7.4.4" + "@babel/traverse" "^7.4.5" + "@babel/types" "^7.4.4" convert-source-map "^1.1.0" debug "^4.1.0" json5 "^2.1.0" - lodash "^4.17.10" + lodash "^4.17.11" resolve "^1.3.2" semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.2.2": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.2.2.tgz#18c816c70962640eab42fe8cae5f3947a5c65ccc" - integrity sha512-I4o675J/iS8k+P38dvJ3IBGqObLXyQLTxtrR4u9cSUJOURvafeEWb/pFMOTwtNrmq73mJzyF6ueTbO1BtN0Zeg== +"@babel/generator@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.4.4.tgz#174a215eb843fc392c7edcaabeaa873de6e8f041" + integrity sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ== dependencies: - "@babel/types" "^7.2.2" + "@babel/types" "^7.4.4" jsesc "^2.5.1" - lodash "^4.17.10" + lodash "^4.17.11" source-map "^0.5.0" trim-right "^1.0.1" @@ -55,34 +55,35 @@ "@babel/helper-explode-assignable-expression" "^7.1.0" "@babel/types" "^7.0.0" -"@babel/helper-call-delegate@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.1.0.tgz#6a957f105f37755e8645343d3038a22e1449cc4a" - integrity sha512-YEtYZrw3GUK6emQHKthltKNZwszBcHK58Ygcis+gVUrF4/FmTVr5CCqQNSfmvg2y+YDEANyYoaLz/SHsnusCwQ== +"@babel/helper-call-delegate@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz#87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43" + integrity sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ== dependencies: - "@babel/helper-hoist-variables" "^7.0.0" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/helper-hoist-variables" "^7.4.4" + "@babel/traverse" "^7.4.4" + "@babel/types" "^7.4.4" -"@babel/helper-create-class-features-plugin@^7.2.1", "@babel/helper-create-class-features-plugin@^7.2.2": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.2.2.tgz#aac79552e41c94716a804d371e943f20171df0c5" - integrity sha512-Q4qZE5wS3NWpOS6UV9yhIS/NmSyf2keF0E0IwDvx8WxTheVopVIY6BSQ/0vz72OTTruz0cOA2yIUh6Kdg3qprA== +"@babel/helper-create-class-features-plugin@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.4.4.tgz#fc3d690af6554cc9efc607364a82d48f58736dba" + integrity sha512-UbBHIa2qeAGgyiNR9RszVF7bUHEdgS4JAUNT8SiqrAN6YJVxlOxeLr5pBzb5kan302dejJ9nla4RyKcR1XT6XA== dependencies: "@babel/helper-function-name" "^7.1.0" "@babel/helper-member-expression-to-functions" "^7.0.0" "@babel/helper-optimise-call-expression" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.1.0" + "@babel/helper-replace-supers" "^7.4.4" + "@babel/helper-split-export-declaration" "^7.4.4" -"@babel/helper-define-map@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz#3b74caec329b3c80c116290887c0dd9ae468c20c" - integrity sha512-yPPcW8dc3gZLN+U1mhYV91QU3n5uTbx7DUdf8NnPbjS0RMwBuHi9Xt2MUgppmNz7CJxTBWsGczTiEp1CSOTPRg== +"@babel/helper-define-map@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz#6969d1f570b46bdc900d1eba8e5d59c48ba2c12a" + integrity sha512-IX3Ln8gLhZpSuqHJSnTNBWGDE9kdkTEWl21A/K7PQ00tseBwbqCHTvNLHSBd9M0R5rER4h5Rsvj9vw0R5SieBg== dependencies: "@babel/helper-function-name" "^7.1.0" - "@babel/types" "^7.0.0" - lodash "^4.17.10" + "@babel/types" "^7.4.4" + lodash "^4.17.11" "@babel/helper-explode-assignable-expression@^7.1.0": version "7.1.0" @@ -108,12 +109,12 @@ dependencies: "@babel/types" "^7.0.0" -"@babel/helper-hoist-variables@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz#46adc4c5e758645ae7a45deb92bab0918c23bb88" - integrity sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w== +"@babel/helper-hoist-variables@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz#0298b5f25c8c09c53102d52ac4a98f773eb2850a" + integrity sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w== dependencies: - "@babel/types" "^7.0.0" + "@babel/types" "^7.4.4" "@babel/helper-member-expression-to-functions@^7.0.0": version "7.0.0" @@ -129,17 +130,17 @@ dependencies: "@babel/types" "^7.0.0" -"@babel/helper-module-transforms@^7.1.0": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.2.2.tgz#ab2f8e8d231409f8370c883d20c335190284b963" - integrity sha512-YRD7I6Wsv+IHuTPkAmAS4HhY0dkPobgLftHp0cRGZSdrRvmZY8rFvae/GVu3bD00qscuvK3WPHB3YdNpBXUqrA== +"@babel/helper-module-transforms@^7.1.0", "@babel/helper-module-transforms@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz#96115ea42a2f139e619e98ed46df6019b94414b8" + integrity sha512-3Z1yp8TVQf+B4ynN7WoHPKS8EkdTbgAEy0nU0rs/1Kw4pDgmvYH3rz3aI11KgxKCba2cn7N+tqzV1mY2HMN96w== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/helper-simple-access" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.0.0" - "@babel/template" "^7.2.2" - "@babel/types" "^7.2.2" - lodash "^4.17.10" + "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/template" "^7.4.4" + "@babel/types" "^7.4.4" + lodash "^4.17.11" "@babel/helper-optimise-call-expression@^7.0.0": version "7.0.0" @@ -153,12 +154,12 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== -"@babel/helper-regex@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.0.0.tgz#2c1718923b57f9bbe64705ffe5640ac64d9bdb27" - integrity sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg== +"@babel/helper-regex@^7.0.0", "@babel/helper-regex@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.4.4.tgz#a47e02bc91fb259d2e6727c2a30013e3ac13c4a2" + integrity sha512-Y5nuB/kESmR3tKjU8Nkn1wMGEx1tjJX076HBMeL3XLQCu6vA/YRzuTW0bbb+qRnXvQGn+d6Rx953yffl8vEy7Q== dependencies: - lodash "^4.17.10" + lodash "^4.17.11" "@babel/helper-remap-async-to-generator@^7.1.0": version "7.1.0" @@ -171,15 +172,15 @@ "@babel/traverse" "^7.1.0" "@babel/types" "^7.0.0" -"@babel/helper-replace-supers@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.1.0.tgz#5fc31de522ec0ef0899dc9b3e7cf6a5dd655f362" - integrity sha512-BvcDWYZRWVuDeXTYZWxekQNO5D4kO55aArwZOTFXw6rlLQA8ZaDicJR1sO47h+HrnCiDFiww0fSPV0d713KBGQ== +"@babel/helper-replace-supers@^7.1.0", "@babel/helper-replace-supers@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz#aee41783ebe4f2d3ab3ae775e1cc6f1a90cefa27" + integrity sha512-04xGEnd+s01nY1l15EuMS1rfKktNF+1CkKmHoErDppjAAZL+IUBZpzT748x262HF7fibaQPhbvWUl5HeSt1EXg== dependencies: "@babel/helper-member-expression-to-functions" "^7.0.0" "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/traverse" "^7.4.4" + "@babel/types" "^7.4.4" "@babel/helper-simple-access@^7.1.0": version "7.1.0" @@ -189,12 +190,12 @@ "@babel/template" "^7.1.0" "@babel/types" "^7.0.0" -"@babel/helper-split-export-declaration@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813" - integrity sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag== +"@babel/helper-split-export-declaration@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" + integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q== dependencies: - "@babel/types" "^7.0.0" + "@babel/types" "^7.4.4" "@babel/helper-wrap-function@^7.1.0": version "7.2.0" @@ -206,14 +207,14 @@ "@babel/traverse" "^7.1.0" "@babel/types" "^7.2.0" -"@babel/helpers@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.2.0.tgz#8335f3140f3144270dc63c4732a4f8b0a50b7a21" - integrity sha512-Fr07N+ea0dMcMN8nFpuK6dUIT7/ivt9yKQdEEnjVS83tG2pHwPi03gYmk/tyuwONnZ+sY+GFFPlWGgCtW1hF9A== +"@babel/helpers@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.4.4.tgz#868b0ef59c1dd4e78744562d5ce1b59c89f2f2a5" + integrity sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A== dependencies: - "@babel/template" "^7.1.2" - "@babel/traverse" "^7.1.5" - "@babel/types" "^7.2.0" + "@babel/template" "^7.4.4" + "@babel/traverse" "^7.4.4" + "@babel/types" "^7.4.4" "@babel/highlight@^7.0.0": version "7.0.0" @@ -224,10 +225,10 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.2.2": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.2.2.tgz#37ebdbc88a2e1ebc6c8dd3d35ea9436e3e39e477" - integrity sha512-UNTmQ5cSLDeBGBl+s7JeowkqIHgmFAGBnLDdIzFmUNSuS5JF0XBcN59jsh/vJO/YjfsBqMxhMjoFGmNExmf0FA== +"@babel/parser@^7.0.0", "@babel/parser@^7.4.4", "@babel/parser@^7.4.5": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.5.tgz#04af8d5d5a2b044a2a1bffacc1e5e6673544e872" + integrity sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew== "@babel/plugin-proposal-async-generator-functions@^7.2.0": version "7.2.0" @@ -239,19 +240,19 @@ "@babel/plugin-syntax-async-generators" "^7.2.0" "@babel/plugin-proposal-class-properties@^7.0.0": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.2.1.tgz#c734a53e0a1ec40fe5c22ee5069d26da3b187d05" - integrity sha512-/4FKFChkQ2Jgb8lBDsvFX496YTi7UWTetVgS8oJUpX1e/DlaoeEK57At27ug8Hu2zI2g8bzkJ+8k9qrHZRPGPA== + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.4.4.tgz#93a6486eed86d53452ab9bab35e368e9461198ce" + integrity sha512-WjKTI8g8d5w1Bc9zgwSz2nfrsNQsXcCf9J9cdCvrJV6RF56yztwm4TmJC0MgJ9tvwO9gUA/mcYe89bLdGfiXFg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.2.1" + "@babel/helper-create-class-features-plugin" "^7.4.4" "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-proposal-decorators@^7.1.0": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.2.2.tgz#e7ce762732760542a5268a49bd19251f06dccd08" - integrity sha512-ylkKcbbS5IUocCti0gk762LMiMODWmlwRzyj1OCbPa83vSBlTKLmeBo9KMhoNpydibPcVwrP5rYJd0cKTVu7hw== + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.4.4.tgz#de9b2a1a8ab0196f378e2a82f10b6e2a36f21cc0" + integrity sha512-z7MpQz3XC/iQJWXH9y+MaWcLPNSMY9RQSthrLzak8R8hCj0fuyNk+Dzi9kfNe/JxxlWQ2g7wkABbgWjW36MTcw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.2.2" + "@babel/helper-create-class-features-plugin" "^7.4.4" "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-decorators" "^7.2.0" @@ -263,10 +264,10 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-json-strings" "^7.2.0" -"@babel/plugin-proposal-object-rest-spread@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.2.0.tgz#88f5fec3e7ad019014c97f7ee3c992f0adbf7fb8" - integrity sha512-1L5mWLSvR76XYUQJXkd/EEQgjq8HHRP6lQuZTTg0VA4tTGPpGemmCdAfQIz1rzEuWAm+ecP8PyyEm30jC1eQCg== +"@babel/plugin-proposal-object-rest-spread@^7.3.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.4.tgz#1ef173fcf24b3e2df92a678f027673b55e7e3005" + integrity sha512-dMBG6cSPBbHeEBdFXeQ2QLc5gUpg4Vkaz8octD4aoW/ISO+jBOcsuxYL7bsb5WSu8RLP6boxrBIALEHgoHtO9g== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-object-rest-spread" "^7.2.0" @@ -280,13 +281,13 @@ "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" "@babel/plugin-proposal-unicode-property-regex@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.2.0.tgz#abe7281fe46c95ddc143a65e5358647792039520" - integrity sha512-LvRVYb7kikuOtIoUeWTkOxQEV1kYvL5B6U3iWEGCzPNRus1MzJweFqORTj+0jkxozkTSYNJozPOddxmqdqsRpw== + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz#501ffd9826c0b91da22690720722ac7cb1ca9c78" + integrity sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.0.0" - regexpu-core "^4.2.0" + "@babel/helper-regex" "^7.4.4" + regexpu-core "^4.5.4" "@babel/plugin-syntax-async-generators@^7.2.0": version "7.2.0" @@ -316,7 +317,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-jsx@^7.0.0": +"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz#0b85a3b4bc7cdf4cc4b8bf236335b907ca22e7c7" integrity sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw== @@ -344,10 +345,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-async-to-generator@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.2.0.tgz#68b8a438663e88519e65b776f8938f3445b1a2ff" - integrity sha512-CEHzg4g5UraReozI9D4fblBYABs7IM6UerAVG7EJVrTLC5keh00aEuLUT+O40+mJCEzaXkYfTCUKIyeDfMOFFQ== +"@babel/plugin-transform-async-to-generator@^7.3.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.4.tgz#a3f1d01f2f21cadab20b33a82133116f14fb5894" + integrity sha512-YiqW2Li8TXmzgbXw+STsSqPBPFnGviiaSp6CYOq55X8GQ2SGVLrXB6pNid8HkqkZAzOH6knbai3snhP7v0fNwA== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" @@ -360,26 +361,26 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-block-scoping@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.2.0.tgz#f17c49d91eedbcdf5dd50597d16f5f2f770132d4" - integrity sha512-vDTgf19ZEV6mx35yiPJe4fS02mPQUUcBNwWQSZFXSzTSbsJFQvHt7DqyS3LK8oOWALFOsJ+8bbqBgkirZteD5Q== +"@babel/plugin-transform-block-scoping@^7.3.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz#c13279fabf6b916661531841a23c4b7dae29646d" + integrity sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - lodash "^4.17.10" + lodash "^4.17.11" -"@babel/plugin-transform-classes@^7.2.0": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.2.2.tgz#6c90542f210ee975aa2aa8c8b5af7fa73a126953" - integrity sha512-gEZvgTy1VtcDOaQty1l10T3jQmJKlNVxLDCs+3rCVPr6nMkODLELxViq5X9l+rfxbie3XrfrMCYYY6eX3aOcOQ== +"@babel/plugin-transform-classes@^7.3.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz#0ce4094cdafd709721076d3b9c38ad31ca715eb6" + integrity sha512-/e44eFLImEGIpL9qPxSRat13I5QNRgBLu2hOQJCF7VLy/otSM/sypV1+XaIw5+502RX/+6YaSAPmldk+nhHDPw== dependencies: "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-define-map" "^7.1.0" + "@babel/helper-define-map" "^7.4.4" "@babel/helper-function-name" "^7.1.0" "@babel/helper-optimise-call-expression" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/helper-replace-supers" "^7.4.4" + "@babel/helper-split-export-declaration" "^7.4.4" globals "^11.1.0" "@babel/plugin-transform-computed-properties@^7.2.0": @@ -390,20 +391,20 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-destructuring@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.2.0.tgz#e75269b4b7889ec3a332cd0d0c8cff8fed0dc6f3" - integrity sha512-coVO2Ayv7g0qdDbrNiadE4bU7lvCd9H539m2gMknyVjjMdwF/iCOM7R+E8PkntoqLkltO0rk+3axhpp/0v68VQ== + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.4.tgz#9d964717829cc9e4b601fc82a26a71a4d8faf20f" + integrity sha512-/aOx+nW0w8eHiEHm+BTERB2oJn5D127iye/SUQl7NjHy0lf+j7h4MKMMSOwdazGq9OxgiNADncE+SRJkCxjZpQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-dotall-regex@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.2.0.tgz#f0aabb93d120a8ac61e925ea0ba440812dbe0e49" - integrity sha512-sKxnyHfizweTgKZf7XsXu/CNupKhzijptfTM+bozonIuyVrLWVUvYjE2bhuSBML8VQeMxq4Mm63Q9qvcvUcciQ== + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz#361a148bc951444312c69446d76ed1ea8e4450c3" + integrity sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.0.0" - regexpu-core "^4.1.3" + "@babel/helper-regex" "^7.4.4" + regexpu-core "^4.5.4" "@babel/plugin-transform-duplicate-keys@^7.2.0": version "7.2.0" @@ -421,16 +422,16 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-for-of@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.2.0.tgz#ab7468befa80f764bb03d3cb5eef8cc998e1cad9" - integrity sha512-Kz7Mt0SsV2tQk6jG5bBv5phVbkd0gd27SgYD4hH1aLMJRchM0dzHaXvrWhVZ+WxAlDoAKZ7Uy3jVTW2mKXQ1WQ== + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz#0267fc735e24c808ba173866c6c4d1440fc3c556" + integrity sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-function-name@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.2.0.tgz#f7930362829ff99a3174c39f0afcc024ef59731a" - integrity sha512-kWgksow9lHdvBC2Z4mxTsvc7YdY7w/V6B2vy9cTIPtLEE9NhwoWivaxdNM/S37elu5bqlLP/qOY906LukO9lkQ== + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz#e1436116abb0610c2259094848754ac5230922ad" + integrity sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA== dependencies: "@babel/helper-function-name" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" @@ -451,20 +452,20 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-modules-commonjs@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.2.0.tgz#c4f1933f5991d5145e9cfad1dfd848ea1727f404" - integrity sha512-V6y0uaUQrQPXUrmj+hgnks8va2L0zcZymeU7TtWEgdRLNkceafKXEduv7QzgQAE4lT+suwooG9dC7LFhdRAbVQ== + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.4.tgz#0bef4713d30f1d78c2e59b3d6db40e60192cac1e" + integrity sha512-4sfBOJt58sEo9a2BQXnZq+Q3ZTSAUXyK3E30o36BOGnJ+tvJ6YSxF0PG6kERvbeISgProodWuI9UVG3/FMY6iw== dependencies: - "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-module-transforms" "^7.4.4" "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-simple-access" "^7.1.0" -"@babel/plugin-transform-modules-systemjs@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.2.0.tgz#912bfe9e5ff982924c81d0937c92d24994bb9068" - integrity sha512-aYJwpAhoK9a+1+O625WIjvMY11wkB/ok0WClVwmeo3mCjcNRjt+/8gHWrB5i+00mUju0gWsBkQnPpdvQ7PImmQ== +"@babel/plugin-transform-modules-systemjs@^7.3.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.4.tgz#dc83c5665b07d6c2a7b224c00ac63659ea36a405" + integrity sha512-MSiModfILQc3/oqnG7NrP1jHaSPryO6tA2kOMmAQApz5dayPxWiHqmq4sWH2xF5LcQK56LlbKByCd8Aah/OIkQ== dependencies: - "@babel/helper-hoist-variables" "^7.0.0" + "@babel/helper-hoist-variables" "^7.4.4" "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-modules-umd@^7.2.0": @@ -475,10 +476,17 @@ "@babel/helper-module-transforms" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-named-capturing-groups-regex@^7.3.0": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz#9d269fd28a370258199b4294736813a60bbdd106" + integrity sha512-z7+2IsWafTBbjNsOxU/Iv5CvTJlr5w4+HGu1HovKYTtgJ362f7kBcQglkfmlspKKZ3bgrbSGvLfNx++ZJgCWsg== + dependencies: + regexp-tree "^0.1.6" + "@babel/plugin-transform-new-target@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz#ae8fbd89517fa7892d20e6564e641e8770c3aa4a" - integrity sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw== + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz#18d120438b0cc9ee95a47f2c72bc9768fbed60a5" + integrity sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -491,25 +499,25 @@ "@babel/helper-replace-supers" "^7.1.0" "@babel/plugin-transform-parameters@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.2.0.tgz#0d5ad15dc805e2ea866df4dd6682bfe76d1408c2" - integrity sha512-kB9+hhUidIgUoBQ0MsxMewhzr8i60nMa2KgeJKQWYrqQpqcBYtnpR+JgkadZVZoaEZ/eKu9mclFaVwhRpLNSzA== + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz#7556cf03f318bd2719fe4c922d2d808be5571e16" + integrity sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw== dependencies: - "@babel/helper-call-delegate" "^7.1.0" + "@babel/helper-call-delegate" "^7.4.4" "@babel/helper-get-function-arity" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-regenerator@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz#5b41686b4ed40bef874d7ed6a84bdd849c13e0c1" - integrity sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw== +"@babel/plugin-transform-regenerator@^7.3.4": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz#629dc82512c55cee01341fb27bdfcb210354680f" + integrity sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA== dependencies: - regenerator-transform "^0.13.3" + regenerator-transform "^0.14.0" -"@babel/plugin-transform-runtime@^7.0.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.2.0.tgz#566bc43f7d0aedc880eaddbd29168d0f248966ea" - integrity sha512-jIgkljDdq4RYDnJyQsiWbdvGeei/0MOTtSHKO/rfbd/mXBxNpdlulMx49L0HQ4pug1fXannxoqCI+fYSle9eSw== +"@babel/plugin-transform-runtime@^7.4.0": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.4.4.tgz#a50f5d16e9c3a4ac18a1a9f9803c107c380bce08" + integrity sha512-aMVojEjPszvau3NRg+TIH14ynZLvPewH4xhlCW1w6A3rkxTS1m4uwzRclYR9oS+rl/dr+kT+pzbfHuAWP/lc7Q== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" @@ -539,9 +547,9 @@ "@babel/helper-regex" "^7.0.0" "@babel/plugin-transform-template-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.2.0.tgz#d87ed01b8eaac7a92473f608c97c089de2ba1e5b" - integrity sha512-FkPix00J9A/XWXv4VoKJBMeSkyY9x/TqIh76wzcdfl57RJJcf8CehQ08uwfhCDNtRQYtHQKBTwKZDEyjE13Lwg== + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz#9d28fea7bbce637fb7612a0750989d8321d4bcb0" + integrity sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g== dependencies: "@babel/helper-annotate-as-pure" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" @@ -554,34 +562,35 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-unicode-regex@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.2.0.tgz#4eb8db16f972f8abb5062c161b8b115546ade08b" - integrity sha512-m48Y0lMhrbXEJnVUaYly29jRXbQ3ksxPrS1Tg8t+MHqzXhtBYAvI51euOBaoAlZLPHsieY9XPVMf80a5x0cPcA== + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz#ab4634bb4f14d36728bf5978322b35587787970f" + integrity sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.0.0" - regexpu-core "^4.1.3" + "@babel/helper-regex" "^7.4.4" + regexpu-core "^4.5.4" -"@babel/preset-env@^7.0.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.2.0.tgz#a5030e7e4306af5a295dd5d7c78dc5464af3fee2" - integrity sha512-haGR38j5vOGVeBatrQPr3l0xHbs14505DcM57cbJy48kgMFvvHHoYEhHuRV+7vi559yyAUAVbTWzbK/B/pzJng== +"@babel/preset-env@^7.0.0 < 7.4.0": + version "7.3.4" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.3.4.tgz#887cf38b6d23c82f19b5135298bdb160062e33e1" + integrity sha512-2mwqfYMK8weA0g0uBKOt4FE3iEodiHy9/CW0b+nWXcbL+pGzLx8ESYc+j9IIxr6LTDHWKgPm71i9smo02bw+gA== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-proposal-async-generator-functions" "^7.2.0" "@babel/plugin-proposal-json-strings" "^7.2.0" - "@babel/plugin-proposal-object-rest-spread" "^7.2.0" + "@babel/plugin-proposal-object-rest-spread" "^7.3.4" "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" "@babel/plugin-proposal-unicode-property-regex" "^7.2.0" "@babel/plugin-syntax-async-generators" "^7.2.0" + "@babel/plugin-syntax-json-strings" "^7.2.0" "@babel/plugin-syntax-object-rest-spread" "^7.2.0" "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" "@babel/plugin-transform-arrow-functions" "^7.2.0" - "@babel/plugin-transform-async-to-generator" "^7.2.0" + "@babel/plugin-transform-async-to-generator" "^7.3.4" "@babel/plugin-transform-block-scoped-functions" "^7.2.0" - "@babel/plugin-transform-block-scoping" "^7.2.0" - "@babel/plugin-transform-classes" "^7.2.0" + "@babel/plugin-transform-block-scoping" "^7.3.4" + "@babel/plugin-transform-classes" "^7.3.4" "@babel/plugin-transform-computed-properties" "^7.2.0" "@babel/plugin-transform-destructuring" "^7.2.0" "@babel/plugin-transform-dotall-regex" "^7.2.0" @@ -592,12 +601,13 @@ "@babel/plugin-transform-literals" "^7.2.0" "@babel/plugin-transform-modules-amd" "^7.2.0" "@babel/plugin-transform-modules-commonjs" "^7.2.0" - "@babel/plugin-transform-modules-systemjs" "^7.2.0" + "@babel/plugin-transform-modules-systemjs" "^7.3.4" "@babel/plugin-transform-modules-umd" "^7.2.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.3.0" "@babel/plugin-transform-new-target" "^7.0.0" "@babel/plugin-transform-object-super" "^7.2.0" "@babel/plugin-transform-parameters" "^7.2.0" - "@babel/plugin-transform-regenerator" "^7.0.0" + "@babel/plugin-transform-regenerator" "^7.3.4" "@babel/plugin-transform-shorthand-properties" "^7.2.0" "@babel/plugin-transform-spread" "^7.2.0" "@babel/plugin-transform-sticky-regex" "^7.2.0" @@ -609,46 +619,80 @@ js-levenshtein "^1.1.3" semver "^5.3.0" +"@babel/runtime-corejs2@^7.2.0": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs2/-/runtime-corejs2-7.4.5.tgz#3d892f0560df21bafb384dd7727e33853e95d3c9" + integrity sha512-5yLuwzvIDecKwYMzJtiarky4Fb5643H3Ao5jwX0HrMR5oM5mn2iHH9wSZonxwNK0oAjAFUQAiOd4jT7/9Y2jMQ== + dependencies: + core-js "^2.6.5" + regenerator-runtime "^0.13.2" + "@babel/runtime@^7.0.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.2.0.tgz#b03e42eeddf5898e00646e4c840fa07ba8dcad7f" - integrity sha512-oouEibCbHMVdZSDlJBO6bZmID/zA/G/Qx3H1d3rSNPTD+L8UNKvCat7aKWSJ74zYbm5zWGh0GQN0hKj8zYFTCg== + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.5.tgz#582bb531f5f9dc67d2fcb682979894f75e253f12" + integrity sha512-TuI4qpWZP6lGOGIuGWtp9sPluqYICmbk8T/1vpSysqJxRPkudh/ofFWyqdcMsDf2s7KvDL4/YHgKyvcS3g9CJQ== dependencies: - regenerator-runtime "^0.12.0" + regenerator-runtime "^0.13.2" -"@babel/template@^7.1.0", "@babel/template@^7.1.2", "@babel/template@^7.2.2": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.2.2.tgz#005b3fdf0ed96e88041330379e0da9a708eb2907" - integrity sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g== +"@babel/template@^7.1.0", "@babel/template@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" + integrity sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw== dependencies: "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.2.2" - "@babel/types" "^7.2.2" + "@babel/parser" "^7.4.4" + "@babel/types" "^7.4.4" -"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.1.5", "@babel/traverse@^7.2.2": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.2.2.tgz#961039de1f9bcb946d807efe2dba9c92e859d188" - integrity sha512-E5Bn9FSwHpSkUhthw/XEuvFZxIgrqb9M8cX8j5EUQtrUG5DQUy6bFyl7G7iQ1D1Czudor+xkmp81JbLVVM0Sjg== +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.4", "@babel/traverse@^7.4.5": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.4.5.tgz#4e92d1728fd2f1897dafdd321efbff92156c3216" + integrity sha512-Vc+qjynwkjRmIFGxy0KYoPj4FdVDxLej89kMHFsWScq999uX+pwcX4v9mWRjW0KcAYTPAuVQl2LKP1wEVLsp+A== dependencies: "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.2.2" + "@babel/generator" "^7.4.4" "@babel/helper-function-name" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.0.0" - "@babel/parser" "^7.2.2" - "@babel/types" "^7.2.2" + "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/parser" "^7.4.5" + "@babel/types" "^7.4.4" debug "^4.1.0" globals "^11.1.0" - lodash "^4.17.10" + lodash "^4.17.11" -"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.2.2": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.2.2.tgz#44e10fc24e33af524488b716cdaee5360ea8ed1e" - integrity sha512-fKCuD6UFUMkR541eDWL+2ih/xFZBXPOg/7EQFeTluMDebfqR4jrpaCjLhkWlQS4hT6nRa2PMEgXKbRB5/H2fpg== +"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.4.4.tgz#8db9e9a629bb7c29370009b4b779ed93fe57d5f0" + integrity sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ== dependencies: esutils "^2.0.2" - lodash "^4.17.10" + lodash "^4.17.11" to-fast-properties "^2.0.0" +"@hapi/address@2.x.x": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.0.0.tgz#9f05469c88cb2fd3dcd624776b54ee95c312126a" + integrity sha512-mV6T0IYqb0xL1UALPFplXYQmR0twnXG0M6jUswpquqT2sD12BOiCiLy3EvMp/Fy7s3DZElC4/aPjEjo2jeZpvw== + +"@hapi/hoek@6.x.x": + version "6.2.4" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-6.2.4.tgz#4b95fbaccbfba90185690890bdf1a2fbbda10595" + integrity sha512-HOJ20Kc93DkDVvjwHyHawPwPkX44sIrbXazAUDiUXaY2R9JwQGo2PhFfnQtdrsIe4igjG2fPgMra7NYw7qhy0A== + +"@hapi/joi@^15.0.1": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.0.3.tgz#e94568fd859e5e945126d5675e7dd218484638a7" + integrity sha512-z6CesJ2YBwgVCi+ci8SI8zixoj8bGFn/vZb9MBPbSyoxsS2PnWYjHcyTM17VLK6tx64YVK38SDIh10hJypB+ig== + dependencies: + "@hapi/address" "2.x.x" + "@hapi/hoek" "6.x.x" + "@hapi/topo" "3.x.x" + +"@hapi/topo@3.x.x": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.0.tgz#5c47cd9637c2953db185aa957a27bcb2a8b7a6f8" + integrity sha512-gZDI/eXOIk8kP2PkUKjWu9RW8GGVd2Hkgjxyr/S7Z+JF+0mr7bAlbw+DkTRxnD580o8Kqxlnba9wvqp5aOHBww== + dependencies: + "@hapi/hoek" "6.x.x" + "@intervolga/optimize-cssnano-plugin@^1.0.5": version "1.0.6" resolved "https://registry.yarnpkg.com/@intervolga/optimize-cssnano-plugin/-/optimize-cssnano-plugin-1.0.6.tgz#be7c7846128b88f6a9b1d1261a0ad06eb5c0fdf8" @@ -671,182 +715,298 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== -"@sinonjs/commons@^1.0.2": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.3.0.tgz#50a2754016b6f30a994ceda6d9a0a8c36adda849" - integrity sha512-j4ZwhaHmwsCb4DlDOIWnI5YyKDNMoNThsmwEpfHx6a1EpsGZ9qYLxP++LMlmBRjtGptGHFsGItJ768snllFWpA== +"@sinonjs/commons@^1", "@sinonjs/commons@^1.0.2": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.4.0.tgz#7b3ec2d96af481d7a0321252e7b1c94724ec5a78" + integrity sha512-9jHK3YF/8HtJ9wCAbG+j8cD0i0+ATS9A7gXFqS36TblLPNy6rEEc+SB0imo91eCboGaBYGV/MT1/br/J+EE7Tw== dependencies: type-detect "4.0.8" "@sinonjs/formatio@^3.0.0", "@sinonjs/formatio@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@sinonjs/formatio/-/formatio-3.1.0.tgz#6ac9d1eb1821984d84c4996726e45d1646d8cce5" - integrity sha512-ZAR2bPHOl4Xg6eklUGpsdiIJ4+J1SNag1DHHrG/73Uz/nVwXqjgUtRPLoS+aVyieN9cSbc0E4LsU984tWcDyNg== + version "3.2.1" + resolved "https://registry.yarnpkg.com/@sinonjs/formatio/-/formatio-3.2.1.tgz#52310f2f9bcbc67bdac18c94ad4901b95fde267e" + integrity sha512-tsHvOB24rvyvV2+zKMmPkZ7dXX6LSLKZ7aOtXY6Edklp0uRcgGpOsQTTGTcWViFyx4uhWc6GV8QdnALbIbIdeQ== dependencies: - "@sinonjs/samsam" "^2 || ^3" - -"@sinonjs/samsam@^2 || ^3": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-3.0.2.tgz#304fb33bd5585a0b2df8a4c801fcb47fa84d8e43" - integrity sha512-m08g4CS3J6lwRQk1pj1EO+KEVWbrbXsmi9Pw0ySmrIbcVxVaedoFgLvFsV8wHLwh01EpROVz3KvVcD1Jmks9FQ== - dependencies: - "@sinonjs/commons" "^1.0.2" - array-from "^2.1.1" - lodash.get "^4.4.2" + "@sinonjs/commons" "^1" + "@sinonjs/samsam" "^3.1.0" "@sinonjs/samsam@^2.1.2": version "2.1.3" resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-2.1.3.tgz#62cf2a9b624edc795134135fe37fc2ae8ea36be3" integrity sha512-8zNeBkSKhU9a5cRNbpCKau2WWPfan+Q2zDlcXvXyhn9EsMqgYs4qzo0XHNVlXC6ABQL8fT6nV+zzo5RTHJzyXw== +"@sinonjs/samsam@^3.1.0": + version "3.3.1" + resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-3.3.1.tgz#e88c53fbd9d91ad9f0f2b0140c16c7c107fe0d07" + integrity sha512-wRSfmyd81swH0hA1bxJZJ57xr22kC07a1N4zuIL47yTS04bDk6AoCkczcqHEjcRPmJ+FruGJ9WBQiJwMtIElFw== + dependencies: + "@sinonjs/commons" "^1.0.2" + array-from "^2.1.1" + lodash "^4.17.11" + +"@sinonjs/text-encoding@^0.7.1": + version "0.7.1" + resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5" + integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ== + +"@soda/friendly-errors-webpack-plugin@^1.7.1": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.1.tgz#706f64bcb4a8b9642b48ae3ace444c70334d615d" + integrity sha512-cWKrGaFX+rfbMrAxVv56DzhPNqOJPZuNIS2HGMELtgGzb+vsMzyig9mml5gZ/hr2BGtSLV+dP2LUEuAL8aG2mQ== + dependencies: + chalk "^1.1.3" + error-stack-parser "^2.0.0" + string-width "^2.0.0" + "@types/babel-types@*", "@types/babel-types@^7.0.0": - version "7.0.4" - resolved "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.4.tgz#bfd5b0d0d1ba13e351dff65b6e52783b816826c8" - integrity sha512-WiZhq3SVJHFRgRYLXvpf65XnV6ipVHhnNaNvE8yCimejrGglkg38kEj0JcizqwSHxmPSjcTlig/6JouxLGEhGw== + version "7.0.7" + resolved "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.7.tgz#667eb1640e8039436028055737d2b9986ee336e3" + integrity sha512-dBtBbrc+qTHy1WdfHYjBwRln4+LWqASWakLHsWHR2NWHIFkv4W3O070IGoGLEBrJBvct3r0L1BUPuvURi7kYUQ== "@types/babylon@^6.16.2": - version "6.16.4" - resolved "https://registry.yarnpkg.com/@types/babylon/-/babylon-6.16.4.tgz#d3df72518b34a6a015d0dc58745cd238b5bb8ad2" - integrity sha512-8dZMcGPno3g7pJ/d0AyJERo+lXh9i1JhDuCUs+4lNIN9eUe5Yh6UCLrpgSEi05Ve2JMLauL2aozdvKwNL0px1Q== + version "6.16.5" + resolved "https://registry.yarnpkg.com/@types/babylon/-/babylon-6.16.5.tgz#1c5641db69eb8cdf378edd25b4be7754beeb48b4" + integrity sha512-xH2e58elpj1X4ynnKp9qSnWlsRTIs6n3tgLGNfwAGHwePw0mulHQllV34n0T25uYSu1k0hRKkWXF890B1yS47w== dependencies: "@types/babel-types" "*" +"@types/events@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" + integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== + +"@types/glob@^7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" + integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== + dependencies: + "@types/events" "*" + "@types/minimatch" "*" + "@types/node" "*" + +"@types/minimatch@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + "@types/node@*": - version "10.12.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.18.tgz#1d3ca764718915584fcd9f6344621b7672665c67" - integrity sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ== + version "12.0.8" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.0.8.tgz#551466be11b2adc3f3d47156758f610bd9f6b1d8" + integrity sha512-b8bbUOTwzIY3V5vDTY1fIJ+ePKDUBqt2hC2woVGotdQQhG/2Sh62HOKHrT7ab+VerXAcPyAiTEipPu/FsreUtg== + +"@types/normalize-package-data@^2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" + integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== "@types/q@^1.5.1": - version "1.5.1" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.1.tgz#48fd98c1561fe718b61733daed46ff115b496e18" - integrity sha512-eqz8c/0kwNi/OEHQfvIuJVLTst3in0e7uTKeuY+WL/zfKn0xVujOTp42bS/vUUokhK5P2BppLd9JXMOMHcgbjA== + version "1.5.2" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" + integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== -"@vue/babel-preset-app@^3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@vue/babel-preset-app/-/babel-preset-app-3.2.0.tgz#a443acdbd34f66d7645db271d9ac58fbe4fe870d" - integrity sha512-yDPMhdeOnQ49EOsOnHXJZQ4aR+g+TZVkImUjRBN90MKv9V1C9HXxhU73Je6pWUQaJ0yugMr5jl058ns6Mx6mNA== +"@vue/babel-helper-vue-jsx-merge-props@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.0.0.tgz#048fe579958da408fb7a8b2a3ec050b50a661040" + integrity sha512-6tyf5Cqm4m6v7buITuwS+jHzPlIPxbFzEhXR5JGZpbrvOcp1hiQKckd305/3C7C36wFekNTQSxAtgeM0j0yoUw== + +"@vue/babel-plugin-transform-vue-jsx@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.0.0.tgz#ebcbf39c312c94114c8c4f407ee4f6c97aa45432" + integrity sha512-U+JNwVQSmaLKjO3lzCUC3cNXxprgezV1N+jOdqbP4xWNaqtWUCJnkjTVcgECM18A/AinDKPcUUeoyhU7yxUxXQ== dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.2.0" + "@vue/babel-helper-vue-jsx-merge-props" "^1.0.0" + html-tags "^2.0.0" + lodash.kebabcase "^4.1.1" + svg-tags "^1.0.0" + +"@vue/babel-preset-app@^3.8.0": + version "3.8.0" + resolved "https://registry.yarnpkg.com/@vue/babel-preset-app/-/babel-preset-app-3.8.0.tgz#c889627c6a30418b2fb89caccd9065c4acae0829" + integrity sha512-A2NBzIVdtNq52foc+P+yQ/7rSm2q2oPpn2FJVW4hFgaWVOL+HaOLCjWDEQyEeMbRZvyOVHMuom097u3p2H2Rfw== + dependencies: + "@babel/helper-module-imports" "^7.0.0" "@babel/plugin-proposal-class-properties" "^7.0.0" "@babel/plugin-proposal-decorators" "^7.1.0" "@babel/plugin-syntax-dynamic-import" "^7.0.0" "@babel/plugin-syntax-jsx" "^7.0.0" - "@babel/plugin-transform-runtime" "^7.0.0" - "@babel/preset-env" "^7.0.0" + "@babel/plugin-transform-runtime" "^7.4.0" + "@babel/preset-env" "^7.0.0 < 7.4.0" "@babel/runtime" "^7.0.0" - babel-helper-vue-jsx-merge-props "^2.0.3" + "@babel/runtime-corejs2" "^7.2.0" + "@vue/babel-preset-jsx" "^1.0.0" babel-plugin-dynamic-import-node "^2.2.0" - babel-plugin-transform-vue-jsx "^4.0.1" - core-js "^2.5.7" + babel-plugin-module-resolver "3.2.0" + core-js "^2.6.5" -"@vue/cli-overlay@^3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@vue/cli-overlay/-/cli-overlay-3.2.0.tgz#bb5d781914bb5af97d92410babbaa3720707b728" - integrity sha512-RKMSfgTtRs4VOXQhmbrNZJaCCheshebji9NcPNGyXzukCMBtoAbu3cG9HxizCSUA//oFFAdPP5BGeHvv0cpu/A== +"@vue/babel-preset-jsx@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@vue/babel-preset-jsx/-/babel-preset-jsx-1.0.0.tgz#e515cd453a5a8ea6b0f30b2bb92f266d8ab4e9f5" + integrity sha512-5CbDu/QHS+TtQNw5aYAffiMxBBB2Eo9+RJpS8X+6FJbdG5Rvc4TVipEqkrg0pJviWadNg7TEy0Uz4o7VNXeIZw== + dependencies: + "@vue/babel-helper-vue-jsx-merge-props" "^1.0.0" + "@vue/babel-plugin-transform-vue-jsx" "^1.0.0" + "@vue/babel-sugar-functional-vue" "^1.0.0" + "@vue/babel-sugar-inject-h" "^1.0.0" + "@vue/babel-sugar-v-model" "^1.0.0" + "@vue/babel-sugar-v-on" "^1.0.0" + +"@vue/babel-sugar-functional-vue@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.0.0.tgz#17e2c4ca27b74b244da3b923240ec91d10048cb3" + integrity sha512-XE/jNaaorTuhWayCz+QClk5AB9OV5HzrwbzEC6sIUY0J60A28ONQKeTwxfidW42egOkqNH/UU6eE3KLfmiDj0Q== + dependencies: + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@vue/babel-sugar-inject-h@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.0.0.tgz#e5efb6c5b5b7988dc03831af6d133bf7bcde6347" + integrity sha512-NxWU+DqtbZgfGvd25GPoFMj+rvyQ8ZA1pHj8vIeqRij+vx3sXoKkObjA9ulZunvWw5F6uG9xYy4ytpxab/X+Hg== + dependencies: + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@vue/babel-sugar-v-model@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.0.0.tgz#f4da56aa67f65a349bd2c269a95e72e601af4613" + integrity sha512-Pfg2Al0io66P1eO6zUbRIgpyKCU2qTnumiE0lao/wA/uNdb7Dx5Tfd1W6tO5SsByETPnEs8i8+gawRIXX40rFw== + dependencies: + "@babel/plugin-syntax-jsx" "^7.2.0" + "@vue/babel-helper-vue-jsx-merge-props" "^1.0.0" + "@vue/babel-plugin-transform-vue-jsx" "^1.0.0" + camelcase "^5.0.0" + html-tags "^2.0.0" + svg-tags "^1.0.0" + +"@vue/babel-sugar-v-on@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.0.0.tgz#a633ee8fe205763e865b011246981b7f89668033" + integrity sha512-2aqJaDLKdSSGlxZU+GjFERaSNUaa6DQreV+V/K4W/6Lxj8520/r1lChWEa/zuAoPD2Vhy0D2QrqqO+I0D6CkKw== + dependencies: + "@babel/plugin-syntax-jsx" "^7.2.0" + "@vue/babel-plugin-transform-vue-jsx" "^1.0.0" + camelcase "^5.0.0" + +"@vue/cli-overlay@^3.8.0": + version "3.8.0" + resolved "https://registry.yarnpkg.com/@vue/cli-overlay/-/cli-overlay-3.8.0.tgz#e4e8e2fa92b06fc282916df9c924f1dba50eeabb" + integrity sha512-4hY/+r9OwpMb7BPFnQGKftMC8CrfbV00REEFOij52+L4swQw+m879+5zX3Z0xHfPftw6JyaqJB0rmQ0ILI6Ovw== "@vue/cli-plugin-babel@^3.0.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-babel/-/cli-plugin-babel-3.2.0.tgz#5548e052f07512156942f50dcf18948ad29be7ec" - integrity sha512-HRhwsUIZ9DZYH+cVS8O0Qfk2W43vKpl5/JcvCS8YWWmRjwZjjHtRDifnfQuLC3Q0cUMTcv4bv8vnPMtkAbvXKg== + version "3.8.0" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-babel/-/cli-plugin-babel-3.8.0.tgz#a7ce6ef9c6680e7953c609d859451dd937c7284e" + integrity sha512-VLWvpgDM+HN2FZu1x+r9pisombDTK1k+RPNPeslnwjGjrUXmKNAamXL1ZIsPwsj6k6PpWPN4jetBIMqcBzBu6Q== dependencies: "@babel/core" "^7.0.0" - "@vue/babel-preset-app" "^3.2.0" - babel-loader "^8.0.4" + "@vue/babel-preset-app" "^3.8.0" + "@vue/cli-shared-utils" "^3.8.0" + babel-loader "^8.0.5" + webpack ">=4 < 4.29" "@vue/cli-plugin-eslint@^3.0.0": - version "3.2.1" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-3.2.1.tgz#4dc353add93023363bf4c6b347e64472d1f2f432" - integrity sha512-Z/eQw18FjTypMMryNg8WCYJxEBmSAtnzukRWWNFwqNnh2zM/2J6yR4dYhsyjNtMEMUOnQsAsJnqgw45rLu8sJg== + version "3.8.0" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-3.8.0.tgz#0402dfd3864b0224bceb264df89a4209000bb98c" + integrity sha512-18LDJmjH0DDw9T4+RbrSVk4xkF8t8RDRsEPJLPurno1YVJodIkQ6lqVu82faVgtvPyCoqiaicoTq/iwi1avoLQ== dependencies: - "@vue/cli-shared-utils" "^3.2.0" + "@vue/cli-shared-utils" "^3.8.0" babel-eslint "^10.0.1" + eslint-loader "^2.1.2" + globby "^9.2.0" + webpack ">=4 < 4.29" + optionalDependencies: eslint "^4.19.1" - eslint-loader "^2.1.1" eslint-plugin-vue "^4.7.1" - globby "^8.0.1" "@vue/cli-plugin-unit-mocha@^3.0.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-unit-mocha/-/cli-plugin-unit-mocha-3.2.0.tgz#76828eae415ffe949c7fbfcad8e3b7d6a2e991c6" - integrity sha512-lT7arkoJFiTBJMIqt5IKFDY0VAoVOf7ZksAlp4WeD3Rwimh/q4tp9yMeNW4x92oxulbQFszkbtoTs5+ARzbN5w== + version "3.8.0" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-unit-mocha/-/cli-plugin-unit-mocha-3.8.0.tgz#c3fdfd16ca756ee6335970e3dd669b42dad6ecbb" + integrity sha512-J+uPJUNsLVOR/mPtqXiQSQf/dgSU7oOyJSgFXB5vX2WOE3V736DHgWB7iR7qG9eCUV0fqcuz/q896VfszfsY0Q== dependencies: - "@vue/cli-shared-utils" "^3.2.0" - jsdom "^13.0.0" + "@vue/cli-shared-utils" "^3.8.0" + jsdom "^13.2.0" jsdom-global "^3.0.2" mocha "^5.2.0" mocha-webpack "^2.0.0-beta.0" "@vue/cli-service@^3.0.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@vue/cli-service/-/cli-service-3.2.0.tgz#96e8ee7b33a911ab71710c126ab55cd64c2a4c51" - integrity sha512-HTiaz1IBXV/JCfrmyhHJvDOYpPTBK0uQAekSVRTt5AddCeOV68ktdUqHbDe3VPDfrWFA5x3d3kIHlJd6WK31mA== + version "3.8.4" + resolved "https://registry.yarnpkg.com/@vue/cli-service/-/cli-service-3.8.4.tgz#fecf63c8e0a838e2468d2a79059e39f2cbb1fdc5" + integrity sha512-OWKTPZN+Wk3gpd8ar6DsQWlpIFPCIULZuVsHarJXjlXpIx3FOleXzaT2QiDB+tprbTRZMfsMMZMt5b0nvacY9Q== dependencies: "@intervolga/optimize-cssnano-plugin" "^1.0.5" - "@vue/cli-overlay" "^3.2.0" - "@vue/cli-shared-utils" "^3.2.0" + "@soda/friendly-errors-webpack-plugin" "^1.7.1" + "@vue/cli-overlay" "^3.8.0" + "@vue/cli-shared-utils" "^3.8.0" + "@vue/component-compiler-utils" "^2.6.0" "@vue/preload-webpack-plugin" "^1.1.0" "@vue/web-component-wrapper" "^1.2.0" - acorn "^6.0.4" + acorn "^6.1.1" acorn-walk "^6.1.1" address "^1.0.3" - autoprefixer "^8.6.5" - cache-loader "^1.2.5" - case-sensitive-paths-webpack-plugin "^2.1.2" - chalk "^2.4.1" - clipboardy "^1.2.3" - cliui "^4.1.0" + autoprefixer "^9.5.1" + browserslist "^4.5.4" + cache-loader "^2.0.1" + case-sensitive-paths-webpack-plugin "^2.2.0" + chalk "^2.4.2" + cli-highlight "^2.1.0" + clipboardy "^2.0.0" + cliui "^5.0.0" copy-webpack-plugin "^4.6.0" css-loader "^1.0.1" - cssnano "^4.1.7" - debug "^4.1.0" + cssnano "^4.1.10" + current-script-polyfill "^1.0.0" + debug "^4.1.1" + default-gateway "^5.0.2" + dotenv "^7.0.0" + dotenv-expand "^5.1.0" escape-string-regexp "^1.0.5" - file-loader "^2.0.0" - friendly-errors-webpack-plugin "^1.7.0" + file-loader "^3.0.1" fs-extra "^7.0.1" - globby "^8.0.1" + globby "^9.2.0" hash-sum "^1.0.2" html-webpack-plugin "^3.2.0" launch-editor-middleware "^2.2.1" lodash.defaultsdeep "^4.6.0" lodash.mapvalues "^4.6.0" lodash.transform "^4.6.0" - mini-css-extract-plugin "^0.4.5" + mini-css-extract-plugin "^0.6.0" minimist "^1.2.0" - ora "^3.0.0" - portfinder "^1.0.19" + ora "^3.4.0" + portfinder "^1.0.20" postcss-loader "^3.0.0" - read-pkg "^4.0.1" - semver "^5.6.0" + read-pkg "^5.0.0" + semver "^6.0.0" slash "^2.0.0" source-map-url "^0.4.0" ssri "^6.0.1" string.prototype.padend "^3.0.0" - terser-webpack-plugin "^1.1.0" - thread-loader "^1.2.0" + terser-webpack-plugin "^1.2.3" + thread-loader "^2.1.2" url-loader "^1.1.2" - vue-loader "^15.4.2" - webpack "^4.26.1" - webpack-bundle-analyzer "^3.0.3" + vue-loader "^15.7.0" + webpack ">=4 < 4.29" + webpack-bundle-analyzer "^3.3.0" webpack-chain "^4.11.0" - webpack-dev-server "^3.1.10" - webpack-merge "^4.1.4" + webpack-dev-server "^3.4.1" + webpack-merge "^4.2.1" yorkie "^2.0.0" -"@vue/cli-shared-utils@^3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@vue/cli-shared-utils/-/cli-shared-utils-3.2.0.tgz#504037063c2a4a346dc35c9652bd3863da4816e7" - integrity sha512-FCX5ABFg5pWhomyXLpCaogJktMvjsS5d4Mn5BfvqcJxCvzOX6ze8ihFK3u//XMeM78dOFpHSjxnRSvHtkEwgsg== +"@vue/cli-shared-utils@^3.8.0": + version "3.8.0" + resolved "https://registry.yarnpkg.com/@vue/cli-shared-utils/-/cli-shared-utils-3.8.0.tgz#e7e728164eb92bd9e205fcd08dae896ee79cba5a" + integrity sha512-wn1L8pmQnotfftHOYm0VeXs2+cQTySd73uhWXwyO6pT0ehjqlY5c2RTipClmFF3Q+YCYjwlNpsV650F3l1tV8w== dependencies: + "@hapi/joi" "^15.0.1" chalk "^2.4.1" execa "^1.0.0" - joi "^13.0.0" launch-editor "^2.2.1" - lru-cache "^4.1.3" + lru-cache "^5.1.1" node-ipc "^9.1.1" - opn "^5.3.0" - ora "^2.1.0" + open "^6.3.0" + ora "^3.4.0" request "^2.87.0" - request-promise-native "^1.0.5" - semver "^5.5.0" + request-promise-native "^1.0.7" + semver "^6.0.0" string.prototype.padstart "^3.0.0" "@vue/component-compiler-utils@^1.2.1": @@ -864,20 +1024,20 @@ source-map "^0.5.6" vue-template-es2015-compiler "^1.6.0" -"@vue/component-compiler-utils@^2.0.0": - version "2.3.1" - resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-2.3.1.tgz#d1c2623f02ad3fe6b6fc9c3762be55c9c61e3977" - integrity sha512-8VuzMhHTf5UU7+HvBeEbBmYiNLvRxIXtDpvxUl5x26WBPgKmQuuJVFY3dN3GFgnWK9Rveh/u/8NF4quhdUUQ1Q== +"@vue/component-compiler-utils@^2.5.1", "@vue/component-compiler-utils@^2.6.0": + version "2.6.0" + resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-2.6.0.tgz#aa46d2a6f7647440b0b8932434d22f12371e543b" + integrity sha512-IHjxt7LsOFYc0DkTncB7OXJL7UzwOLPPQCfEUNyxL2qt+tF12THV+EO33O1G2Uk4feMSWua3iD39Itszx0f0bw== dependencies: consolidate "^0.15.1" hash-sum "^1.0.2" lru-cache "^4.1.2" merge-source-map "^1.1.0" - postcss "^6.0.20" - postcss-selector-parser "^3.1.1" - prettier "1.13.7" - source-map "^0.5.6" - vue-template-es2015-compiler "^1.6.0" + postcss "^7.0.14" + postcss-selector-parser "^5.0.0" + prettier "1.16.3" + source-map "~0.6.1" + vue-template-es2015-compiler "^1.9.0" "@vue/preload-webpack-plugin@^1.1.0": version "1.1.0" @@ -885,9 +1045,9 @@ integrity sha512-rcn2KhSHESBFMPj5vc5X2pI9bcBNQQixvJXhD5gZ4rN2iym/uH2qfDSQfUS5+qwiz0a85TCkeUs6w6jxFDudbw== "@vue/test-utils@^1.0.0-beta.20": - version "1.0.0-beta.27" - resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-1.0.0-beta.27.tgz#7e5f7b7180c00e28a4ca55c0ff0a7e754377fdb2" - integrity sha512-Lzrd4ZBkS70Tl8JbXbDrN/NcSaH9aZT6+7emU3QhTJ+CrorJpyFDA1dkvSIhH+rDTs8sHFbGeXjXV/qorXxtRw== + version "1.0.0-beta.29" + resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-1.0.0-beta.29.tgz#c942cf25e891cf081b6a03332b4ae1ef430726f0" + integrity sha512-yX4sxEIHh4M9yAbLA/ikpEnGKMNBCnoX98xE1RwxfhQVcn0MaXNSj1Qmac+ZydTj6VBSEVukchBogXBTwc+9iA== dependencies: dom-event-types "^1.0.0" lodash "^4.17.4" @@ -1060,13 +1220,13 @@ abbrev@1: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -accepts@~1.3.4, accepts@~1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" - integrity sha1-63d99gEXI6OxTopywIBcjoZ0a9I= +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== dependencies: - mime-types "~2.1.18" - negotiator "0.6.1" + mime-types "~2.1.24" + negotiator "0.6.2" acorn-bigint@^0.2.0: version "0.2.0" @@ -1097,9 +1257,9 @@ acorn-globals@^3.0.0: acorn "^4.0.4" acorn-globals@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.0.tgz#e3b6f8da3c1552a95ae627571f7dd6923bb54103" - integrity sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw== + version "4.3.2" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.2.tgz#4e2c2313a597fd589720395f6354b41cd5ec8006" + integrity sha512-BbzvZhVtZP+Bs1J1HcwrQe8ycfO0wStkSGxuul3He3GkHOIZ6eTqOkPuw9IP1X3+IkOo4wiJmwkobzXYz4wewQ== dependencies: acorn "^6.0.1" acorn-walk "^6.0.1" @@ -1176,20 +1336,20 @@ acorn@^4.0.4, acorn@~4.0.2: resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" integrity sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c= -acorn@^5.0.0, acorn@^5.2.1, acorn@^5.3.0, acorn@^5.4.0, acorn@^5.4.1, acorn@^5.5.0, acorn@^5.5.3, acorn@^5.6.2, acorn@^5.7.3: +acorn@^5.0.0, acorn@^5.2.1, acorn@^5.3.0, acorn@^5.4.0, acorn@^5.4.1, acorn@^5.5.0, acorn@^5.5.3, acorn@^5.6.2: version "5.7.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== -acorn@^6.0.1, acorn@^6.0.4: - version "6.0.4" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.4.tgz#77377e7353b72ec5104550aa2d2097a2fd40b754" - integrity sha512-VY4i5EKSKkofY2I+6QLTbTTN/UvEQPCo6eiwzzSaSWfpaDhOmStMCMod6wmuPciNq+XS0faCglFu2lHZpdHUtg== +acorn@^6.0.1, acorn@^6.0.4, acorn@^6.0.7, acorn@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f" + integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA== address@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/address/-/address-1.0.3.tgz#b5f50631f8d6cec8bd20c963963afb55e06cbce9" - integrity sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg== + version "1.1.0" + resolved "https://registry.yarnpkg.com/address/-/address-1.1.0.tgz#ef8e047847fcd2c5b6f50c16965f924fd99fe709" + integrity sha512-4diPfzWbLEIElVG4AnqP+00SULlPzNuyJFNnmMrLgyaxG6tZXJ1sn7mjBu4fHrJE+Yp/jgylOweJn2xsLMFggQ== ajv-errors@^1.0.0: version "1.0.1" @@ -1202,9 +1362,9 @@ ajv-keywords@^2.1.0: integrity sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I= ajv-keywords@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" - integrity sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo= + version "3.4.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.0.tgz#4b831e7b531415a7cc518cd404e73f6193c6349d" + integrity sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw== ajv@^5.2.3, ajv@^5.3.0: version "5.5.2" @@ -1217,9 +1377,9 @@ ajv@^5.2.3, ajv@^5.3.0: json-schema-traverse "^0.3.0" ajv@^6.1.0, ajv@^6.5.5: - version "6.6.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.6.2.tgz#caceccf474bf3fc3ce3b147443711a24063cc30d" - integrity sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g== + version "6.10.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1" + integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg== dependencies: fast-deep-equal "^2.0.1" fast-json-stable-stringify "^2.0.0" @@ -1246,14 +1406,14 @@ amdefine@>=0.0.4: integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= ansi-colors@^3.0.0: - version "3.2.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" - integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== + version "3.2.4" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== ansi-escapes@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" - integrity sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw== + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== ansi-html@0.0.7: version "0.0.7" @@ -1270,18 +1430,28 @@ ansi-regex@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= -ansi-styles@^3.2.1: +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" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= + anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -1295,7 +1465,7 @@ aproba@^1.0.3, aproba@^1.1.1: resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== -arch@^2.1.0: +arch@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.1.tgz#8f5c2731aa35a30929221bb0640eed65175ec84e" integrity sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg== @@ -1370,7 +1540,7 @@ array-reduce@~0.0.0: resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys= -array-union@^1.0.1: +array-union@^1.0.1, array-union@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= @@ -1387,11 +1557,6 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= - asap@~2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" @@ -1419,10 +1584,11 @@ assert-plus@1.0.0, assert-plus@^1.0.0: integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= assert@^1.1.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" - integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE= + version "1.5.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== dependencies: + object-assign "^4.1.1" util "0.10.3" assertion-error@^1.1.0: @@ -1435,10 +1601,10 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= -async-each@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" - integrity sha1-GdOGodntxufByF04iu28xW0zYC0= +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== async-foreach@^0.1.3: version "0.1.3" @@ -1455,13 +1621,6 @@ async@^1.5.2: resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= -async@^2.3.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" - integrity sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ== - dependencies: - lodash "^4.17.10" - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -1472,17 +1631,18 @@ atob@^2.1.1: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@^8.6.5: - version "8.6.5" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-8.6.5.tgz#343f3d193ed568b3208e00117a1b96eb691d4ee9" - integrity sha512-PLWJN3Xo/rycNkx+mp8iBDMTm3FeWe4VmYaZDSqL5QQB9sLsQkG5k8n+LNDFnhh9kdq2K+egL/icpctOmDHwig== +autoprefixer@^9.5.1: + version "9.6.0" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.6.0.tgz#0111c6bde2ad20c6f17995a33fad7cf6854b4c87" + integrity sha512-kuip9YilBqhirhHEGHaBTZKXL//xxGnzvsD0FtBQa6z+A69qZD6s/BAX9VzDF1i9VKDquTJDQaPLSEhOnL6FvQ== dependencies: - browserslist "^3.2.8" - caniuse-lite "^1.0.30000864" + browserslist "^4.6.1" + caniuse-lite "^1.0.30000971" + chalk "^2.4.2" normalize-range "^0.1.2" num2fraction "^1.2.2" - postcss "^6.0.23" - postcss-value-parser "^3.2.3" + postcss "^7.0.16" + postcss-value-parser "^3.3.1" aws-sign2@~0.7.0: version "0.7.0" @@ -1495,12 +1655,12 @@ aws4@^1.8.0: integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== axios@^0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.0.tgz#32d53e4851efdc0a11993b6cd000789d70c05102" - integrity sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI= + version "0.18.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.1.tgz#ff3f0de2e7b5d180e757ad98000f1081b87bcea3" + integrity sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g== dependencies: - follow-redirects "^1.3.0" - is-buffer "^1.1.5" + follow-redirects "1.5.10" + is-buffer "^2.0.2" babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: version "6.26.0" @@ -1523,20 +1683,15 @@ babel-eslint@^10.0.1: eslint-scope "3.7.1" eslint-visitor-keys "^1.0.0" -babel-helper-vue-jsx-merge-props@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz#22aebd3b33902328e513293a8e4992b384f9f1b6" - integrity sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg== - -babel-loader@^8.0.4: - version "8.0.4" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.4.tgz#7bbf20cbe4560629e2e41534147692d3fecbdce6" - integrity sha512-fhBhNkUToJcW9nV46v8w87AJOwAJDz84c1CL57n3Stj73FANM/b9TbCUK4YhdOwEyZ+OxhYpdeZDNzSI29Firw== +babel-loader@^8.0.5: + version "8.0.6" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb" + integrity sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw== dependencies: - find-cache-dir "^1.0.0" + find-cache-dir "^2.0.0" loader-utils "^1.0.2" mkdirp "^0.5.1" - util.promisify "^1.0.0" + pify "^4.0.1" babel-plugin-dynamic-import-node@^2.2.0: version "2.2.0" @@ -1545,12 +1700,16 @@ babel-plugin-dynamic-import-node@^2.2.0: dependencies: object.assign "^4.1.0" -babel-plugin-transform-vue-jsx@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-4.0.1.tgz#2c8bddce87a6ef09eaa59869ff1bfbeeafc5f88d" - integrity sha512-wbOz7ITB5cloLSjKUU1hWn8zhR+Dwah/RZiTiJY/CQliCwhowmzu6m7NEF+y5EJX/blDzGjRtZvC10Vdb3Q7vw== +babel-plugin-module-resolver@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-module-resolver/-/babel-plugin-module-resolver-3.2.0.tgz#ddfa5e301e3b9aa12d852a9979f18b37881ff5a7" + integrity sha512-tjR0GvSndzPew/Iayf4uICWZqjBwnlMWjSx6brryfQ81F9rxBVqwDJtFCV8oOs0+vJeefK9TmdZtkIFdFe1UnA== dependencies: - esutils "^2.0.2" + find-babel-config "^1.1.0" + glob "^7.1.2" + pkg-up "^2.0.0" + reselect "^3.0.1" + resolve "^1.4.0" babel-runtime@^6.18.0, babel-runtime@^6.26.0: version "6.26.0" @@ -1625,10 +1784,15 @@ big.js@^3.1.3: resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + binary-extensions@^1.0.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14" - integrity sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg== + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== block-stream@*: version "0.0.9" @@ -1637,31 +1801,31 @@ block-stream@*: dependencies: inherits "~2.0.0" -bluebird@^3.1.1, bluebird@^3.5.1: - version "3.5.3" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" - integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== +bluebird@^3.1.1, bluebird@^3.5.1, bluebird@^3.5.3: + version "3.5.5" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" + integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w== 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" integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== -body-parser@1.18.3: - version "1.18.3" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" - integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ= +body-parser@1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== dependencies: - bytes "3.0.0" + bytes "3.1.0" content-type "~1.0.4" debug "2.6.9" depd "~1.1.2" - http-errors "~1.6.3" - iconv-lite "0.4.23" + http-errors "1.7.2" + iconv-lite "0.4.24" on-finished "~2.3.0" - qs "6.5.2" - raw-body "2.3.3" - type-is "~1.6.16" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" bonjour@^3.5.0: version "3.5.0" @@ -1688,7 +1852,7 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^2.3.0, braces@^2.3.1: +braces@^2.3.1, braces@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== @@ -1778,22 +1942,14 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^3.2.8: - version "3.2.8" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" - integrity sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== +browserslist@^4.0.0, browserslist@^4.3.4, browserslist@^4.5.4, browserslist@^4.6.1: + version "4.6.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.6.2.tgz#574c665950915c2ac73a4594b8537a9eba26203f" + integrity sha512-2neU/V0giQy9h3XMPwLhEY3+Ao0uHSwHvU8Q1Ea6AgLVL1sXbX3dzPrJ8NWe5Hi4PoTkCYXOtVR9rfRLI0J/8Q== dependencies: - caniuse-lite "^1.0.30000844" - electron-to-chromium "^1.3.47" - -browserslist@^4.0.0, browserslist@^4.3.4: - version "4.3.6" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.3.6.tgz#0f9d9081afc66b36f477c6bdf3813f784f42396a" - integrity sha512-kMGKs4BTzRWviZ8yru18xBpx+CyHG9eqgRbj9XbE3IMgtczf4aiA0Y1YCpVdvUieKGZ03kolSPXqTcscBCb9qw== - dependencies: - caniuse-lite "^1.0.30000921" - electron-to-chromium "^1.3.92" - node-releases "^1.1.1" + caniuse-lite "^1.0.30000974" + electron-to-chromium "^1.3.150" + node-releases "^1.1.23" buffer-from@^1.0.0: version "1.1.1" @@ -1819,11 +1975,6 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" -builtin-modules@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" - integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= - builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" @@ -1834,6 +1985,11 @@ bytes@3.0.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + cacache@^10.0.4: version "10.0.4" resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" @@ -1853,24 +2009,24 @@ cacache@^10.0.4: unique-filename "^1.1.0" y18n "^4.0.0" -cacache@^11.0.2: - version "11.3.1" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.1.tgz#d09d25f6c4aca7a6d305d141ae332613aa1d515f" - integrity sha512-2PEw4cRRDu+iQvBTTuttQifacYjLPhET+SYO/gEFMy8uhi+jlJREDAjSF5FWSdV/Aw5h18caHA7vMTw2c+wDzA== +cacache@^11.3.2: + version "11.3.2" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.2.tgz#2d81e308e3d258ca38125b676b98b2ac9ce69bfa" + integrity sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg== dependencies: - bluebird "^3.5.1" - chownr "^1.0.1" - figgy-pudding "^3.1.0" - glob "^7.1.2" - graceful-fs "^4.1.11" - lru-cache "^4.1.3" + bluebird "^3.5.3" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.3" + graceful-fs "^4.1.15" + lru-cache "^5.1.1" mississippi "^3.0.0" mkdirp "^0.5.1" move-concurrently "^1.0.1" promise-inflight "^1.0.1" rimraf "^2.6.2" - ssri "^6.0.0" - unique-filename "^1.1.0" + ssri "^6.0.1" + unique-filename "^1.1.1" y18n "^4.0.0" cache-base@^1.0.1: @@ -1888,15 +2044,16 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" -cache-loader@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/cache-loader/-/cache-loader-1.2.5.tgz#9ab15b0ae5f546f376083a695fc1a75f546cb266" - integrity sha512-enWKEQ4kO3YreDFd7AtVRjtJBmNiqh/X9hVDReu0C4qm8gsGmySkwuWtdc+N5O+vq5FzxL1mIZc30NyXCB7o/Q== +cache-loader@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/cache-loader/-/cache-loader-2.0.1.tgz#5758f41a62d7c23941e3c3c7016e6faeb03acb07" + integrity sha512-V99T3FOynmGx26Zom+JrVBytLBsmUCzVG2/4NnUKgvXN4bEV42R1ERl1IyiH/cvFIDA1Ytq2lPZ9tXDSahcQpQ== dependencies: loader-utils "^1.1.0" mkdirp "^0.5.1" - neo-async "^2.5.0" - schema-utils "^0.4.2" + neo-async "^2.6.0" + normalize-path "^3.0.0" + schema-utils "^1.0.0" call-me-maybe@^1.0.1: version "1.0.1" @@ -1970,6 +2127,11 @@ camelcase@^4.1.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + caniuse-api@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" @@ -1980,15 +2142,15 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000864, caniuse-lite@^1.0.30000921: - version "1.0.30000923" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000923.tgz#148f9bda508024b5ce957b463ae2e8302b451bb2" - integrity sha512-j5ur7eeluOFjjPUkydtXP4KFAsmH3XaQNch5tvWSO+dLHYt5PE+VgJZLWtbVOodfWij6m6zas28T4gB/cLYq1w== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000971, caniuse-lite@^1.0.30000974: + version "1.0.30000974" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000974.tgz#b7afe14ee004e97ce6dc73e3f878290a12928ad8" + integrity sha512-xc3rkNS/Zc3CmpMKuczWEdY2sZgx09BkAxfvkxlAEBTqcMHeL8QnPqhKse+5sRTi3nrw2pJwToD2WvKn1Uhvww== -case-sensitive-paths-webpack-plugin@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.1.2.tgz#c899b52175763689224571dad778742e133f0192" - integrity sha512-oEZgAFfEvKtjSRCu6VgYkuGxwrWXMnQzyBmlLPP7r6PWQVtHxP5Z5N6XsuJvtoVax78am/r7lr46bwo3IVEBOg== +case-sensitive-paths-webpack-plugin@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.2.0.tgz#3371ef6365ef9c25fa4b81c16ace0e9c7dc58c3e" + integrity sha512-u5ElzokS8A1pm9vM3/iDgTcI3xqHxuCao94Oz8etI3cf0Tio0p8izkDYbTIn09uP3yUUr6+veaE6IkjnTYS46g== caseless@~0.12.0: version "0.12.0" @@ -2026,10 +2188,10 @@ 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, chalk@^2.3.1, chalk@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" - integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ== +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" @@ -2058,36 +2220,35 @@ check-types@^7.3.0: integrity sha512-YbulWHdfP99UfZ73NcUDlNJhEIDgm9Doq9GhpyXbF+7Aegi3CVV7qqMCKTTqJxlvEvnQBp9IA+dxsGN6xK/nSg== 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" - integrity sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs= + version "1.0.0-rc.3" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.3.tgz#094636d425b2e9c0f4eb91a46c05630c9a1a8bf6" + integrity sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA== dependencies: css-select "~1.2.0" - dom-serializer "~0.1.0" + dom-serializer "~0.1.1" entities "~1.1.1" htmlparser2 "^3.9.1" lodash "^4.15.0" parse5 "^3.0.1" -chokidar@^2.0.0, chokidar@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" - integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ== +chokidar@^2.0.2, chokidar@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.6.tgz#b6cad653a929e244ce8a834244164d241fa954c5" + integrity sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g== dependencies: anymatch "^2.0.0" - async-each "^1.0.0" - braces "^2.3.0" + async-each "^1.0.1" + braces "^2.3.2" glob-parent "^3.1.0" - inherits "^2.0.1" + inherits "^2.0.3" is-binary-path "^1.0.0" is-glob "^4.0.0" - lodash.debounce "^4.0.8" - normalize-path "^2.1.1" + normalize-path "^3.0.0" path-is-absolute "^1.0.0" - readdirp "^2.0.0" - upath "^1.0.5" + readdirp "^2.2.1" + upath "^1.1.1" optionalDependencies: - fsevents "^1.2.2" + fsevents "^1.2.7" chownr@^1.0.1, chownr@^1.1.1: version "1.1.1" @@ -2095,9 +2256,9 @@ chownr@^1.0.1, chownr@^1.1.1: integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== 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" - integrity sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A== + version "1.0.2" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" + integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== dependencies: tslib "^1.9.0" @@ -2143,23 +2304,34 @@ cli-cursor@^2.1.0: dependencies: restore-cursor "^2.0.0" -cli-spinners@^1.1.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.3.1.tgz#002c1990912d0d59580c93bd36c056de99e4259a" - integrity sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg== +cli-highlight@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/cli-highlight/-/cli-highlight-2.1.1.tgz#2180223d51618b112f4509cf96e4a6c750b07e97" + integrity sha512-0y0VlNmdD99GXZHYnvrQcmHxP8Bi6T00qucGgBgGv4kJ0RyDthNnnFPupHV7PYv/OXSVk+azFbOeaW6+vGmx9A== + dependencies: + chalk "^2.3.0" + highlight.js "^9.6.0" + mz "^2.4.0" + parse5 "^4.0.0" + yargs "^13.0.0" + +cli-spinners@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.1.0.tgz#22c34b4d51f573240885b201efda4e4ec9fff3c7" + integrity sha512-8B00fJOEh1HPrx4fo5eW16XmE1PcL1tGpGrxy63CXGP9nHdPBN63X75hA1zhvQuhVztJWLqV58Roj2qlNM7cAA== cli-width@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= -clipboardy@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-1.2.3.tgz#0526361bf78724c1f20be248d428e365433c07ef" - integrity sha512-2WNImOvCRe6r63Gk9pShfkwXsVtKCroMAevIbiae021mS850UkWPbevxsBz3tnvjZIEGvlwaqCPsw+4ulzNgJA== +clipboardy@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-2.1.0.tgz#0123a0c8fac92f256dc56335e0bb8be97a4909a5" + integrity sha512-2pzOUxWcLlXWtn+Jd6js3o12TysNOOVes/aQfg+MT/35vrxWzedHlLwyoJpXjsFKWm95BTNEcMGD9+a7mKzZkQ== dependencies: - arch "^2.1.0" - execa "^0.8.0" + arch "^2.1.1" + execa "^1.0.0" cliui@^2.1.0: version "2.1.0" @@ -2179,7 +2351,7 @@ cliui@^3.2.0: strip-ansi "^3.0.1" wrap-ansi "^2.0.0" -cliui@^4.0.0, cliui@^4.1.0: +cliui@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== @@ -2188,6 +2360,15 @@ cliui@^4.0.0, cliui@^4.1.0: strip-ansi "^4.0.0" wrap-ansi "^2.0.0" +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + clone-deep@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-2.0.2.tgz#00db3a1e173656730d1188c3d6aced6d7ea97713" @@ -2208,7 +2389,7 @@ co@^4.6.0: resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= -coa@~2.0.1: +coa@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== @@ -2256,22 +2437,17 @@ color-string@^1.5.2: simple-swizzle "^0.2.2" color@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/color/-/color-3.1.0.tgz#d8e9fb096732875774c84bf922815df0308d0ffc" - integrity sha512-CwyopLkuRYO5ei2EpzpIh6LqJMt6Mt+jZhO5VI5f/wJLZriXQE32/SSqzmrh+QB+AZT81Cj8yv+7zwToW8ahZg== + version "3.1.2" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10" + integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg== dependencies: color-convert "^1.9.1" color-string "^1.5.2" -colors@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" - integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM= - combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" - integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w== + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" @@ -2280,12 +2456,17 @@ commander@2.15.1: resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag== -commander@2.17.x, commander@~2.17.1: +commander@2.17.x: version "2.17.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== commander@^2.18.0, commander@^2.19.0: + version "2.20.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" + integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== + +commander@~2.19.0: version "2.19.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== @@ -2296,27 +2477,27 @@ commondir@^1.0.1: integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= component-emitter@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" - integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== -compressible@~2.0.14: - version "2.0.15" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.15.tgz#857a9ab0a7e5a07d8d837ed43fe2defff64fe212" - integrity sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw== +compressible@~2.0.16: + version "2.0.17" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1" + integrity sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw== dependencies: - mime-db ">= 1.36.0 < 2" + mime-db ">= 1.40.0 < 2" -compression@^1.5.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.3.tgz#27e0e176aaf260f7f2c2813c3e440adb9f1993db" - integrity sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg== +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== dependencies: accepts "~1.3.5" bytes "3.0.0" - compressible "~2.0.14" + compressible "~2.0.16" debug "2.6.9" - on-headers "~1.0.1" + on-headers "~1.0.2" safe-buffer "5.1.2" vary "~1.1.2" @@ -2335,10 +2516,10 @@ concat-stream@^1.5.0, concat-stream@^1.6.0: readable-stream "^2.2.2" typedarray "^0.0.6" -connect-history-api-fallback@^1.3.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#b06873934bc5e344fef611a196a6faae0aee015a" - integrity sha1-sGhzk0vF40T+9hGhlqb6rgruAVo= +connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== console-browserify@^1.1.0: version "1.1.0" @@ -2374,10 +2555,12 @@ constants-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= -content-disposition@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" - integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ= +content-disposition@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" content-type@~1.0.4: version "1.0.4" @@ -2396,10 +2579,10 @@ cookie-signature@1.0.6: resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= -cookie@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" - integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== copy-concurrently@^1.0.0: version "1.0.5" @@ -2432,34 +2615,29 @@ copy-webpack-plugin@^4.6.0: p-limit "^1.0.0" serialize-javascript "^1.4.0" -core-js@^2.4.0, core-js@^2.5.7: - version "2.6.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.1.tgz#87416ae817de957a3f249b3b5ca475d4aaed6042" - integrity sha512-L72mmmEayPJBejKIWe2pYtGis5r0tQ5NaJekdhyXgeMQTpJoBsH0NL4ElY2LfSoV15xeQWKQ+XTTOZdyero5Xg== +core-js@^2.4.0, core-js@^2.6.5: + version "2.6.9" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2" + integrity sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A== + +core-js@^3.0.1: + version "3.1.4" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.1.4.tgz#3a2837fc48e582e1ae25907afcd6cf03b0cc7a07" + integrity sha512-YNZN8lt82XIMLnLirj9MhKDFZHalwzzrL9YLt6eb0T5D0EDl4IQ90IGkua8mHbnxNrkj1d8hbdizMc0Qmg1WnQ== 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" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -cosmiconfig@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz#760391549580bbd2df1e562bc177b13c290972dc" - integrity sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ== - dependencies: - is-directory "^0.3.1" - js-yaml "^3.9.0" - parse-json "^4.0.0" - require-from-string "^2.0.1" - cosmiconfig@^5.0.0: - version "5.0.7" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.7.tgz#39826b292ee0d78eda137dfa3173bd1c21a43b04" - integrity sha512-PcLqxTKiDmNT6pSpy4N6KtuPwb53W+2tzNvwOZw0WH9N6O0vLIBq0x8aj8Oj75ere4YcGi48bDFCL+3fRJdlNA== + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== dependencies: import-fresh "^2.0.0" is-directory "^0.3.1" - js-yaml "^3.9.0" + js-yaml "^3.13.1" parse-json "^4.0.0" create-ecdh@^4.0.0: @@ -2569,7 +2747,7 @@ css-loader@^1.0.1: postcss-value-parser "^3.3.0" source-list-map "^2.0.0" -css-select-base-adapter@~0.1.0: +css-select-base-adapter@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== @@ -2630,9 +2808,9 @@ css-url-regex@^1.1.0: integrity sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w= css-what@2.1, css-what@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.2.tgz#c0876d9d0480927d7d4920dcd72af3595649554d" - integrity sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ== + version "2.1.3" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" + integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== cssesc@^0.1.0: version "0.1.0" @@ -2644,40 +2822,40 @@ cssesc@^2.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== -cssnano-preset-default@^4.0.0, cssnano-preset-default@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.5.tgz#d1756c0259d98ad311e601ba76e95c60f6771ac1" - integrity sha512-f1uhya0ZAjPYtDD58QkBB0R+uYdzHPei7cDxJyQQIHt5acdhyGXaSXl2nDLzWHLwGFbZcHxQtkJS8mmNwnxTvw== +cssnano-preset-default@^4.0.0, cssnano-preset-default@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" + integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== dependencies: css-declaration-sorter "^4.0.1" cssnano-util-raw-cache "^4.0.1" postcss "^7.0.0" - postcss-calc "^7.0.0" - postcss-colormin "^4.0.2" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" postcss-convert-values "^4.0.1" - postcss-discard-comments "^4.0.1" + postcss-discard-comments "^4.0.2" postcss-discard-duplicates "^4.0.2" postcss-discard-empty "^4.0.1" postcss-discard-overridden "^4.0.1" - postcss-merge-longhand "^4.0.9" - postcss-merge-rules "^4.0.2" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" postcss-minify-font-values "^4.0.2" - postcss-minify-gradients "^4.0.1" - postcss-minify-params "^4.0.1" - postcss-minify-selectors "^4.0.1" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" postcss-normalize-charset "^4.0.1" - postcss-normalize-display-values "^4.0.1" - postcss-normalize-positions "^4.0.1" - postcss-normalize-repeat-style "^4.0.1" - postcss-normalize-string "^4.0.1" - postcss-normalize-timing-functions "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" postcss-normalize-unicode "^4.0.1" postcss-normalize-url "^4.0.1" - postcss-normalize-whitespace "^4.0.1" - postcss-ordered-values "^4.1.1" - postcss-reduce-initial "^4.0.2" - postcss-reduce-transforms "^4.0.1" - postcss-svgo "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.2" postcss-unique-selectors "^4.0.1" cssnano-util-get-arguments@^4.0.0: @@ -2702,17 +2880,17 @@ cssnano-util-same-parent@^4.0.0: resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== -cssnano@^4.0.0, cssnano@^4.1.7: - version "4.1.7" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.7.tgz#0bf112294bec103ab5f68d3f805732c8325a0b1b" - integrity sha512-AiXL90l+MDuQmRNyypG2P7ux7K4XklxYzNNUd5HXZCNcH8/N9bHPcpN97v8tXgRVeFL/Ed8iP8mVmAAu0ZpT7A== +cssnano@^4.0.0, cssnano@^4.1.10: + version "4.1.10" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" + integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== dependencies: cosmiconfig "^5.0.0" - cssnano-preset-default "^4.0.5" + cssnano-preset-default "^4.0.7" is-resolvable "^1.0.0" postcss "^7.0.0" -csso@^3.5.0: +csso@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/csso/-/csso-3.5.1.tgz#7b9eb8be61628973c1b261e169d2f024008e758b" integrity sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg== @@ -2720,17 +2898,22 @@ csso@^3.5.0: css-tree "1.0.0-alpha.29" cssom@0.3.x, cssom@^0.3.4: - version "0.3.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.4.tgz#8cd52e8a3acfd68d3aed38ee0a640177d2f9d797" - integrity sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog== + version "0.3.6" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.6.tgz#f85206cee04efa841f3c5982a74ba96ab20d65ad" + integrity sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A== cssstyle@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.1.1.tgz#18b038a9c44d65f7a8e428a653b9f6fe42faf5fb" - integrity sha512-364AI1l/M5TYcFH83JnOH/pSqgaNnKmYgKrm0didZMGKWjQB60dymwWy1rKUgL3J1ffdq9xVi2yGLHdSjjSNog== + version "1.2.2" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.2.2.tgz#427ea4d585b18624f6fdbf9de7a2a1a3ba713077" + integrity sha512-43wY3kl1CVQSvL7wUY1qXkxVGkStjpkDmVjiIKX8R97uhajy8Bybay78uOtqvh7Q5GK75dNPfW0geWjE6qQQow== dependencies: cssom "0.3.x" +current-script-polyfill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/current-script-polyfill/-/current-script-polyfill-1.0.0.tgz#f31cf7e4f3e218b0726e738ca92a02d3488ef615" + integrity sha1-8xz35PPiGLBybnOMqSoC00iO9hU= + currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" @@ -2738,10 +2921,10 @@ currently-unhandled@^0.4.1: dependencies: array-find-index "^1.0.1" -custom-event-polyfill@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/custom-event-polyfill/-/custom-event-polyfill-1.0.6.tgz#6b026e81cd9f7bc896bd6b016a427407bb068db1" - integrity sha512-3FxpFlzGcHrDykwWu+xWVXZ8PfykM/9/bI3zXb953sh+AjInZWcQmrnmvPoZgiqNjmbtTm10PWvYqvRW527x6g== +custom-event-polyfill@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/custom-event-polyfill/-/custom-event-polyfill-1.0.7.tgz#9bc993ddda937c1a30ccd335614c6c58c4f87aee" + integrity sha512-TDDkd5DkaZxZFM8p+1I3yAlvM3rSr1wbrOliG4yJiwinMZN8z/iGL7BTlDkrJcYTmgUSb4ywVCc3ZaUtOtC76w== cyclist@~0.2.2: version "0.2.2" @@ -2779,7 +2962,7 @@ de-indent@^1.0.2: resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0= -debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8: +debug@2.6.9, debug@^2.2.0, debug@^2.3.3: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -2793,32 +2976,25 @@ debug@3.1.0, debug@=3.1.0: dependencies: ms "2.0.0" -debug@^3.1.0, debug@^3.2.5: +debug@^3.1.0, debug@^3.2.5, debug@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== dependencies: ms "^2.1.1" -debug@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.0.tgz#373687bffa678b38b1cd91f861b63850035ddc87" - integrity sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg== +debug@^4.1.0, debug@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== dependencies: ms "^2.1.1" -decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: +decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= -decamelize@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-2.0.0.tgz#656d7bbc8094c4c788ea53c5840908c9c7d063c7" - integrity sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg== - dependencies: - xregexp "4.0.0" - 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" @@ -2856,12 +3032,20 @@ deepmerge@^2.1.0: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.2.1.tgz#5d3ff22a01c00f645405a2fbc17d0778a1801170" integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA== -default-gateway@^2.6.0: - version "2.7.2" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-2.7.2.tgz#b7ef339e5e024b045467af403d50348db4642d0f" - integrity sha512-lAc4i9QJR0YHSDFdzeBQKfZ1SRDG3hsJNEkrpcZa8QhBfidLAilT60BDEIVUUGqosFp425KOgB3uYqcnQrWafQ== +default-gateway@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" + integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== dependencies: - execa "^0.10.0" + execa "^1.0.0" + ip-regex "^2.1.0" + +default-gateway@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-5.0.2.tgz#d2d8a13d6fee406d9365d19ec9adccb8a60b82b3" + integrity sha512-wXuT0q8T5vxQNecrTgz/KbU2lPUMRc98I9Y5dnH3yhFB3BGYqtADK4lhivLlG0OfjhmfKx1PGILG2jR4zjI+WA== + dependencies: + execa "^1.0.0" ip-regex "^2.1.0" defaults@^1.0.3: @@ -2871,7 +3055,7 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" -define-properties@^1.1.2: +define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== @@ -2900,17 +3084,18 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" -del@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" - integrity sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU= +del@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" + integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== dependencies: + "@types/glob" "^7.1.1" globby "^6.1.0" - is-path-cwd "^1.0.0" - is-path-in-cwd "^1.0.0" - p-map "^1.1.1" - pify "^3.0.0" - rimraf "^2.2.8" + is-path-cwd "^2.0.0" + is-path-in-cwd "^2.0.0" + p-map "^2.0.0" + pify "^4.0.1" + rimraf "^2.6.3" delayed-stream@~1.0.0: version "1.0.0" @@ -2950,7 +3135,7 @@ detect-libc@^1.0.2: resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= -detect-node@^2.0.3: +detect-node@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== @@ -2974,12 +3159,11 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" -dir-glob@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" - integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== +dir-glob@^2.0.0, dir-glob@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" + integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== dependencies: - arrify "^1.0.1" path-type "^3.0.0" django-channels@^1.1.6: @@ -3021,7 +3205,7 @@ doctypes@^1.1.0: resolved "https://registry.yarnpkg.com/doctypes/-/doctypes-1.1.0.tgz#ea80b106a87538774e8a3a4a5afe293de489e0a9" integrity sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk= -dom-converter@~0.2: +dom-converter@^0.2: version "0.2.0" resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== @@ -3033,29 +3217,24 @@ dom-event-types@^1.0.0: resolved "https://registry.yarnpkg.com/dom-event-types/-/dom-event-types-1.0.0.tgz#5830a0a29e1bf837fe50a70cd80a597232813cae" integrity sha512-2G2Vwi2zXTHBGqXHsJ4+ak/iP0N8Ar+G8a7LiD2oup5o4sQWytwqqrZu/O6hIMV0KMID2PL69OhpshLO0n7UJQ== -dom-serializer@0, dom-serializer@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" - integrity sha1-BzxpdUbOB4DOI75KKOKT5AvDDII= +dom-serializer@0, dom-serializer@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" + integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA== dependencies: - domelementtype "~1.1.1" - entities "~1.1.1" + domelementtype "^1.3.0" + entities "^1.1.1" domain-browser@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== -domelementtype@1, domelementtype@^1.3.0: +domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== -domelementtype@~1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" - integrity sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs= - domexception@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" @@ -3063,13 +3242,6 @@ domexception@^1.0.1: dependencies: webidl-conversions "^4.0.2" -domhandler@2.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594" - integrity sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ= - dependencies: - domelementtype "1" - domhandler@^2.3.0: version "2.4.2" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" @@ -3077,13 +3249,6 @@ domhandler@^2.3.0: dependencies: domelementtype "1" -domutils@1.1: - version "1.1.6" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485" - integrity sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU= - dependencies: - domelementtype "1" - domutils@1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" @@ -3107,15 +3272,25 @@ dot-prop@^4.1.1: dependencies: is-obj "^1.0.0" +dotenv-expand@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== + +dotenv@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-7.0.0.tgz#a2be3cd52736673206e8a85fb5210eea29628e7c" + integrity sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g== + duplexer@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= duplexify@^3.4.2, duplexify@^3.6.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.1.tgz#b1a7a29c4abfd639585efaecce80d666b1e34125" - integrity sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA== + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== dependencies: end-of-stream "^1.0.0" inherits "^2.0.1" @@ -3155,14 +3330,14 @@ ee-first@1.1.1: integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= ejs@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz#498ec0d495655abc6f23cd61868d926464071aa0" - integrity sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ== + version "2.6.2" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.2.tgz#3a32c63d1cd16d11266cd4703b14fec4e74ab4f6" + integrity sha512-PcW2a0tyTuPHz3tWyYqtK6r1fZ3gp+3Sop8Ph+ZYN81Ob5rwmbHEzaqs10N3BEsaGTkh/ooniXK+WwszGlc2+Q== -electron-to-chromium@^1.3.47, electron-to-chromium@^1.3.92: - version "1.3.95" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.95.tgz#79fac438813ca7f3db182a525c2ab432934f6484" - integrity sha512-0JZEDKOQAE05EO/4rk3vLAE+PYFI9OLCVLAS4QAq1y+Bb2y1N6MyQJz62ynzHN/y0Ka/nO5jVJcahbCEdfiXLQ== +electron-to-chromium@^1.3.150: + version "1.3.163" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.163.tgz#7fc3d637f5d8fa4ca4a052cad0de7675bd98b911" + integrity sha512-uCEoqQeKrjlhUSUudY0XvyNVDhWR5XmnCIV0WXr2Qo9PVzEVXI75LHGtzwro9Qh8NNetRjSitrm8AfQvPGaSqA== elliptic@^6.0.0: version "6.4.1" @@ -3177,6 +3352,11 @@ elliptic@^6.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" @@ -3229,18 +3409,19 @@ error-stack-parser@^2.0.0: dependencies: stackframe "^1.0.4" -es-abstract@^1.4.3, es-abstract@^1.5.1, es-abstract@^1.6.1: - version "1.12.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165" - integrity sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA== +es-abstract@^1.12.0, es-abstract@^1.4.3, es-abstract@^1.5.1: + version "1.13.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" + integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== dependencies: - es-to-primitive "^1.1.1" + es-to-primitive "^1.2.0" function-bind "^1.1.1" - has "^1.0.1" - is-callable "^1.1.3" + has "^1.0.3" + is-callable "^1.1.4" is-regex "^1.0.4" + object-keys "^1.0.12" -es-to-primitive@^1.1.1: +es-to-primitive@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== @@ -3260,9 +3441,9 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1 integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= escodegen@^1.11.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz#b27a9389481d5bfd5bec76f7bb1eb3f8f4556589" - integrity sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw== + version "1.11.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.1.tgz#c485ff8d6b4cdb89e27f4a856e91f118401ca510" + integrity sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw== dependencies: esprima "^3.1.3" estraverse "^4.2.0" @@ -3271,10 +3452,10 @@ escodegen@^1.11.0: optionalDependencies: source-map "~0.6.1" -eslint-loader@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-2.1.1.tgz#2a9251523652430bfdd643efdb0afc1a2a89546a" - integrity sha512-1GrJFfSevQdYpoDzx8mEE2TDWsb/zmFuY09l6hURg1AeFIKQOvZ+vH0UPjzmd1CZIbfTV5HUkMeBmFiDBkgIsQ== +eslint-loader@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-2.1.2.tgz#453542a1230d6ffac90e4e7cb9cadba9d851be68" + integrity sha512-rA9XiXEOilLYPOIInvVH5S/hYfyTPyxag6DZhoQOduM+3TkghAEQ3VcFO8VnX4J4qg/UIBzp72aOf/xvYmpmsg== dependencies: loader-fs-cache "^1.0.0" loader-utils "^1.0.2" @@ -3313,9 +3494,9 @@ eslint-scope@^3.7.1: estraverse "^4.1.1" eslint-scope@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172" - integrity sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA== + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== dependencies: esrecurse "^4.1.0" estraverse "^4.1.1" @@ -3427,14 +3608,14 @@ event-pubsub@4.3.0: integrity sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ== eventemitter3@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" - integrity sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA== + version "3.1.2" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" + integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== -events@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" - integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= +events@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" + integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA== eventsource@^1.0.7: version "1.0.7" @@ -3451,19 +3632,6 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" -execa@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz#ff456a8f53f90f8eccc71a96d11bdfc7f082cb50" - integrity sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw== - dependencies: - cross-spawn "^6.0.0" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - execa@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" @@ -3516,39 +3684,39 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -express@^4.16.2, express@^4.16.3: - version "4.16.4" - resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e" - integrity sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg== +express@^4.16.3, express@^4.17.1: + version "4.17.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== dependencies: - accepts "~1.3.5" + accepts "~1.3.7" array-flatten "1.1.1" - body-parser "1.18.3" - content-disposition "0.5.2" + body-parser "1.19.0" + content-disposition "0.5.3" content-type "~1.0.4" - cookie "0.3.1" + cookie "0.4.0" cookie-signature "1.0.6" debug "2.6.9" depd "~1.1.2" encodeurl "~1.0.2" escape-html "~1.0.3" etag "~1.8.1" - finalhandler "1.1.1" + finalhandler "~1.1.2" fresh "0.5.2" merge-descriptors "1.0.1" methods "~1.1.2" on-finished "~2.3.0" - parseurl "~1.3.2" + parseurl "~1.3.3" path-to-regexp "0.1.7" - proxy-addr "~2.0.4" - qs "6.5.2" - range-parser "~1.2.0" + proxy-addr "~2.0.5" + qs "6.7.0" + range-parser "~1.2.1" safe-buffer "5.1.2" - send "0.16.2" - serve-static "1.13.2" - setprototypeof "1.1.0" - statuses "~1.4.0" - type-is "~1.6.16" + send "0.17.1" + serve-static "1.14.1" + setprototypeof "1.1.1" + statuses "~1.5.0" + type-is "~1.6.18" utils-merge "1.0.1" vary "~1.1.2" @@ -3615,10 +3783,10 @@ fast-deep-equal@^2.0.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= -fast-glob@^2.0.2: - version "2.2.4" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.4.tgz#e54f4b66d378040e0e4d6a68ec36bbc5b04363c0" - integrity sha512-FjK2nCGI/McyzgNtTESqaWP3trPvHyRyoyY70hxjc3oKPNmDe8taohLZpoVKoUjW85tbU5txaYUZCNtVzygl1g== +fast-glob@^2.2.6: + version "2.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== dependencies: "@mrmlnc/readdir-enhanced" "^2.2.1" "@nodelib/fs.stat" "^1.1.2" @@ -3650,13 +3818,13 @@ faye-websocket@^0.10.0: websocket-driver ">=0.5.1" faye-websocket@~0.11.1: - version "0.11.1" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38" - integrity sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg= + version "0.11.3" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" + integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== dependencies: websocket-driver ">=0.5.1" -figgy-pudding@^3.1.0, figgy-pudding@^3.5.1: +figgy-pudding@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== @@ -3676,10 +3844,10 @@ file-entry-cache@^2.0.0: flat-cache "^1.2.1" object-assign "^4.0.1" -file-loader@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-2.0.0.tgz#39749c82f020b9e85901dcff98e8004e6401cfde" - integrity sha512-YCsBfd1ZGCyonOKLxPiKPdu+8ld9HAaMEvJewzz+b2eTF7uL5Zm/HdBF6FjCrpCMRq25Mi0U1gl4pwn2TlH7hQ== +file-loader@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-3.0.1.tgz#f8e0ba0b599918b51adfe45d66d1e771ad560faa" + integrity sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw== dependencies: loader-utils "^1.0.2" schema-utils "^1.0.0" @@ -3699,19 +3867,27 @@ fill-range@^4.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" - integrity sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg== +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== dependencies: debug "2.6.9" encodeurl "~1.0.2" escape-html "~1.0.3" on-finished "~2.3.0" - parseurl "~1.3.2" - statuses "~1.4.0" + parseurl "~1.3.3" + statuses "~1.5.0" unpipe "~1.0.0" +find-babel-config@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/find-babel-config/-/find-babel-config-1.2.0.tgz#a9b7b317eb5b9860cda9d54740a8c8337a2283a2" + integrity sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA== + dependencies: + json5 "^0.5.1" + path-exists "^3.0.0" + find-cache-dir@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" @@ -3731,12 +3907,12 @@ find-cache-dir@^1.0.0: pkg-dir "^2.0.0" find-cache-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.0.0.tgz#4c1faed59f45184530fb9d7fa123a4d04a98472d" - integrity sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA== + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== dependencies: commondir "^1.0.1" - make-dir "^1.0.0" + make-dir "^2.0.0" pkg-dir "^3.0.0" find-up@^1.0.0: @@ -3779,20 +3955,27 @@ flat-cache@^1.2.1: write "^0.2.1" 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" - integrity sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw== + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== dependencies: - inherits "^2.0.1" - readable-stream "^2.0.4" + inherits "^2.0.3" + readable-stream "^2.3.6" -follow-redirects@^1.0.0, follow-redirects@^1.3.0: +follow-redirects@1.5.10: version "1.5.10" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== dependencies: debug "=3.1.0" +follow-redirects@^1.0.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.7.0.tgz#489ebc198dc0e7f64167bd23b03c4c19b5784c76" + integrity sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ== + dependencies: + debug "^3.2.6" + for-in@^0.1.3: version "0.1.8" resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" @@ -3841,15 +4024,6 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= -friendly-errors-webpack-plugin@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.0.tgz#efc86cbb816224565861a1be7a9d84d0aafea136" - integrity sha512-K27M3VK30wVoOarP651zDmb93R9zF28usW4ocaK3mfQeIEI5BPht/EzZs5E8QLLwbLRJQMwscAjDxYPb1FuNiw== - dependencies: - chalk "^1.1.3" - error-stack-parser "^2.0.0" - string-width "^2.0.0" - from2@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" @@ -3868,9 +4042,9 @@ fs-extra@^7.0.1: universalify "^0.1.0" fs-minipass@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" - integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ== + version "1.2.6" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07" + integrity sha512-crhvyXcMejjv3Z5d2Fa9sf5xLYVCF5O1c71QxbVnbLsmYMBEvDAftewesN/HhY03YRoA7zOMxjNGrF5svGaaeQ== dependencies: minipass "^2.2.1" @@ -3889,25 +4063,25 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^1.2.2: - version "1.2.4" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" - integrity sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg== +fsevents@^1.2.7: + version "1.2.9" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" + integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw== dependencies: - nan "^2.9.2" - node-pre-gyp "^0.10.0" + nan "^2.12.1" + node-pre-gyp "^0.12.0" -fstream@^1.0.0, fstream@^1.0.2: - version "1.0.11" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" - integrity sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE= +fstream@^1.0.0, fstream@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" + integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== dependencies: graceful-fs "^4.1.2" inherits "~2.0.0" mkdirp ">=0.5 0" rimraf "2" -function-bind@^1.0.2, function-bind@^1.1.0, function-bind@^1.1.1: +function-bind@^1.0.2, function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== @@ -3943,6 +4117,11 @@ get-caller-file@^1.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + get-func-name@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" @@ -4007,10 +4186,10 @@ glob@7.1.2: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2, glob@~7.1.1: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== +glob@^7.0.0, glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@~7.1.1: + version "7.1.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -4020,9 +4199,9 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2, glob@~7.1.1: path-is-absolute "^1.0.0" globals@^11.0.1, globals@^11.1.0: - version "11.9.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.9.0.tgz#bde236808e987f290768a93d065060d78e6ab249" - integrity sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg== + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globby@^6.1.0: version "6.1.0" @@ -4047,18 +4226,19 @@ globby@^7.1.1: pify "^3.0.0" slash "^1.0.0" -globby@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.1.tgz#b5ad48b8aa80b35b814fc1281ecc851f1d2b5b50" - integrity sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw== +globby@^9.2.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" + integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== dependencies: - array-union "^1.0.1" - dir-glob "^2.0.0" - fast-glob "^2.0.2" - glob "^7.1.2" - ignore "^3.3.5" - pify "^3.0.0" - slash "^1.0.0" + "@types/glob" "^7.1.1" + array-union "^1.0.2" + dir-glob "^2.2.2" + fast-glob "^2.2.6" + glob "^7.1.3" + ignore "^4.0.3" + pify "^4.0.1" + slash "^2.0.0" globule@^1.0.0: version "1.2.1" @@ -4069,7 +4249,7 @@ globule@^1.0.0: lodash "~4.17.10" minimatch "~3.0.2" -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6: version "4.1.15" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== @@ -4080,17 +4260,17 @@ growl@1.10.5: integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== gzip-size@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.0.0.tgz#a55ecd99222f4c48fd8c01c625ce3b349d0a0e80" - integrity sha512-5iI7omclyqrnWw4XbXAmGhPsABkSIDQonv2K0h61lybgofWa6iZyvrI3r2zsJH4P8Nb64fFVzlvfhs0g7BBxAA== + version "5.1.1" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" + integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== dependencies: duplexer "^0.1.1" - pify "^3.0.0" + pify "^4.0.1" -handle-thing@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" - integrity sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ= +handle-thing@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" + integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== har-schema@^2.0.0: version "2.0.0" @@ -4158,7 +4338,7 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has@^1.0.0, has@^1.0.1: +has@^1.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" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== @@ -4201,6 +4381,11 @@ hex-color-regex@^1.1.0: resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== +highlight.js@^9.6.0: + version "9.15.8" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.15.8.tgz#f344fda123f36f1a65490e932cf90569e4999971" + integrity sha512-RrapkKQWwE+wKdF73VsOa2RQdIoO3mxwJ4P8mhbI6KYJUraUHRKM5w5zQQKXNk0xNL4UVRdulV9SBJcmzJNzVA== + hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -4210,16 +4395,6 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -hoek@5.x.x: - version "5.0.4" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-5.0.4.tgz#0f7fa270a1cafeb364a4b2ddfaa33f864e4157da" - integrity sha512-Alr4ZQgoMlnere5FZJsIyfIjORBqZll5POhDsF4q64dPuJR6rNxXdDxtHSQq8OXRurhmx+PWYEE8bXRROY8h0w== - -hoek@6.x.x: - version "6.1.2" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-6.1.2.tgz#99e6d070561839de74ee427b61aa476bd6bddfd6" - integrity sha512-6qhh/wahGYZHFSFw12tBbJw5fsAhhwrrG/y3Cs0YMTv2WzMnL0oLPnQJjv1QJvEfylRSOFuP+xCu+tdx0tD16Q== - hoopy@^0.1.2: version "0.1.4" resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" @@ -4231,9 +4406,9 @@ hosted-git-info@^2.1.4: integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== howler@^2.0.14: - version "2.1.1" - resolved "https://registry.yarnpkg.com/howler/-/howler-2.1.1.tgz#b8ae44b83f4b8a5b5ef354030ed0927314d8a996" - integrity sha512-9nwyDCGxhAGMmNXDfMLv0M/uS/WUg2//jG6t96D8DqbbsVZgXQzsP/ZMItbWO/Fqg7Gg69kOv3xVSDzJdd7aqA== + version "2.1.2" + resolved "https://registry.yarnpkg.com/howler/-/howler-2.1.2.tgz#8433a09d8fe84132a3e726e05cb2bd352ef8bd49" + integrity sha512-oKrTFaVXsDRoB/jik7cEpWKTj7VieoiuzMYJ7E/EU5ayvmpRhumCv3YQ3823zi9VTJkSWAhbryHnlZAionGAJg== hpack.js@^2.1.6: version "2.1.6" @@ -4267,7 +4442,7 @@ html-encoding-sniffer@^1.0.2: dependencies: whatwg-encoding "^1.0.1" -html-entities@^1.2.0: +html-entities@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= @@ -4285,6 +4460,11 @@ html-minifier@^3.2.3: relateurl "0.2.x" uglify-js "3.4.x" +html-tags@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-2.0.0.tgz#10b30a386085f43cede353cc8fa7cb0deeea668b" + integrity sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos= + html-webpack-plugin@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" @@ -4298,34 +4478,35 @@ html-webpack-plugin@^3.2.0: toposort "^1.0.0" util.promisify "1.0.0" -htmlparser2@^3.8.2, htmlparser2@^3.9.1: - version "3.10.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.0.tgz#5f5e422dcf6119c0d983ed36260ce9ded0bee464" - integrity sha512-J1nEUGv+MkXS0weHNWVKJJ+UrLfePxRWpN3C9bEi9fLxL2+ggW94DQvgYVXsaT30PGwYRIZKNZXuyMhp3Di4bQ== +htmlparser2@^3.3.0, htmlparser2@^3.8.2, htmlparser2@^3.9.1: + version "3.10.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" + integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== dependencies: - domelementtype "^1.3.0" + domelementtype "^1.3.1" domhandler "^2.3.0" domutils "^1.5.1" entities "^1.1.1" inherits "^2.0.1" - readable-stream "^3.0.6" - -htmlparser2@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe" - integrity sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4= - dependencies: - domelementtype "1" - domhandler "2.1" - domutils "1.1" - readable-stream "1.0" + readable-stream "^3.1.1" http-deceiver@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= -http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: +http-errors@1.7.2, http-errors@~1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@~1.6.2: version "1.6.3" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= @@ -4335,22 +4516,22 @@ http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: setprototypeof "1.1.0" statuses ">= 1.4.0 < 2" -http-parser-js@>=0.4.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.0.tgz#d65edbede84349d0dc30320815a15d39cc3cbbd8" - integrity sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w== +"http-parser-js@>=0.4.0 <0.4.11": + version "0.4.10" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" + integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q= -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" - integrity sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q== +http-proxy-middleware@^0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" + integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== dependencies: - http-proxy "^1.16.2" + http-proxy "^1.17.0" is-glob "^4.0.0" - lodash "^4.17.5" - micromatch "^3.1.9" + lodash "^4.17.11" + micromatch "^3.1.10" -http-proxy@^1.16.2: +http-proxy@^1.17.0: version "1.17.0" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" integrity sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g== @@ -4378,13 +4559,6 @@ humanize@0.0.9: resolved "https://registry.yarnpkg.com/humanize/-/humanize-0.0.9.tgz#1994ffaecdfe9c441ed2bdac7452b7bb4c9e41a4" integrity sha1-GZT/rs3+nEQe0r2sdFK3u0yeQaQ= -iconv-lite@0.4.23: - version "0.4.23" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" - integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.4: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -4405,9 +4579,9 @@ icss-utils@^2.1.0: postcss "^6.0.1" ieee754@^1.1.4: - version "1.1.12" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b" - integrity sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA== + version "1.1.13" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" + integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== iferr@^0.1.5: version "0.1.5" @@ -4426,6 +4600,11 @@ ignore@^3.3.3, ignore@^3.3.5: resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== +ignore@^4.0.3: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + imagesloaded@4.1.4: version "4.1.4" resolved "https://registry.yarnpkg.com/imagesloaded/-/imagesloaded-4.1.4.tgz#1376efcd162bb768c34c3727ac89cc04051f3cc7" @@ -4485,11 +4664,6 @@ indexes-of@^1.0.1: resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= -indexof@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" - integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= - inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -4533,18 +4707,18 @@ inquirer@^3.0.6: strip-ansi "^4.0.0" through "^2.3.6" -internal-ip@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-3.0.1.tgz#df5c99876e1d2eb2ea2d74f520e3f669a00ece27" - integrity sha512-NXXgESC2nNVtU+pqmC9e6R8B1GpKxzsAQhffvh5AL79qKnodd+L7tnEQmTiUAVngqLalPbSqRA7XGIEL5nCd0Q== +internal-ip@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" + integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== dependencies: - default-gateway "^2.6.0" - ipaddr.js "^1.5.2" + default-gateway "^4.2.0" + ipaddr.js "^1.9.0" interpret@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" - integrity sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ= + version "1.2.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" + integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== invariant@^2.2.2: version "2.2.4" @@ -4573,15 +4747,10 @@ ip@^1.1.0, ip@^1.1.5: resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= -ipaddr.js@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e" - integrity sha1-6qM9bd16zo9/b+DJygRA5wZzix4= - -ipaddr.js@^1.5.2: - version "1.8.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.1.tgz#fa4b79fa47fd3def5e3b159825161c0a519c9427" - integrity sha1-+kt5+kf9Pe9eOxWYJRYcClGclCc= +ipaddr.js@1.9.0, ipaddr.js@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" + integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== is-absolute-url@^2.0.0: version "2.1.0" @@ -4624,14 +4793,12 @@ is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-builtin-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" - integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74= - dependencies: - builtin-modules "^1.0.0" +is-buffer@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.3.tgz#4ecf3fcf749cbd1e472689e109ac66261a25e725" + integrity sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw== -is-callable@^1.1.3, is-callable@^1.1.4: +is-callable@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== @@ -4749,9 +4916,9 @@ is-glob@^3.1.0: is-extglob "^2.1.0" is-glob@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" - integrity sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A= + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== dependencies: is-extglob "^2.1.1" @@ -4767,24 +4934,29 @@ is-obj@^1.0.0: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= -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" - integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= +is-path-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.1.0.tgz#2e0c7e463ff5b7a0eb60852d851a6809347a124c" + integrity sha512-Sc5j3/YnM8tDeyCsVeKlm/0p95075DyLmDEIkSgQ7mXkrOX+uTCtmQFm0CYzVyJwcCCmO3k8qfJt17SxQwB5Zw== -is-path-in-cwd@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" - integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ== +is-path-in-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" + integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== dependencies: - is-path-inside "^1.0.0" + is-path-inside "^2.1.0" -is-path-inside@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" - integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= +is-path-inside@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" + integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== dependencies: - path-is-inside "^1.0.1" + path-is-inside "^1.0.2" + +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" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" @@ -4859,13 +5031,6 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= -isemail@3.x.x: - version "3.2.0" - resolved "https://registry.yarnpkg.com/isemail/-/isemail-3.2.0.tgz#59310a021931a9fb06bbb51e155ce0b3f236832c" - integrity sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg== - dependencies: - punycode "2.x.x" - isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -4893,29 +5058,20 @@ javascript-stringify@^1.6.0: resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-1.6.0.tgz#142d111f3a6e3dae8f4a9afd77d45855b5a9cce3" integrity sha1-FC0RHzpuPa6PSpr9d9RYVbWpzOM= -joi@^13.0.0: - version "13.7.0" - resolved "https://registry.yarnpkg.com/joi/-/joi-13.7.0.tgz#cfd85ebfe67e8a1900432400b4d03bbd93fb879f" - integrity sha512-xuY5VkHfeOYK3Hdi91ulocfuFopwgbSORmIwzcwHKESQhC7w1kD5jaVSPnqDxS2I8t3RZ9omCKAxNwXN5zG1/Q== - dependencies: - hoek "5.x.x" - isemail "3.x.x" - topo "3.x.x" - jquery@x.*: - version "3.3.1" - resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.3.1.tgz#958ce29e81c9790f31be7792df5d4d95fc57fbca" - integrity sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg== + version "3.4.1" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.4.1.tgz#714f1f8d9dde4bdfa55764ba37ef214630d80ef2" + integrity sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw== js-base64@^2.1.8: - version "2.5.0" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.0.tgz#42255ba183ab67ce59a0dee640afdc00ab5ae93e" - integrity sha512-wlEBIZ5LP8usDylWbDNhKPEFVFdI5hCHpnVoT/Ysvoi/PRhJENm/Rlh9TvjYB38HFfKZN7OzEbRjmjvLkFw11g== + version "2.5.1" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121" + integrity sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw== js-levenshtein@^1.1.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.4.tgz#3a56e3cbf589ca0081eb22cd9ba0b1290a16d26e" - integrity sha512-PxfGzSs0ztShKrUYPIn5r0MtyAhYcCwmndozzpz8YObbPnD1jFxzlBGbRnX2mIu6Z13xN6+PTu05TQFnZFlzow== + version "1.1.6" + resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" + integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g== js-logger@^1.4.1: version "1.6.0" @@ -4949,10 +5105,10 @@ js-tokens@^3.0.2: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= -js-yaml@^3.12.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" - integrity sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A== +js-yaml@^3.13.1, js-yaml@^3.9.1: + version "3.13.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== dependencies: argparse "^1.0.7" esprima "^4.0.0" @@ -4967,10 +5123,10 @@ jsdom-global@^3.0.2: resolved "https://registry.yarnpkg.com/jsdom-global/-/jsdom-global-3.0.2.tgz#6bd299c13b0c4626b2da2c0393cd4385d606acb9" integrity sha1-a9KZwTsMRiay2iwDk81DhdYGrLk= -jsdom@^13.0.0: - version "13.1.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-13.1.0.tgz#fa7356f0cc8111d0f1077cb7800d06f22f1d66c7" - integrity sha512-C2Kp0qNuopw0smXFaHeayvharqF3kkcNqlcIlSX71+3XrsOFwkEPLt/9f5JksMmaul2JZYIQuY+WTpqHpQQcLg== +jsdom@^13.2.0: + version "13.2.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-13.2.0.tgz#b1a0dbdadc255435262be8ea3723d2dba0d7eb3a" + integrity sha512-cG1NtMWO9hWpqRNRR3dSvEQa8bFI6iLlqU2x4kwX51FQjp0qus8T9aBaAO6iGp3DeBrhdwuKxckknohkmfvsFw== dependencies: abab "^2.0.0" acorn "^6.0.4" @@ -4987,7 +5143,7 @@ jsdom@^13.0.0: pn "^1.1.0" request "^2.88.0" request-promise-native "^1.0.5" - saxes "^3.1.4" + saxes "^3.1.5" symbol-tree "^3.2.2" tough-cookie "^2.5.0" w3c-hr-time "^1.0.1" @@ -5040,15 +5196,22 @@ json-stringify-safe@~5.0.1: integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= json3@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" - integrity sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE= + version "3.3.3" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" + integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== -json5@^0.5.0: +json5@^0.5.0, json5@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + json5@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" @@ -5096,7 +5259,7 @@ jwt-decode@^2.2.0: resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-2.2.0.tgz#7d86bd56679f58ce6a84704a657dd392bba81a79" integrity sha1-fYa9VmefWM5qhHBKZX3TkruoGnk= -killable@^1.0.0: +killable@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== @@ -5179,17 +5342,17 @@ load-json-file@^1.0.0: strip-bom "^2.0.0" loader-fs-cache@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.1.tgz#56e0bf08bd9708b26a765b68509840c8dec9fdbc" - integrity sha1-VuC/CL2XCLJqdltoUJhAyN7J/bw= + version "1.0.2" + resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.2.tgz#54cedf6b727e1779fd8f01205f05f6e88706f086" + integrity sha512-70IzT/0/L+M20jUlEqZhZyArTU6VKLRTYRDAYN26g4jfzpJqjipLL3/hgYpySqI9PwsVRHHFja0LfEmsx9X2Cw== dependencies: find-cache-dir "^0.1.1" mkdirp "0.5.1" -loader-runner@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.1.tgz#026f12fe7c3115992896ac02ba022ba92971b979" - integrity sha512-By6ZFY7ETWOc9RFaAIb23IjJVcM4dvJC/N57nmdz9RSkMXvAXGI7SyVlAw3v8vjtDRlqThgVDVmTnr9fqMlxkw== +loader-runner@^2.3.0, loader-runner@^2.3.1: + version "2.4.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== loader-utils@^0.2.16: version "0.2.17" @@ -5201,19 +5364,19 @@ loader-utils@^0.2.16: json5 "^0.5.0" object-assign "^4.0.1" -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" - integrity sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0= +loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" + integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== dependencies: - big.js "^3.1.3" + big.js "^5.2.2" emojis-list "^2.0.0" - json5 "^0.5.0" + json5 "^1.0.1" -loadjs@^3.5.4: - version "3.5.5" - resolved "https://registry.yarnpkg.com/loadjs/-/loadjs-3.5.5.tgz#2fbaa981ffdd079e0f8786ea75aeed643483b368" - integrity sha512-qBuLnKt4C6+vctutozFqPHQ6s4SSa9tcE64NsvDJ92UZmUrFvqGI1oVOtnZz2xwpgOT+2niQtHtQIDP4e/wlTA== +loadjs@^3.6.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/loadjs/-/loadjs-3.6.1.tgz#1e756ccd4f4c5ed4988085b330e1b4ad9b6a8340" + integrity sha512-AZEBw2GWdJk2IzBgQ+Wohoao5j+t0rajqK8dJu8jQqgYxDTxhmCt0ayMo/vCa0ZAMvZxnJcam6uLICfnVd8KAw== locate-path@^2.0.0: version "2.0.0" @@ -5231,21 +5394,6 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" -lodash.assign@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" - integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc= - -lodash.clonedeep@^4.3.2: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= - lodash.defaultsdeep@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.0.tgz#bec1024f85b1bd96cbea405b23c14ad6443a6f81" @@ -5256,6 +5404,11 @@ lodash.get@^4.4.2: resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= +lodash.kebabcase@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" + integrity sha1-hImxyw0p/4gZXM7KRI/21swpXDY= + lodash.mapvalues@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" @@ -5266,11 +5419,6 @@ lodash.memoize@^4.1.2: resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= -lodash.mergewith@^4.6.0: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz#639057e726c3afbdb3e7d42741caa8d6e4335927" - integrity sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ== - lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" @@ -5291,7 +5439,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.0.0, lodash@^4.13.1, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0, lodash@~4.17.10: +lodash@^4.0.0, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0, lodash@~4.17.10: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== @@ -5303,16 +5451,21 @@ log-symbols@^2.2.0: dependencies: chalk "^2.0.1" -loglevel@^1.4.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" - integrity sha1-4PyVEztu8nbNyIh82vJKpvFW+Po= +loglevel@^1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.3.tgz#77f2eb64be55a404c9fd04ad16d57c1d6d6b1280" + integrity sha512-LoEDv5pgpvWgPF4kNYuIp0qqSJVWak/dML0RY74xlzMZiT9w77teNAwKYKWBTYjlokMirg+o3jBwp+vlLrcfAA== -lolex@^2.3.2, lolex@^2.7.5: +lolex@^2.7.5: version "2.7.5" resolved "https://registry.yarnpkg.com/lolex/-/lolex-2.7.5.tgz#113001d56bfc7e02d56e36291cc5c413d1aa0733" integrity sha512-l9x0+1offnKKIzYVjyXU2SiwhXDLekRzKyhnbyldPHvC7BvLPVpdNUNR2KeMAiCN2D/kLNttZgQD5WjSxuBx3Q== +lolex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/lolex/-/lolex-4.1.0.tgz#ecdd7b86539391d8237947a3419aa8ac975f0fe1" + integrity sha512-BYxIEXiVq5lGIXeVHnsFzqa1TxN5acnKnPCdlZSpzm8viNEOhiigupA4vTQ9HEFQ6nLTQ9wQOgBknJgzUYQ9Aw== + longest@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" @@ -5338,7 +5491,7 @@ lower-case@^1.1.1: resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= -lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2, lru-cache@^4.1.3: +lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== @@ -5346,6 +5499,13 @@ lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2, lru-cache@^4.1.3: pseudomap "^1.0.2" yallist "^2.1.2" +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + make-dir@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -5353,6 +5513,14 @@ make-dir@^1.0.0: dependencies: pify "^3.0.0" +make-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + map-age-cleaner@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" @@ -5412,13 +5580,13 @@ mem@^1.1.0: mimic-fn "^1.0.0" mem@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.0.0.tgz#6437690d9471678f6cc83659c00cbafcd6b0cdaf" - integrity sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA== + version "4.3.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" + integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== dependencies: map-age-cleaner "^0.1.1" - mimic-fn "^1.0.0" - p-is-promise "^1.1.0" + mimic-fn "^2.0.0" + p-is-promise "^2.0.0" memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1: version "0.4.1" @@ -5466,7 +5634,7 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8, micromatch@^3.1.9: +micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -5493,39 +5661,45 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -"mime-db@>= 1.36.0 < 2", mime-db@~1.37.0: - version "1.37.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8" - integrity sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg== +mime-db@1.40.0, "mime-db@>= 1.40.0 < 2": + version "1.40.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" + integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== -mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.19: - version "2.1.21" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96" - integrity sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg== +mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: + version "2.1.24" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" + integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== dependencies: - mime-db "~1.37.0" + mime-db "1.40.0" -mime@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" - integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mime@^2.0.3, mime@^2.3.1: - version "2.4.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.0.tgz#e051fd881358585f3279df333fe694da0bcffdd6" - integrity sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w== +mime@^2.0.3, mime@^2.4.2: + version "2.4.4" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" + integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== -mini-css-extract-plugin@^0.4.5: - version "0.4.5" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.5.tgz#c99e9e78d54f3fa775633aee5933aeaa4e80719a" - integrity sha512-dqBanNfktnp2hwL2YguV9Jh91PFX7gu7nRLs4TGsbAfAG6WOtlynFRYzwDwmmeSb5uIwHo9nx1ta0f7vAZVp2w== +mimic-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mini-css-extract-plugin@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.6.0.tgz#a3f13372d6fcde912f3ee4cd039665704801e3b9" + integrity sha512-79q5P7YGI6rdnVyIAV4NXpBQJFWdkzJxCim3Kog4078fM0piAaFlwocqbejdWtLW1cEzCexPrh6EdyFsPgVdAw== dependencies: loader-utils "^1.1.0" + normalize-url "^2.0.1" schema-utils "^1.0.0" webpack-sources "^1.1.0" @@ -5556,7 +5730,7 @@ minimist@^1.1.3, minimist@^1.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= -minipass@^2.2.1, minipass@^2.3.4: +minipass@^2.2.1, minipass@^2.3.5: version "2.3.5" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== @@ -5564,7 +5738,7 @@ minipass@^2.2.1, minipass@^2.3.4: safe-buffer "^5.1.2" yallist "^3.0.0" -minizlib@^1.1.1: +minizlib@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== @@ -5667,9 +5841,9 @@ mocha@^5.2.0: supports-color "5.4.0" moment@^2.22.2: - version "2.23.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.23.0.tgz#759ea491ac97d54bac5ad776996e2a58cc1bc225" - integrity sha512-3IE39bHVqFbWWaPOMHZF98Q9c3LDKGTmypMiTM2QygGXXElkFWIH7GxfmlwmY2vwa+wmNsoYZmG2iusf1ZjJoA== + version "2.24.0" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" + integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== move-concurrently@^1.0.1: version "1.0.1" @@ -5693,11 +5867,16 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@^2.1.1: +ms@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + multicast-dns-service-types@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" @@ -5716,10 +5895,19 @@ mute-stream@0.0.7: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= -nan@^2.10.0, nan@^2.9.2: - version "2.12.1" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552" - integrity sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw== +mz@^2.4.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + +nan@^2.12.1, nan@^2.13.2: + version "2.14.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" + integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== nanomatch@^1.2.9: version "1.2.13" @@ -5744,23 +5932,23 @@ natural-compare@^1.4.0: integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= needle@^2.2.1: - version "2.2.4" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e" - integrity sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA== + version "2.4.0" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" + integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg== dependencies: - debug "^2.1.2" + debug "^3.2.6" 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" - integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -neo-async@^2.5.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.0.tgz#b9d15e4d71c6762908654b5183ed38b753340835" - integrity sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA== +neo-async@^2.5.0, neo-async@^2.6.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" + integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== nice-try@^1.0.4: version "1.0.5" @@ -5768,15 +5956,15 @@ nice-try@^1.0.4: integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== nise@^1.4.5: - version "1.4.8" - resolved "https://registry.yarnpkg.com/nise/-/nise-1.4.8.tgz#ce91c31e86cf9b2c4cac49d7fcd7f56779bfd6b0" - integrity sha512-kGASVhuL4tlAV0tvA34yJYZIVihrUt/5bDwpp4tTluigxUr2bBlJeDXmivb6NuEdFkqvdv/Ybb9dm16PSKUhtw== + version "1.5.0" + resolved "https://registry.yarnpkg.com/nise/-/nise-1.5.0.tgz#d03ea0e6c1b75c638015aa3585eddc132949a50d" + integrity sha512-Z3sfYEkLFzFmL8KY6xnSJLRxwQwYBjOXi/24lb62ZnZiGA0JUzGGTI6TBIgfCSMIDl9Jlu8SRmHNACLTemDHww== dependencies: "@sinonjs/formatio" "^3.1.0" + "@sinonjs/text-encoding" "^0.7.1" just-extend "^4.0.2" - lolex "^2.3.2" + lolex "^4.1.0" path-to-regexp "^1.7.0" - text-encoding "^0.6.4" no-case@^2.2.0: version "2.3.2" @@ -5818,9 +6006,9 @@ node-ipc@^9.1.1: js-queue "2.0.0" node-libs-browser@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df" - integrity sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg== + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== dependencies: assert "^1.1.1" browserify-zlib "^0.2.0" @@ -5829,10 +6017,10 @@ node-libs-browser@^2.0.0: constants-browserify "^1.0.0" crypto-browserify "^3.11.0" domain-browser "^1.1.1" - events "^1.0.0" + events "^3.0.0" https-browserify "^1.0.0" os-browserify "^0.3.0" - path-browserify "0.0.0" + path-browserify "0.0.1" process "^0.11.10" punycode "^1.2.4" querystring-es3 "^0.2.0" @@ -5843,13 +6031,13 @@ node-libs-browser@^2.0.0: timers-browserify "^2.0.4" tty-browserify "0.0.0" url "^0.11.0" - util "^0.10.3" - vm-browserify "0.0.4" + util "^0.11.0" + vm-browserify "^1.0.1" -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" - integrity sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A== +node-pre-gyp@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" + integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A== dependencies: detect-libc "^1.0.2" mkdirp "^0.5.1" @@ -5862,17 +6050,17 @@ node-pre-gyp@^0.10.0: semver "^5.3.0" tar "^4" -node-releases@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.2.tgz#93c17fba5eec8650ad908de5433fa8763baebe4d" - integrity sha512-j1gEV/zX821yxdWp/1vBMN0pSUjuH9oGUdLCb4PfUko6ZW7KdRs3Z+QGGwDUhYtSpQvdVVyLd2V0YvLsmdg5jQ== +node-releases@^1.1.23: + version "1.1.23" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.23.tgz#de7409f72de044a2fa59c097f436ba89c39997f0" + integrity sha512-uq1iL79YjfYC0WXoHbC/z28q/9pOl8kSHaXdWmAAc8No+bDwqkZbzIJz55g/MUsPgSGm9LZ7QSUbzTcH5tz47w== dependencies: semver "^5.3.0" node-sass@^4.9.3: - version "4.11.0" - resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.11.0.tgz#183faec398e9cbe93ba43362e2768ca988a6369a" - integrity sha512-bHUdHTphgQJZaF1LASx0kAviPH7sGlcyNhWade4eVIpFp6tsn7SV8xNMTbsQFpEV9VXpnwTTnNYlfsZXgGgmkA== + version "4.12.0" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.12.0.tgz#0914f531932380114a30cc5fa4fa63233a25f017" + integrity sha512-A1Iv4oN+Iel6EPv77/HddXErL2a+gZ4uBeZUy+a8O35CFYTXhgA8MgLCWBtwpGZdCvTvQ9d+bQxX/QC36GDPpQ== dependencies: async-foreach "^0.1.3" chalk "^1.1.1" @@ -5881,12 +6069,10 @@ node-sass@^4.9.3: get-stdin "^4.0.1" glob "^7.0.3" in-publish "^2.0.0" - lodash.assign "^4.2.0" - lodash.clonedeep "^4.3.2" - lodash.mergewith "^4.6.0" + lodash "^4.17.11" meow "^3.7.0" mkdirp "^0.5.1" - nan "^2.10.0" + nan "^2.13.2" node-gyp "^3.8.0" npmlog "^4.0.0" request "^2.88.0" @@ -5914,13 +6100,13 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: - version "2.4.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" - integrity sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw== +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== dependencies: hosted-git-info "^2.1.4" - is-builtin-module "^1.0.0" + resolve "^1.10.0" semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" @@ -5936,25 +6122,39 @@ normalize-path@^2.0.1, normalize-path@^2.1.1: dependencies: remove-trailing-separator "^1.0.1" +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + normalize-range@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= +normalize-url@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6" + integrity sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw== + dependencies: + prepend-http "^2.0.0" + query-string "^5.0.1" + sort-keys "^2.0.0" + normalize-url@^3.0.0: version "3.3.0" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== npm-bundled@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" - integrity sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g== + version "1.0.6" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" + integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== npm-packlist@^1.1.6: - version "1.1.12" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.12.tgz#22bde2ebc12e72ca482abd67afc51eb49377243a" - integrity sha512-WJKFOVMeAlsU/pjXuqVdzU0WfgtIBCupkEVwn+1Y0ERAbUfWw8R4GjgVbaKnUjRoD2FoQbHOCbOyT5Mbs9Lw4g== + version "1.4.1" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.1.tgz#19064cdf988da80ea3cee45533879d90192bbfbc" + integrity sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw== dependencies: ignore-walk "^3.0.1" npm-bundled "^1.0.1" @@ -5994,16 +6194,16 @@ number-is-nan@^1.0.0: integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= nwsapi@^2.0.9: - version "2.0.9" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.9.tgz#77ac0cdfdcad52b6a1151a84e73254edc33ed016" - integrity sha512-nlWFSCTYQcHk/6A9FFnfhKc14c3aFhfdNBXgo8Qgi9QTBu/qg3Ww+Uiz9wMzXd1T8GFxPc2QIHB6Qtf2XFryFQ== + version "2.1.4" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.1.4.tgz#e006a878db23636f8e8a67d33ca0e4edf61a842f" + integrity sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw== oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@^4.0.1, object-assign@^4.1.0: +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" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -6023,9 +6223,9 @@ object-hash@^1.1.4: integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA== object-keys@^1.0.11, object-keys@^1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" - integrity sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag== + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== object-visit@^1.0.0: version "1.0.1" @@ -6059,17 +6259,17 @@ object.pick@^1.3.0: 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" - integrity sha1-5STaCbT2b/Bd9FdUbscqyZ8TBpo= +object.values@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9" + integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg== dependencies: - define-properties "^1.1.2" - es-abstract "^1.6.1" - function-bind "^1.1.0" - has "^1.0.1" + define-properties "^1.1.3" + es-abstract "^1.12.0" + function-bind "^1.1.1" + has "^1.0.3" -obuf@^1.0.0, obuf@^1.1.1: +obuf@^1.0.0, obuf@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== @@ -6081,10 +6281,10 @@ on-finished@~2.3.0: dependencies: ee-first "1.1.1" -on-headers@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" - integrity sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c= +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" @@ -6100,15 +6300,22 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" +open@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/open/-/open-6.3.0.tgz#60d0b845ee38fae0631f5d739a21bd40e3d2a527" + integrity sha512-6AHdrJxPvAXIowO/aIaeHZ8CeMdDf7qCyRNq8NwJpinmCdXhz+NZR7ie1Too94lpciCDsG+qHGO9Mt0svA4OqA== + dependencies: + is-wsl "^1.1.0" + opener@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed" integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA== -opn@^5.1.0, opn@^5.3.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.4.0.tgz#cb545e7aab78562beb11aa3bfabc7042e1761035" - integrity sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw== +opn@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" + integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== dependencies: is-wsl "^1.1.0" @@ -6124,28 +6331,16 @@ optionator@^0.8.1, optionator@^0.8.2: type-check "~0.3.2" wordwrap "~1.0.0" -ora@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ora/-/ora-2.1.0.tgz#6caf2830eb924941861ec53a173799e008b51e5b" - integrity sha512-hNNlAd3gfv/iPmsNxYoAPLvxg7HuPozww7fFonMZvL84tP6Ox5igfk5j/+a9rtJJwqMgKK+JgWsAQik5o0HTLA== +ora@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/ora/-/ora-3.4.0.tgz#bf0752491059a3ef3ed4c85097531de9fdbcd318" + integrity sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg== dependencies: - chalk "^2.3.1" + chalk "^2.4.2" cli-cursor "^2.1.0" - cli-spinners "^1.1.0" + cli-spinners "^2.0.0" log-symbols "^2.2.0" - strip-ansi "^4.0.0" - wcwidth "^1.0.1" - -ora@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ora/-/ora-3.0.0.tgz#8179e3525b9aafd99242d63cc206fd64732741d0" - integrity sha512-LBS97LFe2RV6GJmXBi6OKcETKyklHNMV0xw7BtsVn2MlsgsydyZetSCbCANr+PFLmDyv4KV88nn0eCKza665Mg== - dependencies: - chalk "^2.3.1" - cli-cursor "^2.1.0" - cli-spinners "^1.1.0" - log-symbols "^2.2.0" - strip-ansi "^4.0.0" + strip-ansi "^5.2.0" wcwidth "^1.0.1" original@^1.0.0: @@ -6181,12 +6376,12 @@ os-locale@^2.0.0: lcid "^1.0.0" mem "^1.1.0" -os-locale@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.0.1.tgz#3b014fbf01d87f60a1e5348d80fe870dc82c4620" - integrity sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw== +os-locale@^3.0.0, os-locale@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" + integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== dependencies: - execa "^0.10.0" + execa "^1.0.0" lcid "^2.0.0" mem "^4.0.0" @@ -6222,10 +6417,10 @@ p-finally@^1.0.0: resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= -p-is-promise@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" - integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4= +p-is-promise@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" + integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== p-limit@^1.0.0, p-limit@^1.1.0: version "1.3.0" @@ -6235,9 +6430,9 @@ p-limit@^1.0.0, p-limit@^1.1.0: p-try "^1.0.0" p-limit@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.0.0.tgz#e624ed54ee8c460a778b3c9f3670496ff8a57aec" - integrity sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A== + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" + integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ== dependencies: p-try "^2.0.0" @@ -6255,10 +6450,17 @@ p-locate@^3.0.0: dependencies: p-limit "^2.0.0" -p-map@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" - integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-retry@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" + integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== + dependencies: + retry "^0.12.0" p-try@^1.0.0: version "1.0.0" @@ -6266,14 +6468,14 @@ p-try@^1.0.0: integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= p-try@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1" - integrity sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ== + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== pako@~1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.7.tgz#2473439021b57f1516c82f58be7275ad8ef1bb27" - integrity sha512-3HNK5tW4x8o5mO8RuHZp3Ydw9icZXx0RANAOMzlMzx7LVXhMJ4mo3MOBpzyd7r/+RUu8BmndP47LXT+vzjtWcQ== + version "1.0.10" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" + integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw== parallel-transform@^1.1.0: version "1.1.0" @@ -6292,15 +6494,16 @@ param-case@2.1.x: no-case "^2.2.0" parse-asn1@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.1.tgz#f6bf293818332bd0dab54efb16087724745e6ca8" - integrity sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw== + version "5.1.4" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.4.tgz#37f6628f823fbdeb2273b4d540434a22f3ef1fcc" + integrity sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw== dependencies: asn1.js "^4.0.0" browserify-aes "^1.0.0" create-hash "^1.1.0" evp_bytestokey "^1.0.0" pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" parse-json@^2.2.0: version "2.2.0" @@ -6329,20 +6532,25 @@ parse5@^3.0.1: dependencies: "@types/node" "*" -parseurl@~1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" - integrity sha1-/CidTtiZMRlGDBViUyYs3I3mW/M= +parse5@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" + integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= -path-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" - integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo= +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== path-dirname@^1.0.0: version "1.0.2" @@ -6366,7 +6574,7 @@ path-is-absolute@^1.0.0: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-is-inside@^1.0.1, path-is-inside@^1.0.2: +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" integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= @@ -6440,6 +6648,11 @@ pify@^3.0.0: resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" @@ -6473,21 +6686,29 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" +pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" + integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= + dependencies: + find-up "^2.1.0" + pluralize@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow== -plyr@^3.4.5: - version "3.4.7" - resolved "https://registry.yarnpkg.com/plyr/-/plyr-3.4.7.tgz#7d92470fb27f8019422c6d4edfd3b172d902ef06" - integrity sha512-RxxT2WdC4/sEZQT7CBZqKx5ImVw96aWjT6kB6DM82jy9GcWDiBBnv04m/AeeaXg9S5ambPdiHhB6Pzfm2q84Gw== +plyr@^3.5.2: + version "3.5.4" + resolved "https://registry.yarnpkg.com/plyr/-/plyr-3.5.4.tgz#21ee9e2f06c3a88568eb432689c70de0b6d43dfb" + integrity sha512-ECS2uzeDyPfM0+1X3oTNdRDmLN+dxoo2GcJYeWsfnyH4CHLoRA/w1Fvp4sMhM+k2QBRxFH/bu46nogduS1DPhQ== dependencies: - core-js "^2.5.7" - custom-event-polyfill "^1.0.6" - loadjs "^3.5.4" + core-js "^3.0.1" + custom-event-polyfill "^1.0.7" + loadjs "^3.6.1" + rangetouch "^2.0.0" raven-js "^3.27.0" - url-polyfill "^1.1.0" + url-polyfill "^1.1.5" pn@^1.1.0: version "1.1.0" @@ -6499,7 +6720,7 @@ pofile@^1.0.10: resolved "https://registry.yarnpkg.com/pofile/-/pofile-1.0.11.tgz#35aff58c17491d127a07336d5522ebc9df57c954" integrity sha512-Vy9eH1dRD9wHjYt/QqXcTz+RnX/zg53xK+KljFSX30PvdDMb2z+c6uDUeblUGqqJgz3QFsdlA0IJvHziPmWtQg== -portfinder@^1.0.19, portfinder@^1.0.9: +portfinder@^1.0.20: version "1.0.20" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.20.tgz#bea68632e54b2e13ab7b0c4775e9b41bf270e44a" integrity sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw== @@ -6513,7 +6734,7 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= -postcss-calc@^7.0.0: +postcss-calc@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.1.tgz#36d77bab023b0ecbb9789d84dcb23c4941145436" integrity sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ== @@ -6523,10 +6744,10 @@ postcss-calc@^7.0.0: postcss-selector-parser "^5.0.0-rc.4" postcss-value-parser "^3.3.1" -postcss-colormin@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.2.tgz#93cd1fa11280008696887db1a528048b18e7ed99" - integrity sha512-1QJc2coIehnVFsz0otges8kQLsryi4lo19WD+U5xCWvXd0uw/Z+KKYnbiNDCnO9GP+PvErPHCG0jNvWTngk9Rw== +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" + integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== dependencies: browserslist "^4.0.0" color "^3.0.0" @@ -6542,10 +6763,10 @@ postcss-convert-values@^4.0.1: postcss "^7.0.0" postcss-value-parser "^3.0.0" -postcss-discard-comments@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.1.tgz#30697735b0c476852a7a11050eb84387a67ef55d" - integrity sha512-Ay+rZu1Sz6g8IdzRjUgG2NafSNpp2MSMOQUb+9kkzzzP+kh07fP0yNbhtFejURnyVXSX3FYy2nVNW1QTnNjgBQ== +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" + integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== dependencies: postcss "^7.0.0" @@ -6571,11 +6792,11 @@ postcss-discard-overridden@^4.0.1: postcss "^7.0.0" 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" - integrity sha512-V5JBLzw406BB8UIfsAWSK2KSwIJ5yoEIVFb4gVkXci0QdKgA24jLmHZ/ghe/GgX0lJ0/D1uUK1ejhzEY94MChQ== + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003" + integrity sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q== dependencies: - cosmiconfig "^4.0.0" + cosmiconfig "^5.0.0" import-cwd "^2.0.0" postcss-loader@^3.0.0: @@ -6588,20 +6809,20 @@ postcss-loader@^3.0.0: postcss-load-config "^2.0.0" schema-utils "^1.0.0" -postcss-merge-longhand@^4.0.9: - version "4.0.9" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.9.tgz#c2428b994833ffb2a072f290ca642e75ceabcd6f" - integrity sha512-UVMXrXF5K/kIwUbK/crPFCytpWbNX2Q3dZSc8+nQUgfOHrCT4+MHncpdxVphUlQeZxlLXUJbDyXc5NBhTnS2tA== +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" + integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== dependencies: css-color-names "0.0.4" postcss "^7.0.0" postcss-value-parser "^3.0.0" stylehacks "^4.0.0" -postcss-merge-rules@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.2.tgz#2be44401bf19856f27f32b8b12c0df5af1b88e74" - integrity sha512-UiuXwCCJtQy9tAIxsnurfF0mrNHKc4NnNx6NxqmzNNjXpQwLSukUxELHTRF0Rg1pAmcoKLih8PwvZbiordchag== +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" + integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== dependencies: browserslist "^4.0.0" caniuse-api "^3.0.0" @@ -6618,20 +6839,20 @@ postcss-minify-font-values@^4.0.2: postcss "^7.0.0" postcss-value-parser "^3.0.0" -postcss-minify-gradients@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.1.tgz#6da95c6e92a809f956bb76bf0c04494953e1a7dd" - integrity sha512-pySEW3E6Ly5mHm18rekbWiAjVi/Wj8KKt2vwSfVFAWdW6wOIekgqxKxLU7vJfb107o3FDNPkaYFCxGAJBFyogA== +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" + integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== dependencies: cssnano-util-get-arguments "^4.0.0" is-color-stop "^1.0.0" postcss "^7.0.0" postcss-value-parser "^3.0.0" -postcss-minify-params@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.1.tgz#5b2e2d0264dd645ef5d68f8fec0d4c38c1cf93d2" - integrity sha512-h4W0FEMEzBLxpxIVelRtMheskOKKp52ND6rJv+nBS33G1twu2tCyurYj/YtgU76+UDCvWeNs0hs8HFAWE2OUFg== +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== dependencies: alphanum-sort "^1.0.0" browserslist "^4.0.0" @@ -6640,10 +6861,10 @@ postcss-minify-params@^4.0.1: postcss-value-parser "^3.0.0" uniqs "^2.0.0" -postcss-minify-selectors@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.1.tgz#a891c197977cc37abf60b3ea06b84248b1c1e9cd" - integrity sha512-8+plQkomve3G+CodLCgbhAKrb5lekAnLYuL1d7Nz+/7RANpBEVdgBkPNwljfSKvZ9xkkZTZITd04KP+zeJTJqg== +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== dependencies: alphanum-sort "^1.0.0" has "^1.0.0" @@ -6688,48 +6909,48 @@ postcss-normalize-charset@^4.0.1: dependencies: postcss "^7.0.0" -postcss-normalize-display-values@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.1.tgz#d9a83d47c716e8a980f22f632c8b0458cfb48a4c" - integrity sha512-R5mC4vaDdvsrku96yXP7zak+O3Mm9Y8IslUobk7IMP+u/g+lXvcN4jngmHY5zeJnrQvE13dfAg5ViU05ZFDwdg== +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" + integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== dependencies: cssnano-util-get-match "^4.0.0" postcss "^7.0.0" postcss-value-parser "^3.0.0" -postcss-normalize-positions@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.1.tgz#ee2d4b67818c961964c6be09d179894b94fd6ba1" - integrity sha512-GNoOaLRBM0gvH+ZRb2vKCIujzz4aclli64MBwDuYGU2EY53LwiP7MxOZGE46UGtotrSnmarPPZ69l2S/uxdaWA== +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" + integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== dependencies: cssnano-util-get-arguments "^4.0.0" has "^1.0.0" postcss "^7.0.0" postcss-value-parser "^3.0.0" -postcss-normalize-repeat-style@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.1.tgz#5293f234b94d7669a9f805495d35b82a581c50e5" - integrity sha512-fFHPGIjBUyUiswY2rd9rsFcC0t3oRta4wxE1h3lpwfQZwFeFjXFSiDtdJ7APCmHQOnUZnqYBADNRPKPwFAONgA== +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" + integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== dependencies: cssnano-util-get-arguments "^4.0.0" cssnano-util-get-match "^4.0.0" postcss "^7.0.0" postcss-value-parser "^3.0.0" -postcss-normalize-string@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.1.tgz#23c5030c2cc24175f66c914fa5199e2e3c10fef3" - integrity sha512-IJoexFTkAvAq5UZVxWXAGE0yLoNN/012v7TQh5nDo6imZJl2Fwgbhy3J2qnIoaDBrtUP0H7JrXlX1jjn2YcvCQ== +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" + integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== dependencies: has "^1.0.0" postcss "^7.0.0" postcss-value-parser "^3.0.0" -postcss-normalize-timing-functions@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.1.tgz#8be83e0b9cb3ff2d1abddee032a49108f05f95d7" - integrity sha512-1nOtk7ze36+63ONWD8RCaRDYsnzorrj+Q6fxkQV+mlY5+471Qx9kspqv0O/qQNMeApg8KNrRf496zHwJ3tBZ7w== +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" + integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== dependencies: cssnano-util-get-match "^4.0.0" postcss "^7.0.0" @@ -6754,37 +6975,37 @@ postcss-normalize-url@^4.0.1: postcss "^7.0.0" postcss-value-parser "^3.0.0" -postcss-normalize-whitespace@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.1.tgz#d14cb639b61238418ac8bc8d3b7bdd65fc86575e" - integrity sha512-U8MBODMB2L+nStzOk6VvWWjZgi5kQNShCyjRhMT3s+W9Jw93yIjOnrEkKYD3Ul7ChWbEcjDWmXq0qOL9MIAnAw== +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== dependencies: postcss "^7.0.0" postcss-value-parser "^3.0.0" -postcss-ordered-values@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.1.tgz#2e3b432ef3e489b18333aeca1f1295eb89be9fc2" - integrity sha512-PeJiLgJWPzkVF8JuKSBcylaU+hDJ/TX3zqAMIjlghgn1JBi6QwQaDZoDIlqWRcCAI8SxKrt3FCPSRmOgKRB97Q== +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" + integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== dependencies: cssnano-util-get-arguments "^4.0.0" postcss "^7.0.0" postcss-value-parser "^3.0.0" -postcss-reduce-initial@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.2.tgz#bac8e325d67510ee01fa460676dc8ea9e3b40f15" - integrity sha512-epUiC39NonKUKG+P3eAOKKZtm5OtAtQJL7Ye0CBN1f+UQTHzqotudp+hki7zxXm7tT0ZAKDMBj1uihpPjP25ug== +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" + integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== dependencies: browserslist "^4.0.0" caniuse-api "^3.0.0" has "^1.0.0" postcss "^7.0.0" -postcss-reduce-transforms@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.1.tgz#8600d5553bdd3ad640f43bff81eb52f8760d4561" - integrity sha512-sZVr3QlGs0pjh6JAIe6DzWvBaqYw05V1t3d9Tp+VnFRT5j+rsqoWsysh/iSD7YNsULjq9IAylCznIwVd5oU/zA== +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" + integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== dependencies: cssnano-util-get-match "^4.0.0" has "^1.0.0" @@ -6800,19 +7021,19 @@ postcss-selector-parser@^3.0.0, postcss-selector-parser@^3.1.1: indexes-of "^1.0.1" uniq "^1.0.1" -postcss-selector-parser@^5.0.0-rc.4: - version "5.0.0-rc.4" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0-rc.4.tgz#ca5e77238bf152966378c13e91ad6d611568ea87" - integrity sha512-0XvfYuShrKlTk1ooUrVzMCFQRcypsdEIsGqh5IxC5rdtBi4/M/tDAJeSONwC2MTqEFsmPZYAV7Dd4X8rgAfV0A== +postcss-selector-parser@^5.0.0, postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== dependencies: cssesc "^2.0.0" indexes-of "^1.0.1" uniq "^1.0.1" -postcss-svgo@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.1.tgz#5628cdb38f015de6b588ce6d0bf0724b492b581d" - integrity sha512-YD5uIk5NDRySy0hcI+ZJHwqemv2WiqqzDgtvgMzO8EGSkK5aONyX8HMVFRFJSdO8wUWTuisUFn/d7yRRbBr5Qw== +postcss-svgo@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" + integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== dependencies: is-svg "^3.0.0" postcss "^7.0.0" @@ -6828,7 +7049,7 @@ postcss-unique-selectors@^4.0.1: postcss "^7.0.0" uniqs "^2.0.0" -postcss-value-parser@^3.0.0, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1: +postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== @@ -6842,29 +7063,34 @@ postcss@^6.0.1, postcss@^6.0.20, postcss@^6.0.23: source-map "^0.6.1" supports-color "^5.4.0" -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.5: - version "7.0.7" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.7.tgz#2754d073f77acb4ef08f1235c36c5721a7201614" - integrity sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg== +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.5: + version "7.0.17" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.17.tgz#4da1bdff5322d4a0acaab4d87f3e782436bad31f" + integrity sha512-546ZowA+KZ3OasvQZHsbuEpysvwTZNGJv9EfyCQdsIDltPSWHAeTQ5fQy/Npi2ZDtLI3zs7Ps/p6wThErhm9fQ== dependencies: - chalk "^2.4.1" + chalk "^2.4.2" source-map "^0.6.1" - supports-color "^5.5.0" + supports-color "^6.1.0" prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= -prettier@1.13.7: - version "1.13.7" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.13.7.tgz#850f3b8af784a49a6ea2d2eaa7ed1428a34b7281" - integrity sha512-KIU72UmYPGk4MujZGYMFwinB7lOf2LsDNGSOC8ufevsrPLISrZbNJlWstRi3m0AMuszbH+EFSQ/r6w56RSPK6w== +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= + +prettier@1.16.3: + version "1.16.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.16.3.tgz#8c62168453badef702f34b45b6ee899574a6a65d" + integrity sha512-kn/GU6SMRYPxUakNXhpP0EedT/KmaPzr0H5lIsDogrykbaxOpOfAFfk5XA7DZrJyMAv1wlMV3CPcZruGXVVUZw== prettier@^1.13.0: - version "1.15.3" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.15.3.tgz#1feaac5bdd181237b54dbe65d874e02a1472786a" - integrity sha512-gAU9AGAPMaKb3NNSUUuhhFAS7SCO4ALTN4nRIn6PJ075Qd28Yn2Ig2ahEJWdJwJmlEBTUfC7mMUSFy8MwsOCfg== + version "1.18.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.18.2.tgz#6823e7c5900017b4bd3acf46fe9ac4b4d7bda9ea" + integrity sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw== pretty-error@^2.0.2: version "2.1.1" @@ -6906,13 +7132,13 @@ promise@^7.0.1: dependencies: asap "~2.0.3" -proxy-addr@~2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93" - integrity sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA== +proxy-addr@~2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" + integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ== dependencies: forwarded "~0.1.2" - ipaddr.js "1.8.0" + ipaddr.js "1.9.0" prr@~1.0.1: version "1.0.1" @@ -6925,9 +7151,9 @@ pseudomap@^1.0.2: integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= psl@^1.1.24, psl@^1.1.28: - version "1.1.31" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.31.tgz#e9aa86d0101b5b105cbe93ac6b784cd547276184" - integrity sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw== + version "1.1.32" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.32.tgz#3f132717cf2f9c169724b2b6caf373cf694198db" + integrity sha512-MHACAkHpihU/REGGPLj4sEfc/XKW2bheigvHO1dUqjaKigMp1C8+WLQYRGgeKFMsw5PMfegZcaN8IDXK/cD0+g== public-encrypt@^4.0.0: version "4.0.3" @@ -7076,26 +7302,40 @@ punycode@1.3.2: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= -punycode@2.x.x, punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - punycode@^1.2.4, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + q@^1.1.2: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= -qs@6.5.2, qs@~6.5.2: +qs@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + +qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== +query-string@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" + integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== + dependencies: + decode-uri-component "^0.2.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -7106,15 +7346,15 @@ querystring@0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= -querystringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.0.tgz#7ded8dfbf7879dcc60d0a644ac6754b283ad17ef" - integrity sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg== +querystringify@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" + integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80" - integrity sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A== + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" @@ -7126,24 +7366,29 @@ randomfill@^1.0.3: randombytes "^2.0.5" safe-buffer "^5.1.0" -range-parser@^1.0.3, range-parser@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" - integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +rangetouch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/rangetouch/-/rangetouch-2.0.0.tgz#5459cdb38b929326c5484ab47aac9632fbe3a896" + integrity sha512-y66wTFbwh7KafYligRsmIYYR1kZY8U9tGHH9PgbVhBUFmGzPMsOSjslXPedgR5D3M9W1QKVbAf1AtaVAt7JJTw== raven-js@^3.27.0: - version "3.27.0" - resolved "https://registry.yarnpkg.com/raven-js/-/raven-js-3.27.0.tgz#9f47c03e17933ce756e189f3669d49c441c1ba6e" - integrity sha512-vChdOL+yzecfnGA+B5EhEZkJ3kY3KlMzxEhShKh6Vdtooyl0yZfYNFQfYzgMf2v4pyQa+OTZ5esTxxgOOZDHqw== + version "3.27.2" + resolved "https://registry.yarnpkg.com/raven-js/-/raven-js-3.27.2.tgz#6c33df952026cd73820aa999122b7b7737a66775" + integrity sha512-mFWQcXnhRFEQe5HeFroPaEghlnqy7F5E2J3Fsab189ondqUzcjwSVi7el7F36cr6PvQYXoZ1P2F5CSF2/azeMQ== -raw-body@2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" - integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw== +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== dependencies: - bytes "3.0.0" - http-errors "1.6.3" - iconv-lite "0.4.23" + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" unpipe "1.0.0" rc@^1.2.7: @@ -7173,16 +7418,17 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" -read-pkg@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-4.0.1.tgz#963625378f3e1c4d48c85872b5a6ec7d5d093237" - integrity sha1-ljYlN48+HE1IyFhytabsfV0JMjc= +read-pkg@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.1.1.tgz#5cf234dde7a405c90c88a519ab73c467e9cb83f5" + integrity sha512-dFcTLQi6BZ+aFUaICg7er+/usEoqFdQxiEBsEMNGoipenihtxxtdrQuBXvyANCEI8VuUIVYFgeHGx9sLLvim4w== dependencies: - normalize-package-data "^2.3.2" + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" parse-json "^4.0.0" - pify "^3.0.0" + type-fest "^0.4.1" -"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.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== @@ -7195,26 +7441,16 @@ read-pkg@^4.0.1: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@1.0: - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readable-stream@^3.0.6: - version "3.1.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.1.0.tgz#19c2e9c1ce43507c53f6eefbcf1ee3d4aaa786f5" - integrity sha512-vpydAvIJvPODZNagCPuHG87O9JNPtvFEtjHHRVwNVsVVRBqemvPJkc2SYbxJsiZXawJdtZNmkmnsPuE3IgsG0A== +readable-stream@^3.0.6, readable-stream@^3.1.1: + version "3.4.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" + integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" util-deprecate "^1.0.1" -readdirp@^2.0.0: +readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== @@ -7236,10 +7472,10 @@ redent@^1.0.0: indent-string "^2.1.0" strip-indent "^1.0.1" -regenerate-unicode-properties@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz#107405afcc4a190ec5ed450ecaa00ed0cafa7a4c" - integrity sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw== +regenerate-unicode-properties@^8.0.2: + version "8.1.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e" + integrity sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA== dependencies: regenerate "^1.4.0" @@ -7253,15 +7489,15 @@ regenerator-runtime@^0.11.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== -regenerator-runtime@^0.12.0: - version "0.12.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" - integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg== +regenerator-runtime@^0.13.2: + version "0.13.2" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447" + integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA== -regenerator-transform@^0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.3.tgz#264bd9ff38a8ce24b06e0636496b2c856b57bcbb" - integrity sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA== +regenerator-transform@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.0.tgz#2ca9aaf7a2c239dd32e4761218425b8c7a86ecaf" + integrity sha512-rtOelq4Cawlbmq9xuMR5gdFmv7ku/sFoB7sRiywx7aq53bc52b4j6zvH7Te1Vt/X2YveDKnCGUbioieU7FEL3w== dependencies: private "^0.1.6" @@ -7273,6 +7509,11 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" +regexp-tree@^0.1.6: + version "0.1.10" + resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.10.tgz#d837816a039c7af8a8d64d7a7c3cf6a1d93450bc" + integrity sha512-K1qVSbcedffwuIslMwpe6vGlj+ZXRnGkvjAtFHfDZZZuEdA/h0dxljAPu9vhUo6Rrx2U2AwJ+nSQ6hK+lrP5MQ== + regexpp@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab" @@ -7287,17 +7528,17 @@ regexpu-core@^1.0.0: regjsgen "^0.2.0" regjsparser "^0.1.4" -regexpu-core@^4.1.3, regexpu-core@^4.2.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.4.0.tgz#8d43e0d1266883969720345e70c275ee0aec0d32" - integrity sha512-eDDWElbwwI3K0Lo6CqbQbA6FwgtCz4kYTarrri1okfkRLZAqstU+B3voZBCjg8Fl6iq0gXrJG6MvRgLthfvgOA== +regexpu-core@^4.5.4: + version "4.5.4" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae" + integrity sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ== dependencies: regenerate "^1.4.0" - regenerate-unicode-properties "^7.0.0" + regenerate-unicode-properties "^8.0.2" regjsgen "^0.5.0" regjsparser "^0.6.0" unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.0.2" + unicode-match-property-value-ecmascript "^1.1.0" regjsgen@^0.2.0: version "0.2.0" @@ -7334,13 +7575,13 @@ remove-trailing-separator@^1.0.1: integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= renderkid@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.2.tgz#12d310f255360c07ad8fde253f6c9e9de372d2aa" - integrity sha512-FsygIxevi1jSiPY9h7vZmBFUbAOcbYm9UwyiLNdVsLRs/5We9Ob5NMPbGYUTWiLq5L+ezlVdE0A8bbME5CWTpg== + version "2.0.3" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.3.tgz#380179c2ff5ae1365c522bf2fcfcff01c5b74149" + integrity sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA== dependencies: css-select "^1.1.0" - dom-converter "~0.2" - htmlparser2 "~3.3.0" + dom-converter "^0.2" + htmlparser2 "^3.3.0" strip-ansi "^3.0.0" utila "^0.4.0" @@ -7361,21 +7602,21 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" -request-promise-core@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6" - integrity sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY= +request-promise-core@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346" + integrity sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag== dependencies: - lodash "^4.13.1" + lodash "^4.17.11" -request-promise-native@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.5.tgz#5281770f68e0c9719e5163fd3fab482215f4fda5" - integrity sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU= +request-promise-native@^1.0.5, request-promise-native@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.7.tgz#a49868a624bdea5069f1251d0a836e0d89aa2c59" + integrity sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w== dependencies: - request-promise-core "1.1.1" - stealthy-require "^1.1.0" - tough-cookie ">=2.3.3" + request-promise-core "1.1.2" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" request@^2.87.0, request@^2.88.0: version "2.88.0" @@ -7408,16 +7649,16 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -require-from-string@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + require-uncached@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" @@ -7431,6 +7672,11 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= +reselect@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/reselect/-/reselect-3.0.1.tgz#efdaa98ea7451324d092b2b2163a6a1d7a9a2147" + integrity sha1-79qpjqdFEyTQkrKyFjpqHXqaIUc= + resolve-cwd@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" @@ -7453,10 +7699,10 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.1.6, resolve@^1.3.2, resolve@^1.8.1: - version "1.9.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.9.0.tgz#a14c6fdfa8f92a7df1d996cb7105fa744658ea06" - integrity sha512-TZNye00tI67lwYvzxCxHGjwTNlUV70io54/Ed4j6PscB8xVfuBJpRenI/o6dVk0cY0PYTY27AgCoGGxRnYuItQ== +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.8.1: + version "1.11.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.0.tgz#4014870ba296176b86343d50b60f3b50609ce232" + integrity sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw== dependencies: path-parse "^1.0.6" @@ -7473,6 +7719,11 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + rgb-regex@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" @@ -7490,12 +7741,12 @@ right-align@^0.1.1: dependencies: align-text "^0.1.1" -rimraf@2, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@~2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" - integrity sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w== +rimraf@2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3, rimraf@~2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== dependencies: - glob "^7.0.5" + glob "^7.1.3" ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" @@ -7531,7 +7782,7 @@ rx-lite@*, rx-lite@^4.0.8: resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" integrity sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ= -safe-buffer@5.1.2, 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: +safe-buffer@5.1.2, safe-buffer@>=5.1.0, 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" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== @@ -7575,14 +7826,14 @@ sax@^1.2.4, sax@~1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -saxes@^3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.4.tgz#4ad5c53eb085ac0570ea1071a07aaf22ad29cebd" - integrity sha512-GVZmLJnkS4Vl8Pe9o4nc5ALZ615VOVxCmea8Cs0l+8GZw3RQ5XGOSUomIUfuZuk4Todo44v4y+HY1EATkDDiZg== +saxes@^3.1.5: + version "3.1.10" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.10.tgz#6028a4d6d65f0b5f5b5d250c0500be6a7950fe13" + integrity sha512-G/mVZCCGhJqgS+I7wT5gBHyTNXLe2SQcu2qmhwl1OKcSHyJEXKQY2CLT+qWIxV+m6uiGMLfSOJGLQQHhklIeEQ== dependencies: xmlchars "^1.3.1" -schema-utils@^0.4.2, schema-utils@^0.4.4: +schema-utils@^0.4.4: version "0.4.7" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187" integrity sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ== @@ -7612,7 +7863,7 @@ select-hose@^2.0.0: resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= -selfsigned@^1.9.1: +selfsigned@^1.10.4: version "1.10.4" resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.4.tgz#cdd7eccfca4ed7635d47a08bf2d5d3074092e2cd" integrity sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw== @@ -7627,19 +7878,24 @@ semantic-ui-css@^2.4.1: jquery x.* "semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" - integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + version "5.7.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" + integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== + +semver@^6.0.0, semver@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.1.1.tgz#53f53da9b30b2103cd4f15eab3a18ecbcb210c9b" + integrity sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ== semver@~5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= -send@0.16.2: - version "0.16.2" - resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" - integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw== +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== dependencies: debug "2.6.9" depd "~1.1.2" @@ -7648,19 +7904,19 @@ send@0.16.2: escape-html "~1.0.3" etag "~1.8.1" fresh "0.5.2" - http-errors "~1.6.2" - mime "1.4.1" - ms "2.0.0" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" on-finished "~2.3.0" - range-parser "~1.2.0" - statuses "~1.4.0" + range-parser "~1.2.1" + statuses "~1.5.0" -serialize-javascript@^1.4.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.5.0.tgz#1aa336162c88a890ddad5384baebc93a655161fe" - integrity sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ== +serialize-javascript@^1.4.0, serialize-javascript@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.7.0.tgz#d6e0dfb2a3832a8c94468e6eb1db97e55a192a65" + integrity sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA== -serve-index@^1.7.2: +serve-index@^1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= @@ -7673,15 +7929,15 @@ serve-index@^1.7.2: mime-types "~2.1.17" parseurl "~1.3.2" -serve-static@1.13.2: - version "1.13.2" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" - integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw== +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== dependencies: encodeurl "~1.0.2" escape-html "~1.0.3" - parseurl "~1.3.2" - send "0.16.2" + parseurl "~1.3.3" + send "0.17.1" set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" @@ -7718,6 +7974,11 @@ setprototypeof@1.1.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" @@ -7863,10 +8124,17 @@ sockjs@0.3.19: faye-websocket "^0.10.0" uuid "^3.0.1" -sortablejs@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.7.0.tgz#80a2b2370abd568e1cec8c271131ef30a904fa28" - integrity sha1-gKKyNwq9Vo4c7IwnETHvMKkE+ig= +sort-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= + dependencies: + is-plain-obj "^1.0.0" + +sortablejs@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.9.0.tgz#2d1e74ae6bac2cb4ad0622908f340848969eb88d" + integrity sha512-Ot6bYJ6PoqPmpsqQYXjn1+RKrY2NWQvQt/o4jfd/UYwVWndyO5EPO8YHbnm5HIykf8ENsm4JUrdAvolPT86yYA== source-list-map@^2.0.0: version "2.0.1" @@ -7884,10 +8152,10 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.5.0, source-map-support@~0.5.6: - version "0.5.9" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" - integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== +source-map-support@^0.5.0, source-map-support@~0.5.10: + version "0.5.12" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599" + integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -7936,34 +8204,32 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz#a59efc09784c2a5bada13cfeaf5c75dd214044d2" - integrity sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg== + version "3.0.4" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz#75ecd1a88de8c184ef015eafb51b5b48bfd11bb1" + integrity sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA== -spdy-transport@^2.0.18: - version "2.1.1" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.1.1.tgz#c54815d73858aadd06ce63001e7d25fa6441623b" - integrity sha512-q7D8c148escoB3Z7ySCASadkegMmUZW8Wb/Q1u0/XBgDKMO880rLQDj8Twiew/tYi7ghemKUi/whSYOwE17f5Q== +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== dependencies: - debug "^2.6.8" - detect-node "^2.0.3" + debug "^4.1.0" + detect-node "^2.0.4" hpack.js "^2.1.6" - obuf "^1.1.1" - readable-stream "^2.2.9" - safe-buffer "^5.0.1" - wbuf "^1.7.2" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" -spdy@^3.4.1: - version "3.4.7" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-3.4.7.tgz#42ff41ece5cc0f99a3a6c28aabb73f5c3b03acbc" - integrity sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw= +spdy@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.0.tgz#81f222b5a743a329aa12cea6a390e60e9b613c52" + integrity sha512-ot0oEGT/PGUpzf/6uk4AWLqkq+irlqHXkrdbk51oWONh3bxQmBuljxPNl66zlRRcIJStWq0QkLUCPOPjgjvU0Q== dependencies: - debug "^2.6.8" - handle-thing "^1.2.5" + debug "^4.1.0" + handle-thing "^2.0.0" http-deceiver "^1.2.7" - safe-buffer "^5.0.1" select-hose "^2.0.0" - spdy-transport "^2.0.18" + spdy-transport "^3.0.0" split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" @@ -7978,9 +8244,9 @@ sprintf-js@~1.0.2: integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= sshpk@^1.7.0: - version "1.15.2" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.15.2.tgz#c946d6bd9b1a39d0e8635763f5242d6ed6dcb629" - integrity sha512-Ra/OXQtuh0/enyl4ETZAfTaeksa6BXks5ZcjpSUNrjBr0DvrJKX+1fsKDPpT9TBXgHAFsa4510aNVgI8g/+SzA== + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -7999,14 +8265,14 @@ ssri@^5.2.4: dependencies: safe-buffer "^5.1.1" -ssri@^6.0.0, ssri@^6.0.1: +ssri@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== dependencies: figgy-pudding "^3.5.1" -stable@~0.1.6: +stable@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== @@ -8024,16 +8290,11 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -"statuses@>= 1.4.0 < 2": +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= -statuses@~1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" - integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== - stdout-stream@^1.4.0: version "1.4.1" resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.1.tgz#5ac174cdd5cd726104aa0c0b2bd83815d8d535de" @@ -8041,15 +8302,15 @@ stdout-stream@^1.4.0: dependencies: readable-stream "^2.0.1" -stealthy-require@^1.1.0: +stealthy-require@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= stream-browserify@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" - integrity sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds= + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== dependencies: inherits "~2.0.1" readable-stream "^2.0.2" @@ -8078,6 +8339,11 @@ stream-shift@^1.0.0: resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= +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" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -8095,6 +8361,15 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + string.prototype.padend@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz#f3aaef7c1719f170c5eab1c32bf780d96e21f2f0" @@ -8120,11 +8395,6 @@ string_decoder@^1.0.0, string_decoder@^1.1.1: dependencies: safe-buffer "~5.1.0" -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= - string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -8146,6 +8416,13 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" @@ -8176,9 +8453,9 @@ strip-json-comments@~2.0.1: integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= stylehacks@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.1.tgz#3186595d047ab0df813d213e51c8b94e0b9010f2" - integrity sha512-TK5zEPeD9NyC1uPIdjikzsgWxdQQN/ry1X3d1iOz1UkYDCmcr928gWD1KHgyC27F50UnE0xCTrBOO1l6KR8M4w== + version "4.0.3" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" + integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== dependencies: browserslist "^4.0.0" postcss "^7.0.0" @@ -8196,37 +8473,49 @@ supports-color@^2.0.0: resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= -supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0: +supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" -svgo@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.1.1.tgz#12384b03335bcecd85cfa5f4e3375fed671cb985" - integrity sha512-GBkJbnTuFpM4jFbiERHDWhZc/S/kpHToqmZag3aEBjPYK44JAN2QBjvrGIxLOoCyMZjuFQIfTO2eJd8uwLY/9g== +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== dependencies: - coa "~2.0.1" - colors "~1.1.2" + has-flag "^3.0.0" + +svg-tags@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" + integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q= + +svgo@^1.0.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.2.2.tgz#0253d34eccf2aed4ad4f283e11ee75198f9d7316" + integrity sha512-rAfulcwp2D9jjdGu+0CuqlrAUin6bBWrpoqXWwKDZZZJfXcUXQSxLJOFJCQCSA0x0pP2U0TxSlJu2ROq5Bq6qA== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" css-select "^2.0.0" - css-select-base-adapter "~0.1.0" + css-select-base-adapter "^0.1.1" css-tree "1.0.0-alpha.28" css-url-regex "^1.1.0" - csso "^3.5.0" - js-yaml "^3.12.0" + csso "^3.5.1" + js-yaml "^3.13.1" mkdirp "~0.5.1" - object.values "^1.0.4" + object.values "^1.1.0" sax "~1.2.4" - stable "~0.1.6" + stable "^0.1.8" unquote "~1.1.1" util.promisify "~1.0.0" symbol-tree@^3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" - integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY= + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== table@4.0.2: version "4.0.2" @@ -8241,73 +8530,84 @@ table@4.0.2: string-width "^2.1.1" tapable@^1.0.0, tapable@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.1.tgz#4d297923c5a72a42360de2ab52dadfaaec00018e" - integrity sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA== + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== tar@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" - integrity sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE= + version "2.2.2" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40" + integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA== dependencies: block-stream "*" - fstream "^1.0.2" + fstream "^1.0.12" inherits "2" tar@^4: - version "4.4.8" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" - integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== + version "4.4.10" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.10.tgz#946b2810b9a5e0b26140cf78bea6b0b0d689eba1" + integrity sha512-g2SVs5QIxvo6OLp0GudTqEf05maawKUxXru104iaayWA09551tFCTI8f1Asb4lPfkBr91k07iL4c11XO3/b0tA== dependencies: chownr "^1.1.1" fs-minipass "^1.2.5" - minipass "^2.3.4" - minizlib "^1.1.1" + minipass "^2.3.5" + minizlib "^1.2.1" mkdirp "^0.5.0" safe-buffer "^5.1.2" - yallist "^3.0.2" + yallist "^3.0.3" -terser-webpack-plugin@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.1.0.tgz#cf7c25a1eee25bf121f4a587bb9e004e3f80e528" - integrity sha512-61lV0DSxMAZ8AyZG7/A4a3UPlrbOBo8NIQ4tJzLPAdGOQ+yoNC7l5ijEow27lBAL2humer01KLS6bGIMYQxKoA== +terser-webpack-plugin@^1.1.0, terser-webpack-plugin@^1.2.3: + version "1.3.0" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.3.0.tgz#69aa22426299f4b5b3775cbed8cb2c5d419aa1d4" + integrity sha512-W2YWmxPjjkUcOWa4pBEv4OP4er1aeQJlSo2UhtCFQCuRXEHjOFscO8VyWHj9JLlA0RzQb8Y2/Ta78XZvT54uGg== dependencies: - cacache "^11.0.2" + cacache "^11.3.2" find-cache-dir "^2.0.0" + is-wsl "^1.1.0" + loader-utils "^1.2.3" schema-utils "^1.0.0" - serialize-javascript "^1.4.0" + serialize-javascript "^1.7.0" source-map "^0.6.1" - terser "^3.8.1" - webpack-sources "^1.1.0" - worker-farm "^1.5.2" + terser "^4.0.0" + webpack-sources "^1.3.0" + worker-farm "^1.7.0" -terser@^3.8.1: - version "3.13.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-3.13.1.tgz#a02e8827fb9705fe7b609c31093d010b28cea8eb" - integrity sha512-ogyZye4DFqOtMzT92Y3Nxxw8OvXmL39HOALro4fc+EUYFFF9G/kk0znkvwMz6PPYgBtdKAodh3FPR70eugdaQA== +terser@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.0.0.tgz#ef356f6f359a963e2cc675517f21c1c382877374" + integrity sha512-dOapGTU0hETFl1tCo4t56FN+2jffoKyER9qBGoUFyZ6y7WLoKT0bF+lAYi6B6YsILcGF3q1C2FBh8QcKSCgkgA== dependencies: - commander "~2.17.1" + commander "^2.19.0" source-map "~0.6.1" - source-map-support "~0.5.6" - -text-encoding@^0.6.4: - version "0.6.4" - resolved "https://registry.yarnpkg.com/text-encoding/-/text-encoding-0.6.4.tgz#e399a982257a276dae428bb92845cb71bdc26d19" - integrity sha1-45mpgiV6J22uQou5KEXLcb3CbRk= + source-map-support "~0.5.10" text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -thread-loader@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/thread-loader/-/thread-loader-1.2.0.tgz#35dedb23cf294afbbce6c45c1339b950ed17e7a4" - integrity sha512-acJ0rvUk53+ly9cqYWNOpPqOgCkNpmHLPDGduNm4hDQWF7EDKEJXAopG9iEWsPPcml09wePkq3NF+ZUqnO6tbg== +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= dependencies: - async "^2.3.0" - loader-runner "^2.3.0" + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.0" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839" + integrity sha1-5p44obq+lpsBCCB5eLn2K4hgSDk= + dependencies: + any-promise "^1.0.0" + +thread-loader@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/thread-loader/-/thread-loader-2.1.2.tgz#f585dd38e852c7f9cded5d092992108148f5eb30" + integrity sha512-7xpuc9Ifg6WU+QYw/8uUqNdRwMD+N5gjwHKMqETrs96Qn+7BHwECpt2Brzr4HFlf4IAkZsayNhmGdbkBsTJ//w== + dependencies: + loader-runner "^2.3.1" loader-utils "^1.1.0" + neo-async "^2.6.0" through2@^2.0.0: version "2.0.5" @@ -8386,24 +8686,22 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + token-stream@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/token-stream/-/token-stream-0.0.1.tgz#ceeefc717a76c4316f126d0b9dbaa55d7e7df01a" integrity sha1-zu78cXp2xDFvEm0LnbqlXX598Bo= -topo@3.x.x: - version "3.0.3" - resolved "https://registry.yarnpkg.com/topo/-/topo-3.0.3.tgz#d5a67fb2e69307ebeeb08402ec2a2a6f5f7ad95c" - integrity sha512-IgpPtvD4kjrJ7CRA3ov2FhWQADwv+Tdqbsf1ZnPUSAtCJ9e1Z44MmoSGDXGk4IppoZA7jd/QRkNddlLJWlUZsQ== - dependencies: - hoek "6.x.x" - toposort@^1.0.0: version "1.0.7" resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk= -tough-cookie@>=2.3.3, tough-cookie@^2.5.0: +tough-cookie@^2.3.3, tough-cookie@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== @@ -8449,9 +8747,9 @@ tryer@^1.0.0: integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== tslib@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" - integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== + version "1.10.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" + integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== tty-browserify@0.0.0: version "0.0.0" @@ -8482,13 +8780,18 @@ type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.5, type-detect@^4.0.8: resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== -type-is@~1.6.16: - version "1.6.16" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" - integrity sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q== +type-fest@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.4.1.tgz#8bdf77743385d8a4f13ba95f610f5ccd68c728f8" + integrity sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw== + +type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== dependencies: media-typer "0.3.0" - mime-types "~2.1.18" + mime-types "~2.1.24" typedarray@^0.0.6: version "0.0.6" @@ -8496,11 +8799,11 @@ typedarray@^0.0.6: integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= uglify-js@3.4.x: - version "3.4.9" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3" - integrity sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q== + version "3.4.10" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f" + integrity sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw== dependencies: - commander "~2.17.1" + commander "~2.19.0" source-map "~0.6.1" uglify-js@^2.6.1: @@ -8531,15 +8834,15 @@ unicode-match-property-ecmascript@^1.0.4: unicode-canonical-property-names-ecmascript "^1.0.4" unicode-property-aliases-ecmascript "^1.0.4" -unicode-match-property-value-ecmascript@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz#9f1dc76926d6ccf452310564fd834ace059663d4" - integrity sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ== +unicode-match-property-value-ecmascript@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277" + integrity sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g== unicode-property-aliases-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz#5a533f31b4317ea76f17d807fa0d116546111dd0" - integrity sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg== + version "1.0.5" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57" + integrity sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw== union-value@^1.0.0: version "1.0.0" @@ -8561,7 +8864,7 @@ uniqs@^2.0.0: resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= -unique-filename@^1.1.0: +unique-filename@^1.1.0, unique-filename@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== @@ -8569,9 +8872,9 @@ unique-filename@^1.1.0: unique-slug "^2.0.0" unique-slug@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.1.tgz#5e9edc6d1ce8fb264db18a507ef9bd8544451ca6" - integrity sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg== + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== dependencies: imurmurhash "^0.1.4" @@ -8598,10 +8901,10 @@ unset-value@^1.0.0: 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" - integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw== +upath@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068" + integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q== upper-case@^1.1.1: version "1.1.3" @@ -8630,17 +8933,17 @@ url-loader@^1.1.2: schema-utils "^1.0.0" url-parse@^1.4.3: - version "1.4.4" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.4.tgz#cac1556e95faa0303691fec5cf9d5a1bc34648f8" - integrity sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg== + version "1.4.7" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" + integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== dependencies: - querystringify "^2.0.0" + querystringify "^2.1.1" requires-port "^1.0.0" -url-polyfill@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/url-polyfill/-/url-polyfill-1.1.3.tgz#ce0bdf2e923aa6f66bc198ab776323dfc5a91e62" - integrity sha512-xIAXc0DyXJCd767sSeRu4eqisyYhR0z0sohWArCn+WPwIatD39xGrc09l+tluIUi6jGkpGa8Gz8TKwkKYxMQvQ== +url-polyfill@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/url-polyfill/-/url-polyfill-1.1.5.tgz#bec79b72b5407dba6d8cced2e32e4ab273aa9fb1" + integrity sha512-9XjIJ6nwrU+nGd8t90Ze0Zs7t8A+SU0gqsqPttj6j3zAVe5q0HFcuv37nDBdVSPpi4aTHTfbUF/i+ZVD+o2EbA== url@^0.11.0: version "0.11.0" @@ -8660,7 +8963,7 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -util.promisify@1.0.0, util.promisify@^1.0.0, util.promisify@~1.0.0: +util.promisify@1.0.0, util.promisify@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== @@ -8675,10 +8978,10 @@ util@0.10.3: 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" - integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== +util@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== dependencies: inherits "2.0.3" @@ -8711,9 +9014,9 @@ vary@~1.1.2: integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= vendors@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.2.tgz#7fcb5eef9f5623b156bcea89ec37d63676f21801" - integrity sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ== + version "1.0.3" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.3.tgz#a6467781abd366217c050f8202e7e50cc9eef8c0" + integrity sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw== verror@1.10.0: version "1.10.0" @@ -8724,12 +9027,10 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vm-browserify@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" - integrity sha1-XX6kW7755Kb/ZflUOOCofDV9WnM= - dependencies: - indexof "0.0.1" +vm-browserify@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019" + integrity sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw== void-elements@^2.0.1: version "2.0.1" @@ -8749,26 +9050,26 @@ vue-eslint-parser@^2.0.3: lodash "^4.17.4" vue-gettext@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/vue-gettext/-/vue-gettext-2.1.1.tgz#8431b57c27d0becff131de6a643ac4ea8ffcb52c" - integrity sha512-vbKhl7VGlVtTElNIdvpC4GKTRH1CwZmzhELcP6jS/UaFcF+yZvS5bIIAiPCQzMEU5dpAI0hIgJAxAKOMIg7UXw== + version "2.1.5" + resolved "https://registry.yarnpkg.com/vue-gettext/-/vue-gettext-2.1.5.tgz#6bede1091c25ca657c591532a154b7e5680abd84" + integrity sha512-QAfPupLNthQLDVSIoLKOSiDeBqXja3qfT48Civhuxwjdee0fdi0MHTgsvnseMsHDfMJq6GBxIMBMhoRp6NJdjg== vue-hot-reload-api@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.1.tgz#b2d3d95402a811602380783ea4f566eb875569a2" - integrity sha512-AA86yKZ5uOKz87/q1UpngEXhbRkaYg1b7HMMVRobNV1IVKqZe8oLIzo6iMocVwZXnYitlGwf2k4ZRLOZlS8oPQ== + version "2.3.3" + resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.3.tgz#2756f46cb3258054c5f4723de8ae7e87302a1ccf" + integrity sha512-KmvZVtmM26BQOMK1rwUZsrqxEGeKiYSZGA7SNWE6uExx8UX/cj9hq2MRV/wWC3Cq6AoeDGk57rL9YMFRel/q+g== vue-lazyload@^1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/vue-lazyload/-/vue-lazyload-1.2.6.tgz#baa04c172d52a812608eb12c7a6bfb14f5c91079" integrity sha512-6a61+pzwcfowhLRQiPdmRuJ40n/4fL/sEynu8KQZoCf5RVA0NH0X68vplLY0+lUM8mKNScYomaepV+hdjgnZhg== -vue-loader@^15.4.2: - version "15.4.2" - resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.4.2.tgz#812bb26e447dd3b84c485eb634190d914ce125e2" - integrity sha512-nVV27GNIA9MeoD8yQ3dkUzwlAaAsWeYSWZHsu/K04KCD339lW0Jv2sJWsjj3721SP7sl2lYdPmjcHgkWQSp5bg== +vue-loader@^15.7.0: + version "15.7.0" + resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.7.0.tgz#27275aa5a3ef4958c5379c006dd1436ad04b25b3" + integrity sha512-x+NZ4RIthQOxcFclEcs8sXGEWqnZHodL2J9Vq+hUz+TDZzBaDIh1j3d9M2IUlTjtrHTZy4uMuRdTi8BGws7jLA== dependencies: - "@vue/component-compiler-utils" "^2.0.0" + "@vue/component-compiler-utils" "^2.5.1" hash-sum "^1.0.2" loader-utils "^1.1.0" vue-hot-reload-api "^2.3.0" @@ -8784,16 +9085,16 @@ vue-masonry@^0.11.5: vue "^2.0.0" vue-plyr@^5.0.4: - version "5.0.4" - resolved "https://registry.yarnpkg.com/vue-plyr/-/vue-plyr-5.0.4.tgz#13083b71a876d01200a3c93ebfd11585b671afda" - integrity sha512-zOLD7SZiYR/8DPYkZZR9zGTV+04GAc+fhnBymAWSRryncAG4889cYxXJSbIvlsNVGpdGRIOSIZ4p6pIupfmZ5w== + version "5.1.3" + resolved "https://registry.yarnpkg.com/vue-plyr/-/vue-plyr-5.1.3.tgz#38da58f71b952c3dbfa8c7fccc5b2471a118c654" + integrity sha512-Nx9uyn7OUfJ4FlcWs4u2N1YHuAdVhmlc/CEbT8IvwFOU9WP/8nxwOxMoAycMWrHK23a4MdYjrADEKC2QHWsw4A== dependencies: - plyr "^3.4.5" + plyr "^3.5.2" vue-router@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.0.2.tgz#dedc67afe6c4e2bc25682c8b1c2a8c0d7c7e56be" - integrity sha512-opKtsxjp9eOcFWdp6xLQPLmRGgfM932Tl56U9chYTnoWqKxQ8M20N7AkdEbM5beUh6wICoFGYugAX9vQjyJLFg== + version "3.0.6" + resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.0.6.tgz#2e4f0f9cbb0b96d0205ab2690cfe588935136ac3" + integrity sha512-Ox0ciFLswtSGRTHYhGvx2L44sVbTPNS+uD2kRISuo8B39Y79rOo0Kw0hzupTmiVtftQYCZl87mwldhh2L9Aquw== vue-style-loader@^4.1.0: version "4.1.2" @@ -8804,34 +9105,34 @@ vue-style-loader@^4.1.0: loader-utils "^1.0.2" vue-template-compiler@^2.5.16, vue-template-compiler@^2.5.17: - version "2.5.21" - resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.5.21.tgz#a57ceb903177e8f643560a8d639a0f8db647054a" - integrity sha512-Vmk5Cv7UcmI99B9nXJEkaK262IQNnHp5rJYo+EwYpe2epTAXqcVyExhV6pk8jTkxQK2vRc8v8KmZBAwdmUZvvw== + version "2.6.10" + resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.10.tgz#323b4f3495f04faa3503337a82f5d6507799c9cc" + integrity sha512-jVZkw4/I/HT5ZMvRnhv78okGusqe0+qH2A0Em0Cp8aq78+NK9TII263CDVz2QXZsIT+yyV/gZc/j/vlwa+Epyg== dependencies: de-indent "^1.0.2" he "^1.1.0" -vue-template-es2015-compiler@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.6.0.tgz#dc42697133302ce3017524356a6c61b7b69b4a18" - integrity sha512-x3LV3wdmmERhVCYy3quqA57NJW7F3i6faas++pJQWtknWT+n7k30F4TVdHvCLn48peTJFRvCpxs3UuFPqgeELg== +vue-template-es2015-compiler@^1.6.0, vue-template-es2015-compiler@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825" + integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw== vue-upload-component@^2.8.11: - version "2.8.16" - resolved "https://registry.yarnpkg.com/vue-upload-component/-/vue-upload-component-2.8.16.tgz#cf8c9c7d6b342a5e0485d6955cebd22f31806ed2" - integrity sha512-aDFKA1lpZojNFzSeC9iGah5qupj1ZhUCDjYFk4FyMNrUXhICSBicc+zzXGB1gQtoqjbmPjrWLZ/r2ejJ+iCcsA== + version "2.8.20" + resolved "https://registry.yarnpkg.com/vue-upload-component/-/vue-upload-component-2.8.20.tgz#60824d3f20f3216dca90d8c86a5c980851b04ea0" + integrity sha512-zrnJvULu4rnZe36Ib2/AZrI/h/mmNbUJZ+acZD652PyumzbvjCOQeYHe00sGifTdYjzzS66CwhTT+ubZ2D0Aow== vue@^2.0.0, vue@^2.5.17: - version "2.5.21" - resolved "https://registry.yarnpkg.com/vue/-/vue-2.5.21.tgz#3d33dcd03bb813912ce894a8303ab553699c4a85" - integrity sha512-Aejvyyfhn0zjVeLvXd70h4hrE4zZDx1wfZqia6ekkobLmUZ+vNFQer53B4fu0EjWBSiqApxPejzkO1Znt3joxQ== + version "2.6.10" + resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.10.tgz#a72b1a42a4d82a721ea438d1b6bf55e66195c637" + integrity sha512-ImThpeNU9HbdZL3utgMCq0oiMzAkt1mcgy3/E6zWC/G6AaQoeuFdsl9nDhTDU3X1R6FK7nsIUuRACVcjI+A2GQ== vuedraggable@^2.16.0: - version "2.17.0" - resolved "https://registry.yarnpkg.com/vuedraggable/-/vuedraggable-2.17.0.tgz#489c16c9bcb9eb06f441944d3c52e5f2bb7060f9" - integrity sha512-TAC5tJTSbHSINQCSB59qHnuzT0Ad+E3IgvSWuA1e9UaebD8DxKaY1tCdvL3XvuLoaM3wc1dhpP/NbjpdxYsrng== + version "2.21.0" + resolved "https://registry.yarnpkg.com/vuedraggable/-/vuedraggable-2.21.0.tgz#30c485ed737a9a6a73ea8f21cc8e1ed59aaddc92" + integrity sha512-UDp0epjaZikuInoJA9rlEIJaSTQThabq0R9x7TqBdl0qGVFKKzo6glP6ubfzWBmV4iRIfbSOs2DV06s3B5h5tA== dependencies: - sortablejs "^1.7.0" + sortablejs "^1.9.0" vuex-persistedstate@^2.5.4: version "2.5.4" @@ -8847,9 +9148,9 @@ vuex-router-sync@^5.0.0: integrity sha512-Mry2sO4kiAG64714X1CFpTA/shUH1DmkZ26DFDtwoM/yyx6OtMrc+MxrU+7vvbNLO9LSpgwkiJ8W+rlmRtsM+w== vuex@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.0.1.tgz#e761352ebe0af537d4bb755a9b9dc4be3df7efd2" - integrity sha512-wLoqz0B7DSZtgbWL1ShIBBCjv22GV5U+vcBFox658g6V0s4wZV9P4YjCNyoHSyIBpj1f29JBoNQIqD82cR4O3w== + version "3.1.1" + resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.1.1.tgz#0c264bfe30cdbccf96ab9db3177d211828a5910e" + integrity sha512-ER5moSbLZuNSMBFnEBVGhQ1uCBNJslH9W/Dw2W7GZN23UQA69uapP5GTT9Vm8Trc0PzBSVt6LzF3hGjmv41xcg== w3c-hr-time@^1.0.1: version "1.0.1" @@ -8859,9 +9160,9 @@ w3c-hr-time@^1.0.1: browser-process-hrtime "^0.1.2" w3c-xmlserializer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.0.1.tgz#054cdcd359dc5d1f3ec9be4e272c756af4b21d39" - integrity sha512-XZGI1OH/OLQr/NaJhhPmzhngwcAnZDLytsvXnRmlYeRkmbb0I7sqFFA22erq4WQR0sUu17ZSQOAV9mFwCqKRNg== + version "1.1.2" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" + integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== dependencies: domexception "^1.0.1" webidl-conversions "^4.0.2" @@ -8876,7 +9177,7 @@ watchpack@^1.5.0: graceful-fs "^4.1.2" neo-async "^2.5.0" -wbuf@^1.1.0, wbuf@^1.7.2: +wbuf@^1.1.0, wbuf@^1.7.3: version "1.7.3" resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== @@ -8895,12 +9196,13 @@ webidl-conversions@^4.0.2: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== -webpack-bundle-analyzer@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.0.3.tgz#dbc7fff8f52058b6714a20fddf309d0790e3e0a0" - integrity sha512-naLWiRfmtH4UJgtUktRTLw6FdoZJ2RvCR9ePbwM9aRMsS/KjFerkPZG9epEvXRAw5d5oPdrs9+3p+afNjxW8Xw== +webpack-bundle-analyzer@^3.3.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.3.2.tgz#3da733a900f515914e729fcebcd4c40dde71fc6f" + integrity sha512-7qvJLPKB4rRWZGjVp5U1KEjwutbDHSKboAl0IfafnrdXMrgC0tOtZbQD6Rw0u4cmpgRN4O02Fc0t8eAT+FgGzA== dependencies: - acorn "^5.7.3" + acorn "^6.0.7" + acorn-walk "^6.1.1" bfj "^6.1.1" chalk "^2.4.1" commander "^2.18.0" @@ -8930,49 +9232,52 @@ webpack-chain@^4.11.0: deepmerge "^1.5.2" javascript-stringify "^1.6.0" -webpack-dev-middleware@3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.4.0.tgz#1132fecc9026fd90f0ecedac5cbff75d1fb45890" - integrity sha512-Q9Iyc0X9dP9bAsYskAVJ/hmIZZQwf/3Sy4xCAZgL5cUkjZmUZLt4l5HpbST/Pdgjn3u6pE7u5OdGd1apgzRujA== +webpack-dev-middleware@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.0.tgz#ef751d25f4e9a5c8a35da600c5fda3582b5c6cff" + integrity sha512-qvDesR1QZRIAZHOE3iQ4CXLZZSQ1lAUsSpnQmlB1PBfoN/xdRjmge3Dok0W4IdaVLJOGJy3sGI4sZHwjRU0PCA== dependencies: - memory-fs "~0.4.1" - mime "^2.3.1" - range-parser "^1.0.3" + memory-fs "^0.4.1" + mime "^2.4.2" + range-parser "^1.2.1" webpack-log "^2.0.0" -webpack-dev-server@^3.1.10: - version "3.1.10" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.10.tgz#507411bee727ee8d2fdffdc621b66a64ab3dea2b" - integrity sha512-RqOAVjfqZJtQcB0LmrzJ5y4Jp78lv9CK0MZ1YJDTaTmedMZ9PU9FLMQNrMCfVu8hHzaVLVOJKBlGEHMN10z+ww== +webpack-dev-server@^3.4.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.7.1.tgz#ce10ca0ad6cf28b03e2ce9808684a8616039155d" + integrity sha512-GSBjjDMQ+uJI/Rcw/NfXDq5QpfE4HviafCy2SdbJ8Q22MwsnyoHd5TbWRfxgkbklsMx+ZNgWIKK+cB28ynjiDQ== dependencies: ansi-html "0.0.7" bonjour "^3.5.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.18.0" + chokidar "^2.1.6" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" + debug "^4.1.1" + del "^4.1.1" + express "^4.17.1" + html-entities "^1.2.1" + http-proxy-middleware "^0.19.1" import-local "^2.0.0" - internal-ip "^3.0.1" + internal-ip "^4.3.0" ip "^1.1.5" - killable "^1.0.0" - loglevel "^1.4.1" - opn "^5.1.0" - portfinder "^1.0.9" + killable "^1.0.1" + loglevel "^1.6.2" + opn "^5.5.0" + p-retry "^3.0.1" + portfinder "^1.0.20" schema-utils "^1.0.0" - selfsigned "^1.9.1" - serve-index "^1.7.2" + selfsigned "^1.10.4" + semver "^6.1.1" + serve-index "^1.9.1" sockjs "0.3.19" sockjs-client "1.3.0" - spdy "^3.4.1" - strip-ansi "^3.0.0" - supports-color "^5.1.0" - webpack-dev-middleware "3.4.0" + spdy "^4.0.0" + strip-ansi "^3.0.1" + supports-color "^6.1.0" + url "^0.11.0" + webpack-dev-middleware "^3.7.0" webpack-log "^2.0.0" - yargs "12.0.2" + yargs "12.0.5" webpack-log@^2.0.0: version "2.0.0" @@ -8982,10 +9287,10 @@ webpack-log@^2.0.0: ansi-colors "^3.0.0" uuid "^3.3.2" -webpack-merge@^4.1.4: - version "4.1.5" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.1.5.tgz#2be31e846c20767d1bef56bdca64c328a681190a" - integrity sha512-sVcM+MMJv6DO0C0GLLltx8mUlGMKXE0zBsuMqZ9jz2X9gsekALw6Rs0cAfTWc97VuWS6NpVUa78959zANnMMLQ== +webpack-merge@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.1.tgz#5e923cf802ea2ace4fd5af1d3247368a633489b4" + integrity sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw== dependencies: lodash "^4.17.5" @@ -8997,10 +9302,10 @@ webpack-sources@^1.1.0, webpack-sources@^1.3.0: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@^4.26.1: - version "4.28.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.28.0.tgz#6bdc26c17fe4c7e28c29fa002e6d37ac92caae9e" - integrity sha512-gPNTMGR5ZlBucXmEQ34TRxRqXnGYq9P3t8LeP9rvhkNnr+Cn+HvZMxGuJ4Hl7zdmoRUZP+GosniqJiadXW/RqQ== +"webpack@>=4 < 4.29": + version "4.28.4" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.28.4.tgz#1ddae6c89887d7efb752adf0c3cd32b9b07eacd0" + integrity sha512-NxjD61WsK/a3JIdwWjtIpimmvE6UrRi3yG54/74Hk9rwNj5FPkA4DJCf1z4ByDWLkvZhTZE+P3C/eh6UD5lDcw== dependencies: "@webassemblyjs/ast" "1.7.11" "@webassemblyjs/helper-module-context" "1.7.11" @@ -9028,11 +9333,12 @@ webpack@^4.26.1: webpack-sources "^1.3.0" websocket-driver@>=0.5.1: - version "0.7.0" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb" - integrity sha1-DK+dLXVdk67gSdS90NP+LMoqJOs= + version "0.7.3" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9" + integrity sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg== dependencies: - http-parser-js ">=0.4.0" + http-parser-js ">=0.4.0 <0.4.11" + safe-buffer ">=5.1.0" websocket-extensions ">=0.1.1" websocket-extensions@>=0.1.1: @@ -9108,10 +9414,10 @@ wordwrap@~1.0.0: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= -worker-farm@^1.5.2: - version "1.6.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0" - integrity sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ== +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== dependencies: errno "~0.1.7" @@ -9123,6 +9429,15 @@ wrap-ansi@^2.0.0: string-width "^1.0.1" strip-ansi "^3.0.1" +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -9136,9 +9451,9 @@ write@^0.2.1: mkdirp "^0.5.1" ws@^6.0.0, ws@^6.1.2: - version "6.1.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.2.tgz#3cc7462e98792f0ac679424148903ded3b9c3ad8" - integrity sha512-rfUqzvz0WxmSXtJpPMX2EeASXabOrSMk1ruMOV3JBTBjo4ac2lDjGGsbQSyxj8Odhw5fBib8ZKEjDNvgouNKYw== + version "6.2.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" + integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== dependencies: async-limiter "~1.0.0" @@ -9152,11 +9467,6 @@ xmlchars@^1.3.1: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-1.3.1.tgz#1dda035f833dbb4f86a0c28eaa6ca769214793cf" integrity sha512-tGkGJkN8XqCod7OT+EvGYK5Z4SfDQGD30zAa58OcnAa0RRWgzUEK72tkXhsX1FZd+rgnhRxFtmO+ihkp8LHSkw== -xregexp@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020" - integrity sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg== - xtend@^4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" @@ -9177,17 +9487,26 @@ yallist@^2.1.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= -yallist@^3.0.0, yallist@^3.0.2: +yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== -yargs-parser@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" - integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== +yargs-parser@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" + integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== dependencies: - camelcase "^4.1.0" + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^13.1.0: + version "13.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" + integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" yargs-parser@^5.0.0: version "5.0.0" @@ -9210,13 +9529,13 @@ yargs-parser@^9.0.2: dependencies: camelcase "^4.1.0" -yargs@12.0.2: - version "12.0.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.2.tgz#fe58234369392af33ecbef53819171eff0f5aadc" - integrity sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ== +yargs@12.0.5: + version "12.0.5" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" + integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== dependencies: cliui "^4.0.0" - decamelize "^2.0.0" + decamelize "^1.2.0" find-up "^3.0.0" get-caller-file "^1.0.1" os-locale "^3.0.0" @@ -9226,7 +9545,7 @@ yargs@12.0.2: string-width "^2.0.0" which-module "^2.0.0" y18n "^3.2.1 || ^4.0.0" - yargs-parser "^10.1.0" + yargs-parser "^11.1.1" yargs@^10.0.3: version "10.1.2" @@ -9264,6 +9583,23 @@ yargs@^11.0.0: y18n "^3.2.1" yargs-parser "^9.0.2" +yargs@^13.0.0: + version "13.2.4" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83" + integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + os-locale "^3.1.0" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.0" + yargs@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" From 80816ec50d5629524d61b833f9dd4371f821247a Mon Sep 17 00:00:00 2001 From: Eliot Berriot Date: Mon, 17 Jun 2019 09:48:56 +0200 Subject: [PATCH 023/291] Fix #854: Hardcoded list of supported browsers to avoid unexpected regressions --- changes/changelog.d/854.enhancement | 1 + front/package.json | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 changes/changelog.d/854.enhancement diff --git a/changes/changelog.d/854.enhancement b/changes/changelog.d/854.enhancement new file mode 100644 index 000000000..f5e780716 --- /dev/null +++ b/changes/changelog.d/854.enhancement @@ -0,0 +1 @@ +Hardcoded list of supported browsers to avoid unexpected regressions (#854) diff --git a/front/package.json b/front/package.json index 22b5f3bb5..ebd520505 100644 --- a/front/package.json +++ b/front/package.json @@ -85,9 +85,20 @@ } }, "browserslist": [ - "> 1%", - "last 2 versions", - "not ie <= 8" + "IE >= 11", + "Firefox >= 52", + "ChromeAndroid >= 70", + "Chrome >= 49", + "Safari >= 9", + "Edge >= 16", + "Opera >= 57", + "OperaMini >= 57", + "Samsung >= 7", + "FirefoxAndroid >= 63", + "UCAndroid >= 11", + "iOS >= 9", + "Android >= 4", + "not dead" ], "author": "Eliot Berriot ", "description": "Funkwhale front-end" From 2301982374db9c91c8ec5f560f62c41f575501b7 Mon Sep 17 00:00:00 2001 From: Reg Date: Tue, 18 Jun 2019 22:52:57 +0200 Subject: [PATCH 024/291] Fixed typo refrence => reference --- api/funkwhale_api/music/management/commands/import_files.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/api/funkwhale_api/music/management/commands/import_files.py b/api/funkwhale_api/music/management/commands/import_files.py index 541b60886..33f8ed2d1 100644 --- a/api/funkwhale_api/music/management/commands/import_files.py +++ b/api/funkwhale_api/music/management/commands/import_files.py @@ -226,7 +226,7 @@ class Command(BaseCommand): urllib.parse.urlencode([("import", reference)]), ) self.stdout.write( - "For details, please refer to import refrence '{}' or URL {}".format( + "For details, please refer to import reference '{}' or URL {}".format( reference, import_url ) ) @@ -246,7 +246,7 @@ class Command(BaseCommand): self.stderr.write("- {}: {}".format(path, error)) self.stdout.write( - "For details, please refer to import refrence '{}' or URL {}".format( + "For details, please refer to import reference '{}' or URL {}".format( reference, import_url ) ) From 4de78995c0a32bd7fbd0dbe3b3cf861500b594fd Mon Sep 17 00:00:00 2001 From: Eliot Berriot Date: Wed, 19 Jun 2019 10:26:09 +0200 Subject: [PATCH 025/291] Fix #862: replaced Daphne by Gunicorn/Uvicorn --- .gitlab-ci.yml | 1 + api/Dockerfile | 2 +- api/compose/django/daphne.sh | 3 - api/compose/django/server.sh | 3 + api/requirements.apt | 1 + api/requirements/base.txt | 2 + changes/changelog.d/862.enhancement | 1 + changes/notes.rst | 108 ++++------------------------ deploy/FreeBSD/funkwhale_server | 4 +- deploy/Gentoo/funkwhale_server | 8 +-- deploy/env.prod.sample | 6 +- deploy/funkwhale-server.service | 3 +- docs/installation/debian.rst | 2 +- 13 files changed, 33 insertions(+), 111 deletions(-) delete mode 100755 api/compose/django/daphne.sh create mode 100755 api/compose/django/server.sh create mode 100644 changes/changelog.d/862.enhancement diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index cc53bc652..9c7e57d55 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -129,6 +129,7 @@ test_api: only: - branches before_script: + - apk add make - cd api - sed -i '/Pillow/d' requirements/base.txt - pip3 install -r requirements/base.txt diff --git a/api/Dockerfile b/api/Dockerfile index c735ab397..aacbafac6 100644 --- a/api/Dockerfile +++ b/api/Dockerfile @@ -44,7 +44,7 @@ RUN \ if [ "$install_dev_deps" = "1" ] ; then echo "Installing dev dependencies" && pip3 install --no-cache-dir -r /requirements/local.txt -r /requirements/test.txt ; else echo "Skipping dev deps installation" ; fi ENTRYPOINT ["./compose/django/entrypoint.sh"] -CMD ["./compose/django/daphne.sh"] +CMD ["./compose/django/server.sh"] COPY . /app WORKDIR /app diff --git a/api/compose/django/daphne.sh b/api/compose/django/daphne.sh deleted file mode 100755 index b99cb1872..000000000 --- a/api/compose/django/daphne.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -eux -python /app/manage.py collectstatic --noinput -daphne -b 0.0.0.0 -p 5000 config.asgi:application --proxy-headers diff --git a/api/compose/django/server.sh b/api/compose/django/server.sh new file mode 100755 index 000000000..0e4c737af --- /dev/null +++ b/api/compose/django/server.sh @@ -0,0 +1,3 @@ +#!/bin/bash -eux +python /app/manage.py collectstatic --noinput +gunicorn config.asgi:application -w ${FUNKWHALE_WEB_WORKERS-1} -k uvicorn.workers.UvicornWorker -b 0.0.0.0:5000 diff --git a/api/requirements.apt b/api/requirements.apt index 6e4db7a3b..075b9ffdd 100644 --- a/api/requirements.apt +++ b/api/requirements.apt @@ -8,3 +8,4 @@ postgresql-client python3-dev libldap2-dev libsasl2-dev +make diff --git a/api/requirements/base.txt b/api/requirements/base.txt index 8372adc47..963f368c5 100644 --- a/api/requirements/base.txt +++ b/api/requirements/base.txt @@ -50,6 +50,8 @@ python-magic==0.4.15 channels==2.1.6 channels_redis>=2.3,<2.4 daphne>=2.2,<2.3 +uvicorn +gunicorn cryptography>=2,<3 # requests-http-signature==0.0.3 diff --git a/changes/changelog.d/862.enhancement b/changes/changelog.d/862.enhancement new file mode 100644 index 000000000..1020083db --- /dev/null +++ b/changes/changelog.d/862.enhancement @@ -0,0 +1 @@ +Replaced Daphne by Gunicorn/Uvicorn to improve stability, flexibility and performance (#862) diff --git a/changes/notes.rst b/changes/notes.rst index 40f7e3c59..28e69733d 100644 --- a/changes/notes.rst +++ b/changes/notes.rst @@ -6,106 +6,22 @@ Next release notes Those release notes refer to the current development branch and are reset after each release. -Edits on tracks, albums and artists -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Funkwhale was a bit annoying when it camed to metadata. Tracks, albums and artists profiles -were created from audio file tags, but basically immutable after that (unless you had -admin access to Django's UI, which wasn't ideal to do this kind of changes). +Replaced Daphne by Gunicorn/Uvicorn [manual action required, non-docker only] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -With this release, everyone can suggest changes on track, album and artist pages. Users -with the "library" permission can review suggested edits in a dedicated interface -and apply/reject them. +To improve the performance, stability and reliability of Funkwhale's web processes, +we now recommend using Gunicorn and Uvicorn instead of Daphne. This combination unlock new use cases such as: -Approved edits are broadcasted via federation, to ensure other instances get the information -too. +- zero-downtime upgrades +- configurable number of web worker processes -Not all fields are currently modifiable using this feature. Especially, it's not possible -to suggest a new album cover, or reassign a track to a different album or artist. Those will -be implemented in a future release. +Based on our benchmarks, Gunicorn/Unicorn is also faster and more stable under higher workloads compared to Daphne. -Admin UI for tracks, albums, artists, libraries and uploads -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +To benefit from this enhancement on existing instances, you need to add ``FUNKWHALE_WEB_WORKERS=1`` in your ``.env`` file +(use a higher number if you want to have more web worker processes). -As part of our ongoing effort to make Funkwhale easier to manage for instance owners, -this release includes a brand new administration interface to deal with: +Then, edit your ``/etc/systemd/system/funkwhale-server.service`` and replace the ``ExecStart=`` line with +``ExecStart=/srv/funkwhale/virtualenv/bin/gunicorn config.asgi:application -w ${FUNKWHALE_WEB_WORKERS} -k uvicorn.workers.UvicornWorker -b ${FUNKWHALE_API_IP}:${FUNKWHALE_API_PORT}`` -- tracks -- albums -- artists -- libraries -- uploads - -You can use this UI to quickly search for any object, delete objects in batch, understand -where they are coming from etc. This new UI should remove the need to go through Django's -admin in the vast majority of cases (but also includes a link to Django's admin when needed). - - -Artist hiding in the interface -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -It's now possible for users to hide artists they don't want to see. - -Content linked to hidden artists will not show up in the interface anymore. Especially: - -- Hidden artists tracks are removed from the current queue -- Starting a playlist will skip tracks from hidden artists -- Recently favorited, recently listened and recently added widgets on the homepage won't include content from hidden artists -- Radio suggestions will exclude tracks from hidden artists -- Hidden artists won't appear in Subsonic apps - -Results linked to hidden artists will continue to show up in search results and their profile page remains accessible. - -OAuth2 authorization for better integration with third-party apps -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -Funkwhale now support the OAuth2 authorization and authentication protocol which will allow -third-party apps to interact with Funkwhale on behalf of users. - -This feature makes it possible to build third-party apps that have the same capabilities -as Funkwhale's Web UI. The only exception at the moment is for actions that requires -special permissions, such as modifying instance settings or moderation (but this will be -enabled in a future release). - -If you want to start building an app on top of Funkwhale's API, please check-out -`https://docs.funkwhale.audio/api.html`_ and `https://docs.funkwhale.audio/developers/authentication.html`_. - -Better error handling and display during import -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -Funkwhale should now be more resilient to missing tags in imported files, and give -you more insights when something goes wrong, including the specific tags that were missing -or invalid, and additional debug information to share in your support requests. - -This information is available in all pages that list uploads, when clicking on the button next to the upload status. - -Support for S3-compatible storages to store media files -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -Storing all media files on the Funkwhale server itself may not be possible or desirable -in all scenarios. You can now configure Funkwhale to store those files in a S3 -bucket instead. - -Check-out `https://docs.funkwhale.audio/admin/external-storages.html`_ if you want to use -this feature. - -Prune library command -^^^^^^^^^^^^^^^^^^^^^ - -Users are often surprised by Funkwhale's tendency to keep track, album and artist -metadata even if no associated files exist. - -To help with that, we now offer a ``prune_library`` management command you can run -to purge your database from obsolete entries. `Please refer to our documentation -for usage instructions `_. - -Check in-place files command -^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -When using in-place import with a living audio library, you'll quite often rename or -remove files from the file system. Unfortunately, Funkwhale keeps a reference to those -files in the database, which results in unplayable tracks. - -To help with that, we now offer a ``check_inplace_files`` management command you can run -to purge your database from obsolete files. `Please refer to our documentation -for usage instructions `_. +Then reload the configuration change with ``sudo systemctl daemon-reload`` and ``sudo systemctl restart funkwhale-server``. diff --git a/deploy/FreeBSD/funkwhale_server b/deploy/FreeBSD/funkwhale_server index 1d7f29ce5..4c7394ab0 100755 --- a/deploy/FreeBSD/funkwhale_server +++ b/deploy/FreeBSD/funkwhale_server @@ -25,8 +25,8 @@ funkwhale_server_user=funkwhale funkwhale_server_env=$(cat /usr/local/www/funkwhale/config/.env | grep -v ^# | xargs) command_interpreter="/usr/local/www/funkwhale/virtualenv/bin/python3" -command="/usr/local/www/funkwhale/virtualenv/bin/daphne" -command_args="-b 127.0.0.1 -p 5000 config.asgi:application --proxy-headers \ +command="/usr/local/www/funkwhale/virtualenv/bin/gunicorn" +command_args="config.asgi:application -w 4 -k uvicorn.workers.UvicornWorker -b 127.0.0.1:5000 \ >> /var/log/funkwhale/${name##funkwhale_}.log 2>&1 &" run_rc_command "$1" diff --git a/deploy/Gentoo/funkwhale_server b/deploy/Gentoo/funkwhale_server index 926bd01d1..c6771f6d7 100644 --- a/deploy/Gentoo/funkwhale_server +++ b/deploy/Gentoo/funkwhale_server @@ -3,9 +3,9 @@ NAME=funkwhaleserver PIDFILE=/var/run/$NAME.pid USER=funkwhale -DAEMON_ARGS="-b 127.0.0.1 -p 5000 config.asgi:application --proxy-headers " -Daphne=/srv/funkwhale/virtualenv/bin/daphne -WORKDIR=/srv/funkwhale/api +DAEMON_ARGS="config.asgi:application -w 4 -k uvicorn.workers.UvicornWorker -b 127.0.0.1:5000 " +Gunicorn=/srv/funkwhale/virtualenv/bin/gunicorn +WORKDIR=/srv/funkwhale/api depend() { need net redis postgresql nginx funkwhale_beat funkwhale_worker @@ -16,7 +16,7 @@ start() { cd /srv/funkwhale/api set -a && source /srv/funkwhale/config/.env && set +a echo 'Starting Funkwhale Server' - start-stop-daemon --start --user $USER --make-pidfile --pidfile $PIDFILE -d $WORKDIR --exec $Daphne -- $DAEMON_ARGS >> /var/log/funk/daphne.log 2>&1& + start-stop-daemon --start --user $USER --make-pidfile --pidfile $PIDFILE -d $WORKDIR --exec $Gunicorn -- $DAEMON_ARGS >> /var/log/funk/server.log 2>&1& echo 'Funkwhale Server started' echo eend $? diff --git a/deploy/env.prod.sample b/deploy/env.prod.sample index b7b0301da..4aea16c15 100644 --- a/deploy/env.prod.sample +++ b/deploy/env.prod.sample @@ -34,7 +34,9 @@ FUNKWHALE_VERSION=latest # example: FUNKWHALE_API_PORT=5678 FUNKWHALE_API_IP=127.0.0.1 FUNKWHALE_API_PORT=5000 - +# The number of web workers to start in parallel. Higher means you can handle +# more concurrent requests, but also leads to higher CPU/Memory usage +FUNKWHALE_WEB_WORKERS=1 # Replace this by the definitive, public domain you will use for # your instance FUNKWHALE_HOSTNAME=yourdomain.funkwhale @@ -168,4 +170,4 @@ AWS_STORAGE_BUCKET_NAME= # If you are using Amazon S3 to serve media directly, you will need to specify your region # name in order to access files. Example: # AWS_S3_REGION_NAME=eu-west-2 -# AWS_S3_REGION_NAME= +# AWS_S3_REGION_NAME= diff --git a/deploy/funkwhale-server.service b/deploy/funkwhale-server.service index 88d70d338..b531e596e 100644 --- a/deploy/funkwhale-server.service +++ b/deploy/funkwhale-server.service @@ -8,7 +8,6 @@ User=funkwhale # adapt this depending on the path of your funkwhale installation WorkingDirectory=/srv/funkwhale/api EnvironmentFile=/srv/funkwhale/config/.env -ExecStart=/srv/funkwhale/virtualenv/bin/daphne -b ${FUNKWHALE_API_IP} -p ${FUNKWHALE_API_PORT} config.asgi:application --proxy-headers - +ExecStart=/srv/funkwhale/virtualenv/bin/gunicorn config.asgi:application -w ${FUNKWHALE_WEB_WORKERS} -k uvicorn.workers.UvicornWorker -b ${FUNKWHALE_API_IP}:${FUNKWHALE_API_PORT} [Install] WantedBy=multi-user.target diff --git a/docs/installation/debian.rst b/docs/installation/debian.rst index 40597cbe3..e8ab0175f 100644 --- a/docs/installation/debian.rst +++ b/docs/installation/debian.rst @@ -24,7 +24,7 @@ On Debian-like systems, you can install them using: # Install dependencies sudo apt-get install curl python3-pip python3-venv git unzip libldap2-dev libsasl2-dev # Funkwhale dependencies - sudo apt install build-essential ffmpeg libjpeg-dev libmagic-dev libpq-dev postgresql-client python3-dev + sudo apt install build-essential ffmpeg libjpeg-dev libmagic-dev libpq-dev postgresql-client python3-dev make On Arch Linux and its derivatives: From e24c1f233077364b819fa3b3945ed6c2c2b8e51a Mon Sep 17 00:00:00 2001 From: Eliot Berriot Date: Wed, 19 Jun 2019 10:54:45 +0200 Subject: [PATCH 026/291] Added missing make to Dockerfile --- api/Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/api/Dockerfile b/api/Dockerfile index aacbafac6..958af297d 100644 --- a/api/Dockerfile +++ b/api/Dockerfile @@ -17,6 +17,7 @@ RUN \ libpq \ libmagic \ libffi-dev \ + make \ zlib-dev \ openldap-dev && \ \ From 08262529ecb0d14ab4529f10d0de1bbbac044107 Mon Sep 17 00:00:00 2001 From: Eliot Berriot Date: Thu, 20 Jun 2019 10:27:07 +0200 Subject: [PATCH 027/291] MRF / Dropping of incoming/outgoing messages based on allow-list --- api/config/settings/common.py | 60 ++++++- api/config/settings/production.py | 46 ------ api/funkwhale_api/federation/activity.py | 64 ++++++-- api/funkwhale_api/federation/admin.py | 2 +- api/funkwhale_api/federation/factories.py | 1 + api/funkwhale_api/federation/mrf_policies.py | 15 ++ api/funkwhale_api/federation/utils.py | 25 ++- api/funkwhale_api/moderation/apps.py | 13 ++ .../dynamic_preferences_registry.py | 2 +- .../moderation/management/__init__.py | 0 .../management/commands/__init__.py | 0 .../management/commands/mrf_check.py | 117 ++++++++++++++ api/funkwhale_api/moderation/mrf.py | 78 ++++++++++ api/funkwhale_api/moderation/mrf_policies.py | 47 ++++++ api/setup.cfg | 1 + api/tests/conftest.py | 15 ++ api/tests/federation/test_activity.py | 147 +++++++++++++++++- api/tests/federation/test_utils.py | 26 ++++ api/tests/moderation/test_commands.py | 77 +++++++++ api/tests/moderation/test_mrf.py | 67 ++++++++ api/tests/moderation/test_mrf_policies.py | 63 ++++++++ dev.yml | 2 + docs/admin/index.rst | 1 + docs/admin/mrf.rst | 117 ++++++++++++++ 24 files changed, 897 insertions(+), 89 deletions(-) create mode 100644 api/funkwhale_api/federation/mrf_policies.py create mode 100644 api/funkwhale_api/moderation/apps.py create mode 100644 api/funkwhale_api/moderation/management/__init__.py create mode 100644 api/funkwhale_api/moderation/management/commands/__init__.py create mode 100644 api/funkwhale_api/moderation/management/commands/mrf_check.py create mode 100644 api/funkwhale_api/moderation/mrf.py create mode 100644 api/funkwhale_api/moderation/mrf_policies.py create mode 100644 api/tests/moderation/test_commands.py create mode 100644 api/tests/moderation/test_mrf.py create mode 100644 api/tests/moderation/test_mrf_policies.py create mode 100644 docs/admin/mrf.rst diff --git a/api/config/settings/common.py b/api/config/settings/common.py index ab060b448..8f2e00ade 100644 --- a/api/config/settings/common.py +++ b/api/config/settings/common.py @@ -11,7 +11,8 @@ https://docs.djangoproject.com/en/dev/ref/settings/ from __future__ import absolute_import, unicode_literals import datetime -import logging +import logging.config +import sys from urllib.parse import urlsplit @@ -20,13 +21,44 @@ from celery.schedules import crontab from funkwhale_api import __version__ -logger = logging.getLogger(__name__) +logger = logging.getLogger("funkwhale_api.config") ROOT_DIR = environ.Path(__file__) - 3 # (/a/b/myfile.py - 3 = /) APPS_DIR = ROOT_DIR.path("funkwhale_api") env = environ.Env() + +LOGLEVEL = env("LOGLEVEL", default="info").upper() +LOGGING_CONFIG = None +logging.config.dictConfig( + { + "version": 1, + "disable_existing_loggers": False, + "formatters": { + "console": {"format": "%(asctime)s %(name)-12s %(levelname)-8s %(message)s"} + }, + "handlers": { + "console": {"class": "logging.StreamHandler", "formatter": "console"}, + # # Add Handler for Sentry for `warning` and above + # 'sentry': { + # 'level': 'WARNING', + # 'class': 'raven.contrib.django.raven_compat.handlers.SentryHandler', + # }, + }, + "loggers": { + "funkwhale_api": { + "level": LOGLEVEL, + "handlers": ["console"], + # required to avoid double logging with root logger + "propagate": False, + }, + "": {"level": "WARNING", "handlers": ["console"]}, + }, + } +) + env_file = env("ENV_FILE", default=None) if env_file: + logger.info("Loading specified env file at %s", env_file) # we have an explicitely specified env file # so we try to load and it fail loudly if it does not exist env.read_env(env_file) @@ -49,6 +81,11 @@ else: logger.info("Loaded env file at %s/.env", path) break +FUNKWHALE_PLUGINS_PATH = env( + "FUNKWHALE_PLUGINS_PATH", default="/srv/funkwhale/plugins/" +) +sys.path.append(FUNKWHALE_PLUGINS_PATH) + FUNKWHALE_HOSTNAME = None FUNKWHALE_HOSTNAME_SUFFIX = env("FUNKWHALE_HOSTNAME_SUFFIX", default=None) FUNKWHALE_HOSTNAME_PREFIX = env("FUNKWHALE_HOSTNAME_PREFIX", default=None) @@ -146,7 +183,8 @@ if RAVEN_ENABLED: "release": __version__, } THIRD_PARTY_APPS += ("raven.contrib.django.raven_compat",) - + logging.getLogger("").addHandler("sentry") + logging.getLogger("funkwhale_api").addHandler("sentry") # Apps specific for this project go here. LOCAL_APPS = ( @@ -160,7 +198,7 @@ LOCAL_APPS = ( "funkwhale_api.requests", "funkwhale_api.favorites", "funkwhale_api.federation", - "funkwhale_api.moderation", + "funkwhale_api.moderation.apps.ModerationConfig", "funkwhale_api.radios", "funkwhale_api.history", "funkwhale_api.playlists", @@ -169,7 +207,19 @@ LOCAL_APPS = ( # See: https://docs.djangoproject.com/en/dev/ref/settings/#installed-apps -INSTALLED_APPS = DJANGO_APPS + THIRD_PARTY_APPS + LOCAL_APPS + +PLUGINS = [p for p in env.list("FUNKWHALE_PLUGINS", default=[]) if p] +if PLUGINS: + logger.info("Running with the following plugins enabled: %s", ", ".join(PLUGINS)) +else: + logger.info("Running with no plugins") + +INSTALLED_APPS = ( + DJANGO_APPS + + THIRD_PARTY_APPS + + LOCAL_APPS + + tuple(["{}.apps.Plugin".format(p) for p in PLUGINS]) +) # MIDDLEWARE CONFIGURATION # ------------------------------------------------------------------------------ diff --git a/api/config/settings/production.py b/api/config/settings/production.py index 26def9fd0..1ee9b8f7e 100644 --- a/api/config/settings/production.py +++ b/api/config/settings/production.py @@ -73,50 +73,4 @@ TEMPLATES[0]["OPTIONS"]["loaders"] = [ # ------------------------------------------------------------------------------ # Heroku URL does not pass the DB number, so we parse it in - -# LOGGING CONFIGURATION -# ------------------------------------------------------------------------------ -# See: https://docs.djangoproject.com/en/dev/ref/settings/#logging -# A sample logging configuration. The only tangible logging -# performed by this configuration is to send an email to -# the site admins on every HTTP 500 error when DEBUG=False. -# See http://docs.djangoproject.com/en/dev/topics/logging for -# more details on how to customize your logging configuration. -LOGGING = { - "version": 1, - "disable_existing_loggers": False, - "filters": {"require_debug_false": {"()": "django.utils.log.RequireDebugFalse"}}, - "formatters": { - "verbose": { - "format": "%(levelname)s %(asctime)s %(module)s " - "%(process)d %(thread)d %(message)s" - } - }, - "handlers": { - "mail_admins": { - "level": "ERROR", - "filters": ["require_debug_false"], - "class": "django.utils.log.AdminEmailHandler", - }, - "console": { - "level": "DEBUG", - "class": "logging.StreamHandler", - "formatter": "verbose", - }, - }, - "loggers": { - "django.request": { - "handlers": ["mail_admins"], - "level": "ERROR", - "propagate": True, - }, - "django.security.DisallowedHost": { - "level": "ERROR", - "handlers": ["console", "mail_admins"], - "propagate": True, - }, - }, -} - - # Your production stuff: Below this line define 3rd party library settings diff --git a/api/funkwhale_api/federation/activity.py b/api/funkwhale_api/federation/activity.py index 979b8aa1b..0b34e9141 100644 --- a/api/funkwhale_api/federation/activity.py +++ b/api/funkwhale_api/federation/activity.py @@ -1,5 +1,6 @@ import uuid import logging +import urllib.parse from django.core.cache import cache from django.conf import settings @@ -122,32 +123,38 @@ def receive(activity, on_behalf_of): from . import serializers from . import tasks from .routes import inbox + from funkwhale_api.moderation import mrf + logger.debug( + "[federation] Received activity from %s : %s", on_behalf_of.fid, activity + ) # we ensure the activity has the bare minimum structure before storing # it in our database serializer = serializers.BaseActivitySerializer( data=activity, context={"actor": on_behalf_of, "local_recipients": True} ) serializer.is_valid(raise_exception=True) - if not inbox.get_matching_handlers(activity): - # discard unhandlable activity - return - if should_reject( - fid=serializer.validated_data.get("id"), - actor_id=serializer.validated_data["actor"].fid, - payload=activity, - ): + payload, updated = mrf.inbox.apply(activity, sender_id=on_behalf_of.fid) + if not payload: logger.info( - "[federation] Discarding activity due to instance policies %s", + "[federation] Discarding activity due to mrf %s", serializer.validated_data.get("id"), ) return + + if not inbox.get_matching_handlers(payload): + # discard unhandlable activity + logger.debug( + "[federation] No matching route found for activity, discarding: %s", payload + ) + return + try: - copy = serializer.save() + copy = serializer.save(payload=payload, type=payload["type"]) except IntegrityError: logger.warning( - "[federation] Discarding already elivered activity %s", + "[federation] Discarding already delivered activity %s", serializer.validated_data.get("id"), ) return @@ -283,9 +290,19 @@ class OutboxRouter(Router): and may yield data that should be persisted in the Activity model for further delivery. """ + from funkwhale_api.common import preferences from . import models from . import tasks + allow_list_enabled = preferences.get("moderation__allow_list_enabled") + allowed_domains = None + if allow_list_enabled: + allowed_domains = set( + models.Domain.objects.filter(allowed=True).values_list( + "name", flat=True + ) + ) + for route, handler in self.routes: if not match_route(route, routing): continue @@ -314,10 +331,10 @@ class OutboxRouter(Router): a = models.Activity(**activity_data) a.uuid = uuid.uuid4() to_inbox_items, to_deliveries, new_to = prepare_deliveries_and_inbox_items( - to, "to" + to, "to", allowed_domains=allowed_domains ) cc_inbox_items, cc_deliveries, new_cc = prepare_deliveries_and_inbox_items( - cc, "cc" + cc, "cc", allowed_domains=allowed_domains ) if not any( [to_inbox_items, to_deliveries, cc_inbox_items, cc_deliveries] @@ -374,7 +391,14 @@ def match_route(route, payload): return True -def prepare_deliveries_and_inbox_items(recipient_list, type): +def is_allowed_url(url, allowed_domains): + return ( + allowed_domains is None + or urllib.parse.urlparse(url).hostname in allowed_domains + ) + + +def prepare_deliveries_and_inbox_items(recipient_list, type, allowed_domains=None): """ Given a list of recipients ( either actor instances, public adresses, a dictionnary with a "type" and "target" @@ -384,10 +408,12 @@ def prepare_deliveries_and_inbox_items(recipient_list, type): """ from . import models + if allowed_domains is not None: + allowed_domains = set(allowed_domains) + allowed_domains.add(settings.FEDERATION_HOSTNAME) local_recipients = set() remote_inbox_urls = set() urls = [] - for r in recipient_list: if isinstance(r, models.Actor): if r.is_local: @@ -432,7 +458,13 @@ def prepare_deliveries_and_inbox_items(recipient_list, type): values = actors.values("shared_inbox_url", "inbox_url") for v in values: remote_inbox_urls.add(v["shared_inbox_url"] or v["inbox_url"]) - deliveries = [models.Delivery(inbox_url=url) for url in remote_inbox_urls] + + deliveries = [ + models.Delivery(inbox_url=url) + for url in remote_inbox_urls + if is_allowed_url(url, allowed_domains) + ] + urls = [url for url in urls if is_allowed_url(url, allowed_domains)] inbox_items = [ models.InboxItem(actor=actor, type=type) for actor in local_recipients ] diff --git a/api/funkwhale_api/federation/admin.py b/api/funkwhale_api/federation/admin.py index 40f7b4f69..8e66708cf 100644 --- a/api/funkwhale_api/federation/admin.py +++ b/api/funkwhale_api/federation/admin.py @@ -41,7 +41,7 @@ class FetchAdmin(admin.ModelAdmin): @admin.register(models.Activity) class ActivityAdmin(admin.ModelAdmin): - list_display = ["type", "fid", "url", "actor", "creation_date"] + list_display = ["uuid", "type", "fid", "url", "actor", "creation_date"] search_fields = ["payload", "fid", "url", "actor__domain__name"] list_filter = ["type", "actor__domain__name"] actions = [redeliver_activities] diff --git a/api/funkwhale_api/federation/factories.py b/api/funkwhale_api/federation/factories.py index 14bb4e8c9..95d68779b 100644 --- a/api/funkwhale_api/federation/factories.py +++ b/api/funkwhale_api/federation/factories.py @@ -70,6 +70,7 @@ def create_user(actor): class DomainFactory(NoUpdateOnCreate, factory.django.DjangoModelFactory): name = factory.Faker("domain_name") nodeinfo_fetch_date = factory.LazyFunction(lambda: timezone.now()) + allowed = None class Meta: model = "federation.Domain" diff --git a/api/funkwhale_api/federation/mrf_policies.py b/api/funkwhale_api/federation/mrf_policies.py new file mode 100644 index 000000000..220c0d3cb --- /dev/null +++ b/api/funkwhale_api/federation/mrf_policies.py @@ -0,0 +1,15 @@ +from funkwhale_api.moderation import mrf + + +from . import activity + + +@mrf.inbox.register(name="instance_policies") +def instance_policies(payload, **kwargs): + reject = activity.should_reject( + fid=payload.get("id"), + actor_id=kwargs.get("sender_id", payload.get("id")), + payload=payload, + ) + if reject: + raise mrf.Discard() diff --git a/api/funkwhale_api/federation/utils.py b/api/funkwhale_api/federation/utils.py index 8f73c5735..c66a97266 100644 --- a/api/funkwhale_api/federation/utils.py +++ b/api/funkwhale_api/federation/utils.py @@ -4,7 +4,7 @@ from django.conf import settings from django.db.models import Q from funkwhale_api.common import session -from funkwhale_api.moderation import models as moderation_models +from funkwhale_api.moderation import mrf from . import exceptions from . import signing @@ -64,10 +64,10 @@ def slugify_username(username): def retrieve_ap_object( fid, actor, serializer_class=None, queryset=None, apply_instance_policies=True ): - from . import activity - - policies = moderation_models.InstancePolicy.objects.active().filter(block_all=True) - if apply_instance_policies and policies.matching_url(fid): + # we have a duplicate check here because it's less expensive to do those checks + # twice than to trigger a HTTP request + payload, updated = mrf.inbox.apply({"id": fid}) + if not payload: raise exceptions.BlockedActorOrDomain() if queryset: try: @@ -94,15 +94,12 @@ def retrieve_ap_object( response.raise_for_status() data = response.json() - # we match against moderation policies here again, because the FID of the returned - # object may not be the same as the URL used to access it - try: - id = data["id"] - except KeyError: - pass - else: - if apply_instance_policies and activity.should_reject(fid=id, payload=data): - raise exceptions.BlockedActorOrDomain() + # we match against mrf here again, because new data may yield different + # results + data, updated = mrf.inbox.apply(data) + if not data: + raise exceptions.BlockedActorOrDomain() + if not serializer_class: return data serializer = serializer_class(data=data, context={"fetch_actor": actor}) diff --git a/api/funkwhale_api/moderation/apps.py b/api/funkwhale_api/moderation/apps.py new file mode 100644 index 000000000..840393af1 --- /dev/null +++ b/api/funkwhale_api/moderation/apps.py @@ -0,0 +1,13 @@ +from django.apps import AppConfig, apps + +from . import mrf + + +class ModerationConfig(AppConfig): + name = "funkwhale_api.moderation" + + def ready(self): + super().ready() + + app_names = [app.name for app in apps.app_configs.values()] + mrf.inbox.autodiscover(app_names) diff --git a/api/funkwhale_api/moderation/dynamic_preferences_registry.py b/api/funkwhale_api/moderation/dynamic_preferences_registry.py index ff4201b57..8d8237cbb 100644 --- a/api/funkwhale_api/moderation/dynamic_preferences_registry.py +++ b/api/funkwhale_api/moderation/dynamic_preferences_registry.py @@ -1,7 +1,7 @@ from dynamic_preferences import types from dynamic_preferences.registries import global_preferences_registry -moderation = types.Section("Moderation") +moderation = types.Section("moderation") @global_preferences_registry.register diff --git a/api/funkwhale_api/moderation/management/__init__.py b/api/funkwhale_api/moderation/management/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/api/funkwhale_api/moderation/management/commands/__init__.py b/api/funkwhale_api/moderation/management/commands/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/api/funkwhale_api/moderation/management/commands/mrf_check.py b/api/funkwhale_api/moderation/management/commands/mrf_check.py new file mode 100644 index 000000000..b518daa08 --- /dev/null +++ b/api/funkwhale_api/moderation/management/commands/mrf_check.py @@ -0,0 +1,117 @@ +import json +import sys +import uuid +import logging + +from django.core.management.base import BaseCommand, CommandError +from django.core import validators + +from django.conf import settings + +from funkwhale_api.common import session +from funkwhale_api.federation import models +from funkwhale_api.moderation import mrf + + +def is_uuid(v): + try: + uuid.UUID(v) + except ValueError: + return False + return True + + +def is_url(v): + validator = validators.URLValidator() + try: + validator(v) + except (ValueError, validators.ValidationError): + return False + + return True + + +class Command(BaseCommand): + help = "Check a given message against all or a specific MRF rule" + + def add_arguments(self, parser): + parser.add_argument( + "type", + type=str, + choices=["inbox"], + help=("The type of MRF. Only inbox is supported at the moment"), + ) + parser.add_argument( + "input", + nargs="?", + help=( + "The path to a file containing JSON data. Use - to read from stdin. " + "If no input is provided, registered MRF policies will be listed " + "instead.", + ), + ) + parser.add_argument( + "--policy", + "-p", + dest="policies", + nargs="+", + default=False, + help="Restrict to a list of MRF policies that will be applied, in that order", + ) + + def handle(self, *args, **options): + logger = logging.getLogger("funkwhale.mrf") + logger.setLevel(logging.DEBUG) + logger.addHandler(logging.StreamHandler(stream=sys.stderr)) + + input = options["input"] + if not input: + registry = getattr(mrf, options["type"]) + self.stdout.write( + "No input given, listing registered policies for '{}' MRF:".format( + options["type"] + ) + ) + for name in registry.keys(): + self.stdout.write("- {}".format(name)) + return + raw_content = None + content = None + if input == "-": + raw_content = sys.stdin.read() + elif is_uuid(input): + self.stderr.write("UUID provided, retrieving payload from db") + content = models.Activity.objects.get(uuid=input).payload + elif is_url(input): + response = session.get_session().get( + input, + timeout=5, + verify=settings.EXTERNAL_REQUESTS_VERIFY_SSL, + headers={"Content-Type": "application/activity+json"}, + ) + response.raise_for_status() + content = response.json() + else: + with open(input, "rb") as f: + raw_content = f.read() + content = json.loads(raw_content) if content is None else content + + policies = options["policies"] or [] + registry = getattr(mrf, options["type"]) + for policy in policies: + if policy not in registry: + raise CommandError( + "Unknown policy '{}' for MRF '{}'".format(policy, options["type"]) + ) + + payload, updated = registry.apply(content, policies=policies) + if not payload: + self.stderr.write("Payload was discarded by MRF") + elif updated: + self.stderr.write("Payload was modified by MRF") + self.stderr.write("Initial payload:\n") + self.stdout.write(json.dumps(content, indent=2, sort_keys=True)) + self.stderr.write("Modified payload:\n") + self.stdout.write(json.dumps(payload, indent=2, sort_keys=True)) + else: + self.stderr.write("Payload left untouched by MRF") diff --git a/api/funkwhale_api/moderation/mrf.py b/api/funkwhale_api/moderation/mrf.py new file mode 100644 index 000000000..207b63e5d --- /dev/null +++ b/api/funkwhale_api/moderation/mrf.py @@ -0,0 +1,78 @@ +""" +Inspired from the MRF logic from Pleroma, see https://docs-develop.pleroma.social/mrf.html +To support pluggable / customizable moderation using a programming language if +our exposed features aren't enough. +""" + +import logging + +import persisting_theory + +logger = logging.getLogger("funkwhale.mrf") + + +class MRFException(Exception): + pass + + +class Discard(MRFException): + pass + + +class Skip(MRFException): + pass + + +class Registry(persisting_theory.Registry): + look_into = "mrf_policies" + + def __init__(self, name=""): + self.name = name + + super().__init__() + + def apply(self, payload, **kwargs): + policy_names = kwargs.pop("policies", []) + if not policy_names: + policies = self.items() + else: + logger.debug( + "[MRF.%s] Running restricted list of policies %s…", + self.name, + ", ".join(policy_names), + ) + policies = [(name, self[name]) for name in policy_names] + updated = False + for policy_name, policy in policies: + logger.debug("[MRF.%s] Applying mrf policy '%s'…", self.name, policy_name) + try: + new_payload = policy(payload, **kwargs) + except Skip as e: + logger.debug( + "[MRF.%s] Skipped policy %s because '%s'", + self.name, + policy_name, + str(e), + ) + continue + except Discard as e: + logger.info( + "[MRF.%s] Discarded message per policy '%s' because '%s'", + self.name, + policy_name, + str(e), + ) + return (None, False) + except Exception: + logger.exception( + "[MRF.%s] Error while applying policy '%s'!", self.name, policy_name + ) + continue + if new_payload: + updated = True + payload = new_payload + + return payload, updated + + +inbox = Registry("inbox") diff --git a/api/funkwhale_api/moderation/mrf_policies.py b/api/funkwhale_api/moderation/mrf_policies.py new file mode 100644 index 000000000..ec6b2f6d8 --- /dev/null +++ b/api/funkwhale_api/moderation/mrf_policies.py @@ -0,0 +1,47 @@ +import urllib.parse + +from funkwhale_api.common import preferences +from funkwhale_api.common import utils +from funkwhale_api.federation import models as federation_models +from funkwhale_api.moderation import mrf + + +@mrf.inbox.register(name="allow_list") +def check_allow_list(payload, **kwargs): + """ + A MRF policy that only works when the moderation__allow_list_enabled + setting is on. + + It will extract domain names from the activity ID, actor ID and activity object ID + and discard the activity if any of those domain names isn't on the allow list. + """ + if not preferences.get("moderation__allow_list_enabled"): + raise mrf.Skip("Allow-listing is disabled") + + allowed_domains = set( + federation_models.Domain.objects.filter(allowed=True).values_list( + "name", flat=True + ) + ) + + relevant_ids = [ + payload.get("actor"), + kwargs.get("sender_id", payload.get("id")), + utils.recursive_getattr(payload, "object.id", permissive=True), + ] + + relevant_domains = set( + [ + domain + for domain in [urllib.parse.urlparse(i).hostname for i in relevant_ids if i] + if domain + ] + ) + + if relevant_domains - allowed_domains: + + raise mrf.Discard( + "These domains are not allowed: {}".format( + ", ".join(relevant_domains - allowed_domains) + ) + ) diff --git a/api/setup.cfg b/api/setup.cfg index 431c4f1ee..3f7d2f7f0 100644 --- a/api/setup.cfg +++ b/api/setup.cfg @@ -25,3 +25,4 @@ env = CREATE_IMAGE_THUMBNAILS=False FORCE_HTTPS_URLS=False FUNKWHALE_SPA_HTML_ROOT=http://noop/ + PROXY_MEDIA=true diff --git a/api/tests/conftest.py b/api/tests/conftest.py index a1baedcc6..d5b87e724 100644 --- a/api/tests/conftest.py +++ b/api/tests/conftest.py @@ -29,6 +29,7 @@ from rest_framework.test import APIClient, APIRequestFactory from funkwhale_api.activity import record from funkwhale_api.federation import actors +from funkwhale_api.moderation import mrf pytest_plugins = "aiohttp.pytest_plugin" @@ -422,3 +423,17 @@ def a_responses(): @pytest.fixture def service_actor(db): return actors.get_service_actor() + + +@pytest.fixture +def mrf_inbox_registry(mocker): + registry = mrf.Registry() + mocker.patch("funkwhale_api.moderation.mrf.inbox", registry) + return registry + + +@pytest.fixture +def mrf_outbox_registry(mocker): + registry = mrf.Registry() + mocker.patch("funkwhale_api.moderation.mrf.outbox", registry) + return registry diff --git a/api/tests/federation/test_activity.py b/api/tests/federation/test_activity.py index aaeebbb87..ccc27c7df 100644 --- a/api/tests/federation/test_activity.py +++ b/api/tests/federation/test_activity.py @@ -13,10 +13,13 @@ from funkwhale_api.federation import ( ) -def test_receive_validates_basic_attributes_and_stores_activity(factories, now, mocker): +def test_receive_validates_basic_attributes_and_stores_activity( + mrf_inbox_registry, factories, now, mocker +): mocker.patch.object( activity.InboxRouter, "get_matching_handlers", return_value=True ) + mrf_inbox_registry_apply = mocker.spy(mrf_inbox_registry, "apply") mocked_dispatch = mocker.patch("funkwhale_api.common.utils.on_commit") local_to_actor = factories["users.User"]().create_actor() local_cc_actor = factories["users.User"]().create_actor() @@ -31,6 +34,7 @@ def test_receive_validates_basic_attributes_and_stores_activity(factories, now, } copy = activity.receive(activity=a, on_behalf_of=remote_actor) + mrf_inbox_registry_apply.assert_called_once_with(a, sender_id=a["actor"]) assert copy.payload == a assert copy.creation_date >= now @@ -49,6 +53,63 @@ def test_receive_validates_basic_attributes_and_stores_activity(factories, now, assert ii.is_read is False +def test_receive_uses_mrf_returned_payload(mrf_inbox_registry, factories, now, mocker): + mocker.patch.object( + activity.InboxRouter, "get_matching_handlers", return_value=True + ) + + def patched_apply(payload, **kwargs): + payload["type"] = "SomethingElse" + return payload, True + + mrf_inbox_registry_apply = mocker.patch.object( + mrf_inbox_registry, "apply", side_effect=patched_apply + ) + mocked_dispatch = mocker.patch("funkwhale_api.common.utils.on_commit") + local_to_actor = factories["users.User"]().create_actor() + remote_actor = factories["federation.Actor"]() + a = { + "@context": [], + "actor": remote_actor.fid, + "type": "Noop", + "id": "https://test.activity", + "to": [local_to_actor.fid], + } + + copy = activity.receive(activity=a, on_behalf_of=remote_actor) + mrf_inbox_registry_apply.assert_called_once_with(a, sender_id=a["actor"]) + + expected = a.copy() + expected["type"] = "SomethingElse" + assert copy.payload == expected + assert copy.creation_date >= now + assert copy.actor == remote_actor + assert copy.fid == a["id"] + assert copy.type == "SomethingElse" + mocked_dispatch.assert_called_once_with( + tasks.dispatch_inbox.delay, activity_id=copy.pk + ) + + +def test_receive_mrf_skip(mrf_inbox_registry, factories, now, mocker): + mocker.patch.object( + activity.InboxRouter, "get_matching_handlers", return_value=True + ) + mocker.patch.object(mrf_inbox_registry, "apply", return_value=(None, False)) + local_to_actor = factories["users.User"]().create_actor() + remote_actor = factories["federation.Actor"]() + a = { + "@context": [], + "actor": remote_actor.fid, + "type": "Noop", + "id": "https://test.activity", + "to": [local_to_actor.fid], + } + + copy = activity.receive(activity=a, on_behalf_of=remote_actor) + assert copy is None + + def test_receive_calls_should_reject(factories, now, mocker): should_reject = mocker.patch.object(activity, "should_reject", return_value=True) mocker.patch.object( @@ -287,7 +348,7 @@ def test_route_matching(route, payload, expected): assert activity.match_route(route, payload) is expected -def test_outbox_router_dispatch(mocker, factories, now): +def test_outbox_router_dispatch(mocker, factories, preferences, now): router = activity.OutboxRouter() actor = factories["federation.Actor"]() r1 = factories["federation.Actor"]() @@ -331,7 +392,39 @@ def test_outbox_router_dispatch(mocker, factories, now): assert delivery.is_delivered is False -def test_prepare_deliveries_and_inbox_items(factories): +def test_outbox_router_dispatch_allow_list(mocker, factories, preferences, now): + preferences["moderation__allow_list_enabled"] = True + router = activity.OutboxRouter() + actor = factories["federation.Actor"]() + r1 = factories["federation.Actor"](domain__allowed=True) + r2 = factories["federation.Actor"]() + prepare_deliveries_and_inbox_items = mocker.spy( + activity, "prepare_deliveries_and_inbox_items" + ) + + def handler(context): + yield { + "payload": { + "type": "Noop", + "actor": actor.fid, + "summary": context["summary"], + "to": [r1], + "cc": [r2], + }, + "actor": actor, + } + + router.connect({"type": "Noop"}, handler) + router.dispatch({"type": "Noop"}, {"summary": "hello"}) + prepare_deliveries_and_inbox_items.assert_any_call( + [r1], "to", allowed_domains=set([r1.domain_id]) + ) + prepare_deliveries_and_inbox_items.assert_any_call( + [r2], "cc", allowed_domains=set([r1.domain_id]) + ) + + +def test_prepare_deliveries_and_inbox_items(factories, preferences): local_actor1 = factories["federation.Actor"]( local=True, shared_inbox_url="https://testlocal.inbox" ) @@ -385,7 +478,7 @@ def test_prepare_deliveries_and_inbox_items(factories): ] inbox_items, deliveries, urls = activity.prepare_deliveries_and_inbox_items( - recipients, "to" + recipients, "to", allowed_domains=None ) expected_inbox_items = sorted( [ @@ -436,6 +529,32 @@ def test_prepare_deliveries_and_inbox_items(factories): assert inbox_item.type == "to" +def test_prepare_deliveries_and_inbox_items_allow_list(factories, preferences): + preferences["moderation__allow_list_enabled"] = True + remote_actor1 = factories["federation.Actor"](domain__allowed=True) + remote_actor2 = factories["federation.Actor"](domain__allowed=False) + + recipients = [remote_actor1, remote_actor2] + + inbox_items, deliveries, urls = activity.prepare_deliveries_and_inbox_items( + recipients, "to", allowed_domains=set([remote_actor1.domain_id]) + ) + expected_inbox_items = [] + + expected_deliveries = [models.Delivery(inbox_url=remote_actor1.inbox_url)] + + expected_urls = [remote_actor1.fid] + + assert urls == expected_urls + assert len(expected_inbox_items) == len(inbox_items) + assert len(expected_deliveries) == len(deliveries) + + for delivery, expected_delivery in zip( + sorted(deliveries, key=lambda v: v.inbox_url), expected_deliveries + ): + assert delivery.inbox_url == expected_delivery.inbox_url + + def test_prepare_deliveries_and_inbox_items_instances_with_followers(factories): domain1 = factories["federation.Domain"](with_service_actor=True) @@ -460,7 +579,7 @@ def test_prepare_deliveries_and_inbox_items_instances_with_followers(factories): recipients = [activity.PUBLIC_ADDRESS, {"type": "instances_with_followers"}] inbox_items, deliveries, urls = activity.prepare_deliveries_and_inbox_items( - recipients, "to" + recipients, "to", allowed_domains=None ) expected_deliveries = sorted( @@ -483,6 +602,20 @@ def test_prepare_deliveries_and_inbox_items_instances_with_followers(factories): assert delivery.inbox_url == expected_delivery.inbox_url +@pytest.mark.parametrize( + "url, allowed_domains, expected", + [ + ("https://domain.example/test", None, True), + ("https://domain.example/test", [], False), + ("https://allowed.example/test", ["allowed.example"], True), + ("https://domain.example/test", ["allowed.example"], False), + ("https://social.allowed.example/test", ["allowed.example"], False), + ], +) +def test_is_allowed_url(url, allowed_domains, expected): + assert activity.is_allowed_url(url, allowed_domains) is expected + + def test_should_rotate_actor_key(settings, cache, now): actor_id = 42 settings.ACTOR_KEY_ROTATION_DELAY = 10 @@ -507,7 +640,9 @@ def test_schedule_key_rotation(cache, mocker): assert cache.get(activity.ACTOR_KEY_ROTATION_LOCK_CACHE_KEY.format(actor_id), True) -def test_outbox_dispatch_rotate_key_on_delete(mocker, factories, cache, settings): +def test_outbox_dispatch_rotate_key_on_delete( + mocker, factories, cache, settings, preferences +): router = activity.OutboxRouter() actor = factories["federation.Actor"]() r1 = factories["federation.Actor"]() diff --git a/api/tests/federation/test_utils.py b/api/tests/federation/test_utils.py index 9aa850728..83c5e4f7e 100644 --- a/api/tests/federation/test_utils.py +++ b/api/tests/federation/test_utils.py @@ -72,6 +72,32 @@ def test_retrieve_ap_object_honor_instance_policy_domain(factories): utils.retrieve_ap_object(fid, actor=None) +def test_retrieve_ap_object_honor_mrf_inbox_before_http( + mrf_inbox_registry, factories, mocker +): + apply = mocker.patch.object(mrf_inbox_registry, "apply", return_value=(None, False)) + fid = "http://domain/test" + with pytest.raises(exceptions.BlockedActorOrDomain): + utils.retrieve_ap_object(fid, actor=None) + + apply.assert_called_once_with({"id": fid}) + + +def test_retrieve_ap_object_honor_mrf_inbox_after_http( + r_mock, mrf_inbox_registry, factories, mocker +): + apply = mocker.patch.object( + mrf_inbox_registry, "apply", side_effect=[(True, False), (None, False)] + ) + payload = {"id": "http://domain/test", "actor": "hello"} + r_mock.get(payload["id"], json=payload) + with pytest.raises(exceptions.BlockedActorOrDomain): + utils.retrieve_ap_object(payload["id"], actor=None) + + apply.assert_any_call({"id": payload["id"]}) + apply.assert_any_call(payload) + + def test_retrieve_ap_object_honor_instance_policy_different_url_and_id( r_mock, factories ): diff --git a/api/tests/moderation/test_commands.py b/api/tests/moderation/test_commands.py new file mode 100644 index 000000000..9984983ba --- /dev/null +++ b/api/tests/moderation/test_commands.py @@ -0,0 +1,77 @@ +import json + +from django.core.management import call_command + + +def test_mrf_check_inbox_all(mocker, mrf_inbox_registry, tmpfile): + payload = {"hello": "world"} + tmpfile.write(json.dumps(payload).encode()) + tmpfile.flush() + apply = mocker.spy(mrf_inbox_registry, "apply") + policy1 = mocker.Mock() + policy2 = mocker.Mock(return_value={"hello": "noop"}) + mrf_inbox_registry.register(name="policy1")(policy1) + mrf_inbox_registry.register(name="policy2")(policy2) + + call_command("mrf_check", "inbox", tmpfile.name) + + apply.assert_called_once_with(payload, policies=[]) + policy1.assert_called_once_with(payload) + policy2.assert_called_once_with(policy1.return_value) + + +def test_mrf_check_inbox_list(mocker, mrf_inbox_registry): + apply = mocker.spy(mrf_inbox_registry, "apply") + policy1 = mocker.Mock() + policy2 = mocker.Mock(return_value={"hello": "noop"}) + mrf_inbox_registry.register(name="policy1")(policy1) + mrf_inbox_registry.register(name="policy2")(policy2) + + call_command("mrf_check", "inbox") + + apply.assert_not_called() + + +def test_mrf_check_inbox_restrict_policies(mocker, mrf_inbox_registry, tmpfile): + payload = {"hello": "world"} + tmpfile.write(json.dumps(payload).encode()) + tmpfile.flush() + apply = mocker.spy(mrf_inbox_registry, "apply") + policy1 = mocker.Mock() + policy2 = mocker.Mock() + policy3 = mocker.Mock(return_value={"hello": "noop"}) + mrf_inbox_registry.register(name="policy1")(policy1) + mrf_inbox_registry.register(name="policy2")(policy2) + mrf_inbox_registry.register(name="policy3")(policy3) + + call_command("mrf_check", "inbox", tmpfile.name, policies=["policy1", "policy3"]) + + apply.assert_called_once_with(payload, policies=["policy1", "policy3"]) + policy1.assert_called_once_with(payload) + policy2.assert_not_called() + policy3.assert_called_once_with(policy1.return_value) + + +def test_mrf_check_inbox_db_activity(factories, mocker, mrf_inbox_registry): + payload = {"hello": "world"} + activity = factories["federation.Activity"](payload=payload) + + policy1 = mocker.Mock(return_value={"hello": "noop"}) + mrf_inbox_registry.register(name="policy1")(policy1) + + call_command("mrf_check", "inbox", activity.uuid) + + policy1.assert_called_once_with(payload) + + +def test_mrf_check_inbox_url(r_mock, mocker, mrf_inbox_registry): + payload = {"hello": "world"} + url = "http://test.hello/path" + r_mock.get(url, json=payload) + + policy1 = mocker.Mock(return_value={"hello": "noop"}) + mrf_inbox_registry.register(name="policy1")(policy1) + + call_command("mrf_check", "inbox", url) + + policy1.assert_called_once_with(payload) diff --git a/api/tests/moderation/test_mrf.py b/api/tests/moderation/test_mrf.py new file mode 100644 index 000000000..15a4385a2 --- /dev/null +++ b/api/tests/moderation/test_mrf.py @@ -0,0 +1,67 @@ +from funkwhale_api.moderation import mrf + + +def test_mrf_inbox_registry_apply_empty(mrf_inbox_registry, mocker): + payload = {"hello": "world"} + new_payload, updated = mrf_inbox_registry.apply(payload) + + assert new_payload == payload + assert updated is False + + +def test_mrf_inbox_registry_apply_simple(mrf_inbox_registry, mocker): + rule = mocker.Mock(return_value="test") + payload = {"hello": "world"} + mrf_inbox_registry.register(rule, name="rule") + + new_payload, updated = mrf_inbox_registry.apply(payload) + + assert new_payload == "test" + assert updated is True + + +def test_mrf_inbox_registry_apply_skipped(mrf_inbox_registry, mocker): + rule = mocker.Mock(side_effect=mrf.Skip()) + payload = {"hello": "world"} + mrf_inbox_registry.register(rule, name="rule") + + new_payload, updated = mrf_inbox_registry.apply(payload) + + assert new_payload == payload + assert updated is False + + +def test_mrf_inbox_registry_apply_discard(mrf_inbox_registry, mocker): + rule1 = mocker.Mock(return_value=None) + rule2 = mocker.Mock(side_effect=mrf.Discard()) + + mrf_inbox_registry.register(rule1, name="rule1") + mrf_inbox_registry.register(rule2, name="rule2") + + payload = {"hello": "world"} + assert mrf_inbox_registry.apply(payload, arg1="value1") == (None, False) + + rule1.assert_called_once_with(payload, arg1="value1") + rule2.assert_called_once_with(payload, arg1="value1") + + +def test_mrf_inbox_registry_use_returned_payload(mrf_inbox_registry, mocker): + rule1 = mocker.Mock(return_value="payload1") + rule2 = mocker.Mock(return_value="payload2") + + mrf_inbox_registry.register(rule1, name="rule1") + mrf_inbox_registry.register(rule2, name="rule2") + + payload = {"hello": "world"} + + assert mrf_inbox_registry.apply(payload) == ("payload2", True) + rule1.assert_called_once_with(payload) + rule2.assert_called_once_with("payload1") + + +def test_mrf_inbox_registry_skip_errors(mrf_inbox_registry, mocker): + rule1 = mocker.Mock(side_effect=Exception()) + + mrf_inbox_registry.register(rule1, name="rule1") + + assert mrf_inbox_registry.apply("payload") == ("payload", False) diff --git a/api/tests/moderation/test_mrf_policies.py b/api/tests/moderation/test_mrf_policies.py new file mode 100644 index 000000000..877123e6b --- /dev/null +++ b/api/tests/moderation/test_mrf_policies.py @@ -0,0 +1,63 @@ +import pytest + +from funkwhale_api.moderation import mrf +from funkwhale_api.moderation import mrf_policies + + +@pytest.mark.parametrize( + "enabled, payload, kwargs, allowed_domains, expected", + [ + # allow listing enabled, domain on allowed list -> nothing happens + ( + True, + {"id": "http://allowed.example"}, + {"sender_id": "http://allowed.example/actor"}, + ["allowed.example"], + None, + ), + # allow listing enabled, domain NOT on allowed list -> message discarded + ( + True, + {"id": "http://notallowed.example"}, + {"sender_id": "http://notallowed.example/actor"}, + ["allowed.example"], + mrf.Discard, + ), + # allow listing disabled -> policy skipped + ( + False, + {"id": "http://allowed.example"}, + {"sender_id": "http://allowed.example/actor"}, + [], + mrf.Skip, + ), + # multiple domains to check, one is not allowed -> message discarded + ( + True, + {"id": "http://allowed.example"}, + {"sender_id": "http://notallowed.example/actor"}, + ["allowed.example"], + mrf.Discard, + ), + # multiple domains to check, all allowed -> nothing happens + ( + True, + {"id": "http://allowed.example"}, + {"sender_id": "http://anotherallowed.example/actor"}, + ["allowed.example", "anotherallowed.example"], + None, + ), + ], +) +def test_allow_list_policy( + enabled, payload, kwargs, expected, allowed_domains, preferences, factories +): + preferences["moderation__allow_list_enabled"] = enabled + for d in allowed_domains: + factories["federation.Domain"](name=d, allowed=True) + + if expected: + with pytest.raises(expected): + mrf_policies.check_allow_list(payload, **kwargs) + else: + assert mrf_policies.check_allow_list(payload, **kwargs) == expected diff --git a/dev.yml b/dev.yml index 7c58b9105..7e4adc8ff 100644 --- a/dev.yml +++ b/dev.yml @@ -53,6 +53,7 @@ services: volumes: - ./api:/app - "${MUSIC_DIRECTORY_SERVE_PATH-./data/music}:/music:ro" + - "./data/plugins:/srv/funkwhale/plugins" environment: - "FUNKWHALE_HOSTNAME=${FUNKWHALE_HOSTNAME-localhost}" - "FUNKWHALE_HOSTNAME_SUFFIX=funkwhale.test" @@ -90,6 +91,7 @@ services: volumes: - ./api:/app - "${MUSIC_DIRECTORY_SERVE_PATH-./data/music}:/music:ro" + - "./data/plugins:/srv/funkwhale/plugins" networks: - internal nginx: diff --git a/docs/admin/index.rst b/docs/admin/index.rst index 8d80e3e0a..fa66eeca6 100644 --- a/docs/admin/index.rst +++ b/docs/admin/index.rst @@ -26,6 +26,7 @@ Administration commands url upgrading + mrf Troubleshooting Issues ---------------------- diff --git a/docs/admin/mrf.rst b/docs/admin/mrf.rst new file mode 100644 index 000000000..1d905e72b --- /dev/null +++ b/docs/admin/mrf.rst @@ -0,0 +1,117 @@ +Message Rewrite Facility (MRF) +============================== + +Funkwhale includes a feature that mimics `Pleroma's Message Rewrite Facility `_. +Using the MRF, instance admins can write and configure custom and automated moderation rules +that couldn't be implemented otherwise using :doc:`our other built-in moderation tools <../moderator/index>`. + +Architecture +------------ + +The MRF is a pluggable system that will process messages and forward those to the list +of registered policies, in turn. Each policy can mutate the message, leave it as is, or discard it entirely. + +Some of our built-in moderation tools are actually implemented as a MRF policy, e.g: + +- Allow-list, when checking incoming messages (`code `_) +- Domain and user blocking, when checking incoming messages (`code `_) + +.. note:: + + While Pleroma MRF policies can also affect outgoing messages, this is not supported yet in Funkwhale. + + +Disclaimer +---------- + +Writing custom MRF can impact negatively the performance and stability of your pod, as well as message +delivery. Your policy will be called everytime a message is delivered, so ensure you don't execute +any slow operation here. + +Please note that the Funkwhale developers consider custom MRF policy modules to fall under the purview of the AGPL. As such, you are obligated to release the sources to your custom MRF policy modules upon request. + +Writing your first MRF policy +----------------------------- + +MRF Policies are written as Python 3 functions that take at least one ``payload`` parameter. +This payload is the raw ActivityPub message, received via HTTP, after the HTTP signature check. + +In the example below we write a policy that discards all Follow requests from listed domains: + +.. code-block:: python + + import urllib.parse + from funkwhale_api.moderation import mrf + + BLOCKED_FOLLOW_DOMAINS = ['domain1.com', 'botdomain.org'] + + # registering the policy is required to have it applied + # the name can be anything you want, it will appear in the mrf logs + @mrf.inbox.register(name='blocked_follow_domains') + def blocked_follow_domains_policy(payload, **kwargs): + actor_id = payload.get('actor') + domain = urllib.parse.urlparse(actor_id).hostname + if domain not in BLOCKED_FOLLOW_DOMAINS: + # raising mrf.Skip isn't strictly necessary but it provides + # for info in the debug logs. Otherwise, you can simply return + raise mrf.Skip("This domain isn't blocked") + + activity_type = payload.get('type') + object_type = payload.get('object', {}).get('type') + + if object_type == 'Follow' and activity_type == 'Create': + raise mrf.Discard('Follow from blocked domain') + + +This code must be stored in a Funkwhale plugin. To create one, just execute the following: + +.. code-block:: shell + + # plugin name must contain only ASCII letters, numbers and undercores + export PLUGIN_NAME="myplugin" + # this is the default path where Funkwhale will look for plugins + # if you want to use another path, update this path and ensure + # your PLUGINS_PATH is also included in your .env + export PLUGINS_PATH="/srv/funkwhale/plugins/" + mkdir -p $PLUGINS_PATH/$PLUGIN_NAME + cd $PLUGINS_PATH/$PLUGIN_NAME + + touch __init__.py # required to make the plugin a valid Python package + # create the required apps.py file to register our plugin in Funkwhale + cat > apps.py < Date: Fri, 21 Jun 2019 10:14:20 +0200 Subject: [PATCH 028/291] Fix #864: Redirect from / to /library when user is logged in --- changes/changelog.d/864.enhancement | 1 + front/src/components/Home.vue | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 changes/changelog.d/864.enhancement diff --git a/changes/changelog.d/864.enhancement b/changes/changelog.d/864.enhancement new file mode 100644 index 000000000..f903ac850 --- /dev/null +++ b/changes/changelog.d/864.enhancement @@ -0,0 +1 @@ +Redirect from / to /library when user is logged in (#864) diff --git a/front/src/components/Home.vue b/front/src/components/Home.vue index 9393d9b78..bbcc9a8f9 100644 --- a/front/src/components/Home.vue +++ b/front/src/components/Home.vue @@ -147,7 +147,19 @@ export default { let msg = this.$pgettext('Content/Home/List item/Verb', 'Get quality metadata about your music thanks to MusicBrainz') return this.$gettextInterpolate(msg, {url: this.musicbrainzUrl}) } + }, + watch: { + '$store.state.auth.authenticated': { + handler (v) { + if (v) { + console.log('Authenticated, redirecting to /library…') + this.$router.push('/library') + } + }, + immediate: true + } } + } From 581e890ad9338a586ded1d81ca579620bfc89151 Mon Sep 17 00:00:00 2001 From: Eliot Berriot Date: Fri, 21 Jun 2019 15:57:04 +0200 Subject: [PATCH 029/291] See #853: advertise allow-list configuration in nodeinfo --- api/funkwhale_api/instance/nodeinfo.py | 13 ++++++++++++- api/tests/instance/test_nodeinfo.py | 22 ++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/api/funkwhale_api/instance/nodeinfo.py b/api/funkwhale_api/instance/nodeinfo.py index f45fbb129..178a8c1ab 100644 --- a/api/funkwhale_api/instance/nodeinfo.py +++ b/api/funkwhale_api/instance/nodeinfo.py @@ -2,7 +2,7 @@ import memoize.djangocache import funkwhale_api from funkwhale_api.common import preferences -from funkwhale_api.federation import actors +from funkwhale_api.federation import actors, models as federation_models from funkwhale_api.music import utils as music_utils from . import stats @@ -13,6 +13,16 @@ memo = memoize.Memoizer(store, namespace="instance:stats") def get(): share_stats = preferences.get("instance__nodeinfo_stats_enabled") + allow_list_enabled = preferences.get("moderation__allow_list_enabled") + allow_list_public = preferences.get("moderation__allow_list_public") + if allow_list_enabled and allow_list_public: + allowed_domains = list( + federation_models.Domain.objects.filter(allowed=True) + .order_by("name") + .values_list("name", flat=True) + ) + else: + allowed_domains = None data = { "version": "2.0", "software": {"name": "funkwhale", "version": funkwhale_api.__version__}, @@ -36,6 +46,7 @@ def get(): ), }, "supportedUploadExtensions": music_utils.SUPPORTED_EXTENSIONS, + "allowList": {"enabled": allow_list_enabled, "domains": allowed_domains}, }, } if share_stats: diff --git a/api/tests/instance/test_nodeinfo.py b/api/tests/instance/test_nodeinfo.py index 233b388d4..211dbaa54 100644 --- a/api/tests/instance/test_nodeinfo.py +++ b/api/tests/instance/test_nodeinfo.py @@ -1,3 +1,5 @@ +import pytest + import funkwhale_api from funkwhale_api.instance import nodeinfo from funkwhale_api.federation import actors @@ -48,6 +50,7 @@ def test_nodeinfo_dump(preferences, mocker): "listenings": {"total": stats["listenings"]}, }, "supportedUploadExtensions": music_utils.SUPPORTED_EXTENSIONS, + "allowList": {"enabled": False, "domains": None}, }, } assert nodeinfo.get() == expected @@ -79,6 +82,25 @@ def test_nodeinfo_dump_stats_disabled(preferences, mocker): ], }, "supportedUploadExtensions": music_utils.SUPPORTED_EXTENSIONS, + "allowList": {"enabled": False, "domains": None}, }, } assert nodeinfo.get() == expected + + +@pytest.mark.parametrize( + "enabled, public, expected", + [ + (True, True, {"enabled": True, "domains": ["allowed.example"]}), + (True, False, {"enabled": True, "domains": None}), + (False, False, {"enabled": False, "domains": None}), + ], +) +def test_nodeinfo_allow_list_enabled(preferences, factories, enabled, public, expected): + preferences["moderation__allow_list_enabled"] = enabled + preferences["moderation__allow_list_public"] = public + factories["federation.Domain"](name="allowed.example", allowed=True) + factories["federation.Domain"](allowed=False) + factories["federation.Domain"](allowed=None) + + assert nodeinfo.get()["metadata"]["allowList"] == expected From fd202df25c5ac567299dbd0f4ba90a55798b4248 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciar=C3=A1n=20Ainsworth?= Date: Mon, 24 Jun 2019 11:04:05 +0200 Subject: [PATCH 030/291] Resolve "Clicking on playlist name from PlaylistModal does nothing if current page is that playlist's page" --- changes/changelog.d/807.enhancement | 1 + front/src/components/playlists/PlaylistModal.vue | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 changes/changelog.d/807.enhancement diff --git a/changes/changelog.d/807.enhancement b/changes/changelog.d/807.enhancement new file mode 100644 index 000000000..bab8f9647 --- /dev/null +++ b/changes/changelog.d/807.enhancement @@ -0,0 +1 @@ +Clicking on the currently selected playlist in the Playlist popup will now close the popup (#807) \ No newline at end of file diff --git a/front/src/components/playlists/PlaylistModal.vue b/front/src/components/playlists/PlaylistModal.vue index 44969afbf..97c5f0a1e 100644 --- a/front/src/components/playlists/PlaylistModal.vue +++ b/front/src/components/playlists/PlaylistModal.vue @@ -57,7 +57,7 @@ :to="{name: 'library.playlists.detail', params: {id: playlist.id }, query: {mode: 'edit'}}"> - {{ playlist.name }} + {{ playlist.name }} {{ playlist.tracks_count }} From bd6407136ff4cfc67017c6f2e39be8c92782095f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciar=C3=A1n=20Ainsworth?= Date: Mon, 24 Jun 2019 11:05:00 +0200 Subject: [PATCH 031/291] Updated tags for VueDraggable compatibility --- front/src/components/Sidebar.vue | 2 +- front/src/components/playlists/Editor.vue | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/front/src/components/Sidebar.vue b/front/src/components/Sidebar.vue index 8b183b215..984b507c2 100644 --- a/front/src/components/Sidebar.vue +++ b/front/src/components/Sidebar.vue @@ -134,7 +134,7 @@
- + Drag and drop rows to reorder tracks in the playlist

- +
{{ plt.index + 1}} From fbadf4c14373c5d8b184871a86f6d91a351b41a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciar=C3=A1n=20Ainsworth?= Date: Mon, 24 Jun 2019 11:32:20 +0200 Subject: [PATCH 032/291] Resolve "Align items vertically in search results" --- changes/changelog.d/708.enhancement | 1 + front/src/components/Sidebar.vue | 6 ++++++ 2 files changed, 7 insertions(+) create mode 100644 changes/changelog.d/708.enhancement diff --git a/changes/changelog.d/708.enhancement b/changes/changelog.d/708.enhancement new file mode 100644 index 000000000..f3217e5a9 --- /dev/null +++ b/changes/changelog.d/708.enhancement @@ -0,0 +1 @@ +Aligned search headers with search results in the sidebar (#708) \ No newline at end of file diff --git a/front/src/components/Sidebar.vue b/front/src/components/Sidebar.vue index 984b507c2..03084a634 100644 --- a/front/src/components/Sidebar.vue +++ b/front/src/components/Sidebar.vue @@ -466,6 +466,12 @@ $sidebar-color: #3d3e3f; border-radius: 0; } } + .ui.search .results { + vertical-align: middle; + } + .ui.search .name { + vertical-align: middle; + } } .ui.tiny.avatar.image { position: relative; From bf32f7442257b876ef43461bc3c6293005ed7e3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciar=C3=A1n=20Ainsworth?= Date: Mon, 24 Jun 2019 13:30:56 +0200 Subject: [PATCH 033/291] Resolve "Hide favorites radios when user does not have any favorites" --- changes/changelog.d/419.enhancement | 1 + front/src/components/favorites/List.vue | 7 +++++-- front/src/components/library/Radios.vue | 10 ++++++++-- 3 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 changes/changelog.d/419.enhancement diff --git a/changes/changelog.d/419.enhancement b/changes/changelog.d/419.enhancement new file mode 100644 index 000000000..f4716b53e --- /dev/null +++ b/changes/changelog.d/419.enhancement @@ -0,0 +1 @@ +Favorites radio will not be visible if the user does not have any favorites (#419) \ No newline at end of file diff --git a/front/src/components/favorites/List.vue b/front/src/components/favorites/List.vue index d1bde0935..6402d417f 100644 --- a/front/src/components/favorites/List.vue +++ b/front/src/components/favorites/List.vue @@ -16,7 +16,7 @@ 1 favorite - +
@@ -115,7 +115,10 @@ export default { return { title: this.$pgettext('Head/Favorites/Title', 'Your Favorites') } - } + }, + hasFavorites () { + return this.$store.state.favorites.count > 0 + }, }, methods: { updateQueryString: function() { diff --git a/front/src/components/library/Radios.vue b/front/src/components/library/Radios.vue index 9b2f7bf82..9f59db514 100644 --- a/front/src/components/library/Radios.vue +++ b/front/src/components/library/Radios.vue @@ -10,7 +10,7 @@ Instance radios
- +
@@ -144,7 +144,13 @@ export default { searchPlaceholder, title } - } + }, + isAuthenticated () { + return this.$store.state.auth.authenticated + }, + hasFavorites () { + return this.$store.state.favorites.count > 0 + }, }, methods: { updateQueryString: _.debounce(function() { From 32de134e4a195f92f10d073718e365a0d6d8cc7f Mon Sep 17 00:00:00 2001 From: Eliot Berriot Date: Mon, 24 Jun 2019 14:04:53 +0200 Subject: [PATCH 034/291] Fixed broken CI build --- .gitlab-ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9c7e57d55..d1b11b2a9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -17,7 +17,7 @@ stages: review_front: stage: review - image: node:9 + image: node:10 when: manual allow_failure: true variables: @@ -142,7 +142,7 @@ test_api: test_front: stage: test - image: node:9 + image: node:10 before_script: - cd front only: @@ -164,7 +164,7 @@ test_front: build_front: stage: build - image: node:9 + image: node:10 before_script: - curl -L -o /usr/local/bin/jq https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64 - chmod +x /usr/local/bin/jq From 68b21d706c750352fc5672595f595bd50286b5ae Mon Sep 17 00:00:00 2001 From: Eliot Berriot Date: Mon, 24 Jun 2019 15:30:17 +0200 Subject: [PATCH 035/291] Fixed broken logging --- api/config/settings/common.py | 2 +- api/funkwhale_api/manage/filters.py | 12 ++++- .../dynamic_preferences_registry.py | 4 +- .../manage/moderation/DomainsTable.vue | 25 ++++++++-- front/src/views/admin/Settings.vue | 9 ++++ front/src/views/admin/moderation/Base.vue | 23 ++++++++- .../views/admin/moderation/DomainsDetail.vue | 49 ++++++++++++++++++- .../views/admin/moderation/DomainsList.vue | 10 +++- 8 files changed, 121 insertions(+), 13 deletions(-) diff --git a/api/config/settings/common.py b/api/config/settings/common.py index 8f2e00ade..455a5822e 100644 --- a/api/config/settings/common.py +++ b/api/config/settings/common.py @@ -46,7 +46,7 @@ logging.config.dictConfig( }, "loggers": { "funkwhale_api": { - "level": LOGLEVEL, + "level": logging.getLevelName("LOGLEVEL"), "handlers": ["console"], # required to avoid double logging with root logger "propagate": False, diff --git a/api/funkwhale_api/manage/filters.py b/api/funkwhale_api/manage/filters.py index 984b83133..9e20a6af4 100644 --- a/api/funkwhale_api/manage/filters.py +++ b/api/funkwhale_api/manage/filters.py @@ -237,10 +237,20 @@ class ManageUploadFilterSet(filters.FilterSet): class ManageDomainFilterSet(filters.FilterSet): q = fields.SearchFilter(search_fields=["name"]) + allowed = filters.BooleanFilter() class Meta: model = federation_models.Domain - fields = ["name"] + fields = ["name", "allowed"] + + def filter_allowed(self, qs, value): + """ + If value=false, we want to include object with value=null as well + """ + if value: + return qs.filter(allowed=True) + else: + return qs.filter(allowed__in=[False, None]) class ManageActorFilterSet(filters.FilterSet): diff --git a/api/funkwhale_api/moderation/dynamic_preferences_registry.py b/api/funkwhale_api/moderation/dynamic_preferences_registry.py index 8d8237cbb..04a732f4d 100644 --- a/api/funkwhale_api/moderation/dynamic_preferences_registry.py +++ b/api/funkwhale_api/moderation/dynamic_preferences_registry.py @@ -19,8 +19,8 @@ class AllowListPublic(types.BooleanPreference): name = "allow_list_public" verbose_name = "Publish your allowed-domains list" help_text = ( - "If enabled, everyone will be able to retrieve the list of domains you allowed. ", + "If enabled, everyone will be able to retrieve the list of domains you allowed. " "This is useful on open setups, to help people decide if they want to join your pod, or to " - "make your moderation policy public.", + "make your moderation policy public." ) default = False diff --git a/front/src/components/manage/moderation/DomainsTable.vue b/front/src/components/manage/moderation/DomainsTable.vue index 544d91156..08fff4cc5 100644 --- a/front/src/components/manage/moderation/DomainsTable.vue +++ b/front/src/components/manage/moderation/DomainsTable.vue @@ -6,6 +6,14 @@
+
+ + +
+ + + +
+ Is present on allow-list + + Yes + No +
Last checked @@ -300,7 +337,7 @@ import InstancePolicyForm from "@/components/manage/moderation/InstancePolicyFor import InstancePolicyCard from "@/components/manage/moderation/InstancePolicyCard" export default { - props: ["id"], + props: ["id", "allowListEnabled"], components: { InstancePolicyForm, InstancePolicyCard, @@ -311,6 +348,7 @@ export default { isLoading: true, isLoadingStats: false, isLoadingPolicy: false, + isLoadingAllowList: false, policy: null, object: null, stats: null, @@ -353,6 +391,15 @@ export default { self.isLoadingPolicy = false }) }, + setAllowList(value) { + var self = this + this.isLoadingAllowList = true + let url = `manage/federation/domains/${this.id}/` + axios.patch(url, {allowed: value}).then(response => { + self.object = response.data + self.isLoadingAllowList = false + }) + }, refreshNodeInfo (data) { this.object.nodeinfo = data this.object.nodeinfo_fetch_date = new Date() diff --git a/front/src/views/admin/moderation/DomainsList.vue b/front/src/views/admin/moderation/DomainsList.vue index 3ce8e6afc..b4ffad7b8 100644 --- a/front/src/views/admin/moderation/DomainsList.vue +++ b/front/src/views/admin/moderation/DomainsList.vue @@ -14,6 +14,10 @@ +
+ + +
- + @@ -32,12 +36,14 @@ import axios from 'axios' import DomainsTable from "@/components/manage/moderation/DomainsTable" export default { + props: ['allowListEnabled'], components: { DomainsTable }, data () { return { domainName: '', + domainAllowed: this.allowListEnabled ? true : null, isCreating: false, errors: [] } @@ -54,7 +60,7 @@ export default { let self = this this.isCreating = true this.errors = [] - axios.post('manage/federation/domains/', {name: this.domainName}).then((response) => { + axios.post('manage/federation/domains/', {name: this.domainName, allowed: this.domainAllowed}).then((response) => { this.isCreating = false this.$router.push({ name: "manage.moderation.domains.detail", From b43bf42efcb8df24f39358d2ee770cf2e23bec0d Mon Sep 17 00:00:00 2001 From: Eliot Berriot Date: Mon, 24 Jun 2019 15:31:11 +0200 Subject: [PATCH 036/291] Revert "Fixed broken logging" This reverts commit 68b21d706c750352fc5672595f595bd50286b5ae. --- api/config/settings/common.py | 2 +- api/funkwhale_api/manage/filters.py | 12 +---- .../dynamic_preferences_registry.py | 4 +- .../manage/moderation/DomainsTable.vue | 25 ++-------- front/src/views/admin/Settings.vue | 9 ---- front/src/views/admin/moderation/Base.vue | 23 +-------- .../views/admin/moderation/DomainsDetail.vue | 49 +------------------ .../views/admin/moderation/DomainsList.vue | 10 +--- 8 files changed, 13 insertions(+), 121 deletions(-) diff --git a/api/config/settings/common.py b/api/config/settings/common.py index 455a5822e..8f2e00ade 100644 --- a/api/config/settings/common.py +++ b/api/config/settings/common.py @@ -46,7 +46,7 @@ logging.config.dictConfig( }, "loggers": { "funkwhale_api": { - "level": logging.getLevelName("LOGLEVEL"), + "level": LOGLEVEL, "handlers": ["console"], # required to avoid double logging with root logger "propagate": False, diff --git a/api/funkwhale_api/manage/filters.py b/api/funkwhale_api/manage/filters.py index 9e20a6af4..984b83133 100644 --- a/api/funkwhale_api/manage/filters.py +++ b/api/funkwhale_api/manage/filters.py @@ -237,20 +237,10 @@ class ManageUploadFilterSet(filters.FilterSet): class ManageDomainFilterSet(filters.FilterSet): q = fields.SearchFilter(search_fields=["name"]) - allowed = filters.BooleanFilter() class Meta: model = federation_models.Domain - fields = ["name", "allowed"] - - def filter_allowed(self, qs, value): - """ - If value=false, we want to include object with value=null as well - """ - if value: - return qs.filter(allowed=True) - else: - return qs.filter(allowed__in=[False, None]) + fields = ["name"] class ManageActorFilterSet(filters.FilterSet): diff --git a/api/funkwhale_api/moderation/dynamic_preferences_registry.py b/api/funkwhale_api/moderation/dynamic_preferences_registry.py index 04a732f4d..8d8237cbb 100644 --- a/api/funkwhale_api/moderation/dynamic_preferences_registry.py +++ b/api/funkwhale_api/moderation/dynamic_preferences_registry.py @@ -19,8 +19,8 @@ class AllowListPublic(types.BooleanPreference): name = "allow_list_public" verbose_name = "Publish your allowed-domains list" help_text = ( - "If enabled, everyone will be able to retrieve the list of domains you allowed. " + "If enabled, everyone will be able to retrieve the list of domains you allowed. ", "This is useful on open setups, to help people decide if they want to join your pod, or to " - "make your moderation policy public." + "make your moderation policy public.", ) default = False diff --git a/front/src/components/manage/moderation/DomainsTable.vue b/front/src/components/manage/moderation/DomainsTable.vue index 08fff4cc5..544d91156 100644 --- a/front/src/components/manage/moderation/DomainsTable.vue +++ b/front/src/components/manage/moderation/DomainsTable.vue @@ -6,14 +6,6 @@ -
- - -
- - - -
- Is present on allow-list - - Yes - No -
Last checked @@ -337,7 +300,7 @@ import InstancePolicyForm from "@/components/manage/moderation/InstancePolicyFor import InstancePolicyCard from "@/components/manage/moderation/InstancePolicyCard" export default { - props: ["id", "allowListEnabled"], + props: ["id"], components: { InstancePolicyForm, InstancePolicyCard, @@ -348,7 +311,6 @@ export default { isLoading: true, isLoadingStats: false, isLoadingPolicy: false, - isLoadingAllowList: false, policy: null, object: null, stats: null, @@ -391,15 +353,6 @@ export default { self.isLoadingPolicy = false }) }, - setAllowList(value) { - var self = this - this.isLoadingAllowList = true - let url = `manage/federation/domains/${this.id}/` - axios.patch(url, {allowed: value}).then(response => { - self.object = response.data - self.isLoadingAllowList = false - }) - }, refreshNodeInfo (data) { this.object.nodeinfo = data this.object.nodeinfo_fetch_date = new Date() diff --git a/front/src/views/admin/moderation/DomainsList.vue b/front/src/views/admin/moderation/DomainsList.vue index b4ffad7b8..3ce8e6afc 100644 --- a/front/src/views/admin/moderation/DomainsList.vue +++ b/front/src/views/admin/moderation/DomainsList.vue @@ -14,10 +14,6 @@ -
- - -
- + @@ -36,14 +32,12 @@ import axios from 'axios' import DomainsTable from "@/components/manage/moderation/DomainsTable" export default { - props: ['allowListEnabled'], components: { DomainsTable }, data () { return { domainName: '', - domainAllowed: this.allowListEnabled ? true : null, isCreating: false, errors: [] } @@ -60,7 +54,7 @@ export default { let self = this this.isCreating = true this.errors = [] - axios.post('manage/federation/domains/', {name: this.domainName, allowed: this.domainAllowed}).then((response) => { + axios.post('manage/federation/domains/', {name: this.domainName}).then((response) => { this.isCreating = false this.$router.push({ name: "manage.moderation.domains.detail", From fd522bc0dea9445818decb4390af197a61c9b6e3 Mon Sep 17 00:00:00 2001 From: Eliot Berriot Date: Mon, 24 Jun 2019 15:32:35 +0200 Subject: [PATCH 037/291] Fixed some logging issues --- api/config/settings/common.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/config/settings/common.py b/api/config/settings/common.py index 8f2e00ade..176251c55 100644 --- a/api/config/settings/common.py +++ b/api/config/settings/common.py @@ -46,7 +46,7 @@ logging.config.dictConfig( }, "loggers": { "funkwhale_api": { - "level": LOGLEVEL, + "level": logging.getLevelName(LOGLEVEL), "handlers": ["console"], # required to avoid double logging with root logger "propagate": False, From aa368ec5eb38c33c8deb3957be0811e89cffac7c Mon Sep 17 00:00:00 2001 From: Eliot Berriot Date: Mon, 24 Jun 2019 15:57:01 +0200 Subject: [PATCH 038/291] =?UTF-8?q?Hugh=20logging=E2=80=A6=E2=80=A6?= =?UTF-8?q?=E2=80=A6=E2=80=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/config/settings/common.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/api/config/settings/common.py b/api/config/settings/common.py index 176251c55..de69d61b3 100644 --- a/api/config/settings/common.py +++ b/api/config/settings/common.py @@ -46,7 +46,7 @@ logging.config.dictConfig( }, "loggers": { "funkwhale_api": { - "level": logging.getLevelName(LOGLEVEL), + "level": LOGLEVEL, "handlers": ["console"], # required to avoid double logging with root logger "propagate": False, @@ -183,8 +183,6 @@ if RAVEN_ENABLED: "release": __version__, } THIRD_PARTY_APPS += ("raven.contrib.django.raven_compat",) - logging.getLogger("").addHandler("sentry") - logging.getLogger("funkwhale_api").addHandler("sentry") # Apps specific for this project go here. LOCAL_APPS = ( From cbf9f74e4955b255b063f1cbadfab49aaeb8fd70 Mon Sep 17 00:00:00 2001 From: Eliot Berriot Date: Mon, 24 Jun 2019 16:07:53 +0200 Subject: [PATCH 039/291] Fixed 500 error when adding domain without nodeinfo --- api/funkwhale_api/manage/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/funkwhale_api/manage/views.py b/api/funkwhale_api/manage/views.py index fb9ceabc5..7dbbe578b 100644 --- a/api/funkwhale_api/manage/views.py +++ b/api/funkwhale_api/manage/views.py @@ -371,7 +371,7 @@ class ManageDomainViewSet( def perform_create(self, serializer): domain = serializer.save() - federation_tasks.update_domain_nodeinfo(domain_name=domain.name) + federation_tasks.update_domain_nodeinfo.delay(domain_name=domain.name) @rest_decorators.action(methods=["get"], detail=True) def nodeinfo(self, request, *args, **kwargs): From 62939d6826c54d90f8734420694505f9090efbfa Mon Sep 17 00:00:00 2001 From: Eliot Berriot Date: Mon, 24 Jun 2019 16:12:43 +0200 Subject: [PATCH 040/291] Fixed failing test --- api/tests/manage/test_views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/tests/manage/test_views.py b/api/tests/manage/test_views.py index 72394052c..9a3c119ea 100644 --- a/api/tests/manage/test_views.py +++ b/api/tests/manage/test_views.py @@ -63,7 +63,7 @@ def test_domain_detail(factories, superuser_api_client): def test_domain_create(superuser_api_client, mocker): update_domain_nodeinfo = mocker.patch( - "funkwhale_api.federation.tasks.update_domain_nodeinfo" + "funkwhale_api.federation.tasks.update_domain_nodeinfo.delay" ) url = reverse("api:v1:manage:federation:domains-list") response = superuser_api_client.post(url, {"name": "test.federation"}) From d39edae061ab4fdf5921abc431d98d68c3331a90 Mon Sep 17 00:00:00 2001 From: Eliot Berriot Date: Mon, 24 Jun 2019 16:21:06 +0200 Subject: [PATCH 041/291] Fixed crashing nodeinfo fetching when remote answers with invalid JSON --- api/funkwhale_api/federation/tasks.py | 2 +- api/funkwhale_api/manage/views.py | 2 +- api/tests/manage/test_views.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/api/funkwhale_api/federation/tasks.py b/api/funkwhale_api/federation/tasks.py index f6471ef21..75a3df937 100644 --- a/api/funkwhale_api/federation/tasks.py +++ b/api/funkwhale_api/federation/tasks.py @@ -190,7 +190,7 @@ def update_domain_nodeinfo(domain): now = timezone.now() try: nodeinfo = {"status": "ok", "payload": fetch_nodeinfo(domain.name)} - except (requests.RequestException, serializers.serializers.ValidationError) as e: + except (requests.RequestException, serializers.serializers.ValidationError, ValueError) as e: nodeinfo = {"status": "error", "error": str(e)} service_actor_id = common_utils.recursive_getattr( diff --git a/api/funkwhale_api/manage/views.py b/api/funkwhale_api/manage/views.py index 7dbbe578b..fb9ceabc5 100644 --- a/api/funkwhale_api/manage/views.py +++ b/api/funkwhale_api/manage/views.py @@ -371,7 +371,7 @@ class ManageDomainViewSet( def perform_create(self, serializer): domain = serializer.save() - federation_tasks.update_domain_nodeinfo.delay(domain_name=domain.name) + federation_tasks.update_domain_nodeinfo(domain_name=domain.name) @rest_decorators.action(methods=["get"], detail=True) def nodeinfo(self, request, *args, **kwargs): diff --git a/api/tests/manage/test_views.py b/api/tests/manage/test_views.py index 9a3c119ea..72394052c 100644 --- a/api/tests/manage/test_views.py +++ b/api/tests/manage/test_views.py @@ -63,7 +63,7 @@ def test_domain_detail(factories, superuser_api_client): def test_domain_create(superuser_api_client, mocker): update_domain_nodeinfo = mocker.patch( - "funkwhale_api.federation.tasks.update_domain_nodeinfo.delay" + "funkwhale_api.federation.tasks.update_domain_nodeinfo" ) url = reverse("api:v1:manage:federation:domains-list") response = superuser_api_client.post(url, {"name": "test.federation"}) From c55a926d335ac757aead557e84c1b0a934bb2a96 Mon Sep 17 00:00:00 2001 From: Eliot Berriot Date: Mon, 24 Jun 2019 16:23:44 +0200 Subject: [PATCH 042/291] Linting --- api/funkwhale_api/federation/tasks.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/api/funkwhale_api/federation/tasks.py b/api/funkwhale_api/federation/tasks.py index 75a3df937..163ac7788 100644 --- a/api/funkwhale_api/federation/tasks.py +++ b/api/funkwhale_api/federation/tasks.py @@ -190,7 +190,11 @@ def update_domain_nodeinfo(domain): now = timezone.now() try: nodeinfo = {"status": "ok", "payload": fetch_nodeinfo(domain.name)} - except (requests.RequestException, serializers.serializers.ValidationError, ValueError) as e: + except ( + requests.RequestException, + serializers.serializers.ValidationError, + ValueError, + ) as e: nodeinfo = {"status": "error", "error": str(e)} service_actor_id = common_utils.recursive_getattr( From 2c34df6193d012be360442b91cc63cc5dc20c90b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciar=C3=A1n=20Ainsworth?= Date: Mon, 24 Jun 2019 17:39:09 +0200 Subject: [PATCH 043/291] Resolve "Colorized 'play' button in front of the currently playing music" --- changes/changelog.d/832.enhancement | 1 + front/src/components/audio/album/Card.vue | 11 +++++++++-- front/src/components/audio/track/Row.vue | 12 +++++++++--- 3 files changed, 19 insertions(+), 5 deletions(-) create mode 100644 changes/changelog.d/832.enhancement diff --git a/changes/changelog.d/832.enhancement b/changes/changelog.d/832.enhancement new file mode 100644 index 000000000..1a270b88e --- /dev/null +++ b/changes/changelog.d/832.enhancement @@ -0,0 +1 @@ +The currently playing track is now highlighted with an orange play icon (#832) \ No newline at end of file diff --git a/front/src/components/audio/album/Card.vue b/front/src/components/audio/album/Card.vue index bdc0dd6cb..db6e8de6b 100644 --- a/front/src/components/audio/album/Card.vue +++ b/front/src/components/audio/album/Card.vue @@ -20,7 +20,7 @@
- + @@ -57,6 +57,7 @@ From f4365f68c298f521f9895e41bb8f801db40c7834 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciar=C3=A1n=20Ainsworth?= Date: Tue, 25 Jun 2019 17:48:01 +0200 Subject: [PATCH 044/291] Resolve "Add new keyboard shortcuts" --- changes/changelog.d/866.enhancement | 1 + front/src/components/ShortcutsModal.vue | 109 ++++++++++++++++++----- front/src/components/audio/Player.vue | 31 ++++++- front/src/components/audio/SearchBar.vue | 14 ++- front/src/store/player.js | 9 ++ 5 files changed, 137 insertions(+), 27 deletions(-) create mode 100644 changes/changelog.d/866.enhancement diff --git a/changes/changelog.d/866.enhancement b/changes/changelog.d/866.enhancement new file mode 100644 index 000000000..9ebbd52dd --- /dev/null +++ b/changes/changelog.d/866.enhancement @@ -0,0 +1 @@ +New keyboard shortcuts added for enhanced control over audio player (#866) \ No newline at end of file diff --git a/front/src/components/ShortcutsModal.vue b/front/src/components/ShortcutsModal.vue index 5b1a7349d..06fb25ba4 100644 --- a/front/src/components/ShortcutsModal.vue +++ b/front/src/components/ShortcutsModal.vue @@ -4,18 +4,36 @@ Keyboard shortcuts
- - - - - - - - -
{{ section.title }}
{{ shortcut.summary }}{{ shortcut.key }}
+
+
+ + + + + + + + +
{{ section.title }}
{{ shortcut.summary }}{{ shortcut.key }}
+
+
+ + + + + + + + +
{{ section.title }}
{{ shortcut.summary }}{{ shortcut.key }}
+
+