diff --git a/.gitignore b/.gitignore index 2b1de550ab5145e593767ab3d571585c14690f83..d5870db7e67b69103605caae09627fb2466f2ab3 100644 --- a/.gitignore +++ b/.gitignore @@ -92,3 +92,4 @@ po/*.po docs/swagger _build front/src/translations.json +front/locales/en_US/LC_MESSAGES/app.po diff --git a/front/locales/app.pot b/front/locales/app.pot index cb7763b9a6fb7af32eddb5e91a685e9216b0caca..55e35a4becf3f8f8ef9e3b11fead293e27bc6290 100644 --- a/front/locales/app.pot +++ b/front/locales/app.pot @@ -8,13 +8,13 @@ msgid "" msgstr "" "Project-Id-Version: front 1.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-07-01 18:34+0200\n" +"POT-Creation-Date: 2018-07-01 22:09+0200\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" @@ -69,6 +69,10 @@ msgstr "" msgid "%{ user } listened to a track" msgstr "" +#: front/src/components/auth/Profile.vue:43 +msgid "%{ username }'s profile" +msgstr "" + #: front/src/components/audio/artist/Card.vue:41 msgid "1 album" msgid_plural "%{ count } albums" @@ -92,7 +96,7 @@ msgstr[1] "" msgid "About Funkwhale" msgstr "" -#: front/src/App.vue:32 src/components/About.vue:8 +#: front/src/App.vue:32 src/components/About.vue:8 src/components/About.vue:55 msgid "About this instance" msgstr "" @@ -117,6 +121,10 @@ msgstr "" msgid "Account settings" msgstr "" +#: front/src/components/auth/Settings.vue:180 +msgid "Account Settings" +msgstr "" + #: front/src/components/manage/users/UsersTable.vue:39 msgid "Account status" msgstr "" @@ -154,12 +162,17 @@ msgstr "" msgid "Add filters to customize your radio" msgstr "" +#: front/src/components/audio/PlayButton.vue:47 +msgid "Add to current queue" +msgstr "" + #: front/src/components/favorites/TrackFavoriteIcon.vue:4 #: front/src/components/favorites/TrackFavoriteIcon.vue:21 msgid "Add to favorites" msgstr "" #: front/src/components/playlists/TrackPlaylistIcon.vue:6 +#: front/src/components/playlists/TrackPlaylistIcon.vue:32 msgid "Add to playlist..." msgstr "" @@ -167,6 +180,10 @@ msgstr "" msgid "Add to queue" msgstr "" +#: front/src/components/playlists/PlaylistModal.vue:115 +msgid "Add to this playlist" +msgstr "" + #: front/src/components/playlists/PlaylistModal.vue:54 msgid "Add track" msgstr "" @@ -179,9 +196,11 @@ msgstr "" msgid "Administration" msgstr "" +#: front/src/components/audio/SearchBar.vue:26 #: front/src/components/federation/LibraryTrackTable.vue:34 +#: front/src/components/library/Album.vue:91 #: front/src/components/manage/library/FilesTable.vue:39 -#: front/src/components/metadata/Search.vue:129 +#: front/src/components/metadata/Search.vue:134 #: front/src/components/audio/track/Table.vue:9 msgid "Album" msgstr "" @@ -249,10 +268,12 @@ msgstr "" msgid "Are you sure you want to log out?" msgstr "" +#: front/src/components/audio/SearchBar.vue:25 #: front/src/components/federation/LibraryTrackTable.vue:33 +#: front/src/components/library/Artist.vue:108 #: front/src/components/manage/library/FilesTable.vue:38 #: front/src/components/manage/library/RequestsTable.vue:49 -#: front/src/components/metadata/Search.vue:125 +#: front/src/components/metadata/Search.vue:130 msgid "Artist" msgstr "" @@ -264,12 +285,19 @@ msgstr "" msgid "Artist page" msgstr "" +#: front/src/components/audio/Search.vue:65 +msgid "Artist, album, track..." +msgstr "" + #: front/src/components/audio/Search.vue:10 src/components/instance/Stats.vue:42 -#: front/src/components/library/Library.vue:7 +#: front/src/components/library/Artists.vue:119 src/components/library/Library.vue:7 msgid "Artists" msgstr "" -#: front/src/components/favorites/List.vue:33 src/components/library/Radios.vue:28 +#: front/src/components/favorites/List.vue:33 src/components/library/Artists.vue:25 +#: front/src/components/library/Radios.vue:28 +#: front/src/components/manage/library/FilesTable.vue:19 +#: front/src/components/manage/library/RequestsTable.vue:19 #: front/src/components/manage/users/UsersTable.vue:19 #: front/src/views/federation/LibraryList.vue:28 src/views/playlists/List.vue:27 msgid "Ascending" @@ -373,6 +401,7 @@ msgid "Change password" msgstr "" #: front/src/views/auth/PasswordResetConfirm.vue:4 +#: front/src/views/auth/PasswordResetConfirm.vue:62 msgid "Change your password" msgstr "" @@ -388,6 +417,10 @@ msgstr "" msgid "Changing your password will also change your Subsonic API password if you have requested one." msgstr "" +#: front/src/components/auth/Settings.vue:65 +msgid "Changing your password will have the following consequences" +msgstr "" + #: front/src/App.vue:4 msgid "Choose your instance" msgstr "" @@ -405,6 +438,10 @@ msgstr "" msgid "Clear playlist" msgstr "" +#: front/src/components/audio/Player.vue:256 +msgid "Clear your queue" +msgstr "" + #: front/src/components/library/import/BatchList.vue:23 msgid "CLI" msgstr "" @@ -443,6 +480,7 @@ msgid "Confirm" msgstr "" #: front/src/views/auth/EmailConfirm.vue:4 src/views/auth/EmailConfirm.vue:20 +#: front/src/views/auth/EmailConfirm.vue:51 msgid "Confirm your email" msgstr "" @@ -450,10 +488,18 @@ msgstr "" msgid "Confirmation code" msgstr "" +#: front/src/components/playlists/Editor.vue:163 +msgid "Copy tracks from current queue to playlist" +msgstr "" + #: front/src/components/Home.vue:88 msgid "Covers, lyrics, our goal is to have them all ;)" msgstr "" +#: front/src/components/auth/Signup.vue:4 +msgid "Create a funkwhale account" +msgstr "" + #: front/src/components/playlists/Form.vue:2 msgid "Create a new playlist" msgstr "" @@ -467,6 +513,10 @@ msgstr "" msgid "Create import" msgstr "" +#: front/src/components/auth/Signup.vue:51 +msgid "Create my account" +msgstr "" + #: front/src/components/playlists/Form.vue:34 msgid "Create playlist" msgstr "" @@ -485,9 +535,9 @@ msgstr "" msgid "Current track" msgstr "" -#: front/src/components/manage/library/FilesTable.vue:184 -#: front/src/components/manage/library/RequestsTable.vue:190 -#: front/src/components/manage/users/InvitationsTable.vue:161 +#: front/src/components/manage/library/FilesTable.vue:189 +#: front/src/components/manage/library/RequestsTable.vue:195 +#: front/src/components/manage/users/InvitationsTable.vue:166 #: front/src/views/playlists/Detail.vue:32 msgid "Delete" msgstr "" @@ -496,6 +546,10 @@ msgstr "" msgid "Delete playlist" msgstr "" +#: front/src/views/radios/Detail.vue:28 +msgid "Delete radio" +msgstr "" + #: front/src/components/federation/LibraryFollowTable.vue:52 #: front/src/components/federation/LibraryFollowTable.vue:63 msgid "Deny" @@ -505,7 +559,10 @@ msgstr "" msgid "Deny access?" msgstr "" -#: front/src/components/favorites/List.vue:34 src/components/library/Radios.vue:31 +#: front/src/components/favorites/List.vue:34 src/components/library/Artists.vue:26 +#: front/src/components/library/Radios.vue:31 +#: front/src/components/manage/library/FilesTable.vue:20 +#: front/src/components/manage/library/RequestsTable.vue:20 #: front/src/components/manage/users/UsersTable.vue:20 #: front/src/views/federation/LibraryList.vue:29 src/views/playlists/List.vue:28 msgid "Descending" @@ -515,6 +572,10 @@ msgstr "" msgid "Detail" msgstr "" +#: front/src/views/admin/users/UsersDetail.vue:146 +msgid "Determine if the user account is active or not. Inactive users cannot login or user the service." +msgstr "" + #: front/src/components/auth/Settings.vue:71 #: front/src/components/auth/SubsonicTokenForm.vue:52 msgid "Disable access" @@ -548,6 +609,10 @@ msgstr "" msgid "Do you want to delete the playlist \"%{ playlist }\"?" msgstr "" +#: front/src/views/radios/Detail.vue:26 +msgid "Do you want to delete the radio \"{{ radio }}\"?" +msgstr "" + #: front/src/components/common/ActionTable.vue:29 msgid "Do you want to launch %{ action } on %{ count } element?" msgid_plural "Do you want to launch %{ action } on %{ count } elements?" @@ -566,6 +631,10 @@ msgstr "" msgid "Download" msgstr "" +#: front/src/components/playlists/Editor.vue:49 +msgid "Drag and drop rows to reorder tracks in the playlist" +msgstr "" + #: front/src/components/library/Track.vue:58 #: front/src/components/manage/library/FilesTable.vue:43 msgid "Duration" @@ -583,6 +652,7 @@ msgstr "" msgid "Edit..." msgstr "" +#: front/src/components/auth/Signup.vue:29 #: front/src/components/manage/users/UsersTable.vue:38 msgid "Email" msgstr "" @@ -603,11 +673,47 @@ msgstr "" msgid "Ensure your music files are properly tagged before uploading them." msgstr "" +#: front/src/components/library/Radios.vue:124 +msgid "Enter a radio name..." +msgstr "" + +#: front/src/components/library/Artists.vue:118 +msgid "Enter an artist name..." +msgstr "" + +#: front/src/views/federation/LibraryList.vue:122 +msgid "Enter an library domain name..." +msgstr "" + +#: front/src/views/playlists/List.vue:104 +msgid "Enter an playlist name..." +msgstr "" + +#: front/src/components/auth/Signup.vue:97 +msgid "Enter your email" +msgstr "" + +#: front/src/components/auth/Signup.vue:95 +msgid "Enter your invitation code (case insensitive)" +msgstr "" + +#: front/src/components/metadata/Search.vue:114 +msgid "Enter your search query..." +msgstr "" + +#: front/src/components/auth/Signup.vue:96 +msgid "Enter your username" +msgstr "" + +#: front/src/components/auth/Login.vue:77 +msgid "Enter your username or email" +msgstr "" + #: front/src/components/auth/SubsonicTokenForm.vue:20 msgid "Error" msgstr "" -#: front/src/views/admin/Settings.vue:82 +#: front/src/views/admin/Settings.vue:87 msgid "Error reporting" msgstr "" @@ -645,11 +751,11 @@ msgstr "" msgid "Errored" msgstr "" -#: front/src/components/playlists/Form.vue:84 +#: front/src/components/playlists/Form.vue:89 msgid "Everyone" msgstr "" -#: front/src/components/playlists/Form.vue:80 +#: front/src/components/playlists/Form.vue:85 msgid "Everyone on this instance" msgstr "" @@ -685,13 +791,21 @@ msgstr "" msgid "Federate with a new instance" msgstr "" +#: front/src/views/federation/LibraryTrackList.vue:21 +msgid "Federated tracks" +msgstr "" + #: front/src/components/Sidebar.vue:86 src/components/library/import/BatchList.vue:25 -#: front/src/components/manage/users/UsersTable.vue:175 -#: front/src/views/admin/Settings.vue:79 src/views/admin/users/UsersDetail.vue:156 -#: front/src/views/federation/LibraryDetail.vue:40 +#: front/src/components/manage/users/UsersTable.vue:180 +#: front/src/views/admin/Settings.vue:84 src/views/admin/users/UsersDetail.vue:161 +#: front/src/views/federation/Base.vue:35 src/views/federation/LibraryDetail.vue:40 msgid "Federation" msgstr "" +#: front/src/views/federation/LibraryDetail.vue:3 +msgid "File mirroring" +msgstr "" + #: front/src/components/library/import/FileUpload.vue:43 msgid "File name" msgstr "" @@ -700,7 +814,7 @@ msgstr "" msgid "File upload" msgstr "" -#: front/src/views/admin/library/Base.vue:5 +#: front/src/views/admin/library/Base.vue:5 src/views/admin/library/FilesList.vue:21 msgid "Files" msgstr "" @@ -733,6 +847,7 @@ msgid "Follow status" msgstr "" #: front/src/views/federation/Base.vue:13 +#: front/src/views/federation/LibraryFollowersList.vue:24 msgid "Followers" msgstr "" @@ -806,6 +921,10 @@ msgstr "" msgid "Grab corresponding metadata" msgstr "" +#: front/src/components/library/Home.vue:66 +msgid "Home" +msgstr "" + #: front/src/components/instance/Stats.vue:36 msgid "Hours of music" msgstr "" @@ -822,7 +941,7 @@ msgstr "" msgid "If the email address provided in the previous step is valid and binded to a user account, you should receive an email with reset instructions in the next couple of minutes." msgstr "" -#: front/src/components/federation/LibraryTrackTable.vue:159 +#: front/src/components/federation/LibraryTrackTable.vue:164 #: front/src/components/library/Library.vue:17 msgid "Import" msgstr "" @@ -841,10 +960,18 @@ msgstr[1] "" msgid "Import batch" msgstr "" +#: front/src/components/library/import/BatchDetail.vue:185 +msgid "Import Batch #%{ id }" +msgstr "" + #: front/src/components/library/Library.vue:20 msgid "Import batches" msgstr "" +#: front/src/components/library/import/BatchList.vue:117 +msgid "Import Batches" +msgstr "" + #: front/src/components/manage/library/FilesTable.vue:40 #: front/src/components/manage/library/RequestsTable.vue:53 msgid "Import date" @@ -858,6 +985,10 @@ msgstr "" msgid "Import music" msgstr "" +#: front/src/components/library/import/Main.vue:267 +msgid "Import Music" +msgstr "" + #: front/src/components/Home.vue:71 msgid "Import music from various platforms, such as YouTube or SoundCloud" msgstr "" @@ -869,6 +1000,7 @@ msgstr "" #: front/src/views/admin/library/Base.vue:9 #: front/src/views/admin/library/RequestsList.vue:3 +#: front/src/views/admin/library/RequestsList.vue:21 msgid "Import requests" msgstr "" @@ -899,7 +1031,7 @@ msgstr "" msgid "Imported URL" msgstr "" -#: front/src/views/admin/Settings.vue:77 +#: front/src/views/admin/Settings.vue:82 msgid "Imports" msgstr "" @@ -915,17 +1047,39 @@ msgstr "" msgid "Input a MusicBrainz ID manually:" msgstr "" +#: front/src/views/auth/PasswordReset.vue:53 +msgid "Input the email address binded to your account" +msgstr "" + #: front/src/components/playlists/Editor.vue:31 msgid "Insert from queue (%{ count } track)" msgid_plural "Insert from queue (%{ count } tracks)" msgstr[0] "" msgstr[1] "" -#: front/src/views/admin/Settings.vue:75 +#: front/src/views/admin/Settings.vue:80 msgid "Instance information" msgstr "" +#: front/src/views/admin/Settings.vue:75 +msgid "Instance settings" +msgstr "" + +#: front/src/views/instance/Timeline.vue:57 +msgid "Instance Timeline" +msgstr "" + +#: front/src/components/auth/Signup.vue:42 +#: front/src/components/manage/users/InvitationForm.vue:11 +msgid "Invitation code" +msgstr "" + +#: front/src/components/auth/Signup.vue:43 +msgid "Invitation code (optional)" +msgstr "" + #: front/src/views/admin/users/Base.vue:8 src/views/admin/users/InvitationsList.vue:3 +#: front/src/views/admin/users/InvitationsList.vue:24 msgid "Invitations" msgstr "" @@ -979,18 +1133,24 @@ msgstr "" msgid "Learn more about this instance" msgstr "" +#: front/src/components/manage/users/InvitationForm.vue:58 +msgid "Leave empty for a random code" +msgstr "" + #: front/src/components/requests/Form.vue:10 msgid "Leave this field empty if you're requesting the whole discography." msgstr "" -#: front/src/views/federation/Base.vue:5 +#: front/src/views/federation/Base.vue:5 src/views/federation/LibraryList.vue:123 msgid "Libraries" msgstr "" #: front/src/components/Sidebar.vue:69 #: front/src/components/federation/LibraryTrackTable.vue:36 -#: front/src/components/manage/users/UsersTable.vue:171 -#: front/src/views/admin/users/UsersDetail.vue:152 +#: front/src/components/instance/Stats.vue:30 +#: front/src/components/manage/users/UsersTable.vue:176 +#: front/src/views/admin/users/UsersDetail.vue:157 +#: front/src/views/federation/LibraryDetail.vue:194 msgid "Library" msgstr "" @@ -1006,6 +1166,10 @@ msgstr "" msgid "Library size" msgstr "" +#: front/src/components/federation/LibraryForm.vue:96 +msgid "library@demo.funkwhale.audio" +msgstr "" + #: front/src/App.vue:29 msgid "Links" msgstr "" @@ -1018,10 +1182,18 @@ msgstr "" msgid "Loading your favorites..." msgstr "" +#: front/src/components/auth/Login.vue:78 +msgid "Log In" +msgstr "" + #: front/src/components/auth/Login.vue:4 msgid "Log in to your Funkwhale account" msgstr "" +#: front/src/components/auth/Logout.vue:20 +msgid "Log Out" +msgstr "" + #: front/src/components/Sidebar.vue:38 msgid "Logged in as %{ username }" msgstr "" @@ -1034,23 +1206,43 @@ msgstr "" msgid "Logout" msgstr "" +#: front/src/components/audio/Player.vue:252 +msgid "Looping disabled. Click to switch to single-track looping." +msgstr "" + +#: front/src/components/audio/Player.vue:253 +msgid "Looping on a single track. Click to switch to whole queue looping." +msgstr "" + +#: front/src/components/audio/Player.vue:254 +msgid "Looping on whole queue. Click to disable looping." +msgstr "" + #: front/src/components/library/Track.vue:94 msgid "Lyrics" msgstr "" +#: front/src/views/admin/library/Base.vue:25 +msgid "Manage library" +msgstr "" + #: front/src/components/playlists/PlaylistModal.vue:3 msgid "Manage playlists" msgstr "" +#: front/src/views/admin/users/Base.vue:20 +msgid "Manage users" +msgstr "" + #: front/src/views/playlists/List.vue:8 msgid "Manage your playlists" msgstr "" -#: front/src/components/manage/library/RequestsTable.vue:192 +#: front/src/components/manage/library/RequestsTable.vue:197 msgid "Mark as closed" msgstr "" -#: front/src/components/manage/library/RequestsTable.vue:191 +#: front/src/components/manage/library/RequestsTable.vue:196 msgid "Mark as imported" msgstr "" @@ -1079,10 +1271,22 @@ msgstr "" msgid "Music requests" msgstr "" +#: front/src/components/audio/Player.vue:251 +msgid "Mute" +msgstr "" + #: front/src/components/Sidebar.vue:34 msgid "My account" msgstr "" +#: front/src/components/playlists/Form.vue:74 +msgid "My awesome playlist" +msgstr "" + +#: front/src/components/library/radios/Builder.vue:206 +msgid "My awesome radio" +msgstr "" + #: front/src/components/library/Track.vue:64 src/components/library/Track.vue:75 #: front/src/components/library/Track.vue:86 #: front/src/components/manage/library/FilesTable.vue:63 @@ -1114,6 +1318,10 @@ msgstr "" msgid "Next step" msgstr "" +#: front/src/components/audio/Player.vue:249 +msgid "Next track" +msgstr "" + #: front/src/components/Sidebar.vue:124 msgid "No" msgstr "" @@ -1126,7 +1334,7 @@ msgstr "" msgid "No lyrics available for this track." msgstr "" -#: front/src/components/playlists/Form.vue:76 +#: front/src/components/playlists/Form.vue:81 msgid "Nobody except me" msgstr "" @@ -1168,9 +1376,9 @@ msgstr "" #: front/src/components/library/Radios.vue:17 #: front/src/components/manage/library/FilesTable.vue:9 #: front/src/components/manage/library/RequestsTable.vue:9 +#: front/src/components/manage/users/InvitationsTable.vue:9 #: front/src/components/manage/users/UsersTable.vue:9 #: front/src/views/federation/LibraryList.vue:18 src/views/playlists/List.vue:17 -#: front/src/components/manage/users/InvitationsTable.vue:10 msgid "Ordering" msgstr "" @@ -1187,11 +1395,15 @@ msgstr "" msgid "Owner" msgstr "" +#: front/src/components/PageNotFound.vue:33 +msgid "Page Not Found" +msgstr "" + #: front/src/components/PageNotFound.vue:7 msgid "Page not found!" msgstr "" -#: front/src/components/auth/Login.vue:32 +#: front/src/components/auth/Login.vue:32 src/components/auth/Signup.vue:38 msgid "Password" msgstr "" @@ -1203,6 +1415,10 @@ msgstr "" msgid "Password updated successfully" msgstr "" +#: front/src/components/audio/Player.vue:248 +msgid "Pause track" +msgstr "" + #: front/src/components/federation/LibraryFollowTable.vue:46 #: front/src/components/library/import/BatchDetail.vue:33 #: front/src/components/library/import/BatchDetail.vue:69 @@ -1218,7 +1434,15 @@ msgstr "" msgid "Pending approval" msgstr "" -#: front/src/components/requests/Form.vue:26 +#: front/src/components/Sidebar.vue:216 +msgid "Pending follow requests" +msgstr "" + +#: front/src/components/Sidebar.vue:215 src/views/admin/library/Base.vue:26 +msgid "Pending import requests" +msgstr "" + +#: front/src/components/requests/Form.vue:26 src/views/federation/Base.vue:36 msgid "Pending requests" msgstr "" @@ -1233,7 +1457,7 @@ msgstr "" #: front/src/components/audio/album/Card.vue:50 #: front/src/components/audio/artist/Card.vue:44 src/components/library/Album.vue:28 -#: front/src/views/playlists/Detail.vue:22 +#: front/src/components/playlists/Card.vue:26 src/views/playlists/Detail.vue:22 msgid "Play all" msgstr "" @@ -1241,7 +1465,7 @@ msgstr "" msgid "Play all albums" msgstr "" -#: front/src/components/audio/PlayButton.vue:47 +#: front/src/components/audio/PlayButton.vue:52 msgid "Play immediatly" msgstr "" @@ -1253,6 +1477,14 @@ msgstr "" msgid "Play now" msgstr "" +#: front/src/components/audio/Player.vue:247 +msgid "Play track" +msgstr "" + +#: front/src/views/playlists/Detail.vue:89 +msgid "Playlist" +msgstr "" + #: front/src/views/playlists/Detail.vue:11 msgid "Playlist containing %{ count } track, by %{ username }" msgid_plural "Playlist containing %{ count } tracks, by %{ username }" @@ -1280,7 +1512,7 @@ msgid "Playlist visibility" msgstr "" #: front/src/components/Sidebar.vue:55 src/components/library/Library.vue:13 -#: front/src/views/admin/Settings.vue:78 +#: front/src/views/admin/Settings.vue:83 src/views/playlists/List.vue:103 msgid "Playlists" msgstr "" @@ -1296,6 +1528,10 @@ msgstr "" msgid "Previous step" msgstr "" +#: front/src/components/audio/Player.vue:246 +msgid "Previous track" +msgstr "" + #: front/src/views/auth/EmailConfirm.vue:26 #: front/src/views/auth/PasswordResetConfirm.vue:31 msgid "Proceed to login" @@ -1313,15 +1549,24 @@ msgstr "" msgid "Queue" msgstr "" -#: front/src/components/audio/Player.vue:183 +#: front/src/components/audio/Player.vue:189 msgid "Queue shuffled!" msgstr "" +#: front/src/views/radios/Detail.vue:80 +msgid "Radio" +msgstr "" + +#: front/src/components/library/radios/Builder.vue:205 +msgid "Radio Builder" +msgstr "" + #: front/src/components/library/radios/Builder.vue:11 msgid "Radio name" msgstr "" #: front/src/components/library/Home.vue:18 src/components/library/Library.vue:10 +#: front/src/components/library/Radios.vue:125 msgid "Radios" msgstr "" @@ -1375,7 +1620,20 @@ msgstr "" msgid "Request a password" msgstr "" +#: front/src/components/requests/Form.vue:20 +msgid "Request submitted!" +msgstr "" + +#: front/src/components/library/import/BatchDetail.vue:49 +msgid "Rerun errored jobs" +msgstr "" + +#: front/src/components/library/import/BatchDetail.vue:187 +msgid "Rerun job" +msgstr "" + #: front/src/components/auth/Login.vue:34 src/views/auth/PasswordReset.vue:4 +#: front/src/views/auth/PasswordReset.vue:52 msgid "Reset your password" msgstr "" @@ -1414,6 +1672,39 @@ msgstr "" msgid "Search an entity you want to import:" msgstr "" +#: front/src/components/manage/library/RequestsTable.vue:180 +msgid "Search by artist, username, comment..." +msgstr "" + +#: front/src/components/library/import/BatchDetail.vue:188 +msgid "Search by source..." +msgstr "" + +#: front/src/components/library/import/BatchList.vue:116 +msgid "Search by submitter, source..." +msgstr "" + +#: front/src/components/federation/LibraryTrackTable.vue:150 +#: front/src/components/manage/library/FilesTable.vue:175 +msgid "Search by title, artist, domain..." +msgstr "" + +#: front/src/components/federation/LibraryFollowTable.vue:140 +msgid "Search by username, domain..." +msgstr "" + +#: front/src/components/manage/users/InvitationsTable.vue:152 +msgid "Search by username, email, code..." +msgstr "" + +#: front/src/components/manage/users/UsersTable.vue:162 +msgid "Search by username, email, name..." +msgstr "" + +#: front/src/components/audio/SearchBar.vue:20 +msgid "Search for artists, albums, tracks..." +msgstr "" + #: front/src/components/audio/Search.vue:2 msgid "Search for some music" msgstr "" @@ -1461,8 +1752,8 @@ msgstr "" msgid "Send a follow request" msgstr "" -#: front/src/components/Sidebar.vue:96 src/components/manage/users/UsersTable.vue:179 -#: front/src/views/admin/users/UsersDetail.vue:160 +#: front/src/components/Sidebar.vue:96 src/components/manage/users/UsersTable.vue:184 +#: front/src/views/admin/users/UsersDetail.vue:165 msgid "Settings" msgstr "" @@ -1494,6 +1785,10 @@ msgid_plural "Show %{ count } more tracks" msgstr[0] "" msgstr[1] "" +#: front/src/components/forms/PasswordInput.vue:25 +msgid "Show/hide password" +msgstr "" + #: front/src/components/federation/LibraryFollowTable.vue:97 #: front/src/components/federation/LibraryTrackTable.vue:83 #: front/src/components/library/import/BatchDetail.vue:128 @@ -1505,6 +1800,14 @@ msgstr[1] "" msgid "Showing results %{ start }-%{ end } on %{ total }" msgstr "" +#: front/src/components/audio/Player.vue:255 +msgid "Shuffle your queue" +msgstr "" + +#: front/src/components/auth/Signup.vue:94 +msgid "Sign Up" +msgstr "" + #: front/src/components/manage/users/UsersTable.vue:40 #: front/src/views/admin/users/UsersDetail.vue:37 msgid "Sign-up" @@ -1560,7 +1863,7 @@ msgstr "" msgid "Start Upload" msgstr "" -#: front/src/views/admin/Settings.vue:81 +#: front/src/views/admin/Settings.vue:86 msgid "Statistics" msgstr "" @@ -1570,10 +1873,11 @@ msgstr "" #: front/src/components/library/import/BatchList.vue:11 #: front/src/components/library/import/BatchList.vue:37 #: front/src/components/library/import/FileUpload.vue:45 +#: front/src/components/manage/library/RequestsTable.vue:24 #: front/src/components/manage/library/RequestsTable.vue:48 +#: front/src/components/manage/users/InvitationsTable.vue:17 #: front/src/components/manage/users/InvitationsTable.vue:39 #: front/src/components/manage/users/UsersTable.vue:43 -#: front/src/components/manage/users/InvitationsTable.vue:18 msgid "Status" msgstr "" @@ -1602,7 +1906,7 @@ msgstr "" msgid "Submitted by" msgstr "" -#: front/src/views/admin/Settings.vue:80 +#: front/src/views/admin/Settings.vue:85 msgid "Subsonic" msgstr "" @@ -1624,6 +1928,10 @@ msgstr "" msgid "That's simple: we loved Grooveshark and we want to build something even better." msgstr "" +#: front/src/components/requests/Form.vue:73 +msgid "The Beatles, Mickael Jackson…" +msgstr "" + #: front/src/App.vue:56 msgid "The funkwhale logo was kindly designed and provided by Francis Gading." msgstr "" @@ -1636,15 +1944,27 @@ msgstr "" msgid "The Subsonic API is not available on this Funkwhale instance." msgstr "" +#: front/src/components/requests/Form.vue:74 +msgid "The White Album, Thriller…" +msgstr "" + #: front/src/components/library/import/Main.vue:149 msgid "This import will be associated with the music request below. After the import is finished, the request will be marked as fulfilled." msgstr "" +#: front/src/views/federation/LibraryDetail.vue:195 +msgid "This indicate if the remote library granted you access" +msgstr "" + #: front/src/components/auth/Profile.vue:15 msgid "This is you!" msgstr "" -#: front/src/components/audio/PlayButton.vue:50 +#: front/src/components/common/ActionTable.vue:37 +msgid "This may affect a lot of elements, please double check this is really what you want." +msgstr "" + +#: front/src/components/audio/PlayButton.vue:55 msgid "This track is not imported and cannot be played" msgstr "" @@ -1652,6 +1972,10 @@ msgstr "" msgid "This will completely delete this playlist and cannot be undone." msgstr "" +#: front/src/views/radios/Detail.vue:27 +msgid "This will completely delete this radio and cannot be undone." +msgstr "" + #: front/src/components/auth/SubsonicTokenForm.vue:51 msgid "This will completely disable access to the Subsonic API using from account." msgstr "" @@ -1674,8 +1998,9 @@ msgstr "" msgid "Title" msgstr "" +#: front/src/components/audio/SearchBar.vue:27 src/components/library/Track.vue:174 #: front/src/components/library/import/BatchDetail.vue:84 -#: front/src/components/metadata/Search.vue:133 +#: front/src/components/metadata/Search.vue:138 msgid "Track" msgstr "" @@ -1693,7 +2018,8 @@ msgstr "" #: front/src/components/library/Album.vue:43 #: front/src/components/playlists/PlaylistModal.vue:33 -#: front/src/views/federation/Base.vue:8 +#: front/src/views/federation/Base.vue:8 src/views/playlists/Detail.vue:49 +#: front/src/views/radios/Detail.vue:34 msgid "Tracks" msgstr "" @@ -1729,6 +2055,10 @@ msgstr "" msgid "Unlimited music" msgstr "" +#: front/src/components/audio/Player.vue:250 +msgid "Unmute" +msgstr "" + #: front/src/components/playlists/Form.vue:33 msgid "Update playlist" msgstr "" @@ -1741,8 +2071,8 @@ msgstr "" msgid "Update your password" msgstr "" -#: front/src/components/manage/users/UsersTable.vue:167 -#: front/src/views/admin/users/UsersDetail.vue:148 +#: front/src/components/manage/users/UsersTable.vue:172 +#: front/src/views/admin/users/UsersDetail.vue:153 msgid "Upload" msgstr "" @@ -1758,6 +2088,14 @@ msgstr "" msgid "Use another instance" msgstr "" +#: front/src/components/requests/Form.vue:75 +msgid "Use this comment box to add details to your request if needed" +msgstr "" + +#: front/src/views/federation/LibraryDetail.vue:196 +msgid "Use this flag to enable/disable federation with this library" +msgstr "" + #: front/src/views/auth/PasswordReset.vue:12 msgid "Use this form to request a password reset. We will send an email to the given address with instructions to reset your password." msgstr "" @@ -1778,6 +2116,7 @@ msgstr "" msgid "User activity" msgstr "" +#: front/src/components/auth/Signup.vue:19 #: front/src/components/manage/users/UsersTable.vue:37 msgid "Username" msgstr "" @@ -1790,13 +2129,17 @@ msgstr "" msgid "users" msgstr "" -#: front/src/components/Sidebar.vue:102 src/views/admin/Settings.vue:76 +#: front/src/components/Sidebar.vue:102 src/views/admin/Settings.vue:81 #: front/src/views/admin/users/Base.vue:5 src/views/admin/users/UsersList.vue:3 +#: front/src/views/admin/users/UsersList.vue:21 msgid "Users" msgstr "" #: front/src/components/library/Album.vue:37 src/components/library/Artist.vue:35 #: front/src/components/library/Track.vue:44 +#: front/src/components/library/import/ArtistImport.vue:131 +#: front/src/components/metadata/ArtistCard.vue:49 +#: front/src/components/metadata/ReleaseCard.vue:53 msgid "View on MusicBrainz" msgstr "" @@ -1808,6 +2151,10 @@ msgstr "" msgid "We cannot create the playlist" msgstr "" +#: front/src/components/auth/Signup.vue:13 +msgid "We cannot create your account" +msgstr "" + #: front/src/components/auth/Login.vue:7 msgid "We cannot log you in" msgstr "" @@ -1836,10 +2183,22 @@ msgstr "" msgid "We've received your request, you'll get some groove soon ;)" msgstr "" +#: front/src/components/Home.vue:152 +msgid "Welcome" +msgstr "" + #: front/src/components/Home.vue:5 msgid "Welcome on Funkwhale" msgstr "" +#: front/src/components/library/import/Main.vue:114 +msgid "What is metadata?" +msgstr "" + +#: front/src/views/federation/LibraryDetail.vue:197 +msgid "When enabled, auto importing will automatically import new tracks published in this library" +msgstr "" + #: front/src/components/Home.vue:24 msgid "Why funkwhale?" msgstr "" @@ -1896,6 +2255,10 @@ msgstr "" msgid "Your email address was confirmed, you can now use the service without limitations." msgstr "" +#: front/src/components/favorites/List.vue:109 +msgid "Your Favorites" +msgstr "" + #: front/src/components/Home.vue:117 msgid "Your music, your way" msgstr "" @@ -1908,23 +2271,11 @@ msgstr "" 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/components/auth/Signup.vue:5 -msgid "Create a funkwhale account" -msgstr "" - -#: front/src/components/auth/Signup.vue:43 -msgid "Invitation code" -msgstr "" - #: front/src/components/auth/Login.vue:10 msgid "Please double-check your username/password couple is correct" msgstr "" -#: front/src/components/auth/Settings.vue:66 -msgid "Changing your password will have the following consequences" -msgstr "" - -#: front/src/components/audio/PlayButton.vue:145 +#: front/src/components/audio/PlayButton.vue:150 msgid "%{ count } track was added to your queue" msgid_plural "%{ count } tracks were added to your queue" msgstr[0] "" @@ -1937,7 +2288,3 @@ msgstr "" #: front/src/components/manage/users/UsersTable.vue:55 msgid "Inactive" msgstr "" - -#: front/src/components/common/ActionTable.vue:38 -msgid "This may affect a lot of elements, please double check this is really what you want." -msgstr "" diff --git a/front/locales/en_US/LC_MESSAGES/app.po b/front/locales/en_US/LC_MESSAGES/app.po deleted file mode 100644 index 224b5be8e3e5fb5e89cbd4ecc720af4ceedbbec8..0000000000000000000000000000000000000000 --- a/front/locales/en_US/LC_MESSAGES/app.po +++ /dev/null @@ -1,1970 +0,0 @@ -# English translations for front package. -# Copyright (C) 2018 THE front'S COPYRIGHT HOLDER -# This file is distributed under the same license as the front package. -# Automatically generated, 2018. -# -msgid "" -msgstr "" -"Project-Id-Version: front 1.0.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-07-01 18:34+0200\n" -"PO-Revision-Date: 2018-06-30 11:34+0200\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: en_US\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: front/src/components/playlists/PlaylistModal.vue:9 -msgid "\"%{ title }\", by %{ artist }" -msgstr "" - -#: front/src/components/Sidebar.vue:24 -msgid "(%{ index } of %{ length })" -msgstr "" - -#: front/src/components/Sidebar.vue:22 -msgid "(empty)" -msgstr "" - -#: front/src/components/common/ActionTable.vue:43 -#: front/src/components/common/ActionTable.vue:51 -msgid "%{ count } on %{ total } selected" -msgid_plural "%{ count } on %{ total } selected" -msgstr[0] "" -msgstr[1] "" - -#: front/src/components/Sidebar.vue:115 -#: src/views/federation/LibraryDetail.vue:87 -msgid "%{ count } track" -msgid_plural "%{ count } tracks" -msgstr[0] "" -msgstr[1] "" - -#: front/src/components/library/Artist.vue:13 -msgid "%{ count } track in %{ albumsCount } albums" -msgid_plural "%{ count } tracks in %{ albumsCount } albums" -msgstr[0] "" -msgstr[1] "" - -#: front/src/components/library/radios/Builder.vue:66 -msgid "%{ count } track matching combined filters" -msgid_plural "%{ count } tracks matching combined filters" -msgstr[0] "" -msgstr[1] "" - -#: front/src/components/playlists/Card.vue:19 -msgid "%{ count} track" -msgid_plural "%{ count } tracks" -msgstr[0] "" -msgstr[1] "" - -#: front/src/components/activity/Like.vue:7 -msgid "%{ user } favorited a track" -msgstr "" - -#: front/src/components/activity/Listen.vue:7 -msgid "%{ user } listened to a track" -msgstr "" - -#: front/src/components/audio/artist/Card.vue:41 -msgid "1 album" -msgid_plural "%{ count } albums" -msgstr[0] "" -msgstr[1] "" - -#: front/src/components/favorites/List.vue:10 -msgid "1 favorite" -msgid_plural "%{ count } favorites" -msgstr[0] "" -msgstr[1] "" - -#: front/src/components/audio/album/Card.vue:54 -#: front/src/components/federation/LibraryCard.vue:25 -msgid "1 track" -msgid_plural "%{ count } tracks" -msgstr[0] "" -msgstr[1] "" - -#: front/src/App.vue:51 -msgid "About Funkwhale" -msgstr "" - -#: front/src/App.vue:32 src/components/About.vue:8 -msgid "About this instance" -msgstr "" - -#: front/src/components/manage/library/RequestsTable.vue:28 -#: front/src/components/manage/library/RequestsTable.vue:62 -msgid "Accepted" -msgstr "" - -#: front/src/components/auth/SubsonicTokenForm.vue:111 -msgid "Access disabled" -msgstr "" - -#: front/src/components/Home.vue:109 -msgid "Access your music from a clean interface that focus on what really matters" -msgstr "" - -#: front/src/views/admin/users/UsersDetail.vue:54 -msgid "Account active" -msgstr "" - -#: front/src/components/auth/Settings.vue:5 -msgid "Account settings" -msgstr "" - -#: front/src/components/manage/users/UsersTable.vue:39 -msgid "Account status" -msgstr "" - -#: front/src/views/auth/PasswordReset.vue:14 -msgid "Account's email" -msgstr "" - -#: front/src/components/common/ActionTable.vue:82 -msgid "Action %{ action } was launched successfully on %{ count } element" -msgid_plural "Action %{ action } was launched successfully on %{ count } elements" -msgstr[0] "" -msgstr[1] "" - -#: front/src/components/common/ActionTable.vue:8 -#: front/src/components/library/radios/Builder.vue:50 -#: front/src/components/manage/library/RequestsTable.vue:54 -#: front/src/components/federation/LibraryFollowTable.vue:25 -msgid "Actions" -msgstr "" - -#: front/src/components/Sidebar.vue:59 -msgid "Activity" -msgstr "" - -#: front/src/views/federation/LibraryList.vue:8 -msgid "Add a new library" -msgstr "" - -#: front/src/components/library/radios/Builder.vue:36 -msgid "Add filter" -msgstr "" - -#: front/src/components/library/radios/Builder.vue:26 -msgid "Add filters to customize your radio" -msgstr "" - -#: front/src/components/favorites/TrackFavoriteIcon.vue:4 -#: front/src/components/favorites/TrackFavoriteIcon.vue:21 -msgid "Add to favorites" -msgstr "" - -#: front/src/components/playlists/TrackPlaylistIcon.vue:6 -msgid "Add to playlist..." -msgstr "" - -#: front/src/components/audio/PlayButton.vue:13 -msgid "Add to queue" -msgstr "" - -#: front/src/components/playlists/PlaylistModal.vue:54 -msgid "Add track" -msgstr "" - -#: front/src/components/manage/users/UsersTable.vue:69 -msgid "Admin" -msgstr "" - -#: front/src/components/Sidebar.vue:63 -msgid "Administration" -msgstr "" - -#: front/src/components/federation/LibraryTrackTable.vue:34 -#: front/src/components/manage/library/FilesTable.vue:39 -#: front/src/components/metadata/Search.vue:129 -#: front/src/components/audio/track/Table.vue:9 -msgid "Album" -msgstr "" - -#: front/src/components/library/import/ReleaseImport.vue:3 -msgid "Album %{ title } (%{ count } track) by %{ artist }" -msgid_plural "Album %{ title } (%{ count } tracks) by %{ artist }" -msgstr[0] "" -msgstr[1] "" - -#: front/src/components/library/Album.vue:12 -msgid "Album containing %{ count } track, by %{ artist }" -msgid_plural "Album containing %{ count } tracks, by %{ artist }" -msgstr[0] "" -msgstr[1] "" - -#: front/src/components/library/Track.vue:20 -msgid "Album page" -msgstr "" - -#: front/src/components/audio/Search.vue:19 -#: src/components/instance/Stats.vue:48 -#: front/src/components/manage/library/RequestsTable.vue:50 -#: front/src/components/requests/Form.vue:9 -msgid "Albums" -msgstr "" - -#: front/src/components/library/Artist.vue:44 -msgid "Albums by this artist" -msgstr "" - -#: front/src/components/manage/library/RequestsTable.vue:26 -#: front/src/components/manage/users/InvitationsTable.vue:19 -msgid "All" -msgstr "" - -#: front/src/components/playlists/Editor.vue:13 -msgid "An error occured while saving your changes" -msgstr "" - -#: front/src/components/federation/LibraryTrackTable.vue:11 -#: front/src/components/library/import/BatchDetail.vue:68 -#: front/src/components/library/import/BatchList.vue:13 -#: front/src/components/library/import/BatchList.vue:22 -msgid "Any" -msgstr "" - -#: front/src/components/library/import/BatchList.vue:24 -msgid "API" -msgstr "" - -#: front/src/components/federation/LibraryFollowTable.vue:68 -#: front/src/components/federation/LibraryFollowTable.vue:78 -msgid "Approve" -msgstr "" - -#: front/src/components/federation/LibraryFollowTable.vue:70 -msgid "Approve access?" -msgstr "" - -#: front/src/components/federation/LibraryFollowTable.vue:38 -msgid "Approved" -msgstr "" - -#: front/src/components/auth/Logout.vue:5 -msgid "Are you sure you want to log out?" -msgstr "" - -#: front/src/components/federation/LibraryTrackTable.vue:33 -#: front/src/components/manage/library/FilesTable.vue:38 -#: front/src/components/manage/library/RequestsTable.vue:49 -#: front/src/components/metadata/Search.vue:125 -msgid "Artist" -msgstr "" - -#: front/src/components/requests/Form.vue:5 -msgid "Artist name" -msgstr "" - -#: front/src/components/library/Album.vue:22 -#: src/components/library/Track.vue:23 -msgid "Artist page" -msgstr "" - -#: front/src/components/audio/Search.vue:10 -#: src/components/instance/Stats.vue:42 -#: front/src/components/library/Library.vue:7 -msgid "Artists" -msgstr "" - -#: front/src/components/favorites/List.vue:33 -#: src/components/library/Radios.vue:28 -#: front/src/components/manage/users/UsersTable.vue:19 -#: front/src/views/federation/LibraryList.vue:28 -#: src/views/playlists/List.vue:27 -msgid "Ascending" -msgstr "" - -#: front/src/views/auth/PasswordReset.vue:27 -msgid "Ask for a password reset" -msgstr "" - -#: front/src/views/federation/LibraryDetail.vue:56 -msgid "Auto importing" -msgstr "" - -#: front/src/components/playlists/PlaylistModal.vue:26 -msgid "Available playlists" -msgstr "" - -#: front/src/views/auth/EmailConfirm.vue:17 src/views/auth/PasswordReset.vue:24 -#: front/src/views/auth/PasswordResetConfirm.vue:18 -msgid "Back to login" -msgstr "" - -#: front/src/views/federation/LibraryFollowersList.vue:5 -msgid "Be careful when accepting follow requests, as it means the follower will have access to your entire library." -msgstr "" - -#: front/src/components/library/Track.vue:80 -#: front/src/components/manage/library/FilesTable.vue:42 -msgid "Bitrate" -msgstr "" - -#: front/src/components/Sidebar.vue:18 src/components/library/Library.vue:4 -msgid "Browse" -msgstr "" - -#: front/src/components/Sidebar.vue:49 -msgid "Browse library" -msgstr "" - -#: front/src/components/library/Artists.vue:4 -msgid "Browsing artists" -msgstr "" - -#: front/src/views/federation/LibraryTrackList.vue:3 -msgid "Browsing federated tracks" -msgstr "" - -#: front/src/views/federation/LibraryFollowersList.vue:3 -msgid "Browsing followers" -msgstr "" - -#: front/src/views/federation/LibraryList.vue:3 -msgid "Browsing libraries" -msgstr "" - -#: front/src/views/playlists/List.vue:3 -msgid "Browsing playlists" -msgstr "" - -#: front/src/components/library/Radios.vue:4 -msgid "Browsing radios" -msgstr "" - -#: front/src/components/library/radios/Builder.vue:5 -msgid "Builder" -msgstr "" - -#: front/src/components/audio/album/Card.vue:13 -msgid "By %{ artist }" -msgstr "" - -#: front/src/components/federation/LibraryFollowTable.vue:57 -msgid "By confirming, %{ username } will be denied access to your library." -msgstr "" - -#: front/src/components/federation/LibraryFollowTable.vue:73 -msgid "By confirming, %{ username } will be granted access to your library." -msgstr "" - -#: front/src/components/audio/track/Table.vue:42 -#: front/src/components/common/DangerousButton.vue:17 -#: front/src/components/library/radios/Filter.vue:53 -#: front/src/components/playlists/PlaylistModal.vue:63 -msgid "Cancel" -msgstr "" - -#: front/src/components/library/radios/Builder.vue:49 -msgid "Candidates" -msgstr "" - -#: front/src/components/auth/Settings.vue:43 -msgid "Cannot change your password" -msgstr "" - -#: front/src/components/auth/Settings.vue:34 -msgid "Change my password" -msgstr "" - -#: front/src/components/auth/Settings.vue:62 -msgid "Change password" -msgstr "" - -#: front/src/views/auth/PasswordResetConfirm.vue:4 -msgid "Change your password" -msgstr "" - -#: front/src/components/auth/Settings.vue:63 -msgid "Change your password?" -msgstr "" - -#: front/src/components/playlists/Editor.vue:21 -msgid "Changes synced with server" -msgstr "" - -#: front/src/components/auth/Settings.vue:37 -msgid "Changing your password will also change your Subsonic API password if you have requested one." -msgstr "" - -#: front/src/App.vue:4 -msgid "Choose your instance" -msgstr "" - -#: front/src/components/Home.vue:64 -msgid "Clean library" -msgstr "" - -#: front/src/components/manage/users/InvitationForm.vue:37 -msgid "Clear" -msgstr "" - -#: front/src/components/playlists/Editor.vue:40 -#: front/src/components/playlists/Editor.vue:45 -msgid "Clear playlist" -msgstr "" - -#: front/src/components/library/import/BatchList.vue:23 -msgid "CLI" -msgstr "" - -#: front/src/components/Home.vue:44 -msgid "Click once, listen for hours using built-in radios" -msgstr "" - -#: front/src/components/manage/library/RequestsTable.vue:30 -#: front/src/components/manage/library/RequestsTable.vue:64 -msgid "Closed" -msgstr "" - -#: front/src/components/manage/users/InvitationForm.vue:26 -#: front/src/components/manage/users/InvitationsTable.vue:42 -msgid "Code" -msgstr "" - -#: front/src/components/audio/album/Card.vue:43 -#: front/src/components/audio/artist/Card.vue:33 -#: front/src/components/discussion/Comment.vue:20 -msgid "Collapse" -msgstr "" - -#: front/src/components/manage/library/RequestsTable.vue:51 -#: front/src/components/requests/Form.vue:14 -msgid "Comment" -msgstr "" - -#: front/src/components/library/radios/Builder.vue:48 -msgid "Config" -msgstr "" - -#: front/src/components/common/DangerousButton.vue:21 -msgid "Confirm" -msgstr "" - -#: front/src/views/auth/EmailConfirm.vue:4 src/views/auth/EmailConfirm.vue:20 -msgid "Confirm your email" -msgstr "" - -#: front/src/views/auth/EmailConfirm.vue:13 -msgid "Confirmation code" -msgstr "" - -#: front/src/components/Home.vue:88 -msgid "Covers, lyrics, our goal is to have them all ;)" -msgstr "" - -#: front/src/components/playlists/Form.vue:2 -msgid "Create a new playlist" -msgstr "" - -#: front/src/components/auth/Login.vue:17 -msgid "Create an account" -msgstr "" - -#: front/src/components/requests/Card.vue:25 -#: front/src/components/manage/library/RequestsTable.vue:89 -msgid "Create import" -msgstr "" - -#: front/src/components/playlists/Form.vue:34 -msgid "Create playlist" -msgstr "" - -#: front/src/components/library/Radios.vue:7 -msgid "Create your own radio" -msgstr "" - -#: front/src/components/manage/library/RequestsTable.vue:52 -#: front/src/components/manage/users/InvitationsTable.vue:40 -#: front/src/components/federation/LibraryFollowTable.vue:23 -msgid "Creation date" -msgstr "" - -#: front/src/components/playlists/PlaylistModal.vue:8 -msgid "Current track" -msgstr "" - -#: front/src/components/manage/library/FilesTable.vue:184 -#: front/src/components/manage/library/RequestsTable.vue:190 -#: front/src/components/manage/users/InvitationsTable.vue:161 -#: front/src/views/playlists/Detail.vue:32 -msgid "Delete" -msgstr "" - -#: front/src/views/playlists/Detail.vue:37 -msgid "Delete playlist" -msgstr "" - -#: front/src/components/federation/LibraryFollowTable.vue:52 -#: front/src/components/federation/LibraryFollowTable.vue:63 -msgid "Deny" -msgstr "" - -#: front/src/components/federation/LibraryFollowTable.vue:54 -msgid "Deny access?" -msgstr "" - -#: front/src/components/favorites/List.vue:34 -#: src/components/library/Radios.vue:31 -#: front/src/components/manage/users/UsersTable.vue:20 -#: front/src/views/federation/LibraryList.vue:29 -#: src/views/playlists/List.vue:28 -msgid "Descending" -msgstr "" - -#: front/src/components/federation/LibraryCard.vue:50 -msgid "Detail" -msgstr "" - -#: front/src/components/auth/Settings.vue:71 -#: front/src/components/auth/SubsonicTokenForm.vue:52 -msgid "Disable access" -msgstr "" - -#: front/src/components/auth/SubsonicTokenForm.vue:49 -msgid "Disable Subsonic access" -msgstr "" - -#: front/src/components/auth/SubsonicTokenForm.vue:50 -msgid "Disable Subsonic API access?" -msgstr "" - -#: front/src/components/auth/SubsonicTokenForm.vue:14 -msgid "Discover how to use Funkwhale from other apps" -msgstr "" - -#: front/src/components/library/radios/Builder.vue:16 -msgid "Display publicly" -msgstr "" - -#: front/src/components/playlists/Editor.vue:42 -msgid "Do you want to clear the playlist \"%{ playlist }\"?" -msgstr "" - -#: front/src/components/common/DangerousButton.vue:7 -msgid "Do you want to confirm this action?" -msgstr "" - -#: front/src/views/playlists/Detail.vue:34 -msgid "Do you want to delete the playlist \"%{ playlist }\"?" -msgstr "" - -#: front/src/components/common/ActionTable.vue:29 -msgid "Do you want to launch %{ action } on %{ count } element?" -msgid_plural "Do you want to launch %{ action } on %{ count } elements?" -msgstr[0] "" -msgstr[1] "" - -#: front/src/components/Sidebar.vue:112 -msgid "Do you want to restore your previous queue?" -msgstr "" - -#: front/src/App.vue:35 -msgid "Documentation" -msgstr "" - -#: front/src/components/library/Track.vue:48 -#: src/components/audio/track/Table.vue:24 -msgid "Download" -msgstr "" - -#: front/src/components/library/Track.vue:58 -#: front/src/components/manage/library/FilesTable.vue:43 -msgid "Duration" -msgstr "" - -#: front/src/components/Home.vue:96 -msgid "Easy to use" -msgstr "" - -#: front/src/components/About.vue:21 -msgid "Edit instance info" -msgstr "" - -#: front/src/components/radios/Card.vue:20 src/views/playlists/Detail.vue:29 -msgid "Edit..." -msgstr "" - -#: front/src/components/manage/users/UsersTable.vue:38 -msgid "Email" -msgstr "" - -#: front/src/views/admin/users/UsersDetail.vue:29 -msgid "Email address" -msgstr "" - -#: front/src/views/auth/EmailConfirm.vue:23 -msgid "Email confirmed" -msgstr "" - -#: front/src/views/playlists/Detail.vue:28 -msgid "End edition" -msgstr "" - -#: front/src/components/library/import/FileUpload.vue:4 -msgid "Ensure your music files are properly tagged before uploading them." -msgstr "" - -#: front/src/components/auth/SubsonicTokenForm.vue:20 -msgid "Error" -msgstr "" - -#: front/src/views/admin/Settings.vue:82 -msgid "Error reporting" -msgstr "" - -#: front/src/components/common/ActionTable.vue:75 -msgid "Error while applying action" -msgstr "" - -#: front/src/views/auth/PasswordReset.vue:7 -msgid "Error while asking for a password reset" -msgstr "" - -#: front/src/views/auth/PasswordResetConfirm.vue:7 -msgid "Error while changing your password" -msgstr "" - -#: front/src/views/auth/EmailConfirm.vue:7 -msgid "Error while confirming your email" -msgstr "" - -#: front/src/components/manage/users/InvitationForm.vue:4 -msgid "Error while creating invitation" -msgstr "" - -#: front/src/components/admin/SettingsGroup.vue:5 -msgid "Error while saving settings" -msgstr "" - -#: front/src/components/federation/LibraryForm.vue:10 -msgid "Error while scanning library" -msgstr "" - -#: front/src/components/library/import/BatchDetail.vue:41 -#: front/src/components/library/import/BatchDetail.vue:70 -#: front/src/components/library/import/BatchList.vue:15 -msgid "Errored" -msgstr "" - -#: front/src/components/playlists/Form.vue:84 -msgid "Everyone" -msgstr "" - -#: front/src/components/playlists/Form.vue:80 -msgid "Everyone on this instance" -msgstr "" - -#: front/src/components/library/radios/Builder.vue:47 -msgid "Exclude" -msgstr "" - -#: front/src/components/discussion/Comment.vue:14 -msgid "Expand" -msgstr "" - -#: front/src/components/manage/users/InvitationsTable.vue:41 -msgid "Expiration date" -msgstr "" - -#: front/src/components/manage/users/InvitationsTable.vue:50 -msgid "Expired" -msgstr "" - -#: front/src/components/manage/users/InvitationsTable.vue:21 -msgid "Expired/used" -msgstr "" - -#: front/src/components/library/import/Main.vue:65 -msgid "External source. Supported backends" -msgstr "" - -#: front/src/components/Sidebar.vue:50 -msgid "Favorites" -msgstr "" - -#: front/src/components/federation/LibraryForm.vue:3 -msgid "Federate with a new instance" -msgstr "" - -#: front/src/components/Sidebar.vue:86 -#: src/components/library/import/BatchList.vue:25 -#: front/src/components/manage/users/UsersTable.vue:175 -#: front/src/views/admin/Settings.vue:79 -#: src/views/admin/users/UsersDetail.vue:156 -#: front/src/views/federation/LibraryDetail.vue:40 -msgid "Federation" -msgstr "" - -#: front/src/components/library/import/FileUpload.vue:43 -msgid "File name" -msgstr "" - -#: front/src/components/library/import/Main.vue:76 -msgid "File upload" -msgstr "" - -#: front/src/views/admin/library/Base.vue:5 -msgid "Files" -msgstr "" - -#: front/src/components/library/import/ArtistImport.vue:7 -msgid "Filter album types" -msgstr "" - -#: front/src/components/library/radios/Builder.vue:46 -msgid "Filter name" -msgstr "" - -#: front/src/components/library/import/BatchDetail.vue:54 -msgid "Finished" -msgstr "" - -#: front/src/components/library/import/Main.vue:59 -msgid "First, choose where you want to import the music from" -msgstr "" - -#: front/src/components/federation/LibraryCard.vue:44 -msgid "Follow" -msgstr "" - -#: front/src/components/federation/LibraryCard.vue:36 -msgid "Follow request pending approval" -msgstr "" - -#: front/src/views/federation/LibraryDetail.vue:21 -msgid "Follow status" -msgstr "" - -#: front/src/views/federation/Base.vue:13 -msgid "Followers" -msgstr "" - -#: front/src/components/federation/LibraryCard.vue:18 -msgid "Followers only" -msgstr "" - -#: front/src/components/federation/LibraryCard.vue:15 -#: front/src/views/federation/LibraryDetail.vue:29 -msgid "Following" -msgstr "" - -#: front/src/components/activity/Like.vue:12 -#: src/components/activity/Listen.vue:12 -msgid "from %{ album } by %{ artist }" -msgstr "" - -#: front/src/components/library/Track.vue:13 -msgid "From album %{ album } by %{ artist }" -msgstr "" - -#: front/src/App.vue:53 -msgid "Funkwhale is a free and open-source project run by volunteers. You can help us improve the platform by reporting bugs, suggesting features and share the project with your friends!" -msgstr "" - -#: front/src/components/auth/SubsonicTokenForm.vue:7 -msgid "Funkwhale is compatible with other music players that support the Subsonic API." -msgstr "" - -#: front/src/components/Home.vue:98 -msgid "Funkwhale is dead simple to use." -msgstr "" - -#: front/src/components/Home.vue:39 -msgid "Funkwhale is designed to make it easy to listen to music you like, or to discover new artists." -msgstr "" - -#: front/src/components/Home.vue:119 -msgid "Funkwhale is free and gives you control on your music." -msgstr "" - -#: front/src/components/Home.vue:66 -msgid "Funkwhale takes care of handling your music" -msgstr "" - -#: front/src/components/manage/users/InvitationForm.vue:16 -msgid "Get a new invitation" -msgstr "" - -#: front/src/components/Home.vue:13 -msgid "Get me to the library" -msgstr "" - -#: front/src/components/Home.vue:77 -msgid "" -"Get quality metadata about your music thanks to\n" -" <a href=\"https://musicbrainz.org\" target=\"_blank\">\n" -" MusicBrainz\n" -" </a>" -msgstr "" - -#: front/src/components/common/ActionTable.vue:21 -#: front/src/components/common/ActionTable.vue:27 -msgid "Go" -msgstr "" - -#: front/src/components/PageNotFound.vue:14 -msgid "Go to home page" -msgstr "" - -#: front/src/components/library/import/Main.vue:13 -msgid "Grab corresponding metadata" -msgstr "" - -#: front/src/components/instance/Stats.vue:36 -msgid "Hours of music" -msgstr "" - -#: front/src/components/auth/SubsonicTokenForm.vue:11 -msgid "However, accessing Funkwhale from those clients require a separate password you can set below." -msgstr "" - -#: front/src/components/library/import/BatchList.vue:34 -msgid "ID" -msgstr "" - -#: front/src/views/auth/PasswordResetConfirm.vue:24 -msgid "If the email address provided in the previous step is valid and binded to a user account, you should receive an email with reset instructions in the next couple of minutes." -msgstr "" - -#: front/src/components/federation/LibraryTrackTable.vue:159 -#: front/src/components/library/Library.vue:17 -msgid "Import" -msgstr "" - -#: front/src/components/federation/LibraryTrackTable.vue:42 -msgid "Import #%{ id } launched" -msgstr "" - -#: front/src/components/library/import/Main.vue:38 -msgid "Import %{ count } track" -msgid_plural "Import %{ count } tracks" -msgstr[0] "" -msgstr[1] "" - -#: front/src/components/library/import/BatchDetail.vue:10 -msgid "Import batch" -msgstr "" - -#: front/src/components/library/Library.vue:20 -msgid "Import batches" -msgstr "" - -#: front/src/components/manage/library/FilesTable.vue:40 -#: front/src/components/manage/library/RequestsTable.vue:53 -msgid "Import date" -msgstr "" - -#: front/src/components/library/import/FileUpload.vue:38 -msgid "Import detail page" -msgstr "" - -#: front/src/components/Sidebar.vue:80 -msgid "Import music" -msgstr "" - -#: front/src/components/Home.vue:71 -msgid "Import music from various platforms, such as YouTube or SoundCloud" -msgstr "" - -#: front/src/components/federation/LibraryTrackTable.vue:14 -#: front/src/components/federation/LibraryTrackTable.vue:51 -msgid "Import pending" -msgstr "" - -#: front/src/views/admin/library/Base.vue:9 -#: front/src/views/admin/library/RequestsList.vue:3 -msgid "Import requests" -msgstr "" - -#: front/src/components/library/import/BatchList.vue:20 -#: front/src/components/library/import/Main.vue:6 -msgid "Import source" -msgstr "" - -#: front/src/components/federation/LibraryTrackTable.vue:9 -msgid "Import status" -msgstr "" - -#: front/src/components/library/import/ReleaseImport.vue:14 -msgid "Import this release" -msgstr "" - -#: front/src/components/library/import/TrackImport.vue:11 -msgid "Import this track" -msgstr "" - -#: front/src/components/federation/LibraryTrackTable.vue:12 -#: front/src/components/manage/library/RequestsTable.vue:29 -#: front/src/components/manage/library/RequestsTable.vue:61 -msgid "Imported" -msgstr "" - -#: front/src/components/library/import/TrackImport.vue:44 -msgid "Imported URL" -msgstr "" - -#: front/src/views/admin/Settings.vue:77 -msgid "Imports" -msgstr "" - -#: front/src/components/favorites/TrackFavoriteIcon.vue:3 -msgid "In favorites" -msgstr "" - -#: front/src/components/federation/LibraryTrackTable.vue:50 -msgid "In library" -msgstr "" - -#: front/src/components/library/import/Main.vue:96 -msgid "Input a MusicBrainz ID manually:" -msgstr "" - -#: front/src/components/playlists/Editor.vue:31 -msgid "Insert from queue (%{ count } track)" -msgid_plural "Insert from queue (%{ count } tracks)" -msgstr[0] "" -msgstr[1] "" - -#: front/src/views/admin/Settings.vue:75 -msgid "Instance information" -msgstr "" - -#: front/src/views/admin/users/Base.vue:8 -#: src/views/admin/users/InvitationsList.vue:3 -msgid "Invitations" -msgstr "" - -#: front/src/App.vue:40 -msgid "Issue tracker" -msgstr "" - -#: front/src/components/library/import/BatchDetail.vue:80 -msgid "Job ID" -msgstr "" - -#: front/src/components/library/import/BatchList.vue:36 -msgid "Jobs" -msgstr "" - -#: front/src/components/Home.vue:50 -msgid "Keep a track of your favorite songs" -msgstr "" - -#: front/src/components/manage/users/UsersTable.vue:41 -#: front/src/views/admin/users/UsersDetail.vue:45 -msgid "Last activity" -msgstr "" - -#: front/src/views/federation/LibraryDetail.vue:101 -msgid "Last fetched" -msgstr "" - -#: front/src/components/playlists/PlaylistModal.vue:32 -msgid "Last modification" -msgstr "" - -#: front/src/components/library/Home.vue:9 -msgid "Latest artists" -msgstr "" - -#: front/src/components/common/ActionTable.vue:39 -msgid "Launch" -msgstr "" - -#: front/src/components/library/import/BatchDetail.vue:18 -#: front/src/components/library/import/BatchList.vue:35 -msgid "Launch date" -msgstr "" - -#: front/src/components/federation/LibraryForm.vue:31 -msgid "Launch scan" -msgstr "" - -#: front/src/components/Home.vue:10 -msgid "Learn more about this instance" -msgstr "" - -#: front/src/components/requests/Form.vue:10 -msgid "Leave this field empty if you're requesting the whole discography." -msgstr "" - -#: front/src/views/federation/Base.vue:5 -msgid "Libraries" -msgstr "" - -#: front/src/components/Sidebar.vue:69 -#: front/src/components/federation/LibraryTrackTable.vue:36 -#: front/src/components/manage/users/UsersTable.vue:171 -#: front/src/views/admin/users/UsersDetail.vue:152 -msgid "Library" -msgstr "" - -#: front/src/views/admin/library/FilesList.vue:3 -msgid "Library files" -msgstr "" - -#: front/src/components/federation/LibraryForm.vue:20 -msgid "Library name" -msgstr "" - -#: front/src/views/federation/LibraryDetail.vue:84 -msgid "Library size" -msgstr "" - -#: front/src/App.vue:29 -msgid "Links" -msgstr "" - -#: front/src/views/instance/Timeline.vue:4 -msgid "Loading timeline..." -msgstr "" - -#: front/src/components/favorites/List.vue:5 -msgid "Loading your favorites..." -msgstr "" - -#: front/src/components/auth/Login.vue:4 -msgid "Log in to your Funkwhale account" -msgstr "" - -#: front/src/components/Sidebar.vue:38 -msgid "Logged in as %{ username }" -msgstr "" - -#: front/src/components/Sidebar.vue:43 src/components/auth/Login.vue:42 -msgid "Login" -msgstr "" - -#: front/src/components/Sidebar.vue:42 -msgid "Logout" -msgstr "" - -#: front/src/components/library/Track.vue:94 -msgid "Lyrics" -msgstr "" - -#: front/src/components/playlists/PlaylistModal.vue:3 -msgid "Manage playlists" -msgstr "" - -#: front/src/views/playlists/List.vue:8 -msgid "Manage your playlists" -msgstr "" - -#: front/src/components/manage/library/RequestsTable.vue:192 -msgid "Mark as closed" -msgstr "" - -#: front/src/components/manage/library/RequestsTable.vue:191 -msgid "Mark as imported" -msgstr "" - -#: front/src/components/library/import/Main.vue:12 -msgid "Metadata" -msgstr "" - -#: front/src/components/library/import/Main.vue:115 -msgid "" -"Metadata is the data related to the music you want to import. This includes all the information about the artists, albums and tracks. In order to have a high quality library, it is recommended to grab data from the\n" -" <a href=\"https://musicbrainz.org\" target=\"_blank\">\n" -" MusicBrainz\n" -" </a>\n" -" project, which you can think about as the Wikipedia of music." -msgstr "" - -#: front/src/components/Sidebar.vue:47 -#: src/components/library/import/Main.vue:18 -msgid "Music" -msgstr "" - -#: front/src/components/library/import/Main.vue:147 -msgid "Music request" -msgstr "" - -#: front/src/components/library/Home.vue:26 -msgid "Music requests" -msgstr "" - -#: front/src/components/Sidebar.vue:34 -msgid "My account" -msgstr "" - -#: front/src/components/library/Track.vue:64 -#: src/components/library/Track.vue:75 -#: front/src/components/library/Track.vue:86 -#: front/src/components/manage/library/FilesTable.vue:63 -#: front/src/components/manage/library/FilesTable.vue:69 -#: front/src/components/manage/library/FilesTable.vue:75 -#: front/src/components/manage/library/FilesTable.vue:81 -#: front/src/components/manage/users/UsersTable.vue:61 -#: front/src/views/admin/users/UsersDetail.vue:49 -#: front/src/components/manage/library/RequestsTable.vue:72 -#: front/src/components/manage/library/RequestsTable.vue:83 -msgid "N/A" -msgstr "" - -#: front/src/components/playlists/PlaylistModal.vue:31 -#: front/src/views/admin/users/UsersDetail.vue:21 -msgid "Name" -msgstr "" - -#: front/src/views/auth/PasswordResetConfirm.vue:14 -#: front/src/components/auth/Settings.vue:56 -msgid "New password" -msgstr "" - -#: front/src/components/Sidebar.vue:157 -msgid "New tracks will be appended here automatically." -msgstr "" - -#: front/src/components/library/import/Main.vue:29 -msgid "Next step" -msgstr "" - -#: front/src/components/Sidebar.vue:124 -msgid "No" -msgstr "" - -#: front/src/components/Home.vue:103 -msgid "No add-ons, no plugins : you only need a web library" -msgstr "" - -#: front/src/components/library/Track.vue:102 -msgid "No lyrics available for this track." -msgstr "" - -#: front/src/components/playlists/Form.vue:76 -msgid "Nobody except me" -msgstr "" - -#: front/src/views/federation/LibraryDetail.vue:32 -msgid "Not following" -msgstr "" - -#: front/src/components/federation/LibraryTrackTable.vue:13 -#: front/src/components/federation/LibraryTrackTable.vue:52 -msgid "Not imported" -msgstr "" - -#: front/src/components/manage/users/InvitationsTable.vue:51 -msgid "Not used" -msgstr "" - -#: front/src/App.vue:34 -msgid "Official website" -msgstr "" - -#: front/src/components/library/import/FileUpload.vue:36 -msgid "Once all your files are uploaded, simply click the following button to check the import status." -msgstr "" - -#: front/src/components/federation/LibraryCard.vue:21 -#: front/src/components/manage/users/InvitationsTable.vue:20 -msgid "Open" -msgstr "" - -#: front/src/App.vue:60 -msgid "Options" -msgstr "" - -#: front/src/components/library/import/Main.vue:93 -msgid "Or" -msgstr "" - -#: front/src/components/favorites/List.vue:23 -#: src/components/library/Artists.vue:15 -#: front/src/components/library/Radios.vue:17 -#: front/src/components/manage/library/FilesTable.vue:9 -#: front/src/components/manage/library/RequestsTable.vue:9 -#: front/src/components/manage/users/UsersTable.vue:9 -#: front/src/views/federation/LibraryList.vue:18 -#: src/views/playlists/List.vue:17 -#: front/src/components/manage/users/InvitationsTable.vue:10 -msgid "Ordering" -msgstr "" - -#: front/src/components/favorites/List.vue:31 -#: src/components/library/Artists.vue:23 -#: front/src/components/library/Radios.vue:25 -#: front/src/components/manage/library/FilesTable.vue:17 -#: front/src/components/manage/library/RequestsTable.vue:17 -#: front/src/components/manage/users/UsersTable.vue:17 -#: front/src/views/federation/LibraryList.vue:26 -#: src/views/playlists/List.vue:25 -msgid "Ordering direction" -msgstr "" - -#: front/src/components/manage/users/InvitationsTable.vue:38 -msgid "Owner" -msgstr "" - -#: front/src/components/PageNotFound.vue:7 -msgid "Page not found!" -msgstr "" - -#: front/src/components/auth/Login.vue:32 -msgid "Password" -msgstr "" - -#: front/src/components/auth/SubsonicTokenForm.vue:95 -msgid "Password updated" -msgstr "" - -#: front/src/views/auth/PasswordResetConfirm.vue:28 -msgid "Password updated successfully" -msgstr "" - -#: front/src/components/federation/LibraryFollowTable.vue:46 -#: front/src/components/library/import/BatchDetail.vue:33 -#: front/src/components/library/import/BatchDetail.vue:69 -#: front/src/components/library/import/BatchList.vue:14 -#: front/src/components/library/import/FileUpload.vue:59 -#: front/src/components/manage/library/RequestsTable.vue:27 -#: front/src/components/manage/library/RequestsTable.vue:63 -msgid "Pending" -msgstr "" - -#: front/src/components/federation/LibraryFollowTable.vue:11 -#: front/src/views/federation/LibraryDetail.vue:26 -msgid "Pending approval" -msgstr "" - -#: front/src/components/requests/Form.vue:26 -msgid "Pending requests" -msgstr "" - -#: front/src/components/manage/users/UsersTable.vue:42 -#: front/src/views/admin/users/UsersDetail.vue:68 -msgid "Permissions" -msgstr "" - -#: front/src/components/audio/PlayButton.vue:8 -#: src/components/library/Track.vue:30 -msgid "Play" -msgstr "" - -#: front/src/components/audio/album/Card.vue:50 -#: front/src/components/audio/artist/Card.vue:44 -#: src/components/library/Album.vue:28 front/src/views/playlists/Detail.vue:22 -msgid "Play all" -msgstr "" - -#: front/src/components/library/Artist.vue:26 -msgid "Play all albums" -msgstr "" - -#: front/src/components/audio/PlayButton.vue:47 -msgid "Play immediatly" -msgstr "" - -#: front/src/components/audio/PlayButton.vue:14 -msgid "Play next" -msgstr "" - -#: front/src/components/audio/PlayButton.vue:15 -msgid "Play now" -msgstr "" - -#: front/src/views/playlists/Detail.vue:11 -msgid "Playlist containing %{ count } track, by %{ username }" -msgid_plural "Playlist containing %{ count } tracks, by %{ username }" -msgstr[0] "" -msgstr[1] "" - -#: front/src/components/playlists/Form.vue:9 -msgid "Playlist created" -msgstr "" - -#: front/src/components/playlists/Editor.vue:4 -msgid "Playlist editor" -msgstr "" - -#: front/src/components/playlists/Form.vue:21 -msgid "Playlist name" -msgstr "" - -#: front/src/components/playlists/Form.vue:6 -msgid "Playlist updated" -msgstr "" - -#: front/src/components/playlists/Form.vue:25 -msgid "Playlist visibility" -msgstr "" - -#: front/src/components/Sidebar.vue:55 src/components/library/Library.vue:13 -#: front/src/views/admin/Settings.vue:78 -msgid "Playlists" -msgstr "" - -#: front/src/components/Home.vue:56 -msgid "Playlists? We got them" -msgstr "" - -#: front/src/components/auth/Settings.vue:46 -msgid "Please double-check your password is correct" -msgstr "" - -#: front/src/components/library/import/Main.vue:26 -msgid "Previous step" -msgstr "" - -#: front/src/views/auth/EmailConfirm.vue:26 -#: front/src/views/auth/PasswordResetConfirm.vue:31 -msgid "Proceed to login" -msgstr "" - -#: front/src/components/federation/LibraryTrackTable.vue:35 -msgid "Published date" -msgstr "" - -#: front/src/components/library/import/ArtistImport.vue:17 -msgid "Query template" -msgstr "" - -#: front/src/components/Sidebar.vue:20 -msgid "Queue" -msgstr "" - -#: front/src/components/audio/Player.vue:183 -msgid "Queue shuffled!" -msgstr "" - -#: front/src/components/library/radios/Builder.vue:11 -msgid "Radio name" -msgstr "" - -#: front/src/components/library/Home.vue:18 -#: src/components/library/Library.vue:10 -msgid "Radios" -msgstr "" - -#: front/src/views/instance/Timeline.vue:7 -msgid "Recent activity on this instance" -msgstr "" - -#: front/src/components/library/import/BatchDetail.vue:81 -msgid "Recording MusicBrainz ID" -msgstr "" - -#: front/src/views/admin/users/UsersDetail.vue:84 -#: front/src/views/federation/LibraryDetail.vue:122 -msgid "Refresh" -msgstr "" - -#: front/src/components/federation/LibraryFollowTable.vue:42 -msgid "Refused" -msgstr "" - -#: front/src/components/auth/Profile.vue:11 -msgid "Registered since %{ date }" -msgstr "" - -#: front/src/components/auth/Signup.vue:9 -msgid "Registration are closed on this instance, you will need an invitation code to signup." -msgstr "" - -#: front/src/components/manage/users/UsersTable.vue:71 -msgid "regular user" -msgstr "" - -#: front/src/components/library/radios/Filter.vue:59 -msgid "Remove" -msgstr "" - -#: front/src/components/favorites/TrackFavoriteIcon.vue:19 -msgid "Remove from favorites" -msgstr "" - -#: front/src/components/auth/SubsonicTokenForm.vue:34 -#: front/src/components/auth/SubsonicTokenForm.vue:37 -msgid "Request a new password" -msgstr "" - -#: front/src/components/auth/SubsonicTokenForm.vue:35 -msgid "Request a new Subsonic API password?" -msgstr "" - -#: front/src/components/auth/SubsonicTokenForm.vue:43 -msgid "Request a password" -msgstr "" - -#: front/src/components/auth/Login.vue:34 src/views/auth/PasswordReset.vue:4 -msgid "Reset your password" -msgstr "" - -#: front/src/components/library/import/TrackImport.vue:31 -msgid "Result %{ current }/%{ total }" -msgstr "" - -#: front/src/components/favorites/List.vue:38 -#: src/components/library/Artists.vue:30 -#: front/src/components/library/Radios.vue:36 -#: src/views/federation/LibraryList.vue:33 -#: front/src/views/playlists/List.vue:32 -msgid "Results per page" -msgstr "" - -#: front/src/components/admin/SettingsGroup.vue:63 -#: front/src/components/library/radios/Builder.vue:19 -msgid "Save" -msgstr "" - -#: front/src/views/federation/LibraryDetail.vue:112 -msgid "Scan triggered!" -msgstr "" - -#: front/src/components/federation/LibraryTrackTable.vue:5 -#: front/src/components/library/Artists.vue:10 -#: src/components/library/Radios.vue:13 -#: front/src/components/library/import/BatchDetail.vue:62 -#: front/src/components/library/import/BatchList.vue:7 -#: front/src/components/manage/library/FilesTable.vue:5 -#: front/src/components/manage/library/RequestsTable.vue:5 -#: front/src/components/manage/users/InvitationsTable.vue:5 -#: front/src/components/manage/users/UsersTable.vue:5 -#: front/src/views/federation/LibraryList.vue:14 -#: src/views/playlists/List.vue:13 -msgid "Search" -msgstr "" - -#: front/src/components/library/import/Main.vue:85 -msgid "Search an entity you want to import:" -msgstr "" - -#: front/src/components/audio/Search.vue:2 -msgid "Search for some music" -msgstr "" - -#: front/src/components/library/Track.vue:105 -msgid "Search on lyrics.wikia.com" -msgstr "" - -#: front/src/components/library/Album.vue:33 -#: src/components/library/Artist.vue:31 -#: front/src/components/library/Track.vue:40 -msgid "Search on Wikipedia" -msgstr "" - -#: front/src/components/library/import/TrackImport.vue:42 -msgid "Search query" -msgstr "" - -#: front/src/views/admin/Settings.vue:15 -msgid "Sections" -msgstr "" - -#: front/src/components/library/radios/Builder.vue:31 -msgid "Select a filter" -msgstr "" - -#: front/src/components/common/ActionTable.vue:61 -msgid "Select all %{ total } elements" -msgid_plural "Select all %{ total } elements" -msgstr[0] "" -msgstr[1] "" - -#: front/src/components/library/import/FileUpload.vue:22 -msgid "Select files to upload..." -msgstr "" - -#: front/src/components/common/ActionTable.vue:69 -msgid "Select only current page" -msgstr "" - -#: front/src/components/library/import/Main.vue:19 -msgid "Select relevant sources or files for import" -msgstr "" - -#: front/src/components/federation/LibraryCard.vue:43 -msgid "Send a follow request" -msgstr "" - -#: front/src/components/Sidebar.vue:96 -#: src/components/manage/users/UsersTable.vue:179 -#: front/src/views/admin/users/UsersDetail.vue:160 -msgid "Settings" -msgstr "" - -#: front/src/components/auth/Settings.vue:10 -msgid "Settings updated" -msgstr "" - -#: front/src/components/admin/SettingsGroup.vue:11 -msgid "Settings updated successfully." -msgstr "" - -#: front/src/components/auth/Profile.vue:23 -msgid "Settings..." -msgstr "" - -#: front/src/components/manage/users/InvitationForm.vue:27 -msgid "Share link" -msgstr "" - -#: front/src/components/audio/artist/Card.vue:30 -msgid "Show 1 more album" -msgid_plural "Show %{ count } more albums" -msgstr[0] "" -msgstr[1] "" - -#: front/src/components/audio/album/Card.vue:40 -msgid "Show 1 more track" -msgid_plural "Show %{ count } more tracks" -msgstr[0] "" -msgstr[1] "" - -#: front/src/components/federation/LibraryFollowTable.vue:97 -#: front/src/components/federation/LibraryTrackTable.vue:83 -#: front/src/components/library/import/BatchDetail.vue:128 -#: front/src/components/library/import/BatchList.vue:73 -#: front/src/components/manage/library/FilesTable.vue:97 -#: front/src/components/manage/library/RequestsTable.vue:104 -#: front/src/components/manage/users/InvitationsTable.vue:76 -#: front/src/components/manage/users/UsersTable.vue:87 -msgid "Showing results %{ start }-%{ end } on %{ total }" -msgstr "" - -#: front/src/components/manage/users/UsersTable.vue:40 -#: front/src/views/admin/users/UsersDetail.vue:37 -msgid "Sign-up" -msgstr "" - -#: front/src/components/library/Track.vue:69 -#: front/src/components/library/import/FileUpload.vue:44 -#: front/src/components/manage/library/FilesTable.vue:44 -msgid "Size" -msgstr "" - -#: front/src/components/library/import/BatchDetail.vue:37 -#: front/src/components/library/import/BatchDetail.vue:72 -msgid "Skipped" -msgstr "" - -#: front/src/components/requests/Form.vue:3 -msgid "Something's missing in the library? Let us know what you would like to listen!" -msgstr "" - -#: front/src/components/audio/Search.vue:25 -msgid "Sorry, we did not found any album matching your query" -msgstr "" - -#: front/src/components/audio/Search.vue:16 -msgid "Sorry, we did not found any artist matching your query" -msgstr "" - -#: front/src/components/library/import/BatchDetail.vue:82 -#: front/src/components/library/import/BatchList.vue:38 -#: front/src/components/library/import/TrackImport.vue:17 -msgid "Source" -msgstr "" - -#: front/src/App.vue:38 -msgid "Source code" -msgstr "" - -#: front/src/App.vue:37 -msgid "Source code (%{version})" -msgstr "" - -#: front/src/components/auth/Profile.vue:19 -#: front/src/components/manage/users/UsersTable.vue:70 -msgid "Staff member" -msgstr "" - -#: front/src/components/radios/Button.vue:4 -msgid "Start" -msgstr "" - -#: front/src/components/library/import/FileUpload.vue:28 -msgid "Start Upload" -msgstr "" - -#: front/src/views/admin/Settings.vue:81 -msgid "Statistics" -msgstr "" - -#: front/src/components/federation/LibraryTrackTable.vue:31 -#: front/src/components/library/import/BatchDetail.vue:66 -#: front/src/components/library/import/BatchDetail.vue:83 -#: front/src/components/library/import/BatchList.vue:11 -#: front/src/components/library/import/BatchList.vue:37 -#: front/src/components/library/import/FileUpload.vue:45 -#: front/src/components/manage/library/RequestsTable.vue:48 -#: front/src/components/manage/users/InvitationsTable.vue:39 -#: front/src/components/manage/users/UsersTable.vue:43 -#: front/src/components/manage/users/InvitationsTable.vue:18 -msgid "Status" -msgstr "" - -#: front/src/components/radios/Button.vue:3 -msgid "Stop" -msgstr "" - -#: front/src/components/Sidebar.vue:158 -msgid "Stop radio" -msgstr "" - -#: front/src/components/library/import/FileUpload.vue:32 -msgid "Stop Upload" -msgstr "" - -#: front/src/App.vue:9 src/components/requests/Form.vue:17 -msgid "Submit" -msgstr "" - -#: front/src/components/requests/Form.vue:22 -msgid "Submit another request" -msgstr "" - -#: front/src/components/library/import/BatchDetail.vue:26 -#: front/src/components/library/import/BatchList.vue:39 -msgid "Submitted by" -msgstr "" - -#: front/src/views/admin/Settings.vue:80 -msgid "Subsonic" -msgstr "" - -#: front/src/components/auth/SubsonicTokenForm.vue:2 -msgid "Subsonic API password" -msgstr "" - -#: front/src/components/library/import/BatchDetail.vue:71 -#: front/src/components/library/import/BatchList.vue:16 -#: front/src/components/library/import/FileUpload.vue:56 -msgid "Success" -msgstr "" - -#: front/src/components/playlists/Editor.vue:9 -msgid "Syncing changes to server..." -msgstr "" - -#: front/src/components/Home.vue:26 -msgid "That's simple: we loved Grooveshark and we want to build something even better." -msgstr "" - -#: front/src/App.vue:56 -msgid "The funkwhale logo was kindly designed and provided by Francis Gading." -msgstr "" - -#: front/src/components/Home.vue:124 -msgid "The plaform is free and open-source, you can install it and modify it without worries" -msgstr "" - -#: front/src/components/auth/SubsonicTokenForm.vue:4 -msgid "The Subsonic API is not available on this Funkwhale instance." -msgstr "" - -#: front/src/components/library/import/Main.vue:149 -msgid "This import will be associated with the music request below. After the import is finished, the request will be marked as fulfilled." -msgstr "" - -#: front/src/components/auth/Profile.vue:15 -msgid "This is you!" -msgstr "" - -#: front/src/components/audio/PlayButton.vue:50 -msgid "This track is not imported and cannot be played" -msgstr "" - -#: front/src/views/playlists/Detail.vue:36 -msgid "This will completely delete this playlist and cannot be undone." -msgstr "" - -#: front/src/components/auth/SubsonicTokenForm.vue:51 -msgid "This will completely disable access to the Subsonic API using from account." -msgstr "" - -#: front/src/App.vue:130 -msgid "This will erase your local data and disconnect you, do you want to continue?" -msgstr "" - -#: front/src/components/auth/SubsonicTokenForm.vue:36 -msgid "This will log you out from existing devices that use the current password." -msgstr "" - -#: front/src/components/playlists/Editor.vue:44 -msgid "This will remove all tracks from this playlist and cannot be undone." -msgstr "" - -#: front/src/components/federation/LibraryTrackTable.vue:32 -#: front/src/components/manage/library/FilesTable.vue:37 -#: front/src/components/audio/track/Table.vue:7 -msgid "Title" -msgstr "" - -#: front/src/components/library/import/BatchDetail.vue:84 -#: front/src/components/metadata/Search.vue:133 -msgid "Track" -msgstr "" - -#: front/src/components/library/Track.vue:53 -msgid "Track information" -msgstr "" - -#: front/src/components/library/radios/Filter.vue:44 -msgid "Track matching filter" -msgstr "" - -#: front/src/components/instance/Stats.vue:54 -msgid "tracks" -msgstr "" - -#: front/src/components/library/Album.vue:43 -#: front/src/components/playlists/PlaylistModal.vue:33 -#: front/src/views/federation/Base.vue:8 -msgid "Tracks" -msgstr "" - -#: front/src/views/federation/LibraryDetail.vue:125 -msgid "Tracks available in this library" -msgstr "" - -#: front/src/components/instance/Stats.vue:25 -msgid "Tracks favorited" -msgstr "" - -#: front/src/components/instance/Stats.vue:19 -msgid "tracks listened" -msgstr "" - -#: front/src/views/federation/LibraryDetail.vue:109 -msgid "Trigger scan" -msgstr "" - -#: front/src/components/manage/library/FilesTable.vue:41 -msgid "Type" -msgstr "" - -#: front/src/components/About.vue:15 -msgid "Unfortunately, owners of this instance did not yet take the time to complete this page." -msgstr "" - -#: front/src/views/federation/LibraryDetail.vue:95 -msgid "Unkwnown" -msgstr "" - -#: front/src/components/Home.vue:37 -msgid "Unlimited music" -msgstr "" - -#: front/src/components/playlists/Form.vue:33 -msgid "Update playlist" -msgstr "" - -#: front/src/components/auth/Settings.vue:27 -msgid "Update settings" -msgstr "" - -#: front/src/views/auth/PasswordResetConfirm.vue:21 -msgid "Update your password" -msgstr "" - -#: front/src/components/manage/users/UsersTable.vue:167 -#: front/src/views/admin/users/UsersDetail.vue:148 -msgid "Upload" -msgstr "" - -#: front/src/components/library/import/Main.vue:7 -msgid "Uploaded files or external source" -msgstr "" - -#: front/src/components/library/import/FileUpload.vue:57 -msgid "Uploading..." -msgstr "" - -#: front/src/App.vue:42 -msgid "Use another instance" -msgstr "" - -#: front/src/views/auth/PasswordReset.vue:12 -msgid "Use this form to request a password reset. We will send an email to the given address with instructions to reset your password." -msgstr "" - -#: front/src/components/federation/LibraryForm.vue:6 -msgid "Use this form to scan an instance and setup federation." -msgstr "" - -#: front/src/components/manage/users/InvitationsTable.vue:49 -msgid "Used" -msgstr "" - -#: front/src/components/manage/library/RequestsTable.vue:47 -msgid "User" -msgstr "" - -#: front/src/components/instance/Stats.vue:5 -msgid "User activity" -msgstr "" - -#: front/src/components/manage/users/UsersTable.vue:37 -msgid "Username" -msgstr "" - -#: front/src/components/auth/Login.vue:15 -msgid "Username or email" -msgstr "" - -#: front/src/components/instance/Stats.vue:13 -msgid "users" -msgstr "" - -#: front/src/components/Sidebar.vue:102 src/views/admin/Settings.vue:76 -#: front/src/views/admin/users/Base.vue:5 src/views/admin/users/UsersList.vue:3 -msgid "Users" -msgstr "" - -#: front/src/components/library/Album.vue:37 -#: src/components/library/Artist.vue:35 -#: front/src/components/library/Track.vue:44 -msgid "View on MusicBrainz" -msgstr "" - -#: front/src/components/playlists/PlaylistModal.vue:20 -msgid "We cannot add the track to a playlist" -msgstr "" - -#: front/src/components/playlists/Form.vue:14 -msgid "We cannot create the playlist" -msgstr "" - -#: front/src/components/auth/Login.vue:7 -msgid "We cannot log you in" -msgstr "" - -#: front/src/components/auth/Settings.vue:14 -msgid "We cannot save your settings" -msgstr "" - -#: front/src/components/Home.vue:130 -msgid "We do not track you or bother you with ads" -msgstr "" - -#: front/src/components/library/import/FileUpload.vue:5 -msgid "We recommend using Picard for that purpose." -msgstr "" - -#: front/src/components/Home.vue:7 -msgid "We think listening to music should be simple." -msgstr "" - -#: front/src/components/PageNotFound.vue:10 -msgid "We're sorry, the page you asked for does not exist:" -msgstr "" - -#: front/src/components/requests/Form.vue:21 -msgid "We've received your request, you'll get some groove soon ;)" -msgstr "" - -#: front/src/components/Home.vue:5 -msgid "Welcome on Funkwhale" -msgstr "" - -#: front/src/components/Home.vue:24 -msgid "Why funkwhale?" -msgstr "" - -#: front/src/components/Sidebar.vue:123 -msgid "Yes" -msgstr "" - -#: front/src/components/auth/Logout.vue:8 -msgid "Yes, log me out!" -msgstr "" - -#: front/src/components/auth/Logout.vue:7 -msgid "You are currently logged in as %{ username }" -msgstr "" - -#: front/src/components/library/import/Main.vue:111 -msgid "You can also skip this step and enter metadata manually." -msgstr "" - -#: front/src/components/Home.vue:136 -msgid "You can invite friends and family to your instance so they can enjoy your music" -msgstr "" - -#: front/src/components/library/radios/Builder.vue:7 -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:8 -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/Sidebar.vue:155 -msgid "You have a radio playing" -msgstr "" - -#: front/src/App.vue:6 -msgid "You need to select an instance in order to continue" -msgstr "" - -#: front/src/components/auth/Settings.vue:67 -msgid "You will be logged out from this session and have to log out with the new one" -msgstr "" - -#: front/src/components/auth/Settings.vue:38 -msgid "You will have to update your password on your clients that use this password." -msgstr "" - -#: front/src/components/library/import/Main.vue:103 -msgid "You will import:" -msgstr "" - -#: front/src/views/auth/EmailConfirm.vue:24 -msgid "Your email address was confirmed, you can now use the service without limitations." -msgstr "" - -#: front/src/components/Home.vue:117 -msgid "Your music, your way" -msgstr "" - -#: front/src/views/auth/PasswordResetConfirm.vue:29 -msgid "Your password has been updated successfully." -msgstr "" - -#: front/src/components/auth/Settings.vue:68 -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/components/auth/Signup.vue:5 -msgid "Create a funkwhale account" -msgstr "" - -#: front/src/components/auth/Signup.vue:43 -msgid "Invitation code" -msgstr "" - -#: front/src/components/auth/Login.vue:10 -msgid "Please double-check your username/password couple is correct" -msgstr "" - -#: front/src/components/auth/Settings.vue:66 -msgid "Changing your password will have the following consequences" -msgstr "" - -#: front/src/components/audio/PlayButton.vue:145 -msgid "%{ count } track was added to your queue" -msgid_plural "%{ count } tracks were added to your queue" -msgstr[0] "" -msgstr[1] "" - -#: front/src/components/audio/track/Table.vue:30 -msgid "There is currently no way to download directly multiple tracks from funkwhale as a ZIP archive. However, you can use a command line tools such as cURL to easily download a list of tracks." -msgstr "" - -#: front/src/components/manage/users/UsersTable.vue:55 -msgid "Inactive" -msgstr "" - -#: front/src/components/common/ActionTable.vue:38 -msgid "This may affect a lot of elements, please double check this is really what you want." -msgstr "" diff --git a/front/locales/fr_FR/LC_MESSAGES/app.po b/front/locales/fr_FR/LC_MESSAGES/app.po index 0cd4ab5e19304f07abcca2c599b6ecf80b383bf0..ea422573fcb6a1b49a9f9b2a9b1d49dd134871a4 100644 --- a/front/locales/fr_FR/LC_MESSAGES/app.po +++ b/front/locales/fr_FR/LC_MESSAGES/app.po @@ -1,22 +1,17 @@ -# French translations for front package. -# Copyright (C) 2018 THE front'S COPYRIGHT HOLDER -# This file is distributed under the same license as the front package. -# Automatically generated, 2018. -# msgid "" msgstr "" -"Project-Id-Version: front 1.0.0\n" +"Project-Id-Version: French (Funkwhale)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-07-01 18:34+0200\n" -"PO-Revision-Date: 2018-07-01 14:45+0000\n" -"Last-Translator: Eliot Berriot <contact@eliotberriot.com>\n" +"POT-Creation-Date: 2018-07-01 22:09+0200\n" +"PO-Revision-Date: 2018-07-01 22:13+0200\n" +"Last-Translator: \n" "Language-Team: French <https://translate.funkwhale.audio/projects/funkwhale/front/fr/>\n" "Language: fr_FR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 2.20\n" +"X-Generator: Poedit 1.8.11\n" #: front/src/components/playlists/PlaylistModal.vue:9 msgid "\"%{ title }\", by %{ artist }" @@ -70,6 +65,10 @@ msgstr "%{ user } a ajouté une piste a ses favoris" msgid "%{ user } listened to a track" msgstr "%{ user } a écouté une piste" +#: front/src/components/auth/Profile.vue:43 +msgid "%{ username }'s profile" +msgstr "Profil de %{ username }" + #: front/src/components/audio/artist/Card.vue:41 msgid "1 album" msgid_plural "%{ count } albums" @@ -93,7 +92,7 @@ msgstr[1] "%{ count } pistes" msgid "About Funkwhale" msgstr "À propos de Funkwhale" -#: front/src/App.vue:32 src/components/About.vue:8 +#: front/src/App.vue:32 src/components/About.vue:8 src/components/About.vue:55 msgid "About this instance" msgstr "A propos de cette instance" @@ -118,6 +117,10 @@ msgstr "Compte actif" msgid "Account settings" msgstr "Paramètres du compte" +#: front/src/components/auth/Settings.vue:180 +msgid "Account Settings" +msgstr "Paramètres du compte" + #: front/src/components/manage/users/UsersTable.vue:39 msgid "Account status" msgstr "Statut du compte" @@ -155,12 +158,17 @@ msgstr "Ajouter des filtres" msgid "Add filters to customize your radio" msgstr "Ajouter des filtres pour personnaliser votre radio" +#: front/src/components/audio/PlayButton.vue:47 +msgid "Add to current queue" +msgstr "Ajouter à la queue" + #: front/src/components/favorites/TrackFavoriteIcon.vue:4 #: front/src/components/favorites/TrackFavoriteIcon.vue:21 msgid "Add to favorites" msgstr "Ajouter aux favoris" #: front/src/components/playlists/TrackPlaylistIcon.vue:6 +#: front/src/components/playlists/TrackPlaylistIcon.vue:32 msgid "Add to playlist..." msgstr "Ajouter à une playlist..." @@ -168,6 +176,10 @@ msgstr "Ajouter à une playlist..." msgid "Add to queue" msgstr "Ajouter à la queue" +#: front/src/components/playlists/PlaylistModal.vue:115 +msgid "Add to this playlist" +msgstr "Ajouter à cette playlist" + #: front/src/components/playlists/PlaylistModal.vue:54 msgid "Add track" msgstr "Ajouter une piste" @@ -180,9 +192,11 @@ msgstr "Admin" msgid "Administration" msgstr "Administration" +#: front/src/components/audio/SearchBar.vue:26 #: front/src/components/federation/LibraryTrackTable.vue:34 +#: front/src/components/library/Album.vue:91 #: front/src/components/manage/library/FilesTable.vue:39 -#: front/src/components/metadata/Search.vue:129 +#: front/src/components/metadata/Search.vue:134 #: front/src/components/audio/track/Table.vue:9 msgid "Album" msgstr "Album" @@ -251,10 +265,12 @@ msgstr "Approuvé" msgid "Are you sure you want to log out?" msgstr "Êtes-vous sur de vouloir vous déconnecter ?" +#: front/src/components/audio/SearchBar.vue:25 #: front/src/components/federation/LibraryTrackTable.vue:33 +#: front/src/components/library/Artist.vue:108 #: front/src/components/manage/library/FilesTable.vue:38 #: front/src/components/manage/library/RequestsTable.vue:49 -#: front/src/components/metadata/Search.vue:125 +#: front/src/components/metadata/Search.vue:130 msgid "Artist" msgstr "Artiste" @@ -267,14 +283,22 @@ msgstr "Nom de l'artiste" msgid "Artist page" msgstr "Page de l'artiste" +#: front/src/components/audio/Search.vue:65 +msgid "Artist, album, track..." +msgstr "Artiste, album, piste..." + #: front/src/components/audio/Search.vue:10 #: src/components/instance/Stats.vue:42 -#: front/src/components/library/Library.vue:7 +#: front/src/components/library/Artists.vue:119 +#: src/components/library/Library.vue:7 msgid "Artists" msgstr "Artistes" #: front/src/components/favorites/List.vue:33 -#: src/components/library/Radios.vue:28 +#: src/components/library/Artists.vue:25 +#: front/src/components/library/Radios.vue:28 +#: front/src/components/manage/library/FilesTable.vue:19 +#: front/src/components/manage/library/RequestsTable.vue:19 #: front/src/components/manage/users/UsersTable.vue:19 #: front/src/views/federation/LibraryList.vue:28 #: src/views/playlists/List.vue:27 @@ -379,6 +403,7 @@ msgid "Change password" msgstr "Changer le mot de passe" #: front/src/views/auth/PasswordResetConfirm.vue:4 +#: front/src/views/auth/PasswordResetConfirm.vue:62 msgid "Change your password" msgstr "Changer votre mot de passe" @@ -394,6 +419,10 @@ msgstr "Changements synchronisés avec le serveur" msgid "Changing your password will also change your Subsonic API password if you have requested one." msgstr "La mise à jour de votre mot de passe impactera également le mot de passe de l'API Subsonic si vous en avez demandé un." +#: front/src/components/auth/Settings.vue:65 +msgid "Changing your password will have the following consequences" +msgstr "Modifier votre mot de passe aura les conséquences suivantes" + #: front/src/App.vue:4 msgid "Choose your instance" msgstr "Choisissez votre instance" @@ -411,6 +440,10 @@ msgstr "Effacer" msgid "Clear playlist" msgstr "Vider la playlist" +#: front/src/components/audio/Player.vue:256 +msgid "Clear your queue" +msgstr "Vider la queue" + #: front/src/components/library/import/BatchList.vue:23 msgid "CLI" msgstr "CLI" @@ -449,6 +482,7 @@ msgid "Confirm" msgstr "Confirmer" #: front/src/views/auth/EmailConfirm.vue:4 src/views/auth/EmailConfirm.vue:20 +#: front/src/views/auth/EmailConfirm.vue:51 msgid "Confirm your email" msgstr "Confirmer votre email" @@ -456,10 +490,18 @@ msgstr "Confirmer votre email" msgid "Confirmation code" msgstr "Code de confirmation" +#: front/src/components/playlists/Editor.vue:163 +msgid "Copy tracks from current queue to playlist" +msgstr "Copier les pistes de la queue dans la playlist" + #: front/src/components/Home.vue:88 msgid "Covers, lyrics, our goal is to have them all ;)" msgstr "Pochettes d'albums, paroles, notre but est de tout implémenter ;)" +#: front/src/components/auth/Signup.vue:4 +msgid "Create a funkwhale account" +msgstr "Créer un compte funkwhale" + #: front/src/components/playlists/Form.vue:2 msgid "Create a new playlist" msgstr "Créer une nouvelle playlist" @@ -473,6 +515,10 @@ msgstr "Créer un compte" msgid "Create import" msgstr "Créer un import" +#: front/src/components/auth/Signup.vue:51 +msgid "Create my account" +msgstr "Créer mon compte" + #: front/src/components/playlists/Form.vue:34 msgid "Create playlist" msgstr "Créer une playlist" @@ -491,9 +537,9 @@ msgstr "Date de création" msgid "Current track" msgstr "Piste actuelle" -#: front/src/components/manage/library/FilesTable.vue:184 -#: front/src/components/manage/library/RequestsTable.vue:190 -#: front/src/components/manage/users/InvitationsTable.vue:161 +#: front/src/components/manage/library/FilesTable.vue:189 +#: front/src/components/manage/library/RequestsTable.vue:195 +#: front/src/components/manage/users/InvitationsTable.vue:166 #: front/src/views/playlists/Detail.vue:32 msgid "Delete" msgstr "Supprimer" @@ -502,6 +548,10 @@ msgstr "Supprimer" msgid "Delete playlist" msgstr "Supprimer la playlist" +#: front/src/views/radios/Detail.vue:28 +msgid "Delete radio" +msgstr "Supprimer la radio" + #: front/src/components/federation/LibraryFollowTable.vue:52 #: front/src/components/federation/LibraryFollowTable.vue:63 msgid "Deny" @@ -512,7 +562,10 @@ msgid "Deny access?" msgstr "Refuser l'accès ?" #: front/src/components/favorites/List.vue:34 -#: src/components/library/Radios.vue:31 +#: src/components/library/Artists.vue:26 +#: front/src/components/library/Radios.vue:31 +#: front/src/components/manage/library/FilesTable.vue:20 +#: front/src/components/manage/library/RequestsTable.vue:20 #: front/src/components/manage/users/UsersTable.vue:20 #: front/src/views/federation/LibraryList.vue:29 #: src/views/playlists/List.vue:28 @@ -523,6 +576,10 @@ msgstr "Descendant" msgid "Detail" msgstr "Détail" +#: front/src/views/admin/users/UsersDetail.vue:146 +msgid "Determine if the user account is active or not. Inactive users cannot login or user the service." +msgstr "Détermine si le compte utilisateur est actif ou non. Les comptes inactifs ne peuvent pas se connecter ou utiliser le service." + #: front/src/components/auth/Settings.vue:71 #: front/src/components/auth/SubsonicTokenForm.vue:52 msgid "Disable access" @@ -556,6 +613,10 @@ msgstr "Souhaitez-vous confirmer cette action ?" msgid "Do you want to delete the playlist \"%{ playlist }\"?" msgstr "Voulez-vous supprimer la playlist \"%{ playlist }\" ?" +#: front/src/views/radios/Detail.vue:26 +msgid "Do you want to delete the radio \"{{ radio }}\"?" +msgstr "Voulez-vous supprimer la radio \"%{ radio }\" ?" + #: front/src/components/common/ActionTable.vue:29 msgid "Do you want to launch %{ action } on %{ count } element?" msgid_plural "Do you want to launch %{ action } on %{ count } elements?" @@ -575,6 +636,10 @@ msgstr "Documentation" msgid "Download" msgstr "Télécharger" +#: front/src/components/playlists/Editor.vue:49 +msgid "Drag and drop rows to reorder tracks in the playlist" +msgstr "Glissez et déposer les lignes pour réordonner les pistes dans la playlist" + #: front/src/components/library/Track.vue:58 #: front/src/components/manage/library/FilesTable.vue:43 msgid "Duration" @@ -592,6 +657,7 @@ msgstr "Éditer les informations de cette instance" msgid "Edit..." msgstr "Éditer..." +#: front/src/components/auth/Signup.vue:29 #: front/src/components/manage/users/UsersTable.vue:38 msgid "Email" msgstr "Email" @@ -612,11 +678,47 @@ msgstr "Terminer l'édition" msgid "Ensure your music files are properly tagged before uploading them." msgstr "Vérifier que vos fichiers musicaux sont correctement taggués avant de les envoyer." +#: front/src/components/library/Radios.vue:124 +msgid "Enter a radio name..." +msgstr "Saisissez un nom de radio..." + +#: front/src/components/library/Artists.vue:118 +msgid "Enter an artist name..." +msgstr "Saisissez un nom d'artiste..." + +#: front/src/views/federation/LibraryList.vue:122 +msgid "Enter an library domain name..." +msgstr "Saisissez un nom de domaine..." + +#: front/src/views/playlists/List.vue:104 +msgid "Enter an playlist name..." +msgstr "Saisissez un nom de playlist..." + +#: front/src/components/auth/Signup.vue:97 +msgid "Enter your email" +msgstr "Saisissez votre email" + +#: front/src/components/auth/Signup.vue:95 +msgid "Enter your invitation code (case insensitive)" +msgstr "Saisissez votre code d'invitation (insensible à la casse)" + +#: front/src/components/metadata/Search.vue:114 +msgid "Enter your search query..." +msgstr "Saisissez votre recherche..." + +#: front/src/components/auth/Signup.vue:96 +msgid "Enter your username" +msgstr "Saisissez votre nom d'utilisateur·rice" + +#: front/src/components/auth/Login.vue:77 +msgid "Enter your username or email" +msgstr "Saisissez votre nom d'utilisateur·rice ou email" + #: front/src/components/auth/SubsonicTokenForm.vue:20 msgid "Error" msgstr "Erreur" -#: front/src/views/admin/Settings.vue:82 +#: front/src/views/admin/Settings.vue:87 msgid "Error reporting" msgstr "Rapports d'erreur" @@ -654,11 +756,11 @@ msgstr "Erreur lors du scan de la bibliothèque" msgid "Errored" msgstr "En erreur" -#: front/src/components/playlists/Form.vue:84 +#: front/src/components/playlists/Form.vue:89 msgid "Everyone" msgstr "Tout le monde" -#: front/src/components/playlists/Form.vue:80 +#: front/src/components/playlists/Form.vue:85 msgid "Everyone on this instance" msgstr "Tout le monde sur cette instance" @@ -694,15 +796,24 @@ msgstr "Favoris" msgid "Federate with a new instance" msgstr "Fédérer avec une nouvelle instance" +#: front/src/views/federation/LibraryTrackList.vue:21 +msgid "Federated tracks" +msgstr "Pistes fédérées" + #: front/src/components/Sidebar.vue:86 #: src/components/library/import/BatchList.vue:25 -#: front/src/components/manage/users/UsersTable.vue:175 -#: front/src/views/admin/Settings.vue:79 -#: src/views/admin/users/UsersDetail.vue:156 -#: front/src/views/federation/LibraryDetail.vue:40 +#: front/src/components/manage/users/UsersTable.vue:180 +#: front/src/views/admin/Settings.vue:84 +#: src/views/admin/users/UsersDetail.vue:161 +#: front/src/views/federation/Base.vue:35 +#: src/views/federation/LibraryDetail.vue:40 msgid "Federation" msgstr "Fédération" +#: front/src/views/federation/LibraryDetail.vue:3 +msgid "File mirroring" +msgstr "Réplication des fichiers" + #: front/src/components/library/import/FileUpload.vue:43 msgid "File name" msgstr "Nom du fichier" @@ -712,6 +823,7 @@ msgid "File upload" msgstr "Envoi de fichier" #: front/src/views/admin/library/Base.vue:5 +#: src/views/admin/library/FilesList.vue:21 msgid "Files" msgstr "Fichiers" @@ -744,6 +856,7 @@ msgid "Follow status" msgstr "Statut de l'abonnement" #: front/src/views/federation/Base.vue:13 +#: front/src/views/federation/LibraryFollowersList.vue:24 msgid "Followers" msgstr "Abonnés" @@ -821,15 +934,17 @@ msgstr "Retourner à la page d'accueil" msgid "Grab corresponding metadata" msgstr "Récupérer les métadonnées correspondantes" +#: front/src/components/library/Home.vue:66 +msgid "Home" +msgstr "Accueil" + #: front/src/components/instance/Stats.vue:36 msgid "Hours of music" msgstr "Heures de musique" #: front/src/components/auth/SubsonicTokenForm.vue:11 msgid "However, accessing Funkwhale from those clients require a separate password you can set below." -msgstr "" -"Cependant, accéder à Funkwhale depuis ces clients requiert un mot de passe " -"distinct que vous pouvez configurer ci-dessous." +msgstr "Cependant, accéder à Funkwhale depuis ces clients requiert un mot de passe distinct que vous pouvez configurer ci-dessous." #: front/src/components/library/import/BatchList.vue:34 msgid "ID" @@ -837,12 +952,9 @@ msgstr "ID" #: front/src/views/auth/PasswordResetConfirm.vue:24 msgid "If the email address provided in the previous step is valid and binded to a user account, you should receive an email with reset instructions in the next couple of minutes." -msgstr "" -"Si l'adresse email que vous avez fournie est valide et associée à un compte " -"utilisateur, vous allez recevoir un email contenant les instructions de " -"réinitialisation au cours des prochaines minutes." +msgstr "Si l'adresse email que vous avez fournie est valide et associée à un compte utilisateur, vous allez recevoir un email contenant les instructions de réinitialisation au cours des prochaines minutes." -#: front/src/components/federation/LibraryTrackTable.vue:159 +#: front/src/components/federation/LibraryTrackTable.vue:164 #: front/src/components/library/Library.vue:17 msgid "Import" msgstr "Import" @@ -861,10 +973,18 @@ msgstr[1] "Importer %{ count } pistes" msgid "Import batch" msgstr "Lot d'import" +#: front/src/components/library/import/BatchDetail.vue:185 +msgid "Import Batch #%{ id }" +msgstr "Lot d'imports #%{ id }" + #: front/src/components/library/Library.vue:20 msgid "Import batches" msgstr "Lots d'imports" +#: front/src/components/library/import/BatchList.vue:117 +msgid "Import Batches" +msgstr "Lots d'imports" + #: front/src/components/manage/library/FilesTable.vue:40 #: front/src/components/manage/library/RequestsTable.vue:53 msgid "Import date" @@ -878,6 +998,10 @@ msgstr "Page de détail de l'import" msgid "Import music" msgstr "Importer de la musique" +#: front/src/components/library/import/Main.vue:267 +msgid "Import Music" +msgstr "Importer de la musique" + #: front/src/components/Home.vue:71 msgid "Import music from various platforms, such as YouTube or SoundCloud" msgstr "Importez de la musique de différentes plate-formes, comme YouTube ou Soundcloud" @@ -889,6 +1013,7 @@ msgstr "Import en attente" #: front/src/views/admin/library/Base.vue:9 #: front/src/views/admin/library/RequestsList.vue:3 +#: front/src/views/admin/library/RequestsList.vue:21 msgid "Import requests" msgstr "Requêtes d'import" @@ -919,7 +1044,7 @@ msgstr "Importé" msgid "Imported URL" msgstr "URL importée" -#: front/src/views/admin/Settings.vue:77 +#: front/src/views/admin/Settings.vue:82 msgid "Imports" msgstr "Imports" @@ -935,18 +1060,40 @@ msgstr "Dans la bibliothèque" msgid "Input a MusicBrainz ID manually:" msgstr "Saisir manuellement un ID MusicBrainz :" +#: front/src/views/auth/PasswordReset.vue:53 +msgid "Input the email address binded to your account" +msgstr "Saisissez l'adresse email associée à votre compte" + #: front/src/components/playlists/Editor.vue:31 msgid "Insert from queue (%{ count } track)" msgid_plural "Insert from queue (%{ count } tracks)" msgstr[0] "Insérer depuis la queue (%{ count } piste)" msgstr[1] "Insérer depuis la queue (%{ count } pistes)" -#: front/src/views/admin/Settings.vue:75 +#: front/src/views/admin/Settings.vue:80 msgid "Instance information" msgstr "Informations relatives à cette instance" +#: front/src/views/admin/Settings.vue:75 +msgid "Instance settings" +msgstr "Paramètres de l'instance" + +#: front/src/views/instance/Timeline.vue:57 +msgid "Instance Timeline" +msgstr "Fil de l'instance" + +#: front/src/components/auth/Signup.vue:42 +#: front/src/components/manage/users/InvitationForm.vue:11 +msgid "Invitation code" +msgstr "Code d'invitation" + +#: front/src/components/auth/Signup.vue:43 +msgid "Invitation code (optional)" +msgstr "Code d'invitation (optionnel)" + #: front/src/views/admin/users/Base.vue:8 #: src/views/admin/users/InvitationsList.vue:3 +#: front/src/views/admin/users/InvitationsList.vue:24 msgid "Invitations" msgstr "Invitations" @@ -1000,18 +1147,25 @@ msgstr "Démarrer le scan" msgid "Learn more about this instance" msgstr "En apprendre plus à propos de cette instance" +#: front/src/components/manage/users/InvitationForm.vue:58 +msgid "Leave empty for a random code" +msgstr "Laisser vide pour obtenir un code aléatoire" + #: front/src/components/requests/Form.vue:10 msgid "Leave this field empty if you're requesting the whole discography." msgstr "Laisser ce champ vide si vous voulez suggérer toute la discographie." #: front/src/views/federation/Base.vue:5 +#: src/views/federation/LibraryList.vue:123 msgid "Libraries" msgstr "Bibliothèques" #: front/src/components/Sidebar.vue:69 #: front/src/components/federation/LibraryTrackTable.vue:36 -#: front/src/components/manage/users/UsersTable.vue:171 -#: front/src/views/admin/users/UsersDetail.vue:152 +#: front/src/components/instance/Stats.vue:30 +#: front/src/components/manage/users/UsersTable.vue:176 +#: front/src/views/admin/users/UsersDetail.vue:157 +#: front/src/views/federation/LibraryDetail.vue:194 msgid "Library" msgstr "Bibliothèque" @@ -1027,6 +1181,10 @@ msgstr "Nom de la bibliothèque" msgid "Library size" msgstr "Taille de la bibliothèque" +#: front/src/components/federation/LibraryForm.vue:96 +msgid "library@demo.funkwhale.audio" +msgstr "library@demo.funkwhale.audio" + #: front/src/App.vue:29 msgid "Links" msgstr "Liens" @@ -1039,10 +1197,18 @@ msgstr "Chargement de la timeline ..." msgid "Loading your favorites..." msgstr "Chargement de vos favoris ..." +#: front/src/components/auth/Login.vue:78 +msgid "Log In" +msgstr "Connexion" + #: front/src/components/auth/Login.vue:4 msgid "Log in to your Funkwhale account" msgstr "Connectez vous à votre compte Funkwhale" +#: front/src/components/auth/Logout.vue:20 +msgid "Log Out" +msgstr "Déconnexion" + #: front/src/components/Sidebar.vue:38 msgid "Logged in as %{ username }" msgstr "Connecté·e en tant que %{ username }" @@ -1055,23 +1221,43 @@ msgstr "Connexion" msgid "Logout" msgstr "Déconnexion" +#: front/src/components/audio/Player.vue:252 +msgid "Looping disabled. Click to switch to single-track looping." +msgstr "Répétition désactivée. Cliquez pour activer la répétition sur la piste actuelle." + +#: front/src/components/audio/Player.vue:253 +msgid "Looping on a single track. Click to switch to whole queue looping." +msgstr "Répétition sur la piste en cours. Cliquer pour répêter sur l'intégralité de la queue." + +#: front/src/components/audio/Player.vue:254 +msgid "Looping on whole queue. Click to disable looping." +msgstr "Répétition sur l'intégralité, cliquez pour désactiver la répétition." + #: front/src/components/library/Track.vue:94 msgid "Lyrics" msgstr "Paroles" +#: front/src/views/admin/library/Base.vue:25 +msgid "Manage library" +msgstr "Gérer la bibliothèque" + #: front/src/components/playlists/PlaylistModal.vue:3 msgid "Manage playlists" msgstr "Gérer les playlists" +#: front/src/views/admin/users/Base.vue:20 +msgid "Manage users" +msgstr "Gérer les utilisateur·rices" + #: front/src/views/playlists/List.vue:8 msgid "Manage your playlists" msgstr "Gérer vos playlists" -#: front/src/components/manage/library/RequestsTable.vue:192 +#: front/src/components/manage/library/RequestsTable.vue:197 msgid "Mark as closed" msgstr "Marquer comme fermé" -#: front/src/components/manage/library/RequestsTable.vue:191 +#: front/src/components/manage/library/RequestsTable.vue:196 msgid "Mark as imported" msgstr "Marquer comme importé" @@ -1105,10 +1291,22 @@ msgstr "Requête musicale" msgid "Music requests" msgstr "Requête musicale" +#: front/src/components/audio/Player.vue:251 +msgid "Mute" +msgstr "Couper le son" + #: front/src/components/Sidebar.vue:34 msgid "My account" msgstr "Mon compte" +#: front/src/components/playlists/Form.vue:74 +msgid "My awesome playlist" +msgstr "Ma playlist d'enfer" + +#: front/src/components/library/radios/Builder.vue:206 +msgid "My awesome radio" +msgstr "Ma radio d'enfer" + #: front/src/components/library/Track.vue:64 #: src/components/library/Track.vue:75 #: front/src/components/library/Track.vue:86 @@ -1141,21 +1339,23 @@ msgstr "Les nouvelles pistes seront ajoutées ici automatiquement." msgid "Next step" msgstr "Prochaine étape" +#: front/src/components/audio/Player.vue:249 +msgid "Next track" +msgstr "Piste suivante" + #: front/src/components/Sidebar.vue:124 msgid "No" msgstr "Non" #: front/src/components/Home.vue:103 msgid "No add-ons, no plugins : you only need a web library" -msgstr "" -"Pas d'addons ou d'extension à installer, il vous suffit d'une bibliothèque " -"sur le web" +msgstr "Pas d'addons ou d'extension à installer, il vous suffit d'une bibliothèque sur le web" #: front/src/components/library/Track.vue:102 msgid "No lyrics available for this track." msgstr "Pas de paroles disponibles pour cette piste." -#: front/src/components/playlists/Form.vue:76 +#: front/src/components/playlists/Form.vue:81 msgid "Nobody except me" msgstr "Personne à part moi" @@ -1198,10 +1398,10 @@ msgstr "Ou" #: front/src/components/library/Radios.vue:17 #: front/src/components/manage/library/FilesTable.vue:9 #: front/src/components/manage/library/RequestsTable.vue:9 +#: front/src/components/manage/users/InvitationsTable.vue:9 #: front/src/components/manage/users/UsersTable.vue:9 #: front/src/views/federation/LibraryList.vue:18 #: src/views/playlists/List.vue:17 -#: front/src/components/manage/users/InvitationsTable.vue:10 msgid "Ordering" msgstr "Ordre" @@ -1220,12 +1420,15 @@ msgstr "Direction" msgid "Owner" msgstr "Propriétaire" +#: front/src/components/PageNotFound.vue:33 +msgid "Page Not Found" +msgstr "Page non trouvée" + #: front/src/components/PageNotFound.vue:7 -#, fuzzy msgid "Page not found!" msgstr "Page non trouvée !" -#: front/src/components/auth/Login.vue:32 +#: front/src/components/auth/Login.vue:32 src/components/auth/Signup.vue:38 msgid "Password" msgstr "Mot de passe" @@ -1237,6 +1440,10 @@ msgstr "Mot de passe mis à jour" msgid "Password updated successfully" msgstr "Mot de passe modifié avec succès" +#: front/src/components/audio/Player.vue:248 +msgid "Pause track" +msgstr "Mettre en pause" + #: front/src/components/federation/LibraryFollowTable.vue:46 #: front/src/components/library/import/BatchDetail.vue:33 #: front/src/components/library/import/BatchDetail.vue:69 @@ -1252,7 +1459,15 @@ msgstr "En attente" msgid "Pending approval" msgstr "En attente de validation" -#: front/src/components/requests/Form.vue:26 +#: front/src/components/Sidebar.vue:216 +msgid "Pending follow requests" +msgstr "Demandes d'abonnement en attente" + +#: front/src/components/Sidebar.vue:215 src/views/admin/library/Base.vue:26 +msgid "Pending import requests" +msgstr "Requêtes en attente" + +#: front/src/components/requests/Form.vue:26 src/views/federation/Base.vue:36 msgid "Pending requests" msgstr "Requêtes en attente" @@ -1268,7 +1483,8 @@ msgstr "Jouer" #: front/src/components/audio/album/Card.vue:50 #: front/src/components/audio/artist/Card.vue:44 -#: src/components/library/Album.vue:28 front/src/views/playlists/Detail.vue:22 +#: src/components/library/Album.vue:28 +#: front/src/components/playlists/Card.vue:26 src/views/playlists/Detail.vue:22 msgid "Play all" msgstr "Tout lire" @@ -1276,7 +1492,7 @@ msgstr "Tout lire" msgid "Play all albums" msgstr "Lire tous les albums" -#: front/src/components/audio/PlayButton.vue:47 +#: front/src/components/audio/PlayButton.vue:52 msgid "Play immediatly" msgstr "Jouer immédiatement" @@ -1288,6 +1504,14 @@ msgstr "Lire ensuite" msgid "Play now" msgstr "Lire maintenant" +#: front/src/components/audio/Player.vue:247 +msgid "Play track" +msgstr "Jouer" + +#: front/src/views/playlists/Detail.vue:89 +msgid "Playlist" +msgstr "Playlist" + #: front/src/views/playlists/Detail.vue:11 msgid "Playlist containing %{ count } track, by %{ username }" msgid_plural "Playlist containing %{ count } tracks, by %{ username }" @@ -1315,7 +1539,7 @@ msgid "Playlist visibility" msgstr "Visibilité de la playlist" #: front/src/components/Sidebar.vue:55 src/components/library/Library.vue:13 -#: front/src/views/admin/Settings.vue:78 +#: front/src/views/admin/Settings.vue:83 src/views/playlists/List.vue:103 msgid "Playlists" msgstr "Playlists" @@ -1331,6 +1555,10 @@ msgstr "Merci de vérifier que votre mot de passe est correct" msgid "Previous step" msgstr "Étape précédente" +#: front/src/components/audio/Player.vue:246 +msgid "Previous track" +msgstr "Piste précédente" + #: front/src/views/auth/EmailConfirm.vue:26 #: front/src/views/auth/PasswordResetConfirm.vue:31 msgid "Proceed to login" @@ -1348,16 +1576,25 @@ msgstr "Template de recherche" msgid "Queue" msgstr "Queue" -#: front/src/components/audio/Player.vue:183 +#: front/src/components/audio/Player.vue:189 msgid "Queue shuffled!" msgstr "La queue a été mélangée !" +#: front/src/views/radios/Detail.vue:80 +msgid "Radio" +msgstr "Radio" + +#: front/src/components/library/radios/Builder.vue:205 +msgid "Radio Builder" +msgstr "Éditeur de radio" + #: front/src/components/library/radios/Builder.vue:11 msgid "Radio name" msgstr "Nom de la radio" #: front/src/components/library/Home.vue:18 #: src/components/library/Library.vue:10 +#: front/src/components/library/Radios.vue:125 msgid "Radios" msgstr "Radios" @@ -1384,9 +1621,7 @@ msgstr "Inscrit·e depuis le %{ date }" #: front/src/components/auth/Signup.vue:9 msgid "Registration are closed on this instance, you will need an invitation code to signup." -msgstr "" -"Les inscriptions sont fermées sur cette instance, vous aurez besoin d'un " -"code d'invitation pour vous inscrire." +msgstr "Les inscriptions sont fermées sur cette instance, vous aurez besoin d'un code d'invitation pour vous inscrire." #: front/src/components/manage/users/UsersTable.vue:71 msgid "regular user" @@ -1413,7 +1648,20 @@ msgstr "Demander un nouveau mot de passe pour l'API Subsonic ?" msgid "Request a password" msgstr "Demander un mot de passe" +#: front/src/components/requests/Form.vue:20 +msgid "Request submitted!" +msgstr "Requête envoyée" + +#: front/src/components/library/import/BatchDetail.vue:49 +msgid "Rerun errored jobs" +msgstr "Relancer les tâches échouées" + +#: front/src/components/library/import/BatchDetail.vue:187 +msgid "Rerun job" +msgstr "Relancer la tâche" + #: front/src/components/auth/Login.vue:34 src/views/auth/PasswordReset.vue:4 +#: front/src/views/auth/PasswordReset.vue:52 msgid "Reset your password" msgstr "Réinitialiser votre mot de passe" @@ -1456,6 +1704,39 @@ msgstr "Rechercher" msgid "Search an entity you want to import:" msgstr "Rechercher une ressource que vous voulez importer :" +#: front/src/components/manage/library/RequestsTable.vue:180 +msgid "Search by artist, username, comment..." +msgstr "Rechercher par artiste, nom d'utilisateur·rice, commentaire..." + +#: front/src/components/library/import/BatchDetail.vue:188 +msgid "Search by source..." +msgstr "Rechercher par source..." + +#: front/src/components/library/import/BatchList.vue:116 +msgid "Search by submitter, source..." +msgstr "Rechercher par utilisateur·rice, source..." + +#: front/src/components/federation/LibraryTrackTable.vue:150 +#: front/src/components/manage/library/FilesTable.vue:175 +msgid "Search by title, artist, domain..." +msgstr "Rechercher par titre, artiste, domaine..." + +#: front/src/components/federation/LibraryFollowTable.vue:140 +msgid "Search by username, domain..." +msgstr "Rechercher par nom d'utilisateur·rice, domaine..." + +#: front/src/components/manage/users/InvitationsTable.vue:152 +msgid "Search by username, email, code..." +msgstr "Rechercher par nom d'utilisateur·rice, email, code..." + +#: front/src/components/manage/users/UsersTable.vue:162 +msgid "Search by username, email, name..." +msgstr "Rechercher par nom d'utilisateur·rice, email, nom..." + +#: front/src/components/audio/SearchBar.vue:20 +msgid "Search for artists, albums, tracks..." +msgstr "Rechercher des artistes, des albums, des pistes" + #: front/src/components/audio/Search.vue:2 msgid "Search for some music" msgstr "Rechercher de la musique" @@ -1505,8 +1786,8 @@ msgid "Send a follow request" msgstr "Envoyer une demande d'abonnement" #: front/src/components/Sidebar.vue:96 -#: src/components/manage/users/UsersTable.vue:179 -#: front/src/views/admin/users/UsersDetail.vue:160 +#: src/components/manage/users/UsersTable.vue:184 +#: front/src/views/admin/users/UsersDetail.vue:165 msgid "Settings" msgstr "Paramètres" @@ -1538,6 +1819,10 @@ msgid_plural "Show %{ count } more tracks" msgstr[0] "Afficher 1 piste de plus" msgstr[1] "Afficher %{ count } pistes de plus" +#: front/src/components/forms/PasswordInput.vue:25 +msgid "Show/hide password" +msgstr "Afficher/masquer le mot de passe" + #: front/src/components/federation/LibraryFollowTable.vue:97 #: front/src/components/federation/LibraryTrackTable.vue:83 #: front/src/components/library/import/BatchDetail.vue:128 @@ -1549,6 +1834,14 @@ msgstr[1] "Afficher %{ count } pistes de plus" msgid "Showing results %{ start }-%{ end } on %{ total }" msgstr "Affichage des résultats %{ start }-%{ end } sur %{ total }" +#: front/src/components/audio/Player.vue:255 +msgid "Shuffle your queue" +msgstr "Mélanger votre queue" + +#: front/src/components/auth/Signup.vue:94 +msgid "Sign Up" +msgstr "Inscription" + #: front/src/components/manage/users/UsersTable.vue:40 #: front/src/views/admin/users/UsersDetail.vue:37 msgid "Sign-up" @@ -1567,9 +1860,7 @@ msgstr "Ignoré" #: front/src/components/requests/Form.vue:3 msgid "Something's missing in the library? Let us know what you would like to listen!" -msgstr "" -"Quelque chose manque dans la bibliothèque ? Dîtes nous ce que vous voulez " -"écouter !" +msgstr "Quelque chose manque dans la bibliothèque ? Dîtes nous ce que vous voulez écouter !" #: front/src/components/audio/Search.vue:25 msgid "Sorry, we did not found any album matching your query" @@ -1577,8 +1868,7 @@ msgstr "Désolé, nous n'avons trouvé aucun album correspondant à votre recher #: front/src/components/audio/Search.vue:16 msgid "Sorry, we did not found any artist matching your query" -msgstr "" -"Désolé, nous n'avons trouver aucun·a artiste correspondant à votre recherche" +msgstr "Désolé, nous n'avons trouver aucun·a artiste correspondant à votre recherche" #: front/src/components/library/import/BatchDetail.vue:82 #: front/src/components/library/import/BatchList.vue:38 @@ -1607,7 +1897,7 @@ msgstr "Démarrer" msgid "Start Upload" msgstr "Démarrer l'envoi" -#: front/src/views/admin/Settings.vue:81 +#: front/src/views/admin/Settings.vue:86 msgid "Statistics" msgstr "Statistiques" @@ -1617,10 +1907,11 @@ msgstr "Statistiques" #: front/src/components/library/import/BatchList.vue:11 #: front/src/components/library/import/BatchList.vue:37 #: front/src/components/library/import/FileUpload.vue:45 +#: front/src/components/manage/library/RequestsTable.vue:24 #: front/src/components/manage/library/RequestsTable.vue:48 +#: front/src/components/manage/users/InvitationsTable.vue:17 #: front/src/components/manage/users/InvitationsTable.vue:39 #: front/src/components/manage/users/UsersTable.vue:43 -#: front/src/components/manage/users/InvitationsTable.vue:18 msgid "Status" msgstr "Statut" @@ -1649,7 +1940,7 @@ msgstr "Envoyer une nouvelle requête" msgid "Submitted by" msgstr "Proposé par" -#: front/src/views/admin/Settings.vue:80 +#: front/src/views/admin/Settings.vue:85 msgid "Subsonic" msgstr "Subsonic" @@ -1669,9 +1960,11 @@ msgstr "Synchronisation des changements avec le serveur..." #: front/src/components/Home.vue:26 msgid "That's simple: we loved Grooveshark and we want to build something even better." -msgstr "" -"C'est simple : nous adorions Grooveshark et nous voulions construire quelque " -"chose d'encore mieux." +msgstr "C'est simple : nous adorions Grooveshark et nous voulions construire quelque chose d'encore mieux." + +#: front/src/components/requests/Form.vue:73 +msgid "The Beatles, Mickael Jackson…" +msgstr "Les Beatles, Mickael Jackson..." #: front/src/App.vue:56 msgid "The funkwhale logo was kindly designed and provided by Francis Gading." @@ -1679,30 +1972,43 @@ msgstr "Le logo de Funkwhale a été généreusement dessiné et fourni par Fran #: front/src/components/Home.vue:124 msgid "The plaform is free and open-source, you can install it and modify it without worries" -msgstr "" -"La plateforme est gratuite et open-source, vous pouvez l'installer et la " -"modifier sans restrictions" +msgstr "La plateforme est gratuite et open-source, vous pouvez l'installer et la modifier sans restrictions" #: front/src/components/auth/SubsonicTokenForm.vue:4 msgid "The Subsonic API is not available on this Funkwhale instance." msgstr "L'API Subsonic n'est pas disponible sur cette instance Funkwhale." +#: front/src/components/requests/Form.vue:74 +msgid "The White Album, Thriller…" +msgstr "L'Album Blanc, Thriller..." + #: front/src/components/library/import/Main.vue:149 msgid "This import will be associated with the music request below. After the import is finished, the request will be marked as fulfilled." msgstr "Cet import sera associé à la requête ci dessous. Une fois l'import terminé, la requête sera marquée comme complétée." +#: front/src/views/federation/LibraryDetail.vue:195 +msgid "This indicate if the remote library granted you access" +msgstr "Ceci indique si la bibliothèque distance vous à accordé l'accès" + #: front/src/components/auth/Profile.vue:15 msgid "This is you!" msgstr "C'est vous !" -#: front/src/components/audio/PlayButton.vue:50 +#: front/src/components/common/ActionTable.vue:37 +msgid "This may affect a lot of elements, please double check this is really what you want." +msgstr "Cette opération peut affecter de nombreux éléments, merci de vérifier que c'est bien ce que vous souhaitez." + +#: front/src/components/audio/PlayButton.vue:55 msgid "This track is not imported and cannot be played" msgstr "Cette piste n'est pas importée et ne peut pas être jouée" #: front/src/views/playlists/Detail.vue:36 msgid "This will completely delete this playlist and cannot be undone." -msgstr "" -"Cela supprimera définitivement cette playlist et ne pourra pas être annulé." +msgstr "Cela supprimera définitivement cette playlist et ne pourra pas être annulé." + +#: front/src/views/radios/Detail.vue:27 +msgid "This will completely delete this radio and cannot be undone." +msgstr "Cela supprimera définitivement cette radio et ne pourra pas être annulé." #: front/src/components/auth/SubsonicTokenForm.vue:51 msgid "This will completely disable access to the Subsonic API using from account." @@ -1714,9 +2020,7 @@ msgstr "Cela va effacer vos données locales et vous déconnecter, voulez-vous c #: front/src/components/auth/SubsonicTokenForm.vue:36 msgid "This will log you out from existing devices that use the current password." -msgstr "" -"Cela vous déconnectera sur l'ensemble de vos appareils utilisant ce mot de " -"passe." +msgstr "Cela vous déconnectera sur l'ensemble de vos appareils utilisant ce mot de passe." #: front/src/components/playlists/Editor.vue:44 msgid "This will remove all tracks from this playlist and cannot be undone." @@ -1728,8 +2032,10 @@ msgstr "Cela supprimera toutes les pistes de la playlist et ne pourra pas être msgid "Title" msgstr "Titre" +#: front/src/components/audio/SearchBar.vue:27 +#: src/components/library/Track.vue:174 #: front/src/components/library/import/BatchDetail.vue:84 -#: front/src/components/metadata/Search.vue:133 +#: front/src/components/metadata/Search.vue:138 msgid "Track" msgstr "Piste" @@ -1747,7 +2053,8 @@ msgstr "pistes" #: front/src/components/library/Album.vue:43 #: front/src/components/playlists/PlaylistModal.vue:33 -#: front/src/views/federation/Base.vue:8 +#: front/src/views/federation/Base.vue:8 src/views/playlists/Detail.vue:49 +#: front/src/views/radios/Detail.vue:34 msgid "Tracks" msgstr "Pistes" @@ -1783,6 +2090,10 @@ msgstr "Inconnu" msgid "Unlimited music" msgstr "Musique illimitée" +#: front/src/components/audio/Player.vue:250 +msgid "Unmute" +msgstr "Réactiver le son" + #: front/src/components/playlists/Form.vue:33 msgid "Update playlist" msgstr "Mettre à jour la playlist" @@ -1795,8 +2106,8 @@ msgstr "Mettre à jour les paramètres" msgid "Update your password" msgstr "Mettre à jour votre mot de passe" -#: front/src/components/manage/users/UsersTable.vue:167 -#: front/src/views/admin/users/UsersDetail.vue:148 +#: front/src/components/manage/users/UsersTable.vue:172 +#: front/src/views/admin/users/UsersDetail.vue:153 msgid "Upload" msgstr "Envoi" @@ -1812,18 +2123,21 @@ msgstr "Envoi en cours..." msgid "Use another instance" msgstr "Utiliser une autre instance" +#: front/src/components/requests/Form.vue:75 +msgid "Use this comment box to add details to your request if needed" +msgstr "Utilisez ce champ pour ajouter des détails à votre demande, si nécessaire" + +#: front/src/views/federation/LibraryDetail.vue:196 +msgid "Use this flag to enable/disable federation with this library" +msgstr "Utilisez ce réglage pour activer/désactiver la fédération avec cette bibliothèque" + #: front/src/views/auth/PasswordReset.vue:12 msgid "Use this form to request a password reset. We will send an email to the given address with instructions to reset your password." -msgstr "" -"Utilisez ce formulaire pour demander à réinitialiser votre mot de passe. " -"Vous recevrez un email à l'adresse indiquée contenant les instructions de " -"réinitialisation." +msgstr "Utilisez ce formulaire pour demander à réinitialiser votre mot de passe. Vous recevrez un email à l'adresse indiquée contenant les instructions de réinitialisation." #: front/src/components/federation/LibraryForm.vue:6 msgid "Use this form to scan an instance and setup federation." -msgstr "" -"Utilisez ce formulaire pour scanner le catalogue d'une instance et mettre en " -"place la fédération." +msgstr "Utilisez ce formulaire pour scanner le catalogue d'une instance et mettre en place la fédération." #: front/src/components/manage/users/InvitationsTable.vue:49 msgid "Used" @@ -1837,6 +2151,7 @@ msgstr "Utilisateur·rice" msgid "User activity" msgstr "Activité des utilisateur·ice·s" +#: front/src/components/auth/Signup.vue:19 #: front/src/components/manage/users/UsersTable.vue:37 msgid "Username" msgstr "Nom d'utilisateur" @@ -1849,14 +2164,18 @@ msgstr "Nom d'utilisateur ou email" msgid "users" msgstr "tilisateur·ice·s" -#: front/src/components/Sidebar.vue:102 src/views/admin/Settings.vue:76 +#: front/src/components/Sidebar.vue:102 src/views/admin/Settings.vue:81 #: front/src/views/admin/users/Base.vue:5 src/views/admin/users/UsersList.vue:3 +#: front/src/views/admin/users/UsersList.vue:21 msgid "Users" msgstr "Utilisateur·ice·s" #: front/src/components/library/Album.vue:37 #: src/components/library/Artist.vue:35 #: front/src/components/library/Track.vue:44 +#: front/src/components/library/import/ArtistImport.vue:131 +#: front/src/components/metadata/ArtistCard.vue:49 +#: front/src/components/metadata/ReleaseCard.vue:53 msgid "View on MusicBrainz" msgstr "Voir sur MusicBrainz" @@ -1868,6 +2187,10 @@ msgstr "Nous ne pouvons pas ajouter cette piste à une playlist" msgid "We cannot create the playlist" msgstr "Nous ne pouvons pas créer cette playlist" +#: front/src/components/auth/Signup.vue:13 +msgid "We cannot create your account" +msgstr "Nous ne pouvons pas créer votre compte" + #: front/src/components/auth/Login.vue:7 msgid "We cannot log you in" msgstr "Erreur lors de la connexion" @@ -1894,13 +2217,24 @@ msgstr "Désolé, la page demandée n’existe pas :" #: front/src/components/requests/Form.vue:21 msgid "We've received your request, you'll get some groove soon ;)" -msgstr "" -"Nous avons bien reçu votre requête, vous aurez bientôt de nos nouvelles ;)" +msgstr "Nous avons bien reçu votre requête, vous aurez bientôt de nos nouvelles ;)" + +#: front/src/components/Home.vue:152 +msgid "Welcome" +msgstr "Bienvenue" #: front/src/components/Home.vue:5 msgid "Welcome on Funkwhale" msgstr "Bienvenue sur Funkwhale" +#: front/src/components/library/import/Main.vue:114 +msgid "What is metadata?" +msgstr "Qu'est-ce que les métadonnées ?" + +#: front/src/views/federation/LibraryDetail.vue:197 +msgid "When enabled, auto importing will automatically import new tracks published in this library" +msgstr "Si ce réglage est activé, les nouvelles pistes ajoutées dans cette bibliothèque seront automatiquement importées" + #: front/src/components/Home.vue:24 msgid "Why funkwhale?" msgstr "Pourquoi Funkwhale ?" @@ -1919,21 +2253,15 @@ msgstr "Vous êtes actuellement connecté·e en tant que %{ username }" #: front/src/components/library/import/Main.vue:111 msgid "You can also skip this step and enter metadata manually." -msgstr "" -"Vous pouvez également sauter cette étape et entrer les métadonnées " -"manuellement." +msgstr "Vous pouvez également sauter cette étape et entrer les métadonnées manuellement." #: front/src/components/Home.vue:136 msgid "You can invite friends and family to your instance so they can enjoy your music" -msgstr "" -"Vous pouvez inviter vos ami·es et votre famille sur votre instance pour " -"qu'ils·elles puissent profiter de votre musique" +msgstr "Vous pouvez inviter vos ami·es et votre famille sur votre instance pour qu'ils·elles puissent profiter de votre musique" #: front/src/components/library/radios/Builder.vue:7 msgid "You can use this interface to build your own custom radio, which will play tracks according to your criteria." -msgstr "" -"Vous pouvez utiliser cette interface pour réaliser votre propre radio " -"personnalisée, qui jouera les pistes correspondant aux critères indiqués." +msgstr "Vous pouvez utiliser cette interface pour réaliser votre propre radio personnalisée, qui jouera les pistes correspondant aux critères indiqués." #: front/src/components/auth/SubsonicTokenForm.vue:8 msgid "You can use those to enjoy your playlist and music in offline mode, on your smartphone or tablet, for instance." @@ -1953,9 +2281,7 @@ msgstr "Vous allez être déconnecté de cette session et vous allez devoir vous #: front/src/components/auth/Settings.vue:38 msgid "You will have to update your password on your clients that use this password." -msgstr "" -"Vous devrez mettre à jour votre mot de passe sur l'ensemble des clients " -"utilisant ce mot de passe." +msgstr "Vous devrez mettre à jour votre mot de passe sur l'ensemble des clients utilisant ce mot de passe." #: front/src/components/library/import/Main.vue:103 msgid "You will import:" @@ -1965,6 +2291,10 @@ msgstr "Vous allez importer :" msgid "Your email address was confirmed, you can now use the service without limitations." msgstr "Votre adresse email a été confirmée, vous pouvez maintenant utiliser le service sans limitations." +#: front/src/components/favorites/List.vue:109 +msgid "Your Favorites" +msgstr "Vos favoris" + #: front/src/components/Home.vue:117 msgid "Your music, your way" msgstr "Votre musique, à votre façon" @@ -1975,28 +2305,13 @@ msgstr "Votre mot de passe a été mis à jour avec succès." #: front/src/components/auth/Settings.vue:68 msgid "Your Subsonic password will be changed to a new, random one, logging you out from devices that used the old Subsonic password" -msgstr "" -"Votre mot de passe Subsonic sera remplacé par un nouveau mot de passe " -"aléatoire, ce qui vous déconnectera de tous les appareils utilisant l'ancien " -"mot de passe" - -#: front/src/components/auth/Signup.vue:5 -msgid "Create a funkwhale account" -msgstr "Créer un compte funkwhale" - -#: front/src/components/auth/Signup.vue:43 -msgid "Invitation code" -msgstr "Code d'invitation" +msgstr "Votre mot de passe Subsonic sera remplacé par un nouveau mot de passe aléatoire, ce qui vous déconnectera de tous les appareils utilisant l'ancien mot de passe" #: front/src/components/auth/Login.vue:10 msgid "Please double-check your username/password couple is correct" msgstr "Merci de vérifier que votre nom d'utilisateur et mot de passe sont corrects" -#: front/src/components/auth/Settings.vue:66 -msgid "Changing your password will have the following consequences" -msgstr "Modifier votre mot de passe aura les conséquences suivantes" - -#: front/src/components/audio/PlayButton.vue:145 +#: front/src/components/audio/PlayButton.vue:150 msgid "%{ count } track was added to your queue" msgid_plural "%{ count } tracks were added to your queue" msgstr[0] "%{ count } piste a été ajouté à votre queue" @@ -2009,9 +2324,3 @@ msgstr "Il n'est pas possible pour le moment de télécharger un ensemble de pis #: front/src/components/manage/users/UsersTable.vue:55 msgid "Inactive" msgstr "Actif" - -#: front/src/components/common/ActionTable.vue:38 -msgid "This may affect a lot of elements, please double check this is really what you want." -msgstr "" -"Cette opération peut affecter de nombreux éléments, merci de vérifier que " -"c'est bien ce que vous souhaitez." diff --git a/front/src/components/About.vue b/front/src/components/About.vue index a4597b29a8a10dc6a99015d206762ec8cb0357a3..c9e1e23c84825a8731f90947f4b09b800f6fdf41 100644 --- a/front/src/components/About.vue +++ b/front/src/components/About.vue @@ -1,5 +1,5 @@ <template> - <div class="main pusher" v-title="'About This Instance'"> + <div class="main pusher" v-title="labels.title"> <div class="ui vertical center aligned stripe segment"> <div class="ui text container"> <h1 class="ui huge header"> @@ -49,7 +49,12 @@ export default { computed: { ...mapState({ instance: state => state.instance.settings.instance - }) + }), + labels () { + return { + title: this.$gettext('About this instance') + } + } } } </script> diff --git a/front/src/components/Home.vue b/front/src/components/Home.vue index 2f6196ea5df1b5c81696f3f5f84cfd6e58f5435e..648b1afc76728d53d4d4a66d9b9d5ff2a1590423 100644 --- a/front/src/components/Home.vue +++ b/front/src/components/Home.vue @@ -1,5 +1,5 @@ <template> - <div class="main pusher" v-title="'Welcome'"> + <div class="main pusher" v-title="labels.title"> <div class="ui vertical center aligned stripe segment"> <div class="ui text container"> <h1 class="ui huge header"> @@ -146,9 +146,12 @@ <script> export default { - name: 'home', - data () { - return {} + computed: { + labels () { + return { + title: this.$gettext('Welcome') + } + } } } </script> diff --git a/front/src/components/PageNotFound.vue b/front/src/components/PageNotFound.vue index 46b620c07ad78a254c9a611ceb56afd1afd34114..115bc5d023f1745f1399a868bff86c63c8d12c6a 100644 --- a/front/src/components/PageNotFound.vue +++ b/front/src/components/PageNotFound.vue @@ -1,5 +1,5 @@ <template> - <div class="main pusher" v-title="'Page Not Found'"> + <div class="main pusher" :v-title="labels.title"> <div class="ui vertical stripe segment"> <div class="ui text container"> <h1 class="ui huge header"> @@ -26,6 +26,13 @@ export default { return { path: window.location.href } + }, + computed: { + labels () { + return { + title: this.$gettext('Page Not Found') + } + } } } </script> diff --git a/front/src/components/Sidebar.vue b/front/src/components/Sidebar.vue index 8cdf425496134b5e8a4fd34c395a7e70b7583c45..beced0b44ecef42864dc3627ff3ad26503a6a358 100644 --- a/front/src/components/Sidebar.vue +++ b/front/src/components/Sidebar.vue @@ -70,7 +70,7 @@ <i class="book icon"></i><translate>Library</translate> <div :class="['ui', {'teal': $store.state.ui.notifications.importRequests > 0}, 'label']" - :title="$gettext('Pending import requests')"> + :title="labels.pendingRequests"> {{ $store.state.ui.notifications.importRequests }}</div> </router-link> @@ -87,7 +87,7 @@ <i class="sitemap icon"></i><translate>Federation</translate> <div :class="['ui', {'teal': $store.state.ui.notifications.federation > 0}, 'label']" - :title="$gettext('Pending follow requests')"> + :title="labels.pendingFollows"> {{ $store.state.ui.notifications.federation }}</div> </router-link> <router-link @@ -211,6 +211,14 @@ export default { queue: state => state.queue, url: state => state.route.path }), + labels () { + let pendingRequests = this.$gettext('Pending import requests') + let pendingFollows = this.$gettext('Pending follow requests') + return { + pendingRequests, + pendingFollows + } + }, showAdmin () { let adminPermissions = [ this.$store.state.auth.availablePermissions['federation'], diff --git a/front/src/components/audio/PlayButton.vue b/front/src/components/audio/PlayButton.vue index 497229d4408f69d1bd85bb5eccb02f044699b3cf..6c5ebbc2d6181b6bb19c23ecd15cdcccf3ca705e 100644 --- a/front/src/components/audio/PlayButton.vue +++ b/front/src/components/audio/PlayButton.vue @@ -1,7 +1,7 @@ <template> <div :title="title" :class="['ui', {'tiny': discrete}, 'buttons']"> <button - :title="$gettext('Add to current queue')" + :title="labels.addToQueue" @click="addNext(true)" :disabled="!playable" :class="['ui', {loading: isLoading}, {'mini': discrete}, {disabled: !playable}, 'button']"> @@ -42,6 +42,11 @@ export default { jQuery(this.$el).find('.ui.dropdown').dropdown() }, computed: { + labels () { + return { + addToQueue: this.$gettext('Add to current queue') + } + }, title () { if (this.playable) { return this.$gettext('Play immediatly') diff --git a/front/src/components/audio/Player.vue b/front/src/components/audio/Player.vue index 37457df7d7628d9a3a365a07c35b53e8eea86905..ef9356c98042fc3f83357a0274d5d9de20baa072 100644 --- a/front/src/components/audio/Player.vue +++ b/front/src/components/audio/Player.vue @@ -57,44 +57,50 @@ <div class="two wide column controls ui grid"> <div - :title="$gettext('Previous track')" + :title="labels.previousTrack" class="two wide column control" :disabled="emptyQueue"> <i @click="previous" :class="['ui', 'backward', {'disabled': emptyQueue}, 'big', 'icon']"></i> </div> <div v-if="!playing" - :title="$gettext('Play track')" + :title="labels.play" class="two wide column control"> <i @click="togglePlay" :class="['ui', 'play', {'disabled': !currentTrack}, 'big', 'icon']"></i> </div> <div v-else - :title="$gettext('Pause track')" + :title="labels.pause" class="two wide column control"> <i @click="togglePlay" :class="['ui', 'pause', {'disabled': !currentTrack}, 'big', 'icon']"></i> </div> <div - :title="$gettext('Next track')" + :title="labels.next" class="two wide column control" :disabled="!hasNext"> <i @click="next" :class="['ui', {'disabled': !hasNext}, 'step', 'forward', 'big', 'icon']" ></i> </div> <div class="two wide column control volume-control"> - <i :title="$gettext('Unmute')" @click="$store.commit('player/volume', 1)" v-if="volume === 0" class="volume off secondary icon"></i> - <i :title="$gettext('Mute')" @click="$store.commit('player/volume', 0)" v-else-if="volume < 0.5" class="volume down secondary icon"></i> - <i :title="$gettext('Mute')" @click="$store.commit('player/volume', 0)" v-else class="volume up secondary icon"></i> + <i + :title="labels.unmute" + @click="$store.commit('player/volume', 1)" v-if="volume === 0" class="volume off secondary icon"></i> + <i + :title="labels.mute" + @click="$store.commit('player/volume', 0)" v-else-if="volume < 0.5" class="volume down secondary icon"></i> + <i + :title="labels.mute" + @click="$store.commit('player/volume', 0)" v-else class="volume up secondary icon"></i> <input type="range" step="0.05" min="0" max="1" v-model="sliderVolume" /> </div> <div class="two wide column control looping"> <i - :title="$gettext('Looping disabled. Click to switch to single-track looping.')" + :title="labels.loopingDisabled" v-if="looping === 0" @click="$store.commit('player/looping', 1)" :disabled="!currentTrack" :class="['ui', {'disabled': !currentTrack}, 'step', 'repeat', 'secondary', 'icon']"></i> <i - :title="$gettext('Looping on a single track. Click to switch to whole queue looping.')" + :title="labels.loopingSingle" v-if="looping === 1" @click="$store.commit('player/looping', 2)" :disabled="!currentTrack" @@ -102,7 +108,7 @@ <span class="ui circular tiny orange label">1</span> </i> <i - :title="$gettext('Looping on whole queue. Click to disable looping.')" + :title="labels.loopingWhole" v-if="looping === 2" @click="$store.commit('player/looping', 0)" :disabled="!currentTrack" @@ -111,7 +117,7 @@ </div> <div :disabled="queue.tracks.length === 0" - :title="$gettext('Shuffle your queue')" + :title="labels.shuffle" class="two wide column control"> <div v-if="isShuffling" class="ui inline shuffling inverted small active loader"></div> <i v-else @click="shuffle()" :class="['ui', 'random', 'secondary', {'disabled': queue.tracks.length === 0}, 'icon']" ></i> @@ -119,7 +125,7 @@ <div class="one wide column"></div> <div :disabled="queue.tracks.length === 0" - :title="$gettext('Clear your queue')" + :title="labels.clear" class="two wide column control"> <i @click="clean()" :class="['ui', 'trash', 'secondary', {'disabled': queue.tracks.length === 0}, 'icon']" ></i> </div> @@ -236,6 +242,32 @@ export default { currentTimeFormatted: 'player/currentTimeFormatted', progress: 'player/progress' }), + labels () { + let previousTrack = this.$gettext('Previous track') + let play = this.$gettext('Play track') + let pause = this.$gettext('Pause track') + let next = this.$gettext('Next track') + let unmute = this.$gettext('Unmute') + let mute = this.$gettext('Mute') + let loopingDisabled = this.$gettext('Looping disabled. Click to switch to single-track looping.') + let loopingSingle = this.$gettext('Looping on a single track. Click to switch to whole queue looping.') + let loopingWhole = this.$gettext('Looping on whole queue. Click to disable looping.') + let shuffle = this.$gettext('Shuffle your queue') + let clear = this.$gettext('Clear your queue') + return { + previousTrack, + play, + pause, + next, + unmute, + mute, + loopingDisabled, + loopingSingle, + loopingWhole, + shuffle, + clear + } + }, style: function () { let style = { 'background': this.ambiantGradiant diff --git a/front/src/components/audio/Search.vue b/front/src/components/audio/Search.vue index d04777ec40edabfbf40b78e8105555bd67e8cf62..06ae2c1cc7636020b3cd6710b2c3c8c81e56b9c4 100644 --- a/front/src/components/audio/Search.vue +++ b/front/src/components/audio/Search.vue @@ -4,7 +4,7 @@ <div :class="['ui', {'loading': isLoading }, 'search']"> <div class="ui icon big input"> <i class="search icon"></i> - <input ref="search" class="prompt" placeholder="Artist, album, track..." v-model.trim="query" type="text" /> + <input ref="search" class="prompt" :placeholder="labels.searchPlaceholder" v-model.trim="query" type="text" /> </div> </div> <template v-if="query.length > 0"> @@ -59,6 +59,13 @@ export default { } this.search() }, + computed: { + labels () { + return { + searchPlaceholder: this.$gettext('Artist, album, track...') + } + } + }, methods: { search: _.debounce(function () { if (this.query.length < 1) { diff --git a/front/src/components/audio/SearchBar.vue b/front/src/components/audio/SearchBar.vue index d5cb39e3232fd83c1c807d457fecf78249e7951d..024a36906875791233438dc6a19e826798907f1f 100644 --- a/front/src/components/audio/SearchBar.vue +++ b/front/src/components/audio/SearchBar.vue @@ -1,7 +1,7 @@ <template> <div class="ui fluid category search"> <slot></slot><div class="ui icon input"> - <input class="prompt" placeholder="Search for artists, albums, tracks..." type="text"> + <input class="prompt" :placeholder="labels.placeholder" type="text"> <i class="search icon"></i> </div> <div class="results"></div> @@ -14,7 +14,17 @@ import jQuery from 'jquery' import router from '@/router' export default { + computed: { + labels () { + return { + placeholder: this.$gettext('Search for artists, albums, tracks...') + } + } + }, mounted () { + let artistLabel = this.$gettext('Artist') + let albumLabel = this.$gettext('Album') + let trackLabel = this.$gettext('Track') let self = this jQuery(this.$el).search({ type: 'category', @@ -39,7 +49,7 @@ export default { { code: 'artists', route: 'library.artists.detail', - name: 'Artist', + name: artistLabel, getTitle (r) { return r.name }, @@ -50,7 +60,7 @@ export default { { code: 'albums', route: 'library.albums.detail', - name: 'Album', + name: albumLabel, getTitle (r) { return r.title }, @@ -61,7 +71,7 @@ export default { { code: 'tracks', route: 'library.tracks.detail', - name: 'Track', + name: trackLabel, getTitle (r) { return r.title }, diff --git a/front/src/components/auth/Login.vue b/front/src/components/auth/Login.vue index b89734b04fc9777678ea4f9366fb490b3ec52ad9..2fdaaba41d4b1977cebc425d1000fa8d9b31cacf 100644 --- a/front/src/components/auth/Login.vue +++ b/front/src/components/auth/Login.vue @@ -1,5 +1,5 @@ <template> - <div class="main pusher" v-title="'Log In'"> + <div class="main pusher" v-title="labels.title"> <div class="ui vertical stripe segment"> <div class="ui small text container"> <h2><translate>Log in to your Funkwhale account</translate></h2> @@ -24,7 +24,7 @@ required type="text" autofocus - placeholder="Enter your username or email" + :placeholder="labels.usernamePlaceholder" v-model="credentials.username" > </div> @@ -72,6 +72,16 @@ export default { mounted () { this.$refs.username.focus() }, + computed: { + labels () { + let usernamePlaceholder = this.$gettext('Enter your username or email') + let title = this.$gettext('Log In') + return { + usernamePlaceholder, + title + } + } + }, methods: { submit () { var self = this diff --git a/front/src/components/auth/Logout.vue b/front/src/components/auth/Logout.vue index 32e21373d119b132f01296cb563fbd410a3747b4..5f60a9dbeb8aaee8554dbb5f9d08402a4ba322da 100644 --- a/front/src/components/auth/Logout.vue +++ b/front/src/components/auth/Logout.vue @@ -1,5 +1,5 @@ <template> - <div class="main pusher" v-title="'Log Out'"> + <div class="main pusher" v-title="labels.title"> <div class="ui vertical stripe segment"> <div class="ui small text container"> <h2> @@ -14,7 +14,13 @@ <script> export default { - name: 'logout' + computed: { + labels () { + return { + title: this.$gettext('Log Out') + } + } + } } </script> diff --git a/front/src/components/auth/Profile.vue b/front/src/components/auth/Profile.vue index 0ead7d7434e541196b43d911e38ff252cba1f7d9..1d15b206facddfe42ef8510f8fbf49725bae74d4 100644 --- a/front/src/components/auth/Profile.vue +++ b/front/src/components/auth/Profile.vue @@ -1,5 +1,5 @@ <template> - <div class="main pusher" v-title="username + '\'s Profile'"> + <div class="main pusher" v-title="labels.usernameProfile"> <div v-if="isLoading" class="ui vertical segment"> <div :class="['ui', 'centered', 'active', 'inline', 'loader']"></div> </div> @@ -39,6 +39,13 @@ export default { this.$store.dispatch('auth/fetchProfile') }, computed: { + labels () { + let msg = this.$gettext('%{ username }\'s profile') + let usernameProfile = this.$gettextInterpolate(msg, {username: this.username}) + return { + usernameProfile + } + }, signupDate () { let d = new Date(this.$store.state.auth.profile.date_joined) return dateFormat(d, 'longDate') diff --git a/front/src/components/auth/Settings.vue b/front/src/components/auth/Settings.vue index 7ff825ef7f8d1084869f8e4865a3d818e20046c5..5a74b8888796477cbf75f85299e2da9259e6ed19 100644 --- a/front/src/components/auth/Settings.vue +++ b/front/src/components/auth/Settings.vue @@ -1,5 +1,5 @@ <template> - <div class="main pusher" v-title="'Account Settings'"> + <div class="main pusher" v-title="labels.title"> <div class="ui vertical stripe segment"> <div class="ui small text container"> <h2 class="ui header"> @@ -63,7 +63,7 @@ <translate>Change password</translate> <p slot="modal-header"><translate>Change your password?</translate></p> <div slot="modal-content"> - <p>{{ $gettext("Changing your password will have the following consequences") }}</p> + <p><translate>Changing your password will have the following consequences</translate></p> <ul> <li><translate>You will be logged out from this session and have to log out with the new one</translate></li> <li><translate>Your Subsonic password will be changed to a new, random one, logging you out from devices that used the old Subsonic password</translate></li> @@ -175,6 +175,11 @@ export default { } }, computed: { + labels () { + return { + title: this.$gettext('Account Settings') + } + }, orderedSettingsFields () { let self = this return this.settings.order.map(id => { diff --git a/front/src/components/auth/Signup.vue b/front/src/components/auth/Signup.vue index 2a5cb8fb9cf1ffcd1161124edb5375f9bebf4f2f..ae3c47e5cb2a089630b04c2fd0df505ab69916b1 100644 --- a/front/src/components/auth/Signup.vue +++ b/front/src/components/auth/Signup.vue @@ -1,8 +1,8 @@ <template> - <div class="main pusher" v-title="'Sign Up'"> + <div class="main pusher" v-title="labels.title"> <div class="ui vertical stripe segment"> <div class="ui small text container"> - <h2>{{ $gettext("Create a funkwhale account") }}</h2> + <h2><translate>Create a funkwhale account</translate></h2> <form :class="['ui', {'loading': isLoadingInstanceSetting}, 'form']" @submit.prevent="submit()"> @@ -11,45 +11,45 @@ </p> <div v-if="errors.length > 0" class="ui negative message"> - <div class="header">{{ $gettext("We cannot create your account") }}</div> + <div class="header"><translate>We cannot create your account</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> </ul> </div> <div class="field"> - <label>{{ $gettext("Username") }}</label> + <label><translate>Username</translate></label> <input ref="username" required type="text" autofocus - placeholder="Enter your username" + :placeholder="labels.usernamePlaceholder" v-model="username"> </div> <div class="field"> - <label>{{ $gettext("Email") }}</label> + <label><translate>Email</translate></label> <input ref="email" required type="email" - placeholder="Enter your email" + :placeholder="labels.emailPlaceholder" v-model="email"> </div> <div class="field"> - <label>{{ $gettext("Password") }}</label> + <label><translate>Password</translate></label> <password-input v-model="password" /> </div> <div class="field"> - <label v-if="!$store.state.instance.settings.users.registration_enabled.value">{{ $gettext("Invitation code") }}</label> - <label v-else>{{ $gettext("Invitation code (optional)") }}</label> + <label v-if="!$store.state.instance.settings.users.registration_enabled.value"><translate>Invitation code</translate></label> + <label v-else><translate>Invitation code (optional)</translate></label> <input :required="!$store.state.instance.settings.users.registration_enabled.value" type="text" - :placeholder="$gettext('Enter your invitation code (case insensitive)')" + :placeholder="labels.placeholder" v-model="invitation"> </div> <button :class="['ui', 'green', {'loading': isLoading}, 'button']" type="submit"> - {{ $gettext("Create my account") }} + <translate>Create my account</translate> </button> </form> </div> @@ -89,6 +89,20 @@ export default { } }) }, + computed: { + labels () { + let title = this.$gettext('Sign Up') + let placeholder = this.$gettext('Enter your invitation code (case insensitive)') + let usernamePlaceholder = this.$gettext('Enter your username') + let emailPlaceholder = this.$gettext('Enter your email') + return { + title, + usernamePlaceholder, + emailPlaceholder, + placeholder + } + } + }, methods: { submit () { var self = this diff --git a/front/src/components/common/ActionTable.vue b/front/src/components/common/ActionTable.vue index 5c06766ab2272f0165abaddd511be4b574bf0d5d..d74b0dfb749274c7a3dcccd43a7480fca89bed84 100644 --- a/front/src/components/common/ActionTable.vue +++ b/front/src/components/common/ActionTable.vue @@ -35,7 +35,7 @@ </translate> </p> <p slot="modal-content"> - {{ $gettext('This may affect a lot of elements, please double check this is really what you want.')}} + <translate>This may affect a lot of elements, please double check this is really what you want.</translate> </p> <p slot="modal-confirm"><translate>Launch</translate></p> </dangerous-button> diff --git a/front/src/components/favorites/List.vue b/front/src/components/favorites/List.vue index a231453f20915660c3ce5f283e368306f6e87cf7..2755dd1903c2f1565bda719d0f2ff6dd809481dd 100644 --- a/front/src/components/favorites/List.vue +++ b/front/src/components/favorites/List.vue @@ -1,5 +1,5 @@ <template> - <div class="main pusher" v-title="'Your Favorites'"> + <div class="main pusher" v-title="labels.title"> <div class="ui vertical center aligned stripe segment"> <div :class="['ui', {'active': isLoading}, 'inverted', 'dimmer']"> <div class="ui text loader"> @@ -103,6 +103,13 @@ export default { mounted () { $('.ui.dropdown').dropdown() }, + computed: { + labels () { + return { + title: this.$gettext('Your Favorites') + } + } + }, methods: { updateQueryString: function () { this.$router.replace({ diff --git a/front/src/components/federation/LibraryFollowTable.vue b/front/src/components/federation/LibraryFollowTable.vue index 43085f6130458be138e4d63f9a815b569103d46c..6f2a4e4f9b80f4e346fe082d6f200c080f456f97 100644 --- a/front/src/components/federation/LibraryFollowTable.vue +++ b/front/src/components/federation/LibraryFollowTable.vue @@ -3,7 +3,7 @@ <div class="ui form"> <div class="fields"> <div class="ui six wide field"> - <input type="text" v-model="search" placeholder="Search by username, domain..." /> + <input type="text" v-model="search" :placeholder="labels.searchPlaceholder" /> </div> <div class="ui four wide inline field"> <div class="ui checkbox"> @@ -134,6 +134,13 @@ export default { created () { this.fetchData() }, + computed: { + labels () { + return { + searchPlaceholder: this.$gettext('Search by username, domain...') + } + } + }, methods: { fetchData () { let params = _.merge({ diff --git a/front/src/components/federation/LibraryForm.vue b/front/src/components/federation/LibraryForm.vue index 37d19e2f87ba69da4388047b8fac2a043f070ed6..7039cb524b04330bcf5f913516d24726bb58c6c7 100644 --- a/front/src/components/federation/LibraryForm.vue +++ b/front/src/components/federation/LibraryForm.vue @@ -20,7 +20,7 @@ <label> <translate>Library name</translate> </label> - <input v-model="libraryUsername" type="text" placeholder="library@demo.funkwhale.audio" /> + <input v-model="libraryUsername" type="text" :placeholder="labels.namePlaceholder" /> </div> <div class="ui field"> <label> </label> @@ -91,6 +91,11 @@ export default { } }, computed: { + labels () { + return { + namePlaceholder: this.$gettext('library@demo.funkwhale.audio') + } + }, scanErrors () { let errors = [] if (!this.result) { diff --git a/front/src/components/federation/LibraryTrackTable.vue b/front/src/components/federation/LibraryTrackTable.vue index 48d84942fb5b5d608e2773261dad604024cc77ad..645663964e86be71b4d7ad9c8e4d0149d056c291 100644 --- a/front/src/components/federation/LibraryTrackTable.vue +++ b/front/src/components/federation/LibraryTrackTable.vue @@ -4,7 +4,7 @@ <div class="fields"> <div class="ui field"> <label><translate>Search</translate></label> - <input type="text" v-model="search" placeholder="Search by title, artist, domain..." /> + <input type="text" v-model="search" :placeholder="labels.searchPlaceholder" /> </div> <div class="ui field"> <label><translate>Import status</translate></label> @@ -145,6 +145,11 @@ export default { } }, computed: { + labels () { + return { + searchPlaceholder: this.$gettext('Search by title, artist, domain...') + } + }, actionFilters () { var currentFilters = { q: this.search diff --git a/front/src/components/forms/PasswordInput.vue b/front/src/components/forms/PasswordInput.vue index 363f1f82f496558e9bdf73cc3c08b95006202e26..377b2d3e4b111b38ea242e9e729dc29eb326499b 100644 --- a/front/src/components/forms/PasswordInput.vue +++ b/front/src/components/forms/PasswordInput.vue @@ -6,7 +6,7 @@ :type="passwordInputType" @input="$emit('input', $event.target.value)" :value="value"> - <span @click="showPassword = !showPassword" :title="$gettext('Show/hide password')" class="ui icon button"> + <span @click="showPassword = !showPassword" :title="labels.title" class="ui icon button"> <i class="eye icon"></i> </span> </div> @@ -20,6 +20,11 @@ export default { } }, computed: { + labels () { + return { + title: this.$gettext('Show/hide password') + } + }, passwordInputType () { if (this.showPassword) { return 'text' diff --git a/front/src/components/instance/Stats.vue b/front/src/components/instance/Stats.vue index 4f145ba98ec1174986891a705f0775ed83928445..bb23b617c29cc43d3ef8484866d264c23068d026 100644 --- a/front/src/components/instance/Stats.vue +++ b/front/src/components/instance/Stats.vue @@ -28,7 +28,7 @@ </div> </div> <div class="column"> - <h3 class="ui left aligned header">Library</h3> + <h3 class="ui left aligned header"><translate>Library</translate></h3> <div class="ui mini horizontal statistics"> <div class="statistic"> <div class="value"> diff --git a/front/src/components/library/Album.vue b/front/src/components/library/Album.vue index b4cae319cec841c9749e9d82b5d579633abebe18..ced69edebd2f3abf69d79b8d5489db30fc33313c 100644 --- a/front/src/components/library/Album.vue +++ b/front/src/components/library/Album.vue @@ -1,6 +1,6 @@ <template> <div> - <div v-if="isLoading" class="ui vertical segment" v-title="'Album'"> + <div v-if="isLoading" class="ui vertical segment" v-title=""> <div :class="['ui', 'centered', 'active', 'inline', 'loader']"></div> </div> <template v-if="album"> @@ -86,6 +86,11 @@ export default { } }, computed: { + labels () { + return { + title: this.$gettext('Album') + } + }, wikipediaUrl () { return 'https://en.wikipedia.org/w/index.php?search=' + this.album.title + ' ' + this.album.artist.name }, diff --git a/front/src/components/library/Artist.vue b/front/src/components/library/Artist.vue index ce1470098a7c096cbc8ffd660965351ff5af1905..89eb7459c0f85fd95aeb32ea8c1ecbfa1e77c286 100644 --- a/front/src/components/library/Artist.vue +++ b/front/src/components/library/Artist.vue @@ -1,6 +1,6 @@ <template> <div> - <div v-if="isLoading" class="ui vertical segment" v-title="'Artist'"> + <div v-if="isLoading" class="ui vertical segment" v-title="labels.title"> <div :class="['ui', 'centered', 'active', 'inline', 'loader']"></div> </div> <template v-if="artist"> @@ -103,6 +103,11 @@ export default { } }, computed: { + labels () { + return { + title: this.$gettext('Artist') + } + }, totalTracks () { return this.albums.map((album) => { return album.tracks.length diff --git a/front/src/components/library/Artists.vue b/front/src/components/library/Artists.vue index 9d02971c3ee5f8f71201ecdf590db045d44dc652..b1374633dd4bd37d2dd459d607e2bf8e95d605f5 100644 --- a/front/src/components/library/Artists.vue +++ b/front/src/components/library/Artists.vue @@ -1,5 +1,5 @@ <template> - <div v-title="'Artists'"> + <div v-title="labels.title"> <div class="ui vertical stripe segment"> <h2 class="ui header"> <translate>Browsing artists</translate> @@ -10,7 +10,7 @@ <label> <translate>Search</translate> </label> - <input type="text" v-model="query" placeholder="Enter an artist name..."/> + <input type="text" v-model="query" :placeholder="labels.searchPlaceholder"/> </div> <div class="field"> <label><translate>Ordering</translate></label> @@ -23,8 +23,8 @@ <div class="field"> <label><translate>Ordering direction</translate></label> <select class="ui dropdown" v-model="orderingDirection"> - <option value="+">Ascending</option> - <option value="-">Descending</option> + <option value="+"><translate>Ascending</translate></option> + <option value="-"><translate>Descending</translate></option> </select> </div> <div class="field"> @@ -113,6 +113,16 @@ export default { mounted () { $('.ui.dropdown').dropdown() }, + computed: { + labels () { + let searchPlaceholder = this.$gettext('Enter an artist name...') + let title = this.$gettext('Artists') + return { + searchPlaceholder, + title + } + } + }, methods: { updateQueryString: _.debounce(function () { this.$router.replace({ diff --git a/front/src/components/library/Home.vue b/front/src/components/library/Home.vue index f38c0d645af00335f82d81cdda7c54b7dc2b1cc6..5610198a466478412be47e5d42bed4ebbf418f9d 100644 --- a/front/src/components/library/Home.vue +++ b/front/src/components/library/Home.vue @@ -1,5 +1,5 @@ <template> - <div v-title="'Home'"> + <div v-title="labels.title"> <div class="ui vertical stripe segment"> <search :autofocus="true"></search> </div> @@ -60,6 +60,13 @@ export default { created () { this.fetchArtists() }, + computed: { + labels () { + return { + title: this.$gettext('Home') + } + } + }, methods: { fetchArtists () { var self = this diff --git a/front/src/components/library/Radios.vue b/front/src/components/library/Radios.vue index 1438e2f48082c1ad4baf7286a8fdf3836eb1a3dc..49489a31fa8c325417478526020eb2b2304344c4 100644 --- a/front/src/components/library/Radios.vue +++ b/front/src/components/library/Radios.vue @@ -1,5 +1,5 @@ <template> - <div v-title="'Radios'"> + <div v-title="labels.title"> <div class="ui vertical stripe segment"> <h2 class="ui header"> <translate>Browsing radios</translate> @@ -12,7 +12,7 @@ <div class="fields"> <div class="field"> <label><translate>Search</translate></label> - <input type="text" v-model="query" placeholder="Enter a radio name..."/> + <input type="text" v-model="query" :placeholder="labels.searchPlaceholder"/> </div> <div class="field"> <label><translate>Ordering</translate></label> @@ -119,6 +119,16 @@ export default { mounted () { $('.ui.dropdown').dropdown() }, + computed: { + labels () { + let searchPlaceholder = this.$gettext('Enter a radio name...') + let title = this.$gettext('Radios') + return { + searchPlaceholder, + title + } + } + }, methods: { updateQueryString: _.debounce(function () { this.$router.replace({ diff --git a/front/src/components/library/Track.vue b/front/src/components/library/Track.vue index d4ed13ad8aabdf771241f43b8a967aa840e23790..01824292fc24d0fcfbf61e96c38ee28f7c286336 100644 --- a/front/src/components/library/Track.vue +++ b/front/src/components/library/Track.vue @@ -1,6 +1,6 @@ <template> <div> - <div v-if="isLoadingTrack" class="ui vertical segment" v-title="'Track'"> + <div v-if="isLoadingTrack" class="ui vertical segment" v-title="labels.title"> <div :class="['ui', 'centered', 'active', 'inline', 'loader']"></div> </div> <template v-if="track"> @@ -169,6 +169,11 @@ export default { } }, computed: { + labels () { + return { + title: this.$gettext('Track') + } + }, wikipediaUrl () { return 'https://en.wikipedia.org/w/index.php?search=' + this.track.title + ' ' + this.track.artist.name }, diff --git a/front/src/components/library/import/ArtistImport.vue b/front/src/components/library/import/ArtistImport.vue index 2f37edc62f4018c177e718d55843eff7f33b0d2d..f86f71cce1000fb2c998bdbca1969add1426f7f2 100644 --- a/front/src/components/library/import/ArtistImport.vue +++ b/front/src/components/library/import/ArtistImport.vue @@ -1,7 +1,7 @@ <template> <div> <h3 class="ui dividing block header"> - <a :href="getMusicbrainzUrl('artist', metadata.id)" target="_blank" title="View on MusicBrainz">{{ metadata.name }}</a> + <a :href="getMusicbrainzUrl('artist', metadata.id)" target="_blank" :title="labels.viewOnMusicbrainz">{{ metadata.name }}</a> </h3> <form class="ui form" @submit.prevent=""> <h6 class="ui header"> @@ -126,6 +126,11 @@ export default Vue.extend({ } }, computed: { + labels () { + return { + viewOnMusicbrainz: this.$gettext('View on MusicBrainz') + } + }, type () { return 'artist' }, diff --git a/front/src/components/library/import/BatchDetail.vue b/front/src/components/library/import/BatchDetail.vue index b0d64a3d3287f5ae57527f4e2aa17236d6bce0fb..e46bf2a318067819d3410c8cd3ac107312aec240 100644 --- a/front/src/components/library/import/BatchDetail.vue +++ b/front/src/components/library/import/BatchDetail.vue @@ -1,5 +1,5 @@ <template> - <div v-title="'Import Batch #' + id"> + <div v-title="labels.title"> <div v-if="isLoading && !batch" class="ui vertical segment"> <div :class="['ui', 'centered', 'active', 'inline', 'loader']"></div> </div> @@ -47,7 +47,7 @@ v-if="stats.errored > 0" class="ui tiny basic icon button"> <i class="redo icon" /> - {{ $gettext('Rerun errored jobs')}} + <translate>Rerun errored jobs</translate> </button> </td> </tr> @@ -61,7 +61,7 @@ <div class="fields"> <div class="ui field"> <label><translate>Search</translate></label> - <input type="text" v-model="jobFilters.search" placeholder="Search by source..." /> + <input type="text" v-model="jobFilters.search" :placeholder="labels.searchPlaceholder" /> </div> <div class="ui field"> <label><translate>Status</translate></label> @@ -103,7 +103,7 @@ <button @click="rerun({batches: [], jobs: [job.id]})" v-if="job.status === 'errored'" - :title="$gettext('Rerun job')" + :title="labels.rerun" class="ui tiny basic icon button"> <i class="redo icon" /> </button> @@ -180,6 +180,19 @@ export default { clearTimeout(this.timeout) } }, + computed: { + labels () { + let msg = this.$gettext('Import Batch #%{ id }') + let title = this.$gettextInterpolate(msg, {id: this.id}) + let rerun = this.$gettext('Rerun job') + let searchPlaceholder = this.$gettext('Search by source...') + return { + title, + searchPlaceholder, + rerun + } + } + }, methods: { fetchData () { var self = this diff --git a/front/src/components/library/import/BatchList.vue b/front/src/components/library/import/BatchList.vue index a7a7de91e1d6806ffaffe211028a3f8dbd6b98d3..ff26d0f7f5eaae63e9f361efb2e731c6c812d488 100644 --- a/front/src/components/library/import/BatchList.vue +++ b/front/src/components/library/import/BatchList.vue @@ -1,12 +1,12 @@ <template> - <div v-title="'Import Batches'"> + <div v-title="labels.title"> <div class="ui vertical stripe segment"> <div v-if="isLoading" :class="['ui', 'centered', 'active', 'inline', 'loader']"></div> <div class="ui inline form"> <div class="fields"> <div class="ui field"> <label><translate>Search</translate></label> - <input type="text" v-model="filters.search" placeholder="Search by submitter, source..." /> + <input type="text" v-model="filters.search" :placeholder="labels.searchPlaceholder" /> </div> <div class="ui field"> <label><translate>Status</translate></label> @@ -111,6 +111,16 @@ export default { created () { this.fetchData() }, + computed: { + labels () { + let searchPlaceholder = this.$gettext('Search by submitter, source...') + let title = this.$gettext('Import Batches') + return { + searchPlaceholder, + title + } + } + }, methods: { fetchData () { let params = { diff --git a/front/src/components/library/import/Main.vue b/front/src/components/library/import/Main.vue index b24bb8eb3769b822bee5a555cdcd8f1e7d29b431..e7d9d7d3de3e235603026af32cfb913b54cc4f2f 100644 --- a/front/src/components/library/import/Main.vue +++ b/front/src/components/library/import/Main.vue @@ -1,5 +1,5 @@ <template> - <div v-title="'Import Music'"> + <div v-title="labels.title"> <div class="ui vertical stripe segment"> <div class="ui top three attached ordered steps"> <a @click="currentStep = 0" :class="['step', {'active': currentStep === 0}, {'completed': currentStep > 0}]"> @@ -112,7 +112,7 @@ <p><translate>You can also skip this step and enter metadata manually.</translate></p> </div> <div class="column"> - <h5 class="ui header">What is metadata?</h5> + <h5 class="ui header"><translate>What is metadata?</translate></h5> <template v-translate> Metadata is the data related to the music you want to import. This includes all the information about the artists, albums and tracks. In order to have a high quality library, it is recommended to grab data from the <a href="https://musicbrainz.org" target="_blank"> @@ -262,6 +262,11 @@ export default { } }, computed: { + labels () { + return { + title: this.$gettext('Import Music') + } + }, metadataComponent () { if (this.currentType === 'artist') { return 'ArtistCard' diff --git a/front/src/components/library/radios/Builder.vue b/front/src/components/library/radios/Builder.vue index 2b8e71a3d0d411b5b5407f2ddc16c80926ce47de..dbcd376b6d4c47a08662336f8e338aef6d0cc224 100644 --- a/front/src/components/library/radios/Builder.vue +++ b/front/src/components/library/radios/Builder.vue @@ -1,5 +1,5 @@ <template> - <div class="ui vertical stripe segment" v-title="'Radio Builder'"> + <div class="ui vertical stripe segment" v-title="labels.title"> <div> <div> <h2 class="ui header"> @@ -10,7 +10,7 @@ <div class="inline fields"> <div class="field"> <label for="name"><translate>Radio name</translate></label> - <input id="name" type="text" v-model="radioName" placeholder="My awesome radio" /> + <input id="name" type="text" v-model="radioName" :placeholder="labels.placeholder" /> </div> <div class="field"> <input id="public" type="checkbox" v-model="isPublic" /> @@ -201,6 +201,14 @@ export default { } }, computed: { + labels () { + let title = this.$gettext('Radio Builder') + let placeholder = this.$gettext('My awesome radio') + return { + title, + placeholder + } + }, canSave: function () { return ( this.radioName.length > 0 && this.checkErrors.length === 0 diff --git a/front/src/components/manage/library/FilesTable.vue b/front/src/components/manage/library/FilesTable.vue index 98b23f0609e8d8cefce2ba8666471f7f097e4d84..9bec0714200c33c3205af671d48bd851079aebe4 100644 --- a/front/src/components/manage/library/FilesTable.vue +++ b/front/src/components/manage/library/FilesTable.vue @@ -4,7 +4,7 @@ <div class="fields"> <div class="ui field"> <label><translate>Search</translate></label> - <input type="text" v-model="search" placeholder="Search by title, artist, domain..." /> + <input type="text" v-model="search" :placeholder="labels.searchPlaceholder" /> </div> <div class="field"> <label><translate>Ordering</translate></label> @@ -17,8 +17,8 @@ <div class="field"> <label><translate>Ordering direction</translate></label> <select class="ui dropdown" v-model="orderingDirection"> - <option value="+">Ascending</option> - <option value="-">Descending</option> + <option value="+"><translate>Ascending</translate></option> + <option value="-"><translate>Descending</translate></option> </select> </div> </div> @@ -170,6 +170,11 @@ export default { } }, computed: { + labels () { + return { + searchPlaceholder: this.$gettext('Search by title, artist, domain...') + } + }, actionFilters () { var currentFilters = { q: this.search diff --git a/front/src/components/manage/library/RequestsTable.vue b/front/src/components/manage/library/RequestsTable.vue index 4c2883ff88f43544ed2209c995c20c07db8e9c9f..be25c4bb4080564a06fad868272e7a3d8d54a8f6 100644 --- a/front/src/components/manage/library/RequestsTable.vue +++ b/front/src/components/manage/library/RequestsTable.vue @@ -4,7 +4,7 @@ <div class="fields"> <div class="ui field"> <label><translate>Search</translate></label> - <input type="text" v-model="search" placeholder="Search by artist, username, comment..." /> + <input type="text" v-model="search" :placeholder="labels.searchPlaceholder" /> </div> <div class="field"> <label><translate>Ordering</translate></label> @@ -17,12 +17,12 @@ <div class="field"> <label><translate>Ordering direction</translate></label> <select class="ui dropdown" v-model="orderingDirection"> - <option value="+">Ascending</option> - <option value="-">Descending</option> + <option value="+"><translate>Ascending</translate></option> + <option value="-"><translate>Descending</translate></option> </select> </div> <div class="field"> - <label>{{ $gettext("Status") }}</label> + <label><translate>Status</translate></label> <select class="ui dropdown" v-model="status"> <option :value="null"><translate>All</translate></option> <option :value="'pending'"><translate>Pending</translate></option> @@ -175,6 +175,11 @@ export default { } }, computed: { + labels () { + return { + searchPlaceholder: this.$gettext('Search by artist, username, comment...') + } + }, actionFilters () { var currentFilters = { q: this.search diff --git a/front/src/components/manage/users/InvitationForm.vue b/front/src/components/manage/users/InvitationForm.vue index 92e419bdc622fb32ec3ba38484004c0e05f2231c..8ee5d0525e5894547f54cd0aa9c3ca07b7282fb9 100644 --- a/front/src/components/manage/users/InvitationForm.vue +++ b/front/src/components/manage/users/InvitationForm.vue @@ -9,8 +9,8 @@ </div> <div class="inline fields"> <div class="ui field"> - <label>{{ $gettext('Invitation code')}}</label> - <input type="text" v-model="code" :placeholder="$gettext('Leave empty for a random code')" /> + <label><translate>Invitation code</translate></label> + <input type="text" v-model="code" :placeholder="labels.placeholder" /> </div> <div class="ui field"> <button :class="['ui', {loading: isLoading}, 'button']" :disabled="isLoading" type="submit"> @@ -52,6 +52,13 @@ export default { errors: [] } }, + computed: { + labels () { + return { + placeholder: this.$gettext('Leave empty for a random code') + } + } + }, methods: { submit () { let self = this diff --git a/front/src/components/manage/users/InvitationsTable.vue b/front/src/components/manage/users/InvitationsTable.vue index c9700f2066c6b486bdc360ac2cf691cba69bfec6..7d4864e87a3b68096f29f2880b5e266e6f769b81 100644 --- a/front/src/components/manage/users/InvitationsTable.vue +++ b/front/src/components/manage/users/InvitationsTable.vue @@ -4,10 +4,10 @@ <div class="fields"> <div class="ui field"> <label><translate>Search</translate></label> - <input type="text" v-model="search" placeholder="Search by username, email, code..." /> + <input type="text" v-model="search" :placeholder="labels.searchPlaceholder" /> </div> <div class="field"> - <label>{{ $gettext("Ordering") }}</label> + <label><translate>Ordering</translate></label> <select class="ui dropdown" v-model="ordering"> <option v-for="option in orderingOptions" :value="option[0]"> {{ option[1] }} @@ -15,7 +15,7 @@ </select> </div> <div class="field"> - <label>{{ $gettext("Status") }}</label> + <label><translate>Status</translate></label> <select class="ui dropdown" v-model="isOpen"> <option :value="null"><translate>All</translate></option> <option :value="true"><translate>Open</translate></option> @@ -147,6 +147,11 @@ export default { } }, computed: { + labels () { + return { + searchPlaceholder: this.$gettext('Search by username, email, code...') + } + }, actionFilters () { var currentFilters = { q: this.search diff --git a/front/src/components/manage/users/UsersTable.vue b/front/src/components/manage/users/UsersTable.vue index d33261f1751a383589628e5ff6476a38c3d02255..a2b486e234cab7201bdea32a3f464233e4deb4af 100644 --- a/front/src/components/manage/users/UsersTable.vue +++ b/front/src/components/manage/users/UsersTable.vue @@ -4,7 +4,7 @@ <div class="fields"> <div class="ui field"> <label><translate>Search</translate></label> - <input type="text" v-model="search" placeholder="Search by username, email, name..." /> + <input type="text" v-model="search" :placeholder="labels.searchPlaceholder" /> </div> <div class="field"> <label><translate>Ordering</translate></label> @@ -157,6 +157,11 @@ export default { } }, computed: { + labels () { + return { + searchPlaceholder: this.$gettext('Search by username, email, name...') + } + }, privacyLevels () { return {} }, diff --git a/front/src/components/metadata/ArtistCard.vue b/front/src/components/metadata/ArtistCard.vue index 8f9aa741a04ce4593c82e13350d980f7a6edbfd3..ef2fc616af41523a33fa564d97cdc0905a93024d 100644 --- a/front/src/components/metadata/ArtistCard.vue +++ b/front/src/components/metadata/ArtistCard.vue @@ -6,7 +6,7 @@ </div> <template v-if="data.id"> <div class="header"> - <a :href="getMusicbrainzUrl('artist', data.id)" target="_blank" title="View on MusicBrainz">{{ data.name }}</a> + <a :href="getMusicbrainzUrl('artist', data.id)" target="_blank" :title="labels.musicbrainz">{{ data.name }}</a> </div> <div class="description"> <table class="ui very basic fixed single line compact table"> @@ -16,7 +16,7 @@ {{ group['first-release-date'] }} </td> <td colspan="3"> - <a :href="getMusicbrainzUrl('release-group', group.id)" class="discrete link" target="_blank" :title="$gettext('View on MusicBrainz')"> + <a :href="getMusicbrainzUrl('release-group', group.id)" class="discrete link" target="_blank" :title="labels.musicbrainz"> {{ group.title }} </a> </td> @@ -44,6 +44,11 @@ export default Vue.extend({ } }, computed: { + labels () { + return { + musicbrainz: this.$gettext('View on MusicBrainz') + } + }, type () { return 'artist' }, diff --git a/front/src/components/metadata/ReleaseCard.vue b/front/src/components/metadata/ReleaseCard.vue index 13f5b53ab49cf53f90d9e096681a30cefed402b3..0da2c7e2c64e4f9ec98dd38d829ef08271e778b7 100644 --- a/front/src/components/metadata/ReleaseCard.vue +++ b/front/src/components/metadata/ReleaseCard.vue @@ -6,10 +6,10 @@ </div> <template v-if="data.id"> <div class="header"> - <a :href="getMusicbrainzUrl('release', data.id)" target="_blank" title="View on MusicBrainz">{{ data.title }}</a> + <a :href="getMusicbrainzUrl('release', data.id)" target="_blank" :title="labels.musicbrainz">{{ data.title }}</a> </div> <div class="meta"> - <a :href="getMusicbrainzUrl('artist', data['artist-credit'][0]['artist']['id'])" target="_blank" title="View on MusicBrainz">{{ data['artist-credit-phrase'] }}</a> + <a :href="getMusicbrainzUrl('artist', data['artist-credit'][0]['artist']['id'])" target="_blank" :title="labels.musicbrainz">{{ data['artist-credit-phrase'] }}</a> </div> <div class="description"> <table class="ui very basic fixed single line compact table"> @@ -19,7 +19,7 @@ {{ track.position }} </td> <td colspan="3"> - <a :href="getMusicbrainzUrl('recording', track.id)" class="discrete link" target="_blank" :title="$gettext('View on MusicBrainz')"> + <a :href="getMusicbrainzUrl('recording', track.id)" class="discrete link" target="_blank" :title="labels.musicbrainz"> {{ track.recording.title }} </a> </td> @@ -48,6 +48,11 @@ export default Vue.extend({ } }, computed: { + labels () { + return { + musicbrainz: this.$gettext('View on MusicBrainz') + } + }, type () { return 'release' }, diff --git a/front/src/components/metadata/Search.vue b/front/src/components/metadata/Search.vue index 1ba30b7c2135c46579914a535ee624f9bf5f7ec7..4e8bf357d3fbd8e8e310c5971bf9015626e7c47f 100644 --- a/front/src/components/metadata/Search.vue +++ b/front/src/components/metadata/Search.vue @@ -12,7 +12,7 @@ </div> <div class="ui fluid search"> <div class="ui icon input"> - <input class="prompt" :placeholder="$gettext('Enter your search query...')" type="text"> + <input class="prompt" :placeholder="labels.placeholder" type="text"> <i class="search icon"></i> </div> <div class="results"></div> @@ -109,6 +109,11 @@ export default { } }, computed: { + labels () { + return { + placeholder: this.$gettext('Enter your search query...') + } + }, currentTypeObject: function () { let self = this return this.types.filter(t => { diff --git a/front/src/components/playlists/Card.vue b/front/src/components/playlists/Card.vue index 6af726be0b3bdec9f63d2efd08218a6d9ccf54c5..a480975ef63234d733073b66800b65cfe85d0cf6 100644 --- a/front/src/components/playlists/Card.vue +++ b/front/src/components/playlists/Card.vue @@ -24,7 +24,7 @@ %{ count} track </translate> </span> - <play-button class="mini basic orange right floated" :playlist="playlist">Play all</play-button> + <play-button class="mini basic orange right floated" :playlist="playlist"><translate>Play all</translate></play-button> </div> </div> </template> diff --git a/front/src/components/playlists/Editor.vue b/front/src/components/playlists/Editor.vue index d7ae04b2ca863dc4fdcf8c9df11f1e3965cd515f..35374cb0fe2d5e4686b27171df9b9d8c3da3b300 100644 --- a/front/src/components/playlists/Editor.vue +++ b/front/src/components/playlists/Editor.vue @@ -27,7 +27,7 @@ @click="insertMany(queueTracks)" :disabled="queueTracks.length === 0" :class="['ui', {disabled: queueTracks.length === 0}, 'labeled', 'icon', 'button']" - title="Copy tracks from current queue to playlist"> + :title="labels.copyTitle"> <i class="plus icon"></i> <translate translate-plural="Insert from queue (%{ count } tracks)" @@ -47,7 +47,7 @@ </dangerous-button> <div class="ui hidden divider"></div> <template v-if="plts.length > 0"> - <p>Drag and drop rows to reorder tracks in the playlist</p> + <p><translate>Drag and drop rows to reorder tracks in the playlist</translate></p> <table class="ui compact very basic fixed single line unstackable table"> <draggable v-model="plts" element="tbody" @update="reorder"> <tr v-for="(plt, index) in plts" :key="plt.id"> @@ -158,6 +158,11 @@ export default { ...mapState({ queueTracks: state => state.queue.tracks }), + labels () { + return { + copyTitle: this.$gettext('Copy tracks from current queue to playlist') + } + }, status () { if (this.isLoading) { return 'loading' diff --git a/front/src/components/playlists/Form.vue b/front/src/components/playlists/Form.vue index cbde4f8e071fa11c10ac86976be00afb4843bb17..34c75eb97747d822470ffc10a336af126071b455 100644 --- a/front/src/components/playlists/Form.vue +++ b/front/src/components/playlists/Form.vue @@ -20,7 +20,7 @@ <div class="three fields"> <div class="field"> <label><translate>Playlist name</translate></label> - <input v-model="name" required type="text" placeholder="My awesome playlist" /> + <input v-model="name" required type="text" :placeholder="labels.placeholder" /> </div> <div class="field"> <label><translate>Playlist visibility</translate></label> @@ -69,6 +69,11 @@ export default { return d }, computed: { + labels () { + return { + placeholder: this.$gettext('My awesome playlist') + } + }, privacyLevelChoices: function () { return [ { diff --git a/front/src/components/playlists/PlaylistModal.vue b/front/src/components/playlists/PlaylistModal.vue index cee32dab72bb5d8319e366f878634d6d7cef0d3b..668dbf75e3221c635c149bd2b5297b2439e164a8 100644 --- a/front/src/components/playlists/PlaylistModal.vue +++ b/front/src/components/playlists/PlaylistModal.vue @@ -50,7 +50,7 @@ <div v-if="track" class="ui green icon basic small right floated button" - :title="$gettext('Add to this playlist')" + :title="labels.addToPlaylist" @click="addToPlaylist(playlist.id)"> <i class="plus icon"></i> <translate>Add track</translate> </div> @@ -110,6 +110,11 @@ export default { playlists: state => state.playlists.playlists, track: state => state.playlists.modalTrack }), + labels () { + return { + addToPlaylist: this.$gettext('Add to this playlist') + } + }, sortedPlaylists () { let p = _.sortBy(this.playlists, [(e) => { return e.modification_date }]) p.reverse() diff --git a/front/src/components/playlists/TrackPlaylistIcon.vue b/front/src/components/playlists/TrackPlaylistIcon.vue index 4883ba41c5a75a098eb15960353e5e00cc04f923..a75c217f4419935ee807fd7460404fcf756a677e 100644 --- a/front/src/components/playlists/TrackPlaylistIcon.vue +++ b/front/src/components/playlists/TrackPlaylistIcon.vue @@ -10,7 +10,7 @@ v-else @click="$store.commit('playlists/chooseTrack', track)" :class="['playlist-icon', 'list', 'link', 'icon']" - :title="$gettext('Add to playlist...')"> + :title="labels.addToPlaylist"> </i> </template> @@ -25,6 +25,13 @@ export default { return { showModal: false } + }, + computed: { + labels () { + return { + addToPlaylist: this.$gettext('Add to playlist...') + } + } } } </script> diff --git a/front/src/components/requests/Form.vue b/front/src/components/requests/Form.vue index 0b96c20ec2dff32b0b2eb8da5a7e1259f617cbfe..b6752a6353989acdc8bad0feeb4fbb888204d5b1 100644 --- a/front/src/components/requests/Form.vue +++ b/front/src/components/requests/Form.vue @@ -4,21 +4,21 @@ <p><translate>Something's missing in the library? Let us know what you would like to listen!</translate></p> <div class="required field"> <label><translate>Artist name</translate></label> - <input v-model="currentArtistName" placeholder="The Beatles, Mickael Jackson…" required maxlength="200"> + <input v-model="currentArtistName" :placeholder="labels.artistNamePlaceholder" required maxlength="200"> </div> <div class="field"> <label><translate>Albums</translate></label> <p><translate>Leave this field empty if you're requesting the whole discography.</translate></p> - <input v-model="currentAlbums" placeholder="The White Album, Thriller…" maxlength="2000"> + <input v-model="currentAlbums" :placeholder="labels.albumTitlePlaceholder" maxlength="2000"> </div> <div class="field"> <label><translate>Comment</translate></label> - <textarea v-model="currentComment" rows="3" placeholder="Use this comment box to add details to your request if needed" maxlength="2000"></textarea> + <textarea v-model="currentComment" rows="3" :placeholder="comentPlaceholder" maxlength="2000"></textarea> </div> <button class="ui submit button" type="submit"><translate>Submit</translate></button> </form> <div v-else class="ui success message"> - <div class="header">Request submitted!</div> + <div class="header"><translate>Request submitted!</translate></div> <p><translate>We've received your request, you'll get some groove soon ;)</translate></p> <button @click="reset" class="ui button"><translate>Submit another request</translate></button> </div> @@ -68,6 +68,18 @@ export default { requests: [] } }, + computed: { + labels () { + let artistNamePlaceholder = this.$gettext('The Beatles, Mickael Jackson…') + let albumTitlePlaceholder = this.$gettext('The White Album, Thriller…') + let commentPlaceholder = this.$gettext('Use this comment box to add details to your request if needed') + return { + artistNamePlaceholder, + albumTitlePlaceholder, + commentPlaceholder + } + } + }, methods: { fetchRequests () { let self = this diff --git a/front/src/views/admin/Settings.vue b/front/src/views/admin/Settings.vue index 016ef6f71ec6bc8ddbfc5b9883c0f6b5fa462841..d21b4e277c307f911245a0a29937cb929f4f46f3 100644 --- a/front/src/views/admin/Settings.vue +++ b/front/src/views/admin/Settings.vue @@ -1,5 +1,5 @@ <template> - <div class="main pusher" v-title="$gettext('Instance settings')"> + <div class="main pusher" v-title="labels.settings"> <div class="ui vertical stripe segment"> <div class="ui text container"> <div :class="['ui', {'loading': isLoading}, 'form']"></div> @@ -70,6 +70,11 @@ export default { } }, computed: { + labels () { + return { + settings: this.$gettext('Instance settings') + } + }, groups () { // somehow, extraction fails if in the return block directly let instanceLabel = this.$gettext('Instance information') diff --git a/front/src/views/admin/library/Base.vue b/front/src/views/admin/library/Base.vue index a592b4f31e7d8210895a5fafedeeb71c6ca272c2..08277a24ee32cf52ac08c178c37d3b309e3eb2a6 100644 --- a/front/src/views/admin/library/Base.vue +++ b/front/src/views/admin/library/Base.vue @@ -1,5 +1,5 @@ <template> - <div class="main pusher" v-title="'Manage library'"> + <div class="main pusher" v-title="labels.title"> <div class="ui secondary pointing menu"> <router-link class="ui item" @@ -10,7 +10,7 @@ <translate>Import requests</translate> <div :class="['ui', {'teal': $store.state.ui.notifications.importRequests > 0}, 'label']" - :title="$gettext('Pending import requests')"> + :title="labels.pendingRequests"> {{ $store.state.ui.notifications.importRequests }}</div> </router-link> </div> @@ -19,7 +19,18 @@ </template> <script> -export default {} +export default { + computed: { + labels () { + let title = this.$gettext('Manage library') + let pendingRequests = this.$gettext('Pending import requests') + return { + title, + pendingRequests + } + } + } +} </script> <style lang="scss"> diff --git a/front/src/views/admin/library/FilesList.vue b/front/src/views/admin/library/FilesList.vue index aa397f94279dcd026d0cdc38768c049910e9a65a..1c5216c8facf0c1c902f7b6bab0b8eb0ad19a16c 100644 --- a/front/src/views/admin/library/FilesList.vue +++ b/front/src/views/admin/library/FilesList.vue @@ -1,5 +1,5 @@ <template> - <div v-title="'Files'"> + <div v-title="labels.title"> <div class="ui vertical stripe segment"> <h2 class="ui header"><translate>Library files</translate></h2> <div class="ui hidden divider"></div> @@ -14,6 +14,13 @@ import LibraryFilesTable from '@/components/manage/library/FilesTable' export default { components: { LibraryFilesTable + }, + computed: { + labels () { + return { + title: this.$gettext('Files') + } + } } } </script> diff --git a/front/src/views/admin/library/RequestsList.vue b/front/src/views/admin/library/RequestsList.vue index 781f38cada81bf113a8c3e1ec59fc1e267e6ce61..d945fb865ec448f287c8b56a9f39bd6d1905d56d 100644 --- a/front/src/views/admin/library/RequestsList.vue +++ b/front/src/views/admin/library/RequestsList.vue @@ -1,5 +1,5 @@ <template> - <div v-title="$gettext('Import requests')"> + <div v-title="labels.importRequests"> <div class="ui vertical stripe segment"> <h2 class="ui header"><translate>Import requests</translate></h2> <div class="ui hidden divider"></div> @@ -14,6 +14,13 @@ import LibraryRequestsTable from '@/components/manage/library/RequestsTable' export default { components: { LibraryRequestsTable + }, + computed: { + labels () { + return { + importRequests: this.$gettext('Import requests') + } + } } } </script> diff --git a/front/src/views/admin/users/Base.vue b/front/src/views/admin/users/Base.vue index d04264975a721459f66da7488affb4f3601ea210..bbdf4432419a428e047a5ca230006e4bceb77bbc 100644 --- a/front/src/views/admin/users/Base.vue +++ b/front/src/views/admin/users/Base.vue @@ -1,5 +1,5 @@ <template> - <div class="main pusher" v-title="$gettext('Manage users')"> + <div class="main pusher" v-title="labels.manageUsers"> <div class="ui secondary pointing menu"> <router-link class="ui item" @@ -13,7 +13,15 @@ </template> <script> -export default {} +export default { + computed: { + labels () { + return { + manageUsers: this.$gettext('Manage users') + } + } + } +} </script> <style lang="scss"> diff --git a/front/src/views/admin/users/InvitationsList.vue b/front/src/views/admin/users/InvitationsList.vue index b874456123b46bf1c567d2e0e6d10766dd0381b7..b2dd8f0374aa21bf3eea2eba1c3cf52e86e457ad 100644 --- a/front/src/views/admin/users/InvitationsList.vue +++ b/front/src/views/admin/users/InvitationsList.vue @@ -1,5 +1,5 @@ <template> - <div v-title="$gettext('Invitations')"> + <div v-title="labels.invitations"> <div class="ui vertical stripe segment"> <h2 class="ui header"><translate>Invitations</translate></h2> <invitation-form></invitation-form> @@ -17,6 +17,13 @@ export default { components: { InvitationForm, InvitationsTable + }, + computed: { + labels () { + return { + invitations: this.$gettext('Invitations') + } + } } } </script> diff --git a/front/src/views/admin/users/UsersDetail.vue b/front/src/views/admin/users/UsersDetail.vue index a97eb8d5957f6751aecf15279c47d76111bb94f4..72efabd8966bbe05286893f805b88511ec477076 100644 --- a/front/src/views/admin/users/UsersDetail.vue +++ b/front/src/views/admin/users/UsersDetail.vue @@ -53,7 +53,7 @@ <tr> <td> <translate>Account active</translate> - <span :data-tooltip="$gettext('Determine if the user account is active or not. Inactive users cannot login or user the service.')"><i class="question circle icon"></i></span> + <span :data-tooltip="labels.inactive"><i class="question circle icon"></i></span> </td> <td> <div class="ui toggle checkbox"> @@ -141,6 +141,11 @@ export default { } }, computed: { + labels () { + return { + inactive: this.$gettext('Determine if the user account is active or not. Inactive users cannot login or user the service.') + } + }, allPermissions () { return [ { diff --git a/front/src/views/admin/users/UsersList.vue b/front/src/views/admin/users/UsersList.vue index edb9e272349056fa93e57afaebb1ee992c5f2ea8..ef4d60961e89ba2566d484bdd42ae800796beded 100644 --- a/front/src/views/admin/users/UsersList.vue +++ b/front/src/views/admin/users/UsersList.vue @@ -1,5 +1,5 @@ <template> - <div v-title="$gettext('Users')"> + <div v-title="labels.users"> <div class="ui vertical stripe segment"> <h2 class="ui header"><translate>Users</translate></h2> <div class="ui hidden divider"></div> @@ -14,6 +14,13 @@ import UsersTable from '@/components/manage/users/UsersTable' export default { components: { UsersTable + }, + computed: { + labels () { + return { + users: this.$gettext('Users') + } + } } } </script> diff --git a/front/src/views/auth/EmailConfirm.vue b/front/src/views/auth/EmailConfirm.vue index 1fb99961b16713ff7900a5b69116050f6b850591..7b982504506781119fc27efbffd53ff9c61b3854 100644 --- a/front/src/views/auth/EmailConfirm.vue +++ b/front/src/views/auth/EmailConfirm.vue @@ -1,5 +1,5 @@ <template> - <div class="main pusher" v-title="$gettext('Confirm your email')"> + <div class="main pusher" v-title="labels.confirm"> <div class="ui vertical stripe segment"> <div class="ui small text container"> <h2><translate>Confirm your email</translate></h2> @@ -45,6 +45,13 @@ export default { success: false } }, + computed: { + labels () { + return { + confirm: this.$gettext('Confirm your email') + } + } + }, methods: { submit () { let self = this diff --git a/front/src/views/auth/PasswordReset.vue b/front/src/views/auth/PasswordReset.vue index 4775e02442d9ef8116e3be64cc0c5b707f649348..52787a516ff52e22813f83579973bf6de8170387 100644 --- a/front/src/views/auth/PasswordReset.vue +++ b/front/src/views/auth/PasswordReset.vue @@ -1,5 +1,5 @@ <template> - <div class="main pusher" v-title="$gettext('Reset your password')"> + <div class="main pusher" v-title="labels.reset"> <div class="ui vertical stripe segment"> <div class="ui small text container"> <h2><translate>Reset your password</translate></h2> @@ -18,7 +18,7 @@ ref="email" type="email" autofocus - :placeholder="$gettext('Input the email address binded to your account')" + :placeholder="labels.placeholder" v-model="email"> </div> <router-link :to="{path: '/login'}"> @@ -47,6 +47,16 @@ export default { mounted () { this.$refs.email.focus() }, + computed: { + labels () { + let reset = this.$gettext('Reset your password') + let placeholder = this.$gettext('Input the email address binded to your account') + return { + reset, + placeholder + } + } + }, methods: { submit () { let self = this diff --git a/front/src/views/auth/PasswordResetConfirm.vue b/front/src/views/auth/PasswordResetConfirm.vue index 42f2e17867b09c958561dbcab43e2d905acc2f71..b6e4f23224242d160b0c2121b176ed5fb07a8287 100644 --- a/front/src/views/auth/PasswordResetConfirm.vue +++ b/front/src/views/auth/PasswordResetConfirm.vue @@ -1,5 +1,5 @@ <template> - <div class="main pusher" v-title="$gettext('Change your password')"> + <div class="main pusher" v-title="labels.changePassword"> <div class="ui vertical stripe segment"> <div class="ui small text container"> <h2><translate>Change your password</translate></h2> @@ -56,6 +56,13 @@ export default { success: false } }, + computed: { + labels () { + return { + changePassword: this.$gettext('Change your password') + } + } + }, methods: { submit () { let self = this diff --git a/front/src/views/federation/Base.vue b/front/src/views/federation/Base.vue index 9ab5dc2b9624a87862144e8593ddd29bb93c037e..908ab7908a97ffa56623a1684ec263073dfc7a9b 100644 --- a/front/src/views/federation/Base.vue +++ b/front/src/views/federation/Base.vue @@ -1,5 +1,5 @@ <template> - <div class="main pusher" v-title="'Federation'"> + <div class="main pusher" v-title="labels.title"> <div class="ui secondary pointing menu"> <router-link class="ui item" @@ -12,7 +12,7 @@ class="ui item" :to="{name: 'federation.followers.list'}"> <translate>Followers</translate> - <div class="ui teal label" :title="$gettext('Pending requests')">{{ requestsCount }}</div> + <div class="ui teal label" :title="labels.pendingRequests">{{ requestsCount }}</div> </router-link> </div> </div> @@ -30,6 +30,16 @@ export default { created () { this.fetchRequestsCount() }, + computed: { + labels () { + let title = this.$gettext('Federation') + let pendingRequests = this.$gettext('Pending requests') + return { + title, + pendingRequests + } + } + }, methods: { fetchRequestsCount () { let self = this diff --git a/front/src/views/federation/LibraryDetail.vue b/front/src/views/federation/LibraryDetail.vue index 22399b0ba9c13cb9a26a9085eef570618fc39c47..4ddccb79b3ddea21193b6e4726cc4fc319c30c6a 100644 --- a/front/src/views/federation/LibraryDetail.vue +++ b/front/src/views/federation/LibraryDetail.vue @@ -1,6 +1,6 @@ <template> <div> - <div v-if="isLoading" class="ui vertical segment" v-title="'Library'"> + <div v-if="isLoading" class="ui vertical segment" v-title="labels.title"> <div :class="['ui', 'centered', 'active', 'inline', 'loader']"></div> </div> <template v-if="object"> @@ -20,7 +20,7 @@ <tr> <td > <translate>Follow status</translate> - <span :data-tooltip="$gettext('This indicate if the remote library granted you access')"><i class="question circle icon"></i></span> + <span :data-tooltip="labels.statusTooltip"><i class="question circle icon"></i></span> </td> <td> <template v-if="object.follow.approved === null"> @@ -39,7 +39,7 @@ <tr> <td> <translate>Federation</translate> - <span :data-tooltip="$gettext('Use this flag to enable/disable federation with this library')"><i class="question circle icon"></i></span> + <span :data-tooltip="labels.federationTooltip"><i class="question circle icon"></i></span> </td> <td> <div class="ui toggle checkbox"> @@ -55,7 +55,7 @@ <tr> <td> <translate>Auto importing</translate> - <span :data-tooltip="$gettext('When enabled, auto importing will automatically import new tracks published in this library')"><i class="question circle icon"></i></span> + <span :data-tooltip="labels.autoImportTooltip"><i class="question circle icon"></i></span> </td> <td> <div class="ui toggle checkbox"> @@ -69,7 +69,7 @@ </tr> <!-- Disabled until properly implemented on the backend <tr> - <td>File mirroring</td> + <td><translate>File mirroring</translate></td> <td> <div class="ui toggle checkbox"> <input @@ -190,6 +190,18 @@ export default { } }, computed: { + labels () { + let title = this.$gettext('Library') + let statusTooltip = this.$gettext('This indicate if the remote library granted you access') + let federationTooltip = this.$gettext('Use this flag to enable/disable federation with this library') + let autoImportTooltip = this.$gettext('When enabled, auto importing will automatically import new tracks published in this library') + return { + title, + statusTooltip, + federationTooltip, + autoImportTooltip + } + }, libraryUsername () { let actor = this.object.actor return `${actor.preferred_username}@${actor.domain}` diff --git a/front/src/views/federation/LibraryFollowersList.vue b/front/src/views/federation/LibraryFollowersList.vue index 28e2a9992cc4ed00bc48544354594a0f0e83c1dc..0a9267a85acdfa8b1e4d14d3b128fa6752118bfc 100644 --- a/front/src/views/federation/LibraryFollowersList.vue +++ b/front/src/views/federation/LibraryFollowersList.vue @@ -1,5 +1,5 @@ <template> - <div v-title="'Followers'"> + <div v-title="labels.title"> <div class="ui vertical stripe segment"> <h2 class="ui header"><translate>Browsing followers</translate></h2> <p> @@ -17,6 +17,13 @@ import LibraryFollowTable from '@/components/federation/LibraryFollowTable' export default { components: { LibraryFollowTable + }, + computed: { + labels () { + return { + title: this.$gettext('Followers') + } + } } } </script> diff --git a/front/src/views/federation/LibraryList.vue b/front/src/views/federation/LibraryList.vue index ad54c008cb5c2483084d1a7b664e0757b6e6d14a..c043d17b64e31b102a185dd8d2e65337358d6d43 100644 --- a/front/src/views/federation/LibraryList.vue +++ b/front/src/views/federation/LibraryList.vue @@ -1,5 +1,5 @@ <template> - <div v-title="'Libraries'"> + <div v-title="labels.title"> <div class="ui vertical stripe segment"> <h2 class="ui header"><translate>Browsing libraries</translate></h2> <router-link @@ -13,7 +13,7 @@ <div class="fields"> <div class="field"> <label><translate>Search</translate></label> - <input class="search" type="text" v-model="query" placeholder="Enter an library domain name..."/> + <input class="search" type="text" v-model="query" :placeholder="labels.searchPlaceholder"/> </div> <div class="field"> <label><translate>Ordering</translate></label> @@ -117,6 +117,16 @@ export default { $('.ui.dropdown').dropdown() $(this.$el).find('.field .search').focus() }, + computed: { + labels () { + let searchPlaceholder = this.$gettext('Enter an library domain name...') + let title = this.$gettext('Libraries') + return { + searchPlaceholder, + title + } + } + }, methods: { updateQueryString: _.debounce(function () { this.$router.replace({ diff --git a/front/src/views/federation/LibraryTrackList.vue b/front/src/views/federation/LibraryTrackList.vue index 5bfce3f873293b0cf938de4563344840e4019df8..55f9e46af49444c62b2733242ae5e44edad59055 100644 --- a/front/src/views/federation/LibraryTrackList.vue +++ b/front/src/views/federation/LibraryTrackList.vue @@ -1,5 +1,5 @@ <template> - <div v-title="'Federated tracks'"> + <div v-title="labels.title"> <div class="ui vertical stripe segment"> <h2 class="ui header"><translate>Browsing federated tracks</translate></h2> <div class="ui hidden divider"></div> @@ -14,6 +14,13 @@ import LibraryTrackTable from '@/components/federation/LibraryTrackTable' export default { components: { LibraryTrackTable + }, + computed: { + labels () { + return { + title: this.$gettext('Federated tracks') + } + } } } </script> diff --git a/front/src/views/instance/Timeline.vue b/front/src/views/instance/Timeline.vue index 5e9a6efa5e9ec753e7c1144d405ac3903a20bfc1..a70bd404966cc96972efadaa3f8146ee7b9bb599 100644 --- a/front/src/views/instance/Timeline.vue +++ b/front/src/views/instance/Timeline.vue @@ -1,5 +1,5 @@ <template> - <div class="main pusher" v-title="'Instance Timeline'"> + <div class="main pusher" v-title="labels.title"> <div class="ui vertical center aligned stripe segment"> <div v-if="isLoading" :class="['ui', {'active': isLoading}, 'inverted', 'dimmer']"> <div class="ui text loader"><translate>Loading timeline...</translate></div> @@ -51,7 +51,12 @@ export default { computed: { ...mapState({ events: state => state.instance.events - }) + }), + labels () { + return { + title: this.$gettext('Instance Timeline') + } + } }, methods: { fetchEvents () { diff --git a/front/src/views/playlists/Detail.vue b/front/src/views/playlists/Detail.vue index 5074ce87cc1d42c1b9fdffe932c786cf03e364e2..3fd4730bc58cf26c5197b19dd9e258ced8eb657e 100644 --- a/front/src/views/playlists/Detail.vue +++ b/front/src/views/playlists/Detail.vue @@ -1,6 +1,6 @@ <template> <div> - <div v-if="isLoading" class="ui vertical segment" v-title="$gettext('Playlist')"> + <div v-if="isLoading" class="ui vertical segment" v-title="labels.playlist"> <div :class="['ui', 'centered', 'active', 'inline', 'loader']"></div> </div> <div v-if="!isLoading && playlist" class="ui head vertical center aligned stripe segment" v-title="playlist.name"> @@ -47,7 +47,7 @@ :playlist="playlist" :playlist-tracks="playlistTracks"></playlist-editor> </template> <template v-else> - <h2>Tracks</h2> + <h2><translate>Tracks</translate></h2> <track-table :display-position="true" :tracks="tracks"></track-table> </template> </div> @@ -83,6 +83,13 @@ export default { created: function () { this.fetch() }, + computed: { + labels () { + return { + playlist: this.$gettext('Playlist') + } + } + }, methods: { updatePlts (v) { this.playlistTracks = v diff --git a/front/src/views/playlists/List.vue b/front/src/views/playlists/List.vue index 6e39e73fc3ebb5eb8eebd73d5b408f48d84a44c9..c28f99561131e402d7b0ecac0e1c40902f31ee08 100644 --- a/front/src/views/playlists/List.vue +++ b/front/src/views/playlists/List.vue @@ -1,5 +1,5 @@ <template> - <div v-title="$gettext('Playlists')"> + <div v-title="labels.playlists"> <div class="ui vertical stripe segment"> <h2 class="ui header"><translate>Browsing playlists</translate></h2> <div :class="['ui', {'loading': isLoading}, 'form']"> @@ -12,7 +12,7 @@ <div class="fields"> <div class="field"> <label><translate>Search</translate></label> - <input type="text" v-model="query" :placeholder="$gettext('Enter an playlist name...')"/> + <input type="text" v-model="query" :placeholder="labels.searchPlaceholder"/> </div> <div class="field"> <label><translate>Ordering</translate></label> @@ -98,6 +98,16 @@ export default { mounted () { $('.ui.dropdown').dropdown() }, + computed: { + labels () { + let playlists = this.$gettext('Playlists') + let searchPlaceholder = this.$gettext('Enter an playlist name...') + return { + playlists, + searchPlaceholder + } + } + }, methods: { updateQueryString: _.debounce(function () { this.$router.replace({ diff --git a/front/src/views/radios/Detail.vue b/front/src/views/radios/Detail.vue index 0975398b54237577332a672d3c3f80e1a5c9b169..e8233735013614cae0214a49344a65fbe2366c62 100644 --- a/front/src/views/radios/Detail.vue +++ b/front/src/views/radios/Detail.vue @@ -1,6 +1,6 @@ <template> <div> - <div v-if="isLoading" class="ui vertical segment" v-title="'Radio'"> + <div v-if="isLoading" class="ui vertical segment" v-title="labels.title"> <div :class="['ui', 'centered', 'active', 'inline', 'loader']"></div> </div> <div v-if="!isLoading && radio" class="ui head vertical center aligned stripe segment" v-title="radio.name"> @@ -24,15 +24,15 @@ </router-link> <dangerous-button class="labeled icon" :action="deleteRadio"> <i class="trash icon"></i> Delete - <p slot="modal-header">Do you want to delete the radio "{{ radio.name }}"?</p> - <p slot="modal-content">This will completely delete this radio and cannot be undone.</p> - <p slot="modal-confirm">Delete radio</p> + <p slot="modal-header"><translate :translate-params="{radio: radio.name}">Do you want to delete the radio "{{ radio }}"?</translate></p> + <p slot="modal-content"><translate>This will completely delete this radio and cannot be undone.</translate></p> + <p slot="modal-confirm"><translate>Delete radio</translate></p> </dangerous-button> </template> </div> </div> <div class="ui vertical stripe segment"> - <h2>Tracks</h2> + <h2><translate>Tracks</translate></h2> <track-table :tracks="tracks"></track-table> <div class="ui center aligned basic segment"> <pagination @@ -74,6 +74,13 @@ export default { created: function () { this.fetch() }, + computed: { + labels () { + return { + title: this.$gettext('Radio') + } + } + }, methods: { selectPage: function (page) { this.page = page