From 8d91024df16a6fb60b8c236801a54af66e5e9543 Mon Sep 17 00:00:00 2001
From: Kasper Seweryn <github@wvffle.net>
Date: Thu, 21 Apr 2022 17:25:28 +0200
Subject: [PATCH] Move locales.ts to locales.json and remove unused i18n script

---
 TRANSLATORS.rst                               |    2 +-
 front/locales/app.pot                         | 5832 +++++++++--------
 front/scripts/i18n-compile.sh                 |    2 +-
 front/scripts/i18n-extract.sh                 |    2 +-
 .../i18n-populate-contextualized-strings.sh   |   23 -
 front/src/{locales.ts => locales.json}        |    5 +-
 front/src/modules/locale.ts                   |    2 +-
 front/src/types.ts                            |    6 -
 8 files changed, 2924 insertions(+), 2950 deletions(-)
 delete mode 100755 front/scripts/i18n-populate-contextualized-strings.sh
 rename front/src/{locales.ts => locales.json} (94%)

diff --git a/TRANSLATORS.rst b/TRANSLATORS.rst
index 4a896408dd..1e63f67035 100644
--- a/TRANSLATORS.rst
+++ b/TRANSLATORS.rst
@@ -28,7 +28,7 @@ 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.ts``. Use the native language name, as it is what appears in the UI selector.
+3. Add your new language code and name in ``front/src/locales.json``. Use the native language name, as it is what appears in the UI selector.
 4. Create the ``po`` file from template:
 
 .. code-block:: shell
diff --git a/front/locales/app.pot b/front/locales/app.pot
index 2f2905e11f..837619aba0 100644
--- a/front/locales/app.pot
+++ b/front/locales/app.pot
@@ -1,8056 +1,8062 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the front package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: front 0.1.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-12-08 18:17+0000\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
+"Generated-By: easygettext\n"
+"Project-Id-Version: \n"
 
-#: front/src/components/playlists/PlaylistModal.vue:8
-#: front/src/components/playlists/PlaylistModal.vue:5
+#: src/components/playlists/PlaylistModal.vue:8
+#: src/components/playlists/PlaylistModal.vue:5
 msgctxt "Popup/Playlist/Paragraph"
 msgid "\"%{ title }\", by %{ artist }"
 msgstr ""
 
-#: front/src/components/RemoteSearchForm.vue:132
+#: src/components/RemoteSearchForm.vue:34
 msgctxt "Head/Fetch/Field.Placeholder"
 msgid "@username@example.com"
 msgstr ""
 
-#: front/src/components/auth/Authorize.vue:31
+#: src/components/auth/Authorize.vue:31
 msgctxt "Content/Auth/Title"
 msgid "%{ app } wants to access your Funkwhale account"
 msgstr ""
 
-#: front/src/components/Home.vue:65 src/components/Home.vue:7
+#: src/components/Home.vue:65
+#: src/components/Home.vue:7
 msgctxt "Content/Home/Stat"
 msgid "%{ count } active user"
 msgid_plural "%{ count } active users"
 msgstr[0] ""
 msgstr[1] ""
 
-#: front/src/components/audio/artist/Card.vue:18
+#: src/components/audio/artist/Card.vue:18
 msgctxt "*/*/*"
 msgid "%{ count } episode"
 msgid_plural "%{ count } episodes"
 msgstr[0] ""
 msgstr[1] ""
 
-#: front/src/components/audio/ChannelCard.vue:12
-#: front/src/components/audio/ChannelSerieCard.vue:15
-#: front/src/components/library/AlbumBase.vue:25
-#: front/src/components/library/AlbumBase.vue:59
-#: front/src/components/library/AlbumBase.vue:20
-#: front/src/components/library/AlbumBase.vue:54
-#: front/src/components/library/AlbumBase.vue:2
-#: front/src/components/library/AlbumBase.vue:1 src/views/channels/DetailBase.vue:19
-#: front/src/views/channels/DetailBase.vue:14 src/views/channels/DetailBase.vue:2
+#: src/components/audio/ChannelCard.vue:12
+#: src/components/audio/ChannelSerieCard.vue:15
+#: src/components/library/AlbumBase.vue:25
+#: src/components/library/AlbumBase.vue:59
+#: src/components/library/AlbumBase.vue:20
+#: src/components/library/AlbumBase.vue:54
+#: src/components/library/AlbumBase.vue:2
+#: src/components/library/AlbumBase.vue:1
+#: src/views/channels/DetailBase.vue:19
+#: src/views/channels/DetailBase.vue:14
+#: src/views/channels/DetailBase.vue:2
 msgctxt "Content/Channel/Paragraph"
 msgid "%{ count } episode"
 msgid_plural "%{ count } episodes"
 msgstr[0] ""
 msgstr[1] ""
 
-#: front/src/components/favorites/List.vue:12
+#: src/components/favorites/List.vue:12
 msgctxt "Content/Favorites/Title"
 msgid "%{ count } favorite"
 msgid_plural "%{ count } favorites"
 msgstr[0] ""
 msgstr[1] ""
 
-#: front/src/components/channels/UploadModal.vue:175
+#: src/components/channels/UploadModal.vue:31
 msgctxt "*/*/*"
 msgid "%{ count } file"
 msgid_plural "%{ count } files"
 msgstr[0] ""
 msgstr[1] ""
 
-#: front/src/components/Home.vue:70 src/components/Home.vue:12
+#: src/components/Home.vue:70
+#: src/components/Home.vue:12
 msgctxt "Content/Home/Stat"
 msgid "%{ count } hour of music"
 msgid_plural "%{ count } hours of music"
 msgstr[0] ""
 msgstr[1] ""
 
-#: front/src/views/channels/DetailBase.vue:30 src/views/channels/DetailBase.vue:25
-#: front/src/views/channels/DetailBase.vue:4
+#: src/views/channels/DetailBase.vue:30
+#: src/views/channels/DetailBase.vue:25
+#: src/views/channels/DetailBase.vue:4
 msgctxt "Content/Channel/Paragraph"
 msgid "%{ count } listening"
 msgid_plural "%{ count } listenings"
 msgstr[0] ""
 msgstr[1] ""
 
-#: front/src/components/common/ActionTable.vue:59
+#: src/components/common/ActionTable.vue:59
 msgctxt "Content/*/Paragraph"
 msgid "%{ count } on %{ total } selected"
 msgid_plural "%{ count } on %{ total } selected"
 msgstr[0] ""
 msgstr[1] ""
 
-#: front/src/views/channels/DetailBase.vue:27 src/views/channels/DetailBase.vue:22
-#: front/src/views/channels/DetailBase.vue:1
+#: src/views/channels/DetailBase.vue:27
+#: src/views/channels/DetailBase.vue:22
+#: src/views/channels/DetailBase.vue:1
 msgctxt "Content/Channel/Paragraph"
 msgid "%{ count } subscriber"
 msgid_plural "%{ count } subscribers"
 msgstr[0] ""
 msgstr[1] ""
 
-#: front/src/components/audio/ChannelCard.vue:15
-#: front/src/components/audio/album/Card.vue:21
-#: front/src/components/audio/artist/Card.vue:15
-#: front/src/components/channels/AlbumSelect.vue:13
-#: front/src/components/library/AlbumBase.vue:28
-#: front/src/components/library/AlbumBase.vue:62
-#: front/src/components/library/AlbumBase.vue:23
-#: front/src/components/library/AlbumBase.vue:57
-#: front/src/components/library/AlbumBase.vue:5
-#: front/src/components/library/AlbumBase.vue:4 src/components/playlists/Card.vue:17
-#: front/src/views/channels/DetailBase.vue:22 src/views/channels/DetailBase.vue:17
-#: front/src/views/channels/DetailBase.vue:5 src/views/content/libraries/Card.vue:31
-#: front/src/views/content/remote/Card.vue:34 src/views/library/DetailBase.vue:55
+#: src/components/audio/ChannelCard.vue:15
+#: src/components/audio/album/Card.vue:21
+#: src/components/audio/artist/Card.vue:15
+#: src/components/channels/AlbumSelect.vue:13
+#: src/components/library/AlbumBase.vue:28
+#: src/components/library/AlbumBase.vue:62
+#: src/components/library/AlbumBase.vue:23
+#: src/components/library/AlbumBase.vue:57
+#: src/components/library/AlbumBase.vue:5
+#: src/components/library/AlbumBase.vue:4
+#: src/components/playlists/Card.vue:17
+#: src/views/channels/DetailBase.vue:22
+#: src/views/channels/DetailBase.vue:17
+#: src/views/channels/DetailBase.vue:5
+#: src/views/content/libraries/Card.vue:31
+#: src/views/content/remote/Card.vue:34
+#: src/views/library/DetailBase.vue:55
 msgctxt "*/*/*"
 msgid "%{ count } track"
 msgid_plural "%{ count } tracks"
 msgstr[0] ""
 msgstr[1] ""
 
-#: front/src/components/library/ArtistBase.vue:13
-#: front/src/components/library/ArtistBase.vue:8
+#: src/components/library/ArtistBase.vue:13
+#: src/components/library/ArtistBase.vue:8
 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:109
-#: front/src/components/library/radios/Builder.vue:1
+#: src/components/library/radios/Builder.vue:109
+#: src/components/library/radios/Builder.vue:1
 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/mixins/PlayOptions.vue:177
-#: front/src/components/mixins/PlayOptions.vue:178
+#: src/components/mixins/PlayOptions.vue:175
 msgctxt "*/Queue/Message"
 msgid "%{ count } track was added to your queue"
 msgid_plural "%{ count } tracks were added to your queue"
 msgstr[0] ""
 msgstr[1] ""
 
-#: front/src/views/content/libraries/Quota.vue:21
+#: src/views/content/libraries/Quota.vue:21
 msgctxt "Content/Library/Paragraph"
 msgid "%{ current } used on %{ max } allowed"
 msgstr ""
 
-#: front/src/components/common/Duration.vue:2
+#: src/components/common/Duration.vue:2
 msgctxt "Content/*/Paragraph"
 msgid "%{ hours } h %{ minutes } min"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:113 src/components/audio/Player.vue:119
+#: src/components/audio/Player.vue:113
+#: src/components/audio/Player.vue:119
 msgctxt "Sidebar/Queue/Text"
 msgid "%{ index } of %{ length }"
 msgstr ""
 
-#: front/src/components/common/Duration.vue:3
+#: src/components/common/Duration.vue:3
 msgctxt "Content/*/Paragraph"
 msgid "%{ minutes } min"
 msgstr ""
 
-#: front/src/components/audio/ChannelCard.vue:22
+#: src/components/audio/ChannelCard.vue:22
 msgid "%{ updatedAgo }"
 msgstr ""
 
-#: front/src/components/notifications/NotificationRow.vue:86
+#: src/components/notifications/NotificationRow.vue:16
 msgctxt "Content/Notifications/Paragraph"
 msgid "%{ username } accepted your follow on library \"%{ library }\""
 msgstr ""
 
-#: front/src/components/notifications/NotificationRow.vue:85
+#: src/components/notifications/NotificationRow.vue:15
 msgctxt "Content/Notifications/Paragraph"
 msgid "%{ username } followed your library \"%{ library }\""
 msgstr ""
 
-#: front/src/components/notifications/NotificationRow.vue:88
+#: src/components/notifications/NotificationRow.vue:18
 msgctxt "Content/Notifications/Paragraph"
 msgid "%{ username } wants to follow your library \"%{ library }\""
 msgstr ""
 
-#: front/src/views/auth/ProfileBase.vue:162
+#: src/views/auth/ProfileBase.vue:23
 msgctxt "Head/Profile/Title"
 msgid "%{ username }'s profile"
 msgstr ""
 
-#: front/src/components/playlists/PlaylistModal.vue:22
+#: src/components/playlists/PlaylistModal.vue:22
 msgctxt "Popup/Playlist/Paragraph"
 msgid "<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
 msgstr ""
 
-#: front/src/views/Notifications.vue:28 src/views/Notifications.vue:84
+#: src/views/Notifications.vue:28
+#: src/views/Notifications.vue:84
 msgctxt "*/*/*"
 msgid "30 days"
 msgstr ""
 
-#: front/src/views/Notifications.vue:33 src/views/Notifications.vue:89
+#: src/views/Notifications.vue:33
+#: src/views/Notifications.vue:89
 msgctxt "*/*/*"
 msgid "60 days"
 msgstr ""
 
-#: front/src/views/Notifications.vue:38 src/views/Notifications.vue:94
+#: src/views/Notifications.vue:38
+#: src/views/Notifications.vue:94
 msgctxt "*/*/*"
 msgid "90 days"
 msgstr ""
 
-#: front/src/components/library/FileUpload.vue:370
-#: front/src/components/library/FileUpload.vue:371
+#: src/components/library/FileUpload.vue:62
 msgctxt "Content/Library/Help text"
 msgid "A network error occurred while uploading this file"
 msgstr ""
 
-#: front/src/App.vue:206
+#: src/AppOld.vue:182
 msgctxt "App/Message/Paragraph"
 msgid "A new version of the app is available."
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:281
+#: src/components/library/EditForm.vue:40
 msgctxt "*/*/Placeholder"
 msgid "A short summary describing your changes."
 msgstr ""
 
-#: front/src/components/About.vue:19
+#: src/components/About.vue:19
 msgctxt "Content/About/Heading"
 msgid "A social platform to enjoy and share music"
 msgstr ""
 
-#: front/src/components/Footer.vue:18
-msgctxt "Footer/About/List item.Link"
-msgid "About"
-msgstr ""
-
-#: front/src/components/About.vue:271 src/components/AboutPod.vue:454
+#: src/components/About.vue:27
+#: src/components/AboutPod.vue:19
 msgctxt "Head/About/Title"
 msgid "About"
 msgstr ""
 
-#: front/src/components/common/UserMenu.vue:165
-#: front/src/components/common/UserModal.vue:194
+#: src/components/common/UserMenu.vue:18
+#: src/components/common/UserModal.vue:26
 msgctxt "Sidebar/About/List item.Link"
 msgid "About"
 msgstr ""
 
-#: front/src/components/Footer.vue:11
-msgctxt "Footer/About/Title"
-msgid "About %{instanceName}"
-msgstr ""
-
-#: front/src/components/Footer.vue:14
-msgctxt "Footer/About/Title"
-msgid "About %{instanceUrl}"
-msgstr ""
-
-#: front/src/components/Footer.vue:81 src/components/Home.vue:98
+#: src/components/Home.vue:98
 msgctxt "Footer/*/Title/Short"
 msgid "About Funkwhale"
 msgstr ""
 
-#: front/src/components/Home.vue:18
+#: src/components/Home.vue:18
 msgctxt "Content/Home/Header"
 msgid "About this Funkwhale pod"
 msgstr ""
 
-#: front/src/components/channels/LicenseSelect.vue:18
+#: src/components/channels/LicenseSelect.vue:18
 msgctxt "Content/*/*"
 msgid "About this license"
 msgstr ""
 
-#: front/src/components/About.vue:89 src/components/AboutPod.vue:18
-#: front/src/components/AboutPod.vue:47
+#: src/components/About.vue:94
+#: src/components/AboutPod.vue:18
+#: src/components/AboutPod.vue:47
 msgctxt "Content/About/Header"
 msgid "About this pod"
 msgstr ""
 
-#: front/src/components/About.vue:171
+#: src/components/About.vue:176
 msgctxt "Content/About/Paragraph"
 msgid "About this pod"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:240
+#: src/components/Sidebar.vue:240
 msgctxt "Sidebar/*/List item.Link"
 msgid "About this pod"
 msgstr ""
 
-#: front/src/views/library/Edit.vue:65
+#: src/views/library/Edit.vue:65
 msgctxt "Content/Library/Button.Label"
 msgid "Accept"
 msgstr ""
 
-#: front/src/views/library/Edit.vue:57
+#: src/views/library/Edit.vue:57
 msgctxt "Content/Library/Table/Short"
 msgid "Accepted"
 msgstr ""
 
-#: front/src/components/auth/SubsonicTokenForm.vue:210
+#: src/components/auth/SubsonicTokenForm.vue:64
 msgctxt "Content/Settings/Message"
 msgid "Access disabled"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:100
-#: front/src/components/mixins/Translations.vue:101
+#: src/components/mixins/Translations.vue:100
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to audio files, libraries, artists, albums and tracks"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:124
-#: front/src/components/mixins/Translations.vue:125
+#: src/components/mixins/Translations.vue:124
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to content filters"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:96
-#: front/src/components/mixins/Translations.vue:97
+#: src/components/mixins/Translations.vue:96
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to e-mail, username, and profile information"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:132
-#: front/src/components/mixins/Translations.vue:133
+#: src/components/mixins/Translations.vue:132
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to edits"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:104
-#: front/src/components/mixins/Translations.vue:105
+#: src/components/mixins/Translations.vue:104
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to favorites"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:112
-#: front/src/components/mixins/Translations.vue:113
+#: src/components/mixins/Translations.vue:112
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to follows"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:108
-#: front/src/components/mixins/Translations.vue:109
+#: src/components/mixins/Translations.vue:108
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to listening history"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:140
-#: front/src/components/mixins/Translations.vue:141
+#: src/components/mixins/Translations.vue:140
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to moderation reports"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:128
-#: front/src/components/mixins/Translations.vue:129
+#: src/components/mixins/Translations.vue:128
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to notifications"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:116
-#: front/src/components/mixins/Translations.vue:117
+#: src/components/mixins/Translations.vue:116
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to playlists"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:120
-#: front/src/components/mixins/Translations.vue:121
+#: src/components/mixins/Translations.vue:120
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to radios"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:136
-#: front/src/components/mixins/Translations.vue:137
+#: src/components/mixins/Translations.vue:136
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to security settings such as password and authorization"
 msgstr ""
 
-#: front/src/components/auth/ApplicationEdit.vue:33
-#: front/src/components/auth/ApplicationEdit.vue:26
+#: src/components/auth/ApplicationEdit.vue:33
+#: src/components/auth/ApplicationEdit.vue:26
 msgctxt "Content/Applications/Label"
 msgid "Access token"
 msgstr ""
 
-#: front/src/components/manage/library/UploadsTable.vue:132
-#: front/src/components/manage/library/UploadsTable.vue:42
-#: front/src/components/mixins/Translations.vue:70
-#: front/src/views/admin/library/UploadDetail.vue:196
-#: front/src/views/admin/library/UploadDetail.vue:191
-#: front/src/components/mixins/Translations.vue:71
+#: src/components/manage/library/UploadsTable.vue:132
+#: src/components/manage/library/UploadsTable.vue:42
+#: src/components/mixins/Translations.vue:70
+#: src/views/admin/library/UploadDetail.vue:196
+#: src/views/admin/library/UploadDetail.vue:191
 msgctxt "Content/*/*/Noun"
 msgid "Accessed date"
 msgstr ""
 
-#: front/src/components/manage/ChannelsTable.vue:66
-#: front/src/components/manage/ChannelsTable.vue:7
-#: front/src/components/manage/library/LibrariesTable.vue:66
-#: front/src/components/manage/library/LibrariesTable.vue:7
-#: front/src/components/manage/library/UploadsTable.vue:102
-#: front/src/components/manage/library/UploadsTable.vue:12
-#: front/src/components/manage/moderation/ReportCard.vue:188
-#: front/src/components/mixins/Report.vue:14 src/views/admin/ChannelDetail.vue:127
-#: front/src/views/admin/ChannelDetail.vue:122
-#: front/src/views/admin/library/LibraryDetail.vue:120
-#: front/src/views/admin/library/LibraryDetail.vue:115
-#: front/src/views/admin/library/UploadDetail.vue:120
-#: front/src/views/admin/library/UploadDetail.vue:115
-#: front/src/components/mixins/Report.vue:15
+#: src/components/manage/ChannelsTable.vue:66
+#: src/components/manage/ChannelsTable.vue:7
+#: src/components/manage/library/LibrariesTable.vue:66
+#: src/components/manage/library/LibrariesTable.vue:7
+#: src/components/manage/library/UploadsTable.vue:102
+#: src/components/manage/library/UploadsTable.vue:12
+#: src/components/manage/moderation/ReportCard.vue:188
+#: src/components/mixins/Report.vue:14
+#: src/views/admin/ChannelDetail.vue:127
+#: src/views/admin/ChannelDetail.vue:122
+#: src/views/admin/library/LibraryDetail.vue:120
+#: src/views/admin/library/LibraryDetail.vue:115
+#: src/views/admin/library/UploadDetail.vue:120
+#: src/views/admin/library/UploadDetail.vue:115
 msgctxt "*/*/*/Noun"
 msgid "Account"
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:104
-#: front/src/views/admin/moderation/AccountsDetail.vue:99
+#: src/views/admin/moderation/AccountsDetail.vue:104
+#: src/views/admin/moderation/AccountsDetail.vue:99
 msgctxt "Content/Moderation/Title"
 msgid "Account data"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:5
+#: src/components/auth/Settings.vue:5
 msgctxt "Content/Settings/Title"
 msgid "Account settings"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:761
+#: src/components/auth/Settings.vue:63
 msgctxt "Head/Settings/Title"
 msgid "Account Settings"
 msgstr ""
 
-#: front/src/components/manage/users/UsersTable.vue:50
-#: front/src/components/manage/users/UsersTable.vue:12
+#: src/components/manage/users/UsersTable.vue:50
+#: src/components/manage/users/UsersTable.vue:12
 msgctxt "Content/Admin/Table.Label/Short, Noun"
 msgid "Account status"
 msgstr ""
 
-#: front/src/views/auth/PasswordReset.vue:28
+#: src/views/auth/PasswordReset.vue:28
 msgctxt "Content/Signup/Input.Label"
 msgid "Account's e-mail address"
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsList.vue:4
-#: front/src/views/admin/moderation/AccountsList.vue:31
-#: front/src/views/admin/moderation/Base.vue:25
+#: src/views/admin/moderation/AccountsList.vue:4
+#: src/views/admin/moderation/AccountsList.vue:13
+#: src/views/admin/moderation/Base.vue:25
 msgctxt "*/Moderation/Title"
 msgid "Accounts"
 msgstr ""
 
-#: front/src/views/library/Edit.vue:43
+#: src/views/library/Edit.vue:43
 msgctxt "Content/Library/Table.Label"
 msgid "Action"
 msgstr ""
 
-#: front/src/components/common/ActionTable.vue:88
+#: src/components/common/ActionTable.vue:88
 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/library/FileUpload.vue:102
+#: src/components/library/FileUpload.vue:102
 msgctxt "*/*/*"
 msgid "Actions"
 msgstr ""
 
-#: front/src/components/admin/SignupFormBuilder.vue:57
+#: src/components/admin/SignupFormBuilder.vue:57
 msgctxt "*/*/Form-builder,Help"
 msgid "Actions"
 msgstr ""
 
-#: front/src/components/common/ActionTable.vue:18
-#: front/src/components/library/radios/Builder.vue:98
-#: front/src/components/manage/moderation/ReportCard.vue:254
-#: front/src/components/manage/moderation/UserRequestCard.vue:145
+#: src/components/common/ActionTable.vue:18
+#: src/components/library/radios/Builder.vue:98
+#: src/components/manage/moderation/ReportCard.vue:254
+#: src/components/manage/moderation/UserRequestCard.vue:145
 msgctxt "Content/*/*/Noun"
 msgid "Actions"
 msgstr ""
 
-#: front/src/components/manage/users/UsersTable.vue:88
-#: front/src/components/manage/users/UsersTable.vue:13
+#: src/components/manage/users/UsersTable.vue:88
+#: src/components/manage/users/UsersTable.vue:13
 msgctxt "Content/Admin/Table"
 msgid "Active"
 msgstr ""
 
-#: front/src/components/About.vue:109 src/components/About.vue:7
-#: front/src/components/AboutPod.vue:251 src/components/AboutPod.vue:39
+#: src/components/About.vue:114
+#: src/components/About.vue:7
+#: src/components/AboutPod.vue:251
+#: src/components/AboutPod.vue:39
 msgctxt "Content/About/*"
 msgid "active user"
 msgid_plural "active users"
 msgstr[0] ""
 msgstr[1] ""
 
-#: front/src/views/admin/ChannelDetail.vue:185 src/views/admin/ChannelDetail.vue:180
-#: front/src/views/admin/library/AlbumDetail.vue:166
-#: front/src/views/admin/library/AlbumDetail.vue:161
-#: front/src/views/admin/library/ArtistDetail.vue:165
-#: front/src/views/admin/library/ArtistDetail.vue:160
-#: front/src/views/admin/library/LibraryDetail.vue:160
-#: front/src/views/admin/library/LibraryDetail.vue:155
-#: front/src/views/admin/library/TagDetail.vue:96
-#: front/src/views/admin/library/TagDetail.vue:91
-#: front/src/views/admin/library/TrackDetail.vue:231
-#: front/src/views/admin/library/TrackDetail.vue:226
-#: front/src/views/admin/library/UploadDetail.vue:177
-#: front/src/views/admin/library/UploadDetail.vue:172
-#: front/src/views/admin/moderation/AccountsDetail.vue:242
-#: front/src/views/admin/moderation/AccountsDetail.vue:237
-#: front/src/views/admin/moderation/DomainsDetail.vue:194
-#: front/src/views/admin/moderation/DomainsDetail.vue:189
+#: src/views/admin/ChannelDetail.vue:185
+#: src/views/admin/ChannelDetail.vue:180
+#: src/views/admin/library/AlbumDetail.vue:166
+#: src/views/admin/library/AlbumDetail.vue:161
+#: src/views/admin/library/ArtistDetail.vue:165
+#: src/views/admin/library/ArtistDetail.vue:160
+#: src/views/admin/library/LibraryDetail.vue:160
+#: src/views/admin/library/LibraryDetail.vue:155
+#: src/views/admin/library/TagDetail.vue:96
+#: src/views/admin/library/TagDetail.vue:91
+#: src/views/admin/library/TrackDetail.vue:231
+#: src/views/admin/library/TrackDetail.vue:226
+#: src/views/admin/library/UploadDetail.vue:177
+#: src/views/admin/library/UploadDetail.vue:172
+#: src/views/admin/moderation/AccountsDetail.vue:242
+#: src/views/admin/moderation/AccountsDetail.vue:237
+#: src/views/admin/moderation/DomainsDetail.vue:194
+#: src/views/admin/moderation/DomainsDetail.vue:189
 msgctxt "Content/Moderation/Title"
 msgid "Activity"
 msgstr ""
 
-#: front/src/views/auth/ProfileBase.vue:63
+#: src/views/auth/ProfileBase.vue:63
 msgctxt "Content/Profile/*"
 msgid "Activity"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:7
-#: front/src/components/mixins/Translations.vue:8
+#: src/components/mixins/Translations.vue:7
 msgctxt "Content/Settings/Dropdown.Label/Noun"
 msgid "Activity visibility"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsList.vue:32
+#: src/views/admin/moderation/DomainsList.vue:32
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Add"
 msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:82
-#: front/src/components/library/AlbumBase.vue:93
-#: front/src/components/library/AlbumBase.vue:77
-#: front/src/components/library/AlbumBase.vue:88
-#: front/src/components/library/AlbumBase.vue:5
+#: src/components/library/AlbumBase.vue:82
+#: src/components/library/AlbumBase.vue:93
+#: src/components/library/AlbumBase.vue:77
+#: src/components/library/AlbumBase.vue:88
+#: src/components/library/AlbumBase.vue:5
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Add a description…"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsList.vue:23
+#: src/views/admin/moderation/DomainsList.vue:23
 msgctxt "Content/Moderation/Form.Label/Verb"
 msgid "Add a domain"
 msgstr ""
 
-#: front/src/components/channels/UploadForm.vue:29
+#: src/components/channels/UploadForm.vue:29
 msgctxt "Content/Channels/Popup.Paragraph"
 msgid "Add a license to your upload to ensure some freedoms to your public."
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:78
-#: front/src/views/admin/moderation/AccountsDetail.vue:73
-#: front/src/views/admin/moderation/AccountsDetail.vue:15
+#: src/views/admin/moderation/AccountsDetail.vue:78
+#: src/views/admin/moderation/AccountsDetail.vue:73
+#: src/views/admin/moderation/AccountsDetail.vue:15
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Add a moderation policy"
 msgstr ""
 
-#: front/src/components/admin/SignupFormBuilder.vue:103
+#: src/components/admin/SignupFormBuilder.vue:103
 msgctxt "*/*/Form-builder"
 msgid "Add a new field"
 msgstr ""
 
-#: front/src/components/manage/moderation/InstancePolicyForm.vue:6
+#: src/components/manage/moderation/InstancePolicyForm.vue:6
 msgctxt "Content/Moderation/Card.Button.Label/Verb"
 msgid "Add a new moderation rule"
 msgstr ""
 
-#: front/src/views/content/Home.vue:91
+#: src/views/content/Home.vue:7
 msgctxt "Content/Library/Title/Verb"
 msgid "Add and manage content"
 msgstr ""
 
-#: front/src/components/playlists/Editor.vue:38
-#: front/src/components/playlists/PlaylistModal.vue:31
+#: src/components/playlists/Editor.vue:38
+#: src/components/playlists/PlaylistModal.vue:31
 msgctxt "*/Playlist/Button.Label/Verb"
 msgid "Add anyways"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:540 src/views/content/Base.vue:35
+#: src/components/Sidebar.vue:74
+#: src/views/content/Base.vue:4
 msgctxt "*/Library/*/Verb"
 msgid "Add content"
 msgstr ""
 
-#: front/src/components/library/radios/Builder.vue:65
+#: src/components/library/radios/Builder.vue:65
 msgctxt "Content/Radio/Button.Label/Verb"
 msgid "Add filter"
 msgstr ""
 
-#: front/src/components/library/radios/Builder.vue:53
+#: src/components/library/radios/Builder.vue:53
 msgctxt "Content/Radio/Paragraph"
 msgid "Add filters to customize your radio"
 msgstr ""
 
-#: front/src/views/auth/ProfileOverview.vue:14 src/views/auth/ProfileOverview.vue:26
-#: front/src/views/channels/DetailOverview.vue:79
-#: front/src/views/channels/SubscriptionsList.vue:8
+#: src/views/auth/ProfileOverview.vue:14
+#: src/views/auth/ProfileOverview.vue:26
+#: src/views/channels/DetailOverview.vue:79
+#: src/views/channels/SubscriptionsList.vue:8
 msgctxt "Content/Profile/Button"
 msgid "Add new"
 msgstr ""
 
-#: front/src/components/manage/moderation/NoteForm.vue:18
+#: src/components/manage/moderation/NoteForm.vue:18
 msgctxt "Content/Moderation/Button.Label/Verb"
 msgid "Add note"
 msgstr ""
 
-#: front/src/components/library/Albums.vue:78 src/components/library/Artists.vue:87
+#: src/components/library/Albums.vue:78
+#: src/components/library/Artists.vue:87
 msgctxt "Content/*/Verb"
 msgid "Add some music"
 msgstr ""
 
-#: front/src/components/manage/moderation/DomainsTable.vue:250
-#: front/src/views/admin/moderation/DomainsDetail.vue:38
-#: front/src/views/admin/moderation/DomainsDetail.vue:33
-#: front/src/views/admin/moderation/DomainsList.vue:28
+#: src/components/manage/moderation/DomainsTable.vue:62
+#: src/views/admin/moderation/DomainsDetail.vue:38
+#: src/views/admin/moderation/DomainsDetail.vue:33
+#: src/views/admin/moderation/DomainsList.vue:28
 msgctxt "Content/Moderation/Action/Verb"
 msgid "Add to allow-list"
 msgstr ""
 
-#: front/src/components/audio/PlayButton.vue:177
+#: src/components/audio/PlayButton.vue:51
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Add to current queue"
 msgstr ""
 
-#: front/src/components/audio/podcast/Modal.vue:264
-#: front/src/components/audio/track/Modal.vue:264
-#: front/src/components/favorites/TrackFavoriteIcon.vue:6
-#: front/src/components/favorites/TrackFavoriteIcon.vue:44
+#: src/components/audio/podcast/Modal.vue:36
+#: src/components/audio/track/Modal.vue:36
+#: src/components/favorites/TrackFavoriteIcon.vue:6
+#: src/components/favorites/TrackFavoriteIcon.vue:12
 msgctxt "Content/Track/*/Verb"
 msgid "Add to favorites"
 msgstr ""
 
-#: front/src/components/playlists/PlaylistModal.vue:5
-#: front/src/components/playlists/PlaylistModal.vue:2
+#: src/components/playlists/PlaylistModal.vue:5
+#: src/components/playlists/PlaylistModal.vue:2
 msgctxt "Popup/Playlist/Title/Verb"
 msgid "Add to playlist"
 msgstr ""
 
-#: front/src/components/audio/PlayButton.vue:24
-#: front/src/components/audio/PlayButton.vue:181
-#: front/src/components/audio/podcast/Modal.vue:300
-#: front/src/components/audio/track/Modal.vue:300
-#: front/src/components/playlists/TrackPlaylistIcon.vue:3
-#: front/src/components/playlists/TrackPlaylistIcon.vue:39
-#: front/src/components/audio/podcast/Modal.vue:302
-#: front/src/components/audio/track/Modal.vue:302
+#: src/components/audio/PlayButton.vue:24
+#: src/components/audio/PlayButton.vue:55
+#: src/components/audio/podcast/Modal.vue:72
+#: src/components/audio/track/Modal.vue:72
+#: src/components/playlists/TrackPlaylistIcon.vue:3
+#: src/components/playlists/TrackPlaylistIcon.vue:15
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Add to playlist…"
 msgstr ""
 
-#: front/src/components/audio/PlayButton.vue:11
+#: src/components/audio/PlayButton.vue:11
 msgctxt "*/Queue/Dropdown/Button/Label/Short"
 msgid "Add to queue"
 msgstr ""
 
-#: front/src/components/audio/podcast/Modal.vue:295
-#: front/src/components/audio/track/Modal.vue:295
-#: front/src/components/audio/podcast/Modal.vue:297
-#: front/src/components/audio/track/Modal.vue:297
+#: src/components/audio/podcast/Modal.vue:67
+#: src/components/audio/track/Modal.vue:67
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Add to queue"
 msgstr ""
 
-#: front/src/components/playlists/PlaylistModal.vue:228
+#: src/components/playlists/PlaylistModal.vue:32
 msgctxt "Popup/Playlist/Table.Button.Tooltip/Verb"
 msgid "Add to this playlist"
 msgstr ""
 
-#: front/src/components/playlists/PlaylistModal.vue:99
+#: src/components/playlists/PlaylistModal.vue:99
 msgctxt "Popup/Playlist/Table.Button.Label/Verb"
 msgid "Add track"
 msgstr ""
 
-#: front/src/components/admin/SignupFormBuilder.vue:213
+#: src/components/admin/SignupFormBuilder.vue:50
 msgctxt "*/*/Form-builder"
 msgid "Additional field"
 msgstr ""
 
-#: front/src/components/admin/SignupFormBuilder.vue:32
+#: src/components/admin/SignupFormBuilder.vue:32
 msgctxt "*/*/Label"
 msgid "Additional fields"
 msgstr ""
 
-#: front/src/components/admin/SignupFormBuilder.vue:35
+#: src/components/admin/SignupFormBuilder.vue:35
 msgctxt "*/*/Help"
 msgid "Additional form fields to be displayed in the form. Only shown if manual sign-up validation is enabled."
 msgstr ""
 
-#: front/src/components/audio/VolumeControl.vue:76
+#: src/components/audio/VolumeControl.vue:24
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Adjust volume"
 msgstr ""
 
-#: front/src/components/manage/users/UsersTable.vue:108
-#: front/src/components/manage/users/UsersTable.vue:33
+#: src/components/manage/users/UsersTable.vue:108
+#: src/components/manage/users/UsersTable.vue:33
 msgctxt "Content/Admin/Table.User role"
 msgid "Admin"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:19 src/components/Sidebar.vue:541
+#: src/components/Sidebar.vue:19
+#: src/components/Sidebar.vue:75
 msgctxt "Sidebar/Admin/Title/Noun"
 msgid "Administration"
 msgstr ""
 
-#: front/src/components/AboutPod.vue:237 src/components/AboutPod.vue:25
+#: src/components/AboutPod.vue:237
+#: src/components/AboutPod.vue:25
 msgctxt "Content/About/*"
 msgid "album"
 msgid_plural "albums"
 msgstr[0] ""
 msgstr[1] ""
 
-#: front/src/components/audio/SearchBar.vue:43
-#: front/src/components/channels/AlbumSelect.vue:4
-#: front/src/components/library/AlbumBase.vue:312
-#: front/src/components/library/ArtistBase.vue:269
-#: front/src/components/manage/library/TracksTable.vue:47
-#: front/src/components/manage/library/TracksTable.vue:7
-#: front/src/components/mixins/Report.vue:44
-#: front/src/views/admin/library/TrackDetail.vue:128
-#: front/src/views/admin/library/TrackDetail.vue:123
-#: front/src/views/content/libraries/FilesTable.vue:104
-#: front/src/views/content/libraries/FilesTable.vue:12
-#: front/src/components/mixins/Report.vue:45
+#: src/components/audio/SearchBar.vue:20
+#: src/components/channels/AlbumSelect.vue:4
+#: src/components/library/AlbumBase.vue:64
+#: src/components/library/ArtistBase.vue:53
+#: src/components/manage/library/TracksTable.vue:47
+#: src/components/manage/library/TracksTable.vue:7
+#: src/components/mixins/Report.vue:44
+#: src/views/admin/library/TrackDetail.vue:128
+#: src/views/admin/library/TrackDetail.vue:123
+#: src/views/content/libraries/FilesTable.vue:104
+#: src/views/content/libraries/FilesTable.vue:12
 msgctxt "*/*/*"
 msgid "Album"
 msgstr ""
 
-#: front/src/components/audio/podcast/Table.vue:122
-#: front/src/components/audio/track/Table.vue:210
-#: front/src/components/library/TrackDetail.vue:120
+#: src/components/audio/podcast/Table.vue:43
+#: src/components/audio/track/Table.vue:54
+#: src/components/library/TrackDetail.vue:121
 msgctxt "*/*/*/Noun"
 msgid "Album"
 msgstr ""
 
-#: front/src/views/admin/library/TrackDetail.vue:153
-#: front/src/views/admin/library/TrackDetail.vue:148
+#: src/views/admin/library/TrackDetail.vue:153
+#: src/views/admin/library/TrackDetail.vue:148
 msgctxt "*/*/*/Noun"
 msgid "Album artist"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:108
-#: front/src/views/admin/library/AlbumDetail.vue:103
+#: src/views/admin/library/AlbumDetail.vue:108
+#: src/views/admin/library/AlbumDetail.vue:103
 msgctxt "Content/Moderation/Title"
 msgid "Album data"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:76
-#: front/src/components/mixins/Translations.vue:77
+#: src/components/mixins/Translations.vue:76
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Album name"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:166 src/components/Sidebar.vue:201
-#: front/src/components/audio/Search.vue:32 src/components/audio/Search.vue:2
-#: front/src/components/library/Albums.vue:190
-#: front/src/components/library/TagDetail.vue:40
-#: front/src/components/library/TagDetail.vue:2
-#: front/src/components/manage/ChannelsTable.vue:76
-#: front/src/components/manage/ChannelsTable.vue:17
-#: front/src/components/manage/library/ArtistsTable.vue:71
-#: front/src/components/manage/library/ArtistsTable.vue:12
-#: front/src/components/manage/library/TagsTable.vue:53
-#: front/src/components/manage/library/TagsTable.vue:12 src/views/Search.vue:221
-#: front/src/views/admin/ChannelDetail.vue:321 src/views/admin/ChannelDetail.vue:316
-#: front/src/views/admin/library/AlbumsList.vue:29
-#: front/src/views/admin/library/ArtistDetail.vue:314
-#: front/src/views/admin/library/ArtistDetail.vue:309
-#: front/src/views/admin/library/Base.vue:19
-#: front/src/views/admin/library/LibraryDetail.vue:264
-#: front/src/views/admin/library/LibraryDetail.vue:259
-#: front/src/views/admin/library/TagDetail.vue:152
-#: front/src/views/admin/library/TagDetail.vue:147
-#: front/src/views/admin/moderation/AccountsDetail.vue:430
-#: front/src/views/admin/moderation/AccountsDetail.vue:425
-#: front/src/views/admin/moderation/DomainsDetail.vue:354
-#: front/src/views/admin/moderation/DomainsDetail.vue:349
-#: front/src/views/channels/DetailOverview.vue:73
-#: front/src/views/library/DetailBase.vue:101
+#: src/components/Sidebar.vue:166
+#: src/components/Sidebar.vue:201
+#: src/components/audio/Search.vue:32
+#: src/components/audio/Search.vue:2
+#: src/components/library/Albums.vue:41
+#: src/components/library/TagDetail.vue:40
+#: src/components/library/TagDetail.vue:2
+#: src/components/manage/ChannelsTable.vue:76
+#: src/components/manage/ChannelsTable.vue:17
+#: src/components/manage/library/ArtistsTable.vue:71
+#: src/components/manage/library/ArtistsTable.vue:12
+#: src/components/manage/library/TagsTable.vue:53
+#: src/components/manage/library/TagsTable.vue:12
+#: src/views/Search.vue:82
+#: src/views/admin/ChannelDetail.vue:321
+#: src/views/admin/ChannelDetail.vue:316
+#: src/views/admin/library/AlbumsList.vue:13
+#: src/views/admin/library/ArtistDetail.vue:314
+#: src/views/admin/library/ArtistDetail.vue:309
+#: src/views/admin/library/Base.vue:19
+#: src/views/admin/library/LibraryDetail.vue:264
+#: src/views/admin/library/LibraryDetail.vue:259
+#: src/views/admin/library/TagDetail.vue:152
+#: src/views/admin/library/TagDetail.vue:147
+#: src/views/admin/moderation/AccountsDetail.vue:430
+#: src/views/admin/moderation/AccountsDetail.vue:425
+#: src/views/admin/moderation/DomainsDetail.vue:354
+#: src/views/admin/moderation/DomainsDetail.vue:349
+#: src/views/channels/DetailOverview.vue:73
+#: src/views/library/DetailBase.vue:101
 msgctxt "*/*/*"
 msgid "Albums"
 msgstr ""
 
-#: front/src/components/library/ArtistDetail.vue:39
+#: src/components/library/ArtistDetail.vue:27
 msgctxt "Content/Artist/Title"
 msgid "Albums by this artist"
 msgstr ""
 
-#: front/src/components/manage/ChannelsTable.vue:14
-#: front/src/components/manage/library/ArtistsTable.vue:14
-#: front/src/components/manage/library/EditsCardList.vue:15
-#: front/src/components/manage/library/LibrariesTable.vue:14
-#: front/src/components/manage/library/UploadsTable.vue:14
-#: front/src/components/manage/library/UploadsTable.vue:33
-#: front/src/components/manage/moderation/DomainsTable.vue:12
-#: front/src/components/manage/users/InvitationsTable.vue:20
-#: front/src/components/moderation/ReportCategoryDropdown.vue:47
-#: front/src/views/admin/moderation/ReportsList.vue:21
-#: front/src/views/admin/moderation/RequestsList.vue:21
-#: front/src/views/content/libraries/FilesTable.vue:18
+#: src/components/manage/ChannelsTable.vue:14
+#: src/components/manage/library/ArtistsTable.vue:14
+#: src/components/manage/library/EditsCardList.vue:15
+#: src/components/manage/library/LibrariesTable.vue:14
+#: src/components/manage/library/UploadsTable.vue:14
+#: src/components/manage/library/UploadsTable.vue:33
+#: src/components/manage/moderation/DomainsTable.vue:12
+#: src/components/manage/users/InvitationsTable.vue:20
+#: src/components/moderation/ReportCategoryDropdown.vue:19
+#: src/views/admin/moderation/ReportsList.vue:21
+#: src/views/admin/moderation/RequestsList.vue:21
+#: src/views/content/libraries/FilesTable.vue:18
 msgctxt "Content/*/Dropdown"
 msgid "All"
 msgstr ""
 
-#: front/src/components/common/ActionTable.vue:56
+#: src/components/common/ActionTable.vue:56
 msgctxt "Content/*/Paragraph"
 msgid "All %{ count } element selected"
 msgid_plural "All %{ count } elements selected"
 msgstr[0] ""
 msgstr[1] ""
 
-#: front/src/views/channels/DetailBase.vue:243 src/views/channels/DetailBase.vue:238
+#: src/views/channels/DetailBase.vue:245
+#: src/views/channels/DetailBase.vue:240
 msgctxt "Content/Channels/*"
 msgid "All Episodes"
 msgstr ""
 
-#: front/src/components/auth/Authorize.vue:185
+#: src/components/auth/Authorize.vue:41
 msgctxt "Head/Authorize/Title"
 msgid "Allow application"
 msgstr ""
 
-#: front/src/components/AboutPod.vue:129
+#: src/components/AboutPod.vue:129
 msgctxt "*/*/*"
 msgid "Allow-list"
 msgstr ""
 
-#: front/src/components/library/ImportStatusModal.vue:25
+#: src/components/library/ImportStatusModal.vue:25
 msgctxt "Popup/Import/Message"
 msgid "An error occurred during upload processing. You will find more information below."
 msgstr ""
 
-#: front/src/components/playlists/Editor.vue:17 src/components/playlists/Editor.vue:2
+#: src/components/playlists/Editor.vue:17
+#: src/components/playlists/Editor.vue:2
 msgctxt "Content/Playlist/Error message.Title"
 msgid "An error occurred while saving your changes"
 msgstr ""
 
-#: front/src/components/federation/FetchButton.vue:44
-#: front/src/components/federation/FetchButton.vue:32
+#: src/components/federation/FetchButton.vue:44
+#: src/components/federation/FetchButton.vue:32
 msgctxt "Popup/*/Message.Content"
 msgid "An error occurred while trying to refresh data:"
 msgstr ""
 
-#: front/src/components/federation/FetchButton.vue:70
-#: front/src/components/federation/FetchButton.vue:58
+#: src/components/federation/FetchButton.vue:70
+#: src/components/federation/FetchButton.vue:58
 msgctxt "*/*/Error"
 msgid "An HTTP error occurred while contacting the remote server"
 msgstr ""
 
-#: front/src/components/admin/SignupFormBuilder.vue:24
+#: src/components/admin/SignupFormBuilder.vue:24
 msgctxt "*/*/Help"
 msgid "An optional text to be displayed at the start of the sign-up form."
 msgstr ""
 
-#: front/src/components/library/ImportStatusModal.vue:204
+#: src/components/library/ImportStatusModal.vue:70
 msgctxt "Popup/Import/Error.Label"
 msgid "An unknown error occurred"
 msgstr ""
 
-#: front/src/components/AboutPod.vue:154
+#: src/components/AboutPod.vue:154
 msgctxt "*/*/*"
 msgid "Anonymous access"
 msgstr ""
 
-#: front/src/components/moderation/ReportModal.vue:74
+#: src/components/moderation/ReportModal.vue:74
 msgctxt "Popup/Moderation/Error message"
 msgid "Anonymous reports are disabled, please sign-in to submit a report."
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:242 src/components/auth/Settings.vue:318
+#: src/components/auth/Settings.vue:242
+#: src/components/auth/Settings.vue:318
 msgctxt "*/*/*/Noun"
 msgid "Application"
 msgstr ""
 
-#: front/src/components/auth/ApplicationEdit.vue:14
-#: front/src/components/auth/ApplicationEdit.vue:7
+#: src/components/auth/ApplicationEdit.vue:14
+#: src/components/auth/ApplicationEdit.vue:7
 msgctxt "Content/Applications/Title"
 msgid "Application details"
 msgstr ""
 
-#: front/src/components/Footer.vue:3
-msgctxt "*/*/*"
-msgid "Application footer"
-msgstr ""
-
-#: front/src/components/auth/ApplicationEdit.vue:25
-#: front/src/components/auth/ApplicationEdit.vue:18
+#: src/components/auth/ApplicationEdit.vue:25
+#: src/components/auth/ApplicationEdit.vue:18
 msgctxt "Content/Applications/Label"
 msgid "Application ID"
 msgstr ""
 
-#: front/src/components/auth/ApplicationEdit.vue:20
-#: front/src/components/auth/ApplicationEdit.vue:13
+#: src/components/auth/ApplicationEdit.vue:20
+#: src/components/auth/ApplicationEdit.vue:13
 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:29
-#: front/src/components/auth/ApplicationEdit.vue:22
+#: src/components/auth/ApplicationEdit.vue:29
+#: src/components/auth/ApplicationEdit.vue:22
 msgctxt "Content/Applications/Label"
 msgid "Application secret"
 msgstr ""
 
-#: front/src/components/library/EditCard.vue:111
-#: front/src/components/manage/moderation/UserRequestCard.vue:152
-#: front/src/components/notifications/NotificationRow.vue:115
+#: src/components/library/EditCard.vue:111
+#: src/components/manage/moderation/UserRequestCard.vue:152
+#: src/components/notifications/NotificationRow.vue:45
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Approve"
 msgstr ""
 
-#: front/src/components/library/EditCard.vue:27
-#: front/src/components/manage/library/EditsCardList.vue:25
-#: front/src/components/manage/moderation/UserRequestCard.vue:64
-#: front/src/components/manage/moderation/UserRequestCard.vue:2
-#: front/src/views/admin/moderation/RequestsList.vue:31
+#: src/components/library/EditCard.vue:27
+#: src/components/manage/library/EditsCardList.vue:25
+#: src/components/manage/moderation/UserRequestCard.vue:64
+#: src/components/manage/moderation/UserRequestCard.vue:2
+#: src/views/admin/moderation/RequestsList.vue:31
 msgctxt "Content/*/*/Short"
 msgid "Approved"
 msgstr ""
 
-#: front/src/components/library/EditCard.vue:23
+#: src/components/library/EditCard.vue:23
 msgctxt "Content/Library/Card/Short"
 msgid "Approved and applied"
 msgstr ""
 
-#: front/src/components/auth/Logout.vue:5
+#: src/components/auth/Logout.vue:5
 msgctxt "Content/Login/Title"
 msgid "Are you sure you want to log out?"
 msgstr ""
 
-#: front/src/components/AboutPod.vue:230 src/components/AboutPod.vue:18
+#: src/components/AboutPod.vue:230
+#: src/components/AboutPod.vue:18
 msgctxt "Content/About/*"
 msgid "artist"
 msgid_plural "artists"
 msgstr[0] ""
 msgstr[1] ""
 
-#: front/src/components/audio/SearchBar.vue:42
-#: front/src/components/audio/podcast/Table.vue:123
-#: front/src/components/audio/track/Table.vue:211
-#: front/src/components/library/TrackDetail.vue:108
-#: front/src/components/manage/library/AlbumsTable.vue:47
-#: front/src/components/manage/library/AlbumsTable.vue:7
-#: front/src/components/manage/library/TracksTable.vue:52
-#: front/src/components/manage/library/TracksTable.vue:12
-#: front/src/components/mixins/Report.vue:71
-#: front/src/views/admin/library/AlbumDetail.vue:128
-#: front/src/views/admin/library/AlbumDetail.vue:123
-#: front/src/views/admin/library/TrackDetail.vue:141
-#: front/src/views/admin/library/TrackDetail.vue:136
-#: front/src/views/content/libraries/FilesTable.vue:99
-#: front/src/views/content/libraries/FilesTable.vue:7
-#: front/src/components/mixins/Report.vue:72 src/entities.js:12
+#: src/components/audio/SearchBar.vue:19
+#: src/components/audio/podcast/Table.vue:44
+#: src/components/audio/track/Table.vue:55
+#: src/components/library/TrackDetail.vue:109
+#: src/components/manage/library/AlbumsTable.vue:47
+#: src/components/manage/library/AlbumsTable.vue:7
+#: src/components/manage/library/TracksTable.vue:52
+#: src/components/manage/library/TracksTable.vue:12
+#: src/components/mixins/Report.vue:71
+#: src/views/admin/library/AlbumDetail.vue:128
+#: src/views/admin/library/AlbumDetail.vue:123
+#: src/views/admin/library/TrackDetail.vue:141
+#: src/views/admin/library/TrackDetail.vue:136
+#: src/views/content/libraries/FilesTable.vue:99
+#: src/views/content/libraries/FilesTable.vue:7
 msgctxt "*/*/*/Noun"
 msgid "Artist"
 msgstr ""
 
-#: front/src/views/auth/ProfileOverview.vue:47 src/views/channels/DetailBase.vue:209
-#: front/src/views/channels/DetailBase.vue:204
+#: src/views/auth/ProfileOverview.vue:47
+#: src/views/channels/DetailBase.vue:211
+#: src/views/channels/DetailBase.vue:206
 msgctxt "Content/Channel/*"
 msgid "Artist channel"
 msgstr ""
 
-#: front/src/views/admin/library/ArtistDetail.vue:107
-#: front/src/views/admin/library/ArtistDetail.vue:102
+#: src/views/admin/library/ArtistDetail.vue:107
+#: src/views/admin/library/ArtistDetail.vue:102
 msgctxt "Content/Moderation/Title"
 msgid "Artist data"
 msgstr ""
 
-#: front/src/components/audio/ChannelForm.vue:309
+#: src/components/audio/ChannelForm.vue:60
 msgctxt "*/*/*"
 msgid "Artist discography"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:77
-#: front/src/components/mixins/Translations.vue:78
+#: src/components/mixins/Translations.vue:77
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Artist name"
 msgstr ""
 
-#: front/src/components/library/Artists.vue:12
+#: src/components/library/Artists.vue:12
 msgctxt "Content/Search/Input.Label/Noun"
 msgid "Artist name"
 msgstr ""
 
-#: front/src/components/audio/Search.vue:99
+#: src/components/audio/Search.vue:28
 msgctxt "*/Search/Input.Placeholder"
 msgid "Artist, album, track…"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:171 src/components/Sidebar.vue:206
-#: front/src/views/library/DetailBase.vue:96
+#: src/components/Sidebar.vue:171
+#: src/components/Sidebar.vue:206
+#: src/views/library/DetailBase.vue:96
 msgctxt "*/*/*"
 msgid "Artists"
 msgstr ""
 
-#: front/src/components/audio/Search.vue:15 src/components/audio/Search.vue:2
-#: front/src/components/library/Artists.vue:207
-#: front/src/components/library/TagDetail.vue:21
-#: front/src/components/library/TagDetail.vue:2
-#: front/src/components/manage/library/TagsTable.vue:48
-#: front/src/components/manage/library/TagsTable.vue:7 src/views/Search.vue:215
-#: front/src/views/admin/library/ArtistsList.vue:29
-#: front/src/views/admin/library/Base.vue:14
-#: front/src/views/admin/library/LibraryDetail.vue:252
-#: front/src/views/admin/library/LibraryDetail.vue:247
-#: front/src/views/admin/library/TagDetail.vue:140
-#: front/src/views/admin/library/TagDetail.vue:135
-#: front/src/views/admin/moderation/AccountsDetail.vue:420
-#: front/src/views/admin/moderation/AccountsDetail.vue:415
-#: front/src/views/admin/moderation/DomainsDetail.vue:342
-#: front/src/views/admin/moderation/DomainsDetail.vue:337
+#: src/components/audio/Search.vue:15
+#: src/components/audio/Search.vue:2
+#: src/components/library/Artists.vue:42
+#: src/components/library/TagDetail.vue:21
+#: src/components/library/TagDetail.vue:2
+#: src/components/manage/library/TagsTable.vue:48
+#: src/components/manage/library/TagsTable.vue:7
+#: src/views/Search.vue:76
+#: src/views/admin/library/ArtistsList.vue:13
+#: src/views/admin/library/Base.vue:14
+#: src/views/admin/library/LibraryDetail.vue:252
+#: src/views/admin/library/LibraryDetail.vue:247
+#: src/views/admin/library/TagDetail.vue:140
+#: src/views/admin/library/TagDetail.vue:135
+#: src/views/admin/moderation/AccountsDetail.vue:420
+#: src/views/admin/moderation/AccountsDetail.vue:415
+#: src/views/admin/moderation/DomainsDetail.vue:342
+#: src/views/admin/moderation/DomainsDetail.vue:337
 msgctxt "*/*/*/Noun"
 msgid "Artists"
 msgstr ""
 
-#: front/src/components/favorites/List.vue:33 src/components/library/Albums.vue:37
-#: front/src/components/library/Artists.vue:37 src/components/library/Podcasts.vue:37
-#: front/src/components/library/Radios.vue:59
-#: front/src/components/manage/ChannelsTable.vue:41
-#: front/src/components/manage/library/AlbumsTable.vue:22
-#: front/src/components/manage/library/ArtistsTable.vue:41
-#: front/src/components/manage/library/EditsCardList.vue:48
-#: front/src/components/manage/library/LibrariesTable.vue:41
-#: front/src/components/manage/library/TagsTable.vue:22
-#: front/src/components/manage/library/TracksTable.vue:22
-#: front/src/components/manage/library/UploadsTable.vue:71
-#: front/src/components/manage/moderation/AccountsTable.vue:22
-#: front/src/components/manage/moderation/DomainsTable.vue:40
-#: front/src/components/manage/users/UsersTable.vue:20
-#: front/src/views/admin/moderation/ReportsList.vue:50
-#: front/src/views/admin/moderation/RequestsList.vue:54
-#: front/src/views/content/libraries/FilesTable.vue:65
-#: front/src/views/playlists/List.vue:39
+#: src/components/favorites/List.vue:33
+#: src/components/library/Albums.vue:37
+#: src/components/library/Artists.vue:37
+#: src/components/library/Podcasts.vue:37
+#: src/components/library/Radios.vue:59
+#: src/components/manage/ChannelsTable.vue:41
+#: src/components/manage/library/AlbumsTable.vue:22
+#: src/components/manage/library/ArtistsTable.vue:41
+#: src/components/manage/library/EditsCardList.vue:48
+#: src/components/manage/library/LibrariesTable.vue:41
+#: src/components/manage/library/TagsTable.vue:22
+#: src/components/manage/library/TracksTable.vue:22
+#: src/components/manage/library/UploadsTable.vue:71
+#: src/components/manage/moderation/AccountsTable.vue:22
+#: src/components/manage/moderation/DomainsTable.vue:40
+#: src/components/manage/users/UsersTable.vue:20
+#: src/views/admin/moderation/ReportsList.vue:50
+#: src/views/admin/moderation/RequestsList.vue:54
+#: src/views/content/libraries/FilesTable.vue:65
+#: src/views/playlists/List.vue:39
 msgctxt "Content/Search/Dropdown"
 msgid "Ascending"
 msgstr ""
 
-#: front/src/views/auth/PasswordReset.vue:37
+#: src/views/auth/PasswordReset.vue:37
 msgctxt "Content/Signup/Button.Label/Verb"
 msgid "Ask for a password reset"
 msgstr ""
 
-#: front/src/components/manage/moderation/ReportCard.vue:82
-#: front/src/components/manage/moderation/UserRequestCard.vue:72
+#: src/components/manage/moderation/ReportCard.vue:82
+#: src/components/manage/moderation/UserRequestCard.vue:72
 msgctxt "Content/Moderation/*"
 msgid "Assigned to"
 msgstr ""
 
-#: front/src/views/admin/ChannelDetail.vue:272 src/views/admin/ChannelDetail.vue:267
-#: front/src/views/admin/library/AlbumDetail.vue:253
-#: front/src/views/admin/library/AlbumDetail.vue:248
-#: front/src/views/admin/library/ArtistDetail.vue:252
-#: front/src/views/admin/library/ArtistDetail.vue:247
-#: front/src/views/admin/library/LibraryDetail.vue:215
-#: front/src/views/admin/library/LibraryDetail.vue:210
-#: front/src/views/admin/library/TagDetail.vue:129
-#: front/src/views/admin/library/TagDetail.vue:124
-#: front/src/views/admin/library/TrackDetail.vue:318
-#: front/src/views/admin/library/TrackDetail.vue:313
-#: front/src/views/admin/library/UploadDetail.vue:216
-#: front/src/views/admin/library/UploadDetail.vue:211
-#: front/src/views/admin/moderation/AccountsDetail.vue:329
-#: front/src/views/admin/moderation/AccountsDetail.vue:324
-#: front/src/views/admin/moderation/DomainsDetail.vue:269
-#: front/src/views/admin/moderation/DomainsDetail.vue:264
+#: src/views/admin/ChannelDetail.vue:272
+#: src/views/admin/ChannelDetail.vue:267
+#: src/views/admin/library/AlbumDetail.vue:253
+#: src/views/admin/library/AlbumDetail.vue:248
+#: src/views/admin/library/ArtistDetail.vue:252
+#: src/views/admin/library/ArtistDetail.vue:247
+#: src/views/admin/library/LibraryDetail.vue:215
+#: src/views/admin/library/LibraryDetail.vue:210
+#: src/views/admin/library/TagDetail.vue:129
+#: src/views/admin/library/TagDetail.vue:124
+#: src/views/admin/library/TrackDetail.vue:318
+#: src/views/admin/library/TrackDetail.vue:313
+#: src/views/admin/library/UploadDetail.vue:216
+#: src/views/admin/library/UploadDetail.vue:211
+#: src/views/admin/moderation/AccountsDetail.vue:329
+#: src/views/admin/moderation/AccountsDetail.vue:324
+#: src/views/admin/moderation/DomainsDetail.vue:269
+#: src/views/admin/moderation/DomainsDetail.vue:264
 msgctxt "Content/Moderation/Title"
 msgid "Audio content"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:3
+#: src/components/audio/Player.vue:3
 msgctxt "*/*/*"
 msgid "Audio player and controls"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:94
+#: src/components/ShortcutsModal.vue:34
 msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "Audio player shortcuts"
 msgstr ""
 
-#: front/src/components/auth/Authorize.vue:64
+#: src/components/auth/Authorize.vue:64
 msgctxt "Content/Signup/Button.Label/Verb"
 msgid "Authorize %{ app }"
 msgstr ""
 
-#: front/src/components/auth/Authorize.vue:5
+#: src/components/auth/Authorize.vue:5
 msgctxt "Content/Auth/Title/Verb"
 msgid "Authorize third-party app"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:222
+#: src/components/auth/Settings.vue:222
 msgctxt "Content/Settings/Title/Noun"
 msgid "Authorized apps"
 msgstr ""
 
-#: front/src/components/playlists/PlaylistModal.vue:49
+#: src/components/playlists/PlaylistModal.vue:49
 msgctxt "Popup/Playlist/Title"
 msgid "Available playlists"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:70
+#: src/components/auth/Settings.vue:70
 msgctxt "Content/Channel/*"
 msgid "Avatar"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:51
+#: src/components/auth/Settings.vue:51
 msgctxt "Content/Settings/Title"
 msgid "Avatar"
 msgstr ""
 
-#: front/src/components/audio/ChannelForm.vue:325
+#: src/components/audio/ChannelForm.vue:76
 msgctxt "Content/Channel/Form.Field.Placeholder"
 msgid "Awesome channel name"
 msgstr ""
 
-#: front/src/components/audio/ChannelForm.vue:326
+#: src/components/audio/ChannelForm.vue:77
 msgctxt "Content/Channel/Form.Field.Placeholder"
 msgid "awesomechannelname"
 msgstr ""
 
-#: front/src/views/auth/PasswordReset.vue:32
-#: front/src/views/auth/PasswordResetConfirm.vue:24
-#: front/src/views/auth/PasswordResetConfirm.vue:6
+#: src/views/auth/PasswordReset.vue:32
+#: src/views/auth/PasswordResetConfirm.vue:24
+#: src/views/auth/PasswordResetConfirm.vue:6
 msgctxt "Content/Signup/Link"
 msgid "Back to login"
 msgstr ""
 
-#: front/src/components/auth/ApplicationEdit.vue:9
-#: front/src/components/auth/ApplicationEdit.vue:2
-#: front/src/components/auth/ApplicationNew.vue:5
+#: src/components/auth/ApplicationEdit.vue:9
+#: src/components/auth/ApplicationEdit.vue:2
+#: src/components/auth/ApplicationNew.vue:5
 msgctxt "Content/Applications/Link"
 msgid "Back to settings"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:56
-#: front/src/components/mixins/Translations.vue:57
+#: src/components/mixins/Translations.vue:56
 msgctxt "Content/Account/*"
 msgid "Bio"
 msgstr ""
 
-#: front/src/components/library/TrackDetail.vue:65
-#: front/src/components/library/TrackDetail.vue:60
-#: front/src/components/mixins/Translations.vue:82
-#: front/src/views/admin/library/UploadDetail.vue:262
-#: front/src/views/admin/library/UploadDetail.vue:257
-#: front/src/components/mixins/Translations.vue:83
+#: src/components/library/TrackDetail.vue:66
+#: src/components/library/TrackDetail.vue:61
+#: src/components/mixins/Translations.vue:82
+#: src/views/admin/library/UploadDetail.vue:262
+#: src/views/admin/library/UploadDetail.vue:257
 msgctxt "Content/Track/*/Noun"
 msgid "Bitrate"
 msgstr ""
 
-#: front/src/components/manage/moderation/InstancePolicyCard.vue:23
-#: front/src/components/manage/moderation/InstancePolicyForm.vue:44
+#: src/components/manage/moderation/InstancePolicyCard.vue:23
+#: src/components/manage/moderation/InstancePolicyForm.vue:44
 msgctxt "Content/Moderation/*/Verb"
 msgid "Block everything"
 msgstr ""
 
-#: front/src/components/manage/moderation/InstancePolicyForm.vue:206
+#: src/components/manage/moderation/InstancePolicyForm.vue:36
 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:156 src/components/Sidebar.vue:196
+#: src/components/Sidebar.vue:156
+#: src/components/Sidebar.vue:196
 msgctxt "Sidebar/Navigation/List item.Link/Verb"
 msgid "Browse"
 msgstr ""
 
-#: front/src/components/About.vue:135
+#: src/components/About.vue:140
 msgctxt "Content/About/Header"
 msgid "Browse public content"
 msgstr ""
 
-#: front/src/components/Home.vue:163
+#: src/components/Home.vue:163
 msgctxt "Content/Home/Link"
 msgid "Browse public content"
 msgstr ""
 
-#: front/src/components/favorites/List.vue:74
+#: src/components/favorites/List.vue:74
 msgctxt "Content/*/Verb"
 msgid "Browse the library"
 msgstr ""
 
-#: front/src/components/channels/UploadForm.vue:136
-#: front/src/components/channels/UploadForm.vue:101
-#: front/src/components/channels/UploadForm.vue:90
+#: src/components/channels/UploadForm.vue:136
+#: src/components/channels/UploadForm.vue:101
+#: src/components/channels/UploadForm.vue:90
 msgctxt "*/*/*"
 msgid "Browse…"
 msgstr ""
 
-#: front/src/components/library/Albums.vue:4
+#: src/components/library/Albums.vue:4
 msgctxt "Content/Album/Title"
 msgid "Browsing albums"
 msgstr ""
 
-#: front/src/components/library/Artists.vue:4
+#: src/components/library/Artists.vue:4
 msgctxt "Content/Artist/Title"
 msgid "Browsing artists"
 msgstr ""
 
-#: front/src/views/playlists/List.vue:4
+#: src/views/playlists/List.vue:4
 msgctxt "Content/Playlist/Title"
 msgid "Browsing playlists"
 msgstr ""
 
-#: front/src/components/library/Podcasts.vue:4
+#: src/components/library/Podcasts.vue:4
 msgctxt "Content/Podcasts/Title"
 msgid "Browsing podcasts"
 msgstr ""
 
-#: front/src/components/library/Radios.vue:4
+#: src/components/library/Radios.vue:4
 msgctxt "Content/Radio/Title"
 msgid "Browsing radios"
 msgstr ""
 
-#: front/src/components/library/radios/Builder.vue:5
+#: src/components/library/radios/Builder.vue:5
 msgctxt "Content/Radio/Title"
 msgid "Builder"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:135 src/views/content/remote/Card.vue:31
-#: front/src/views/content/remote/Card.vue:12
+#: src/views/content/remote/Card.vue:135
+#: src/views/content/remote/Card.vue:31
+#: src/views/content/remote/Card.vue:12
 msgctxt "Popup/Library/Paragraph"
 msgid "By unfollowing this library, you loose access to its content."
 msgstr ""
 
-#: front/src/views/admin/ChannelDetail.vue:288 src/views/admin/ChannelDetail.vue:283
-#: front/src/views/admin/library/AlbumDetail.vue:269
-#: front/src/views/admin/library/AlbumDetail.vue:264
-#: front/src/views/admin/library/ArtistDetail.vue:268
-#: front/src/views/admin/library/ArtistDetail.vue:263
-#: front/src/views/admin/library/LibraryDetail.vue:231
-#: front/src/views/admin/library/LibraryDetail.vue:226
-#: front/src/views/admin/library/TrackDetail.vue:334
-#: front/src/views/admin/library/TrackDetail.vue:329
-#: front/src/views/admin/library/UploadDetail.vue:237
-#: front/src/views/admin/library/UploadDetail.vue:232
-#: front/src/views/admin/moderation/AccountsDetail.vue:345
-#: front/src/views/admin/moderation/AccountsDetail.vue:340
-#: front/src/views/admin/moderation/DomainsDetail.vue:285
-#: front/src/views/admin/moderation/DomainsDetail.vue:280
+#: src/views/admin/ChannelDetail.vue:288
+#: src/views/admin/ChannelDetail.vue:283
+#: src/views/admin/library/AlbumDetail.vue:269
+#: src/views/admin/library/AlbumDetail.vue:264
+#: src/views/admin/library/ArtistDetail.vue:268
+#: src/views/admin/library/ArtistDetail.vue:263
+#: src/views/admin/library/LibraryDetail.vue:231
+#: src/views/admin/library/LibraryDetail.vue:226
+#: src/views/admin/library/TrackDetail.vue:334
+#: src/views/admin/library/TrackDetail.vue:329
+#: src/views/admin/library/UploadDetail.vue:237
+#: src/views/admin/library/UploadDetail.vue:232
+#: src/views/admin/moderation/AccountsDetail.vue:345
+#: src/views/admin/moderation/AccountsDetail.vue:340
+#: src/views/admin/moderation/DomainsDetail.vue:285
+#: src/views/admin/moderation/DomainsDetail.vue:280
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Cached size"
 msgstr ""
 
-#: front/src/components/SetInstanceModal.vue:64
-#: front/src/components/channels/AlbumModal.vue:15
-#: front/src/components/channels/UploadModal.vue:34
-#: front/src/components/common/DangerousButton.vue:19
-#: front/src/components/common/RenderedDescription.vue:41
-#: front/src/components/library/AlbumDropdown.vue:15
-#: front/src/components/library/ArtistBase.vue:46
-#: front/src/components/library/ArtistBase.vue:41
-#: front/src/components/library/EditForm.vue:123
-#: front/src/components/library/FileUpload.vue:194
-#: front/src/components/library/FileUpload.vue:18
-#: front/src/components/library/Podcasts.vue:108
-#: front/src/components/library/TrackBase.vue:40
-#: front/src/components/library/TrackBase.vue:35
-#: front/src/components/library/radios/Filter.vue:49
-#: front/src/components/manage/moderation/InstancePolicyForm.vue:66
-#: front/src/components/moderation/FilterModal.vue:59
-#: front/src/components/moderation/ReportModal.vue:82
-#: front/src/components/playlists/PlaylistModal.vue:26
-#: front/src/components/playlists/PlaylistModal.vue:130
-#: front/src/views/auth/ProfileOverview.vue:57 src/views/channels/DetailBase.vue:87
-#: front/src/views/channels/DetailBase.vue:198 src/views/channels/DetailBase.vue:219
-#: front/src/views/channels/DetailBase.vue:82 src/views/channels/DetailBase.vue:193
-#: front/src/views/channels/DetailBase.vue:214
-#: front/src/views/channels/SubscriptionsList.vue:23
-#: front/src/views/playlists/Detail.vue:83
+#: src/components/SetInstanceModal.vue:64
+#: src/components/channels/AlbumModal.vue:15
+#: src/components/channels/UploadModal.vue:34
+#: src/components/common/DangerousButton.vue:19
+#: src/components/common/RenderedDescription.vue:41
+#: src/components/library/AlbumDropdown.vue:15
+#: src/components/library/ArtistBase.vue:46
+#: src/components/library/ArtistBase.vue:41
+#: src/components/library/EditForm.vue:123
+#: src/components/library/FileUpload.vue:194
+#: src/components/library/FileUpload.vue:18
+#: src/components/library/Podcasts.vue:108
+#: src/components/library/TrackBase.vue:40
+#: src/components/library/TrackBase.vue:35
+#: src/components/library/radios/Filter.vue:49
+#: src/components/manage/moderation/InstancePolicyForm.vue:66
+#: src/components/moderation/FilterModal.vue:59
+#: src/components/moderation/ReportModal.vue:82
+#: src/components/playlists/PlaylistModal.vue:26
+#: src/components/playlists/PlaylistModal.vue:130
+#: src/views/auth/ProfileOverview.vue:57
+#: src/views/channels/DetailBase.vue:87
+#: src/views/channels/DetailBase.vue:200
+#: src/views/channels/DetailBase.vue:221
+#: src/views/channels/DetailBase.vue:82
+#: src/views/channels/DetailBase.vue:195
+#: src/views/channels/DetailBase.vue:216
+#: src/views/channels/SubscriptionsList.vue:23
+#: src/views/playlists/Detail.vue:83
 msgctxt "*/*/Button.Label/Verb"
 msgid "Cancel"
 msgstr ""
 
-#: front/src/components/audio/LibraryFollowButton.vue:6
+#: src/components/audio/LibraryFollowButton.vue:6
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Cancel follow request"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:118 src/views/content/remote/Card.vue:14
-#: front/src/views/content/remote/Card.vue:8
+#: src/views/content/remote/Card.vue:118
+#: src/views/content/remote/Card.vue:14
+#: src/views/content/remote/Card.vue:8
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Cancel follow request"
 msgstr ""
 
-#: front/src/components/library/radios/Builder.vue:93
+#: src/components/library/radios/Builder.vue:93
 msgctxt "Content/Radio/Table.Label/Noun (Value is a number of Tracks)"
 msgid "Candidates"
 msgstr ""
 
-#: front/src/components/library/FileUpload.vue:367
-#: front/src/components/library/FileUpload.vue:368
+#: src/components/library/FileUpload.vue:59
 msgctxt "Content/Library/Help text"
 msgid "Cannot upload this file, ensure it is not too big"
 msgstr ""
 
-#: front/src/components/audio/ChannelForm.vue:100
-#: front/src/components/audio/ChannelForm.vue:86
-#: front/src/components/audio/ChannelForm.vue:66
-#: front/src/components/manage/ChannelsTable.vue:11
-#: front/src/components/manage/library/ArtistsTable.vue:11
-#: front/src/components/manage/moderation/ReportCard.vue:34
-#: front/src/components/mixins/Translations.vue:46
-#: front/src/components/moderation/ReportCategoryDropdown.vue:2
-#: front/src/views/admin/ChannelDetail.vue:115 src/views/admin/ChannelDetail.vue:110
-#: front/src/views/admin/library/ArtistDetail.vue:127
-#: front/src/views/admin/library/ArtistDetail.vue:122
-#: front/src/components/mixins/Translations.vue:47
+#: src/components/audio/ChannelForm.vue:100
+#: src/components/audio/ChannelForm.vue:86
+#: src/components/audio/ChannelForm.vue:66
+#: src/components/manage/ChannelsTable.vue:11
+#: src/components/manage/library/ArtistsTable.vue:11
+#: src/components/manage/moderation/ReportCard.vue:34
+#: src/components/mixins/Translations.vue:46
+#: src/components/moderation/ReportCategoryDropdown.vue:2
+#: src/views/admin/ChannelDetail.vue:115
+#: src/views/admin/ChannelDetail.vue:110
+#: src/views/admin/library/ArtistDetail.vue:127
+#: src/views/admin/library/ArtistDetail.vue:122
 msgctxt "*/*/*"
 msgid "Category"
 msgstr ""
 
-#: front/src/components/Footer.vue:41 src/components/common/UserMenu.vue:170
+#: src/components/common/UserMenu.vue:23
 msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
 msgid "Change language"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:412
+#: src/components/auth/Settings.vue:412
 msgctxt "*/*/Button.Label"
 msgid "Change my e-mail address"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:80
+#: src/components/auth/Settings.vue:80
 msgctxt "Content/Settings/Title/Verb"
 msgid "Change my password"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:115
+#: src/components/auth/Settings.vue:115
 msgctxt "Content/Settings/Button.Label"
 msgid "Change password"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:418
+#: src/components/auth/Settings.vue:418
 msgctxt "Content/Settings/Paragraph'"
 msgid "Change the e-mail address associated with your account. We will send a confirmation to the new address."
 msgstr ""
 
-#: front/src/components/Footer.vue:61 src/components/common/UserMenu.vue:171
+#: src/components/common/UserMenu.vue:24
 msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
 msgid "Change theme"
 msgstr ""
 
-#: front/src/views/auth/PasswordResetConfirm.vue:113
+#: src/views/auth/PasswordResetConfirm.vue:25
 msgctxt "*/Signup/Title"
 msgid "Change your password"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:119
+#: src/components/auth/Settings.vue:119
 msgctxt "Popup/Settings/Title"
 msgid "Change your password?"
 msgstr ""
 
-#: front/src/components/playlists/Editor.vue:44 src/components/playlists/Editor.vue:1
+#: src/components/playlists/Editor.vue:44
+#: src/components/playlists/Editor.vue:1
 msgctxt "Content/Playlist/Paragraph"
 msgid "Changes synced with server"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:85
+#: src/components/auth/Settings.vue:85
 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:125
+#: src/components/auth/Settings.vue:125
 msgctxt "Popup/Settings/Paragraph"
 msgid "Changing your password will have the following consequences:"
 msgstr ""
 
-#: front/src/components/channels/UploadForm.vue:16
-#: front/src/components/mixins/Report.vue:60 src/views/channels/DetailBase.vue:493
-#: front/src/components/mixins/Report.vue:61
+#: src/components/channels/UploadForm.vue:16
+#: src/components/mixins/Report.vue:60
+#: src/views/channels/DetailBase.vue:56
 msgctxt "*/*/*"
 msgid "Channel"
 msgstr ""
 
-#: front/src/views/admin/ChannelDetail.vue:95 src/views/admin/ChannelDetail.vue:90
+#: src/views/admin/ChannelDetail.vue:95
+#: src/views/admin/ChannelDetail.vue:90
 msgctxt "Content/Moderation/Title"
 msgid "Channel data"
 msgstr ""
 
-#: front/src/components/audio/ChannelForm.vue:62
-#: front/src/components/audio/ChannelForm.vue:48
-#: front/src/components/audio/ChannelForm.vue:28
+#: src/components/audio/ChannelForm.vue:62
+#: src/components/audio/ChannelForm.vue:48
+#: src/components/audio/ChannelForm.vue:28
 msgctxt "Content/Channel/*"
 msgid "Channel Picture"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:228 src/components/library/TagDetail.vue:30
-#: front/src/views/admin/ChannelsList.vue:29 src/views/admin/Settings.vue:73
-#: front/src/views/admin/library/Base.vue:9
-#: front/src/views/admin/moderation/AccountsDetail.vue:385
-#: front/src/views/admin/moderation/AccountsDetail.vue:380
-#: front/src/views/admin/moderation/DomainsDetail.vue:306
-#: front/src/views/admin/moderation/DomainsDetail.vue:301
-#: front/src/views/auth/ProfileOverview.vue:8
+#: src/components/Sidebar.vue:228
+#: src/components/library/TagDetail.vue:30
+#: src/views/admin/ChannelsList.vue:13
+#: src/views/admin/Settings.vue:29
+#: src/views/admin/library/Base.vue:9
+#: src/views/admin/moderation/AccountsDetail.vue:385
+#: src/views/admin/moderation/AccountsDetail.vue:380
+#: src/views/admin/moderation/DomainsDetail.vue:306
+#: src/views/admin/moderation/DomainsDetail.vue:301
+#: src/views/auth/ProfileOverview.vue:8
 msgctxt "*/*/*"
 msgid "Channels"
 msgstr ""
 
-#: front/src/components/Footer.vue:76
-msgctxt "Footer/*/List item.Link"
-msgid "Chat room"
-msgstr ""
-
-#: front/src/components/common/UserMenu.vue:172
-#: front/src/components/common/UserModal.vue:208
+#: src/components/common/UserMenu.vue:25
+#: src/components/common/UserModal.vue:40
 msgctxt "Sidebar/*/Listitem.Link"
 msgid "Chat room"
 msgstr ""
 
-#: front/src/components/auth/ApplicationForm.vue:30
+#: src/components/auth/ApplicationForm.vue:30
 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:3
+#: src/components/SetInstanceModal.vue:3
 msgctxt "Popup/Instance/Title"
 msgid "Choose your instance"
 msgstr ""
 
-#: front/src/components/Queue.vue:106
+#: src/components/Queue.vue:106
 msgctxt "*/Queue/*/Verb"
 msgid "Clear"
 msgstr ""
 
-#: front/src/components/common/InlineSearchBar.vue:46
-#: front/src/components/library/EditForm.vue:85
-#: front/src/components/library/EditForm.vue:104
-#: front/src/components/library/EditForm.vue:15 src/components/library/EditForm.vue:5
-#: front/src/components/manage/users/InvitationForm.vue:56
+#: src/components/common/InlineSearchBar.vue:10
+#: src/components/library/EditForm.vue:85
+#: src/components/library/EditForm.vue:104
+#: src/components/library/EditForm.vue:15
+#: src/components/library/EditForm.vue:5
+#: src/components/manage/users/InvitationForm.vue:56
 msgctxt "Content/Library/Button.Label"
 msgid "Clear"
 msgstr ""
 
-#: front/src/components/playlists/Editor.vue:58
-#: front/src/components/playlists/Editor.vue:70
+#: src/components/playlists/Editor.vue:58
+#: src/components/playlists/Editor.vue:70
 msgctxt "*/Playlist/Button.Label/Verb"
 msgid "Clear playlist"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:150
+#: src/components/ShortcutsModal.vue:90
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Clear queue"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:423
+#: src/components/audio/Player.vue:83
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Clear your queue"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:21
-#: front/src/components/mixins/Translations.vue:22
+#: src/components/mixins/Translations.vue:21
 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:73
+#: src/components/library/FileUpload.vue:73
 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/ShortcutsModal.vue:35
-#: front/src/components/channels/UploadModal.vue:71
-#: front/src/components/federation/FetchButton.vue:138
-#: front/src/components/library/ImportStatusModal.vue:97
-#: front/src/components/manage/moderation/InstancePolicyModal.vue:33
+#: src/components/ShortcutsModal.vue:35
+#: src/components/channels/UploadModal.vue:71
+#: src/components/federation/FetchButton.vue:138
+#: src/components/library/ImportStatusModal.vue:97
+#: src/components/manage/moderation/InstancePolicyModal.vue:33
 msgctxt "*/*/Button.Label/Verb"
 msgid "Close"
 msgstr ""
 
-#: front/src/components/Queue.vue:101
+#: src/components/Queue.vue:101
 msgctxt "*/Queue/*/Verb"
 msgid "Close"
 msgstr ""
 
-#: front/src/components/federation/FetchButton.vue:143
+#: src/components/federation/FetchButton.vue:143
 msgctxt "*/*/Button.Label/Verb"
 msgid "Close and reload page"
 msgstr ""
 
-#: front/src/components/AboutPod.vue:186
+#: src/components/AboutPod.vue:186
 msgctxt "*/*/*/State of registrations"
 msgid "Closed"
 msgstr ""
 
-#: front/src/components/manage/users/InvitationForm.vue:35
-#: front/src/components/manage/users/InvitationsTable.vue:65
-#: front/src/components/manage/users/InvitationsTable.vue:22
+#: src/components/manage/users/InvitationForm.vue:35
+#: src/components/manage/users/InvitationsTable.vue:65
+#: src/components/manage/users/InvitationsTable.vue:22
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Code"
 msgstr ""
 
-#: front/src/components/library/TrackDetail.vue:50
-#: front/src/components/library/TrackDetail.vue:45
+#: src/components/library/TrackDetail.vue:51
+#: src/components/library/TrackDetail.vue:46
 msgctxt "Content/*/*/Noun"
 msgid "Codec"
 msgstr ""
 
-#: front/src/components/common/CollapseLink.vue:3
+#: src/components/common/CollapseLink.vue:3
 msgctxt "*/*/Button,Label"
 msgid "Collapse"
 msgstr ""
 
-#: front/src/components/library/radios/Builder.vue:88
+#: src/components/library/radios/Builder.vue:88
 msgctxt "Content/Radio/Table.Label/Verb (Value is a List of Parameters)"
 msgid "Config"
 msgstr ""
 
-#: front/src/components/common/DangerousButton.vue:25
+#: src/components/common/DangerousButton.vue:25
 msgctxt "Modal/*/Button.Label/Short, Verb"
 msgid "Confirm"
 msgstr ""
 
-#: front/src/views/auth/EmailConfirm.vue:96
+#: src/views/auth/EmailConfirm.vue:16
 msgctxt "Head/Signup/Title"
 msgid "Confirm your e-mail address"
 msgstr ""
 
-#: front/src/views/auth/EmailConfirm.vue:19
+#: src/views/auth/EmailConfirm.vue:19
 msgctxt "Content/Signup/Form.Label"
 msgid "Confirmation code"
 msgstr ""
 
-#: front/src/components/AboutPod.vue:266 src/components/AboutPod.vue:2
+#: src/components/AboutPod.vue:266
+#: src/components/AboutPod.vue:2
 msgctxt "Content/About/Header"
 msgid "Contact"
 msgstr ""
 
-#: front/src/components/Home.vue:77 src/components/Home.vue:2
+#: src/components/Home.vue:77
+#: src/components/Home.vue:2
 msgctxt "Content/Home/Header/Name"
 msgid "Contact"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:59
-#: front/src/components/mixins/Translations.vue:60
+#: src/components/mixins/Translations.vue:59
 msgctxt "Content/*/Dropdown.Label/Noun"
 msgid "Content category"
 msgstr ""
 
-#: front/src/components/moderation/FilterModal.vue:134
+#: src/components/moderation/FilterModal.vue:43
 msgctxt "*/Moderation/Message"
 msgid "Content filter successfully added"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:158
-#: front/src/components/mixins/Translations.vue:123
-#: front/src/components/mixins/Translations.vue:124
+#: src/components/auth/Settings.vue:158
+#: src/components/mixins/Translations.vue:123
 msgctxt "Content/Settings/Title/Noun"
 msgid "Content filters"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:164
+#: src/components/auth/Settings.vue:164
 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
+#: src/components/common/ActionTable.vue:8
 msgctxt "Content/*/Button.Help text.Paragraph"
 msgid "Content has been updated, click refresh to see up-to-date content"
 msgstr ""
 
-#: front/src/components/Footer.vue:86
-msgctxt "Footer/*/List item.Link"
-msgid "Contribute"
-msgstr ""
-
-#: front/src/components/audio/EmbedWizard.vue:36
-#: front/src/components/common/CopyInput.vue:10
-#: front/src/components/forms/PasswordInput.vue:50
+#: src/components/audio/EmbedWizard.vue:36
+#: src/components/common/CopyInput.vue:10
+#: src/components/forms/PasswordInput.vue:20
 msgctxt "*/*/Button.Label/Short, Verb"
 msgid "Copy"
 msgstr ""
 
-#: front/src/components/playlists/Editor.vue:207
+#: src/components/playlists/Editor.vue:31
 msgctxt "Content/Playlist/Button.Tooltip/Verb"
 msgid "Copy the current queue to this playlist"
 msgstr ""
 
-#: front/src/components/auth/Authorize.vue:76
+#: src/components/auth/Authorize.vue:76
 msgctxt "Content/Auth/Paragraph"
 msgid "Copy-paste the following code in the application:"
 msgstr ""
 
-#: front/src/views/channels/DetailBase.vue:63 src/views/channels/DetailBase.vue:58
-#: front/src/views/channels/DetailBase.vue:8
+#: src/views/channels/DetailBase.vue:63
+#: src/views/channels/DetailBase.vue:58
+#: src/views/channels/DetailBase.vue:8
 msgctxt "Content/Channels/Label"
 msgid "Copy-paste the following URL in your favorite podcatcher:"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:42
+#: src/components/audio/EmbedWizard.vue:42
 msgctxt "Popup/Embed/Paragraph"
 msgid "Copy/paste this code in your website HTML"
 msgstr ""
 
-#: front/src/components/library/TrackDetail.vue:152
-#: front/src/views/admin/library/TrackDetail.vue:184
-#: front/src/views/admin/library/TrackDetail.vue:179 src/edits.js:108
+#: src/components/library/TrackDetail.vue:153
+#: src/views/admin/library/TrackDetail.vue:184
+#: src/views/admin/library/TrackDetail.vue:179
 msgctxt "Content/Track/*/Noun"
 msgid "Copyright"
 msgstr ""
 
-#: front/src/views/auth/EmailConfirm.vue:8
+#: src/views/auth/EmailConfirm.vue:8
 msgctxt "Content/Signup/Paragraph"
 msgid "Could not confirm your e-mail address"
 msgstr ""
 
-#: front/src/views/content/remote/ScanForm.vue:4
+#: src/views/content/remote/ScanForm.vue:4
 msgctxt "Content/Library/Error message.Title"
 msgid "Could not fetch remote library"
 msgstr ""
 
-#: front/src/components/channels/AlbumModal.vue:20
+#: src/components/channels/AlbumModal.vue:20
 msgctxt "*/*/Button.Label"
 msgid "Create"
 msgstr ""
 
-#: front/src/components/manage/moderation/InstancePolicyForm.vue:74
+#: src/components/manage/moderation/InstancePolicyForm.vue:74
 msgctxt "Content/Moderation/Card.Button.Label/Verb"
 msgid "Create"
 msgstr ""
 
-#: front/src/components/library/Podcasts.vue:80
+#: src/components/library/Podcasts.vue:80
 msgctxt "Content/*/Verb"
 msgid "Create a Channel"
 msgstr ""
 
-#: front/src/views/auth/Signup.vue:5
+#: src/views/auth/Signup.vue:5
 msgctxt "Content/Signup/Title"
 msgid "Create a Funkwhale account"
 msgstr ""
 
-#: front/src/components/auth/ApplicationNew.vue:10
-#: front/src/components/auth/ApplicationNew.vue:53
+#: src/components/auth/ApplicationNew.vue:10
+#: src/components/auth/ApplicationNew.vue:26
 msgctxt "Content/Settings/Button.Label"
 msgid "Create a new application"
 msgstr ""
 
-#: front/src/views/content/libraries/Home.vue:24
+#: src/views/content/libraries/Home.vue:24
 msgctxt "Content/Library/Link/Verb"
 msgid "Create a new library"
 msgstr ""
 
-#: front/src/components/playlists/Form.vue:3
+#: src/components/playlists/Form.vue:3
 msgctxt "Popup/Playlist/Title/Verb"
 msgid "Create a new playlist"
 msgstr ""
 
-#: front/src/views/playlists/List.vue:77
+#: src/views/playlists/List.vue:77
 msgctxt "Content/*/Verb"
 msgid "Create a playlist"
 msgstr ""
 
-#: front/src/components/library/Radios.vue:96
+#: src/components/library/Radios.vue:96
 msgctxt "Content/*/Verb"
 msgid "Create a radio"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:128 src/components/auth/LoginForm.vue:31
-#: front/src/components/auth/LoginForm.vue:7 src/components/auth/LoginForm.vue:3
+#: src/components/Sidebar.vue:128
+#: src/components/auth/LoginForm.vue:31
+#: src/components/auth/LoginForm.vue:7
+#: src/components/auth/LoginForm.vue:3
 msgctxt "*/Signup/Link/Verb"
 msgid "Create an account"
 msgstr ""
 
-#: front/src/components/auth/ApplicationForm.vue:64
+#: src/components/auth/ApplicationForm.vue:64
 msgctxt "Content/Applications/Button.Label/Verb"
 msgid "Create application"
 msgstr ""
 
-#: front/src/views/auth/ProfileOverview.vue:72
+#: src/views/auth/ProfileOverview.vue:72
 msgctxt "*/Channels/Button.Label"
 msgid "Create channel"
 msgstr ""
 
-#: front/src/views/auth/ProfileOverview.vue:41
+#: src/views/auth/ProfileOverview.vue:41
 msgctxt "Content/Channel/*/Verb"
 msgid "Create channel"
 msgstr ""
 
-#: front/src/views/content/libraries/Form.vue:44
+#: src/views/content/libraries/Form.vue:44
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Create library"
 msgstr ""
 
-#: front/src/components/auth/SignupForm.vue:72
+#: src/components/auth/SignupForm.vue:72
 msgctxt "Content/Signup/Button.Label"
 msgid "Create my account"
 msgstr ""
 
-#: front/src/components/playlists/Form.vue:55 src/components/playlists/Form.vue:1
+#: src/components/playlists/Form.vue:55
+#: src/components/playlists/Form.vue:1
 msgctxt "Content/Playlist/Button.Label/Verb"
 msgid "Create playlist"
 msgstr ""
 
-#: front/src/components/playlists/Widget.vue:20
+#: src/components/playlists/Widget.vue:20
 msgctxt "Content/Home/CreatePlaylist"
 msgid "Create Playlist"
 msgstr ""
 
-#: front/src/components/library/Radios.vue:31
+#: src/components/library/Radios.vue:31
 msgctxt "Content/Radio/Button.Label/Verb"
 msgid "Create your own radio"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:189 src/components/auth/Settings.vue:328
-#: front/src/components/manage/ChannelsTable.vue:86
-#: front/src/components/manage/ChannelsTable.vue:27
-#: front/src/components/manage/library/AlbumsTable.vue:67
-#: front/src/components/manage/library/AlbumsTable.vue:27
-#: front/src/components/manage/library/ArtistsTable.vue:81
-#: front/src/components/manage/library/ArtistsTable.vue:22
-#: front/src/components/manage/library/LibrariesTable.vue:91
-#: front/src/components/manage/library/LibrariesTable.vue:32
-#: front/src/components/manage/library/TagsTable.vue:63
-#: front/src/components/manage/library/TagsTable.vue:22
-#: front/src/components/manage/library/TracksTable.vue:67
-#: front/src/components/manage/library/TracksTable.vue:27
-#: front/src/components/manage/library/UploadsTable.vue:127
-#: front/src/components/manage/library/UploadsTable.vue:37
-#: front/src/components/manage/moderation/ReportCard.vue:47
-#: front/src/components/manage/moderation/UserRequestCard.vue:29
-#: front/src/components/manage/users/InvitationsTable.vue:55
-#: front/src/components/manage/users/InvitationsTable.vue:12
-#: front/src/components/mixins/Translations.vue:68
-#: front/src/components/mixins/Translations.vue:69
+#: src/components/auth/Settings.vue:189
+#: src/components/auth/Settings.vue:328
+#: src/components/manage/ChannelsTable.vue:86
+#: src/components/manage/ChannelsTable.vue:27
+#: src/components/manage/library/AlbumsTable.vue:67
+#: src/components/manage/library/AlbumsTable.vue:27
+#: src/components/manage/library/ArtistsTable.vue:81
+#: src/components/manage/library/ArtistsTable.vue:22
+#: src/components/manage/library/LibrariesTable.vue:91
+#: src/components/manage/library/LibrariesTable.vue:32
+#: src/components/manage/library/TagsTable.vue:63
+#: src/components/manage/library/TagsTable.vue:22
+#: src/components/manage/library/TracksTable.vue:67
+#: src/components/manage/library/TracksTable.vue:27
+#: src/components/manage/library/UploadsTable.vue:127
+#: src/components/manage/library/UploadsTable.vue:37
+#: src/components/manage/moderation/ReportCard.vue:47
+#: src/components/manage/moderation/UserRequestCard.vue:29
+#: src/components/manage/users/InvitationsTable.vue:55
+#: src/components/manage/users/InvitationsTable.vue:12
+#: src/components/mixins/Translations.vue:68
 msgctxt "Content/*/*/Noun"
 msgid "Creation date"
 msgstr ""
 
-#: front/src/components/admin/SettingsGroup.vue:56
+#: src/components/admin/SettingsGroup.vue:56
 msgctxt "Content/Settings/Title/Noun"
 msgid "Current image"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:107
+#: src/components/auth/Settings.vue:107
 msgctxt "Content/Settings/Input.Label"
 msgid "Current password"
 msgstr ""
 
-#: front/src/views/content/libraries/Quota.vue:3
+#: src/views/content/libraries/Quota.vue:3
 msgctxt "Content/Library/Title"
 msgid "Current usage"
 msgstr ""
 
-#: front/src/components/Footer.vue:240 src/components/common/UserMenu.vue:188
-#: front/src/components/common/UserModal.vue:231
-#: front/src/components/common/UserModal.vue:233
-msgctxt "Footer/Settings/Dropdown.Label/Theme name"
-msgid "Dark"
-msgstr ""
-
-#: front/src/components/Sidebar.vue:600
-msgctxt "Sidebar/Settings/Dropdown.Label/Theme name"
-msgid "Dark"
-msgstr ""
-
-#: front/src/components/federation/FetchButton.vue:82
-#: front/src/components/federation/FetchButton.vue:70
+#: src/components/federation/FetchButton.vue:82
+#: src/components/federation/FetchButton.vue:70
 msgctxt "*/*/Error"
 msgid "Data returned by the remote server had invalid or missing attributes"
 msgstr ""
 
-#: front/src/components/federation/FetchButton.vue:32
-#: front/src/components/federation/FetchButton.vue:20
+#: src/components/federation/FetchButton.vue:32
+#: src/components/federation/FetchButton.vue:20
 msgctxt "Popup/*/Message.Content"
 msgid "Data was refreshed successfully from remote server."
 msgstr ""
 
-#: front/src/views/library/Edit.vue:33
+#: src/views/library/Edit.vue:33
 msgctxt "Content/Library/Table.Label"
 msgid "Date"
 msgstr ""
 
-#: front/src/components/library/ImportStatusModal.vue:80
-#: front/src/components/library/ImportStatusModal.vue:51
+#: src/components/library/ImportStatusModal.vue:80
+#: src/components/library/ImportStatusModal.vue:51
 msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Debug information"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:130
+#: src/components/ShortcutsModal.vue:70
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Decrease volume"
 msgstr ""
 
-#: front/src/components/admin/SignupFormBuilder.vue:198
+#: src/components/admin/SignupFormBuilder.vue:35
 msgctxt "*/*/*"
 msgid "Delete"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:208
-#: front/src/components/library/AlbumDropdown.vue:50
-#: front/src/components/library/EditCard.vue:121
-#: front/src/components/library/EditCard.vue:137
-#: front/src/components/library/TrackBase.vue:91
-#: front/src/components/library/TrackBase.vue:86
-#: front/src/components/manage/library/AlbumsTable.vue:246
-#: front/src/components/manage/library/ArtistsTable.vue:243
-#: front/src/components/manage/library/LibrariesTable.vue:275
-#: front/src/components/manage/library/TagsTable.vue:211
-#: front/src/components/manage/library/TracksTable.vue:256
-#: front/src/components/manage/library/UploadsTable.vue:374
-#: front/src/components/manage/moderation/InstancePolicyForm.vue:79
-#: front/src/components/manage/moderation/NotesThread.vue:21
-#: front/src/components/manage/moderation/NotesThread.vue:37
-#: front/src/components/manage/moderation/ReportCard.vue:498
-#: front/src/components/manage/users/InvitationsTable.vue:212
-#: front/src/views/admin/ChannelDetail.vue:61 src/views/admin/ChannelDetail.vue:77
-#: front/src/views/admin/ChannelDetail.vue:56 src/views/admin/ChannelDetail.vue:72
-#: front/src/views/admin/library/AlbumDetail.vue:74
-#: front/src/views/admin/library/AlbumDetail.vue:90
-#: front/src/views/admin/library/AlbumDetail.vue:69
-#: front/src/views/admin/library/AlbumDetail.vue:85
-#: front/src/views/admin/library/ArtistDetail.vue:73
-#: front/src/views/admin/library/ArtistDetail.vue:89
-#: front/src/views/admin/library/ArtistDetail.vue:68
-#: front/src/views/admin/library/ArtistDetail.vue:84
-#: front/src/views/admin/library/LibraryDetail.vue:47
-#: front/src/views/admin/library/LibraryDetail.vue:63
-#: front/src/views/admin/library/LibraryDetail.vue:42
-#: front/src/views/admin/library/LibraryDetail.vue:58
-#: front/src/views/admin/library/TagDetail.vue:36
-#: front/src/views/admin/library/TagDetail.vue:52
-#: front/src/views/admin/library/TagDetail.vue:31
-#: front/src/views/admin/library/TagDetail.vue:47
-#: front/src/views/admin/library/TrackDetail.vue:74
-#: front/src/views/admin/library/TrackDetail.vue:90
-#: front/src/views/admin/library/TrackDetail.vue:69
-#: front/src/views/admin/library/TrackDetail.vue:85
-#: front/src/views/admin/library/UploadDetail.vue:54
-#: front/src/views/admin/library/UploadDetail.vue:70
-#: front/src/views/admin/library/UploadDetail.vue:49
-#: front/src/views/admin/library/UploadDetail.vue:65
-#: front/src/views/channels/DetailBase.vue:131 src/views/channels/DetailBase.vue:126
-#: front/src/views/channels/DetailBase.vue:22
-#: front/src/views/content/libraries/FilesTable.vue:344
-#: front/src/views/content/libraries/Form.vue:49 src/views/playlists/Detail.vue:51
+#: src/components/auth/Settings.vue:208
+#: src/components/library/AlbumDropdown.vue:50
+#: src/components/library/EditCard.vue:121
+#: src/components/library/EditCard.vue:137
+#: src/components/library/TrackBase.vue:91
+#: src/components/library/TrackBase.vue:86
+#: src/components/manage/library/AlbumsTable.vue:55
+#: src/components/manage/library/ArtistsTable.vue:53
+#: src/components/manage/library/LibrariesTable.vue:54
+#: src/components/manage/library/TagsTable.vue:59
+#: src/components/manage/library/TracksTable.vue:52
+#: src/components/manage/library/UploadsTable.vue:61
+#: src/components/manage/moderation/InstancePolicyForm.vue:79
+#: src/components/manage/moderation/NotesThread.vue:21
+#: src/components/manage/moderation/NotesThread.vue:37
+#: src/components/manage/moderation/ReportCard.vue:107
+#: src/components/manage/users/InvitationsTable.vue:50
+#: src/views/admin/ChannelDetail.vue:61
+#: src/views/admin/ChannelDetail.vue:77
+#: src/views/admin/ChannelDetail.vue:56
+#: src/views/admin/ChannelDetail.vue:72
+#: src/views/admin/library/AlbumDetail.vue:74
+#: src/views/admin/library/AlbumDetail.vue:90
+#: src/views/admin/library/AlbumDetail.vue:69
+#: src/views/admin/library/AlbumDetail.vue:85
+#: src/views/admin/library/ArtistDetail.vue:73
+#: src/views/admin/library/ArtistDetail.vue:89
+#: src/views/admin/library/ArtistDetail.vue:68
+#: src/views/admin/library/ArtistDetail.vue:84
+#: src/views/admin/library/LibraryDetail.vue:47
+#: src/views/admin/library/LibraryDetail.vue:63
+#: src/views/admin/library/LibraryDetail.vue:42
+#: src/views/admin/library/LibraryDetail.vue:58
+#: src/views/admin/library/TagDetail.vue:36
+#: src/views/admin/library/TagDetail.vue:52
+#: src/views/admin/library/TagDetail.vue:31
+#: src/views/admin/library/TagDetail.vue:47
+#: src/views/admin/library/TrackDetail.vue:74
+#: src/views/admin/library/TrackDetail.vue:90
+#: src/views/admin/library/TrackDetail.vue:69
+#: src/views/admin/library/TrackDetail.vue:85
+#: src/views/admin/library/UploadDetail.vue:54
+#: src/views/admin/library/UploadDetail.vue:70
+#: src/views/admin/library/UploadDetail.vue:49
+#: src/views/admin/library/UploadDetail.vue:65
+#: src/views/channels/DetailBase.vue:133
+#: src/views/channels/DetailBase.vue:128
+#: src/views/channels/DetailBase.vue:24
+#: src/views/content/libraries/FilesTable.vue:76
+#: src/views/content/libraries/Form.vue:49
+#: src/views/playlists/Detail.vue:51
 msgctxt "*/*/*/Verb"
 msgid "Delete"
 msgstr ""
 
-#: front/src/views/content/libraries/Form.vue:63
+#: src/views/content/libraries/Form.vue:63
 msgctxt "Popup/Library/Button.Label/Verb"
 msgid "Delete library"
 msgstr ""
 
-#: front/src/components/manage/moderation/InstancePolicyForm.vue:93
+#: src/components/manage/moderation/InstancePolicyForm.vue:93
 msgctxt "Popup/Moderation/Button.Label/Verb"
 msgid "Delete moderation rule"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:460 src/components/auth/Settings.vue:509
+#: src/components/auth/Settings.vue:460
+#: src/components/auth/Settings.vue:509
 msgctxt "*/*/Button.Label"
 msgid "Delete my account"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:493
+#: src/components/auth/Settings.vue:493
 msgctxt "*/*/Button.Label"
 msgid "Delete my account…"
 msgstr ""
 
-#: front/src/views/playlists/Detail.vue:63
+#: src/views/playlists/Detail.vue:63
 msgctxt "Popup/Playlist/Button.Label/Verb"
 msgid "Delete playlist"
 msgstr ""
 
-#: front/src/views/radios/Detail.vue:35 src/views/radios/Detail.vue:16
+#: src/views/radios/Detail.vue:35
+#: src/views/radios/Detail.vue:16
 msgctxt "Popup/Radio/Button.Label/Verb"
 msgid "Delete radio"
 msgstr ""
 
-#: front/src/components/manage/moderation/ReportCard.vue:495
+#: src/components/manage/moderation/ReportCard.vue:104
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Delete reported object"
 msgstr ""
 
-#: front/src/components/manage/moderation/ReportCard.vue:496
+#: src/components/manage/moderation/ReportCard.vue:105
 msgctxt "Content/Moderation/Popup/Header"
 msgid "Delete reported object?"
 msgstr ""
 
-#: front/src/components/library/AlbumDropdown.vue:46
+#: src/components/library/AlbumDropdown.vue:46
 msgctxt "Popup/Channel/Title"
 msgid "Delete this album?"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:78
-#: front/src/views/admin/library/AlbumDetail.vue:73
+#: src/views/admin/library/AlbumDetail.vue:78
+#: src/views/admin/library/AlbumDetail.vue:73
 msgctxt "Popup/Library/Title"
 msgid "Delete this album?"
 msgstr ""
 
-#: front/src/views/admin/library/ArtistDetail.vue:77
-#: front/src/views/admin/library/ArtistDetail.vue:72
+#: src/views/admin/library/ArtistDetail.vue:77
+#: src/views/admin/library/ArtistDetail.vue:72
 msgctxt "Popup/Library/Title"
 msgid "Delete this artist?"
 msgstr ""
 
-#: front/src/views/admin/ChannelDetail.vue:65 src/views/admin/ChannelDetail.vue:60
+#: src/views/admin/ChannelDetail.vue:65
+#: src/views/admin/ChannelDetail.vue:60
 msgctxt "Popup/Library/Title"
 msgid "Delete this channel?"
 msgstr ""
 
-#: front/src/views/channels/DetailBase.vue:119 src/views/channels/DetailBase.vue:114
-#: front/src/views/channels/DetailBase.vue:10
+#: src/views/channels/DetailBase.vue:121
+#: src/views/channels/DetailBase.vue:116
+#: src/views/channels/DetailBase.vue:12
 msgctxt "Popup/Channel/Title"
 msgid "Delete this Channel?"
 msgstr ""
 
-#: front/src/views/admin/library/LibraryDetail.vue:51
-#: front/src/views/admin/library/LibraryDetail.vue:46
-#: front/src/views/content/libraries/Form.vue:53
+#: src/views/admin/library/LibraryDetail.vue:51
+#: src/views/admin/library/LibraryDetail.vue:46
+#: src/views/content/libraries/Form.vue:53
 msgctxt "Popup/Library/Title"
 msgid "Delete this library?"
 msgstr ""
 
-#: front/src/components/manage/moderation/InstancePolicyForm.vue:83
+#: src/components/manage/moderation/InstancePolicyForm.vue:83
 msgctxt "Popup/Moderation/Title"
 msgid "Delete this moderation rule?"
 msgstr ""
 
-#: front/src/components/manage/moderation/NotesThread.vue:25
+#: src/components/manage/moderation/NotesThread.vue:25
 msgctxt "Popup/Moderation/Title"
 msgid "Delete this note?"
 msgstr ""
 
-#: front/src/components/library/EditCard.vue:125
+#: src/components/library/EditCard.vue:125
 msgctxt "Popup/Library/Title"
 msgid "Delete this suggestion?"
 msgstr ""
 
-#: front/src/views/admin/library/TagDetail.vue:40
-#: front/src/views/admin/library/TagDetail.vue:35
+#: src/views/admin/library/TagDetail.vue:40
+#: src/views/admin/library/TagDetail.vue:35
 msgctxt "Popup/Library/Title"
 msgid "Delete this tag?"
 msgstr ""
 
-#: front/src/components/library/TrackBase.vue:79
-#: front/src/components/library/TrackBase.vue:74
+#: src/components/library/TrackBase.vue:79
+#: src/components/library/TrackBase.vue:74
 msgctxt "Popup/Channel/Title"
 msgid "Delete this track?"
 msgstr ""
 
-#: front/src/views/admin/library/TrackDetail.vue:78
-#: front/src/views/admin/library/TrackDetail.vue:73
+#: src/views/admin/library/TrackDetail.vue:78
+#: src/views/admin/library/TrackDetail.vue:73
 msgctxt "Popup/Library/Title"
 msgid "Delete this track?"
 msgstr ""
 
-#: front/src/views/admin/library/UploadDetail.vue:58
-#: front/src/views/admin/library/UploadDetail.vue:53
+#: src/views/admin/library/UploadDetail.vue:58
+#: src/views/admin/library/UploadDetail.vue:53
 msgctxt "Popup/Library/Title"
 msgid "Delete this upload?"
 msgstr ""
 
-#: front/src/components/library/AlbumDropdown.vue:45
-#: front/src/components/library/TrackBase.vue:75
-#: front/src/components/library/TrackBase.vue:70
-#: front/src/views/channels/DetailBase.vue:115 src/views/channels/DetailBase.vue:110
-#: front/src/views/channels/DetailBase.vue:6
+#: src/components/library/AlbumDropdown.vue:45
+#: src/components/library/TrackBase.vue:75
+#: src/components/library/TrackBase.vue:70
+#: src/views/channels/DetailBase.vue:117
+#: src/views/channels/DetailBase.vue:112
+#: src/views/channels/DetailBase.vue:8
 msgctxt "*/*/*/Verb"
 msgid "Delete…"
 msgstr ""
 
-#: front/src/components/favorites/List.vue:38 src/components/library/Albums.vue:42
-#: front/src/components/library/Artists.vue:42 src/components/library/Podcasts.vue:42
-#: front/src/components/library/Radios.vue:64
-#: front/src/components/manage/ChannelsTable.vue:46
-#: front/src/components/manage/library/AlbumsTable.vue:27
-#: front/src/components/manage/library/ArtistsTable.vue:46
-#: front/src/components/manage/library/EditsCardList.vue:53
-#: front/src/components/manage/library/LibrariesTable.vue:46
-#: front/src/components/manage/library/TagsTable.vue:27
-#: front/src/components/manage/library/TracksTable.vue:27
-#: front/src/components/manage/library/UploadsTable.vue:76
-#: front/src/components/manage/moderation/AccountsTable.vue:27
-#: front/src/components/manage/moderation/DomainsTable.vue:45
-#: front/src/components/manage/users/UsersTable.vue:25
-#: front/src/views/admin/moderation/ReportsList.vue:55
-#: front/src/views/admin/moderation/RequestsList.vue:59
-#: front/src/views/content/libraries/FilesTable.vue:70
-#: front/src/views/playlists/List.vue:44
+#: src/components/favorites/List.vue:38
+#: src/components/library/Albums.vue:42
+#: src/components/library/Artists.vue:42
+#: src/components/library/Podcasts.vue:42
+#: src/components/library/Radios.vue:64
+#: src/components/manage/ChannelsTable.vue:46
+#: src/components/manage/library/AlbumsTable.vue:27
+#: src/components/manage/library/ArtistsTable.vue:46
+#: src/components/manage/library/EditsCardList.vue:53
+#: src/components/manage/library/LibrariesTable.vue:46
+#: src/components/manage/library/TagsTable.vue:27
+#: src/components/manage/library/TracksTable.vue:27
+#: src/components/manage/library/UploadsTable.vue:76
+#: src/components/manage/moderation/AccountsTable.vue:27
+#: src/components/manage/moderation/DomainsTable.vue:45
+#: src/components/manage/users/UsersTable.vue:25
+#: src/views/admin/moderation/ReportsList.vue:55
+#: src/views/admin/moderation/RequestsList.vue:59
+#: src/views/content/libraries/FilesTable.vue:70
+#: src/views/playlists/List.vue:44
 msgctxt "Content/Search/Dropdown"
 msgid "Descending"
 msgstr ""
 
-#: front/src/components/manage/moderation/NoteForm.vue:65
+#: src/components/manage/moderation/NoteForm.vue:19
 msgctxt "Content/Moderation/Placeholder"
 msgid "Describe what actions have been taken, or any other related updates…"
 msgstr ""
 
-#: front/src/views/admin/ChannelDetail.vue:150 src/views/admin/ChannelDetail.vue:145
-#: front/src/views/admin/library/AlbumDetail.vue:151
-#: front/src/views/admin/library/AlbumDetail.vue:146
-#: front/src/views/admin/library/ArtistDetail.vue:150
-#: front/src/views/admin/library/ArtistDetail.vue:145
-#: front/src/views/admin/library/TrackDetail.vue:216
-#: front/src/views/admin/library/TrackDetail.vue:211
+#: src/views/admin/ChannelDetail.vue:150
+#: src/views/admin/ChannelDetail.vue:145
+#: src/views/admin/library/AlbumDetail.vue:151
+#: src/views/admin/library/AlbumDetail.vue:146
+#: src/views/admin/library/ArtistDetail.vue:150
+#: src/views/admin/library/ArtistDetail.vue:145
+#: src/views/admin/library/TrackDetail.vue:216
+#: src/views/admin/library/TrackDetail.vue:211
 msgctxt "'*/*/*/Noun"
 msgid "Description"
 msgstr ""
 
-#: front/src/components/audio/ChannelForm.vue:93
-#: front/src/components/audio/ChannelForm.vue:79
-#: front/src/components/audio/ChannelForm.vue:59
-#: front/src/components/channels/UploadMetadataForm.vue:30
+#: src/components/audio/ChannelForm.vue:93
+#: src/components/audio/ChannelForm.vue:79
+#: src/components/audio/ChannelForm.vue:59
+#: src/components/channels/UploadMetadataForm.vue:30
 msgctxt "*/*/*"
 msgid "Description"
 msgstr ""
 
-#: front/src/components/library/radios/Builder.vue:35
-#: front/src/views/admin/library/LibraryDetail.vue:143
-#: front/src/views/admin/library/LibraryDetail.vue:138
-#: front/src/views/content/libraries/Form.vue:24 src/edits.js:18
+#: src/components/library/radios/Builder.vue:35
+#: src/views/admin/library/LibraryDetail.vue:143
+#: src/views/admin/library/LibraryDetail.vue:138
+#: src/views/content/libraries/Form.vue:24
 msgctxt "*/*/*/Noun"
 msgid "Description"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:70
+#: src/views/content/remote/Card.vue:70
 msgctxt "Content/Library/Card.Button.Label/Noun"
 msgid "Details"
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:603
+#: src/views/admin/moderation/AccountsDetail.vue:33
 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
+#: src/components/mixins/Translations.vue:8
 msgctxt "Content/Settings/Dropdown.Help text"
 msgid "Determine the visibility level of your activity"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:143
-#: front/src/components/auth/SubsonicTokenForm.vue:91
-#: front/src/components/auth/SubsonicTokenForm.vue:45
+#: src/components/auth/Settings.vue:143
+#: src/components/auth/SubsonicTokenForm.vue:91
+#: src/components/auth/SubsonicTokenForm.vue:45
 msgctxt "Popup/Settings/Button.Label"
 msgid "Disable access"
 msgstr ""
 
-#: front/src/components/auth/SubsonicTokenForm.vue:77
-#: front/src/components/auth/SubsonicTokenForm.vue:31
+#: src/components/auth/SubsonicTokenForm.vue:77
+#: src/components/auth/SubsonicTokenForm.vue:31
 msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Disable Subsonic access"
 msgstr ""
 
-#: front/src/components/auth/SubsonicTokenForm.vue:81
-#: front/src/components/auth/SubsonicTokenForm.vue:35
+#: src/components/auth/SubsonicTokenForm.vue:81
+#: src/components/auth/SubsonicTokenForm.vue:35
 msgctxt "Popup/Settings/Title"
 msgid "Disable Subsonic API access?"
 msgstr ""
 
-#: front/src/components/AboutPod.vue:123 src/components/AboutPod.vue:142
-#: front/src/components/AboutPod.vue:167
-#: front/src/components/manage/moderation/InstancePolicyForm.vue:28
-#: front/src/views/admin/moderation/AccountsDetail.vue:164
-#: front/src/views/admin/moderation/AccountsDetail.vue:170
-#: front/src/views/admin/moderation/AccountsDetail.vue:159
-#: front/src/views/admin/moderation/AccountsDetail.vue:165
+#: src/components/AboutPod.vue:123
+#: src/components/AboutPod.vue:142
+#: src/components/AboutPod.vue:167
+#: src/components/manage/moderation/InstancePolicyForm.vue:28
+#: src/views/admin/moderation/AccountsDetail.vue:164
+#: src/views/admin/moderation/AccountsDetail.vue:170
+#: src/views/admin/moderation/AccountsDetail.vue:159
+#: src/views/admin/moderation/AccountsDetail.vue:165
 msgctxt "*/*/*/State of feature"
 msgid "Disabled"
 msgstr ""
 
-#: front/src/views/admin/library/TrackDetail.vue:174
-#: front/src/views/admin/library/TrackDetail.vue:169
+#: src/views/admin/library/TrackDetail.vue:174
+#: src/views/admin/library/TrackDetail.vue:169
 msgctxt "*/*/*/Noun"
 msgid "Disc number"
 msgstr ""
 
-#: front/src/components/Home.vue:194
+#: src/components/Home.vue:194
 msgctxt "Content/Home/Link"
 msgid "Discover everything you need to know about Funkwhale and its features"
 msgstr ""
 
-#: front/src/components/auth/SubsonicTokenForm.vue:26
+#: src/components/auth/SubsonicTokenForm.vue:26
 msgctxt "Content/Settings/Link"
 msgid "Discover how to use Funkwhale from other apps"
 msgstr ""
 
-#: front/src/views/Notifications.vue:73
+#: src/views/Notifications.vue:73
 msgctxt "Content/Notifications/Button.Label/Verb"
 msgid "Discover other ways to help"
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:135
-#: front/src/views/admin/moderation/AccountsDetail.vue:130
+#: src/views/admin/moderation/AccountsDetail.vue:135
+#: src/views/admin/moderation/AccountsDetail.vue:130
 msgctxt "'Content/*/*/Noun'"
 msgid "Display name"
 msgstr ""
 
-#: front/src/components/library/radios/Builder.vue:40
+#: src/components/library/radios/Builder.vue:40
 msgctxt "Content/Radio/Checkbox.Label/Verb"
 msgid "Display publicly"
 msgstr ""
 
-#: front/src/components/manage/moderation/InstancePolicyForm.vue:216
+#: src/components/manage/moderation/InstancePolicyForm.vue:46
 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/views/Notifications.vue:60
+#: src/views/Notifications.vue:60
 msgctxt "Content/Notifications/Header"
 msgid "Do you like Funkwhale?"
 msgstr ""
 
-#: front/src/components/playlists/Editor.vue:61
+#: src/components/playlists/Editor.vue:61
 msgctxt "Popup/Playlist/Title"
 msgid "Do you want to clear the playlist \"%{ playlist }\"?"
 msgstr ""
 
-#: front/src/components/common/DangerousButton.vue:7
+#: src/components/common/DangerousButton.vue:7
 msgctxt "Modal/*/Title"
 msgid "Do you want to confirm this action?"
 msgstr ""
 
-#: front/src/views/playlists/Detail.vue:54
+#: src/views/playlists/Detail.vue:54
 msgctxt "Popup/Playlist/Title/Call to action"
 msgid "Do you want to delete the playlist \"%{ playlist }\"?"
 msgstr ""
 
-#: front/src/views/radios/Detail.vue:26 src/views/radios/Detail.vue:7
+#: src/views/radios/Detail.vue:26
+#: src/views/radios/Detail.vue:7
 msgctxt "Popup/Radio/Title"
 msgid "Do you want to delete the radio \"%{ radio }\"?"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:497
+#: src/components/auth/Settings.vue:497
 msgctxt "Popup/Settings/Title"
 msgid "Do you want to delete your account?"
 msgstr ""
 
-#: front/src/components/moderation/FilterModal.vue:3
+#: 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:31
+#: src/components/common/ActionTable.vue:31
 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/moderation/ReportModal.vue:3
+#: src/components/moderation/ReportModal.vue:3
 msgctxt "Popup/Moderation/Title/Verb"
 msgid "Do you want to report this object?"
 msgstr ""
 
-#: front/src/components/Footer.vue:55 src/components/auth/Plugin.vue:8
-#: front/src/components/auth/Plugin.vue:4
+#: src/components/auth/Plugin.vue:8
+#: src/components/auth/Plugin.vue:4
 msgctxt "Footer/*/List item.Link/Short, Noun"
 msgid "Documentation"
 msgstr ""
 
-#: front/src/components/common/UserMenu.vue:169
-#: front/src/components/common/UserModal.vue:198
+#: src/components/common/UserMenu.vue:22
+#: src/components/common/UserModal.vue:30
 msgctxt "Sidebar/*/Listitem.Link"
 msgid "Documentation"
 msgstr ""
 
-#: front/src/components/manage/ChannelsTable.vue:71
-#: front/src/components/manage/ChannelsTable.vue:12
-#: front/src/components/manage/library/AlbumsTable.vue:52
-#: front/src/components/manage/library/AlbumsTable.vue:12
-#: front/src/components/manage/library/ArtistsTable.vue:66
-#: front/src/components/manage/library/ArtistsTable.vue:7
-#: front/src/components/manage/library/LibrariesTable.vue:71
-#: front/src/components/manage/library/LibrariesTable.vue:12
-#: front/src/components/manage/library/TracksTable.vue:57
-#: front/src/components/manage/library/TracksTable.vue:17
-#: front/src/components/manage/library/UploadsTable.vue:107
-#: front/src/components/manage/library/UploadsTable.vue:17
-#: front/src/components/manage/moderation/AccountsTable.vue:47
-#: front/src/components/manage/moderation/AccountsTable.vue:7
-#: front/src/components/manage/moderation/ReportCard.vue:201
-#: front/src/components/manage/moderation/ReportCard.vue:215
-#: front/src/components/mixins/Translations.vue:87
-#: front/src/views/admin/ChannelDetail.vue:139 src/views/admin/ChannelDetail.vue:134
-#: front/src/views/admin/library/AlbumDetail.vue:140
-#: front/src/views/admin/library/AlbumDetail.vue:135
-#: front/src/views/admin/library/ArtistDetail.vue:139
-#: front/src/views/admin/library/ArtistDetail.vue:134
-#: front/src/views/admin/library/LibraryDetail.vue:132
-#: front/src/views/admin/library/LibraryDetail.vue:127
-#: front/src/views/admin/library/TrackDetail.vue:205
-#: front/src/views/admin/library/TrackDetail.vue:200
-#: front/src/views/admin/library/UploadDetail.vue:132
-#: front/src/views/admin/library/UploadDetail.vue:127
-#: front/src/views/admin/moderation/AccountsDetail.vue:124
-#: front/src/views/admin/moderation/AccountsDetail.vue:119
-#: front/src/components/mixins/Translations.vue:88
+#: src/components/manage/ChannelsTable.vue:71
+#: src/components/manage/ChannelsTable.vue:12
+#: src/components/manage/library/AlbumsTable.vue:52
+#: src/components/manage/library/AlbumsTable.vue:12
+#: src/components/manage/library/ArtistsTable.vue:66
+#: src/components/manage/library/ArtistsTable.vue:7
+#: src/components/manage/library/LibrariesTable.vue:71
+#: src/components/manage/library/LibrariesTable.vue:12
+#: src/components/manage/library/TracksTable.vue:57
+#: src/components/manage/library/TracksTable.vue:17
+#: src/components/manage/library/UploadsTable.vue:107
+#: src/components/manage/library/UploadsTable.vue:17
+#: src/components/manage/moderation/AccountsTable.vue:47
+#: src/components/manage/moderation/AccountsTable.vue:7
+#: src/components/manage/moderation/ReportCard.vue:201
+#: src/components/manage/moderation/ReportCard.vue:215
+#: src/components/mixins/Translations.vue:87
+#: src/views/admin/ChannelDetail.vue:139
+#: src/views/admin/ChannelDetail.vue:134
+#: src/views/admin/library/AlbumDetail.vue:140
+#: src/views/admin/library/AlbumDetail.vue:135
+#: src/views/admin/library/ArtistDetail.vue:139
+#: src/views/admin/library/ArtistDetail.vue:134
+#: src/views/admin/library/LibraryDetail.vue:132
+#: src/views/admin/library/LibraryDetail.vue:127
+#: src/views/admin/library/TrackDetail.vue:205
+#: src/views/admin/library/TrackDetail.vue:200
+#: src/views/admin/library/UploadDetail.vue:132
+#: src/views/admin/library/UploadDetail.vue:127
+#: src/views/admin/moderation/AccountsDetail.vue:124
+#: src/views/admin/moderation/AccountsDetail.vue:119
 msgctxt "Content/Moderation/*/Noun"
 msgid "Domain"
 msgstr ""
 
-#: front/src/views/admin/moderation/Base.vue:20
-#: front/src/views/admin/moderation/DomainsList.vue:4
-#: front/src/views/admin/moderation/DomainsList.vue:93
+#: src/views/admin/moderation/Base.vue:20
+#: src/views/admin/moderation/DomainsList.vue:4
+#: src/views/admin/moderation/DomainsList.vue:20
 msgctxt "*/Moderation/*/Noun"
 msgid "Domains"
 msgstr ""
 
-#: front/src/views/Notifications.vue:70
+#: src/views/Notifications.vue:70
 msgctxt "Content/Notifications/Button.Label/Verb"
 msgid "Donate"
 msgstr ""
 
-#: front/src/components/library/TrackBase.vue:291
-#: front/src/views/admin/library/UploadDetail.vue:49
-#: front/src/views/admin/library/UploadDetail.vue:44
+#: src/components/library/TrackBase.vue:70
+#: src/views/admin/library/UploadDetail.vue:49
+#: src/views/admin/library/UploadDetail.vue:44
 msgctxt "Content/Track/Link/Verb"
 msgid "Download"
 msgstr ""
 
-#: front/src/components/library/TrackDetail.vue:80
-#: front/src/components/library/TrackDetail.vue:75
+#: src/components/library/TrackDetail.vue:81
+#: src/components/library/TrackDetail.vue:76
 msgctxt "Content/*/*"
 msgid "Downloads"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:28
-#: front/src/views/content/libraries/FilesTable.vue:23
-#: front/src/components/mixins/Translations.vue:29
+#: src/components/mixins/Translations.vue:28
+#: src/views/content/libraries/FilesTable.vue:23
 msgctxt "Content/Library/*/Short"
 msgid "Draft"
 msgstr ""
 
-#: front/src/components/playlists/Editor.vue:78 src/components/playlists/Editor.vue:2
+#: src/components/playlists/Editor.vue:78
+#: src/components/playlists/Editor.vue:2
 msgctxt "Content/Playlist/Paragraph/Call to action"
 msgid "Drag and drop rows to reorder tracks in the playlist"
 msgstr ""
 
-#: front/src/components/channels/UploadForm.vue:130
-#: front/src/components/channels/UploadForm.vue:95
-#: front/src/components/channels/UploadForm.vue:84
+#: src/components/channels/UploadForm.vue:130
+#: src/components/channels/UploadForm.vue:95
+#: src/components/channels/UploadForm.vue:84
 msgctxt "Content/Channels/Paragraph"
 msgid "Drag and drop your files here or open the browser to upload your files"
 msgstr ""
 
-#: front/src/components/Queue.vue:399
+#: src/components/Queue.vue:58
 msgctxt "*/*/*"
 msgid "Duration"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:79
-#: front/src/components/mixins/Translations.vue:80
+#: src/components/mixins/Translations.vue:79
 msgctxt "*/*/*/Noun"
 msgid "Duration"
 msgstr ""
 
-#: front/src/components/library/TrackDetail.vue:20
-#: front/src/components/library/TrackDetail.vue:15
-#: front/src/components/mixins/Translations.vue:83
-#: front/src/views/admin/library/UploadDetail.vue:277
-#: front/src/views/admin/library/UploadDetail.vue:272
-#: front/src/views/content/libraries/FilesTable.vue:119
-#: front/src/views/content/libraries/FilesTable.vue:27
-#: front/src/components/mixins/Translations.vue:84
+#: src/components/library/TrackDetail.vue:21
+#: src/components/library/TrackDetail.vue:16
+#: src/components/mixins/Translations.vue:83
+#: src/views/admin/library/UploadDetail.vue:277
+#: src/views/admin/library/UploadDetail.vue:272
+#: src/views/content/libraries/FilesTable.vue:119
+#: src/views/content/libraries/FilesTable.vue:27
 msgctxt "Content/*/*"
 msgid "Duration"
 msgstr ""
 
-#: front/src/components/auth/SignupForm.vue:53
+#: src/components/auth/SignupForm.vue:53
 msgctxt "Content/*/*/Noun"
 msgid "E-mail address"
 msgstr ""
 
-#: front/src/views/auth/EmailConfirm.vue:33
+#: src/views/auth/EmailConfirm.vue:33
 msgctxt "Content/Signup/Message"
 msgid "E-mail address confirmed"
 msgstr ""
 
-#: front/src/components/playlists/PlaylistModal.vue:64
-#: front/src/components/playlists/PlaylistModal.vue:87
+#: src/components/playlists/PlaylistModal.vue:64
+#: src/components/playlists/PlaylistModal.vue:87
 msgctxt "*/*/*/Verb"
 msgid "Edit"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:350
-#: front/src/components/channels/UploadForm.vue:293
-#: front/src/components/common/RenderedDescription.vue:23
-#: front/src/components/common/RenderedDescription.vue:4
-#: front/src/components/library/AlbumDropdown.vue:41
-#: front/src/components/library/ArtistBase.vue:86
-#: front/src/components/library/ArtistBase.vue:81
-#: front/src/components/library/TrackBase.vue:69
-#: front/src/components/library/TrackBase.vue:64
-#: front/src/components/manage/moderation/InstancePolicyCard.vue:62
-#: front/src/components/radios/Card.vue:20 src/views/admin/library/AlbumDetail.vue:67
-#: front/src/views/admin/library/AlbumDetail.vue:62
-#: front/src/views/admin/library/ArtistDetail.vue:66
-#: front/src/views/admin/library/ArtistDetail.vue:61
-#: front/src/views/admin/library/TrackDetail.vue:67
-#: front/src/views/admin/library/TrackDetail.vue:62
-#: front/src/views/library/DetailBase.vue:118 src/views/playlists/Detail.vue:37
-#: front/src/views/playlists/Detail.vue:1
+#: src/components/auth/Settings.vue:350
+#: src/components/channels/UploadForm.vue:55
+#: src/components/common/RenderedDescription.vue:23
+#: src/components/common/RenderedDescription.vue:4
+#: src/components/library/AlbumDropdown.vue:41
+#: src/components/library/ArtistBase.vue:86
+#: src/components/library/ArtistBase.vue:81
+#: src/components/library/TrackBase.vue:69
+#: src/components/library/TrackBase.vue:64
+#: src/components/manage/moderation/InstancePolicyCard.vue:62
+#: src/components/radios/Card.vue:20
+#: src/views/admin/library/AlbumDetail.vue:67
+#: src/views/admin/library/AlbumDetail.vue:62
+#: src/views/admin/library/ArtistDetail.vue:66
+#: src/views/admin/library/ArtistDetail.vue:61
+#: src/views/admin/library/TrackDetail.vue:67
+#: src/views/admin/library/TrackDetail.vue:62
+#: src/views/library/DetailBase.vue:118
+#: src/views/playlists/Detail.vue:37
+#: src/views/playlists/Detail.vue:1
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Edit"
 msgstr ""
 
-#: front/src/views/playlists/Detail.vue:112
+#: src/views/playlists/Detail.vue:112
 msgctxt "Content/Home/CreatePlaylist"
 msgid "Edit"
 msgstr ""
 
-#: front/src/components/auth/ApplicationEdit.vue:42
-#: front/src/components/auth/ApplicationEdit.vue:35
-#: front/src/components/auth/ApplicationEdit.vue:97
+#: src/components/auth/ApplicationEdit.vue:42
+#: src/components/auth/ApplicationEdit.vue:35
+#: src/components/auth/ApplicationEdit.vue:19
 msgctxt "Content/Applications/Title"
 msgid "Edit application"
 msgstr ""
 
-#: front/src/components/admin/SignupFormBuilder.vue:4
+#: src/components/admin/SignupFormBuilder.vue:4
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Edit form"
 msgstr ""
 
-#: front/src/components/manage/moderation/InstancePolicyForm.vue:3
+#: 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
+#: src/components/library/AlbumEdit.vue:4
 msgctxt "Content/*/Title"
 msgid "Edit this album"
 msgstr ""
 
-#: front/src/components/library/ArtistEdit.vue:4
+#: src/components/library/ArtistEdit.vue:4
 msgctxt "Content/*/Title"
 msgid "Edit this artist"
 msgstr ""
 
-#: front/src/components/library/TrackEdit.vue:4
+#: src/components/library/TrackEdit.vue:4
 msgctxt "Content/*/Title"
 msgid "Edit this track"
 msgstr ""
 
-#: front/src/views/channels/DetailBase.vue:112 src/views/channels/DetailBase.vue:107
-#: front/src/views/channels/DetailBase.vue:3
+#: src/views/channels/DetailBase.vue:113
+#: src/views/channels/DetailBase.vue:108
+#: src/views/channels/DetailBase.vue:4
 msgctxt "*/*/*/Verb"
 msgid "Edit…"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:131
-#: front/src/views/admin/ChannelDetail.vue:254 src/views/admin/ChannelDetail.vue:249
-#: front/src/views/admin/library/AlbumDetail.vue:235
-#: front/src/views/admin/library/AlbumDetail.vue:230
-#: front/src/views/admin/library/ArtistDetail.vue:234
-#: front/src/views/admin/library/ArtistDetail.vue:229
-#: front/src/views/admin/library/Base.vue:4 src/views/admin/library/EditsList.vue:31
-#: front/src/views/admin/library/TrackDetail.vue:300
-#: front/src/views/admin/library/TrackDetail.vue:295
-#: front/src/components/mixins/Translations.vue:132
+#: src/components/mixins/Translations.vue:131
+#: src/views/admin/ChannelDetail.vue:254
+#: src/views/admin/ChannelDetail.vue:249
+#: src/views/admin/library/AlbumDetail.vue:235
+#: src/views/admin/library/AlbumDetail.vue:230
+#: src/views/admin/library/ArtistDetail.vue:234
+#: src/views/admin/library/ArtistDetail.vue:229
+#: src/views/admin/library/Base.vue:4
+#: src/views/admin/library/EditsList.vue:13
+#: src/views/admin/library/TrackDetail.vue:300
+#: src/views/admin/library/TrackDetail.vue:295
 msgctxt "*/Admin/*/Noun"
 msgid "Edits"
 msgstr ""
 
-#: front/src/components/manage/users/UsersTable.vue:45
-#: front/src/components/manage/users/UsersTable.vue:7
-#: front/src/components/moderation/ReportModal.vue:35
+#: src/components/manage/users/UsersTable.vue:45
+#: src/components/manage/users/UsersTable.vue:7
+#: src/components/moderation/ReportModal.vue:35
 msgctxt "Content/*/*/Noun"
 msgid "Email"
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:145
-#: front/src/views/admin/moderation/AccountsDetail.vue:140
+#: src/views/admin/moderation/AccountsDetail.vue:145
+#: src/views/admin/moderation/AccountsDetail.vue:140
 msgctxt "Content/*/*"
 msgid "Email address"
 msgstr ""
 
-#: front/src/components/library/AlbumDropdown.vue:29
-#: front/src/components/library/ArtistBase.vue:68
-#: front/src/components/library/ArtistBase.vue:63
-#: front/src/components/library/TrackBase.vue:55
-#: front/src/components/library/TrackBase.vue:50 src/views/channels/DetailBase.vue:98
-#: front/src/views/channels/DetailBase.vue:93 src/views/playlists/Detail.vue:46
+#: src/components/library/AlbumDropdown.vue:29
+#: src/components/library/ArtistBase.vue:68
+#: src/components/library/ArtistBase.vue:63
+#: src/components/library/TrackBase.vue:55
+#: src/components/library/TrackBase.vue:50
+#: src/views/channels/DetailBase.vue:98
+#: src/views/channels/DetailBase.vue:93
+#: src/views/playlists/Detail.vue:46
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Embed"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:40
+#: src/components/audio/EmbedWizard.vue:40
 msgctxt "Popup/Embed/Input.Label/Noun"
 msgid "Embed code"
 msgstr ""
 
-#: front/src/components/library/AlbumDropdown.vue:5
+#: src/components/library/AlbumDropdown.vue:5
 msgctxt "Popup/Album/Title/Verb"
 msgid "Embed this album on your website"
 msgstr ""
 
-#: front/src/components/library/ArtistBase.vue:35
-#: front/src/components/library/ArtistBase.vue:30
-#: front/src/views/channels/DetailBase.vue:187 src/views/channels/DetailBase.vue:182
+#: src/components/library/ArtistBase.vue:35
+#: src/components/library/ArtistBase.vue:30
+#: src/views/channels/DetailBase.vue:189
+#: src/views/channels/DetailBase.vue:184
 msgctxt "Popup/Artist/Title/Verb"
 msgid "Embed this artist work on your website"
 msgstr ""
 
-#: front/src/views/playlists/Detail.vue:72
+#: src/views/playlists/Detail.vue:72
 msgctxt "Popup/Album/Title/Verb"
 msgid "Embed this playlist on your website"
 msgstr ""
 
-#: front/src/components/library/TrackBase.vue:29
-#: front/src/components/library/TrackBase.vue:24
+#: src/components/library/TrackBase.vue:29
+#: src/components/library/TrackBase.vue:24
 msgctxt "Popup/Track/Title"
 msgid "Embed this track on your website"
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:288
-#: front/src/views/admin/moderation/AccountsDetail.vue:283
-#: front/src/views/admin/moderation/DomainsDetail.vue:252
-#: front/src/views/admin/moderation/DomainsDetail.vue:247
+#: src/views/admin/moderation/AccountsDetail.vue:288
+#: src/views/admin/moderation/AccountsDetail.vue:283
+#: src/views/admin/moderation/DomainsDetail.vue:252
+#: src/views/admin/moderation/DomainsDetail.vue:247
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted library follows"
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:268
-#: front/src/views/admin/moderation/AccountsDetail.vue:263
-#: front/src/views/admin/moderation/DomainsDetail.vue:232
-#: front/src/views/admin/moderation/DomainsDetail.vue:227
+#: src/views/admin/moderation/AccountsDetail.vue:268
+#: src/views/admin/moderation/AccountsDetail.vue:263
+#: src/views/admin/moderation/DomainsDetail.vue:232
+#: src/views/admin/moderation/DomainsDetail.vue:227
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted messages"
 msgstr ""
 
-#: front/src/components/auth/Plugin.vue:27
+#: src/components/auth/Plugin.vue:27
 msgctxt "*/*/*"
 msgid "Enabled"
 msgstr ""
 
-#: front/src/components/AboutPod.vue:117 src/components/AboutPod.vue:136
-#: front/src/components/AboutPod.vue:161
-#: front/src/components/manage/moderation/InstancePolicyCard.vue:8
-#: front/src/components/manage/moderation/InstancePolicyCard.vue:2
-#: front/src/components/manage/moderation/InstancePolicyForm.vue:27
-#: front/src/views/admin/moderation/AccountsDetail.vue:163
-#: front/src/views/admin/moderation/AccountsDetail.vue:167
-#: front/src/views/admin/moderation/AccountsDetail.vue:158
-#: front/src/views/admin/moderation/AccountsDetail.vue:162
+#: src/components/AboutPod.vue:117
+#: src/components/AboutPod.vue:136
+#: src/components/AboutPod.vue:161
+#: src/components/manage/moderation/InstancePolicyCard.vue:8
+#: src/components/manage/moderation/InstancePolicyCard.vue:2
+#: src/components/manage/moderation/InstancePolicyForm.vue:27
+#: src/views/admin/moderation/AccountsDetail.vue:163
+#: src/views/admin/moderation/AccountsDetail.vue:167
+#: src/views/admin/moderation/AccountsDetail.vue:158
+#: src/views/admin/moderation/AccountsDetail.vue:162
 msgctxt "*/*/*/State of feature"
 msgid "Enabled"
 msgstr ""
 
-#: front/src/views/content/remote/ScanForm.vue:60
+#: src/views/content/remote/ScanForm.vue:14
 msgctxt "Content/Library/Input.Placeholder"
 msgid "Enter a library URL"
 msgstr ""
 
-#: front/src/components/library/Radios.vue:211
+#: src/components/library/Radios.vue:35
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Enter a radio name…"
 msgstr ""
 
-#: front/src/components/library/Albums.vue:189
+#: src/components/library/Albums.vue:40
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Enter album title…"
 msgstr ""
 
-#: front/src/components/playlists/PlaylistModal.vue:229
+#: src/components/playlists/PlaylistModal.vue:33
 msgctxt "Popup/Playlist/Form/Placeholder"
 msgid "Enter playlist name"
 msgstr ""
 
-#: front/src/views/playlists/List.vue:177
+#: src/views/playlists/List.vue:38
 msgctxt "Content/Playlist/Placeholder/Call to action"
 msgid "Enter playlist name…"
 msgstr ""
 
-#: front/src/views/auth/PasswordReset.vue:88
+#: src/views/auth/PasswordReset.vue:15
 msgctxt "Content/Signup/Input.Placeholder"
 msgid "Enter the e-mail address linked to your account"
 msgstr ""
 
-#: front/src/components/auth/SignupForm.vue:195
+#: src/components/auth/SignupForm.vue:40
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your e-mail address"
 msgstr ""
 
-#: front/src/components/auth/SignupForm.vue:190
-#: front/src/components/auth/SignupForm.vue:192
+#: src/components/auth/SignupForm.vue:35
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your invitation code (case insensitive)"
 msgstr ""
 
-#: front/src/components/auth/SignupForm.vue:194
+#: src/components/auth/SignupForm.vue:39
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your username"
 msgstr ""
 
-#: front/src/components/auth/LoginForm.vue:115
+#: src/components/auth/LoginForm.vue:26
 msgctxt "Content/Login/Input.Placeholder"
 msgid "Enter your username or e-mail address"
 msgstr ""
 
-#: front/src/components/audio/PlayButton.vue:28
-#: front/src/components/audio/podcast/Modal.vue:269
-#: front/src/components/audio/track/Modal.vue:269
+#: src/components/audio/PlayButton.vue:28
+#: src/components/audio/podcast/Modal.vue:41
+#: src/components/audio/track/Modal.vue:41
 msgctxt "*/Queue/Dropdown/Button/Label/Short"
 msgid "Episode details"
 msgstr ""
 
-#: front/src/components/library/TrackDetail.vue:12
-#: front/src/components/library/TrackDetail.vue:7
+#: src/components/library/TrackDetail.vue:13
+#: src/components/library/TrackDetail.vue:8
 msgctxt "Content/*/*"
 msgid "Episode Details"
 msgstr ""
 
-#: front/src/components/library/AlbumDetail.vue:3
+#: src/components/library/AlbumDetail.vue:3
 msgctxt "Content/Channels/*"
 msgid "Episodes"
 msgstr ""
 
-#: front/src/components/auth/SubsonicTokenForm.vue:36
-#: front/src/views/content/libraries/Form.vue:9
+#: src/components/auth/SubsonicTokenForm.vue:36
+#: src/views/content/libraries/Form.vue:9
 msgctxt "Content/*/Error message.Title"
 msgid "Error"
 msgstr ""
 
-#: front/src/components/federation/FetchButton.vue:62
-#: front/src/components/federation/FetchButton.vue:50
-#: front/src/components/library/ImportStatusModal.vue:44
-#: front/src/components/library/ImportStatusModal.vue:15
+#: src/components/federation/FetchButton.vue:62
+#: src/components/federation/FetchButton.vue:50
+#: src/components/library/ImportStatusModal.vue:44
+#: src/components/library/ImportStatusModal.vue:15
 msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Error detail"
 msgstr ""
 
-#: front/src/components/federation/FetchButton.vue:52
-#: front/src/components/federation/FetchButton.vue:40
-#: front/src/components/library/ImportStatusModal.vue:34
-#: front/src/components/library/ImportStatusModal.vue:5
+#: src/components/federation/FetchButton.vue:52
+#: src/components/federation/FetchButton.vue:40
+#: src/components/library/ImportStatusModal.vue:34
+#: src/components/library/ImportStatusModal.vue:5
 msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Error type"
 msgstr ""
 
-#: front/src/components/common/ActionTable.vue:76
+#: src/components/common/ActionTable.vue:76
 msgctxt "Content/*/Error message/Header"
 msgid "Error while applying action"
 msgstr ""
 
-#: front/src/views/auth/PasswordReset.vue:12
+#: src/views/auth/PasswordReset.vue:12
 msgctxt "Content/Signup/Card.Title"
 msgid "Error while asking for a password reset"
 msgstr ""
 
-#: front/src/components/auth/Authorize.vue:11
+#: src/components/auth/Authorize.vue:11
 msgctxt "Popup/Moderation/Error message"
 msgid "Error while authorizing application"
 msgstr ""
 
-#: front/src/views/auth/PasswordResetConfirm.vue:8
+#: src/views/auth/PasswordResetConfirm.vue:8
 msgctxt "Content/Signup/Card.Title"
 msgid "Error while changing your password"
 msgstr ""
 
-#: front/src/components/channels/AlbumForm.vue:4
+#: src/components/channels/AlbumForm.vue:4
 msgctxt "Content/*/Error message.Title"
 msgid "Error while creating"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsList.vue:11
+#: src/views/admin/moderation/DomainsList.vue:11
 msgctxt "Content/Moderation/Message.Title"
 msgid "Error while creating domain"
 msgstr ""
 
-#: front/src/components/moderation/FilterModal.vue:11
+#: src/components/moderation/FilterModal.vue:11
 msgctxt "Popup/Moderation/Error message"
 msgid "Error while creating filter"
 msgstr ""
 
-#: front/src/components/manage/users/InvitationForm.vue:5
+#: src/components/manage/users/InvitationForm.vue:5
 msgctxt "Content/Admin/Error message.Title"
 msgid "Error while creating invitation"
 msgstr ""
 
-#: front/src/components/manage/moderation/InstancePolicyForm.vue:12
+#: src/components/manage/moderation/InstancePolicyForm.vue:12
 msgctxt "Content/Moderation/Error message.Title"
 msgid "Error while creating rule"
 msgstr ""
 
-#: front/src/components/auth/Authorize.vue:16
+#: src/components/auth/Authorize.vue:16
 msgctxt "Popup/Moderation/Error message"
 msgid "Error while fetching application data"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:172
-#: front/src/views/admin/moderation/DomainsDetail.vue:167
-#: front/src/views/admin/moderation/DomainsDetail.vue:8
+#: src/views/admin/moderation/DomainsDetail.vue:172
+#: src/views/admin/moderation/DomainsDetail.vue:167
+#: src/views/admin/moderation/DomainsDetail.vue:8
 msgctxt "Content/Moderation/Table"
 msgid "Error while fetching node info"
 msgstr ""
 
-#: front/src/components/RemoteSearchForm.vue:20
+#: src/components/RemoteSearchForm.vue:20
 msgctxt "Content/*/Error message.Title"
 msgid "Error while fetching object"
 msgstr ""
 
-#: front/src/components/library/FileUpload.vue:165
+#: src/components/library/FileUpload.vue:165
 msgctxt "Content/*/Error message.Title"
 msgid "Error while launching import"
 msgstr ""
 
-#: front/src/components/channels/UploadForm.vue:4
+#: src/components/channels/UploadForm.vue:4
 msgctxt "Content/*/Error message.Title"
 msgid "Error while publishing"
 msgstr ""
 
-#: front/src/components/audio/ChannelForm.vue:4
+#: src/components/audio/ChannelForm.vue:4
 msgctxt "Content/*/Error message.Title"
 msgid "Error while saving channel"
 msgstr ""
 
-#: front/src/components/auth/Plugin.vue:14
+#: src/components/auth/Plugin.vue:14
 msgctxt "Content/*/Error message.Title"
 msgid "Error while saving plugin"
 msgstr ""
 
-#: front/src/components/admin/SettingsGroup.vue:8
-#: front/src/components/federation/FetchButton.vue:113
+#: src/components/admin/SettingsGroup.vue:8
+#: src/components/federation/FetchButton.vue:113
 msgctxt "Content/*/Error message.Title"
 msgid "Error while saving settings"
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:50
+#: src/components/library/EditForm.vue:50
 msgctxt "Content/Library/Error message.Title"
 msgid "Error while submitting edit"
 msgstr ""
 
-#: front/src/components/manage/moderation/NoteForm.vue:4
+#: src/components/manage/moderation/NoteForm.vue:4
 msgctxt "Content/Moderation/Error message.Title"
 msgid "Error while submitting note"
 msgstr ""
 
-#: front/src/components/moderation/ReportModal.vue:14
+#: src/components/moderation/ReportModal.vue:14
 msgctxt "Popup/Moderation/Error message"
 msgid "Error while submitting report"
 msgstr ""
 
-#: front/src/components/common/RenderedDescription.vue:29
+#: src/components/common/RenderedDescription.vue:29
 msgctxt "Content/Channels/Error message.Title"
 msgid "Error while updating description"
 msgstr ""
 
-#: front/src/components/channels/UploadForm.vue:94
-#: front/src/components/channels/UploadForm.vue:59
-#: front/src/components/channels/UploadForm.vue:48
-#: front/src/components/channels/UploadForm.vue:4
+#: src/components/channels/UploadForm.vue:94
+#: src/components/channels/UploadForm.vue:59
+#: src/components/channels/UploadForm.vue:48
+#: src/components/channels/UploadForm.vue:4
 msgctxt "Channels/*/*"
 msgid "Errored"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:36
-#: front/src/components/mixins/Translations.vue:37
+#: src/components/mixins/Translations.vue:36
 msgctxt "Content/Library/Table/Short"
 msgid "Errored"
 msgstr ""
 
-#: front/src/views/content/libraries/Quota.vue:113
+#: src/views/content/libraries/Quota.vue:113
 msgctxt "Content/Library/Label"
 msgid "Errored files"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:17
-#: front/src/components/mixins/Translations.vue:18
+#: src/components/mixins/Translations.vue:17
 msgctxt "Content/Settings/Dropdown/Short"
 msgid "Everyone"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:11
-#: front/src/components/mixins/Translations.vue:12
+#: src/components/mixins/Translations.vue:11
 msgctxt "Content/Settings/Dropdown"
 msgid "Everyone on this instance"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:12
-#: front/src/components/mixins/Translations.vue:13
+#: src/components/mixins/Translations.vue:12
 msgctxt "Content/Settings/Dropdown"
 msgid "Everyone, across all instances"
 msgstr ""
 
-#: front/src/components/library/radios/Builder.vue:83
+#: src/components/library/radios/Builder.vue:83
 msgctxt "Content/Radio/Table.Label/Verb"
 msgid "Exclude"
 msgstr ""
 
-#: front/src/components/library/radios/Filter.vue:7
+#: src/components/library/radios/Filter.vue:7
 msgctxt "Popup/Radio/Title/Noun"
 msgid "Exclude"
 msgstr ""
 
-#: front/src/components/library/Artists.vue:66
+#: src/components/library/Artists.vue:66
 msgctxt "Content/Search/Checkbox/Noun"
 msgid "Exclude Compilation Artists"
 msgstr ""
 
-#: front/src/components/common/CollapseLink.vue:2
+#: src/components/common/CollapseLink.vue:2
 msgctxt "*/*/Button,Label"
 msgid "Expand"
 msgstr ""
 
-#: front/src/App.vue:101 src/components/audio/Player.vue:412
+#: src/AppOld.vue:87
+#: src/components/audio/Player.vue:72
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Expand queue"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:138
+#: src/components/ShortcutsModal.vue:78
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Expand queue/player view"
 msgstr ""
 
-#: front/src/components/manage/users/InvitationsTable.vue:60
-#: front/src/components/manage/users/InvitationsTable.vue:17
-#: front/src/components/mixins/Translations.vue:74
-#: front/src/components/mixins/Translations.vue:75
+#: src/components/manage/users/InvitationsTable.vue:60
+#: src/components/manage/users/InvitationsTable.vue:17
+#: src/components/mixins/Translations.vue:74
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Expiration date"
 msgstr ""
 
-#: front/src/components/manage/users/InvitationsTable.vue:78
-#: front/src/components/manage/users/InvitationsTable.vue:8
+#: src/components/manage/users/InvitationsTable.vue:78
+#: src/components/manage/users/InvitationsTable.vue:8
 msgctxt "Content/Admin/Table"
 msgid "Expired"
 msgstr ""
 
-#: front/src/components/manage/users/InvitationsTable.vue:30
+#: src/components/manage/users/InvitationsTable.vue:30
 msgctxt "Content/Admin/Dropdown/Adjective"
 msgid "Expired/used"
 msgstr ""
 
-#: front/src/components/manage/moderation/InstancePolicyForm.vue:204
+#: src/components/manage/moderation/InstancePolicyForm.vue:34
 msgctxt "Content/Moderation/Help text"
 msgid "Explain why you're applying this policy: this will help you remember why you added this rule. Depending on your pod configuration, this may be displayed publicly to help users understand the moderation rules in place."
 msgstr ""
 
-#: front/src/components/Sidebar.vue:144
+#: src/components/Sidebar.vue:144
 msgctxt "*/*/*/Verb"
 msgid "Explore"
 msgstr ""
 
-#: front/src/components/manage/library/UploadsTable.vue:48
-#: front/src/views/content/libraries/FilesTable.vue:38
+#: src/components/manage/library/UploadsTable.vue:48
+#: src/views/content/libraries/FilesTable.vue:38
 msgctxt "Content/Library/Dropdown"
 msgid "Failed"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:80
+#: src/views/content/remote/Card.vue:80
 msgctxt "Content/Library/Card.List item/Noun"
 msgid "Failed tracks:"
 msgstr ""
 
-#: front/src/views/admin/ChannelDetail.vue:221 src/views/admin/ChannelDetail.vue:216
-#: front/src/views/admin/library/AlbumDetail.vue:202
-#: front/src/views/admin/library/AlbumDetail.vue:197
-#: front/src/views/admin/library/ArtistDetail.vue:201
-#: front/src/views/admin/library/ArtistDetail.vue:196
-#: front/src/views/admin/library/TrackDetail.vue:267
-#: front/src/views/admin/library/TrackDetail.vue:262
+#: src/views/admin/ChannelDetail.vue:221
+#: src/views/admin/ChannelDetail.vue:216
+#: src/views/admin/library/AlbumDetail.vue:202
+#: src/views/admin/library/AlbumDetail.vue:197
+#: src/views/admin/library/ArtistDetail.vue:201
+#: src/views/admin/library/ArtistDetail.vue:196
+#: src/views/admin/library/TrackDetail.vue:267
+#: src/views/admin/library/TrackDetail.vue:262
 msgctxt "*/*/*"
 msgid "Favorited tracks"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:221 src/components/mixins/Translations.vue:103
-#: front/src/components/mixins/Translations.vue:104
+#: src/components/Sidebar.vue:221
+#: src/components/mixins/Translations.vue:103
 msgctxt "Sidebar/Favorites/List item.Link/Noun"
 msgid "Favorites"
 msgstr ""
 
-#: front/src/components/AboutPod.vue:33
+#: src/components/AboutPod.vue:33
 msgctxt "Content/About/Header"
 msgid "Features"
 msgstr ""
 
-#: front/src/components/AboutPod.vue:83
+#: src/components/AboutPod.vue:83
 msgctxt "Content/About/Header/Name"
 msgid "Features"
 msgstr ""
 
-#: front/src/components/AboutPod.vue:110 src/components/audio/SearchBar.vue:94
-#: front/src/components/audio/SearchBar.vue:175 src/views/admin/Settings.vue:75
+#: src/components/AboutPod.vue:110
+#: src/components/audio/SearchBar.vue:71
+#: src/components/audio/SearchBar.vue:152
+#: src/views/admin/Settings.vue:31
 msgctxt "*/*/*"
 msgid "Federation"
 msgstr ""
 
-#: front/src/components/RemoteSearchForm.vue:11
+#: src/components/RemoteSearchForm.vue:11
 msgctxt "Content/Search/Input.Label/Noun"
 msgid "Fediverse"
 msgstr ""
 
-#: front/src/components/audio/ChannelForm.vue:43
-#: front/src/components/audio/ChannelForm.vue:29
-#: front/src/components/audio/ChannelForm.vue:9
+#: src/components/audio/ChannelForm.vue:43
+#: src/components/audio/ChannelForm.vue:29
+#: src/components/audio/ChannelForm.vue:9
 msgctxt "Content/Channel/*"
 msgid "Fediverse handle"
 msgstr ""
 
-#: front/src/components/RemoteSearchForm.vue:131
+#: src/components/RemoteSearchForm.vue:33
 msgctxt "*/*/*"
 msgid "Fediverse object"
 msgstr ""
 
-#: front/src/components/library/EditCard.vue:48
+#: src/components/library/EditCard.vue:48
 msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "Field"
 msgstr ""
 
-#: front/src/components/admin/SignupFormBuilder.vue:43
+#: src/components/admin/SignupFormBuilder.vue:43
 msgctxt "*/*/Form-builder,Help"
 msgid "Field label"
 msgstr ""
 
-#: front/src/components/admin/SignupFormBuilder.vue:48
+#: src/components/admin/SignupFormBuilder.vue:48
 msgctxt "*/*/Form-builder,Help"
 msgid "Field type"
 msgstr ""
 
-#: front/src/components/library/FileUpload.vue:87
+#: src/components/library/FileUpload.vue:87
 msgctxt "Content/Library/Table.Label"
 msgid "Filename"
 msgstr ""
 
-#: front/src/components/channels/UploadModal.vue:6
+#: src/components/channels/UploadModal.vue:6
 msgctxt "Popup/Channels/Title"
 msgid "Files to upload"
 msgstr ""
 
-#: front/src/components/playlists/PlaylistModal.vue:56
+#: src/components/playlists/PlaylistModal.vue:56
 msgctxt "Popup/Playlist/Label"
 msgid "Filter"
 msgstr ""
 
-#: front/src/views/channels/SubscriptionsList.vue:103
+#: src/views/channels/SubscriptionsList.vue:31
 msgctxt "Content/Subscriptions/Form.Placeholder"
 msgid "Filter by name…"
 msgstr ""
 
-#: front/src/components/library/radios/Builder.vue:78
+#: src/components/library/radios/Builder.vue:78
 msgctxt "Content/Radio/Table.Label/Noun"
 msgid "Filter name"
 msgstr ""
 
-#: front/src/components/About.vue:160
+#: src/components/About.vue:165
 msgctxt "Content/About/Header"
 msgid "Find an app"
 msgstr ""
 
-#: front/src/components/About.vue:149
+#: src/components/About.vue:154
 msgctxt "Content/About/Header"
 msgid "Find another pod"
 msgstr ""
 
-#: front/src/components/About.vue:60
+#: src/components/About.vue:60
 msgctxt "Content/About/Link"
 msgid "Find another pod"
 msgstr ""
 
-#: front/src/components/Home.vue:147
+#: src/components/Home.vue:147
 msgctxt "Content/Home/Link"
 msgid "Find another pod"
 msgstr ""
 
-#: front/src/components/channels/UploadModal.vue:63
+#: src/components/channels/UploadModal.vue:63
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Finish later"
 msgstr ""
 
-#: front/src/components/manage/library/UploadsTable.vue:53
-#: front/src/components/mixins/Translations.vue:40
-#: front/src/views/content/libraries/FilesTable.vue:43
-#: front/src/components/mixins/Translations.vue:41
+#: src/components/manage/library/UploadsTable.vue:53
+#: src/components/mixins/Translations.vue:40
+#: src/views/content/libraries/FilesTable.vue:43
 msgctxt "Content/Library/*"
 msgid "Finished"
 msgstr ""
 
-#: front/src/components/manage/moderation/AccountsTable.vue:57
-#: front/src/components/manage/moderation/AccountsTable.vue:17
-#: front/src/components/manage/moderation/DomainsTable.vue:75
-#: front/src/components/manage/moderation/DomainsTable.vue:17
-#: front/src/views/admin/ChannelDetail.vue:201 src/views/admin/ChannelDetail.vue:196
-#: front/src/views/admin/library/AlbumDetail.vue:182
-#: front/src/views/admin/library/AlbumDetail.vue:177
-#: front/src/views/admin/library/ArtistDetail.vue:181
-#: front/src/views/admin/library/ArtistDetail.vue:176
-#: front/src/views/admin/library/LibraryDetail.vue:176
-#: front/src/views/admin/library/LibraryDetail.vue:171
-#: front/src/views/admin/library/TagDetail.vue:112
-#: front/src/views/admin/library/TagDetail.vue:107
-#: front/src/views/admin/library/TrackDetail.vue:247
-#: front/src/views/admin/library/TrackDetail.vue:242
-#: front/src/views/admin/library/UploadDetail.vue:186
-#: front/src/views/admin/library/UploadDetail.vue:181
-#: front/src/views/admin/moderation/AccountsDetail.vue:258
-#: front/src/views/admin/moderation/AccountsDetail.vue:253
-#: front/src/views/admin/moderation/DomainsDetail.vue:210
-#: front/src/views/admin/moderation/DomainsDetail.vue:205
+#: src/components/manage/moderation/AccountsTable.vue:57
+#: src/components/manage/moderation/AccountsTable.vue:17
+#: src/components/manage/moderation/DomainsTable.vue:75
+#: src/components/manage/moderation/DomainsTable.vue:17
+#: src/views/admin/ChannelDetail.vue:201
+#: src/views/admin/ChannelDetail.vue:196
+#: src/views/admin/library/AlbumDetail.vue:182
+#: src/views/admin/library/AlbumDetail.vue:177
+#: src/views/admin/library/ArtistDetail.vue:181
+#: src/views/admin/library/ArtistDetail.vue:176
+#: src/views/admin/library/LibraryDetail.vue:176
+#: src/views/admin/library/LibraryDetail.vue:171
+#: src/views/admin/library/TagDetail.vue:112
+#: src/views/admin/library/TagDetail.vue:107
+#: src/views/admin/library/TrackDetail.vue:247
+#: src/views/admin/library/TrackDetail.vue:242
+#: src/views/admin/library/UploadDetail.vue:186
+#: src/views/admin/library/UploadDetail.vue:181
+#: src/views/admin/moderation/AccountsDetail.vue:258
+#: src/views/admin/moderation/AccountsDetail.vue:253
+#: src/views/admin/moderation/DomainsDetail.vue:210
+#: src/views/admin/moderation/DomainsDetail.vue:205
 msgctxt "Content/Moderation/Table.Label/Short (Value is a date)"
 msgid "First seen"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:71
-#: front/src/components/mixins/Translations.vue:72
+#: src/components/mixins/Translations.vue:71
 msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "First seen date"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:80
+#: src/components/ShortcutsModal.vue:20
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Focus searchbar"
 msgstr ""
 
-#: front/src/components/audio/LibraryFollowButton.vue:9
-#: front/src/views/content/remote/Card.vue:106 src/views/content/remote/Card.vue:2
+#: src/components/audio/LibraryFollowButton.vue:9
+#: src/views/content/remote/Card.vue:106
+#: src/views/content/remote/Card.vue:2
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Follow"
 msgstr ""
 
-#: front/src/views/content/Home.vue:54
+#: src/views/content/Home.vue:54
 msgctxt "Content/Library/Paragraph"
 msgid "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."
 msgstr ""
 
-#: front/src/views/content/Home.vue:49
+#: src/views/content/Home.vue:49
 msgctxt "Content/Library/Title/Verb"
 msgid "Follow remote libraries"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:113 src/views/content/remote/Card.vue:9
-#: front/src/views/content/remote/Card.vue:3
+#: src/views/content/remote/Card.vue:113
+#: src/views/content/remote/Card.vue:9
+#: src/views/content/remote/Card.vue:3
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Follow request pending approval"
 msgstr ""
 
-#: front/src/components/manage/library/LibrariesTable.vue:86
-#: front/src/components/manage/library/LibrariesTable.vue:27
-#: front/src/components/mixins/Translations.vue:91
-#: front/src/views/admin/library/LibraryDetail.vue:186
-#: front/src/views/admin/library/LibraryDetail.vue:181 src/views/library/Edit.vue:13
-#: front/src/components/mixins/Translations.vue:92
+#: src/components/manage/library/LibrariesTable.vue:86
+#: src/components/manage/library/LibrariesTable.vue:27
+#: src/components/mixins/Translations.vue:91
+#: src/views/admin/library/LibraryDetail.vue:186
+#: src/views/admin/library/LibraryDetail.vue:181
+#: src/views/library/Edit.vue:13
 msgctxt "Content/Federation/*/Noun"
 msgid "Followers"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:111
-#: front/src/components/mixins/Translations.vue:112
+#: src/components/mixins/Translations.vue:111
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Follows"
 msgstr ""
 
-#: front/src/components/common/UserMenu.vue:168
-#: front/src/components/common/UserModal.vue:197
+#: src/components/common/UserMenu.vue:21
+#: src/components/common/UserModal.vue:29
 msgctxt "Sidebar/*/Listitem.Link"
 msgid "Forum"
 msgstr ""
 
-#: front/src/components/moderation/ReportModal.vue:64
+#: src/components/moderation/ReportModal.vue:64
 msgctxt "*/*/Field,Help"
 msgid "Forward an anonymized copy of your report to the server hosting this element."
 msgstr ""
 
-#: front/src/components/moderation/ReportModal.vue:61
+#: src/components/moderation/ReportModal.vue:61
 msgctxt "*/*/Field.Label/Verb"
 msgid "Forward to %{ domain}"
 msgstr ""
 
-#: front/src/components/auth/Authorize.vue:46
+#: src/components/auth/Authorize.vue:46
 msgctxt "Content/Auth/Label/Noun"
 msgid "Full access"
 msgstr ""
 
-#: front/src/components/About.vue:24
+#: src/components/About.vue:24
 msgctxt "Content/About/Paragraph"
 msgid "Funkwhale is a community-driven project that lets you listen and share music and audio within a decentralized, open network."
 msgstr ""
 
-#: front/src/components/auth/SubsonicTokenForm.vue:13
+#: src/components/auth/SubsonicTokenForm.vue:13
 msgctxt "Content/Settings/Paragraph'"
 msgid "Funkwhale is compatible with other music players that support the Subsonic API."
 msgstr ""
 
-#: front/src/components/Home.vue:105
+#: src/components/Home.vue:105
 msgctxt "Content/Home/Paragraph"
 msgid "Funkwhale is free and developed by a friendly community of volunteers."
 msgstr ""
 
-#: front/src/components/AboutPod.vue:93
+#: src/components/AboutPod.vue:93
 msgctxt "*/*/*"
 msgid "Funkwhale version"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:72
+#: src/components/ShortcutsModal.vue:12
 msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "General shortcuts"
 msgstr ""
 
-#: front/src/components/manage/users/InvitationForm.vue:22
+#: src/components/manage/users/InvitationForm.vue:22
 msgctxt "Content/Admin/Button.Label/Verb"
 msgid "Get a new invitation"
 msgstr ""
 
-#: front/src/views/content/Home.vue:23 src/views/content/Home.vue:41
-#: front/src/views/content/Home.vue:59
+#: src/views/content/Home.vue:23
+#: src/views/content/Home.vue:41
+#: src/views/content/Home.vue:59
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Get started"
 msgstr ""
 
-#: front/src/components/Footer.vue:71 src/components/library/ImportStatusModal.vue:59
-#: front/src/components/library/ImportStatusModal.vue:30
+#: src/components/library/ImportStatusModal.vue:59
+#: src/components/library/ImportStatusModal.vue:30
 msgctxt "Footer/*/Link"
 msgid "Getting help"
 msgstr ""
 
-#: front/src/components/common/ActionTable.vue:27
-#: front/src/components/common/ActionTable.vue:50
+#: src/components/common/ActionTable.vue:27
+#: src/components/common/ActionTable.vue:50
 msgctxt "Content/*/Button.Label/Short, Verb"
 msgid "Go"
 msgstr ""
 
-#: front/src/components/PageNotFound.vue:20
+#: src/components/PageNotFound.vue:20
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Go to home page"
 msgstr ""
 
-#: front/src/components/Footer.vue:23
-msgctxt "Footer/*/List item.Link"
-msgid "Go to Library"
-msgstr ""
-
-#: front/src/views/Notifications.vue:49 src/views/Notifications.vue:105
+#: src/views/Notifications.vue:49
+#: src/views/Notifications.vue:105
 msgctxt "Content/Notifications/Button.Label"
 msgid "Got it!"
 msgstr ""
 
-#: front/src/components/About.vue:73
+#: src/components/About.vue:77
 msgid "Hello"
 msgstr ""
 
-#: front/src/components/common/UserMenu.vue:167
-#: front/src/components/common/UserModal.vue:196
-#: front/src/components/common/UserModal.vue:199
+#: src/components/common/UserMenu.vue:20
+#: src/components/common/UserModal.vue:28
+#: src/components/common/UserModal.vue:31
 msgctxt "Sidebar/*/Listitem.Link"
 msgid "Help"
 msgstr ""
 
-#: front/src/components/admin/SignupFormBuilder.vue:21
+#: src/components/admin/SignupFormBuilder.vue:21
 msgctxt "*/*/Label"
 msgid "Help text"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:176
+#: src/components/auth/Settings.vue:176
 msgctxt "Content/Settings/Title"
 msgid "Hidden artists"
 msgstr ""
 
-#: front/src/components/manage/moderation/InstancePolicyForm.vue:208
+#: src/components/manage/moderation/InstancePolicyForm.vue:38
 msgctxt "Content/Moderation/Help text"
 msgid "Hide account or domain content, except from followers."
 msgstr ""
 
-#: front/src/components/moderation/FilterModal.vue:64
+#: src/components/moderation/FilterModal.vue:64
 msgctxt "Popup/*/Button.Label"
 msgid "Hide content"
 msgstr ""
 
-#: front/src/components/audio/PlayButton.vue:33
+#: src/components/audio/PlayButton.vue:33
 msgctxt "*/Queue/Dropdown/Button/Label/Short"
 msgid "Hide content from this artist"
 msgstr ""
 
-#: front/src/components/Queue.vue:400 src/components/audio/Player.vue:424
+#: src/components/Queue.vue:59
+#: src/components/audio/Player.vue:84
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Hide content from this artist…"
 msgstr ""
 
-#: front/src/components/Home.vue:357
+#: src/components/Home.vue:30
 msgctxt "Head/Home/Title"
 msgid "Home"
 msgstr ""
 
-#: front/src/components/Footer.vue:28
-msgctxt "Footer/*/List item.Link"
-msgid "Home Page"
-msgstr ""
-
-#: front/src/components/audio/ChannelForm.vue:305
+#: src/components/audio/ChannelForm.vue:56
 msgctxt "Content/Channels/Help"
 msgid "Host your episodes and keep your community updated."
 msgstr ""
 
-#: front/src/components/About.vue:116 src/components/About.vue:14
-#: front/src/components/AboutPod.vue:223 src/components/AboutPod.vue:11
+#: src/components/About.vue:121
+#: src/components/About.vue:14
+#: src/components/AboutPod.vue:223
+#: src/components/AboutPod.vue:11
 msgctxt "Content/About/*"
 msgid "hour of music"
 msgid_plural "hours of music"
 msgstr[0] ""
 msgstr[1] ""
 
-#: front/src/components/auth/SubsonicTokenForm.vue:20
+#: src/components/auth/SubsonicTokenForm.vue:20
 msgctxt "Content/Settings/Paragraph"
 msgid "However, accessing Funkwhale from those clients requires a separate password you can set below."
 msgstr ""
 
-#: front/src/components/RemoteSearchForm.vue:128
+#: src/components/RemoteSearchForm.vue:30
 msgctxt "Head/Fetch/Field.Placeholder"
 msgid "https://website.example.com/rss.xml"
 msgstr ""
 
-#: front/src/views/auth/PasswordResetConfirm.vue:36
-#: front/src/views/auth/PasswordResetConfirm.vue:2
+#: src/views/auth/PasswordResetConfirm.vue:36
+#: src/views/auth/PasswordResetConfirm.vue:2
 msgctxt "Content/Signup/Paragraph"
 msgid "If the e-mail address provided in the previous step is valid and linked to a user account, you should receive an e-mail with reset instructions in the next couple of minutes."
 msgstr ""
 
-#: front/src/views/content/Home.vue:15
+#: src/views/content/Home.vue:15
 msgctxt "Content/Library/Paragraph"
 msgid "If you are a musician or a podcaster, channels are designed for you!"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:289
+#: src/components/auth/Settings.vue:289
 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/auth/LoginForm.vue:10
+#: src/components/auth/LoginForm.vue:10
 msgctxt "Content/Login/Error message.List item/Call to action"
 msgid "If you signed-up recently, you may need to wait before our moderation team review your account, or verify your e-mail address."
 msgstr ""
 
-#: front/src/views/channels/DetailBase.vue:77 src/views/channels/DetailBase.vue:72
-#: front/src/views/channels/DetailBase.vue:8
+#: src/views/channels/DetailBase.vue:77
+#: src/views/channels/DetailBase.vue:72
+#: src/views/channels/DetailBase.vue:8
 msgctxt "Content/Channels/Label"
 msgid "If you're using Mastodon or other fediverse applications, you can subscribe to this account:"
 msgstr ""
 
-#: front/src/components/channels/UploadForm.vue:55
-#: front/src/components/channels/UploadForm.vue:20
-#: front/src/components/channels/UploadForm.vue:9
+#: src/components/channels/UploadForm.vue:55
+#: src/components/channels/UploadForm.vue:20
+#: src/components/channels/UploadForm.vue:9
 msgctxt "*/*/*"
 msgid "Ignore"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:50
-#: front/src/components/mixins/Translations.vue:51
+#: src/components/mixins/Translations.vue:50
 msgctxt "Content/Moderation/Dropdown"
 msgid "Illegal content"
 msgstr ""
 
-#: front/src/components/library/FsBrowser.vue:5
+#: src/components/library/FsBrowser.vue:5
 msgctxt "Content/Library/Button/Verb"
 msgid "Import"
 msgstr ""
 
-#: front/src/components/library/ImportStatusModal.vue:3
+#: src/components/library/ImportStatusModal.vue:3
 msgctxt "Popup/Import/Title"
 msgid "Import detail"
 msgstr ""
 
-#: front/src/components/library/FsLogs.vue:4
+#: src/components/library/FsLogs.vue:4
 msgctxt "Content/Library/Paragraph"
 msgid "Import hasn't started yet"
 msgstr ""
 
-#: front/src/components/library/FileUpload.vue:159
+#: src/components/library/FileUpload.vue:159
 msgctxt "Content/Library/Title/Verb"
 msgid "Import music from your server"
 msgstr ""
 
-#: front/src/components/manage/library/UploadsTable.vue:30
-#: front/src/components/manage/library/UploadsTable.vue:117
-#: front/src/components/manage/library/UploadsTable.vue:27
-#: front/src/views/admin/library/UploadDetail.vue:144
-#: front/src/views/admin/library/UploadDetail.vue:139
-#: front/src/views/content/libraries/FilesTable.vue:14
-#: front/src/views/content/libraries/FilesTable.vue:114
-#: front/src/views/content/libraries/FilesTable.vue:22
+#: src/components/manage/library/UploadsTable.vue:30
+#: src/components/manage/library/UploadsTable.vue:117
+#: src/components/manage/library/UploadsTable.vue:27
+#: src/views/admin/library/UploadDetail.vue:144
+#: src/views/admin/library/UploadDetail.vue:139
+#: src/views/content/libraries/FilesTable.vue:14
+#: src/views/content/libraries/FilesTable.vue:114
+#: src/views/content/libraries/FilesTable.vue:22
 msgctxt "Content/*/*/Noun"
 msgid "Import status"
 msgstr ""
 
-#: front/src/components/library/FileUpload.vue:178
-#: front/src/components/library/FileUpload.vue:2
+#: src/components/library/FileUpload.vue:178
+#: src/components/library/FileUpload.vue:2
 msgctxt "Content/Library/Title/Verb"
 msgid "Import status"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:41
-#: front/src/components/mixins/Translations.vue:42
+#: src/components/mixins/Translations.vue:41
 msgctxt "Content/Library/Help text"
 msgid "Imported"
 msgstr ""
 
-#: front/src/components/federation/FetchButton.vue:76
-#: front/src/components/federation/FetchButton.vue:64
+#: src/components/federation/FetchButton.vue:76
+#: src/components/federation/FetchButton.vue:64
 msgctxt "*/*/Error"
 msgid "Impossible to connect to the remote server"
 msgstr ""
 
-#: front/src/components/moderation/FilterModal.vue:34
-#: front/src/components/moderation/FilterModal.vue:13
+#: src/components/moderation/FilterModal.vue:34
+#: src/components/moderation/FilterModal.vue:13
 msgctxt "Popup/Moderation/List item"
 msgid "In \"Recently added\" widget"
 msgstr ""
 
-#: front/src/components/moderation/FilterModal.vue:39
-#: front/src/components/moderation/FilterModal.vue:18
+#: src/components/moderation/FilterModal.vue:39
+#: src/components/moderation/FilterModal.vue:18
 msgctxt "Popup/Moderation/List item"
 msgid "In artists and album listings"
 msgstr ""
 
-#: front/src/components/favorites/TrackFavoriteIcon.vue:3
+#: src/components/favorites/TrackFavoriteIcon.vue:3
 msgctxt "Content/Track/Button.Message"
 msgid "In favorites"
 msgstr ""
 
-#: front/src/components/moderation/FilterModal.vue:29
-#: front/src/components/moderation/FilterModal.vue:8
+#: src/components/moderation/FilterModal.vue:29
+#: src/components/moderation/FilterModal.vue:8
 msgctxt "Popup/Moderation/List item"
 msgid "In other users favorites and listening history"
 msgstr ""
 
-#: front/src/components/moderation/FilterModal.vue:44
-#: front/src/components/moderation/FilterModal.vue:23
+#: src/components/moderation/FilterModal.vue:44
+#: src/components/moderation/FilterModal.vue:23
 msgctxt "Popup/Moderation/List item"
 msgid "In radio suggestions"
 msgstr ""
 
-#: front/src/components/manage/users/UsersTable.vue:89
-#: front/src/components/manage/users/UsersTable.vue:14
+#: src/components/manage/users/UsersTable.vue:89
+#: src/components/manage/users/UsersTable.vue:14
 msgctxt "Content/Admin/Table"
 msgid "Inactive"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:126
+#: src/components/ShortcutsModal.vue:66
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Increase volume"
 msgstr ""
 
-#: front/src/components/playlists/Editor.vue:52
+#: src/components/playlists/Editor.vue:52
 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
+#: src/components/mixins/Translations.vue:16
 msgctxt "Content/Settings/Dropdown/Short"
 msgid "Instance"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:96
-#: front/src/views/admin/moderation/DomainsDetail.vue:91
+#: src/views/admin/moderation/DomainsDetail.vue:96
+#: src/views/admin/moderation/DomainsDetail.vue:91
 msgctxt "Content/Moderation/Title"
 msgid "Instance data"
 msgstr ""
 
-#: front/src/views/admin/Settings.vue:69
+#: src/views/admin/Settings.vue:25
 msgctxt "Content/Admin/Menu"
 msgid "Instance information"
 msgstr ""
 
-#: front/src/components/library/Radios.vue:11
+#: src/components/library/Radios.vue:11
 msgctxt "Content/Radio/Title"
 msgid "Instance radios"
 msgstr ""
 
-#: front/src/views/admin/Settings.vue:64
+#: src/views/admin/Settings.vue:20
 msgctxt "Head/Admin/Title"
 msgid "Instance settings"
 msgstr ""
 
-#: front/src/components/SetInstanceModal.vue:37
+#: src/components/SetInstanceModal.vue:37
 msgctxt "Popup/Instance/Input.Label/Noun"
 msgid "Instance URL"
 msgstr ""
 
-#: front/src/components/manage/moderation/ReportCard.vue:110
-#: front/src/components/manage/moderation/ReportCard.vue:245
-#: front/src/components/manage/moderation/UserRequestCard.vue:100
-#: front/src/components/manage/moderation/UserRequestCard.vue:165
+#: src/components/manage/moderation/ReportCard.vue:110
+#: src/components/manage/moderation/ReportCard.vue:245
+#: src/components/manage/moderation/UserRequestCard.vue:100
+#: src/components/manage/moderation/UserRequestCard.vue:165
 msgctxt "Content/*/*/Noun"
 msgid "Internal notes"
 msgstr ""
 
-#: front/src/components/AboutPod.vue:279
+#: src/components/AboutPod.vue:279
 msgctxt "Content/About/Paragraph"
 msgid "Introduction"
 msgstr ""
 
-#: front/src/components/library/FileUpload.vue:374
-#: front/src/components/library/FileUpload.vue:375
+#: src/components/library/FileUpload.vue:66
 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:198
-#: front/src/components/mixins/Translations.vue:49
-#: front/src/components/mixins/Translations.vue:50
+#: src/components/library/ImportStatusModal.vue:64
+#: src/components/mixins/Translations.vue:49
 msgctxt "Popup/Import/Error.Label"
 msgid "Invalid metadata"
 msgstr ""
 
-#: front/src/components/auth/SignupForm.vue:61
-#: front/src/components/manage/users/InvitationForm.vue:17
+#: src/components/auth/SignupForm.vue:61
+#: src/components/manage/users/InvitationForm.vue:17
 msgctxt "Content/*/Input.Label"
 msgid "Invitation code"
 msgstr ""
 
-#: front/src/views/admin/users/Base.vue:9
-#: front/src/views/admin/users/InvitationsList.vue:26
+#: src/views/admin/users/Base.vue:9
+#: src/views/admin/users/InvitationsList.vue:12
 msgctxt "*/Admin/*/Noun"
 msgid "Invitations"
 msgstr ""
 
-#: front/src/components/manage/moderation/DomainsTable.vue:9
-#: front/src/views/admin/moderation/DomainsDetail.vue:105
-#: front/src/views/admin/moderation/DomainsDetail.vue:100
+#: src/components/manage/moderation/DomainsTable.vue:9
+#: src/views/admin/moderation/DomainsDetail.vue:105
+#: src/views/admin/moderation/DomainsDetail.vue:100
 msgctxt "Content/Moderation/*/Adjective"
 msgid "Is present on allow-list"
 msgstr ""
 
-#: front/src/components/Footer.vue:77 src/components/common/UserMenu.vue:173
+#: src/components/common/UserMenu.vue:26
 msgctxt "Footer/*/List item.Link"
 msgid "Issue tracker"
 msgstr ""
 
-#: front/src/components/common/UserModal.vue:209
+#: src/components/common/UserModal.vue:41
 msgctxt "Sidebar/*/List item.Link"
 msgid "Issue tracker"
 msgstr ""
 
-#: front/src/components/SetInstanceModal.vue:10
+#: src/components/SetInstanceModal.vue:10
 msgctxt "Popup/Instance/Error message.Title"
 msgid "It is not possible to connect to the given URL"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:80
-#: front/src/components/mixins/Translations.vue:81
+#: src/components/mixins/Translations.vue:80
 msgctxt "*/*/*/Noun"
 msgid "Items"
 msgstr ""
 
-#: front/src/components/Footer.vue:57 src/components/ShortcutsModal.vue:3
-#: front/src/components/common/UserMenu.vue:166
-#: front/src/components/common/UserModal.vue:195
+#: src/components/ShortcutsModal.vue:3
+#: src/components/common/UserMenu.vue:19
+#: src/components/common/UserModal.vue:27
 msgctxt "*/*/*/Noun"
 msgid "Keyboard shortcuts"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:221
-#: front/src/views/admin/moderation/DomainsDetail.vue:216
+#: src/views/admin/moderation/DomainsDetail.vue:221
+#: src/views/admin/moderation/DomainsDetail.vue:216
 msgctxt "Content/Moderation/Table.Label.Link"
 msgid "Known accounts"
 msgstr ""
 
-#: front/src/views/content/remote/Home.vue:27 src/views/content/remote/Home.vue:2
+#: src/views/content/remote/Home.vue:27
+#: src/views/content/remote/Home.vue:2
 msgctxt "Content/Library/Title"
 msgid "Known libraries"
 msgstr ""
 
-#: front/src/components/audio/ChannelForm.vue:80
-#: front/src/components/audio/ChannelForm.vue:66
-#: front/src/components/audio/ChannelForm.vue:46
+#: src/components/audio/ChannelForm.vue:80
+#: src/components/audio/ChannelForm.vue:66
+#: src/components/audio/ChannelForm.vue:46
 msgctxt "*/*/*"
 msgid "Language"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:527 src/components/common/UserModal.vue:200
-#: front/src/components/common/UserModal.vue:202 src/components/Sidebar.vue:529
+#: src/components/Sidebar.vue:61
+#: src/components/common/UserModal.vue:32
 msgctxt "Sidebar/Settings/Dropdown.Label/Short, Verb"
 msgid "Language"
 msgstr ""
 
-#: front/src/components/manage/users/UsersTable.vue:60
-#: front/src/components/manage/users/UsersTable.vue:22
-#: front/src/components/mixins/Translations.vue:85
-#: front/src/views/admin/moderation/AccountsDetail.vue:225
-#: front/src/views/admin/moderation/AccountsDetail.vue:220
-#: front/src/components/mixins/Translations.vue:86
+#: src/components/manage/users/UsersTable.vue:60
+#: src/components/manage/users/UsersTable.vue:22
+#: src/components/mixins/Translations.vue:85
+#: src/views/admin/moderation/AccountsDetail.vue:225
+#: src/views/admin/moderation/AccountsDetail.vue:220
 msgctxt "Content/Profile/Table.Label/Short, Noun (Value is a date)"
 msgid "Last activity"
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:202
-#: front/src/views/admin/moderation/AccountsDetail.vue:197
-#: front/src/views/admin/moderation/DomainsDetail.vue:120
-#: front/src/views/admin/moderation/DomainsDetail.vue:115
+#: src/views/admin/moderation/AccountsDetail.vue:202
+#: src/views/admin/moderation/AccountsDetail.vue:197
+#: src/views/admin/moderation/DomainsDetail.vue:120
+#: src/views/admin/moderation/DomainsDetail.vue:115
 msgctxt "Content/*/Table.Label"
 msgid "Last checked"
 msgstr ""
 
-#: front/src/components/playlists/PlaylistModal.vue:71
+#: src/components/playlists/PlaylistModal.vue:71
 msgctxt "Popup/Playlist/Table.Label/Short"
 msgid "Last modification"
 msgstr ""
 
-#: front/src/components/manage/moderation/AccountsTable.vue:62
-#: front/src/components/manage/moderation/AccountsTable.vue:22
+#: src/components/manage/moderation/AccountsTable.vue:62
+#: src/components/manage/moderation/AccountsTable.vue:22
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Last seen"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:72
-#: front/src/components/mixins/Translations.vue:73
+#: src/components/mixins/Translations.vue:72
 msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "Last seen date"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:76 src/views/content/remote/Card.vue:1
+#: src/views/content/remote/Card.vue:76
+#: src/views/content/remote/Card.vue:1
 msgctxt "Content/Library/Card.List item/Noun"
 msgid "Last update:"
 msgstr ""
 
-#: front/src/App.vue:220
+#: src/AppOld.vue:196
 msgctxt "App/Message/Paragraph"
 msgid "Later"
 msgstr ""
 
-#: front/src/views/channels/DetailOverview.vue:59
+#: src/views/channels/DetailOverview.vue:59
 msgctxt "Content/Channel/Paragraph"
 msgid "Latest episodes"
 msgstr ""
 
-#: front/src/views/channels/DetailOverview.vue:62
+#: src/views/channels/DetailOverview.vue:62
 msgctxt "Content/Channel/Paragraph"
 msgid "Latest tracks"
 msgstr ""
 
-#: front/src/components/common/ActionTable.vue:44
+#: src/components/common/ActionTable.vue:44
 msgctxt "Modal/*/Button.Label/Short, Verb"
 msgid "Launch"
 msgstr ""
 
-#: front/src/components/Home.vue:38 src/components/Home.vue:8
+#: src/components/Home.vue:38
+#: src/components/Home.vue:8
 msgctxt "Content/Home/Link"
 msgid "Learn more"
 msgstr ""
 
-#: front/src/components/About.vue:124
+#: src/components/About.vue:129
 msgctxt "Content/About/Paragraph"
 msgid "Learn More"
 msgstr ""
 
-#: front/src/components/manage/users/InvitationForm.vue:109
+#: src/components/manage/users/InvitationForm.vue:15
 msgctxt "Content/Admin/Input.Placeholder"
 msgid "Leave empty for a random code"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:20
+#: src/components/audio/EmbedWizard.vue:20
 msgctxt "Popup/Embed/Paragraph"
 msgid "Leave empty for a responsive widget"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:291
-#: front/src/views/admin/library/AlbumDetail.vue:286
-#: front/src/views/admin/library/ArtistDetail.vue:290
-#: front/src/views/admin/library/ArtistDetail.vue:285
-#: front/src/views/admin/library/Base.vue:29
-#: front/src/views/admin/library/LibrariesList.vue:29
-#: front/src/views/admin/library/TrackDetail.vue:356
-#: front/src/views/admin/library/TrackDetail.vue:351
-#: front/src/views/admin/moderation/AccountsDetail.vue:397
-#: front/src/views/admin/moderation/AccountsDetail.vue:392
-#: front/src/views/admin/moderation/DomainsDetail.vue:318
-#: front/src/views/admin/moderation/DomainsDetail.vue:313
-#: front/src/views/content/Base.vue:4
+#: src/views/admin/library/AlbumDetail.vue:291
+#: src/views/admin/library/AlbumDetail.vue:286
+#: src/views/admin/library/ArtistDetail.vue:290
+#: src/views/admin/library/ArtistDetail.vue:285
+#: src/views/admin/library/Base.vue:29
+#: src/views/admin/library/LibrariesList.vue:13
+#: src/views/admin/library/TrackDetail.vue:356
+#: src/views/admin/library/TrackDetail.vue:351
+#: src/views/admin/moderation/AccountsDetail.vue:397
+#: src/views/admin/moderation/AccountsDetail.vue:392
+#: src/views/admin/moderation/DomainsDetail.vue:318
+#: src/views/admin/moderation/DomainsDetail.vue:313
+#: src/views/content/Base.vue:4
 msgctxt "*/*/*/Noun"
 msgid "Libraries"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:99
-#: front/src/components/mixins/Translations.vue:100
+#: src/components/mixins/Translations.vue:99
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Libraries and uploads"
 msgstr ""
 
-#: front/src/views/content/libraries/Form.vue:3
+#: src/views/content/libraries/Form.vue:3
 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/views/library/DetailBase.vue:258
+#: src/views/library/DetailBase.vue:30
 msgctxt "*/*/*"
 msgid "Library"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:28 src/components/auth/Plugin.vue:32
-#: front/src/components/manage/library/UploadsTable.vue:97
-#: front/src/components/manage/library/UploadsTable.vue:7
-#: front/src/components/manage/users/UsersTable.vue:251
-#: front/src/components/mixins/Report.vue:95
-#: front/src/views/admin/library/UploadDetail.vue:159
-#: front/src/views/admin/library/UploadDetail.vue:154
-#: front/src/views/admin/moderation/AccountsDetail.vue:610
-#: front/src/components/mixins/Report.vue:96 src/entities.js:132
+#: src/components/Sidebar.vue:28
+#: src/components/auth/Plugin.vue:32
+#: src/components/manage/library/UploadsTable.vue:97
+#: src/components/manage/library/UploadsTable.vue:7
+#: src/components/manage/users/UsersTable.vue:46
+#: src/components/mixins/Report.vue:95
+#: src/views/admin/library/UploadDetail.vue:159
+#: src/views/admin/library/UploadDetail.vue:154
+#: src/views/admin/moderation/AccountsDetail.vue:40
 msgctxt "*/*/*/Noun"
 msgid "Library"
 msgstr ""
 
-#: front/src/components/library/Home.vue:103
+#: src/components/library/Home.vue:30
 msgctxt "Head/Home/Title"
 msgid "Library"
 msgstr ""
 
-#: front/src/views/library/Edit.vue:5
+#: src/views/library/Edit.vue:5
 msgctxt "*/*/*"
 msgid "Library contents"
 msgstr ""
 
-#: front/src/views/content/libraries/Form.vue:173
+#: src/views/content/libraries/Form.vue:57
 msgctxt "Content/Library/Message"
 msgid "Library created"
 msgstr ""
 
-#: front/src/views/admin/library/LibraryDetail.vue:81
-#: front/src/views/admin/library/LibraryDetail.vue:76
+#: src/views/admin/library/LibraryDetail.vue:81
+#: src/views/admin/library/LibraryDetail.vue:76
 msgctxt "Content/Moderation/Title"
 msgid "Library data"
 msgstr ""
 
-#: front/src/views/content/libraries/Form.vue:193
+#: src/views/content/libraries/Form.vue:77
 msgctxt "Content/Library/Message"
 msgid "Library deleted"
 msgstr ""
 
-#: front/src/views/content/libraries/Card.vue:43
+#: src/views/content/libraries/Card.vue:43
 msgctxt "Content/Library/Card.Button.Label/Noun"
 msgid "Library Details"
 msgstr ""
 
-#: front/src/views/admin/library/EditsList.vue:5
+#: src/views/admin/library/EditsList.vue:5
 msgctxt "Content/Admin/Title/Noun"
 msgid "Library edits"
 msgstr ""
 
-#: front/src/views/content/libraries/Form.vue:170
+#: src/views/content/libraries/Form.vue:54
 msgctxt "Content/Library/Message"
 msgid "Library updated"
 msgstr ""
 
-#: front/src/components/auth/Plugin.vue:39
+#: src/components/auth/Plugin.vue:39
 msgctxt "*/*/Paragraph/Noun"
 msgid "Library where files should be imported."
 msgstr ""
 
-#: front/src/components/channels/LicenseSelect.vue:3
-#: front/src/components/library/TrackDetail.vue:167
-#: front/src/components/manage/library/TracksTable.vue:62
-#: front/src/components/manage/library/TracksTable.vue:22
-#: front/src/views/admin/library/TrackDetail.vue:192
-#: front/src/views/admin/library/TrackDetail.vue:187 src/edits.js:115
-#: front/src/entities.js:115
+#: src/components/channels/LicenseSelect.vue:3
+#: src/components/library/TrackDetail.vue:168
+#: src/components/manage/library/TracksTable.vue:62
+#: src/components/manage/library/TracksTable.vue:22
+#: src/views/admin/library/TrackDetail.vue:192
+#: src/views/admin/library/TrackDetail.vue:187
 msgctxt "Content/*/*/Noun"
 msgid "License"
 msgstr ""
 
-#: front/src/components/Footer.vue:236 src/components/common/UserMenu.vue:183
-#: front/src/components/common/UserModal.vue:223
-#: front/src/components/common/UserModal.vue:225
-msgctxt "Footer/Settings/Dropdown.Label/Theme name"
-msgid "Light"
-msgstr ""
-
-#: front/src/components/Sidebar.vue:596
-msgctxt "Sidebar/Settings/Dropdown.Label/Theme name"
-msgid "Light"
-msgstr ""
-
-#: front/src/views/admin/ChannelDetail.vue:242 src/views/admin/ChannelDetail.vue:237
-#: front/src/views/admin/library/AlbumDetail.vue:223
-#: front/src/views/admin/library/AlbumDetail.vue:218
-#: front/src/views/admin/library/ArtistDetail.vue:222
-#: front/src/views/admin/library/ArtistDetail.vue:217
-#: front/src/views/admin/library/LibraryDetail.vue:197
-#: front/src/views/admin/library/LibraryDetail.vue:192
-#: front/src/views/admin/library/TrackDetail.vue:288
-#: front/src/views/admin/library/TrackDetail.vue:283
-#: front/src/views/admin/moderation/AccountsDetail.vue:299
-#: front/src/views/admin/moderation/AccountsDetail.vue:294
+#: src/views/admin/ChannelDetail.vue:242
+#: src/views/admin/ChannelDetail.vue:237
+#: src/views/admin/library/AlbumDetail.vue:223
+#: src/views/admin/library/AlbumDetail.vue:218
+#: src/views/admin/library/ArtistDetail.vue:222
+#: src/views/admin/library/ArtistDetail.vue:217
+#: src/views/admin/library/LibraryDetail.vue:197
+#: src/views/admin/library/LibraryDetail.vue:192
+#: src/views/admin/library/TrackDetail.vue:288
+#: src/views/admin/library/TrackDetail.vue:283
+#: src/views/admin/moderation/AccountsDetail.vue:299
+#: src/views/admin/moderation/AccountsDetail.vue:294
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Linked reports"
 msgstr ""
 
-#: front/src/components/Home.vue:168
+#: src/components/Home.vue:168
 msgctxt "Content/Home/Link"
 msgid "Listen to public albums and playlists shared on this pod"
 msgstr ""
 
-#: front/src/components/About.vue:140 src/components/About.vue:153
+#: src/components/About.vue:145
+#: src/components/About.vue:158
 msgctxt "Content/About/Paragraph"
 msgid "Listen to public albums and playlists shared on this pod."
 msgstr ""
 
-#: front/src/components/AboutPod.vue:258 src/components/AboutPod.vue:46
+#: src/components/AboutPod.vue:258
+#: src/components/AboutPod.vue:46
 msgctxt "Content/About/*"
 msgid "listening"
 msgid_plural "listenings"
 msgstr[0] ""
 msgstr[1] ""
 
-#: front/src/components/mixins/Translations.vue:107
-#: front/src/views/admin/ChannelDetail.vue:211 src/views/admin/ChannelDetail.vue:206
-#: front/src/views/admin/library/AlbumDetail.vue:192
-#: front/src/views/admin/library/AlbumDetail.vue:187
-#: front/src/views/admin/library/ArtistDetail.vue:191
-#: front/src/views/admin/library/ArtistDetail.vue:186
-#: front/src/views/admin/library/TrackDetail.vue:257
-#: front/src/views/admin/library/TrackDetail.vue:252
-#: front/src/components/mixins/Translations.vue:108
+#: src/components/mixins/Translations.vue:107
+#: src/views/admin/ChannelDetail.vue:211
+#: src/views/admin/ChannelDetail.vue:206
+#: src/views/admin/library/AlbumDetail.vue:192
+#: src/views/admin/library/AlbumDetail.vue:187
+#: src/views/admin/library/ArtistDetail.vue:191
+#: src/views/admin/library/ArtistDetail.vue:186
+#: src/views/admin/library/TrackDetail.vue:257
+#: src/views/admin/library/TrackDetail.vue:252
 msgctxt "*/*/*/Noun"
 msgid "Listenings"
 msgstr ""
 
-#: front/src/components/library/ArtistDetail.vue:48
+#: src/components/library/ArtistDetail.vue:36
 msgctxt "Content/*/Button.Label"
 msgid "Load more…"
 msgstr ""
 
-#: front/src/components/audio/ChannelForm.vue:142
+#: src/components/audio/ChannelForm.vue:142
 msgctxt "*/*/*"
 msgid "Loading"
 msgstr ""
 
-#: front/src/views/library/Edit.vue:19
+#: src/views/library/Edit.vue:19
 msgctxt "Content/Library/Paragraph"
 msgid "Loading followers…"
 msgstr ""
 
-#: front/src/views/content/libraries/Home.vue:4
+#: src/views/content/libraries/Home.vue:4
 msgctxt "Content/Library/Paragraph"
 msgid "Loading Libraries…"
 msgstr ""
 
-#: front/src/views/Notifications.vue:134
+#: src/views/Notifications.vue:134
 msgctxt "Content/Notifications/Paragraph"
 msgid "Loading notifications…"
 msgstr ""
 
-#: front/src/views/content/remote/Home.vue:4
+#: src/views/content/remote/Home.vue:4
 msgctxt "Content/Library/Paragraph"
 msgid "Loading remote libraries…"
 msgstr ""
 
-#: front/src/views/content/libraries/Quota.vue:9
+#: src/views/content/libraries/Quota.vue:9
 msgctxt "Content/Library/Paragraph"
 msgid "Loading usage data…"
 msgstr ""
 
-#: front/src/components/favorites/List.vue:5
+#: src/components/favorites/List.vue:5
 msgctxt "Content/Favorites/Message"
 msgid "Loading your favorites…"
 msgstr ""
 
-#: front/src/components/manage/ChannelsTable.vue:114
-#: front/src/components/manage/ChannelsTable.vue:23
-#: front/src/components/manage/library/AlbumsTable.vue:95
-#: front/src/components/manage/library/AlbumsTable.vue:23
-#: front/src/components/manage/library/ArtistsTable.vue:101
-#: front/src/components/manage/library/ArtistsTable.vue:15
-#: front/src/components/manage/library/LibrariesTable.vue:117
-#: front/src/components/manage/library/LibrariesTable.vue:21
-#: front/src/components/manage/library/TracksTable.vue:101
-#: front/src/components/manage/library/TracksTable.vue:29
-#: front/src/components/manage/library/UploadsTable.vue:164
-#: front/src/components/manage/library/UploadsTable.vue:27
-#: front/src/components/manage/moderation/ReportCard.vue:207
-#: front/src/views/admin/ChannelDetail.vue:19 src/views/admin/ChannelDetail.vue:14
-#: front/src/views/admin/ChannelDetail.vue:3
-#: front/src/views/admin/library/AlbumDetail.vue:19
-#: front/src/views/admin/library/AlbumDetail.vue:14
-#: front/src/views/admin/library/AlbumDetail.vue:3
-#: front/src/views/admin/library/ArtistDetail.vue:19
-#: front/src/views/admin/library/ArtistDetail.vue:14
-#: front/src/views/admin/library/ArtistDetail.vue:3
-#: front/src/views/admin/library/LibraryDetail.vue:18
-#: front/src/views/admin/library/LibraryDetail.vue:13
-#: front/src/views/admin/library/LibraryDetail.vue:3
-#: front/src/views/admin/library/TrackDetail.vue:19
-#: front/src/views/admin/library/TrackDetail.vue:14
-#: front/src/views/admin/library/TrackDetail.vue:3
-#: front/src/views/admin/library/UploadDetail.vue:19
-#: front/src/views/admin/library/UploadDetail.vue:14
-#: front/src/views/admin/library/UploadDetail.vue:3
+#: src/components/manage/ChannelsTable.vue:114
+#: src/components/manage/ChannelsTable.vue:23
+#: src/components/manage/library/AlbumsTable.vue:95
+#: src/components/manage/library/AlbumsTable.vue:23
+#: src/components/manage/library/ArtistsTable.vue:101
+#: src/components/manage/library/ArtistsTable.vue:15
+#: src/components/manage/library/LibrariesTable.vue:117
+#: src/components/manage/library/LibrariesTable.vue:21
+#: src/components/manage/library/TracksTable.vue:101
+#: src/components/manage/library/TracksTable.vue:29
+#: src/components/manage/library/UploadsTable.vue:164
+#: src/components/manage/library/UploadsTable.vue:27
+#: src/components/manage/moderation/ReportCard.vue:207
+#: src/views/admin/ChannelDetail.vue:19
+#: src/views/admin/ChannelDetail.vue:14
+#: src/views/admin/ChannelDetail.vue:3
+#: src/views/admin/library/AlbumDetail.vue:19
+#: src/views/admin/library/AlbumDetail.vue:14
+#: src/views/admin/library/AlbumDetail.vue:3
+#: src/views/admin/library/ArtistDetail.vue:19
+#: src/views/admin/library/ArtistDetail.vue:14
+#: src/views/admin/library/ArtistDetail.vue:3
+#: src/views/admin/library/LibraryDetail.vue:18
+#: src/views/admin/library/LibraryDetail.vue:13
+#: src/views/admin/library/LibraryDetail.vue:3
+#: src/views/admin/library/TrackDetail.vue:19
+#: src/views/admin/library/TrackDetail.vue:14
+#: src/views/admin/library/TrackDetail.vue:3
+#: src/views/admin/library/UploadDetail.vue:19
+#: src/views/admin/library/UploadDetail.vue:14
+#: src/views/admin/library/UploadDetail.vue:3
 msgctxt "Content/Moderation/*/Short, Noun"
 msgid "Local"
 msgstr ""
 
-#: front/src/components/manage/moderation/AccountsTable.vue:87
-#: front/src/components/manage/moderation/AccountsTable.vue:15
-#: front/src/views/admin/moderation/AccountsDetail.vue:18
-#: front/src/views/admin/moderation/AccountsDetail.vue:13
-#: front/src/views/admin/moderation/AccountsDetail.vue:3
+#: src/components/manage/moderation/AccountsTable.vue:87
+#: src/components/manage/moderation/AccountsTable.vue:15
+#: src/views/admin/moderation/AccountsDetail.vue:18
+#: src/views/admin/moderation/AccountsDetail.vue:13
+#: src/views/admin/moderation/AccountsDetail.vue:3
 msgctxt "Content/Moderation/*/Short, Noun"
 msgid "Local account"
 msgstr ""
 
-#: front/src/components/common/LoginModal.vue:74
-#: front/src/components/common/UserMenu.vue:174
-#: front/src/components/common/UserModal.vue:210
+#: src/components/common/LoginModal.vue:21
+#: src/components/common/UserMenu.vue:27
+#: src/components/common/UserModal.vue:42
 msgctxt "*/*/Button.Label/Verb"
 msgid "Log in"
 msgstr ""
 
-#: front/src/components/Home.vue:115 src/views/auth/Login.vue:36
+#: src/components/Home.vue:115
+#: src/views/auth/Login.vue:17
 msgctxt "Head/Login/Title"
 msgid "Log In"
 msgstr ""
 
-#: front/src/components/auth/SignupForm.vue:15 src/views/auth/Login.vue:5
+#: src/components/auth/SignupForm.vue:15
+#: src/views/auth/Login.vue:5
 msgctxt "Content/Login/Title/Verb"
 msgid "Log in to your Funkwhale account"
 msgstr ""
 
-#: front/src/components/auth/Logout.vue:25
+#: src/components/auth/Logout.vue:25
 msgctxt "Content/Login/Button.Label"
 msgid "Log in!"
 msgstr ""
 
-#: front/src/components/common/UserMenu.vue:164
-#: front/src/components/common/UserModal.vue:193
+#: src/components/common/UserMenu.vue:17
+#: src/components/common/UserModal.vue:25
 msgctxt "Sidebar/Login/List item.Link/Verb"
 msgid "Log out"
 msgstr ""
 
-#: front/src/components/auth/Logout.vue:58
+#: src/components/auth/Logout.vue:5
 msgctxt "Head/Login/Title"
 msgid "Log Out"
 msgstr ""
 
-#: front/src/views/auth/Callback.vue:8
+#: src/views/auth/Callback.vue:8
 msgctxt "*/Login/*"
 msgid "Logging in…"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:122 src/components/auth/LoginForm.vue:55
+#: src/components/Sidebar.vue:122
+#: src/components/auth/LoginForm.vue:55
 msgctxt "*/Login/*/Verb"
 msgid "Login"
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:155
-#: front/src/views/admin/moderation/AccountsDetail.vue:150
+#: src/views/admin/moderation/AccountsDetail.vue:155
+#: src/views/admin/moderation/AccountsDetail.vue:150
 msgctxt "Content/*/*/Noun"
 msgid "Login status"
 msgstr ""
 
-#: front/src/components/admin/SignupFormBuilder.vue:73
+#: src/components/admin/SignupFormBuilder.vue:73
 msgctxt "*/*/Form-builder"
 msgid "Long text"
 msgstr ""
 
-#: front/src/views/content/libraries/Home.vue:17
+#: src/views/content/libraries/Home.vue:17
 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:413 src/components/audio/Player.vue:414
+#: src/components/audio/Player.vue:73
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping disabled. Click to switch to single-track looping."
 msgstr ""
 
-#: front/src/components/audio/Player.vue:416 src/components/audio/Player.vue:417
+#: src/components/audio/Player.vue:76
 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:419 src/components/audio/Player.vue:420
+#: src/components/audio/Player.vue:79
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping on whole queue. Click to disable looping."
 msgstr ""
 
-#: front/src/components/Sidebar.vue:523
+#: src/components/Sidebar.vue:57
 msgctxt "Sidebar/*/Hidden text"
 msgid "Main menu"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:135
+#: src/components/Sidebar.vue:135
 msgctxt "*/*/*"
 msgid "Main navigation"
 msgstr ""
 
-#: front/src/views/admin/library/Base.vue:84
+#: src/views/admin/library/Base.vue:4
 msgctxt "Head/Admin/Title"
 msgid "Manage library"
 msgstr ""
 
-#: front/src/components/manage/moderation/InstancePolicyModal.vue:10
+#: src/components/manage/moderation/InstancePolicyModal.vue:10
 msgctxt "Popup/Moderation/Title/Verb"
 msgid "Manage moderation rules for %{ obj }"
 msgstr ""
 
-#: front/src/components/playlists/PlaylistModal.vue:13
+#: src/components/playlists/PlaylistModal.vue:13
 msgctxt "Popup/Playlist/Title/Verb"
 msgid "Manage playlists"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:402
+#: src/components/auth/Settings.vue:402
 msgctxt "Content/Settings/Button.Label"
 msgid "Manage plugins"
 msgstr ""
 
-#: front/src/views/auth/Plugins.vue:47
+#: src/views/auth/Plugins.vue:17
 msgctxt "Head/Login/Title"
 msgid "Manage plugins"
 msgstr ""
 
-#: front/src/views/admin/users/Base.vue:37
+#: src/views/admin/users/Base.vue:5
 msgctxt "Head/Admin/Title"
 msgid "Manage users"
 msgstr ""
 
-#: front/src/views/playlists/List.vue:10 src/views/playlists/List.vue:2
+#: src/views/playlists/List.vue:10
+#: src/views/playlists/List.vue:2
 msgctxt "Content/Playlist/Button.Label/Verb"
 msgid "Manage your playlists"
 msgstr ""
 
-#: front/src/views/Notifications.vue:126
+#: src/views/Notifications.vue:126
 msgctxt "Content/Notifications/Button.Label/Verb"
 msgid "Mark all as read"
 msgstr ""
 
-#: front/src/components/notifications/NotificationRow.vue:94
+#: src/components/notifications/NotificationRow.vue:24
 msgctxt "Content/Notifications/Button.Tooltip/Verb"
 msgid "Mark as read"
 msgstr ""
 
-#: front/src/components/notifications/NotificationRow.vue:95
+#: src/components/notifications/NotificationRow.vue:25
 msgctxt "Content/Notifications/Button.Tooltip/Verb"
 msgid "Mark as unread"
 msgstr ""
 
-#: front/src/components/common/ContentForm.vue:43
+#: src/components/common/ContentForm.vue:43
 msgctxt "*/Form/Paragraph"
 msgid "Markdown syntax is supported."
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:364
-#: front/src/views/admin/moderation/AccountsDetail.vue:359
+#: src/views/admin/moderation/AccountsDetail.vue:364
+#: src/views/admin/moderation/AccountsDetail.vue:359
 msgctxt "Content/*/*/Unit"
 msgid "MB"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:405
+#: src/components/audio/Player.vue:65
 msgctxt "Sidebar/Player/Hidden text"
 msgid "Media player"
 msgstr ""
 
-#: front/src/components/manage/moderation/ReportCard.vue:129
-#: front/src/components/manage/moderation/UserRequestCard.vue:119
-#: front/src/components/moderation/ReportModal.vue:47
+#: src/components/manage/moderation/ReportCard.vue:129
+#: src/components/manage/moderation/UserRequestCard.vue:119
+#: src/components/moderation/ReportModal.vue:47
 msgctxt "*/*/Field.Label/Noun"
 msgid "Message"
 msgstr ""
 
-#: front/src/views/channels/DetailBase.vue:160 src/views/channels/DetailBase.vue:155
+#: src/views/channels/DetailBase.vue:162
+#: src/views/channels/DetailBase.vue:157
 msgctxt "Content/Channel/Paragraph"
 msgid "Mirrored from %{ domain }"
 msgstr ""
 
-#: front/src/components/Footer.vue:56
-msgctxt "Footer/*/List item.Link"
-msgid "Mobile and desktop apps"
-msgstr ""
-
-#: front/src/components/Home.vue:178
+#: src/components/Home.vue:178
 msgctxt "Content/Home/Link"
 msgid "Mobile apps"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:36 src/components/manage/users/UsersTable.vue:255
-#: front/src/views/admin/Settings.vue:76
-#: front/src/views/admin/moderation/AccountsDetail.vue:614
-#: front/src/views/admin/moderation/Base.vue:76
+#: src/components/Sidebar.vue:36
+#: src/components/manage/users/UsersTable.vue:50
+#: src/views/admin/Settings.vue:32
+#: src/views/admin/moderation/AccountsDetail.vue:44
+#: src/views/admin/moderation/Base.vue:13
 msgctxt "*/Moderation/*"
 msgid "Moderation"
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:73
-#: front/src/views/admin/moderation/AccountsDetail.vue:68
-#: front/src/views/admin/moderation/AccountsDetail.vue:10
-#: front/src/views/admin/moderation/DomainsDetail.vue:67
-#: front/src/views/admin/moderation/DomainsDetail.vue:62
-#: front/src/views/admin/moderation/DomainsDetail.vue:10
+#: src/views/admin/moderation/AccountsDetail.vue:73
+#: src/views/admin/moderation/AccountsDetail.vue:68
+#: src/views/admin/moderation/AccountsDetail.vue:10
+#: src/views/admin/moderation/DomainsDetail.vue:67
+#: src/views/admin/moderation/DomainsDetail.vue:62
+#: src/views/admin/moderation/DomainsDetail.vue:10
 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/manage/moderation/InstancePolicyModal.vue:4
+#: src/components/manage/moderation/InstancePolicyModal.vue:4
 msgctxt "Content/Moderation/Button.Label"
 msgid "Moderation rules…"
 msgstr ""
 
-#: front/src/components/library/EditCard.vue:5
+#: src/components/library/EditCard.vue:5
 msgctxt "Content/Library/Card/Short"
 msgid "Modification %{ id }"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:73
-#: front/src/components/mixins/Translations.vue:74
+#: src/components/mixins/Translations.vue:73
 msgctxt "Content/Playlist/Dropdown/Noun"
 msgid "Modification date"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:234
+#: src/components/Sidebar.vue:234
 msgctxt "Footer/About/List item.Link"
 msgid "More"
 msgstr ""
 
-#: front/src/components/audio/SearchBar.vue:206
+#: src/components/audio/SearchBar.vue:183
 msgctxt "Search/*/*"
 msgid "More results 🡒"
 msgstr ""
 
-#: front/src/components/audio/PlayButton.vue:187
-#: front/src/components/library/AlbumDropdown.vue:165
-#: front/src/components/library/ArtistBase.vue:54
-#: front/src/components/library/ArtistBase.vue:49
-#: front/src/components/library/TrackBase.vue:292
+#: src/components/audio/PlayButton.vue:61
+#: src/components/library/AlbumDropdown.vue:36
+#: src/components/library/ArtistBase.vue:54
+#: src/components/library/ArtistBase.vue:49
+#: src/components/library/TrackBase.vue:71
 msgctxt "*/*/Button.Label/Noun"
 msgid "More…"
 msgstr ""
 
-#: front/src/components/admin/SignupFormBuilder.vue:200
+#: src/components/admin/SignupFormBuilder.vue:37
 msgctxt "*/*/*"
 msgid "Move down"
 msgstr ""
 
-#: front/src/components/admin/SignupFormBuilder.vue:199
+#: src/components/admin/SignupFormBuilder.vue:36
 msgctxt "*/*/*"
 msgid "Move up"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:62
-#: front/src/components/mixins/Translations.vue:63
+#: src/components/mixins/Translations.vue:62
 msgctxt "*/*/*"
 msgid "Music"
 msgstr ""
 
-#: front/src/views/admin/Settings.vue:72
+#: src/views/admin/Settings.vue:28
 msgctxt "*/*/*/Noun"
 msgid "Music"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:411
-#: front/src/components/audio/VolumeControl.vue:75
+#: src/components/audio/Player.vue:71
+#: src/components/audio/VolumeControl.vue:23
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Mute"
 msgstr ""
 
-#: front/src/components/manage/moderation/InstancePolicyCard.vue:31
-#: front/src/components/manage/moderation/InstancePolicyForm.vue:209
+#: src/components/manage/moderation/InstancePolicyCard.vue:31
+#: src/components/manage/moderation/InstancePolicyForm.vue:39
 msgctxt "Content/Moderation/*/Verb"
 msgid "Mute activity"
 msgstr ""
 
-#: front/src/components/manage/moderation/InstancePolicyCard.vue:39
-#: front/src/components/manage/moderation/InstancePolicyForm.vue:213
+#: src/components/manage/moderation/InstancePolicyCard.vue:39
+#: src/components/manage/moderation/InstancePolicyForm.vue:43
 msgctxt "Content/Moderation/*/Verb"
 msgid "Mute notifications"
 msgstr ""
 
-#: front/src/components/library/radios/Builder.vue:221
+#: src/components/library/radios/Builder.vue:35
 msgctxt "Content/Radio/Input.Placeholder"
 msgid "My awesome description"
 msgstr ""
 
-#: front/src/views/content/libraries/Form.vue:142
+#: src/views/content/libraries/Form.vue:26
 msgctxt "Content/Library/Input.Placeholder"
 msgid "My awesome library"
 msgstr ""
 
-#: front/src/components/playlists/Form.vue:131
+#: src/components/playlists/Form.vue:31
 msgctxt "Content/Playlist/Input.Placeholder"
 msgid "My awesome playlist"
 msgstr ""
 
-#: front/src/components/library/radios/Builder.vue:220
+#: src/components/library/radios/Builder.vue:34
 msgctxt "Content/Radio/Input.Placeholder"
 msgid "My awesome radio"
 msgstr ""
 
-#: front/src/views/content/libraries/Home.vue:11
+#: src/views/content/libraries/Home.vue:11
 msgctxt "Content/Library/Title"
 msgid "My libraries"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:189
+#: src/components/Sidebar.vue:189
 msgctxt "*/*/*/Noun"
 msgid "My Library"
 msgstr ""
 
-#: front/src/components/AboutPod.vue:104 src/components/AboutPod.vue:203
-#: front/src/components/library/EditCard.vue:79
-#: front/src/components/library/EditForm.vue:75 src/components/library/EditForm.vue:5
-#: front/src/components/library/TrackDetail.vue:28
-#: front/src/components/library/TrackDetail.vue:43
-#: front/src/components/library/TrackDetail.vue:58
-#: front/src/components/library/TrackDetail.vue:73
-#: front/src/components/library/TrackDetail.vue:144
-#: front/src/components/library/TrackDetail.vue:159
-#: front/src/components/library/TrackDetail.vue:173
-#: front/src/components/library/TrackDetail.vue:23
-#: front/src/components/library/TrackDetail.vue:38
-#: front/src/components/library/TrackDetail.vue:53
-#: front/src/components/library/TrackDetail.vue:68
-#: front/src/components/library/TrackDetail.vue:1
-#: front/src/components/manage/library/AlbumsTable.vue:103
-#: front/src/components/manage/library/AlbumsTable.vue:31
-#: front/src/components/manage/library/TracksTable.vue:106
-#: front/src/components/manage/library/TracksTable.vue:34
-#: front/src/components/manage/library/UploadsTable.vue:182
-#: front/src/components/manage/library/UploadsTable.vue:191
-#: front/src/components/manage/library/UploadsTable.vue:45
-#: front/src/components/manage/library/UploadsTable.vue:54
-#: front/src/components/manage/moderation/ReportCard.vue:90
-#: front/src/components/manage/moderation/ReportCard.vue:103
-#: front/src/components/manage/moderation/ReportCard.vue:233
-#: front/src/components/manage/moderation/UserRequestCard.vue:80
-#: front/src/components/manage/moderation/UserRequestCard.vue:93
-#: front/src/components/manage/moderation/UserRequestCard.vue:135
-#: front/src/components/manage/moderation/UserRequestCard.vue:7
-#: front/src/components/manage/users/UsersTable.vue:97
-#: front/src/components/manage/users/UsersTable.vue:22
-#: front/src/components/manage/users/UsersTable.vue:1
-#: front/src/views/admin/library/UploadDetail.vue:202
-#: front/src/views/admin/library/UploadDetail.vue:245
-#: front/src/views/admin/library/UploadDetail.vue:270
-#: front/src/views/admin/library/UploadDetail.vue:285
-#: front/src/views/admin/library/UploadDetail.vue:302
-#: front/src/views/admin/library/UploadDetail.vue:197
-#: front/src/views/admin/library/UploadDetail.vue:240
-#: front/src/views/admin/library/UploadDetail.vue:265
-#: front/src/views/admin/library/UploadDetail.vue:280
-#: front/src/views/admin/library/UploadDetail.vue:297
-#: front/src/views/admin/moderation/AccountsDetail.vue:208
-#: front/src/views/admin/moderation/AccountsDetail.vue:203
-#: front/src/views/admin/moderation/DomainsDetail.vue:126
-#: front/src/views/admin/moderation/DomainsDetail.vue:121
-#: front/src/views/admin/moderation/DomainsDetail.vue:513
-#: front/src/views/admin/moderation/DomainsDetail.vue:521
-#: front/src/views/admin/moderation/DomainsDetail.vue:557
-#: front/src/views/admin/moderation/DomainsDetail.vue:593
-#: front/src/views/content/libraries/FilesTable.vue:163
-#: front/src/views/content/libraries/FilesTable.vue:171
-#: front/src/views/content/libraries/FilesTable.vue:34
-#: front/src/views/content/libraries/FilesTable.vue:42
-#: front/src/views/admin/moderation/DomainsDetail.vue:216
+#: src/components/AboutPod.vue:104
+#: src/components/AboutPod.vue:203
+#: src/components/library/EditCard.vue:79
+#: src/components/library/EditForm.vue:75
+#: src/components/library/EditForm.vue:5
+#: src/components/library/TrackDetail.vue:29
+#: src/components/library/TrackDetail.vue:44
+#: src/components/library/TrackDetail.vue:59
+#: src/components/library/TrackDetail.vue:74
+#: src/components/library/TrackDetail.vue:145
+#: src/components/library/TrackDetail.vue:160
+#: src/components/library/TrackDetail.vue:174
+#: src/components/library/TrackDetail.vue:24
+#: src/components/library/TrackDetail.vue:39
+#: src/components/library/TrackDetail.vue:54
+#: src/components/library/TrackDetail.vue:69
+#: src/components/library/TrackDetail.vue:1
+#: src/components/manage/library/AlbumsTable.vue:103
+#: src/components/manage/library/AlbumsTable.vue:31
+#: src/components/manage/library/TracksTable.vue:106
+#: src/components/manage/library/TracksTable.vue:34
+#: src/components/manage/library/UploadsTable.vue:182
+#: src/components/manage/library/UploadsTable.vue:191
+#: src/components/manage/library/UploadsTable.vue:45
+#: src/components/manage/library/UploadsTable.vue:54
+#: src/components/manage/moderation/ReportCard.vue:90
+#: src/components/manage/moderation/ReportCard.vue:103
+#: src/components/manage/moderation/ReportCard.vue:233
+#: src/components/manage/moderation/UserRequestCard.vue:80
+#: src/components/manage/moderation/UserRequestCard.vue:93
+#: src/components/manage/moderation/UserRequestCard.vue:135
+#: src/components/manage/moderation/UserRequestCard.vue:7
+#: src/components/manage/users/UsersTable.vue:97
+#: src/components/manage/users/UsersTable.vue:22
+#: src/components/manage/users/UsersTable.vue:1
+#: src/views/admin/library/UploadDetail.vue:202
+#: src/views/admin/library/UploadDetail.vue:245
+#: src/views/admin/library/UploadDetail.vue:270
+#: src/views/admin/library/UploadDetail.vue:285
+#: src/views/admin/library/UploadDetail.vue:302
+#: src/views/admin/library/UploadDetail.vue:197
+#: src/views/admin/library/UploadDetail.vue:240
+#: src/views/admin/library/UploadDetail.vue:265
+#: src/views/admin/library/UploadDetail.vue:280
+#: src/views/admin/library/UploadDetail.vue:297
+#: src/views/admin/moderation/AccountsDetail.vue:208
+#: src/views/admin/moderation/AccountsDetail.vue:203
+#: src/views/admin/moderation/DomainsDetail.vue:126
+#: src/views/admin/moderation/DomainsDetail.vue:121
+#: src/views/admin/moderation/DomainsDetail.vue:408
+#: src/views/admin/moderation/DomainsDetail.vue:419
+#: src/views/admin/moderation/DomainsDetail.vue:430
+#: src/views/content/libraries/FilesTable.vue:163
+#: src/views/content/libraries/FilesTable.vue:171
+#: src/views/content/libraries/FilesTable.vue:34
+#: src/views/content/libraries/FilesTable.vue:42
 msgctxt "*/*/*"
 msgid "N/A"
 msgstr ""
 
-#: front/src/components/auth/ApplicationForm.vue:15
-#: front/src/components/auth/Settings.vue:184
-#: front/src/components/manage/ChannelsTable.vue:61
-#: front/src/components/manage/ChannelsTable.vue:2
-#: front/src/components/manage/library/ArtistsTable.vue:61
-#: front/src/components/manage/library/ArtistsTable.vue:2
-#: front/src/components/manage/library/LibrariesTable.vue:61
-#: front/src/components/manage/library/LibrariesTable.vue:2
-#: front/src/components/manage/library/TagsTable.vue:43
-#: front/src/components/manage/library/TagsTable.vue:2
-#: front/src/components/manage/library/UploadsTable.vue:92
-#: front/src/components/manage/library/UploadsTable.vue:2
-#: front/src/components/manage/moderation/AccountsTable.vue:42
-#: front/src/components/manage/moderation/AccountsTable.vue:2
-#: front/src/components/manage/moderation/DomainsTable.vue:60
-#: front/src/components/manage/moderation/DomainsTable.vue:2
-#: front/src/components/mixins/Translations.vue:78
-#: front/src/components/playlists/PlaylistModal.vue:66
-#: front/src/views/admin/ChannelDetail.vue:104 src/views/admin/ChannelDetail.vue:99
-#: front/src/views/admin/library/ArtistDetail.vue:116
-#: front/src/views/admin/library/ArtistDetail.vue:111
-#: front/src/views/admin/library/LibraryDetail.vue:90
-#: front/src/views/admin/library/LibraryDetail.vue:85
-#: front/src/views/admin/library/TagDetail.vue:79
-#: front/src/views/admin/library/TagDetail.vue:74
-#: front/src/views/admin/library/UploadDetail.vue:97
-#: front/src/views/admin/library/UploadDetail.vue:92
-#: front/src/views/admin/moderation/DomainsDetail.vue:145
-#: front/src/views/admin/moderation/DomainsDetail.vue:140
-#: front/src/views/admin/moderation/DomainsDetail.vue:13
-#: front/src/views/content/libraries/Form.vue:20 src/edits.js:42
-#: front/src/components/mixins/Translations.vue:79
+#: src/components/auth/ApplicationForm.vue:15
+#: src/components/auth/Settings.vue:184
+#: src/components/manage/ChannelsTable.vue:61
+#: src/components/manage/ChannelsTable.vue:2
+#: src/components/manage/library/ArtistsTable.vue:61
+#: src/components/manage/library/ArtistsTable.vue:2
+#: src/components/manage/library/LibrariesTable.vue:61
+#: src/components/manage/library/LibrariesTable.vue:2
+#: src/components/manage/library/TagsTable.vue:43
+#: src/components/manage/library/TagsTable.vue:2
+#: src/components/manage/library/UploadsTable.vue:92
+#: src/components/manage/library/UploadsTable.vue:2
+#: src/components/manage/moderation/AccountsTable.vue:42
+#: src/components/manage/moderation/AccountsTable.vue:2
+#: src/components/manage/moderation/DomainsTable.vue:60
+#: src/components/manage/moderation/DomainsTable.vue:2
+#: src/components/mixins/Translations.vue:78
+#: src/components/playlists/PlaylistModal.vue:66
+#: src/views/admin/ChannelDetail.vue:104
+#: src/views/admin/ChannelDetail.vue:99
+#: src/views/admin/library/ArtistDetail.vue:116
+#: src/views/admin/library/ArtistDetail.vue:111
+#: src/views/admin/library/LibraryDetail.vue:90
+#: src/views/admin/library/LibraryDetail.vue:85
+#: src/views/admin/library/TagDetail.vue:79
+#: src/views/admin/library/TagDetail.vue:74
+#: src/views/admin/library/UploadDetail.vue:97
+#: src/views/admin/library/UploadDetail.vue:92
+#: src/views/admin/moderation/DomainsDetail.vue:145
+#: src/views/admin/moderation/DomainsDetail.vue:140
+#: src/views/admin/moderation/DomainsDetail.vue:13
+#: src/views/content/libraries/Form.vue:20
 msgctxt "*/*/*/Noun"
 msgid "Name"
 msgstr ""
 
-#: front/src/components/audio/ChannelForm.vue:37
-#: front/src/components/audio/ChannelForm.vue:23
-#: front/src/components/audio/ChannelForm.vue:3
+#: src/components/audio/ChannelForm.vue:37
+#: src/components/audio/ChannelForm.vue:23
+#: src/components/audio/ChannelForm.vue:3
 msgctxt "Content/Channel/*"
 msgid "Name"
 msgstr ""
 
-#: front/src/views/Notifications.vue:43 src/views/Notifications.vue:99
+#: src/views/Notifications.vue:43
+#: src/views/Notifications.vue:99
 msgctxt "*/*/*"
 msgid "Never"
 msgstr ""
 
-#: front/src/components/channels/AlbumModal.vue:6
+#: src/components/channels/AlbumModal.vue:6
 msgctxt "Popup/Channels/Title"
 msgid "New album"
 msgstr ""
 
-#: front/src/components/Home.vue:220 src/components/library/Home.vue:46
-#: front/src/components/library/Home.vue:2
+#: src/components/Home.vue:220
+#: src/components/library/Home.vue:46
+#: src/components/library/Home.vue:2
 msgctxt "*/*/*"
 msgid "New channels"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:441
+#: src/components/auth/Settings.vue:441
 msgctxt "*/*/*"
 msgid "New e-mail address"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:111
-#: front/src/views/auth/PasswordResetConfirm.vue:20
-#: front/src/views/auth/PasswordResetConfirm.vue:2
+#: src/components/auth/Settings.vue:111
+#: src/views/auth/PasswordResetConfirm.vue:20
+#: src/views/auth/PasswordResetConfirm.vue:2
 msgctxt "Content/Settings/Input.Label"
 msgid "New password"
 msgstr ""
 
-#: front/src/components/channels/AlbumModal.vue:3
+#: src/components/channels/AlbumModal.vue:3
 msgctxt "Popup/Channels/Title/Verb"
 msgid "New series"
 msgstr ""
 
-#: front/src/components/library/ArtistDetail.vue:26
-#: front/src/components/library/ArtistDetail.vue:2
+#: src/components/library/ArtistDetail.vue:45
+#: src/components/library/ArtistDetail.vue:2
 msgctxt "Content/Artist/Title"
 msgid "New tracks by this artist"
 msgstr ""
 
-#: front/src/components/Queue.vue:170
+#: src/components/Queue.vue:170
 msgctxt "Sidebar/Player/Paragraph"
 msgid "New tracks will be appended here automatically."
 msgstr ""
 
-#: front/src/components/library/EditCard.vue:58
+#: src/components/library/EditCard.vue:58
 msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "New value"
 msgstr ""
 
-#: front/src/components/Pagination.vue:54
+#: src/components/Pagination.vue:15
 msgctxt "Content/*/Link"
 msgid "Next Page"
 msgstr ""
 
-#: front/src/components/channels/UploadModal.vue:49
-#: front/src/views/auth/ProfileOverview.vue:67
+#: src/components/channels/UploadModal.vue:49
+#: src/views/auth/ProfileOverview.vue:67
 msgctxt "*/*/Button.Label"
 msgid "Next step"
 msgstr ""
 
-#: front/src/App.vue:100 src/components/audio/Player.vue:409
+#: src/AppOld.vue:86
+#: src/components/audio/Player.vue:69
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Next track"
 msgstr ""
 
-#: front/src/components/admin/SignupFormBuilder.vue:87
-#: front/src/components/manage/moderation/DomainsTable.vue:22
-#: front/src/views/admin/moderation/DomainsDetail.vue:113
-#: front/src/views/admin/moderation/DomainsDetail.vue:108
+#: src/components/admin/SignupFormBuilder.vue:87
+#: src/components/manage/moderation/DomainsTable.vue:22
+#: src/views/admin/moderation/DomainsDetail.vue:113
+#: src/views/admin/moderation/DomainsDetail.vue:108
 msgctxt "*/*/*"
 msgid "No"
 msgstr ""
 
-#: front/src/components/audio/Search.vue:42 src/components/audio/Search.vue:12
+#: src/components/audio/Search.vue:42
+#: src/components/audio/Search.vue:12
 msgctxt "Content/Search/Paragraph"
 msgid "No album matched your query"
 msgstr ""
 
-#: front/src/components/audio/Search.vue:25 src/components/audio/Search.vue:12
+#: src/components/audio/Search.vue:25
+#: src/components/audio/Search.vue:12
 msgctxt "Content/Search/Paragraph"
 msgid "No artist matched your query"
 msgstr ""
 
-#: front/src/components/common/RenderedDescription.vue:15
+#: src/components/common/RenderedDescription.vue:15
 msgctxt "*/*/Placeholder"
 msgid "No description available"
 msgstr ""
 
-#: front/src/components/About.vue:97 src/components/AboutPod.vue:53
+#: src/components/About.vue:102
+#: src/components/AboutPod.vue:53
 msgctxt "Content/About/Paragraph"
 msgid "No description available."
 msgstr ""
 
-#: front/src/components/Home.vue:26
+#: src/components/Home.vue:26
 msgctxt "Content/Home/Paragraph"
 msgid "No description available."
 msgstr ""
 
-#: front/src/components/audio/SearchBar.vue:63
+#: src/components/audio/SearchBar.vue:40
 msgctxt "Sidebar/Search/Error"
 msgid "No matches found"
 msgstr ""
 
-#: front/src/components/federation/LibraryWidget.vue:9
+#: src/components/federation/LibraryWidget.vue:9
 msgctxt "Content/Federation/Paragraph"
 msgid "No matching library."
 msgstr ""
 
-#: front/src/views/Notifications.vue:146
+#: src/views/Notifications.vue:146
 msgctxt "Content/Notifications/Paragraph"
 msgid "No notification to show."
 msgstr ""
 
-#: front/src/components/manage/moderation/DomainsTable.vue:109
+#: src/components/manage/moderation/DomainsTable.vue:109
 msgctxt "Content/Home/Placeholder"
 msgid "No other pods found"
 msgstr ""
 
-#: front/src/components/playlists/PlaylistModal.vue:121
-#: front/src/components/playlists/PlaylistModal.vue:4
-#: front/src/components/playlists/Widget.vue:14
+#: src/components/playlists/PlaylistModal.vue:121
+#: src/components/playlists/PlaylistModal.vue:4
+#: src/components/playlists/Widget.vue:14
 msgctxt "Content/Home/Placeholder"
 msgid "No playlists have been created yet"
 msgstr ""
 
-#: front/src/components/playlists/PlaylistModal.vue:110
-#: front/src/components/playlists/PlaylistModal.vue:3
+#: src/components/playlists/PlaylistModal.vue:110
+#: src/components/playlists/PlaylistModal.vue:3
 msgctxt "Popup/Playlist/EmptyState"
 msgid "No results matching your filter"
 msgstr ""
 
-#: front/src/components/library/Albums.vue:72
+#: src/components/library/Albums.vue:72
 msgctxt "Content/Albums/Placeholder"
 msgid "No results matching your query"
 msgstr ""
 
-#: front/src/components/library/Artists.vue:81 src/components/library/Podcasts.vue:74
+#: src/components/library/Artists.vue:81
+#: src/components/library/Podcasts.vue:74
 msgctxt "Content/Artists/Placeholder"
 msgid "No results matching your query"
 msgstr ""
 
-#: front/src/views/playlists/List.vue:71
+#: src/views/playlists/List.vue:71
 msgctxt "Content/Playlists/Placeholder"
 msgid "No results matching your query"
 msgstr ""
 
-#: front/src/components/library/Radios.vue:90
+#: src/components/library/Radios.vue:90
 msgctxt "Content/Radios/Placeholder"
 msgid "No results matching your query"
 msgstr ""
 
-#: front/src/components/common/EmptyState.vue:6
+#: src/components/common/EmptyState.vue:6
 msgctxt "Content/*/Paragraph"
 msgid "No results were found."
 msgstr ""
 
-#: front/src/components/AboutPod.vue:65
+#: src/components/AboutPod.vue:65
 msgctxt "Content/About/Paragraph"
 msgid "No rules available."
 msgstr ""
 
-#: front/src/components/AboutPod.vue:77
+#: src/components/AboutPod.vue:77
 msgctxt "Content/About/Paragraph"
 msgid "No terms available."
 msgstr ""
 
-#: front/src/views/content/libraries/FilesTable.vue:86
+#: src/views/content/libraries/FilesTable.vue:86
 msgctxt "Content/Home/Placeholder"
 msgid "No tracks have been added to this library yet"
 msgstr ""
 
-#: front/src/views/radios/Detail.vue:57
+#: src/views/radios/Detail.vue:57
 msgctxt "Content/Radios/Placeholder"
 msgid "No tracks have been added to this radio yet"
 msgstr ""
 
-#: front/src/components/favorites/List.vue:68
+#: src/components/favorites/List.vue:68
 msgctxt "Content/Home/Placeholder"
 msgid "No tracks have been added to your favorites yet"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:10
-#: front/src/components/mixins/Translations.vue:11
+#: src/components/mixins/Translations.vue:10
 msgctxt "Content/Settings/Dropdown"
 msgid "Nobody except me"
 msgstr ""
 
-#: front/src/views/library/Edit.vue:78
+#: src/views/library/Edit.vue:78
 msgctxt "Content/Library/Paragraph"
 msgid "Nobody is following this library"
 msgstr ""
 
-#: front/src/components/channels/AlbumSelect.vue:8
-#: front/src/components/channels/LicenseSelect.vue:7
+#: src/components/channels/AlbumSelect.vue:8
+#: src/components/channels/LicenseSelect.vue:7
 msgctxt "*/*/*"
 msgid "None"
 msgstr ""
 
-#: front/src/components/manage/users/InvitationsTable.vue:79
-#: front/src/components/manage/users/InvitationsTable.vue:9
+#: src/components/manage/users/InvitationsTable.vue:79
+#: src/components/manage/users/InvitationsTable.vue:9
 msgctxt "Content/Admin/Table"
 msgid "Not used"
 msgstr ""
 
-#: front/src/components/audio/track/Widget.vue:52
+#: src/components/audio/track/Widget.vue:52
 msgctxt "Content/Home/Placeholder"
 msgid "Nothing found"
 msgstr ""
 
-#: front/src/components/common/ContentForm.vue:25
-#: front/src/components/common/ContentForm.vue:10
+#: src/components/common/ContentForm.vue:25
+#: src/components/common/ContentForm.vue:10
 msgctxt "*/Form/Paragraph"
 msgid "Nothing to preview."
 msgstr ""
 
-#: front/src/components/common/UserMenu.vue:176
-#: front/src/components/common/UserModal.vue:212
-#: front/src/components/mixins/Translations.vue:127 src/views/Notifications.vue:249
-#: front/src/components/mixins/Translations.vue:128
+#: src/components/common/UserMenu.vue:29
+#: src/components/common/UserModal.vue:44
+#: src/components/mixins/Translations.vue:127
+#: src/views/Notifications.vue:35
 msgctxt "*/Notifications/*"
 msgid "Notifications"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:51
-#: front/src/components/mixins/Translations.vue:52
+#: src/components/mixins/Translations.vue:51
 msgctxt "Content/Moderation/Dropdown"
 msgid "Offensive content"
 msgstr ""
 
-#: front/src/components/Footer.vue:85
-msgctxt "Footer/*/List item.Link"
-msgid "Official website"
-msgstr ""
-
-#: front/src/components/library/EditCard.vue:53
+#: src/components/library/EditCard.vue:53
 msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "Old value"
 msgstr ""
 
-#: front/src/components/AboutPod.vue:180
+#: src/components/AboutPod.vue:180
 msgctxt "*/*/*/State of registrations"
 msgid "Open"
 msgstr ""
 
-#: front/src/components/manage/users/InvitationsTable.vue:25
+#: src/components/manage/users/InvitationsTable.vue:25
 msgctxt "Content/Admin/Dropdown/Adjective"
 msgid "Open"
 msgstr ""
 
-#: front/src/components/library/ImportStatusModal.vue:72
-#: front/src/components/library/ImportStatusModal.vue:43
+#: src/components/library/ImportStatusModal.vue:72
+#: src/components/library/ImportStatusModal.vue:43
 msgctxt "Popup/Import/Table.Label/Value"
 msgid "Open a support thread (include the debug information below in your message)"
 msgstr ""
 
-#: front/src/components/library/AlbumDropdown.vue:59
-#: front/src/components/library/ArtistBase.vue:98
-#: front/src/components/library/ArtistBase.vue:93
-#: front/src/components/library/TagDetail.vue:11
-#: front/src/components/library/TrackBase.vue:103
-#: front/src/components/library/TrackBase.vue:98
-#: front/src/components/manage/moderation/ReportCard.vue:156
-#: front/src/views/auth/ProfileBase.vue:22 src/views/channels/DetailBase.vue:141
-#: front/src/views/channels/DetailBase.vue:136 src/views/channels/DetailBase.vue:4
-#: front/src/views/library/DetailBase.vue:20
+#: src/components/library/AlbumDropdown.vue:59
+#: src/components/library/ArtistBase.vue:98
+#: src/components/library/ArtistBase.vue:93
+#: src/components/library/TagDetail.vue:11
+#: src/components/library/TrackBase.vue:103
+#: src/components/library/TrackBase.vue:98
+#: src/components/manage/moderation/ReportCard.vue:156
+#: src/views/auth/ProfileBase.vue:22
+#: src/views/channels/DetailBase.vue:143
+#: src/views/channels/DetailBase.vue:138
+#: src/views/channels/DetailBase.vue:4
+#: src/views/library/DetailBase.vue:20
 msgctxt "Content/Moderation/Link"
 msgid "Open in moderation interface"
 msgstr ""
 
-#: front/src/components/manage/ChannelsTable.vue:246
-#: front/src/components/manage/library/AlbumsTable.vue:232
+#: src/components/manage/ChannelsTable.vue:40
+#: src/components/manage/library/AlbumsTable.vue:41
 msgctxt "Content/Moderation/Verb"
 msgid "Open in moderation interface"
 msgstr ""
 
-#: front/src/views/admin/ChannelDetail.vue:35 src/views/admin/ChannelDetail.vue:30
-#: front/src/views/admin/library/AlbumDetail.vue:36
-#: front/src/views/admin/library/AlbumDetail.vue:31
-#: front/src/views/admin/library/ArtistDetail.vue:35
-#: front/src/views/admin/library/ArtistDetail.vue:30
-#: front/src/views/admin/library/TagDetail.vue:20
-#: front/src/views/admin/library/TagDetail.vue:15
-#: front/src/views/admin/library/TrackDetail.vue:36
-#: front/src/views/admin/library/TrackDetail.vue:31
+#: src/views/admin/ChannelDetail.vue:35
+#: src/views/admin/ChannelDetail.vue:30
+#: src/views/admin/library/AlbumDetail.vue:36
+#: src/views/admin/library/AlbumDetail.vue:31
+#: src/views/admin/library/ArtistDetail.vue:35
+#: src/views/admin/library/ArtistDetail.vue:30
+#: src/views/admin/library/TagDetail.vue:20
+#: src/views/admin/library/TagDetail.vue:15
+#: src/views/admin/library/TrackDetail.vue:36
+#: src/views/admin/library/TrackDetail.vue:31
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open local profile"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:49
-#: front/src/views/admin/library/AlbumDetail.vue:44
-#: front/src/views/admin/library/ArtistDetail.vue:48
-#: front/src/views/admin/library/ArtistDetail.vue:43
-#: front/src/views/admin/library/TrackDetail.vue:49
-#: front/src/views/admin/library/TrackDetail.vue:44
+#: src/views/admin/library/AlbumDetail.vue:49
+#: src/views/admin/library/AlbumDetail.vue:44
+#: src/views/admin/library/ArtistDetail.vue:48
+#: src/views/admin/library/ArtistDetail.vue:43
+#: src/views/admin/library/TrackDetail.vue:49
+#: src/views/admin/library/TrackDetail.vue:44
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open on MusicBrainz"
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:23
-#: front/src/views/admin/moderation/AccountsDetail.vue:18
+#: src/views/admin/moderation/AccountsDetail.vue:23
+#: src/views/admin/moderation/AccountsDetail.vue:18
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open profile"
 msgstr ""
 
-#: front/src/views/admin/ChannelDetail.vue:54 src/views/admin/ChannelDetail.vue:49
-#: front/src/views/admin/library/AlbumDetail.vue:59
-#: front/src/views/admin/library/AlbumDetail.vue:54
-#: front/src/views/admin/library/ArtistDetail.vue:58
-#: front/src/views/admin/library/ArtistDetail.vue:53
-#: front/src/views/admin/library/LibraryDetail.vue:40
-#: front/src/views/admin/library/LibraryDetail.vue:35
-#: front/src/views/admin/library/TrackDetail.vue:59
-#: front/src/views/admin/library/TrackDetail.vue:54
-#: front/src/views/admin/library/UploadDetail.vue:41
-#: front/src/views/admin/library/UploadDetail.vue:36
-#: front/src/views/admin/moderation/AccountsDetail.vue:44
-#: front/src/views/admin/moderation/AccountsDetail.vue:39
+#: src/views/admin/ChannelDetail.vue:54
+#: src/views/admin/ChannelDetail.vue:49
+#: src/views/admin/library/AlbumDetail.vue:59
+#: src/views/admin/library/AlbumDetail.vue:54
+#: src/views/admin/library/ArtistDetail.vue:58
+#: src/views/admin/library/ArtistDetail.vue:53
+#: src/views/admin/library/LibraryDetail.vue:40
+#: src/views/admin/library/LibraryDetail.vue:35
+#: src/views/admin/library/TrackDetail.vue:59
+#: src/views/admin/library/TrackDetail.vue:54
+#: src/views/admin/library/UploadDetail.vue:41
+#: src/views/admin/library/UploadDetail.vue:36
+#: src/views/admin/moderation/AccountsDetail.vue:44
+#: src/views/admin/moderation/AccountsDetail.vue:39
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open remote profile"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:16
-#: front/src/views/admin/moderation/DomainsDetail.vue:11
+#: src/views/admin/moderation/DomainsDetail.vue:16
+#: src/views/admin/moderation/DomainsDetail.vue:11
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open website"
 msgstr ""
 
-#: front/src/components/common/UserModal.vue:190
+#: src/components/common/UserModal.vue:22
 msgctxt "Popup/Title/Noun"
 msgid "Options"
 msgstr ""
 
-#: front/src/components/manage/moderation/InstancePolicyForm.vue:50
+#: src/components/manage/moderation/InstancePolicyForm.vue:50
 msgctxt "Content/Moderation/Card.Title"
 msgid "Or customize your rule"
 msgstr ""
 
-#: front/src/components/favorites/List.vue:30 src/components/library/Radios.vue:56
-#: front/src/components/manage/library/EditsCardList.vue:45
-#: front/src/components/manage/users/UsersTable.vue:17
-#: front/src/views/admin/moderation/ReportsList.vue:47
-#: front/src/views/admin/moderation/RequestsList.vue:51
-#: front/src/views/playlists/List.vue:36
+#: src/components/favorites/List.vue:30
+#: src/components/library/Radios.vue:56
+#: src/components/manage/library/EditsCardList.vue:45
+#: src/components/manage/users/UsersTable.vue:17
+#: src/views/admin/moderation/ReportsList.vue:47
+#: src/views/admin/moderation/RequestsList.vue:51
+#: src/views/playlists/List.vue:36
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Order"
 msgstr ""
 
-#: front/src/components/favorites/List.vue:22 src/components/library/Albums.vue:26
-#: front/src/components/library/Artists.vue:26 src/components/library/Podcasts.vue:26
-#: front/src/components/library/Radios.vue:48
-#: front/src/components/manage/ChannelsTable.vue:30
-#: front/src/components/manage/library/AlbumsTable.vue:11
-#: front/src/components/manage/library/ArtistsTable.vue:30
-#: front/src/components/manage/library/EditsCardList.vue:37
-#: front/src/components/manage/library/LibrariesTable.vue:30
-#: front/src/components/manage/library/TagsTable.vue:11
-#: front/src/components/manage/library/TracksTable.vue:11
-#: front/src/components/manage/library/UploadsTable.vue:60
-#: front/src/components/manage/moderation/AccountsTable.vue:11
-#: front/src/components/manage/moderation/DomainsTable.vue:29
-#: front/src/components/manage/users/InvitationsTable.vue:9
-#: front/src/components/manage/users/UsersTable.vue:9
-#: front/src/views/admin/moderation/ReportsList.vue:39
-#: front/src/views/admin/moderation/RequestsList.vue:43
-#: front/src/views/content/libraries/FilesTable.vue:51
-#: front/src/views/playlists/List.vue:28
+#: src/components/favorites/List.vue:22
+#: src/components/library/Albums.vue:26
+#: src/components/library/Artists.vue:26
+#: src/components/library/Podcasts.vue:26
+#: src/components/library/Radios.vue:48
+#: src/components/manage/ChannelsTable.vue:30
+#: src/components/manage/library/AlbumsTable.vue:11
+#: src/components/manage/library/ArtistsTable.vue:30
+#: src/components/manage/library/EditsCardList.vue:37
+#: src/components/manage/library/LibrariesTable.vue:30
+#: src/components/manage/library/TagsTable.vue:11
+#: src/components/manage/library/TracksTable.vue:11
+#: src/components/manage/library/UploadsTable.vue:60
+#: src/components/manage/moderation/AccountsTable.vue:11
+#: src/components/manage/moderation/DomainsTable.vue:29
+#: src/components/manage/users/InvitationsTable.vue:9
+#: src/components/manage/users/UsersTable.vue:9
+#: src/views/admin/moderation/ReportsList.vue:39
+#: src/views/admin/moderation/RequestsList.vue:43
+#: src/views/content/libraries/FilesTable.vue:51
+#: src/views/playlists/List.vue:28
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering"
 msgstr ""
 
-#: front/src/components/library/Albums.vue:34 src/components/library/Artists.vue:34
-#: front/src/components/library/Podcasts.vue:34
-#: front/src/components/manage/ChannelsTable.vue:38
-#: front/src/components/manage/library/AlbumsTable.vue:19
-#: front/src/components/manage/library/ArtistsTable.vue:38
-#: front/src/components/manage/library/LibrariesTable.vue:38
-#: front/src/components/manage/library/TagsTable.vue:19
-#: front/src/components/manage/library/TracksTable.vue:19
-#: front/src/components/manage/library/UploadsTable.vue:68
-#: front/src/components/manage/moderation/AccountsTable.vue:19
-#: front/src/components/manage/moderation/DomainsTable.vue:37
-#: front/src/views/content/libraries/FilesTable.vue:61
+#: src/components/library/Albums.vue:34
+#: src/components/library/Artists.vue:34
+#: src/components/library/Podcasts.vue:34
+#: src/components/manage/ChannelsTable.vue:38
+#: src/components/manage/library/AlbumsTable.vue:19
+#: src/components/manage/library/ArtistsTable.vue:38
+#: src/components/manage/library/LibrariesTable.vue:38
+#: src/components/manage/library/TagsTable.vue:19
+#: src/components/manage/library/TracksTable.vue:19
+#: src/components/manage/library/UploadsTable.vue:68
+#: src/components/manage/moderation/AccountsTable.vue:19
+#: src/components/manage/moderation/DomainsTable.vue:37
+#: src/views/content/libraries/FilesTable.vue:61
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering direction"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:63
-#: front/src/components/mixins/Translations.vue:64
+#: src/components/mixins/Translations.vue:63
 msgctxt "*/*/*"
 msgid "Other"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:52
-#: front/src/components/mixins/Translations.vue:53
+#: src/components/mixins/Translations.vue:52
 msgctxt "Content/Moderation/Dropdown"
 msgid "Other"
 msgstr ""
 
-#: front/src/views/channels/DetailBase.vue:238 src/views/channels/DetailBase.vue:233
+#: src/views/channels/DetailBase.vue:240
+#: src/views/channels/DetailBase.vue:235
 msgctxt "Content/Channels/Link"
 msgid "Overview"
 msgstr ""
 
-#: front/src/views/auth/ProfileBase.vue:58
+#: src/views/auth/ProfileBase.vue:58
 msgctxt "Content/Profile/Link"
 msgid "Overview"
 msgstr ""
 
-#: front/src/views/library/DetailBase.vue:34
+#: src/views/library/DetailBase.vue:34
 msgctxt "*/*/*"
 msgid "Owned by %{ username }"
 msgstr ""
 
-#: front/src/components/manage/moderation/ReportCard.vue:175
-#: front/src/components/manage/users/InvitationsTable.vue:45
-#: front/src/components/manage/users/InvitationsTable.vue:2
+#: src/components/manage/moderation/ReportCard.vue:175
+#: src/components/manage/users/InvitationsTable.vue:45
+#: src/components/manage/users/InvitationsTable.vue:2
 msgctxt "*/*/*"
 msgid "Owner"
 msgstr ""
 
-#: front/src/components/audio/ChannelForm.vue:122
-#: front/src/components/audio/ChannelForm.vue:108
-#: front/src/components/audio/ChannelForm.vue:88
+#: src/components/audio/ChannelForm.vue:122
+#: src/components/audio/ChannelForm.vue:108
+#: src/components/audio/ChannelForm.vue:88
 msgctxt "*/*/*"
 msgid "Owner e-mail address"
 msgstr ""
 
-#: front/src/components/audio/ChannelForm.vue:128
-#: front/src/components/audio/ChannelForm.vue:114
-#: front/src/components/audio/ChannelForm.vue:94
+#: src/components/audio/ChannelForm.vue:128
+#: src/components/audio/ChannelForm.vue:114
+#: src/components/audio/ChannelForm.vue:94
 msgctxt "*/*/*"
 msgid "Owner name"
 msgstr ""
 
-#: front/src/components/PageNotFound.vue:47
+#: src/components/PageNotFound.vue:10
 msgctxt "Head/*/Title"
 msgid "Page Not Found"
 msgstr ""
 
-#: front/src/components/PageNotFound.vue:7
+#: src/components/PageNotFound.vue:7
 msgctxt "Content/*/Title"
 msgid "Page not found!"
 msgstr ""
 
-#: front/src/components/Pagination.vue:52
+#: src/components/Pagination.vue:13
 msgctxt "Content/*/Hidden text/Noun"
 msgid "Pagination"
 msgstr ""
 
-#: front/src/components/auth/LoginForm.vue:39 src/components/auth/LoginForm.vue:15
-#: front/src/components/auth/Settings.vue:445 src/components/auth/Settings.vue:489
-#: front/src/components/auth/SignupForm.vue:57
+#: src/components/auth/LoginForm.vue:39
+#: src/components/auth/LoginForm.vue:15
+#: src/components/auth/Settings.vue:445
+#: src/components/auth/Settings.vue:489
+#: src/components/auth/SignupForm.vue:57
 msgctxt "*/*/*"
 msgid "Password"
 msgstr ""
 
-#: front/src/components/auth/SubsonicTokenForm.vue:193
+#: src/components/auth/SubsonicTokenForm.vue:47
 msgctxt "Content/Settings/Message"
 msgid "Password updated"
 msgstr ""
 
-#: front/src/views/auth/PasswordResetConfirm.vue:44
+#: src/views/auth/PasswordResetConfirm.vue:44
 msgctxt "Content/Signup/Card.Title"
 msgid "Password updated successfully"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:408
+#: src/components/audio/Player.vue:68
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Pause"
 msgstr ""
 
-#: front/src/App.vue:99
+#: src/AppOld.vue:85
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Pause track"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:98
+#: src/components/ShortcutsModal.vue:38
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Pause/play the current track"
 msgstr ""
 
-#: front/src/components/manage/moderation/InstancePolicyCard.vue:14
-#: front/src/components/manage/moderation/InstancePolicyCard.vue:2
+#: src/components/manage/moderation/InstancePolicyCard.vue:14
+#: src/components/manage/moderation/InstancePolicyCard.vue:2
 msgctxt "Content/Moderation/Card.List item"
 msgid "Paused"
 msgstr ""
 
-#: front/src/components/channels/UploadForm.vue:97
-#: front/src/components/channels/UploadForm.vue:62
-#: front/src/components/channels/UploadForm.vue:51
-#: front/src/components/channels/UploadForm.vue:7
+#: src/components/channels/UploadForm.vue:97
+#: src/components/channels/UploadForm.vue:62
+#: src/components/channels/UploadForm.vue:51
+#: src/components/channels/UploadForm.vue:7
 msgctxt "Channels/*/*"
 msgid "Pending"
 msgstr ""
 
-#: front/src/components/library/FileUpload.vue:139
-#: front/src/components/manage/library/UploadsTable.vue:38
-#: front/src/components/manage/moderation/UserRequestCard.vue:52
-#: front/src/components/manage/moderation/UserRequestCard.vue:2
-#: front/src/components/mixins/Translations.vue:32
-#: front/src/views/admin/moderation/RequestsList.vue:26
-#: front/src/views/content/libraries/FilesTable.vue:28
-#: front/src/components/mixins/Translations.vue:33
+#: src/components/library/FileUpload.vue:139
+#: src/components/manage/library/UploadsTable.vue:38
+#: src/components/manage/moderation/UserRequestCard.vue:52
+#: src/components/manage/moderation/UserRequestCard.vue:2
+#: src/components/mixins/Translations.vue:32
+#: src/views/admin/moderation/RequestsList.vue:26
+#: src/views/content/libraries/FilesTable.vue:28
 msgctxt "Content/Library/*/Short"
 msgid "Pending"
 msgstr ""
 
-#: front/src/views/library/Edit.vue:54
+#: src/views/library/Edit.vue:54
 msgctxt "Content/Library/Table/Short"
 msgid "Pending approval"
 msgstr ""
 
-#: front/src/views/content/libraries/Quota.vue:34
+#: src/views/content/libraries/Quota.vue:34
 msgctxt "Content/Library/Label"
 msgid "Pending files"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:525
+#: src/components/Sidebar.vue:59
 msgctxt "Sidebar/Notifications/Hidden text"
 msgid "Pending follow requests"
 msgstr ""
 
-#: front/src/components/library/EditCard.vue:31
-#: front/src/components/manage/library/EditsCardList.vue:20
+#: src/components/library/EditCard.vue:31
+#: src/components/manage/library/EditsCardList.vue:20
 msgctxt "Content/Admin/*/Noun"
 msgid "Pending review"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:526
+#: src/components/Sidebar.vue:60
 msgctxt "Sidebar/Moderation/Hidden text"
 msgid "Pending review edits"
 msgstr ""
 
-#: front/src/components/common/ActionTable.vue:301
+#: src/components/common/ActionTable.vue:67
 msgctxt "Content/*/Button.Label"
 msgid "Perform actions"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:247
-#: front/src/components/manage/users/UsersTable.vue:65
-#: front/src/components/manage/users/UsersTable.vue:27
-#: front/src/views/admin/moderation/AccountsDetail.vue:177
-#: front/src/views/admin/moderation/AccountsDetail.vue:172
+#: src/components/auth/Settings.vue:247
+#: src/components/manage/users/UsersTable.vue:65
+#: src/components/manage/users/UsersTable.vue:27
+#: src/views/admin/moderation/AccountsDetail.vue:177
+#: src/views/admin/moderation/AccountsDetail.vue:172
 msgctxt "Content/*/*/Noun"
 msgid "Permissions"
 msgstr ""
 
-#: front/src/components/audio/PlayButton.vue:5 src/components/audio/PlayButton.vue:1
-#: front/src/components/library/TrackBase.vue:17
-#: front/src/components/library/TrackBase.vue:12
+#: src/components/audio/PlayButton.vue:5
+#: src/components/audio/PlayButton.vue:1
+#: src/components/library/TrackBase.vue:17
+#: src/components/library/TrackBase.vue:12
 msgctxt "*/Queue/Button.Label/Short, Verb"
 msgid "Play"
 msgstr ""
 
-#: front/src/views/channels/DetailBase.vue:176 src/views/channels/DetailBase.vue:171
+#: src/views/channels/DetailBase.vue:178
+#: src/views/channels/DetailBase.vue:173
 msgctxt "Content/Channels/Button.Label/Verb"
 msgid "Play"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:407
+#: src/components/audio/Player.vue:67
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Play"
 msgstr ""
 
-#: front/src/components/audio/PlayButton.vue:166
+#: src/components/audio/PlayButton.vue:40
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play album"
 msgstr ""
 
-#: front/src/views/playlists/Detail.vue:23
+#: src/views/playlists/Detail.vue:23
 msgctxt "Content/Queue/Button.Label/Short, Verb"
 msgid "Play all"
 msgstr ""
 
-#: front/src/components/library/ArtistBase.vue:27
-#: front/src/components/library/ArtistBase.vue:22
+#: src/components/library/ArtistBase.vue:27
+#: src/components/library/ArtistBase.vue:22
 msgctxt "Content/Artist/Button.Label/Verb"
 msgid "Play all albums"
 msgstr ""
 
-#: front/src/components/audio/PlayButton.vue:168
+#: src/components/audio/PlayButton.vue:42
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play artist"
 msgstr ""
 
-#: front/src/components/audio/PlayButton.vue:178
-#: front/src/components/audio/podcast/Modal.vue:299
-#: front/src/components/audio/track/Modal.vue:299
+#: src/components/audio/PlayButton.vue:52
+#: src/components/audio/podcast/Modal.vue:71
+#: src/components/audio/track/Modal.vue:71
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play next"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:122
+#: src/components/ShortcutsModal.vue:62
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play next track"
 msgstr ""
 
-#: front/src/components/audio/PlayButton.vue:176
-#: front/src/components/audio/podcast/Modal.vue:294
-#: front/src/components/audio/track/Modal.vue:294
+#: src/components/audio/PlayButton.vue:50
+#: src/components/audio/podcast/Modal.vue:66
+#: src/components/audio/track/Modal.vue:66
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play now"
 msgstr ""
 
-#: front/src/components/audio/PlayButton.vue:170
+#: src/components/audio/PlayButton.vue:44
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play playlist"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:118
+#: src/components/ShortcutsModal.vue:58
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play previous track"
 msgstr ""
 
-#: front/src/components/audio/PlayButton.vue:20 src/components/radios/Button.vue:9
-#: front/src/components/radios/Button.vue:1
+#: src/components/audio/PlayButton.vue:20
+#: src/components/radios/Button.vue:9
+#: src/components/radios/Button.vue:1
 msgctxt "*/Queue/Button.Label/Short, Verb"
 msgid "Play radio"
 msgstr ""
 
-#: front/src/components/audio/podcast/Modal.vue:290
-#: front/src/components/audio/track/Modal.vue:290
-#: front/src/components/audio/podcast/Modal.vue:292
-#: front/src/components/audio/track/Modal.vue:292
+#: src/components/audio/podcast/Modal.vue:62
+#: src/components/audio/track/Modal.vue:62
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play radio"
 msgstr ""
 
-#: front/src/components/audio/PlayButton.vue:179
+#: src/components/audio/PlayButton.vue:53
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play similar songs"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:524
+#: src/components/Sidebar.vue:58
 msgctxt "Sidebar/Player/Hidden text"
 msgid "Play this track"
 msgstr ""
 
-#: front/src/components/audio/PlayButton.vue:164
+#: src/components/audio/PlayButton.vue:38
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play track"
 msgstr ""
 
-#: front/src/App.vue:98
+#: src/AppOld.vue:84
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Play track"
 msgstr ""
 
-#: front/src/components/audio/PlayButton.vue:172
+#: src/components/audio/PlayButton.vue:46
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play tracks"
 msgstr ""
 
-#: front/src/components/mixins/Report.vue:83 src/views/playlists/Detail.vue:208
-#: front/src/components/mixins/Report.vue:84
+#: src/components/mixins/Report.vue:83
+#: src/views/playlists/Detail.vue:33
 msgctxt "*/*/*"
 msgid "Playlist"
 msgstr ""
 
-#: front/src/views/playlists/Detail.vue:12
+#: 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:15 src/components/playlists/Form.vue:1
+#: src/components/playlists/Form.vue:15
+#: src/components/playlists/Form.vue:1
 msgctxt "Content/Playlist/Message"
 msgid "Playlist created"
 msgstr ""
 
-#: front/src/components/playlists/Editor.vue:4
+#: src/components/playlists/Editor.vue:4
 msgctxt "Content/Playlist/Title"
 msgid "Playlist editor"
 msgstr ""
 
-#: front/src/components/playlists/Form.vue:35
+#: src/components/playlists/Form.vue:35
 msgctxt "Content/Playlist/Input.Label"
 msgid "Playlist name"
 msgstr ""
 
-#: front/src/components/playlists/Form.vue:10 src/components/playlists/Form.vue:1
+#: src/components/playlists/Form.vue:10
+#: src/components/playlists/Form.vue:1
 msgctxt "Content/Playlist/Message"
 msgid "Playlist updated"
 msgstr ""
 
-#: front/src/components/playlists/Form.vue:39
+#: src/components/playlists/Form.vue:39
 msgctxt "Content/Playlist/Dropdown.Label"
 msgid "Playlist visibility"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:176 src/components/Sidebar.vue:211
-#: front/src/components/library/Home.vue:25 src/components/library/Home.vue:1
-#: front/src/components/mixins/Translations.vue:115 src/views/Search.vue:231
-#: front/src/views/admin/ChannelDetail.vue:231 src/views/admin/ChannelDetail.vue:226
-#: front/src/views/admin/Settings.vue:74 src/views/admin/library/AlbumDetail.vue:212
-#: front/src/views/admin/library/AlbumDetail.vue:207
-#: front/src/views/admin/library/ArtistDetail.vue:211
-#: front/src/views/admin/library/ArtistDetail.vue:206
-#: front/src/views/admin/library/TrackDetail.vue:277
-#: front/src/views/admin/library/TrackDetail.vue:272
-#: front/src/views/auth/ProfileActivity.vue:25 src/views/playlists/List.vue:176
-#: front/src/components/mixins/Translations.vue:116
+#: src/components/Sidebar.vue:176
+#: src/components/Sidebar.vue:211
+#: src/components/library/Home.vue:25
+#: src/components/library/Home.vue:1
+#: src/components/mixins/Translations.vue:115
+#: src/views/Search.vue:92
+#: src/views/admin/ChannelDetail.vue:231
+#: src/views/admin/ChannelDetail.vue:226
+#: src/views/admin/Settings.vue:30
+#: src/views/admin/library/AlbumDetail.vue:212
+#: src/views/admin/library/AlbumDetail.vue:207
+#: src/views/admin/library/ArtistDetail.vue:211
+#: src/views/admin/library/ArtistDetail.vue:206
+#: src/views/admin/library/TrackDetail.vue:277
+#: src/views/admin/library/TrackDetail.vue:272
+#: src/views/auth/ProfileActivity.vue:25
+#: src/views/playlists/List.vue:37
 msgctxt "*/*/*"
 msgid "Playlists"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:9
+#: src/components/audio/EmbedWizard.vue:9
 msgctxt "Content/Embed/Message"
 msgid "Please contact your admins and ask them to update the corresponding setting."
 msgstr ""
 
-#: front/src/components/auth/LoginForm.vue:15
+#: src/components/auth/LoginForm.vue:15
 msgctxt "Content/Login/Error message.List item/Call to action"
 msgid "Please double-check that your username and password combination is correct and make sure you verified your e-mail address."
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:100
+#: src/components/auth/Settings.vue:100
 msgctxt "Content/Settings/Error message.List item/Call to action"
 msgid "Please double-check your password is correct"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:391
+#: src/components/auth/Settings.vue:391
 msgctxt "Content/Settings/Title/Noun"
 msgid "Plugins"
 msgstr ""
 
-#: front/src/components/common/AttachmentInput.vue:33
+#: src/components/common/AttachmentInput.vue:33
 msgctxt "Content/*/Paragraph"
 msgid "PNG or JPG. Dimensions should be between 1400x1400px and 3000x3000px. Maximum file size allowed is 5MB."
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:61
-#: front/src/components/mixins/Translations.vue:62
+#: src/components/mixins/Translations.vue:61
 msgctxt "Content/*/Dropdown"
 msgid "Podcast"
 msgstr ""
 
-#: front/src/views/auth/ProfileOverview.vue:44 src/views/channels/DetailBase.vue:206
-#: front/src/views/channels/DetailBase.vue:201
+#: src/views/auth/ProfileOverview.vue:44
+#: src/views/channels/DetailBase.vue:208
+#: src/views/channels/DetailBase.vue:203
 msgctxt "Content/Channel/*"
 msgid "Podcast channel"
 msgstr ""
 
-#: front/src/components/library/Podcasts.vue:12
+#: src/components/library/Podcasts.vue:12
 msgctxt "Content/Search/Input.Label/Noun"
 msgid "Podcast title"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:161 src/components/audio/ChannelForm.vue:304
-#: front/src/components/audio/SearchBar.vue:98 src/components/audio/SearchBar.vue:192
-#: front/src/views/Search.vue:244
+#: src/components/Sidebar.vue:161
+#: src/components/audio/ChannelForm.vue:55
+#: src/components/audio/SearchBar.vue:75
+#: src/components/audio/SearchBar.vue:169
+#: src/views/Search.vue:105
 msgctxt "*/*/*"
 msgid "Podcasts"
 msgstr ""
 
-#: front/src/components/library/Podcasts.vue:243
+#: src/components/library/Podcasts.vue:46
 msgctxt "*/*/*/Noun"
 msgid "Podcasts"
 msgstr ""
 
-#: front/src/components/channels/UploadMetadataForm.vue:23
-#: front/src/views/admin/library/TrackDetail.vue:164
-#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:101
+#: src/components/channels/UploadMetadataForm.vue:23
+#: src/views/admin/library/TrackDetail.vue:164
+#: src/views/admin/library/TrackDetail.vue:159
 msgctxt "*/*/*/Short, Noun"
 msgid "Position"
 msgstr ""
 
-#: front/src/components/manage/moderation/InstancePolicyForm.vue:212
+#: src/components/manage/moderation/InstancePolicyForm.vue:42
 msgctxt "Content/Moderation/Help text"
 msgid "Prevent account or domain from triggering notifications, except from followers."
 msgstr ""
 
-#: front/src/components/common/ContentForm.vue:10
+#: src/components/common/ContentForm.vue:10
 msgctxt "*/Form/Menu.item"
 msgid "Preview"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:60
+#: src/components/audio/EmbedWizard.vue:60
 msgctxt "Popup/Embed/Title/Noun"
 msgid "Preview"
 msgstr ""
 
-#: front/src/components/admin/SignupFormBuilder.vue:9
+#: src/components/admin/SignupFormBuilder.vue:9
 msgctxt "*/Form/Menu.item"
 msgid "Preview form"
 msgstr ""
 
-#: front/src/components/Pagination.vue:53
+#: src/components/Pagination.vue:14
 msgctxt "Content/*/Link"
 msgid "Previous Page"
 msgstr ""
 
-#: front/src/components/channels/UploadModal.vue:39
-#: front/src/views/auth/ProfileOverview.vue:62
+#: src/components/channels/UploadModal.vue:39
+#: src/views/auth/ProfileOverview.vue:62
 msgctxt "*/*/Button.Label/Verb"
 msgid "Previous step"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:406
+#: src/components/audio/Player.vue:66
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Previous track"
 msgstr ""
 
-#: front/src/views/library/DetailBase.vue:260
+#: src/views/library/DetailBase.vue:32
 msgctxt "Content/Library/Card.Help text"
 msgid "Private"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:15
-#: front/src/components/mixins/Translations.vue:16
+#: src/components/mixins/Translations.vue:15
 msgctxt "Content/Settings/Dropdown/Short"
 msgid "Private"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:53 src/views/content/remote/Card.vue:2
+#: src/views/content/remote/Card.vue:53
+#: src/views/content/remote/Card.vue:2
 msgctxt "Content/Library/Card.List item"
 msgid "Problem during scanning"
 msgstr ""
 
-#: front/src/views/auth/EmailConfirm.vue:43
-#: front/src/views/auth/PasswordResetConfirm.vue:54
+#: src/views/auth/EmailConfirm.vue:43
+#: src/views/auth/PasswordResetConfirm.vue:54
 msgctxt "Content/Signup/Link/Verb"
 msgid "Proceed to login"
 msgstr ""
 
-#: front/src/views/channels/DetailOverview.vue:11
-#: front/src/views/channels/DetailOverview.vue:47
-#: front/src/views/channels/DetailOverview.vue:8
-#: front/src/views/channels/DetailOverview.vue:13
+#: src/views/channels/DetailOverview.vue:11
+#: src/views/channels/DetailOverview.vue:47
+#: src/views/channels/DetailOverview.vue:8
+#: src/views/channels/DetailOverview.vue:13
 msgctxt "Content/Channel/Paragraph"
 msgid "Processed uploads:"
 msgstr ""
 
-#: front/src/components/library/FileUpload.vue:16
+#: src/components/library/FileUpload.vue:16
 msgctxt "Content/Library/Tab.Title/Short"
 msgid "Processing"
 msgstr ""
 
-#: front/src/components/channels/UploadModal.vue:12
+#: src/components/channels/UploadModal.vue:12
 msgctxt "Popup/Channels/Title"
 msgid "Processing uploads"
 msgstr ""
 
-#: front/src/components/common/UserMenu.vue:162
-#: front/src/components/common/UserModal.vue:191
+#: src/components/common/UserMenu.vue:15
+#: src/components/common/UserModal.vue:23
 msgctxt "*/*/*/Noun"
 msgid "Profile"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:95
-#: front/src/components/mixins/Translations.vue:96
+#: src/components/mixins/Translations.vue:95
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Profile"
 msgstr ""
 
-#: front/src/views/library/DetailBase.vue:262
+#: src/views/library/DetailBase.vue:34
 msgctxt "Content/Library/Card.Help text"
 msgid "Public"
 msgstr ""
 
-#: front/src/components/auth/SignupForm.vue:23
+#: src/components/auth/SignupForm.vue:23
 msgctxt "Content/Signup/Form/Paragraph"
 msgid "Public registrations are not possible on this instance. You will need an invitation code to sign up."
 msgstr ""
 
-#: front/src/components/channels/UploadModal.vue:55
+#: src/components/channels/UploadModal.vue:55
 msgctxt "*/Channels/Button.Label"
 msgid "Publish"
 msgstr ""
 
-#: front/src/components/channels/UploadModal.vue:3
+#: src/components/channels/UploadModal.vue:3
 msgctxt "Popup/Channels/Title/Verb"
 msgid "Publish audio"
 msgstr ""
 
-#: front/src/components/audio/ChannelForm.vue:310
+#: src/components/audio/ChannelForm.vue:61
 msgctxt "Content/Channels/Help"
 msgid "Publish music you make as a nice discography of albums and singles."
 msgstr ""
 
-#: front/src/views/content/Home.vue:10
+#: src/views/content/Home.vue:10
 msgctxt "Content/Library/Title/Verb"
 msgid "Publish your work in a channel"
 msgstr ""
 
-#: front/src/components/manage/moderation/AccountsTable.vue:236
-#: front/src/components/manage/moderation/DomainsTable.vue:245
-#: front/src/views/content/libraries/Quota.vue:47
-#: front/src/views/content/libraries/Quota.vue:61
-#: front/src/views/content/libraries/Quota.vue:86
-#: front/src/views/content/libraries/Quota.vue:100
-#: front/src/views/content/libraries/Quota.vue:125
-#: front/src/views/content/libraries/Quota.vue:139
+#: src/components/manage/moderation/AccountsTable.vue:59
+#: src/components/manage/moderation/DomainsTable.vue:57
+#: src/views/content/libraries/Quota.vue:47
+#: src/views/content/libraries/Quota.vue:61
+#: src/views/content/libraries/Quota.vue:86
+#: src/views/content/libraries/Quota.vue:100
+#: src/views/content/libraries/Quota.vue:125
+#: src/views/content/libraries/Quota.vue:139
 msgctxt "*/*/*/Verb"
 msgid "Purge"
 msgstr ""
 
-#: front/src/views/content/libraries/Quota.vue:129
+#: src/views/content/libraries/Quota.vue:129
 msgctxt "Popup/Library/Title"
 msgid "Purge errored files?"
 msgstr ""
 
-#: front/src/views/content/libraries/Quota.vue:51
+#: src/views/content/libraries/Quota.vue:51
 msgctxt "Popup/Library/Title"
 msgid "Purge pending files?"
 msgstr ""
 
-#: front/src/views/content/libraries/Quota.vue:90
+#: src/views/content/libraries/Quota.vue:90
 msgctxt "Popup/Library/Title"
 msgid "Purge skipped files?"
 msgstr ""
 
-#: front/src/components/Queue.vue:398
+#: src/components/Queue.vue:57
 msgctxt "*/*/*"
 msgid "Queue"
 msgstr ""
 
-#: front/src/components/Queue.vue:504 src/components/audio/Player.vue:558
+#: src/components/Queue.vue:163
+#: src/components/audio/Player.vue:218
 msgctxt "Content/Queue/Message"
 msgid "Queue shuffled!"
 msgstr ""
 
-#: front/src/views/radios/Detail.vue:139
+#: src/views/radios/Detail.vue:27
 msgctxt "Head/Radio/Title"
 msgid "Radio"
 msgstr ""
 
-#: front/src/components/library/radios/Builder.vue:218
+#: src/components/library/radios/Builder.vue:32
 msgctxt "Head/Radio/Title"
 msgid "Radio Builder"
 msgstr ""
 
-#: front/src/components/library/radios/Builder.vue:23
-#: front/src/components/library/radios/Builder.vue:1
+#: src/components/library/radios/Builder.vue:23
+#: src/components/library/radios/Builder.vue:1
 msgctxt "Content/Radio/Message"
 msgid "Radio created"
 msgstr ""
 
-#: front/src/components/library/radios/Builder.vue:31
+#: src/components/library/radios/Builder.vue:31
 msgctxt "Content/Radio/Input.Label/Noun"
 msgid "Radio name"
 msgstr ""
 
-#: front/src/components/library/radios/Builder.vue:18
-#: front/src/components/library/radios/Builder.vue:1
+#: src/components/library/radios/Builder.vue:18
+#: src/components/library/radios/Builder.vue:1
 msgctxt "Content/Radio/Message"
 msgid "Radio updated"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:181 src/components/Sidebar.vue:216
-#: front/src/components/library/Radios.vue:212
-#: front/src/components/mixins/Translations.vue:119 src/views/Search.vue:235
-#: front/src/components/mixins/Translations.vue:120
+#: src/components/Sidebar.vue:181
+#: src/components/Sidebar.vue:216
+#: src/components/library/Radios.vue:36
+#: src/components/mixins/Translations.vue:119
+#: src/views/Search.vue:96
 msgctxt "*/*/*"
 msgid "Radios"
 msgstr ""
 
-#: front/src/components/auth/ApplicationForm.vue:174
+#: src/components/auth/ApplicationForm.vue:53
 msgctxt "Content/OAuth Scopes/Label/Verb"
 msgid "Read"
 msgstr ""
 
-#: front/src/components/library/ImportStatusModal.vue:67
-#: front/src/components/library/ImportStatusModal.vue:38
+#: src/components/library/ImportStatusModal.vue:67
+#: src/components/library/ImportStatusModal.vue:38
 msgctxt "Popup/Import/Table.Label/Value"
 msgid "Read our documentation for this error"
 msgstr ""
 
-#: front/src/components/auth/Authorize.vue:42
+#: src/components/auth/Authorize.vue:42
 msgctxt "Content/Auth/Label/Noun"
 msgid "Read-only"
 msgstr ""
 
-#: front/src/components/auth/ApplicationForm.vue:175
+#: src/components/auth/ApplicationForm.vue:54
 msgctxt "Content/OAuth Scopes/Help Text"
 msgid "Read-only access to user data"
 msgstr ""
 
-#: front/src/components/manage/moderation/InstancePolicyCard.vue:56
-#: front/src/components/manage/moderation/InstancePolicyForm.vue:35
+#: src/components/manage/moderation/InstancePolicyCard.vue:56
+#: src/components/manage/moderation/InstancePolicyForm.vue:35
 msgctxt "Content/Moderation/*/Noun"
 msgid "Reason"
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:278
-#: front/src/views/admin/moderation/AccountsDetail.vue:273
-#: front/src/views/admin/moderation/DomainsDetail.vue:242
-#: front/src/views/admin/moderation/DomainsDetail.vue:237
+#: src/views/admin/moderation/AccountsDetail.vue:278
+#: src/views/admin/moderation/AccountsDetail.vue:273
+#: src/views/admin/moderation/DomainsDetail.vue:242
+#: src/views/admin/moderation/DomainsDetail.vue:237
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Received library follows"
 msgstr ""
 
-#: front/src/components/manage/moderation/DomainsTable.vue:70
-#: front/src/components/manage/moderation/DomainsTable.vue:12
-#: front/src/components/mixins/Translations.vue:89
-#: front/src/components/mixins/Translations.vue:90
+#: src/components/manage/moderation/DomainsTable.vue:70
+#: src/components/manage/moderation/DomainsTable.vue:12
+#: src/components/mixins/Translations.vue:89
 msgctxt "Content/Moderation/*/Noun"
 msgid "Received messages"
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:30 src/components/library/EditForm.vue:1
+#: src/components/library/EditForm.vue:30
+#: src/components/library/EditForm.vue:1
 msgctxt "Content/Library/Paragraph"
 msgid "Recent edits"
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:20 src/components/library/EditForm.vue:1
+#: src/components/library/EditForm.vue:20
+#: src/components/library/EditForm.vue:1
 msgctxt "Content/Library/Paragraph"
 msgid "Recent edits awaiting review"
 msgstr ""
 
-#: front/src/components/library/Home.vue:37 src/components/library/Home.vue:1
+#: src/components/library/Home.vue:37
+#: src/components/library/Home.vue:1
 msgctxt "Content/Home/Title"
 msgid "Recently added"
 msgstr ""
 
-#: front/src/components/Home.vue:207 src/components/Home.vue:1
+#: src/components/Home.vue:207
+#: src/components/Home.vue:1
 msgctxt "Content/Home/Title"
 msgid "Recently added albums"
 msgstr ""
 
-#: front/src/components/library/Home.vue:16 src/components/library/Home.vue:1
-#: front/src/views/auth/ProfileActivity.vue:15
+#: src/components/library/Home.vue:16
+#: src/components/library/Home.vue:1
+#: src/views/auth/ProfileActivity.vue:15
 msgctxt "Content/Home/Title"
 msgid "Recently favorited"
 msgstr ""
 
-#: front/src/components/library/Home.vue:7 src/components/library/Home.vue:1
-#: front/src/views/auth/ProfileActivity.vue:5
+#: src/components/library/Home.vue:7
+#: src/components/library/Home.vue:1
+#: src/views/auth/ProfileActivity.vue:5
 msgctxt "Content/Home/Title"
 msgid "Recently listened"
 msgstr ""
 
-#: front/src/components/auth/ApplicationForm.vue:19
+#: src/components/auth/ApplicationForm.vue:19
 msgctxt "Content/Applications/Input.Label/Noun"
 msgid "Redirect URI"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:171 src/components/auth/Settings.vue:234
-#: front/src/components/common/EmptyState.vue:15 src/views/content/remote/Home.vue:32
-#: front/src/views/content/remote/Home.vue:7
+#: src/components/auth/Settings.vue:171
+#: src/components/auth/Settings.vue:234
+#: src/components/common/EmptyState.vue:15
+#: src/views/content/remote/Home.vue:32
+#: src/views/content/remote/Home.vue:7
 msgctxt "Content/*/Button.Label/Short, Verb"
 msgid "Refresh"
 msgstr ""
 
-#: front/src/components/federation/FetchButton.vue:39
-#: front/src/components/federation/FetchButton.vue:27
+#: src/components/federation/FetchButton.vue:39
+#: src/components/federation/FetchButton.vue:27
 msgctxt "Popup/*/Message.Title"
 msgid "Refresh error"
 msgstr ""
 
-#: front/src/views/admin/ChannelDetail.vue:48 src/views/admin/ChannelDetail.vue:43
-#: front/src/views/admin/library/AlbumDetail.vue:53
-#: front/src/views/admin/library/AlbumDetail.vue:48
-#: front/src/views/admin/library/ArtistDetail.vue:52
-#: front/src/views/admin/library/ArtistDetail.vue:47
-#: front/src/views/admin/library/TrackDetail.vue:53
-#: front/src/views/admin/library/TrackDetail.vue:48
+#: src/views/admin/ChannelDetail.vue:48
+#: src/views/admin/ChannelDetail.vue:43
+#: src/views/admin/library/AlbumDetail.vue:53
+#: src/views/admin/library/AlbumDetail.vue:48
+#: src/views/admin/library/ArtistDetail.vue:52
+#: src/views/admin/library/ArtistDetail.vue:47
+#: src/views/admin/library/TrackDetail.vue:53
+#: src/views/admin/library/TrackDetail.vue:48
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Refresh from remote server"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:183
-#: front/src/views/admin/moderation/DomainsDetail.vue:178
+#: src/views/admin/moderation/DomainsDetail.vue:183
+#: src/views/admin/moderation/DomainsDetail.vue:178
 msgctxt "Content/Moderation/Button.Label/Verb"
 msgid "Refresh node info"
 msgstr ""
 
-#: front/src/components/federation/FetchButton.vue:125
+#: src/components/federation/FetchButton.vue:125
 msgctxt "Popup/*/Message.Title"
 msgid "Refresh pending"
 msgstr ""
 
-#: front/src/components/federation/FetchButton.vue:27
-#: front/src/components/federation/FetchButton.vue:15
+#: src/components/federation/FetchButton.vue:27
+#: src/components/federation/FetchButton.vue:15
 msgctxt "Popup/*/Message.Title"
 msgid "Refresh successful"
 msgstr ""
 
-#: front/src/components/common/ActionTable.vue:299
+#: src/components/common/ActionTable.vue:65
 msgctxt "Content/*/Button.Tooltip/Verb"
 msgid "Refresh table content"
 msgstr ""
 
-#: front/src/components/federation/FetchButton.vue:15
-#: front/src/components/federation/FetchButton.vue:3
+#: src/components/federation/FetchButton.vue:15
+#: src/components/federation/FetchButton.vue:3
 msgctxt "Popup/*/Message.Title"
 msgid "Refresh was skipped"
 msgstr ""
 
-#: front/src/components/federation/FetchButton.vue:7
+#: src/components/federation/FetchButton.vue:7
 msgctxt "Popup/*/Title"
 msgid "Refreshing object from remote server…"
 msgstr ""
 
-#: front/src/components/manage/moderation/UserRequestCard.vue:158
+#: src/components/manage/moderation/UserRequestCard.vue:158
 msgctxt "Content/*/Button.Label"
 msgid "Refuse"
 msgstr ""
 
-#: front/src/components/manage/moderation/UserRequestCard.vue:58
-#: front/src/components/manage/moderation/UserRequestCard.vue:2
-#: front/src/views/admin/moderation/RequestsList.vue:36
+#: src/components/manage/moderation/UserRequestCard.vue:58
+#: src/components/manage/moderation/UserRequestCard.vue:2
+#: src/views/admin/moderation/RequestsList.vue:36
 msgctxt "Content/*/*/Short"
 msgid "Refused"
 msgstr ""
 
-#: front/src/components/auth/ApplicationEdit.vue:37
-#: front/src/components/auth/ApplicationEdit.vue:30
+#: src/components/auth/ApplicationEdit.vue:37
+#: src/components/auth/ApplicationEdit.vue:30
 msgctxt "Content/Applications/Label"
 msgid "Regenerate token"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:310
+#: src/components/auth/Settings.vue:310
 msgctxt "Content/Settings/Button.Label"
 msgid "Register a new application"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:380
+#: src/components/auth/Settings.vue:380
 msgctxt "Content/Applications/Paragraph"
 msgid "Register one to integrate Funkwhale with third-party applications."
 msgstr ""
 
-#: front/src/components/AboutPod.vue:173
+#: src/components/AboutPod.vue:173
 msgctxt "*/*/*"
 msgid "Registrations"
 msgstr ""
 
-#: front/src/components/auth/SignupForm.vue:28
+#: src/components/auth/SignupForm.vue:28
 msgctxt "Content/Signup/Form/Paragraph"
 msgid "Registrations on this pod are open, but reviewed by moderators before approval."
 msgstr ""
 
-#: front/src/components/manage/users/UsersTable.vue:110
-#: front/src/components/manage/users/UsersTable.vue:35
+#: src/components/manage/users/UsersTable.vue:110
+#: src/components/manage/users/UsersTable.vue:35
 msgctxt "Content/Admin/Table, User role"
 msgid "Regular user"
 msgstr ""
 
-#: front/src/components/notifications/NotificationRow.vue:121
+#: src/components/notifications/NotificationRow.vue:51
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Reject"
 msgstr ""
 
-#: front/src/components/library/EditCard.vue:116 src/views/library/Edit.vue:70
+#: src/components/library/EditCard.vue:116
+#: src/views/library/Edit.vue:70
 msgctxt "Content/Library/Button.Label"
 msgid "Reject"
 msgstr ""
 
-#: front/src/components/manage/moderation/InstancePolicyCard.vue:47
-#: front/src/components/manage/moderation/InstancePolicyForm.vue:217
+#: src/components/manage/moderation/InstancePolicyCard.vue:47
+#: src/components/manage/moderation/InstancePolicyForm.vue:47
 msgctxt "Content/Moderation/*/Verb"
 msgid "Reject media"
 msgstr ""
 
-#: front/src/components/library/EditCard.vue:35
-#: front/src/components/manage/library/EditsCardList.vue:30
-#: front/src/views/library/Edit.vue:60
+#: src/components/library/EditCard.vue:35
+#: src/components/manage/library/EditsCardList.vue:30
+#: src/views/library/Edit.vue:60
 msgctxt "Content/Library/*/Short"
 msgid "Rejected"
 msgstr ""
 
-#: front/src/components/library/TrackDetail.vue:204
+#: src/components/library/TrackDetail.vue:205
 msgctxt "Content/*/Title/Noun"
 msgid "Related Libraries"
 msgstr ""
 
-#: front/src/components/library/TrackDetail.vue:197
+#: src/components/library/TrackDetail.vue:198
 msgctxt "Content/*/Title/Noun"
 msgid "Related Playlists"
 msgstr ""
 
-#: front/src/components/manage/library/AlbumsTable.vue:62
-#: front/src/components/manage/library/AlbumsTable.vue:22
-#: front/src/components/mixins/Translations.vue:69 src/edits.js:71
-#: front/src/components/mixins/Translations.vue:70
+#: src/components/manage/library/AlbumsTable.vue:62
+#: src/components/manage/library/AlbumsTable.vue:22
+#: src/components/mixins/Translations.vue:69
 msgctxt "Content/*/*/Noun"
 msgid "Release date"
 msgstr ""
 
-#: front/src/components/library/TrackDetail.vue:100
+#: src/components/library/TrackDetail.vue:101
 msgctxt "Content/*/*"
 msgid "Release Details"
 msgstr ""
 
-#: front/src/components/library/FileUpload.vue:32
+#: src/components/library/FileUpload.vue:32
 msgctxt "Content/Library/Paragraph"
 msgid "Remaining storage space"
 msgstr ""
 
-#: front/src/components/channels/UploadModal.vue:26
-#: front/src/components/channels/UploadModal.vue:1
+#: src/components/channels/UploadModal.vue:26
+#: src/components/channels/UploadModal.vue:1
 msgctxt "Content/Library/Paragraph"
 msgid "Remaining storage space:"
 msgstr ""
 
-#: front/src/views/Notifications.vue:24 src/views/Notifications.vue:80
+#: src/views/Notifications.vue:24
+#: src/views/Notifications.vue:80
 msgctxt "Content/Notifications/Label"
 msgid "Remind me in:"
 msgstr ""
 
-#: front/src/views/content/remote/Home.vue:11
+#: src/views/content/remote/Home.vue:11
 msgctxt "Content/Library/Title/Noun"
 msgid "Remote libraries"
 msgstr ""
 
-#: front/src/views/content/remote/Home.vue:16
+#: src/views/content/remote/Home.vue:16
 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/auth/Settings.vue:355
+#: src/components/auth/Settings.vue:355
 msgctxt "*/*/*/Verb"
 msgid "Remove"
 msgstr ""
 
-#: front/src/components/channels/UploadForm.vue:104
-#: front/src/components/channels/UploadForm.vue:69
-#: front/src/components/channels/UploadForm.vue:58
-#: front/src/components/common/AttachmentInput.vue:38
-#: front/src/components/library/radios/Filter.vue:58
+#: src/components/channels/UploadForm.vue:104
+#: src/components/channels/UploadForm.vue:69
+#: src/components/channels/UploadForm.vue:58
+#: src/components/common/AttachmentInput.vue:38
+#: src/components/library/radios/Filter.vue:58
 msgctxt "Content/Radio/Button.Label/Verb"
 msgid "Remove"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:367
+#: src/components/auth/Settings.vue:367
 msgctxt "*/Settings/Button.Label/Verb"
 msgid "Remove application"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:358
+#: src/components/auth/Settings.vue:358
 msgctxt "Popup/Settings/Title"
 msgid "Remove application \"%{ application }\"?"
 msgstr ""
 
-#: front/src/components/library/ArtistDetail.vue:16
+#: src/components/library/ArtistDetail.vue:16
 msgctxt "Content/Moderation/Button.Label"
 msgid "Remove filter"
 msgstr ""
 
-#: front/src/components/manage/moderation/DomainsTable.vue:257
-#: front/src/views/admin/moderation/DomainsDetail.vue:32
-#: front/src/views/admin/moderation/DomainsDetail.vue:27
+#: src/components/manage/moderation/DomainsTable.vue:69
+#: src/views/admin/moderation/DomainsDetail.vue:32
+#: src/views/admin/moderation/DomainsDetail.vue:27
 msgctxt "Content/Moderation/Action/Verb"
 msgid "Remove from allow-list"
 msgstr ""
 
-#: front/src/components/audio/podcast/Modal.vue:259
-#: front/src/components/audio/track/Modal.vue:259
-#: front/src/components/favorites/TrackFavoriteIcon.vue:42
-#: front/src/components/audio/podcast/Modal.vue:261
-#: front/src/components/audio/track/Modal.vue:261
+#: src/components/audio/podcast/Modal.vue:31
+#: src/components/audio/track/Modal.vue:31
+#: src/components/favorites/TrackFavoriteIcon.vue:10
 msgctxt "Content/Track/Icon.Tooltip/Verb"
 msgid "Remove from favorites"
 msgstr ""
 
-#: front/src/views/content/libraries/Quota.vue:56
+#: src/views/content/libraries/Quota.vue:56
 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:95
+#: src/views/content/libraries/Quota.vue:95
 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:134
+#: src/views/content/libraries/Quota.vue:134
 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/mixins/Report.vue:6 src/components/mixins/Report.vue:7
+#: src/components/mixins/Report.vue:6
 msgctxt "*/Moderation/*/Verb"
 msgid "Report @%{ username }…"
 msgstr ""
 
-#: front/src/components/manage/moderation/ReportCard.vue:5
+#: src/components/manage/moderation/ReportCard.vue:5
 msgctxt "Content/Moderation/Card/Short"
 msgid "Report %{ id }"
 msgstr ""
 
-#: front/src/components/moderation/ReportModal.vue:262
+#: src/components/moderation/ReportModal.vue:108
 msgctxt "*/Moderation/Message"
 msgid "Report successfully submitted, thank you"
 msgstr ""
 
-#: front/src/components/mixins/Report.vue:38 src/components/mixins/Report.vue:39
+#: src/components/mixins/Report.vue:38
 msgctxt "*/Moderation/*/Verb"
 msgid "Report this album…"
 msgstr ""
 
-#: front/src/components/mixins/Report.vue:65 src/components/mixins/Report.vue:66
+#: src/components/mixins/Report.vue:65
 msgctxt "*/Moderation/*/Verb"
 msgid "Report this artist…"
 msgstr ""
 
-#: front/src/components/mixins/Report.vue:54 src/components/mixins/Report.vue:55
+#: src/components/mixins/Report.vue:54
 msgctxt "*/Moderation/*/Verb"
 msgid "Report this channel…"
 msgstr ""
 
-#: front/src/components/mixins/Report.vue:89 src/components/mixins/Report.vue:90
+#: src/components/mixins/Report.vue:89
 msgctxt "*/Moderation/*/Verb"
 msgid "Report this library…"
 msgstr ""
 
-#: front/src/components/mixins/Report.vue:77 src/components/mixins/Report.vue:78
+#: src/components/mixins/Report.vue:77
 msgctxt "*/Moderation/*/Verb"
 msgid "Report this playlist…"
 msgstr ""
 
-#: front/src/components/mixins/Report.vue:24 src/components/mixins/Report.vue:25
+#: src/components/mixins/Report.vue:24
 msgctxt "*/Moderation/*/Verb"
 msgid "Report this track…"
 msgstr ""
 
-#: front/src/components/audio/PlayButton.vue:180
+#: src/components/audio/PlayButton.vue:54
 msgctxt "*/Moderation/*/Button/Label,Verb"
 msgid "Report…"
 msgstr ""
 
-#: front/src/components/manage/moderation/ReportCard.vue:139
+#: src/components/manage/moderation/ReportCard.vue:139
 msgctxt "Content/*/*/Short"
 msgid "Reported object"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:139
-#: front/src/views/admin/moderation/Base.vue:4
-#: front/src/views/admin/moderation/ReportsList.vue:4
-#: front/src/views/admin/moderation/ReportsList.vue:177
-#: front/src/components/mixins/Translations.vue:140
+#: src/components/mixins/Translations.vue:139
+#: src/views/admin/moderation/Base.vue:4
+#: src/views/admin/moderation/ReportsList.vue:4
+#: src/views/admin/moderation/ReportsList.vue:45
 msgctxt "*/Moderation/*/Noun"
 msgid "Reports"
 msgstr ""
 
-#: front/src/components/manage/moderation/UserRequestCard.vue:5
+#: src/components/manage/moderation/UserRequestCard.vue:5
 msgctxt "Content/Moderation/Card/Short"
 msgid "Request %{ id }"
 msgstr ""
 
-#: front/src/components/auth/SubsonicTokenForm.vue:52
-#: front/src/components/auth/SubsonicTokenForm.vue:66
-#: front/src/components/auth/SubsonicTokenForm.vue:6
-#: front/src/components/auth/SubsonicTokenForm.vue:20
+#: src/components/auth/SubsonicTokenForm.vue:52
+#: src/components/auth/SubsonicTokenForm.vue:66
+#: src/components/auth/SubsonicTokenForm.vue:6
+#: src/components/auth/SubsonicTokenForm.vue:20
 msgctxt "*/Settings/Button.Label/Verb"
 msgid "Request a new password"
 msgstr ""
 
-#: front/src/components/auth/SubsonicTokenForm.vue:56
-#: front/src/components/auth/SubsonicTokenForm.vue:10
+#: src/components/auth/SubsonicTokenForm.vue:56
+#: src/components/auth/SubsonicTokenForm.vue:10
 msgctxt "Popup/Settings/Title"
 msgid "Request a new Subsonic API password?"
 msgstr ""
 
-#: front/src/components/auth/SubsonicTokenForm.vue:72
-#: front/src/components/auth/SubsonicTokenForm.vue:26
+#: src/components/auth/SubsonicTokenForm.vue:72
+#: src/components/auth/SubsonicTokenForm.vue:26
 msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Request a password"
 msgstr ""
 
-#: front/src/components/federation/FetchButton.vue:99
+#: src/components/federation/FetchButton.vue:99
 msgctxt "Popup/*/Loading.Title"
 msgid "Requesting a fetch…"
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:311
-#: front/src/views/admin/moderation/AccountsDetail.vue:306
+#: src/views/admin/moderation/AccountsDetail.vue:311
+#: src/views/admin/moderation/AccountsDetail.vue:306
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Requests"
 msgstr ""
 
-#: front/src/components/admin/SignupFormBuilder.vue:53
+#: src/components/admin/SignupFormBuilder.vue:53
 msgctxt "*/*/Form-builder,Help"
 msgid "Required"
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:112
+#: src/components/library/EditForm.vue:112
 msgctxt "Content/Library/Button.Label"
 msgid "Reset to initial value"
 msgstr ""
 
-#: front/src/components/auth/LoginForm.vue:41 src/components/auth/LoginForm.vue:17
-#: front/src/views/auth/PasswordReset.vue:5 src/views/auth/PasswordReset.vue:87
+#: src/components/auth/LoginForm.vue:41
+#: src/components/auth/LoginForm.vue:17
+#: src/views/auth/PasswordReset.vue:5
+#: src/views/auth/PasswordReset.vue:14
 msgctxt "*/Login/*/Verb"
 msgid "Reset your password"
 msgstr ""
 
-#: front/src/components/manage/moderation/ReportCard.vue:97
-#: front/src/components/manage/moderation/UserRequestCard.vue:87
+#: src/components/manage/moderation/ReportCard.vue:97
+#: src/components/manage/moderation/UserRequestCard.vue:87
 msgctxt "Content/*/*/Noun"
 msgid "Resolution date"
 msgstr ""
 
-#: front/src/components/manage/moderation/ReportCard.vue:261
+#: src/components/manage/moderation/ReportCard.vue:261
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Resolve"
 msgstr ""
 
-#: front/src/components/manage/moderation/ReportCard.vue:70
-#: front/src/views/admin/moderation/ReportsList.vue:26
+#: src/components/manage/moderation/ReportCard.vue:70
+#: src/views/admin/moderation/ReportsList.vue:26
 msgctxt "Content/*/*/Short"
 msgid "Resolved"
 msgstr ""
 
-#: front/src/views/content/libraries/FilesTable.vue:345
-#: front/src/views/content/libraries/FilesTable.vue:347
+#: src/views/content/libraries/FilesTable.vue:77
 msgctxt "Content/Library/Dropdown/Verb"
 msgid "Restart import"
 msgstr ""
 
-#: front/src/components/Queue.vue:401
+#: src/components/Queue.vue:60
 msgctxt "*/*/*"
 msgid "Restart track"
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:34 src/components/library/EditForm.vue:5
+#: src/components/library/EditForm.vue:34
+#: src/components/library/EditForm.vue:5
 msgctxt "Content/Library/Button.Label"
 msgid "Restrict to unreviewed edits"
 msgstr ""
 
-#: front/src/views/library/DetailBase.vue:261
+#: src/views/library/DetailBase.vue:33
 msgctxt "Content/Library/Card.Help text"
 msgid "Restricted"
 msgstr ""
 
-#: front/src/components/library/FileUpload.vue:188
-#: front/src/components/library/FileUpload.vue:12
+#: src/components/library/FileUpload.vue:188
+#: src/components/library/FileUpload.vue:12
 msgctxt "Content/Library/Paragraph"
 msgid "Results of your import:"
 msgstr ""
 
-#: front/src/components/library/FileUpload.vue:183
-#: front/src/components/library/FileUpload.vue:7
+#: src/components/library/FileUpload.vue:183
+#: src/components/library/FileUpload.vue:7
 msgctxt "Content/Library/Paragraph"
 msgid "Results of your previous import:"
 msgstr ""
 
-#: front/src/components/favorites/List.vue:45 src/components/library/Albums.vue:49
-#: front/src/components/library/Artists.vue:49 src/components/library/Podcasts.vue:49
-#: front/src/components/library/Radios.vue:71 src/views/playlists/List.vue:51
+#: src/components/favorites/List.vue:45
+#: src/components/library/Albums.vue:49
+#: src/components/library/Artists.vue:49
+#: src/components/library/Podcasts.vue:49
+#: src/components/library/Radios.vue:71
+#: src/views/playlists/List.vue:51
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Results per page"
 msgstr ""
 
-#: front/src/components/channels/UploadForm.vue:60
-#: front/src/components/channels/UploadForm.vue:25
-#: front/src/components/channels/UploadForm.vue:14
+#: src/components/channels/UploadForm.vue:60
+#: src/components/channels/UploadForm.vue:25
+#: src/components/channels/UploadForm.vue:14
 msgctxt "*/*/*"
 msgid "Resume"
 msgstr ""
 
-#: front/src/components/channels/UploadForm.vue:109
-#: front/src/components/channels/UploadForm.vue:74
-#: front/src/components/channels/UploadForm.vue:63
-#: front/src/components/channels/UploadForm.vue:3
+#: src/components/channels/UploadForm.vue:109
+#: src/components/channels/UploadForm.vue:74
+#: src/components/channels/UploadForm.vue:63
+#: src/components/channels/UploadForm.vue:3
 msgctxt "*/*/*"
 msgid "Retry"
 msgstr ""
 
-#: front/src/components/library/FileUpload.vue:383
+#: src/components/library/FileUpload.vue:75
 msgctxt "*/*/*/Verb"
 msgid "Retry"
 msgstr ""
 
-#: front/src/components/library/FileUpload.vue:113
+#: src/components/library/FileUpload.vue:113
 msgctxt "Content/Library/Table"
 msgid "Retry failed uploads"
 msgstr ""
 
-#: front/src/views/auth/EmailConfirm.vue:23
+#: src/views/auth/EmailConfirm.vue:23
 msgctxt "Content/Signup/Link/Verb"
 msgid "Return to login"
 msgstr ""
 
-#: front/src/components/library/ArtistDetail.vue:11
+#: src/components/library/ArtistDetail.vue:11
 msgctxt "Content/Moderation/Link"
 msgid "Review my filters"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:264
+#: src/components/auth/Settings.vue:264
 msgctxt "*/*/*/Verb"
 msgid "Revoke"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:276
+#: src/components/auth/Settings.vue:276
 msgctxt "*/Settings/Button.Label/Verb"
 msgid "Revoke access"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:267
+#: src/components/auth/Settings.vue:267
 msgctxt "Popup/Settings/Title"
 msgid "Revoke access for application \"%{ application }\"?"
 msgstr ""
 
-#: front/src/components/RemoteSearchForm.vue:4
+#: src/components/RemoteSearchForm.vue:4
 msgctxt "Content/Search/Input.Label/Noun"
 msgid "RSS"
 msgstr ""
 
-#: front/src/views/admin/ChannelDetail.vue:168 src/views/admin/ChannelDetail.vue:163
+#: src/views/admin/ChannelDetail.vue:168
+#: src/views/admin/ChannelDetail.vue:163
 msgctxt "'*/*/*"
 msgid "RSS Feed"
 msgstr ""
 
-#: front/src/components/RemoteSearchForm.vue:127
+#: src/components/RemoteSearchForm.vue:29
 msgctxt "*/*/*"
 msgid "RSS feed location"
 msgstr ""
 
-#: front/src/components/manage/moderation/InstancePolicyCard.vue:20
+#: src/components/manage/moderation/InstancePolicyCard.vue:20
 msgctxt "Content/Moderation/Card.Title/Noun"
 msgid "Rule"
 msgstr ""
 
-#: front/src/components/AboutPod.vue:23 src/components/AboutPod.vue:59
+#: src/components/AboutPod.vue:23
+#: src/components/AboutPod.vue:59
 msgctxt "Content/About/Header"
 msgid "Rules"
 msgstr ""
 
-#: front/src/components/admin/SettingsGroup.vue:65 src/components/auth/Plugin.vue:67
-#: front/src/components/library/radios/Builder.vue:44
+#: src/components/admin/SettingsGroup.vue:65
+#: src/components/auth/Plugin.vue:67
+#: src/components/library/radios/Builder.vue:44
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Save"
 msgstr ""
 
-#: front/src/components/auth/Plugin.vue:72
+#: src/components/auth/Plugin.vue:72
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Scan"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:305
+#: src/views/content/remote/Card.vue:80
 msgctxt "Content/Library/Message"
 msgid "Scan launched"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:87
+#: src/views/content/remote/Card.vue:87
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Scan now"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:41 src/views/content/remote/Card.vue:2
+#: src/views/content/remote/Card.vue:41
+#: src/views/content/remote/Card.vue:2
 msgctxt "Content/Library/Card.List item"
 msgid "Scan pending"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:306
+#: src/views/content/remote/Card.vue:81
 msgctxt "Content/Library/Message"
 msgid "Scan skipped (previous scan is too recent)"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:59 src/views/content/remote/Card.vue:2
+#: src/views/content/remote/Card.vue:59
+#: src/views/content/remote/Card.vue:2
 msgctxt "Content/Library/Card.List item"
 msgid "Scanned"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:65 src/views/content/remote/Card.vue:2
+#: src/views/content/remote/Card.vue:65
+#: src/views/content/remote/Card.vue:2
 msgctxt "Content/Library/Card.List item"
 msgid "Scanned with errors"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:47 src/views/content/remote/Card.vue:2
+#: src/views/content/remote/Card.vue:47
+#: src/views/content/remote/Card.vue:2
 msgctxt "Content/Library/Card.List item"
 msgid "Scanning… (%{ progress }%)"
 msgstr ""
 
-#: front/src/components/auth/ApplicationForm.vue:28
-#: front/src/components/auth/Settings.vue:323
+#: src/components/auth/ApplicationForm.vue:28
+#: src/components/auth/Settings.vue:323
 msgctxt "Content/*/*/Noun"
 msgid "Scopes"
 msgstr ""
 
-#: front/src/components/RemoteSearchForm.vue:47
-#: front/src/components/common/InlineSearchBar.vue:4
-#: front/src/components/library/Albums.vue:12 src/components/library/Albums.vue:98
-#: front/src/components/library/Artists.vue:98 src/components/library/Podcasts.vue:98
-#: front/src/components/library/Radios.vue:39 src/components/library/Radios.vue:183
-#: front/src/components/manage/ChannelsTable.vue:5
-#: 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/TagsTable.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 src/views/Search.vue:10
-#: front/src/views/Search.vue:190 src/views/admin/moderation/ReportsList.vue:12
-#: front/src/views/admin/moderation/RequestsList.vue:12
-#: front/src/views/content/libraries/FilesTable.vue:6 src/views/playlists/List.vue:19
-#: front/src/views/playlists/List.vue:132
+#: src/components/RemoteSearchForm.vue:47
+#: src/components/common/InlineSearchBar.vue:4
+#: src/components/library/Albums.vue:12
+#: src/components/library/Albums.vue:107
+#: src/components/library/Artists.vue:118
+#: src/components/library/Podcasts.vue:132
+#: src/components/library/Radios.vue:39
+#: src/components/library/Radios.vue:166
+#: src/components/manage/ChannelsTable.vue:5
+#: src/components/manage/library/AlbumsTable.vue:5
+#: src/components/manage/library/ArtistsTable.vue:5
+#: src/components/manage/library/EditsCardList.vue:6
+#: src/components/manage/library/LibrariesTable.vue:5
+#: src/components/manage/library/TagsTable.vue:5
+#: src/components/manage/library/TracksTable.vue:5
+#: src/components/manage/library/UploadsTable.vue:5
+#: src/components/manage/moderation/AccountsTable.vue:5
+#: src/components/manage/moderation/DomainsTable.vue:5
+#: src/components/manage/users/InvitationsTable.vue:5
+#: src/components/manage/users/UsersTable.vue:5
+#: src/views/Search.vue:10
+#: src/views/Search.vue:51
+#: src/views/admin/moderation/ReportsList.vue:12
+#: src/views/admin/moderation/RequestsList.vue:12
+#: src/views/content/libraries/FilesTable.vue:6
+#: src/views/playlists/List.vue:19
+#: src/views/playlists/List.vue:108
 msgctxt "Content/Search/Input.Label/Noun"
 msgid "Search"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:151
+#: src/components/Sidebar.vue:151
 msgctxt "Sidebar/Navigation/List item.Link/Verb"
 msgid "Search"
 msgstr ""
 
-#: front/src/views/content/remote/ScanForm.vue:15
+#: src/views/content/remote/ScanForm.vue:15
 msgctxt "Content/Library/Input.Label/Verb"
 msgid "Search a remote library"
 msgstr ""
 
-#: front/src/views/Search.vue:192
+#: src/views/Search.vue:53
 msgctxt "Head/Fetch/Title"
 msgid "Search a remote object"
 msgstr ""
 
-#: front/src/components/manage/library/EditsCardList.vue:180
-#: front/src/views/admin/moderation/ReportsList.vue:176
+#: src/components/manage/library/EditsCardList.vue:44
+#: src/views/admin/moderation/ReportsList.vue:44
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by account, summary, domain…"
 msgstr ""
 
-#: front/src/components/manage/library/LibrariesTable.vue:261
+#: src/components/manage/library/LibrariesTable.vue:40
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, actor, name, description…"
 msgstr ""
 
-#: front/src/components/manage/library/UploadsTable.vue:360
+#: src/components/manage/library/UploadsTable.vue:47
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, actor, name, reference, source…"
 msgstr ""
 
-#: front/src/components/manage/ChannelsTable.vue:245
+#: src/components/manage/ChannelsTable.vue:39
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, name, account…"
 msgstr ""
 
-#: front/src/components/manage/library/ArtistsTable.vue:229
+#: src/components/manage/library/ArtistsTable.vue:39
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, name, MusicBrainz ID…"
 msgstr ""
 
-#: front/src/components/manage/library/TracksTable.vue:242
+#: src/components/manage/library/TracksTable.vue:38
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, title, artist, album, MusicBrainz ID…"
 msgstr ""
 
-#: front/src/components/manage/library/AlbumsTable.vue:231
+#: src/components/manage/library/AlbumsTable.vue:40
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, title, artist, MusicBrainz ID…"
 msgstr ""
 
-#: front/src/components/manage/moderation/AccountsTable.vue:219
+#: src/components/manage/moderation/AccountsTable.vue:42
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, username, bio…"
 msgstr ""
 
-#: front/src/components/manage/library/TagsTable.vue:197
+#: src/components/manage/library/TagsTable.vue:45
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by name"
 msgstr ""
 
-#: front/src/components/manage/moderation/DomainsTable.vue:227
+#: src/components/manage/moderation/DomainsTable.vue:39
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by name…"
 msgstr ""
 
-#: front/src/views/content/libraries/FilesTable.vue:325
-#: front/src/views/content/libraries/FilesTable.vue:327
+#: src/views/content/libraries/FilesTable.vue:57
 msgctxt "Content/Library/Input.Placeholder"
 msgid "Search by title, artist, album…"
 msgstr ""
 
-#: front/src/components/manage/users/InvitationsTable.vue:198
+#: src/components/manage/users/InvitationsTable.vue:36
 msgctxt "Content/Admin/Input.Placeholder/Verb"
 msgid "Search by username, e-mail address, code…"
 msgstr ""
 
-#: front/src/components/manage/users/UsersTable.vue:241
+#: src/components/manage/users/UsersTable.vue:36
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by username, e-mail address, name…"
 msgstr ""
 
-#: front/src/views/admin/moderation/RequestsList.vue:165
+#: src/views/admin/moderation/RequestsList.vue:39
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by username…"
 msgstr ""
 
-#: front/src/components/audio/SearchBar.vue:36
+#: src/components/audio/SearchBar.vue:13
 msgctxt "Sidebar/Search/Input.Placeholder"
 msgid "Search for artists, albums, tracks…"
 msgstr ""
 
-#: front/src/components/audio/SearchBar.vue:37
+#: src/components/audio/SearchBar.vue:14
 msgctxt "Sidebar/Search/Input.Label"
 msgid "Search for content"
 msgstr ""
 
-#: front/src/components/audio/Search.vue:3
+#: src/components/audio/Search.vue:3
 msgctxt "Content/Search/Title"
 msgid "Search for some music"
 msgstr ""
 
-#: front/src/components/library/AlbumDropdown.vue:37
-#: front/src/components/library/ArtistBase.vue:82
-#: front/src/components/library/ArtistBase.vue:77
-#: front/src/components/library/TrackBase.vue:65
-#: front/src/components/library/TrackBase.vue:60
+#: src/components/library/AlbumDropdown.vue:37
+#: src/components/library/ArtistBase.vue:82
+#: src/components/library/ArtistBase.vue:77
+#: src/components/library/TrackBase.vue:65
+#: src/components/library/TrackBase.vue:60
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Search on Discogs"
 msgstr ""
 
-#: front/src/components/audio/SearchBar.vue:173
+#: src/components/audio/SearchBar.vue:150
 msgctxt "Search/*/*"
 msgid "Search on the fediverse"
 msgstr ""
 
-#: front/src/components/library/ArtistBase.vue:74
-#: front/src/components/library/ArtistBase.vue:69
-#: front/src/components/library/TrackBase.vue:61
-#: front/src/components/library/TrackBase.vue:56
+#: src/components/library/ArtistBase.vue:74
+#: src/components/library/ArtistBase.vue:69
+#: src/components/library/TrackBase.vue:61
+#: src/components/library/TrackBase.vue:56
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Search on Wikipedia"
 msgstr ""
 
-#: front/src/components/library/TagsSelector.vue:6
+#: src/components/library/TagsSelector.vue:6
 msgctxt "*/Dropdown/Placeholder/Verb"
 msgid "Search…"
 msgstr ""
 
-#: front/src/components/common/InlineSearchBar.vue:45
-#: front/src/components/library/Artists.vue:206
-#: front/src/components/library/Podcasts.vue:242
+#: src/components/common/InlineSearchBar.vue:9
+#: src/components/library/Artists.vue:41
+#: src/components/library/Podcasts.vue:45
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search…"
 msgstr ""
 
-#: front/src/components/library/Library.vue:18 src/views/admin/library/Base.vue:85
-#: front/src/views/admin/moderation/Base.vue:77 src/views/admin/users/Base.vue:38
-#: front/src/views/content/Base.vue:36
+#: src/components/library/Library.vue:11
+#: src/views/admin/library/Base.vue:5
+#: src/views/admin/moderation/Base.vue:14
+#: src/views/admin/users/Base.vue:6
+#: src/views/content/Base.vue:5
 msgctxt "Menu/*/Hidden text"
 msgid "Secondary menu"
 msgstr ""
 
-#: front/src/views/admin/Settings.vue:12
+#: src/views/admin/Settings.vue:12
 msgctxt "Content/Admin/Menu.Title"
 msgid "Sections"
 msgstr ""
 
-#: front/src/views/admin/Settings.vue:71
+#: src/views/admin/Settings.vue:27
 msgctxt "*/*/*/Noun"
 msgid "Security"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:135
-#: front/src/components/mixins/Translations.vue:136
+#: src/components/mixins/Translations.vue:135
 msgctxt "*/Admin/*/Noun"
 msgid "Security"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:110
+#: src/components/ShortcutsModal.vue:50
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Seek backwards 30s"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:102
+#: src/components/ShortcutsModal.vue:42
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Seek backwards 5s"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:114
+#: src/components/ShortcutsModal.vue:54
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Seek forwards 30s"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:106
+#: src/components/ShortcutsModal.vue:46
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Seek forwards 5s"
 msgstr ""
 
-#: front/src/components/common/ActionTable.vue:302
+#: src/components/common/ActionTable.vue:68
 msgctxt "Content/*/Select/Verb"
 msgid "Select"
 msgstr ""
 
-#: front/src/components/library/radios/Builder.vue:56
+#: src/components/library/radios/Builder.vue:56
 msgctxt "Content/Radio/Dropdown.Placeholder/Verb"
 msgid "Select a filter"
 msgstr ""
 
-#: front/src/components/common/ActionTable.vue:300
+#: src/components/common/ActionTable.vue:66
 msgctxt "Content/*/Select/Verb"
 msgid "Select all items"
 msgstr ""
 
-#: front/src/components/common/ActionTable.vue:64
-#: front/src/components/common/ActionTable.vue:2
+#: src/components/common/ActionTable.vue:64
+#: src/components/common/ActionTable.vue:2
 msgctxt "Content/*/Link/Verb"
 msgid "Select one element"
 msgid_plural "Select all %{ total } elements"
 msgstr[0] ""
 msgstr[1] ""
 
-#: front/src/components/common/ActionTable.vue:69
-#: front/src/components/common/ActionTable.vue:7
+#: src/components/common/ActionTable.vue:69
+#: src/components/common/ActionTable.vue:7
 msgctxt "Content/*/Link/Verb"
 msgid "Select only current page"
 msgstr ""
 
-#: front/src/components/AboutPod.vue:271 src/components/AboutPod.vue:7
+#: src/components/AboutPod.vue:271
+#: src/components/AboutPod.vue:7
 msgctxt "Content/About/Email"
 msgid "Send us an email: {{ contactEmail }}"
 msgstr ""
 
-#: front/src/components/library/TrackDetail.vue:123
+#: src/components/library/TrackDetail.vue:124
 msgctxt "*/*/*"
 msgid "Serie"
 msgstr ""
 
-#: front/src/components/channels/AlbumSelect.vue:3 src/views/Search.vue:251
+#: src/components/channels/AlbumSelect.vue:3
+#: src/views/Search.vue:112
 msgctxt "*/*/*"
 msgid "Series"
 msgstr ""
 
-#: front/src/views/channels/DetailOverview.vue:70
+#: src/views/channels/DetailOverview.vue:70
 msgctxt "Content/Channel/Paragraph"
 msgid "Series"
 msgstr ""
 
-#: front/src/components/Home.vue:48 src/components/Home.vue:18
+#: src/components/Home.vue:48
+#: src/components/Home.vue:18
 msgctxt "Content/Home/Link"
 msgid "Server rules"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:46 src/components/common/UserMenu.vue:163
-#: front/src/components/common/UserModal.vue:192
-#: front/src/components/manage/users/UsersTable.vue:259
-#: front/src/views/admin/moderation/AccountsDetail.vue:618
+#: src/components/Sidebar.vue:46
+#: src/components/common/UserMenu.vue:16
+#: src/components/common/UserModal.vue:24
+#: src/components/manage/users/UsersTable.vue:54
+#: src/views/admin/moderation/AccountsDetail.vue:48
 msgctxt "*/*/*/Noun"
 msgid "Settings"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:12
+#: src/components/auth/Settings.vue:12
 msgctxt "Content/Settings/Message"
 msgid "Settings updated"
 msgstr ""
 
-#: front/src/components/admin/SettingsGroup.vue:19
+#: src/components/admin/SettingsGroup.vue:19
 msgctxt "Content/Settings/Paragraph"
 msgid "Settings updated successfully."
 msgstr ""
 
-#: front/src/components/manage/users/InvitationForm.vue:40
+#: src/components/manage/users/InvitationForm.vue:40
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Share link"
 msgstr ""
 
-#: front/src/views/library/DetailBase.vue:83
+#: src/views/library/DetailBase.vue:83
 msgctxt "Content/Library/Paragraph"
 msgid "Share this link with other users so they can request access to this library by copy-pasting it in their pod search bar."
 msgstr ""
 
-#: front/src/views/content/Home.vue:18
+#: src/views/content/Home.vue:18
 msgctxt "Content/Library/Paragraph"
 msgid "Share your work publicly and get subscribers on Funkwhale, the Fediverse or any podcasting application."
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:97 src/views/library/DetailBase.vue:80
+#: src/views/content/remote/Card.vue:97
+#: src/views/library/DetailBase.vue:80
 msgctxt "Content/Library/Title"
 msgid "Sharing link"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:5
+#: src/components/audio/EmbedWizard.vue:5
 msgctxt "Content/Embed/Message"
 msgid "Sharing will not work because this pod doesn't allow anonymous users to access content."
 msgstr ""
 
-#: front/src/components/admin/SignupFormBuilder.vue:68
+#: src/components/admin/SignupFormBuilder.vue:68
 msgctxt "*/*/Form-builder"
 msgid "Short text"
 msgstr ""
 
-#: front/src/components/tags/List.vue:6
+#: src/components/tags/List.vue:6
 msgctxt "Content/*/Button/Label/Verb"
 msgid "Show 1 more tag"
 msgid_plural "Show %{ count } more tags"
 msgstr[0] ""
 msgstr[1] ""
 
-#: front/src/components/library/EditForm.vue:24 src/components/library/EditForm.vue:5
+#: src/components/library/EditForm.vue:24
+#: src/components/library/EditForm.vue:5
 msgctxt "Content/Library/Button.Label"
 msgid "Show all edits"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:76
+#: src/components/ShortcutsModal.vue:16
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Show available keyboard shortcuts"
 msgstr ""
 
-#: front/src/views/content/libraries/FilesTable.vue:329
+#: src/views/content/libraries/FilesTable.vue:61
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Show information about the upload status for this track"
 msgstr ""
 
-#: front/src/components/common/ExpandableDiv.vue:7
-#: front/src/components/common/RenderedDescription.vue:10
-#: front/src/components/common/RenderedDescription.vue:8
-#: front/src/components/common/RenderedDescription.vue:6
+#: src/components/common/ExpandableDiv.vue:7
+#: src/components/common/RenderedDescription.vue:10
+#: src/components/common/RenderedDescription.vue:8
+#: src/components/common/RenderedDescription.vue:6
 msgctxt "*/*/Button,Label"
 msgid "Show less"
 msgstr ""
 
-#: front/src/components/audio/ChannelSeries.vue:16
-#: front/src/components/audio/ChannelSeries.vue:3
-#: front/src/components/audio/ChannelsWidget.vue:13
-#: front/src/components/audio/ChannelsWidget.vue:3
-#: front/src/components/audio/album/Widget.vue:21
-#: front/src/components/audio/album/Widget.vue:3
-#: front/src/components/audio/artist/Widget.vue:20
-#: front/src/components/audio/artist/Widget.vue:3
-#: front/src/components/audio/track/Widget.vue:63
-#: front/src/components/audio/track/Widget.vue:3
-#: front/src/components/common/ExpandableDiv.vue:8
-#: front/src/components/common/RenderedDescription.vue:7
-#: front/src/components/common/RenderedDescription.vue:5
-#: front/src/components/common/RenderedDescription.vue:3
-#: front/src/components/federation/LibraryWidget.vue:23
-#: front/src/components/federation/LibraryWidget.vue:3
-#: front/src/components/playlists/Widget.vue:28 src/components/playlists/Widget.vue:3
+#: src/components/audio/ChannelSeries.vue:16
+#: src/components/audio/ChannelSeries.vue:3
+#: src/components/audio/ChannelsWidget.vue:13
+#: src/components/audio/ChannelsWidget.vue:3
+#: src/components/audio/album/Widget.vue:21
+#: src/components/audio/album/Widget.vue:3
+#: src/components/audio/artist/Widget.vue:20
+#: src/components/audio/artist/Widget.vue:3
+#: src/components/audio/track/Widget.vue:63
+#: src/components/audio/track/Widget.vue:3
+#: src/components/common/ExpandableDiv.vue:8
+#: src/components/common/RenderedDescription.vue:7
+#: src/components/common/RenderedDescription.vue:5
+#: src/components/common/RenderedDescription.vue:3
+#: src/components/federation/LibraryWidget.vue:23
+#: src/components/federation/LibraryWidget.vue:3
+#: src/components/playlists/Widget.vue:28
+#: src/components/playlists/Widget.vue:3
 msgctxt "*/*/Button,Label"
 msgid "Show more"
 msgstr ""
 
-#: front/src/views/Notifications.vue:122
+#: src/views/Notifications.vue:122
 msgctxt "Content/Notifications/Form.Label/Verb"
 msgid "Show read notifications"
 msgstr ""
 
-#: front/src/components/audio/podcast/MobileRow.vue:183
-#: front/src/components/audio/track/MobileRow.vue:166
+#: src/components/audio/podcast/MobileRow.vue:43
+#: src/components/audio/track/MobileRow.vue:43
 msgctxt "Content/Track/Icon.Tooltip/Verb"
 msgid "Show track actions"
 msgstr ""
 
-#: front/src/components/forms/PasswordInput.vue:46
-#: front/src/components/forms/PasswordInput.vue:48
+#: src/components/forms/PasswordInput.vue:16
 msgctxt "Content/Settings/Button.Tooltip/Verb"
 msgid "Show/hide password"
 msgstr ""
 
-#: front/src/components/manage/users/InvitationsTable.vue:97
-#: front/src/components/manage/users/UsersTable.vue:119
+#: src/components/manage/users/InvitationsTable.vue:97
+#: src/components/manage/users/UsersTable.vue:119
 msgctxt "Content/*/Paragraph"
 msgid "Showing one result"
 msgid_plural "Showing results %{ start } to %{ end } from %{ total }"
 msgstr[0] ""
 msgstr[1] ""
 
-#: front/src/components/manage/ChannelsTable.vue:133
-#: front/src/components/manage/library/AlbumsTable.vue:117
-#: front/src/components/manage/library/ArtistsTable.vue:120
-#: front/src/components/manage/library/EditsCardList.vue:75
-#: front/src/components/manage/library/LibrariesTable.vue:141
-#: front/src/components/manage/library/TagsTable.vue:93
-#: front/src/components/manage/library/TracksTable.vue:120
-#: front/src/components/manage/library/UploadsTable.vue:202
-#: front/src/components/manage/moderation/AccountsTable.vue:109
-#: front/src/components/manage/moderation/DomainsTable.vue:119
-#: front/src/views/content/libraries/FilesTable.vue:182
+#: src/components/manage/ChannelsTable.vue:133
+#: src/components/manage/library/AlbumsTable.vue:117
+#: src/components/manage/library/ArtistsTable.vue:120
+#: src/components/manage/library/EditsCardList.vue:75
+#: src/components/manage/library/LibrariesTable.vue:141
+#: src/components/manage/library/TagsTable.vue:93
+#: src/components/manage/library/TracksTable.vue:120
+#: src/components/manage/library/UploadsTable.vue:202
+#: src/components/manage/moderation/AccountsTable.vue:109
+#: src/components/manage/moderation/DomainsTable.vue:119
+#: src/views/content/libraries/FilesTable.vue:182
 msgctxt "Content/*/Paragraph"
 msgid "Showing results %{ start }-%{ end } on %{ total }"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:146
+#: src/components/ShortcutsModal.vue:86
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Shuffle queue"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:422
+#: src/components/audio/Player.vue:82
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Shuffle your queue"
 msgstr ""
 
-#: front/src/components/common/LoginModal.vue:75
-#: front/src/components/common/UserMenu.vue:175
-#: front/src/components/common/UserModal.vue:211
+#: src/components/common/LoginModal.vue:22
+#: src/components/common/UserMenu.vue:28
+#: src/components/common/UserModal.vue:43
 msgctxt "*/*/Button.Label/Verb"
 msgid "Sign up"
 msgstr ""
 
-#: front/src/components/About.vue:37 src/components/Home.vue:124
+#: src/components/About.vue:37
+#: src/components/About.vue:67
+#: src/components/Home.vue:124
 msgctxt "*/Signup/Title"
 msgid "Sign up"
 msgstr ""
 
-#: front/src/views/auth/Signup.vue:47
+#: src/views/auth/Signup.vue:24
 msgctxt "*/Signup/Title"
 msgid "Sign Up"
 msgstr ""
 
-#: front/src/components/About.vue:43 src/components/About.vue:2
+#: src/components/About.vue:43
+#: src/components/About.vue:2
 msgctxt "Content/About/Paragraph"
 msgid "Sign up now to keep a track of your favorites, create playlists, discover new content and much more!"
 msgstr ""
 
-#: front/src/components/Home.vue:130 src/components/Home.vue:2
+#: src/components/Home.vue:130
+#: src/components/Home.vue:2
 msgctxt "Content/Home/Paragraph"
 msgid "Sign up now to keep track of your favorites, create playlists, discover new content and much more!"
 msgstr ""
 
-#: front/src/components/manage/users/UsersTable.vue:55
-#: front/src/components/manage/users/UsersTable.vue:17
+#: src/components/manage/users/UsersTable.vue:55
+#: src/components/manage/users/UsersTable.vue:17
 msgctxt "Content/Admin/Table.Label/Short, Noun (Value is a date)"
 msgid "Sign-up"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:84
-#: front/src/views/admin/moderation/AccountsDetail.vue:215
-#: front/src/views/admin/moderation/AccountsDetail.vue:210
-#: front/src/components/mixins/Translations.vue:85
+#: src/components/mixins/Translations.vue:84
+#: src/views/admin/moderation/AccountsDetail.vue:215
+#: src/views/admin/moderation/AccountsDetail.vue:210
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Sign-up date"
 msgstr ""
 
-#: front/src/views/admin/Settings.vue:70
+#: src/views/admin/Settings.vue:26
 msgctxt "*/*/*/Noun"
 msgid "Sign-ups"
 msgstr ""
 
-#: front/src/components/library/FileUpload.vue:92
-#: front/src/components/library/TrackDetail.vue:35
-#: front/src/components/library/TrackDetail.vue:30
-#: front/src/components/manage/library/UploadsTable.vue:122
-#: front/src/components/manage/library/UploadsTable.vue:32
-#: front/src/components/mixins/Translations.vue:81
-#: front/src/views/admin/library/UploadDetail.vue:252
-#: front/src/views/admin/library/UploadDetail.vue:247
-#: front/src/views/content/libraries/FilesTable.vue:124
-#: front/src/views/content/libraries/FilesTable.vue:32
-#: front/src/components/mixins/Translations.vue:82
+#: src/components/library/FileUpload.vue:92
+#: src/components/library/TrackDetail.vue:36
+#: src/components/library/TrackDetail.vue:31
+#: src/components/manage/library/UploadsTable.vue:122
+#: src/components/manage/library/UploadsTable.vue:32
+#: src/components/mixins/Translations.vue:81
+#: src/views/admin/library/UploadDetail.vue:252
+#: src/views/admin/library/UploadDetail.vue:247
+#: src/views/content/libraries/FilesTable.vue:124
+#: src/views/content/libraries/FilesTable.vue:32
 msgctxt "Content/*/*/Noun"
 msgid "Size"
 msgstr ""
 
-#: front/src/components/manage/library/UploadsTable.vue:43
-#: front/src/components/mixins/Translations.vue:24
-#: front/src/views/content/libraries/FilesTable.vue:33
-#: front/src/components/mixins/Translations.vue:25
+#: src/components/manage/library/UploadsTable.vue:43
+#: src/components/mixins/Translations.vue:24
+#: src/views/content/libraries/FilesTable.vue:33
 msgctxt "Content/Library/*"
 msgid "Skipped"
 msgstr ""
 
-#: front/src/views/content/libraries/Quota.vue:74
+#: src/views/content/libraries/Quota.vue:74
 msgctxt "Content/Library/Label"
 msgid "Skipped files"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:135
-#: front/src/views/admin/moderation/DomainsDetail.vue:130
-#: front/src/views/admin/moderation/DomainsDetail.vue:3
+#: src/views/admin/moderation/DomainsDetail.vue:135
+#: src/views/admin/moderation/DomainsDetail.vue:130
+#: src/views/admin/moderation/DomainsDetail.vue:3
 msgctxt "Content/Moderation/Table.Label"
 msgid "Software"
 msgstr ""
 
-#: front/src/components/playlists/Editor.vue:29
+#: src/components/playlists/Editor.vue:29
 msgctxt "Content/Playlist/Paragraph"
 msgid "Some tracks in your queue are already in this playlist:"
 msgstr ""
 
-#: front/src/views/channels/DetailOverview.vue:18
-#: front/src/views/channels/DetailOverview.vue:2
+#: src/views/channels/DetailOverview.vue:18
+#: src/views/channels/DetailOverview.vue:2
 msgctxt "Content/Channel/Header"
 msgid "Some uploads couldn't be published"
 msgstr ""
 
-#: front/src/components/PageNotFound.vue:13
+#: src/components/PageNotFound.vue:13
 msgctxt "Content/*/Paragraph"
 msgid "Sorry, the page you asked for does not exist:"
 msgstr ""
 
-#: front/src/components/audio/SearchBar.vue:64
+#: src/components/audio/SearchBar.vue:41
 msgctxt "Sidebar/Search/Error.Label"
 msgid "Sorry, there are no results for this search"
 msgstr ""
 
-#: front/src/components/Footer.vue:87
-msgctxt "Footer/*/List item.Link"
-msgid "Source code"
-msgstr ""
-
-#: front/src/components/manage/users/UsersTable.vue:109
-#: front/src/components/manage/users/UsersTable.vue:34
+#: src/components/manage/users/UsersTable.vue:109
+#: src/components/manage/users/UsersTable.vue:34
 msgctxt "Content/Profile/User role"
 msgid "Staff member"
 msgstr ""
 
-#: front/src/components/AboutPod.vue:38 src/components/AboutPod.vue:214
-#: front/src/components/AboutPod.vue:2
+#: src/components/AboutPod.vue:38
+#: src/components/AboutPod.vue:214
+#: src/components/AboutPod.vue:2
 msgctxt "Content/About/Header"
 msgid "Statistics"
 msgstr ""
 
-#: front/src/components/Home.vue:60 src/components/Home.vue:2
-#: front/src/views/admin/Settings.vue:78
+#: src/components/Home.vue:60
+#: src/components/Home.vue:2
+#: src/views/admin/Settings.vue:34
 msgctxt "Content/Home/Header"
 msgid "Statistics"
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:602
+#: src/views/admin/moderation/AccountsDetail.vue:32
 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:489
+#: src/views/admin/moderation/DomainsDetail.vue:30
 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/ChannelDetail.vue:439
-#: front/src/views/admin/library/AlbumDetail.vue:422
-#: front/src/views/admin/library/ArtistDetail.vue:434
-#: front/src/views/admin/library/LibraryDetail.vue:381
-#: front/src/views/admin/library/TagDetail.vue:227
-#: front/src/views/admin/library/TrackDetail.vue:475
-#: front/src/views/admin/library/UploadDetail.vue:405
+#: src/views/admin/ChannelDetail.vue:23
+#: src/views/admin/library/AlbumDetail.vue:22
+#: src/views/admin/library/ArtistDetail.vue:23
+#: src/views/admin/library/LibraryDetail.vue:21
+#: src/views/admin/library/TagDetail.vue:16
+#: src/views/admin/library/TrackDetail.vue:22
+#: src/views/admin/library/UploadDetail.vue:27
 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/components/library/FileUpload.vue:97
-#: front/src/components/manage/library/EditsCardList.vue:12
-#: front/src/components/manage/moderation/ReportCard.vue:63
-#: front/src/components/manage/moderation/UserRequestCard.vue:45
-#: front/src/components/manage/users/InvitationsTable.vue:17
-#: front/src/components/manage/users/InvitationsTable.vue:50
-#: front/src/components/manage/users/InvitationsTable.vue:7
-#: front/src/components/manage/users/UsersTable.vue:70
-#: front/src/components/manage/users/UsersTable.vue:32
-#: front/src/views/admin/moderation/DomainsDetail.vue:167
-#: front/src/views/admin/moderation/DomainsDetail.vue:162
-#: front/src/views/admin/moderation/DomainsDetail.vue:3
-#: front/src/views/admin/moderation/ReportsList.vue:18
-#: front/src/views/admin/moderation/RequestsList.vue:18 src/views/library/Edit.vue:38
+#: src/components/library/FileUpload.vue:97
+#: src/components/manage/library/EditsCardList.vue:12
+#: src/components/manage/moderation/ReportCard.vue:63
+#: src/components/manage/moderation/UserRequestCard.vue:45
+#: src/components/manage/users/InvitationsTable.vue:17
+#: src/components/manage/users/InvitationsTable.vue:50
+#: src/components/manage/users/InvitationsTable.vue:7
+#: src/components/manage/users/UsersTable.vue:70
+#: src/components/manage/users/UsersTable.vue:32
+#: src/views/admin/moderation/DomainsDetail.vue:167
+#: src/views/admin/moderation/DomainsDetail.vue:162
+#: src/views/admin/moderation/DomainsDetail.vue:3
+#: src/views/admin/moderation/ReportsList.vue:18
+#: src/views/admin/moderation/RequestsList.vue:18
+#: src/views/library/Edit.vue:38
 msgctxt "*/*/*"
 msgid "Status"
 msgstr ""
 
-#: front/src/views/playlists/Detail.vue:32 src/views/playlists/Detail.vue:1
+#: src/views/playlists/Detail.vue:32
+#: src/views/playlists/Detail.vue:1
 msgctxt "Content/Playlist/Button.Label/Verb"
 msgid "Stop Editing"
 msgstr ""
 
-#: front/src/components/Queue.vue:175 src/components/radios/Button.vue:4
-#: front/src/components/radios/Button.vue:1
+#: src/components/Queue.vue:175
+#: src/components/radios/Button.vue:4
+#: src/components/radios/Button.vue:1
 msgctxt "*/Player/Button.Label/Short, Verb"
 msgid "Stop radio"
 msgstr ""
 
-#: front/src/components/audio/ChannelForm.vue:110
-#: front/src/components/audio/ChannelForm.vue:96
-#: front/src/components/audio/ChannelForm.vue:76
+#: src/components/audio/ChannelForm.vue:110
+#: src/components/audio/ChannelForm.vue:96
+#: src/components/audio/ChannelForm.vue:76
 msgctxt "*/*/*"
 msgid "Subcategory"
 msgstr ""
 
-#: front/src/components/SetInstanceModal.vue:41
+#: src/components/SetInstanceModal.vue:41
 msgctxt "*/*/Button.Label/Verb"
 msgid "Submit"
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:128
+#: src/components/library/EditForm.vue:128
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Submit and apply edit"
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:11
+#: src/components/library/EditForm.vue:11
 msgctxt "Content/Library/Button.Label"
 msgid "Submit another edit"
 msgstr ""
 
-#: front/src/components/moderation/ReportModal.vue:87
+#: src/components/moderation/ReportModal.vue:87
 msgctxt "Popup/*/Button.Label"
 msgid "Submit report"
 msgstr ""
 
-#: front/src/views/content/remote/ScanForm.vue:61
+#: src/views/content/remote/ScanForm.vue:15
 msgctxt "Content/Library/Input.Label"
 msgid "Submit search"
 msgstr ""
 
-#: front/src/views/Search.vue:189
+#: src/views/Search.vue:50
 msgctxt "Content/Search/Button.Label/Verb"
 msgid "Submit Search Query"
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:131
+#: src/components/library/EditForm.vue:131
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Submit suggestion"
 msgstr ""
 
-#: front/src/components/manage/moderation/ReportCard.vue:19
-#: front/src/components/manage/moderation/UserRequestCard.vue:19
+#: src/components/manage/moderation/ReportCard.vue:19
+#: src/components/manage/moderation/UserRequestCard.vue:19
 msgctxt "Content/Moderation/*"
 msgid "Submitted by"
 msgstr ""
 
-#: front/src/components/library/Podcasts.vue:114
-#: front/src/views/channels/SubscriptionsList.vue:29
+#: src/components/library/Podcasts.vue:114
+#: src/views/channels/SubscriptionsList.vue:29
 msgctxt "*/*/*/Verb"
 msgid "Subscribe"
 msgstr ""
 
-#: front/src/components/channels/SubscribeButton.vue:54
+#: src/components/channels/SubscribeButton.vue:13
 msgctxt "Content/Channel/Button/Verb"
 msgid "Subscribe"
 msgstr ""
 
-#: front/src/components/channels/SubscribeButton.vue:6
-#: front/src/components/channels/SubscribeButton.vue:12
+#: src/components/channels/SubscribeButton.vue:6
+#: src/components/channels/SubscribeButton.vue:12
 msgctxt "Content/Track/*/Verb"
 msgid "Subscribe"
 msgstr ""
 
-#: front/src/views/channels/DetailBase.vue:49 src/views/channels/DetailBase.vue:44
-#: front/src/views/channels/DetailBase.vue:3
+#: src/views/channels/DetailBase.vue:49
+#: src/views/channels/DetailBase.vue:44
+#: src/views/channels/DetailBase.vue:3
 msgctxt "Content/Channels/Header"
 msgid "Subscribe on Funkwhale"
 msgstr ""
 
-#: front/src/views/channels/DetailBase.vue:72 src/views/channels/DetailBase.vue:67
-#: front/src/views/channels/DetailBase.vue:3
+#: src/views/channels/DetailBase.vue:72
+#: src/views/channels/DetailBase.vue:67
+#: src/views/channels/DetailBase.vue:3
 msgctxt "Content/Channels/Header"
 msgid "Subscribe on the Fediverse"
 msgstr ""
 
-#: front/src/components/RemoteSearchForm.vue:130
+#: src/components/RemoteSearchForm.vue:32
 msgctxt "Head/Fetch/Title"
 msgid "Subscribe to a podcast hosted on the Fediverse"
 msgstr ""
 
-#: front/src/components/RemoteSearchForm.vue:126 src/views/Search.vue:194
+#: src/components/RemoteSearchForm.vue:28
+#: src/views/Search.vue:55
 msgctxt "Head/Fetch/Title"
 msgid "Subscribe to a podcast RSS feed"
 msgstr ""
 
-#: front/src/components/library/Podcasts.vue:88
+#: src/components/library/Podcasts.vue:88
 msgctxt "Content/Profile/Button"
 msgid "Subscribe to feed"
 msgstr ""
 
-#: front/src/components/audio/SearchBar.vue:190
+#: src/components/audio/SearchBar.vue:167
 msgctxt "Search/*/*"
 msgid "Subscribe to podcast via RSS"
 msgstr ""
 
-#: front/src/views/channels/DetailBase.vue:40 src/views/channels/DetailBase.vue:35
+#: src/views/channels/DetailBase.vue:40
+#: src/views/channels/DetailBase.vue:35
 msgctxt "Popup/Channel/Title/Verb"
 msgid "Subscribe to this channel"
 msgstr ""
 
-#: front/src/views/channels/DetailBase.vue:58 src/views/channels/DetailBase.vue:53
-#: front/src/views/channels/DetailBase.vue:3
+#: src/views/channels/DetailBase.vue:58
+#: src/views/channels/DetailBase.vue:53
+#: src/views/channels/DetailBase.vue:3
 msgctxt "Content/Channels/Header"
 msgid "Subscribe via RSS"
 msgstr ""
 
-#: front/src/views/channels/SubscriptionsList.vue:102
+#: src/views/channels/SubscriptionsList.vue:30
 msgctxt "Content/Subscriptions/Header"
 msgid "Subscribed Channels"
 msgstr ""
 
-#: front/src/components/library/Podcasts.vue:99
-#: front/src/views/channels/SubscriptionsList.vue:14
+#: src/components/library/Podcasts.vue:99
+#: src/views/channels/SubscriptionsList.vue:14
 msgctxt "*/*/*/Noun"
 msgid "Subscription"
 msgstr ""
 
-#: front/src/views/admin/Settings.vue:77
+#: src/views/admin/Settings.vue:33
 msgctxt "Content/Admin/Menu"
 msgid "Subsonic"
 msgstr ""
 
-#: front/src/components/auth/SubsonicTokenForm.vue:3
+#: src/components/auth/SubsonicTokenForm.vue:3
 msgctxt "Content/Settings/Title"
 msgid "Subsonic API password"
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:41
+#: src/components/library/EditForm.vue:41
 msgctxt "Content/Library/Paragraph"
 msgid "Suggest a change using the form below."
 msgstr ""
 
-#: front/src/components/library/AlbumEdit.vue:7
+#: src/components/library/AlbumEdit.vue:7
 msgctxt "Content/*/Title"
 msgid "Suggest an edit on this album"
 msgstr ""
 
-#: front/src/components/library/ArtistEdit.vue:7
+#: src/components/library/ArtistEdit.vue:7
 msgctxt "Content/*/Title"
 msgid "Suggest an edit on this artist"
 msgstr ""
 
-#: front/src/components/library/TrackEdit.vue:7
+#: src/components/library/TrackEdit.vue:7
 msgctxt "Content/*/Title"
 msgid "Suggest an edit on this track"
 msgstr ""
 
-#: front/src/components/SetInstanceModal.vue:52
+#: src/components/SetInstanceModal.vue:52
 msgctxt "Popup/Instance/List.Label"
 msgid "Suggested choices"
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:119
+#: src/components/library/EditForm.vue:119
 msgctxt "*/*/*"
 msgid "Summary (optional)"
 msgstr ""
 
-#: front/src/components/Footer.vue:75
-msgctxt "Footer/*/Listitem.Link"
-msgid "Support forum"
-msgstr ""
-
-#: front/src/views/Notifications.vue:14
+#: src/views/Notifications.vue:14
 msgctxt "Content/Notifications/Header"
 msgid "Support this Funkwhale pod"
 msgstr ""
 
-#: front/src/components/channels/UploadForm.vue:121
-#: front/src/components/channels/UploadForm.vue:86
-#: front/src/components/channels/UploadForm.vue:75
-#: front/src/components/library/FileUpload.vue:78
+#: src/components/channels/UploadForm.vue:121
+#: src/components/channels/UploadForm.vue:86
+#: src/components/channels/UploadForm.vue:75
+#: src/components/library/FileUpload.vue:78
 msgctxt "Content/Library/Paragraph"
 msgid "Supported extensions: %{ extensions }"
 msgstr ""
 
-#: front/src/components/playlists/Editor.vue:11 src/components/playlists/Editor.vue:2
+#: src/components/playlists/Editor.vue:11
+#: src/components/playlists/Editor.vue:2
 msgctxt "Content/Playlist/Paragraph"
 msgid "Syncing changes to server…"
 msgstr ""
 
-#: front/src/components/audio/SearchBar.vue:45
+#: src/components/audio/SearchBar.vue:22
 msgctxt "*/*/*/Noun"
 msgid "Tag"
 msgstr ""
 
-#: front/src/views/admin/library/TagDetail.vue:70
-#: front/src/views/admin/library/TagDetail.vue:65
+#: src/views/admin/library/TagDetail.vue:70
+#: src/views/admin/library/TagDetail.vue:65
 msgctxt "Content/Moderation/Title"
 msgid "Tag data"
 msgstr ""
 
-#: front/src/components/audio/ChannelForm.vue:72
-#: front/src/components/audio/ChannelForm.vue:58
-#: front/src/components/audio/ChannelForm.vue:38 src/views/Search.vue:240
+#: src/components/audio/ChannelForm.vue:72
+#: src/components/audio/ChannelForm.vue:58
+#: src/components/audio/ChannelForm.vue:38
+#: src/views/Search.vue:101
 msgctxt "*/*/*"
 msgid "Tags"
 msgstr ""
 
-#: front/src/components/channels/UploadMetadataForm.vue:17
-#: front/src/components/library/Albums.vue:22 src/components/library/Artists.vue:22
-#: front/src/components/library/Podcasts.vue:22 src/views/admin/library/Base.vue:39
-#: front/src/views/admin/library/TagsList.vue:29 src/edits.js:51 src/edits.js:79
-#: front/src/edits.js:122 src/entities.js:120
+#: src/components/channels/UploadMetadataForm.vue:17
+#: src/components/library/Albums.vue:22
+#: src/components/library/Artists.vue:22
+#: src/components/library/Podcasts.vue:22
+#: src/views/admin/library/Base.vue:39
+#: src/views/admin/library/TagsList.vue:13
 msgctxt "*/*/*/Noun"
 msgid "Tags"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:48
-#: front/src/components/mixins/Translations.vue:49
+#: src/components/mixins/Translations.vue:48
 msgctxt "Content/Moderation/Dropdown"
 msgid "Takedown request"
 msgstr ""
 
-#: front/src/components/AboutPod.vue:28 src/components/AboutPod.vue:71
+#: src/components/AboutPod.vue:28
+#: src/components/AboutPod.vue:71
 msgctxt "Content/About/Header"
 msgid "Terms and privacy policy"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:49
-#: front/src/components/common/CopyInput.vue:3
-#: front/src/components/forms/PasswordInput.vue:65
-#: front/src/components/forms/PasswordInput.vue:67
+#: src/components/audio/EmbedWizard.vue:49
+#: src/components/common/CopyInput.vue:3
+#: src/components/forms/PasswordInput.vue:35
 msgctxt "Content/*/Paragraph"
 msgid "Text copied to clipboard!"
 msgstr ""
 
-#: front/src/components/library/AlbumDropdown.vue:48
+#: src/components/library/AlbumDropdown.vue:48
 msgctxt "Content/Moderation/Paragraph"
 msgid "The album will be deleted, as well as any related files and data. This action is irreversible."
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:84
-#: front/src/views/admin/library/AlbumDetail.vue:79
+#: src/views/admin/library/AlbumDetail.vue:84
+#: src/views/admin/library/AlbumDetail.vue:79
 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:57
+#: src/components/auth/Authorize.vue:57
 msgctxt "Content/Auth/Paragraph"
 msgid "The application is also requesting the following unknown permissions:"
 msgstr ""
 
-#: front/src/views/admin/library/ArtistDetail.vue:83
-#: front/src/views/admin/library/ArtistDetail.vue:78
+#: src/views/admin/library/ArtistDetail.vue:83
+#: src/views/admin/library/ArtistDetail.vue:78
 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/views/channels/DetailBase.vue:125 src/views/channels/DetailBase.vue:120
-#: front/src/views/channels/DetailBase.vue:16
+#: src/views/channels/DetailBase.vue:127
+#: src/views/channels/DetailBase.vue:122
+#: src/views/channels/DetailBase.vue:18
 msgctxt "Content/Moderation/Paragraph"
 msgid "The channel will be deleted, as well as any related files and data. This action is irreversible."
 msgstr ""
 
-#: front/src/views/admin/ChannelDetail.vue:71 src/views/admin/ChannelDetail.vue:66
+#: src/views/admin/ChannelDetail.vue:71
+#: src/views/admin/ChannelDetail.vue:66
 msgctxt "Content/Moderation/Paragraph"
 msgid "The channel will be removed, as well as associated uploads, tracks, and albums. This action is irreversible."
 msgstr ""
 
-#: front/src/components/Footer.vue:91
-msgctxt "Footer/*/List item.Link"
-msgid "The Funkwhale logo was kindly designed and provided by Francis Gading."
-msgstr ""
-
-#: front/src/components/SetInstanceModal.vue:21
+#: src/components/SetInstanceModal.vue:21
 msgctxt "Popup/Instance/Error message.List item"
 msgid "The given address is not a Funkwhale server"
 msgstr ""
 
-#: front/src/views/content/libraries/Form.vue:58
+#: src/views/content/libraries/Form.vue:58
 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:57
-#: front/src/views/admin/library/LibraryDetail.vue:52
+#: src/views/admin/library/LibraryDetail.vue:57
+#: src/views/admin/library/LibraryDetail.vue:52
 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:199
+#: src/components/library/ImportStatusModal.vue:65
 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:65
+#: src/components/library/FileUpload.vue:65
 msgctxt "Content/Library/List item"
 msgid "The music files you are uploading are in OGG, Flac, MP3 or AIFF format"
 msgstr ""
 
-#: front/src/components/library/FileUpload.vue:59
+#: src/components/library/FileUpload.vue:59
 msgctxt "Content/Library/List item"
 msgid "The music files you are uploading are tagged properly."
 msgstr ""
 
-#: front/src/components/Queue.vue:36 src/components/Queue.vue:29
+#: src/components/Queue.vue:36
+#: src/components/Queue.vue:29
 msgctxt "Sidebar/Player/Error message.Paragraph"
 msgid "The next track will play automatically in a few seconds…"
 msgstr ""
 
-#: front/src/components/manage/moderation/NotesThread.vue:31
+#: src/components/manage/moderation/NotesThread.vue:31
 msgctxt "Content/Moderation/Paragraph"
 msgid "The note will be removed. This action is irreversible."
 msgstr ""
 
-#: front/src/components/manage/moderation/ReportCard.vue:144
+#: src/components/manage/moderation/ReportCard.vue:144
 msgctxt "Content/Moderation/Message"
 msgid "The object associated with this report was deleted."
 msgstr ""
 
-#: front/src/components/playlists/Form.vue:23
+#: src/components/playlists/Form.vue:23
 msgctxt "Content/Playlist/Error message.Title"
 msgid "The playlist could not be created"
 msgstr ""
 
-#: front/src/components/federation/FetchButton.vue:130
+#: src/components/federation/FetchButton.vue:130
 msgctxt "Popup/*/Message.Content"
 msgid "The refresh request hasn't been processed in time by our server. It will be processed later."
 msgstr ""
 
-#: front/src/components/federation/FetchButton.vue:67
-#: front/src/components/federation/FetchButton.vue:55
+#: src/components/federation/FetchButton.vue:67
+#: src/components/federation/FetchButton.vue:55
 msgctxt "*/*/Error"
 msgid "The remote server answered with HTTP %{ status }"
 msgstr ""
 
-#: front/src/components/federation/FetchButton.vue:20
-#: front/src/components/federation/FetchButton.vue:8
+#: src/components/federation/FetchButton.vue:20
+#: src/components/federation/FetchButton.vue:8
 msgctxt "Popup/*/Message.Content"
 msgid "The remote server answered, but returned data was unsupported by Funkwhale."
 msgstr ""
 
-#: front/src/components/federation/FetchButton.vue:73
-#: front/src/components/federation/FetchButton.vue:61
+#: src/components/federation/FetchButton.vue:73
+#: src/components/federation/FetchButton.vue:61
 msgctxt "*/*/Error"
 msgid "The remote server didn't respond quickly enough"
 msgstr ""
 
-#: front/src/components/federation/FetchButton.vue:79
-#: front/src/components/federation/FetchButton.vue:67
+#: src/components/federation/FetchButton.vue:79
+#: src/components/federation/FetchButton.vue:67
 msgctxt "*/*/Error"
 msgid "The remote server returned invalid JSON or JSON-LD data"
 msgstr ""
 
-#: front/src/components/manage/library/AlbumsTable.vue:247
+#: src/components/manage/library/AlbumsTable.vue:56
 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:244
+#: src/components/manage/library/ArtistsTable.vue:54
 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:276
+#: src/components/manage/library/LibrariesTable.vue:55
 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/TagsTable.vue:212
+#: src/components/manage/library/TagsTable.vue:60
 msgctxt "Popup/*/Paragraph"
 msgid "The selected tag will be removed and unlinked with existing content, if any. This action is irreversible."
 msgstr ""
 
-#: front/src/components/manage/library/TracksTable.vue:257
+#: src/components/manage/library/TracksTable.vue:53
 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:375
+#: src/components/manage/library/UploadsTable.vue:62
 msgctxt "Popup/*/Paragraph"
 msgid "The selected upload will be removed. This action is irreversible."
 msgstr ""
 
-#: front/src/components/SetInstanceModal.vue:16
+#: src/components/SetInstanceModal.vue:16
 msgctxt "Popup/Instance/Error message.List item"
 msgid "The server might be down"
 msgstr ""
 
-#: front/src/components/auth/SubsonicTokenForm.vue:8
+#: src/components/auth/SubsonicTokenForm.vue:8
 msgctxt "Content/Settings/Paragraph"
 msgid "The Subsonic API is not available on this Funkwhale instance."
 msgstr ""
 
-#: front/src/components/library/EditCard.vue:131
+#: src/components/library/EditCard.vue:131
 msgctxt "Popup/Library/Paragraph"
 msgid "The suggestion will be completely removed, this action is irreversible."
 msgstr ""
 
-#: front/src/views/admin/library/TagDetail.vue:46
-#: front/src/views/admin/library/TagDetail.vue:41
+#: src/views/admin/library/TagDetail.vue:46
+#: src/views/admin/library/TagDetail.vue:41
 msgctxt "Content/Moderation/Paragraph"
 msgid "The tag will be removed and unlinked from any existing entity. This action is irreversible."
 msgstr ""
 
-#: front/src/components/playlists/PlaylistModal.vue:38
+#: src/components/playlists/PlaylistModal.vue:38
 msgctxt "Popup/Playlist/Error message.Title"
 msgid "The track can't be added to a playlist"
 msgstr ""
 
-#: front/src/components/Queue.vue:31 src/components/Queue.vue:24
+#: src/components/Queue.vue:31
+#: src/components/Queue.vue:24
 msgctxt "Sidebar/Player/Error message.Title"
 msgid "The track cannot be loaded"
 msgstr ""
 
-#: front/src/components/library/TrackBase.vue:85
-#: front/src/components/library/TrackBase.vue:80
+#: src/components/library/TrackBase.vue:85
+#: src/components/library/TrackBase.vue:80
 msgctxt "Content/Moderation/Paragraph"
 msgid "The track will be deleted, as well as any related files and data. This action is irreversible."
 msgstr ""
 
-#: front/src/views/admin/library/TrackDetail.vue:84
-#: front/src/views/admin/library/TrackDetail.vue:79
+#: src/views/admin/library/TrackDetail.vue:84
+#: src/views/admin/library/TrackDetail.vue:79
 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:64
-#: front/src/views/admin/library/UploadDetail.vue:59
+#: src/views/admin/library/UploadDetail.vue:64
+#: src/views/admin/library/UploadDetail.vue:59
 msgctxt "Content/Moderation/Paragraph"
 msgid "The upload will be removed. This action is irreversible."
 msgstr ""
 
-#: front/src/components/Sidebar.vue:530 src/components/common/UserModal.vue:204
-#: front/src/components/common/UserModal.vue:206 src/components/Sidebar.vue:532
+#: src/components/Sidebar.vue:64
+#: src/components/common/UserModal.vue:36
 msgctxt "Sidebar/Settings/Dropdown.Label/Short, Verb"
 msgid "Theme"
 msgstr ""
 
-#: front/src/views/playlists/Detail.vue:106
+#: src/views/playlists/Detail.vue:106
 msgctxt "Content/Home/Placeholder"
 msgid "There are no tracks in this playlist yet"
 msgstr ""
 
-#: front/src/components/manage/moderation/InstancePolicyForm.vue:88
+#: src/components/manage/moderation/InstancePolicyForm.vue:88
 msgctxt "Popup/Moderation/Paragraph"
 msgid "This action is irreversible."
 msgstr ""
 
-#: front/src/components/library/AlbumDetail.vue:31
-#: front/src/components/library/AlbumDetail.vue:7
+#: src/components/library/AlbumDetail.vue:31
+#: src/components/library/AlbumDetail.vue:7
 msgctxt "Content/Album/Paragraph"
 msgid "This album is present in the following libraries:"
 msgstr ""
 
-#: front/src/components/library/ArtistDetail.vue:60
+#: src/components/library/ArtistDetail.vue:60
 msgctxt "Content/Artist/Paragraph"
 msgid "This artist is present in the following libraries:"
 msgstr ""
 
-#: front/src/components/manage/moderation/DomainsTable.vue:228
+#: src/components/manage/moderation/DomainsTable.vue:40
 msgctxt "Content/Moderation/Popup"
 msgid "This domain is present in your allow-list"
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:86
-#: front/src/views/admin/moderation/AccountsDetail.vue:81
-#: front/src/views/admin/moderation/DomainsDetail.vue:78
-#: front/src/views/admin/moderation/DomainsDetail.vue:73
+#: src/views/admin/moderation/AccountsDetail.vue:86
+#: src/views/admin/moderation/AccountsDetail.vue:81
+#: src/views/admin/moderation/DomainsDetail.vue:78
+#: src/views/admin/moderation/DomainsDetail.vue:73
 msgctxt "Content/Moderation/Card.Title"
 msgid "This domain is subject to specific moderation rules"
 msgstr ""
 
-#: front/src/components/manage/moderation/InstancePolicyModal.vue:20
+#: src/components/manage/moderation/InstancePolicyModal.vue:20
 msgctxt "Content/Moderation/Card.Title"
 msgid "This entity is subject to specific moderation rules"
 msgstr ""
 
-#: front/src/views/content/Home.vue:5
+#: src/views/content/Home.vue:5
 msgctxt "Content/Library/Paragraph"
 msgid "This instance offers up to %{quota} of storage space for every user."
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:503
+#: src/components/auth/Settings.vue:503
 msgctxt "Popup/Settings/Paragraph"
 msgid "This is irreversible and will permanently remove your data from our servers. You will we immediatly logged out."
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:228
+#: src/components/auth/Settings.vue:228
 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:305
+#: src/components/auth/Settings.vue:305
 msgctxt "Content/Settings/Paragraph"
 msgid "This is the list of applications that you have registered."
 msgstr ""
 
-#: front/src/views/auth/ProfileBase.vue:42 src/views/auth/ProfileBase.vue:3
+#: src/views/auth/ProfileBase.vue:42
+#: src/views/auth/ProfileBase.vue:3
 msgctxt "Content/Profile/Button.Paragraph"
 msgid "This is you!"
 msgstr ""
 
-#: front/src/components/RemoteSearchForm.vue:54
+#: src/components/RemoteSearchForm.vue:54
 msgctxt "Content/*/Error message.Title"
 msgid "This kind of object isn't supported yet"
 msgstr ""
 
-#: front/src/views/content/libraries/Form.vue:143
+#: src/views/content/libraries/Form.vue:27
 msgctxt "Content/Library/Input.Placeholder"
 msgid "This library contains my personal music, I hope you like it."
 msgstr ""
 
-#: front/src/views/library/DetailAlbums.vue:5 src/views/library/DetailOverview.vue:9
-#: front/src/views/library/DetailTracks.vue:5
+#: src/views/library/DetailAlbums.vue:5
+#: src/views/library/DetailOverview.vue:9
+#: src/views/library/DetailTracks.vue:5
 msgctxt "*/*/*"
 msgid "This library is empty, you should upload something in it!"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:252 src/views/library/DetailBase.vue:265
+#: src/views/content/remote/Card.vue:27
+#: src/views/library/DetailBase.vue:37
 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:253 src/views/library/DetailBase.vue:267
+#: src/views/content/remote/Card.vue:28
+#: src/views/library/DetailBase.vue:39
 msgctxt "Content/Library/Card.Help text"
 msgid "This library is public and you can access its content freely"
 msgstr ""
 
-#: front/src/views/library/DetailBase.vue:266
+#: src/views/library/DetailBase.vue:38
 msgctxt "Content/Library/Card.Help text"
 msgid "This library is restricted to users on this pod only"
 msgstr ""
 
-#: front/src/components/common/ActionTable.vue:39
+#: src/components/common/ActionTable.vue:39
 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/RemoteSearchForm.vue:227
+#: src/components/RemoteSearchForm.vue:129
 msgctxt "Content/*/Error message.Title"
 msgid "This object cannot be retrieved"
 msgstr ""
 
-#: front/src/components/library/AlbumEdit.vue:12
-#: front/src/components/library/ArtistEdit.vue:12
-#: front/src/components/library/TrackEdit.vue:12
+#: src/components/library/AlbumEdit.vue:12
+#: src/components/library/ArtistEdit.vue:12
+#: src/components/library/TrackEdit.vue:12
 msgctxt "Content/*/Message"
 msgid "This object is managed by another server, you cannot edit it."
 msgstr ""
 
-#: front/src/components/Home.vue:102
+#: src/components/Home.vue:102
 msgctxt "Content/Home/Paragraph"
 msgid "This pod runs Funkwhale, a community-driven project that lets you listen and share music and audio within a decentralized, open network."
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:37
-#: front/src/components/mixins/Translations.vue:38
+#: src/components/mixins/Translations.vue:37
 msgctxt "Content/Library/Help text"
 msgid "This track could not be processed, please make sure it is tagged correctly"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:33
-#: front/src/components/mixins/Translations.vue:34
+#: src/components/mixins/Translations.vue:33
 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:29
-#: front/src/components/mixins/Translations.vue:30
+#: src/components/mixins/Translations.vue:29
 msgctxt "Content/Library/Help text"
 msgid "This track has been uploaded, but hasn't been scheduled for processing yet"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:25
-#: front/src/components/mixins/Translations.vue:26
+#: src/components/mixins/Translations.vue:25
 msgctxt "Content/Library/Help text"
 msgid "This track is already present in one of your libraries"
 msgstr ""
 
-#: front/src/components/audio/PlayButton.vue:190
+#: src/components/audio/PlayButton.vue:64
 msgctxt "*/Queue/Button/Title"
 msgid "This track is not available in any library you have access to"
 msgstr ""
 
-#: front/src/components/library/TrackDetail.vue:209
+#: src/components/library/TrackDetail.vue:210
 msgctxt "Content/Track/Paragraph"
 msgid "This track is present in the following libraries:"
 msgstr ""
 
-#: front/src/views/auth/ProfileOverview.vue:33
+#: src/views/auth/ProfileOverview.vue:33
 msgctxt "Content/Profile/Paragraph"
 msgid "This user shared the following libraries"
 msgstr ""
 
-#: front/src/components/manage/moderation/UserRequestCard.vue:124
+#: src/components/manage/moderation/UserRequestCard.vue:124
 msgctxt "Content/Moderation/Paragraph"
 msgid "This user wants to sign-up on your pod."
 msgstr ""
 
-#: front/src/views/playlists/Detail.vue:58
+#: src/views/playlists/Detail.vue:58
 msgctxt "Popup/Playlist/Paragraph"
 msgid "This will completely delete this playlist and cannot be undone."
 msgstr ""
 
-#: front/src/views/radios/Detail.vue:30 src/views/radios/Detail.vue:11
+#: src/views/radios/Detail.vue:30
+#: src/views/radios/Detail.vue:11
 msgctxt "Popup/Radio/Paragraph"
 msgid "This will completely delete this radio and cannot be undone."
 msgstr ""
 
-#: front/src/components/auth/SubsonicTokenForm.vue:86
-#: front/src/components/auth/SubsonicTokenForm.vue:40
+#: src/components/auth/SubsonicTokenForm.vue:86
+#: src/components/auth/SubsonicTokenForm.vue:40
 msgctxt "Popup/Settings/Paragraph"
 msgid "This will completely disable access to the Subsonic API using from account."
 msgstr ""
 
-#: front/src/components/manage/moderation/ReportCard.vue:497
+#: src/components/manage/moderation/ReportCard.vue:106
 msgctxt "Content/Moderation/Popup,Paragraph"
 msgid "This will delete the object associated with this report and mark the report as resolved. The deletion is irreversible."
 msgstr ""
 
-#: front/src/components/auth/SubsonicTokenForm.vue:61
-#: front/src/components/auth/SubsonicTokenForm.vue:15
+#: src/components/auth/SubsonicTokenForm.vue:61
+#: src/components/auth/SubsonicTokenForm.vue:15
 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:362
+#: src/components/auth/Settings.vue:362
 msgctxt "Popup/Settings/Paragraph"
 msgid "This will permanently remove the application and all the associated tokens."
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:271
+#: src/components/auth/Settings.vue:271
 msgctxt "Popup/Settings/Paragraph"
 msgid "This will prevent this application from accessing the service on your behalf."
 msgstr ""
 
-#: front/src/components/playlists/Editor.vue:65
+#: src/components/playlists/Editor.vue:65
 msgctxt "Popup/Playlist/Paragraph"
 msgid "This will remove all tracks from this playlist and cannot be undone."
 msgstr ""
 
-#: front/src/components/audio/podcast/Table.vue:121
-#: front/src/components/audio/track/Table.vue:209
-#: front/src/components/channels/AlbumForm.vue:16
-#: front/src/components/channels/UploadMetadataForm.vue:4
-#: front/src/components/manage/library/AlbumsTable.vue:42
-#: front/src/components/manage/library/AlbumsTable.vue:2
-#: front/src/components/manage/library/TracksTable.vue:42
-#: front/src/components/manage/library/TracksTable.vue:2
-#: front/src/views/admin/library/AlbumDetail.vue:117
-#: front/src/views/admin/library/AlbumDetail.vue:112
-#: front/src/views/admin/library/TrackDetail.vue:117
-#: front/src/views/admin/library/TrackDetail.vue:112
-#: front/src/views/content/libraries/FilesTable.vue:94
-#: front/src/views/content/libraries/FilesTable.vue:2 src/edits.js:63 src/edits.js:91
+#: src/components/audio/podcast/Table.vue:42
+#: src/components/audio/track/Table.vue:53
+#: src/components/channels/AlbumForm.vue:16
+#: src/components/channels/UploadMetadataForm.vue:4
+#: src/components/manage/library/AlbumsTable.vue:42
+#: src/components/manage/library/AlbumsTable.vue:2
+#: src/components/manage/library/TracksTable.vue:42
+#: src/components/manage/library/TracksTable.vue:2
+#: src/views/admin/library/AlbumDetail.vue:117
+#: src/views/admin/library/AlbumDetail.vue:112
+#: src/views/admin/library/TrackDetail.vue:117
+#: src/views/admin/library/TrackDetail.vue:112
+#: src/views/content/libraries/FilesTable.vue:94
+#: src/views/content/libraries/FilesTable.vue:2
 msgctxt "*/*/*/Noun"
 msgid "Title"
 msgstr ""
 
-#: front/src/components/SetInstanceModal.vue:32
+#: src/components/SetInstanceModal.vue:32
 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:154
+#: src/components/ShortcutsModal.vue:94
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Toggle favorite"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:134
+#: src/components/ShortcutsModal.vue:74
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Toggle mute"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:142
+#: src/components/ShortcutsModal.vue:82
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Toggle queue looping"
 msgstr ""
 
-#: front/src/views/admin/ChannelDetail.vue:298 src/views/admin/ChannelDetail.vue:293
-#: front/src/views/admin/library/AlbumDetail.vue:279
-#: front/src/views/admin/library/AlbumDetail.vue:274
-#: front/src/views/admin/library/ArtistDetail.vue:278
-#: front/src/views/admin/library/ArtistDetail.vue:273
-#: front/src/views/admin/library/LibraryDetail.vue:241
-#: front/src/views/admin/library/LibraryDetail.vue:236
-#: front/src/views/admin/library/TrackDetail.vue:344
-#: front/src/views/admin/library/TrackDetail.vue:339
-#: front/src/views/admin/moderation/AccountsDetail.vue:374
-#: front/src/views/admin/moderation/AccountsDetail.vue:369
-#: front/src/views/admin/moderation/DomainsDetail.vue:295
-#: front/src/views/admin/moderation/DomainsDetail.vue:290
+#: src/views/admin/ChannelDetail.vue:298
+#: src/views/admin/ChannelDetail.vue:293
+#: src/views/admin/library/AlbumDetail.vue:279
+#: src/views/admin/library/AlbumDetail.vue:274
+#: src/views/admin/library/ArtistDetail.vue:278
+#: src/views/admin/library/ArtistDetail.vue:273
+#: src/views/admin/library/LibraryDetail.vue:241
+#: src/views/admin/library/LibraryDetail.vue:236
+#: src/views/admin/library/TrackDetail.vue:344
+#: src/views/admin/library/TrackDetail.vue:339
+#: src/views/admin/moderation/AccountsDetail.vue:374
+#: src/views/admin/moderation/AccountsDetail.vue:369
+#: src/views/admin/moderation/DomainsDetail.vue:295
+#: src/views/admin/moderation/DomainsDetail.vue:290
 msgctxt "Content/Moderation/Table.Label"
 msgid "Total size"
 msgstr ""
 
-#: front/src/views/content/libraries/Card.vue:88
+#: src/views/content/libraries/Card.vue:8
 msgctxt "Content/Library/Card.Help text"
 msgid "Total size of the files in this library"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:155
-#: front/src/views/admin/moderation/DomainsDetail.vue:150
-#: front/src/views/admin/moderation/DomainsDetail.vue:23
+#: src/views/admin/moderation/DomainsDetail.vue:155
+#: src/views/admin/moderation/DomainsDetail.vue:150
+#: src/views/admin/moderation/DomainsDetail.vue:23
 msgctxt "Content/*/*"
 msgid "Total users"
 msgstr ""
 
-#: front/src/components/AboutPod.vue:244 src/components/AboutPod.vue:32
+#: src/components/AboutPod.vue:244
+#: src/components/AboutPod.vue:32
 msgctxt "Content/About/*"
 msgid "track"
 msgid_plural "tracks"
 msgstr[0] ""
 msgstr[1] ""
 
-#: front/src/components/audio/SearchBar.vue:44
-#: front/src/components/library/TrackBase.vue:290
-#: front/src/components/library/TrackDetail.vue:315
-#: front/src/components/mixins/Report.vue:30
-#: front/src/views/admin/library/UploadDetail.vue:226
-#: front/src/views/admin/library/UploadDetail.vue:221
-#: front/src/components/mixins/Report.vue:31
+#: src/components/audio/SearchBar.vue:21
+#: src/components/library/TrackBase.vue:69
+#: src/components/library/TrackDetail.vue:25
+#: src/components/mixins/Report.vue:30
+#: src/views/admin/library/UploadDetail.vue:226
+#: src/views/admin/library/UploadDetail.vue:221
 msgctxt "*/*/*/Noun"
 msgid "Track"
 msgstr ""
 
-#: front/src/components/library/EditCard.vue:13
+#: src/components/library/EditCard.vue:13
 msgctxt "Content/Library/Card/Short"
 msgid "Track #%{ id } - %{ name }"
 msgstr ""
 
-#: front/src/components/Queue.vue:113
+#: src/components/Queue.vue:113
 msgctxt "Sidebar/Queue/Text"
 msgid "Track %{ index } of %{ length }"
 msgstr ""
 
-#: front/src/views/admin/library/TrackDetail.vue:108
-#: front/src/views/admin/library/TrackDetail.vue:103
+#: src/views/admin/library/TrackDetail.vue:108
+#: src/views/admin/library/TrackDetail.vue:103
 msgctxt "Content/Moderation/Title"
 msgid "Track data"
 msgstr ""
 
-#: front/src/components/audio/PlayButton.vue:29
-#: front/src/components/audio/podcast/Modal.vue:271
-#: front/src/components/audio/track/Modal.vue:271
+#: src/components/audio/PlayButton.vue:29
+#: src/components/audio/podcast/Modal.vue:43
+#: src/components/audio/track/Modal.vue:43
 msgctxt "*/Queue/Dropdown/Button/Label/Short"
 msgid "Track details"
 msgstr ""
 
-#: front/src/components/library/TrackDetail.vue:9
-#: front/src/components/library/TrackDetail.vue:4
+#: src/components/library/TrackDetail.vue:10
+#: src/components/library/TrackDetail.vue:5
 msgctxt "Content/*/*"
 msgid "Track Details"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:75
-#: front/src/components/mixins/Translations.vue:76
+#: src/components/mixins/Translations.vue:75
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Track name"
 msgstr ""
 
-#: front/src/components/channels/UploadMetadataForm.vue:9
+#: src/components/channels/UploadMetadataForm.vue:9
 msgctxt "Content/Channel/*"
 msgid "Track Picture"
 msgstr ""
 
-#: front/src/components/library/AlbumDetail.vue:6
-#: front/src/components/library/TagDetail.vue:50
-#: front/src/components/library/TagDetail.vue:1
-#: front/src/components/manage/ChannelsTable.vue:81
-#: front/src/components/manage/ChannelsTable.vue:22
-#: front/src/components/manage/library/AlbumsTable.vue:57
-#: front/src/components/manage/library/AlbumsTable.vue:17
-#: front/src/components/manage/library/ArtistsTable.vue:76
-#: front/src/components/manage/library/ArtistsTable.vue:17
-#: front/src/components/manage/library/TagsTable.vue:58
-#: front/src/components/manage/library/TagsTable.vue:17
-#: front/src/components/playlists/PlaylistModal.vue:76 src/views/Search.vue:227
-#: front/src/views/admin/ChannelDetail.vue:333 src/views/admin/ChannelDetail.vue:328
-#: front/src/views/admin/library/AlbumDetail.vue:315
-#: front/src/views/admin/library/AlbumDetail.vue:310
-#: front/src/views/admin/library/ArtistDetail.vue:326
-#: front/src/views/admin/library/ArtistDetail.vue:321
-#: front/src/views/admin/library/Base.vue:24
-#: front/src/views/admin/library/LibraryDetail.vue:276
-#: front/src/views/admin/library/LibraryDetail.vue:271
-#: front/src/views/admin/library/TagDetail.vue:164
-#: front/src/views/admin/library/TagDetail.vue:159
-#: front/src/views/admin/library/TracksList.vue:29
-#: front/src/views/admin/moderation/AccountsDetail.vue:440
-#: front/src/views/admin/moderation/AccountsDetail.vue:435
-#: front/src/views/admin/moderation/DomainsDetail.vue:366
-#: front/src/views/admin/moderation/DomainsDetail.vue:361
-#: front/src/views/channels/DetailBase.vue:246 src/views/channels/DetailBase.vue:241
-#: front/src/views/content/Base.vue:9 src/views/library/DetailBase.vue:106
-#: front/src/views/playlists/Detail.vue:97 src/views/playlists/Detail.vue:2
-#: front/src/views/radios/Detail.vue:45
+#: src/components/library/AlbumDetail.vue:6
+#: src/components/library/TagDetail.vue:50
+#: src/components/library/TagDetail.vue:1
+#: src/components/manage/ChannelsTable.vue:81
+#: src/components/manage/ChannelsTable.vue:22
+#: src/components/manage/library/AlbumsTable.vue:57
+#: src/components/manage/library/AlbumsTable.vue:17
+#: src/components/manage/library/ArtistsTable.vue:76
+#: src/components/manage/library/ArtistsTable.vue:17
+#: src/components/manage/library/TagsTable.vue:58
+#: src/components/manage/library/TagsTable.vue:17
+#: src/components/playlists/PlaylistModal.vue:76
+#: src/views/Search.vue:88
+#: src/views/admin/ChannelDetail.vue:333
+#: src/views/admin/ChannelDetail.vue:328
+#: src/views/admin/library/AlbumDetail.vue:315
+#: src/views/admin/library/AlbumDetail.vue:310
+#: src/views/admin/library/ArtistDetail.vue:326
+#: src/views/admin/library/ArtistDetail.vue:321
+#: src/views/admin/library/Base.vue:24
+#: src/views/admin/library/LibraryDetail.vue:276
+#: src/views/admin/library/LibraryDetail.vue:271
+#: src/views/admin/library/TagDetail.vue:164
+#: src/views/admin/library/TagDetail.vue:159
+#: src/views/admin/library/TracksList.vue:13
+#: src/views/admin/moderation/AccountsDetail.vue:440
+#: src/views/admin/moderation/AccountsDetail.vue:435
+#: src/views/admin/moderation/DomainsDetail.vue:366
+#: src/views/admin/moderation/DomainsDetail.vue:361
+#: src/views/channels/DetailBase.vue:248
+#: src/views/channels/DetailBase.vue:243
+#: src/views/content/Base.vue:9
+#: src/views/library/DetailBase.vue:106
+#: src/views/playlists/Detail.vue:97
+#: src/views/playlists/Detail.vue:2
+#: src/views/radios/Detail.vue:45
 msgctxt "*/*/*"
 msgid "Tracks"
 msgstr ""
 
-#: front/src/components/library/radios/Filter.vue:38
+#: src/components/library/radios/Filter.vue:38
 msgctxt "Popup/Radio/Title/Noun"
 msgid "Tracks matching filter"
 msgstr ""
 
-#: front/src/components/manage/moderation/ReportCard.vue:164
-#: front/src/views/admin/library/UploadDetail.vue:293
-#: front/src/views/admin/library/UploadDetail.vue:288
-#: front/src/views/admin/moderation/AccountsDetail.vue:192
-#: front/src/views/admin/moderation/AccountsDetail.vue:187
+#: src/components/manage/moderation/ReportCard.vue:164
+#: src/views/admin/library/UploadDetail.vue:293
+#: src/views/admin/library/UploadDetail.vue:288
+#: src/views/admin/moderation/AccountsDetail.vue:192
+#: src/views/admin/moderation/AccountsDetail.vue:187
 msgctxt "Content/Track/Table.Label/Noun"
 msgid "Type"
 msgstr ""
 
-#: front/src/components/common/LoginModal.vue:73
+#: src/components/common/LoginModal.vue:20
 msgctxt "Popup/Title/Noun"
 msgid "Unauthenticated"
 msgstr ""
 
-#: front/src/components/manage/moderation/AccountsTable.vue:67
-#: front/src/components/manage/moderation/AccountsTable.vue:27
-#: front/src/components/manage/moderation/DomainsTable.vue:80
-#: front/src/components/manage/moderation/DomainsTable.vue:22
+#: src/components/manage/moderation/AccountsTable.vue:67
+#: src/components/manage/moderation/AccountsTable.vue:27
+#: src/components/manage/moderation/DomainsTable.vue:80
+#: src/components/manage/moderation/DomainsTable.vue:22
 msgctxt "Content/Moderation/Table.Label/Short"
 msgid "Under moderation rule"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:84
+#: src/components/ShortcutsModal.vue:24
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Unfocus searchbar"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:125 src/views/content/remote/Card.vue:141
-#: front/src/views/content/remote/Card.vue:21 src/views/content/remote/Card.vue:37
-#: front/src/views/content/remote/Card.vue:2 src/views/content/remote/Card.vue:18
+#: src/views/content/remote/Card.vue:125
+#: src/views/content/remote/Card.vue:141
+#: src/views/content/remote/Card.vue:21
+#: src/views/content/remote/Card.vue:37
+#: src/views/content/remote/Card.vue:2
+#: src/views/content/remote/Card.vue:18
 msgctxt "*/Library/Button.Label/Verb"
 msgid "Unfollow"
 msgstr ""
 
-#: front/src/components/audio/LibraryFollowButton.vue:3
+#: src/components/audio/LibraryFollowButton.vue:3
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Unfollow"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:129 src/views/content/remote/Card.vue:25
-#: front/src/views/content/remote/Card.vue:6
+#: src/views/content/remote/Card.vue:129
+#: src/views/content/remote/Card.vue:25
+#: src/views/content/remote/Card.vue:6
 msgctxt "Popup/Library/Title"
 msgid "Unfollow this library?"
 msgstr ""
 
-#: front/src/components/federation/FetchButton.vue:85
-#: front/src/components/federation/FetchButton.vue:88
-#: front/src/components/federation/FetchButton.vue:73
-#: front/src/components/federation/FetchButton.vue:76
-#: front/src/components/library/ImportStatusModal.vue:203
+#: src/components/federation/FetchButton.vue:85
+#: src/components/federation/FetchButton.vue:88
+#: src/components/federation/FetchButton.vue:73
+#: src/components/federation/FetchButton.vue:76
+#: src/components/library/ImportStatusModal.vue:69
 msgctxt "*/*/Error"
 msgid "Unknown error"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:410
-#: front/src/components/audio/VolumeControl.vue:74
+#: src/components/audio/Player.vue:70
+#: src/components/audio/VolumeControl.vue:22
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Unmute"
 msgstr ""
 
-#: front/src/components/manage/moderation/ReportCard.vue:267
+#: src/components/manage/moderation/ReportCard.vue:267
 msgctxt "Content/*/Button.Label"
 msgid "Unresolve"
 msgstr ""
 
-#: front/src/components/manage/moderation/ReportCard.vue:75
-#: front/src/views/admin/moderation/ReportsList.vue:31
+#: src/components/manage/moderation/ReportCard.vue:75
+#: src/views/admin/moderation/ReportsList.vue:31
 msgctxt "Content/*/*/Short"
 msgid "Unresolved"
 msgstr ""
 
-#: front/src/components/channels/SubscribeButton.vue:56
+#: src/components/channels/SubscribeButton.vue:15
 msgctxt "Content/Channel/Button/Verb"
 msgid "Unsubscribe"
 msgstr ""
 
-#: front/src/components/channels/SubscribeButton.vue:3
+#: src/components/channels/SubscribeButton.vue:3
 msgctxt "Content/Track/Button.Message"
 msgid "Unsubscribe"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:449
+#: src/components/auth/Settings.vue:449
 msgctxt "*/*/*"
 msgid "Update"
 msgstr ""
 
-#: front/src/components/channels/UploadModal.vue:44
+#: src/components/channels/UploadModal.vue:44
 msgctxt "*/*/Button.Label/Verb"
 msgid "Update"
 msgstr ""
 
-#: front/src/App.vue:213
+#: src/AppOld.vue:189
 msgctxt "App/Message/Paragraph"
 msgid "Update"
 msgstr ""
 
-#: front/src/components/manage/moderation/InstancePolicyForm.vue:71
+#: src/components/manage/moderation/InstancePolicyForm.vue:71
 msgctxt "Content/Moderation/Card.Button.Label/Verb"
 msgid "Update"
 msgstr ""
 
-#: front/src/components/auth/ApplicationForm.vue:61
+#: src/components/auth/ApplicationForm.vue:61
 msgctxt "Content/Applications/Button.Label/Verb"
 msgid "Update application"
 msgstr ""
 
-#: front/src/views/channels/DetailBase.vue:224 src/views/channels/DetailBase.vue:219
+#: src/views/channels/DetailBase.vue:226
+#: src/views/channels/DetailBase.vue:221
 msgctxt "*/Channels/Button.Label"
 msgid "Update channel"
 msgstr ""
 
-#: front/src/components/common/RenderedDescription.vue:44
+#: src/components/common/RenderedDescription.vue:44
 msgctxt "Content/Channels/Button.Label/Verb"
 msgid "Update description"
 msgstr ""
 
-#: front/src/views/content/libraries/Form.vue:41
+#: src/views/content/libraries/Form.vue:41
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Update library"
 msgstr ""
 
-#: front/src/components/playlists/Form.vue:50 src/components/playlists/Form.vue:1
+#: src/components/playlists/Form.vue:50
+#: src/components/playlists/Form.vue:1
 msgctxt "Content/Playlist/Button.Label/Verb"
 msgid "Update playlist"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:42
+#: src/components/auth/Settings.vue:42
 msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Update settings"
 msgstr ""
 
-#: front/src/views/auth/PasswordResetConfirm.vue:29
-#: front/src/views/auth/PasswordResetConfirm.vue:11
+#: src/views/auth/PasswordResetConfirm.vue:29
+#: src/views/auth/PasswordResetConfirm.vue:11
 msgctxt "Content/Signup/Button.Label"
 msgid "Update your password"
 msgstr ""
 
-#: front/src/components/audio/ChannelCard.vue:110
+#: src/components/audio/ChannelCard.vue:33
 msgctxt "*/*/*"
 msgid "Updated on %{ date }"
 msgstr ""
 
-#: front/src/views/channels/DetailBase.vue:169 src/views/channels/DetailBase.vue:164
+#: src/views/channels/DetailBase.vue:171
+#: src/views/channels/DetailBase.vue:166
 msgctxt "Content/Channels/Button.Label/Verb"
 msgid "Upload"
 msgstr ""
 
-#: front/src/views/content/libraries/Card.vue:38 src/views/library/DetailBase.vue:112
+#: src/views/content/libraries/Card.vue:38
+#: src/views/library/DetailBase.vue:112
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Upload"
 msgstr ""
 
-#: front/src/views/admin/library/UploadDetail.vue:88
-#: front/src/views/admin/library/UploadDetail.vue:83
+#: src/views/admin/library/UploadDetail.vue:88
+#: src/views/admin/library/UploadDetail.vue:83
 msgctxt "Content/Moderation/Title"
 msgid "Upload data"
 msgstr ""
 
-#: front/src/views/content/libraries/FilesTable.vue:109
-#: front/src/views/content/libraries/FilesTable.vue:17
+#: src/views/content/libraries/FilesTable.vue:109
+#: src/views/content/libraries/FilesTable.vue:17
 msgctxt "*/*/*/Noun"
 msgid "Upload date"
 msgstr ""
 
-#: front/src/components/library/FileUpload.vue:364
-#: front/src/components/library/FileUpload.vue:365
+#: src/components/library/FileUpload.vue:56
 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/channels/UploadModal.vue:9
+#: src/components/channels/UploadModal.vue:9
 msgctxt "Popup/Channels/Title"
 msgid "Upload details"
 msgstr ""
 
-#: front/src/components/library/ImportStatusModal.vue:10
+#: src/components/library/ImportStatusModal.vue:10
 msgctxt "Popup/Import/Message"
 msgid "Upload is still pending and will soon be processed by the server."
 msgstr ""
 
-#: front/src/components/library/FileUpload.vue:42
+#: src/components/library/FileUpload.vue:42
 msgctxt "Content/Library/Title/Verb"
 msgid "Upload music from your local storage"
 msgstr ""
 
-#: front/src/components/common/AttachmentInput.vue:27
+#: src/components/common/AttachmentInput.vue:27
 msgctxt "*/*/*"
 msgid "Upload New Picture…"
 msgstr ""
 
-#: front/src/components/AboutPod.vue:192
-#: front/src/views/admin/moderation/AccountsDetail.vue:355
-#: front/src/views/admin/moderation/AccountsDetail.vue:350
+#: src/components/AboutPod.vue:192
+#: src/views/admin/moderation/AccountsDetail.vue:355
+#: src/views/admin/moderation/AccountsDetail.vue:350
 msgctxt "*/*/*"
 msgid "Upload quota"
 msgstr ""
 
-#: front/src/views/content/Home.vue:31
+#: src/views/content/Home.vue:31
 msgctxt "Content/Library/Title/Verb"
 msgid "Upload third-party content in a library"
 msgstr ""
 
-#: front/src/components/library/FileUpload.vue:373
+#: src/components/library/FileUpload.vue:65
 msgctxt "Content/Library/Help text"
 msgid "Upload timeout, please try again"
 msgstr ""
 
-#: front/src/components/library/ImportStatusModal.vue:20
+#: src/components/library/ImportStatusModal.vue:20
 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:15
+#: src/components/library/ImportStatusModal.vue:15
 msgctxt "Popup/Import/Message"
 msgid "Upload was successfully processed by the server."
 msgstr ""
 
-#: front/src/views/content/Home.vue:36
+#: src/views/content/Home.vue:36
 msgctxt "Content/Library/Paragraph"
 msgid "Upload your personal music library to Funkwhale to enjoy it from anywhere and share it with friends and family."
 msgstr ""
 
-#: front/src/components/library/FileUpload.vue:133
+#: src/components/library/FileUpload.vue:133
 msgctxt "Content/Library/Table"
 msgid "Uploaded"
 msgstr ""
 
-#: front/src/components/library/TrackBase.vue:364
+#: src/components/library/TrackBase.vue:143
 msgctxt "Content/Track/Paragraph"
 msgid "Uploaded by <a class=\"internal\" href=\"%{ uploaderUrl }\">%{ uploader }</a> on <time title=\"%{ date }\" datetime=\"%{ date }\">%{ prettyDate }</time>"
 msgstr ""
 
-#: front/src/components/library/TrackBase.vue:372
+#: src/components/library/TrackBase.vue:151
 msgctxt "Content/Track/Paragraph"
 msgid "Uploaded on <time title=\"%{ date }\" datetime=\"%{ date }\">%{ prettyDate }</time>"
 msgstr ""
 
-#: front/src/components/channels/UploadForm.vue:91
-#: front/src/components/channels/UploadForm.vue:56
-#: front/src/components/channels/UploadForm.vue:45
-#: front/src/components/channels/UploadForm.vue:1
+#: src/components/channels/UploadForm.vue:91
+#: src/components/channels/UploadForm.vue:56
+#: src/components/channels/UploadForm.vue:45
+#: src/components/channels/UploadForm.vue:1
 msgctxt "Channels/*/*"
 msgid "Uploading"
 msgstr ""
 
-#: front/src/components/library/FileUpload.vue:4
+#: src/components/library/FileUpload.vue:4
 msgctxt "Content/Library/Tab.Title/Short"
 msgid "Uploading"
 msgstr ""
 
-#: front/src/components/common/AttachmentInput.vue:44
+#: src/components/common/AttachmentInput.vue:44
 msgctxt "Content/*/*/Noun"
 msgid "Uploading file…"
 msgstr ""
 
-#: front/src/components/library/FileUpload.vue:136
+#: src/components/library/FileUpload.vue:136
 msgctxt "Content/Library/Table"
 msgid "Uploading…"
 msgstr ""
 
-#: front/src/components/manage/library/LibrariesTable.vue:81
-#: front/src/components/manage/library/LibrariesTable.vue:22
-#: front/src/components/manage/moderation/AccountsTable.vue:52
-#: front/src/components/manage/moderation/AccountsTable.vue:12
-#: front/src/components/mixins/Translations.vue:90
-#: front/src/views/admin/ChannelDetail.vue:309 src/views/admin/ChannelDetail.vue:304
-#: front/src/views/admin/library/AlbumDetail.vue:303
-#: front/src/views/admin/library/AlbumDetail.vue:298
-#: front/src/views/admin/library/ArtistDetail.vue:302
-#: front/src/views/admin/library/ArtistDetail.vue:297
-#: front/src/views/admin/library/Base.vue:34
-#: front/src/views/admin/library/LibraryDetail.vue:288
-#: front/src/views/admin/library/LibraryDetail.vue:283
-#: front/src/views/admin/library/TrackDetail.vue:368
-#: front/src/views/admin/library/TrackDetail.vue:363
-#: front/src/views/admin/library/UploadsList.vue:29
-#: front/src/views/admin/moderation/AccountsDetail.vue:409
-#: front/src/views/admin/moderation/AccountsDetail.vue:404
-#: front/src/views/admin/moderation/DomainsDetail.vue:330
-#: front/src/views/admin/moderation/DomainsDetail.vue:325
-#: front/src/components/mixins/Translations.vue:91
+#: src/components/manage/library/LibrariesTable.vue:81
+#: src/components/manage/library/LibrariesTable.vue:22
+#: src/components/manage/moderation/AccountsTable.vue:52
+#: src/components/manage/moderation/AccountsTable.vue:12
+#: src/components/mixins/Translations.vue:90
+#: src/views/admin/ChannelDetail.vue:309
+#: src/views/admin/ChannelDetail.vue:304
+#: src/views/admin/library/AlbumDetail.vue:303
+#: src/views/admin/library/AlbumDetail.vue:298
+#: src/views/admin/library/ArtistDetail.vue:302
+#: src/views/admin/library/ArtistDetail.vue:297
+#: src/views/admin/library/Base.vue:34
+#: src/views/admin/library/LibraryDetail.vue:288
+#: src/views/admin/library/LibraryDetail.vue:283
+#: src/views/admin/library/TrackDetail.vue:368
+#: src/views/admin/library/TrackDetail.vue:363
+#: src/views/admin/library/UploadsList.vue:13
+#: src/views/admin/moderation/AccountsDetail.vue:409
+#: src/views/admin/moderation/AccountsDetail.vue:404
+#: src/views/admin/moderation/DomainsDetail.vue:330
+#: src/views/admin/moderation/DomainsDetail.vue:325
 msgctxt "*/*/*"
 msgid "Uploads"
 msgstr ""
 
-#: front/src/views/channels/DetailOverview.vue:37
-#: front/src/views/channels/DetailOverview.vue:3
+#: src/views/channels/DetailOverview.vue:37
+#: src/views/channels/DetailOverview.vue:3
 msgctxt "Content/Channel/Header"
 msgid "Uploads are being processed"
 msgstr ""
 
-#: front/src/views/channels/DetailOverview.vue:6
-#: front/src/views/channels/DetailOverview.vue:3
+#: src/views/channels/DetailOverview.vue:6
+#: src/views/channels/DetailOverview.vue:3
 msgctxt "Content/Channel/Header"
 msgid "Uploads published successfully"
 msgstr ""
 
-#: front/src/views/admin/ChannelDetail.vue:158 src/views/admin/ChannelDetail.vue:153
+#: src/views/admin/ChannelDetail.vue:158
+#: src/views/admin/ChannelDetail.vue:153
 msgctxt "'Content/*/*/Noun"
 msgid "URL"
 msgstr ""
 
-#: front/src/components/library/TrackDetail.vue:180
+#: src/components/library/TrackDetail.vue:181
 msgctxt "Content/*/*/Noun"
 msgid "URL"
 msgstr ""
 
-#: front/src/components/auth/ApplicationForm.vue:22
+#: src/components/auth/ApplicationForm.vue:22
 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:36
-msgctxt "Footer/*/List item.Link"
-msgid "Use another instance"
-msgstr ""
-
-#: front/src/components/common/UserModal.vue:213
-#: front/src/components/common/UserModal.vue:215
+#: src/components/common/UserModal.vue:45
 msgctxt "Sidebar/*/List item.Link"
 msgid "Use another instance"
 msgstr ""
 
-#: front/src/components/Home.vue:181
+#: src/components/Home.vue:181
 msgctxt "Content/Home/Link"
 msgid "Use Funkwhale on other devices with our apps"
 msgstr ""
 
-#: front/src/components/About.vue:164
+#: src/components/About.vue:169
 msgctxt "Content/About/Paragraph"
 msgid "Use Funkwhale on other devices with our apps."
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:397
+#: src/components/auth/Settings.vue:397
 msgctxt "Content/Settings/Paragraph"
 msgid "Use plugins to extend Funkwhale and get additional features."
 msgstr ""
 
-#: front/src/components/moderation/ReportModal.vue:50
+#: src/components/moderation/ReportModal.vue:50
 msgctxt "*/*/Field,Help"
 msgid "Use this field to provide additional context to the moderator that will handle your report."
 msgstr ""
 
-#: front/src/views/auth/PasswordReset.vue:23
+#: src/views/auth/PasswordReset.vue:23
 msgctxt "Content/Signup/Paragraph"
 msgid "Use this form to request a password reset. We will send an e-mail to the given address with instructions to reset your password."
 msgstr ""
 
-#: front/src/components/moderation/ReportModal.vue:26
+#: src/components/moderation/ReportModal.vue:26
 msgctxt "*/Moderation/Popup,Paragraph"
 msgid "Use this form to submit a report to our moderation team."
 msgstr ""
 
-#: front/src/components/RemoteSearchForm.vue:40
+#: src/components/RemoteSearchForm.vue:40
 msgctxt "Content/Fetch/Paragraph"
 msgid "Use this form to subscribe to a channel hosted somewhere else on the Fediverse."
 msgstr ""
 
-#: front/src/components/RemoteSearchForm.vue:35
+#: src/components/RemoteSearchForm.vue:35
 msgctxt "Content/Fetch/Paragraph"
 msgid "Use this form to subscribe to an RSS feed from its URL."
 msgstr ""
 
-#: front/src/components/manage/moderation/InstancePolicyForm.vue:205
+#: src/components/manage/moderation/InstancePolicyForm.vue:35
 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:77
-#: front/src/components/manage/users/InvitationsTable.vue:7
+#: src/components/manage/users/InvitationsTable.vue:77
+#: src/components/manage/users/InvitationsTable.vue:7
 msgctxt "Content/Admin/Table"
 msgid "Used"
 msgstr ""
 
-#: front/src/components/audio/ChannelForm.vue:134
-#: front/src/components/audio/ChannelForm.vue:120
-#: front/src/components/audio/ChannelForm.vue:100
+#: src/components/audio/ChannelForm.vue:134
+#: src/components/audio/ChannelForm.vue:120
+#: src/components/audio/ChannelForm.vue:100
 msgctxt "*/*/*"
 msgid "Used for the itunes:email and itunes:name field required by certain platforms such as Spotify or iTunes."
 msgstr ""
 
-#: front/src/components/audio/ChannelForm.vue:54
-#: front/src/components/audio/ChannelForm.vue:40
-#: front/src/components/audio/ChannelForm.vue:20
-#: front/src/components/audio/ChannelForm.vue:3
+#: src/components/audio/ChannelForm.vue:54
+#: src/components/audio/ChannelForm.vue:40
+#: src/components/audio/ChannelForm.vue:20
+#: src/components/audio/ChannelForm.vue:3
 msgctxt "Content/Channels/Paragraph"
 msgid "Used in URLs and to follow this channel in the Fediverse. It cannot be changed later."
 msgstr ""
 
-#: front/src/components/Home.vue:154
+#: src/components/Home.vue:154
 msgctxt "Content/Home/Header"
 msgid "Useful links"
 msgstr ""
 
-#: front/src/views/library/Edit.vue:28
+#: src/views/library/Edit.vue:28
 msgctxt "Content/Library/Table.Label"
 msgid "User"
 msgstr ""
 
-#: front/src/components/Home.vue:191
+#: src/components/Home.vue:191
 msgctxt "Content/Home/Link"
 msgid "User guides"
 msgstr ""
 
-#: front/src/views/admin/Settings.vue:79
+#: src/views/admin/Settings.vue:35
 msgctxt "Content/Admin/Menu"
 msgid "User Interface"
 msgstr ""
 
-#: front/src/components/library/AlbumDetail.vue:26
-#: front/src/components/library/AlbumDetail.vue:2
-#: front/src/components/library/ArtistDetail.vue:55
+#: src/components/library/AlbumDetail.vue:26
+#: src/components/library/AlbumDetail.vue:2
+#: src/components/library/ArtistDetail.vue:55
 msgctxt "Content/*/Title/Noun"
 msgid "User libraries"
 msgstr ""
 
-#: front/src/views/auth/ProfileOverview.vue:20
+#: src/views/auth/ProfileOverview.vue:20
 msgctxt "Content/Profile/Header"
 msgid "User Libraries"
 msgstr ""
 
-#: front/src/components/library/Radios.vue:26
+#: src/components/library/Radios.vue:26
 msgctxt "Content/Radio/Title"
 msgid "User radios"
 msgstr ""
 
-#: front/src/views/admin/moderation/Base.vue:12
-#: front/src/views/admin/moderation/RequestsList.vue:4
-#: front/src/views/admin/moderation/RequestsList.vue:166
+#: src/views/admin/moderation/Base.vue:12
+#: src/views/admin/moderation/RequestsList.vue:4
+#: src/views/admin/moderation/RequestsList.vue:40
 msgctxt "*/Moderation/*/Noun"
 msgid "User Requests"
 msgstr ""
 
-#: front/src/components/auth/SignupForm.vue:49
-#: front/src/components/manage/users/UsersTable.vue:40
-#: front/src/components/manage/users/UsersTable.vue:2
-#: front/src/components/mixins/Translations.vue:86
-#: front/src/views/admin/moderation/AccountsDetail.vue:113
-#: front/src/views/admin/moderation/AccountsDetail.vue:108
-#: front/src/components/mixins/Translations.vue:87
+#: src/components/auth/SignupForm.vue:49
+#: src/components/manage/users/UsersTable.vue:40
+#: src/components/manage/users/UsersTable.vue:2
+#: src/components/mixins/Translations.vue:86
+#: src/views/admin/moderation/AccountsDetail.vue:113
+#: src/views/admin/moderation/AccountsDetail.vue:108
 msgctxt "Content/*/*"
 msgid "Username"
 msgstr ""
 
-#: front/src/components/auth/LoginForm.vue:27 src/components/auth/LoginForm.vue:3
+#: src/components/auth/LoginForm.vue:27
+#: src/components/auth/LoginForm.vue:3
 msgctxt "Content/Login/Input.Label/Noun"
 msgid "Username or e-mail address"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:41
-#: front/src/components/manage/moderation/DomainsTable.vue:65
-#: front/src/components/manage/moderation/DomainsTable.vue:7
-#: front/src/components/mixins/Translations.vue:88 src/views/admin/users/Base.vue:4
-#: front/src/views/admin/users/UsersList.vue:23
-#: front/src/components/mixins/Translations.vue:89
+#: src/components/Sidebar.vue:41
+#: src/components/manage/moderation/DomainsTable.vue:65
+#: src/components/manage/moderation/DomainsTable.vue:7
+#: src/components/mixins/Translations.vue:88
+#: src/views/admin/users/Base.vue:4
+#: src/views/admin/users/UsersList.vue:10
 msgctxt "*/*/*/Noun"
 msgid "Users"
 msgstr ""
 
-#: front/src/components/About.vue:48 src/components/About.vue:7
+#: src/components/About.vue:48
+#: src/components/About.vue:7
 msgctxt "Content/About/Paragraph"
 msgid "Users on this pod also get %{ quota } of free storage to upload their own content!"
 msgstr ""
 
-#: front/src/components/Home.vue:135 src/components/Home.vue:7
+#: src/components/Home.vue:135
+#: src/components/Home.vue:7
 msgctxt "Content/Home/Paragraph"
 msgid "Users on this pod also get %{ quota } of free storage to upload their own content!"
 msgstr ""
 
-#: front/src/components/Footer.vue:51
-msgctxt "Footer/*/Title"
-msgid "Using Funkwhale"
-msgstr ""
-
-#: front/src/components/Footer.vue:33
-msgctxt "Footer/*/List item"
-msgid "Version %{version}"
-msgstr ""
-
-#: front/src/components/audio/podcast/Modal.vue:278
-#: front/src/components/audio/track/Modal.vue:278
+#: src/components/audio/podcast/Modal.vue:50
+#: src/components/audio/track/Modal.vue:50
 msgctxt "*/Queue/Dropdown/Button/Label/Short"
 msgid "View album"
 msgstr ""
 
-#: front/src/components/audio/podcast/Modal.vue:285
-#: front/src/components/audio/track/Modal.vue:285
+#: src/components/audio/podcast/Modal.vue:57
+#: src/components/audio/track/Modal.vue:57
 msgctxt "*/Queue/Dropdown/Button/Label/Short"
 msgid "View artist"
 msgstr ""
 
-#: front/src/components/audio/podcast/Modal.vue:283
-#: front/src/components/audio/track/Modal.vue:283
+#: src/components/audio/podcast/Modal.vue:55
+#: src/components/audio/track/Modal.vue:55
 msgctxt "*/Queue/Dropdown/Button/Label/Short"
 msgid "View channel"
 msgstr ""
 
-#: front/src/views/channels/DetailOverview.vue:29
-#: front/src/views/channels/DetailOverview.vue:13
+#: src/views/channels/DetailOverview.vue:29
+#: src/views/channels/DetailOverview.vue:13
 msgctxt "Content/Channel/Button"
 msgid "View errored uploads"
 msgstr ""
 
-#: front/src/views/content/libraries/Quota.vue:41
-#: front/src/views/content/libraries/Quota.vue:81
-#: front/src/views/content/libraries/Quota.vue:120
+#: src/views/content/libraries/Quota.vue:41
+#: src/views/content/libraries/Quota.vue:81
+#: src/views/content/libraries/Quota.vue:120
 msgctxt "Content/Library/Link/Verb"
 msgid "View files"
 msgstr ""
 
-#: front/src/components/library/AlbumDropdown.vue:63
-#: front/src/components/library/ArtistBase.vue:104
-#: front/src/components/library/ArtistBase.vue:99
-#: front/src/components/library/TrackBase.vue:109
-#: front/src/components/library/TrackBase.vue:104
-#: front/src/views/admin/ChannelDetail.vue:44 src/views/admin/ChannelDetail.vue:39
-#: front/src/views/admin/library/AlbumDetail.vue:45
-#: front/src/views/admin/library/AlbumDetail.vue:40
-#: front/src/views/admin/library/ArtistDetail.vue:44
-#: front/src/views/admin/library/ArtistDetail.vue:39
-#: front/src/views/admin/library/LibraryDetail.vue:29
-#: front/src/views/admin/library/LibraryDetail.vue:36
-#: front/src/views/admin/library/LibraryDetail.vue:24
-#: front/src/views/admin/library/LibraryDetail.vue:31
-#: front/src/views/admin/library/TagDetail.vue:29
-#: front/src/views/admin/library/TagDetail.vue:24
-#: front/src/views/admin/library/TrackDetail.vue:45
-#: front/src/views/admin/library/TrackDetail.vue:40
-#: front/src/views/admin/library/UploadDetail.vue:30
-#: front/src/views/admin/library/UploadDetail.vue:37
-#: front/src/views/admin/library/UploadDetail.vue:25
-#: front/src/views/admin/library/UploadDetail.vue:32
-#: front/src/views/admin/moderation/AccountsDetail.vue:33
-#: front/src/views/admin/moderation/AccountsDetail.vue:37
-#: front/src/views/admin/moderation/AccountsDetail.vue:28
-#: front/src/views/admin/moderation/AccountsDetail.vue:32
-#: front/src/views/admin/moderation/DomainsDetail.vue:26
-#: front/src/views/admin/moderation/DomainsDetail.vue:21
+#: src/components/library/AlbumDropdown.vue:63
+#: src/components/library/ArtistBase.vue:104
+#: src/components/library/ArtistBase.vue:99
+#: src/components/library/TrackBase.vue:109
+#: src/components/library/TrackBase.vue:104
+#: src/views/admin/ChannelDetail.vue:44
+#: src/views/admin/ChannelDetail.vue:39
+#: src/views/admin/library/AlbumDetail.vue:45
+#: src/views/admin/library/AlbumDetail.vue:40
+#: src/views/admin/library/ArtistDetail.vue:44
+#: src/views/admin/library/ArtistDetail.vue:39
+#: src/views/admin/library/LibraryDetail.vue:29
+#: src/views/admin/library/LibraryDetail.vue:36
+#: src/views/admin/library/LibraryDetail.vue:24
+#: src/views/admin/library/LibraryDetail.vue:31
+#: src/views/admin/library/TagDetail.vue:29
+#: src/views/admin/library/TagDetail.vue:24
+#: src/views/admin/library/TrackDetail.vue:45
+#: src/views/admin/library/TrackDetail.vue:40
+#: src/views/admin/library/UploadDetail.vue:30
+#: src/views/admin/library/UploadDetail.vue:37
+#: src/views/admin/library/UploadDetail.vue:25
+#: src/views/admin/library/UploadDetail.vue:32
+#: src/views/admin/moderation/AccountsDetail.vue:33
+#: src/views/admin/moderation/AccountsDetail.vue:37
+#: src/views/admin/moderation/AccountsDetail.vue:28
+#: src/views/admin/moderation/AccountsDetail.vue:32
+#: src/views/admin/moderation/DomainsDetail.vue:26
+#: src/views/admin/moderation/DomainsDetail.vue:21
 msgctxt "Content/Moderation/Link/Verb"
 msgid "View in Django's admin"
 msgstr ""
 
-#: front/src/components/Home.vue:212
+#: src/components/Home.vue:212
 msgctxt "Content/Home/Link"
 msgid "View more…"
 msgstr ""
 
-#: front/src/components/library/AlbumDropdown.vue:24
-#: front/src/components/library/ArtistBase.vue:63
-#: front/src/components/library/ArtistBase.vue:58
-#: front/src/components/library/TrackBase.vue:51
-#: front/src/components/library/TrackBase.vue:46 src/views/auth/ProfileBase.vue:13
-#: front/src/views/channels/DetailBase.vue:102 src/views/channels/DetailBase.vue:97
-#: front/src/views/library/DetailBase.vue:11
+#: src/components/library/AlbumDropdown.vue:24
+#: src/components/library/ArtistBase.vue:63
+#: src/components/library/ArtistBase.vue:58
+#: src/components/library/TrackBase.vue:51
+#: src/components/library/TrackBase.vue:46
+#: src/views/auth/ProfileBase.vue:13
+#: src/views/channels/DetailBase.vue:102
+#: src/views/channels/DetailBase.vue:97
+#: src/views/library/DetailBase.vue:11
 msgctxt "Content/*/Button.Label/Verb"
 msgid "View on %{ domain }"
 msgstr ""
 
-#: front/src/components/library/AlbumDropdown.vue:33
-#: front/src/components/library/ArtistBase.vue:78
-#: front/src/components/library/ArtistBase.vue:73
-#: front/src/components/library/TrackDetail.vue:194
+#: src/components/library/AlbumDropdown.vue:33
+#: src/components/library/ArtistBase.vue:78
+#: src/components/library/ArtistBase.vue:73
+#: src/components/library/TrackDetail.vue:195
 msgctxt "Content/*/*/Clickable, Verb"
 msgid "View on MusicBrainz"
 msgstr ""
 
-#: front/src/components/manage/moderation/ReportCard.vue:150
+#: src/components/manage/moderation/ReportCard.vue:150
 msgctxt "Content/Moderation/Link"
 msgid "View public page"
 msgstr ""
 
-#: front/src/components/audio/podcast/Modal.vue:276
-#: front/src/components/audio/track/Modal.vue:276
+#: src/components/audio/podcast/Modal.vue:48
+#: src/components/audio/track/Modal.vue:48
 msgctxt "*/Queue/Dropdown/Button/Label/Short"
 msgid "View series"
 msgstr ""
 
-#: front/src/views/channels/DetailOverview.vue:24
-#: front/src/views/channels/DetailOverview.vue:8
+#: src/views/channels/DetailOverview.vue:24
+#: src/views/channels/DetailOverview.vue:8
 msgctxt "Content/Channel/Button"
 msgid "View skipped uploads"
 msgstr ""
 
-#: front/src/components/manage/library/LibrariesTable.vue:11
-#: front/src/components/manage/library/LibrariesTable.vue:76
-#: front/src/components/manage/library/LibrariesTable.vue:17
-#: front/src/components/manage/library/UploadsTable.vue:11
-#: front/src/components/manage/library/UploadsTable.vue:112
-#: front/src/components/manage/library/UploadsTable.vue:22
-#: front/src/views/admin/library/LibraryDetail.vue:101
-#: front/src/views/admin/library/LibraryDetail.vue:96
-#: front/src/views/admin/library/UploadDetail.vue:108
-#: front/src/views/admin/library/UploadDetail.vue:103
-#: front/src/views/content/libraries/Form.vue:28
+#: src/components/manage/library/LibrariesTable.vue:11
+#: src/components/manage/library/LibrariesTable.vue:76
+#: src/components/manage/library/LibrariesTable.vue:17
+#: src/components/manage/library/UploadsTable.vue:11
+#: src/components/manage/library/UploadsTable.vue:112
+#: src/components/manage/library/UploadsTable.vue:22
+#: src/views/admin/library/LibraryDetail.vue:101
+#: src/views/admin/library/LibraryDetail.vue:96
+#: src/views/admin/library/UploadDetail.vue:108
+#: src/views/admin/library/UploadDetail.vue:103
+#: src/views/content/libraries/Form.vue:28
 msgctxt "*/*/*"
 msgid "Visibility"
 msgstr ""
 
-#: front/src/components/Home.vue:110
+#: src/components/Home.vue:110
 msgctxt "Content/Home/Link"
 msgid "Visit funkwhale.audio"
 msgstr ""
 
-#: front/src/components/library/AlbumDetail.vue:15
-#: front/src/components/library/AlbumDetail.vue:4
+#: src/components/library/AlbumDetail.vue:15
+#: src/components/library/AlbumDetail.vue:4
 msgctxt "Content/Album/"
 msgid "Volume %{ number }"
 msgstr ""
 
-#: front/src/components/federation/FetchButton.vue:106
+#: src/components/federation/FetchButton.vue:106
 msgctxt "Popup/*/Loading.Title"
 msgid "Waiting for result…"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:430
+#: src/components/auth/Settings.vue:430
 msgctxt "Content/Settings/Error message.Title"
 msgid "We cannot change your e-mail address"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:478
+#: src/components/auth/Settings.vue:478
 msgctxt "Content/Settings/Error message.Title"
 msgid "We cannot delete your account"
 msgstr ""
 
-#: front/src/components/auth/LoginForm.vue:4
+#: src/components/auth/LoginForm.vue:4
 msgctxt "Content/Login/Error message.Title"
 msgid "We cannot log you in"
 msgstr ""
 
-#: front/src/components/auth/ApplicationForm.vue:4
+#: src/components/auth/ApplicationForm.vue:4
 msgctxt "Content/*/Error message.Title"
 msgid "We cannot save your changes"
 msgstr ""
 
-#: front/src/views/Notifications.vue:65
+#: src/views/Notifications.vue:65
 msgctxt "Content/Notifications/Paragraph"
 msgid "We noticed you've been here for a while. If Funkwhale is useful to you, we could use your help to make it even better!"
 msgstr ""
 
-#: front/src/components/library/FileUpload.vue:62
+#: src/components/library/FileUpload.vue:62
 msgctxt "Content/Library/Link"
 msgid "We recommend using Picard for that purpose."
 msgstr ""
 
-#: front/src/components/moderation/ReportModal.vue:39
+#: src/components/moderation/ReportModal.vue:39
 msgctxt "*/*/Field,Help"
 msgid "We'll use this e-mail address if we need to contact you regarding this report."
 msgstr ""
 
-#: front/src/components/Home.vue:5
+#: src/components/Home.vue:5
 msgctxt "Content/Home/Header"
 msgid "Welcome to %{ podName }!"
 msgstr ""
 
-#: front/src/components/audio/ChannelForm.vue:17
-#: front/src/components/audio/ChannelForm.vue:3
+#: src/components/audio/ChannelForm.vue:17
+#: src/components/audio/ChannelForm.vue:3
 msgctxt "Content/Channel/Paragraph"
 msgid "What will this channel be used for?"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:29
-#: front/src/components/audio/EmbedWizard.vue:3
+#: src/components/audio/EmbedWizard.vue:29
+#: src/components/audio/EmbedWizard.vue:3
 msgctxt "Popup/Embed/Input.Label"
 msgid "Widget height"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:18
+#: src/components/audio/EmbedWizard.vue:18
 msgctxt "Popup/Embed/Input.Label"
 msgid "Widget width"
 msgstr ""
 
-#: front/src/components/common/ContentForm.vue:5
+#: src/components/common/ContentForm.vue:5
 msgctxt "*/Form/Menu.item"
 msgid "Write"
 msgstr ""
 
-#: front/src/components/auth/ApplicationForm.vue:180
+#: src/components/auth/ApplicationForm.vue:59
 msgctxt "Content/OAuth Scopes/Label/Verb"
 msgid "Write"
 msgstr ""
 
-#: front/src/components/common/ContentForm.vue:100
+#: src/components/common/ContentForm.vue:25
 msgctxt "*/Form/Placeholder"
 msgid "Write a few words here…"
 msgstr ""
 
-#: front/src/components/auth/Authorize.vue:39
+#: src/components/auth/Authorize.vue:39
 msgctxt "Content/Auth/Label/Noun"
 msgid "Write-only"
 msgstr ""
 
-#: front/src/components/auth/ApplicationForm.vue:181
+#: src/components/auth/ApplicationForm.vue:60
 msgctxt "Content/OAuth Scopes/Help Text"
 msgid "Write-only access to user data"
 msgstr ""
 
-#: front/src/components/library/TrackDetail.vue:135
+#: src/components/library/TrackDetail.vue:136
 msgctxt "*/*/*"
 msgid "Year"
 msgstr ""
 
-#: front/src/components/admin/SignupFormBuilder.vue:82
-#: front/src/components/manage/moderation/AccountsTable.vue:100
-#: front/src/components/manage/moderation/AccountsTable.vue:28
-#: front/src/components/manage/moderation/DomainsTable.vue:17
-#: front/src/components/manage/moderation/DomainsTable.vue:102
-#: front/src/views/admin/moderation/DomainsDetail.vue:110
-#: front/src/views/admin/moderation/DomainsDetail.vue:105
+#: src/components/admin/SignupFormBuilder.vue:82
+#: src/components/manage/moderation/AccountsTable.vue:100
+#: src/components/manage/moderation/AccountsTable.vue:28
+#: src/components/manage/moderation/DomainsTable.vue:17
+#: src/components/manage/moderation/DomainsTable.vue:102
+#: src/views/admin/moderation/DomainsDetail.vue:110
+#: src/views/admin/moderation/DomainsDetail.vue:105
 msgctxt "*/*/*"
 msgid "Yes"
 msgstr ""
 
-#: front/src/components/auth/Logout.vue:13
+#: src/components/auth/Logout.vue:13
 msgctxt "Content/Login/Button.Label"
 msgid "Yes, log me out!"
 msgstr ""
 
-#: front/src/views/content/libraries/Form.vue:30
+#: src/views/content/libraries/Form.vue:30
 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:48
+#: src/components/library/FileUpload.vue:48
 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:28
+#: src/components/SetInstanceModal.vue:28
 msgctxt "Popup/Login/Paragraph"
 msgid "You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ hostname }&nbsp;<i class=\"external icon\"/></a>. 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
+#: 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:9
+#: src/components/auth/Logout.vue:9
 msgctxt "Content/Login/Paragraph"
 msgid "You are currently logged in as %{ username }"
 msgstr ""
 
-#: front/src/components/library/FileUpload.vue:54
+#: src/components/library/FileUpload.vue:54
 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:189
+#: src/components/SetInstanceModal.vue:82
 msgctxt "*/Instance/Message"
 msgid "You are now using the Funkwhale instance at %{ url }"
 msgstr ""
 
-#: front/src/components/auth/Logout.vue:20
+#: src/components/auth/Logout.vue:20
 msgctxt "Content/Login/Title"
 msgid "You aren't currently logged in"
 msgstr ""
 
-#: front/src/components/moderation/FilterModal.vue:50
-#: front/src/components/moderation/FilterModal.vue:29
+#: src/components/moderation/FilterModal.vue:50
+#: src/components/moderation/FilterModal.vue:29
 msgctxt "Popup/Moderation/Paragraph"
 msgid "You can manage and update your filters any time from your account settings."
 msgstr ""
 
-#: front/src/views/auth/EmailConfirm.vue:38
+#: src/views/auth/EmailConfirm.vue:38
 msgctxt "Content/Signup/Paragraph"
 msgid "You can now use the service without limitations."
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:466
+#: src/components/auth/Settings.vue:466
 msgctxt "Content/Settings/Paragraph'"
 msgid "You can permanently and irreversibly delete your account and all the associated data using the form below. You will be asked for confirmation."
 msgstr ""
 
-#: front/src/components/library/radios/Builder.vue:10
+#: src/components/library/radios/Builder.vue:10
 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:15
+#: src/components/auth/SubsonicTokenForm.vue:15
 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/common/LoginModal.vue:76
+#: src/components/common/LoginModal.vue:23
 msgctxt "Popup/*/Paragraph"
 msgid "You don't have access!"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:286
+#: src/components/auth/Settings.vue:286
 msgctxt "Content/Applications/Paragraph"
 msgid "You don't have any application connected with your account."
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:67
-#: front/src/views/admin/moderation/AccountsDetail.vue:62
-#: front/src/views/admin/moderation/AccountsDetail.vue:4
+#: src/views/admin/moderation/AccountsDetail.vue:67
+#: src/views/admin/moderation/AccountsDetail.vue:62
+#: src/views/admin/moderation/AccountsDetail.vue:4
 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:61
-#: front/src/views/admin/moderation/DomainsDetail.vue:56
-#: front/src/views/admin/moderation/DomainsDetail.vue:4
+#: src/views/admin/moderation/DomainsDetail.vue:61
+#: src/views/admin/moderation/DomainsDetail.vue:56
+#: src/views/admin/moderation/DomainsDetail.vue:4
 msgctxt "Content/Moderation/Card.Title"
 msgid "You don't have any rule in place for this domain."
 msgstr ""
 
-#: front/src/components/channels/UploadForm.vue:40
-#: front/src/components/channels/UploadForm.vue:5
+#: src/components/channels/UploadForm.vue:40
+#: src/components/channels/UploadForm.vue:5
 msgctxt "Content/Library/Paragraph"
 msgid "You don't have any space left to upload your files. Please contact the moderators."
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:377
+#: src/components/auth/Settings.vue:377
 msgctxt "Content/Applications/Paragraph"
 msgid "You don't have registered any application yet."
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:61
+#: src/components/library/EditForm.vue:61
 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/Queue.vue:165
+#: src/components/Queue.vue:165
 msgctxt "Sidebar/Player/Title"
 msgid "You have a radio playing"
 msgstr ""
 
-#: front/src/components/channels/UploadForm.vue:50
-#: front/src/components/channels/UploadForm.vue:15
-#: front/src/components/channels/UploadForm.vue:4
+#: src/components/channels/UploadForm.vue:50
+#: src/components/channels/UploadForm.vue:15
+#: src/components/channels/UploadForm.vue:4
 msgctxt "Popup/Channels/Paragraph"
 msgid "You have some draft uploads pending publication."
 msgstr ""
 
-#: front/src/components/Queue.vue:42 src/components/Queue.vue:35
+#: src/components/Queue.vue:42
+#: src/components/Queue.vue:35
 msgctxt "Sidebar/Player/Error message.Paragraph"
 msgid "You may have a connectivity issue."
 msgstr ""
 
-#: front/src/views/library/DetailAlbums.vue:8 src/views/library/DetailOverview.vue:12
-#: front/src/views/library/DetailTracks.vue:8
+#: src/views/library/DetailAlbums.vue:8
+#: src/views/library/DetailOverview.vue:12
+#: src/views/library/DetailTracks.vue:8
 msgctxt "*/*/*"
 msgid "You may need to follow this library to see its content."
 msgstr ""
 
-#: front/src/components/audio/ChannelEntries.vue:12
-#: front/src/components/audio/ChannelEntries.vue:3
+#: src/components/audio/ChannelEntries.vue:12
+#: src/components/audio/ChannelEntries.vue:3
 msgctxt "Content/Channels/*"
 msgid "You may need to subscribe to this channel to see its content."
 msgstr ""
 
-#: front/src/components/audio/ChannelSeries.vue:24
-#: front/src/components/audio/ChannelSeries.vue:3
+#: src/components/audio/ChannelSeries.vue:24
+#: src/components/audio/ChannelSeries.vue:3
 msgctxt "Content/Channels/*"
 msgid "You may need to subscribe to this channel to see its contents."
 msgstr ""
 
-#: front/src/components/channels/SubscribeButton.vue:64
+#: src/components/channels/SubscribeButton.vue:23
 msgctxt "Popup/Message/Paragraph"
 msgid "You need to be logged in to subscribe to this channel"
 msgstr ""
 
-#: front/src/components/notifications/NotificationRow.vue:87
+#: src/components/notifications/NotificationRow.vue:17
 msgctxt "Content/Notifications/Paragraph"
 msgid "You rejected %{ username }&#39;s request to follow \"%{ library }\""
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:131
+#: src/components/auth/Settings.vue:131
 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/LoginForm.vue:49 src/components/auth/LoginForm.vue:2
+#: src/components/auth/LoginForm.vue:49
+#: src/components/auth/LoginForm.vue:2
 msgctxt "Contant/Auth/Paragraph"
 msgid "You will be redirected to %{ domain } to authenticate."
 msgstr ""
 
-#: front/src/components/auth/Authorize.vue:71
+#: src/components/auth/Authorize.vue:71
 msgctxt "Content/Auth/Paragraph"
 msgid "You will be redirected to <strong>%{ url }</strong>"
 msgstr ""
 
-#: front/src/components/auth/Authorize.vue:68
+#: src/components/auth/Authorize.vue:68
 msgctxt "Content/Auth/Paragraph"
 msgid "You will be shown a code to copy-paste in the application."
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:87
+#: src/components/auth/Settings.vue:87
 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:23
-#: front/src/components/moderation/FilterModal.vue:2
+#: src/components/moderation/FilterModal.vue:23
+#: src/components/moderation/FilterModal.vue:2
 msgctxt "Popup/Moderation/Paragraph"
 msgid "You will not see tracks, albums and user activity linked to this artist any more:"
 msgstr ""
 
-#: front/src/components/About.vue:68
+#: src/components/About.vue:72
 msgctxt "Content/About/Message"
 msgid "You're already signed in!"
 msgstr ""
 
-#: front/src/components/auth/SignupForm.vue:38
+#: src/components/auth/SignupForm.vue:38
 msgctxt "Content/Signup/Form/Paragraph"
 msgid "Your account cannot be created."
 msgstr ""
 
-#: front/src/components/auth/SignupForm.vue:4
+#: src/components/auth/SignupForm.vue:4
 msgctxt "Content/Signup/Form/Paragraph"
 msgid "Your account request was successfully submitted. You will be notified by e-mail when our moderation team has reviewed your request."
 msgstr ""
 
-#: front/src/components/auth/SignupForm.vue:9
+#: src/components/auth/SignupForm.vue:9
 msgctxt "Content/Signup/Form/Paragraph"
 msgid "Your account was successfully created. Please verify your e-mail address before trying to login."
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:471
+#: src/components/auth/Settings.vue:471
 msgctxt "Content/Settings/Paragraph'"
 msgid "Your account will be deleted from our servers within a few minutes. We will also notify other servers who may have a copy of some of your data so they can proceed to deletion. Please note that some of these servers may be offline or unwilling to comply though."
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:299
+#: src/components/auth/Settings.vue:299
 msgctxt "Content/Settings/Title/Noun"
 msgid "Your applications"
 msgstr ""
 
-#: front/src/components/common/AttachmentInput.vue:4
+#: src/components/common/AttachmentInput.vue:4
 msgctxt "Content/*/Error message.Title"
 msgid "Your attachment cannot be saved"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:58
+#: src/components/auth/Settings.vue:58
 msgctxt "Content/Settings/Error message.Title"
 msgid "Your avatar cannot be saved"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:423
+#: src/components/auth/Settings.vue:423
 msgctxt "Content/Settings/Paragraph'"
 msgid "Your current e-mail address is %{ email }."
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:934
+#: src/components/auth/Settings.vue:236
 msgctxt "*/Auth/Message"
 msgid "Your deletion request was submitted, your account and content will be deleted shortly"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:962
+#: src/components/auth/Settings.vue:264
 msgctxt "*/Auth/Message"
 msgid "Your e-mail address has been changed, please check your inbox for our confirmation message."
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:4
+#: src/components/library/EditForm.vue:4
 msgctxt "Content/Library/Paragraph"
 msgid "Your edit was successfully submitted."
 msgstr ""
 
-#: front/src/components/favorites/List.vue:173
+#: src/components/favorites/List.vue:38
 msgctxt "Head/Favorites/Title"
 msgid "Your Favorites"
 msgstr ""
 
-#: front/src/views/Notifications.vue:6
+#: src/views/Notifications.vue:6
 msgctxt "Content/Notifications/Title"
 msgid "Your messages"
 msgstr ""
 
-#: front/src/views/Notifications.vue:116
+#: src/views/Notifications.vue:116
 msgctxt "Content/Notifications/Title"
 msgid "Your notifications"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:94
+#: src/components/auth/Settings.vue:94
 msgctxt "Content/Settings/Error message.Title"
 msgid "Your password cannot be changed"
 msgstr ""
 
-#: front/src/views/auth/PasswordResetConfirm.vue:49
+#: src/views/auth/PasswordResetConfirm.vue:49
 msgctxt "Content/Signup/Card.Paragraph"
 msgid "Your password has been updated successfully."
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:19
+#: src/components/auth/Settings.vue:19
 msgctxt "Content/Settings/Error message.Title"
 msgid "Your settings can't be updated"
 msgstr ""
 
-#: front/src/components/auth/SubsonicTokenForm.vue:170
+#: src/components/auth/SubsonicTokenForm.vue:24
 msgctxt "Content/Password/Input.label"
 msgid "Your subsonic API password"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:136
+#: src/components/auth/Settings.vue:136
 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/views/channels/DetailOverview.vue:42
-#: front/src/views/channels/DetailOverview.vue:8
+#: src/views/channels/DetailOverview.vue:42
+#: src/views/channels/DetailOverview.vue:8
 msgctxt "Content/Channel/Paragraph"
 msgid "Your uploads are being processed by Funkwhale and will be live very soon."
 msgstr ""
-
-#: front/src/main.js:120
-msgctxt "*/Error/Paragraph"
-msgid "You sent too many requests and have been rate limited, please try again in %{ delay }"
-msgstr ""
-
-#: front/src/main.js:123
-msgctxt "*/Error/Paragraph"
-msgid "You sent too many requests and have been rate limited, please try again later"
-msgstr ""
-
-#: front/src/edits.js:26
-msgctxt "Content/*/*/Noun"
-msgid "Cover"
-msgstr ""
-
-#: front/src/entities.js:126
-msgctxt "*/*/*/Noun"
-msgid "MusicBrainz ID"
-msgstr ""
diff --git a/front/scripts/i18n-compile.sh b/front/scripts/i18n-compile.sh
index ed6673e600..c144c34c6a 100755
--- a/front/scripts/i18n-compile.sh
+++ b/front/scripts/i18n-compile.sh
@@ -3,7 +3,7 @@
 cd "$(dirname $0)/.." # change into base directory
 source scripts/utils.sh
 
-locales=$(tail -n +3 src/locales.ts | sed -E 's/^[^[]+\[] =//' | jq -r '.[].code' | grep -v 'en_US')
+locales=$(jq -r '.[].code' src/locales.json | grep -v 'en_US')
 mkdir -p src/translations
 
 for locale in $locales; do
diff --git a/front/scripts/i18n-extract.sh b/front/scripts/i18n-extract.sh
index c3b5b58cb6..209731d638 100755
--- a/front/scripts/i18n-extract.sh
+++ b/front/scripts/i18n-extract.sh
@@ -3,7 +3,7 @@
 cd "$(dirname $0)/.." # change into base directory
 source scripts/utils.sh
 
-locales=$(tail -n +3 src/locales.ts | sed -E 's/^[^[]+\[] =//' | jq -r '.[].code')
+locales=$(jq -r '.[].code' src/locales.json)
 locales_dir="locales"
 sources=$(find src -name '*.vue' -o -name '*.html' 2> /dev/null)
 js_sources=$(find src -name '*.vue' -o -name '*.js')
diff --git a/front/scripts/i18n-populate-contextualized-strings.sh b/front/scripts/i18n-populate-contextualized-strings.sh
deleted file mode 100755
index 9b5598efaf..0000000000
--- a/front/scripts/i18n-populate-contextualized-strings.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/env -S bash -eux
-
-# Typical use:
-# cp -r locales old_locales
-# ./scripts/i18n-extract.sh
-# ./scripts/i18n-populate-contextualized-strings.sh old_locales locales
-# Then review/commit the changes
-
-cd "$(dirname $0)/.." # change into base directory
-
-old_locales_dir=$1
-new_locales_dir=$2
-
-locales=$(tail -n +3 src/locales.ts | sed -E 's/^[^[]+\[] =//' | jq -r '.[].code')
-
-# Generate .po files for each available language.
-echo $locales
-for lang in $locales; do
-    echo "Fixing contexts for $lang…"
-    old_po_file=$old_locales_dir/$lang/LC_MESSAGES/app.po
-    new_po_file=$new_locales_dir/$lang/LC_MESSAGES/app.po
-    python3 ./scripts/contextualize.py $old_po_file $new_po_file --no-dry-run
-done;
diff --git a/front/src/locales.ts b/front/src/locales.json
similarity index 94%
rename from front/src/locales.ts
rename to front/src/locales.json
index 235374b472..7f6cd8e3f0 100644
--- a/front/src/locales.ts
+++ b/front/src/locales.json
@@ -1,7 +1,4 @@
-import type { Locale } from '@/types'
-
-/* eslint-disable */
-export const locales: Locale[] = [
+[
   {
     "code": "ar",
     "label": "العربية"
diff --git a/front/src/modules/locale.ts b/front/src/modules/locale.ts
index fe9edcd4a9..d3e418a6bf 100644
--- a/front/src/modules/locale.ts
+++ b/front/src/modules/locale.ts
@@ -1,6 +1,6 @@
 import Vue from 'vue'
 import GetText from 'vue-gettext'
-import { locales } from '@/locales'
+import locales from '@/locales.json'
 import { usePreferredLanguages } from '@vueuse/core'
 import { watch } from '@vue/composition-api'
 import { AppModule } from '@/types'
diff --git a/front/src/types.ts b/front/src/types.ts
index 871947d47a..bf767bb27f 100644
--- a/front/src/types.ts
+++ b/front/src/types.ts
@@ -27,12 +27,6 @@ export interface ThemeEntry {
   key: Theme
 }
 
-// Locale stuff
-export interface Locale {
-  label: string
-  code: string
-}
-
 // Track stuff
 export interface Artist {
   name: string
-- 
GitLab