v4: playlists have categories of their own — a set apart from the dumps', which admins manage on /manage under "Playlist categories", next to "Dump categories". Each category now has a kind, dump or playlist, its slug and name unique within its kind only; migration 0025 rebuilds categories with the column, every existing one becoming a dump category with its dumps, and adds playlist_categories. A playlist's owner files it under any of them in the create and edit forms, and it shows them as chips on its card and its page, each leading to /playlists/<slug>.

/playlists is the new page of every public playlist, newest first (GET /api/playlists), and /playlists/<slug> a playlist category's, with a menu of the categories, linked from the user menu as "All playlists"; `playlists` is reserved as a dump category's slug, and one that had it is renamed. A profile's Playlists tab narrows to a playlist category with the same menu as its Dumps tab (?category=), and so do the Dumps and Playlists tabs of /search, each with its own kind (category and playlistCategory for GET /api/search), another tab dropping it.

The category service takes the kind throughout, so a dump can't be filed under a playlist category nor the other way round, and categoryJoin is the one filter join the dump, follow and playlist services share. useCategories(kind) gives one kind's set from the one fetch, CategoryChips replaces the chips the dump card and page each drew, useCategoryFilter keeps a list to its category as the socket brings more, and useCategorySelection holds a form's picked categories.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
khannurien
2026-10-09 21:53:16 +00:00
parent 681170a517
commit 53515ce46f
71 changed files with 2166 additions and 705 deletions

File diff suppressed because one or more lines are too long

View File

@@ -18,13 +18,13 @@ msgid "[deleted]"
msgstr "[deleted]"
#. placeholder {0}: dump.commentCount
#: src/components/dump/DumpCard.tsx:139
#: src/components/dump/DumpCard.tsx:135
#: src/components/dump/JournalCard.tsx:136
msgid "{0, plural, one {# comment} other {# comments}}"
msgstr "{0, plural, one {# comment} other {# comments}}"
#. placeholder {0}: playlist.dumpCount
#: src/components/playlist/PlaylistCard.tsx:118
#: src/components/playlist/PlaylistCard.tsx:120
msgid "{0, plural, one {# dump} other {# dumps}}"
msgstr "{0, plural, one {# dump} other {# dumps}}"
@@ -60,7 +60,7 @@ msgstr "{0}–{1} characters: letters, numbers, or underscores"
msgid "email.digest.totals"
msgstr "{dumps, plural, one {# dump} other {# dumps}}, {upvotes, plural, one {# upvote} other {# upvotes}} and {comments, plural, one {# comment} other {# comments}}."
#: src/pages/Search.tsx:124
#: src/pages/Search.tsx:152
msgid "{label} ({count})"
msgstr "{label} ({count})"
@@ -205,15 +205,15 @@ msgstr "# Welcome to {site}!\n"
"\n"
"Your account has been created successfully. Welcome aboard!"
#: src/components/dump/create/DumpCreateModal.tsx:742
#: src/components/dump/create/DumpCreateModal.tsx:736
#: src/pages/PlaylistDetail.tsx:80
#: src/pages/UserPublicProfile.tsx:125
msgid "← Back"
msgstr "← Back"
#: src/pages/Dump.tsx:326
#: src/pages/Dump.tsx:568
#: src/pages/DumpEdit.tsx:232
#: src/pages/Dump.tsx:325
#: src/pages/Dump.tsx:552
#: src/pages/DumpEdit.tsx:233
msgid "← Back to all dumps"
msgstr "← Back to all dumps"
@@ -225,7 +225,7 @@ msgstr "+ Invite someone"
msgid "+ New playlist"
msgstr "+ New playlist"
#: src/pages/Dump.tsx:403
#: src/pages/Dump.tsx:399
msgid "+ Playlist"
msgstr "+ Playlist"
@@ -312,8 +312,8 @@ msgstr "Account on <0>{host}</0>"
msgid "Add a comment…"
msgstr "Add a comment…"
#: src/components/category/CategoryManager.tsx:104
#: src/components/category/CategoryManager.tsx:105
#: src/components/category/CategoryManager.tsx:115
#: src/components/category/CategoryManager.tsx:116
msgid "Add category"
msgstr "Add category"
@@ -325,7 +325,7 @@ msgstr "Add email…"
msgid "Add image"
msgstr "Add image"
#: src/components/dump/create/DumpCreateModal.tsx:465
#: src/components/dump/create/DumpCreateModal.tsx:458
#: src/components/playlist/AddToPlaylistModal.tsx:29
msgid "Add to playlist"
msgstr "Add to playlist"
@@ -339,11 +339,15 @@ msgstr "added to {playlist}"
msgid "Admin"
msgstr "Admin"
#: src/components/category/CategorySwitcher.tsx:100
#: src/components/category/CategorySwitcher.tsx:103
#: src/components/category/CategorySwitcher.tsx:104
#: src/components/category/CategorySwitcher.tsx:107
msgid "All"
msgstr "All"
#: src/components/layout/UserMenu.tsx:108
msgid "All playlists"
msgstr "All playlists"
#. placeholder {0}: first.ownerUsername
#. placeholder {1}: relativeTime(first.createdAt)
#: src/components/dump/create/DuplicateNotice.tsx:39
@@ -424,19 +428,19 @@ msgstr "Can't connect to the live updates server. Upvotes and notifications may
msgid "Can't sign in there"
msgstr "Can't sign in there"
#: src/components/category/CategoryManager.tsx:225
#: src/components/category/CategoryManager.tsx:226
#: src/components/category/CategoryManager.tsx:241
#: src/components/category/CategoryManager.tsx:242
#: src/components/chat/ChatEditBox.tsx:92
#: src/components/comment/CommentForm.tsx:127
#: src/components/dump/create/DumpCreateModal.tsx:752
#: src/components/dump/create/DumpCreateModal.tsx:746
#: src/components/form/FormActions.tsx:42
#: src/components/playlist/PlaylistEditForm.tsx:200
#: src/components/playlist/PlaylistEditForm.tsx:222
#: src/components/profile/DescriptionEditor.tsx:97
#: src/components/profile/EmailEditor.tsx:83
#: src/components/shared/ConfirmModal.tsx:63
#: src/pages/Authorize.tsx:158
#: src/pages/Dump.tsx:445
#: src/pages/DumpEdit.tsx:565
#: src/pages/Dump.tsx:441
#: src/pages/DumpEdit.tsx:560
msgid "Cancel"
msgstr "Cancel"
@@ -453,12 +457,11 @@ msgstr "Cancel reply"
msgid "Cancel search"
msgstr "Cancel search"
#: src/components/category/CategorySelect.tsx:33
#: src/pages/Manage.tsx:42
#: src/components/category/CategorySelect.tsx:38
msgid "Categories"
msgstr "Categories"
#: src/components/category/CategorySwitcher.tsx:123
#: src/components/category/CategorySwitcher.tsx:127
msgid "Category"
msgstr "Category"
@@ -513,7 +516,7 @@ msgstr "Checking…"
msgid "Close"
msgstr "Close"
#: src/components/dump/create/DumpCreateModal.tsx:496
#: src/components/dump/create/DumpCreateModal.tsx:489
msgid "Close anyway"
msgstr "Close anyway"
@@ -525,7 +528,7 @@ msgstr "Close emoji picker"
msgid "Close player"
msgstr "Close player"
#: src/components/dump/create/DumpCreateModal.tsx:486
#: src/components/dump/create/DumpCreateModal.tsx:479
msgid "Close without posting? The attached file won't be kept — everything you typed will."
msgstr "Close without posting? The attached file won't be kept — everything you typed will."
@@ -579,8 +582,8 @@ msgstr "Could not change password"
msgid "Could not connect to the server. Check your connection and try again."
msgstr "Could not connect to the server. Check your connection and try again."
#: src/components/profile/ProfilePlaylistsTab.tsx:126
#: src/pages/DumpEdit.tsx:559
#: src/components/profile/ProfilePlaylistsTab.tsx:177
#: src/pages/DumpEdit.tsx:554
msgid "Could not delete"
msgstr "Could not delete"
@@ -588,7 +591,7 @@ msgstr "Could not delete"
msgid "Could not rename"
msgstr "Could not rename"
#: src/pages/DumpEdit.tsx:512
#: src/pages/DumpEdit.tsx:506
msgid "Could not save"
msgstr "Could not save"
@@ -596,7 +599,7 @@ msgstr "Could not save"
msgid "Couldn't add that instance"
msgstr "Couldn't add that instance"
#: src/components/dump/create/DumpCreateModal.tsx:607
#: src/components/dump/create/DumpCreateModal.tsx:600
msgid "Couldn't load a preview for this link — check it, or post it as-is and refresh the preview later."
msgstr "Couldn't load a preview for this link — check it, or post it as-is and refresh the preview later."
@@ -616,19 +619,19 @@ msgstr "Couldn't unsubscribe"
msgid "Couldn't update. Try again."
msgstr "Couldn't update. Try again."
#: src/components/playlist/PlaylistEditForm.tsx:135
#: src/components/playlist/PlaylistEditForm.tsx:150
msgid "Cover"
msgstr "Cover"
#: src/components/playlist/PlaylistCreateForm.tsx:112
#: src/components/playlist/PlaylistCreateForm.tsx:122
msgid "Create"
msgstr "Create"
#: src/components/playlist/PlaylistCreateForm.tsx:112
#: src/components/playlist/PlaylistCreateForm.tsx:122
msgid "Create & Add"
msgstr "Create & Add"
#: src/components/playlist/PlaylistCreateForm.tsx:111
#: src/components/playlist/PlaylistCreateForm.tsx:121
msgid "Creating…"
msgstr "Creating…"
@@ -644,8 +647,8 @@ msgstr "Dark"
msgid "Default tab"
msgstr "Default tab"
#: src/components/category/CategoryManager.tsx:236
#: src/components/category/CategoryManager.tsx:237
#: src/components/category/CategoryManager.tsx:252
#: src/components/category/CategoryManager.tsx:253
#: src/components/chat/ChatMessageItem.tsx:118
#: src/components/chat/ChatMessageItem.tsx:119
#: src/components/chat/ChatMessageItem.tsx:220
@@ -656,28 +659,28 @@ msgstr "Default tab"
msgid "Delete"
msgstr "Delete"
#: src/components/category/CategoryManager.tsx:253
#: src/components/category/CategoryManager.tsx:269
msgid "Delete category"
msgstr "Delete category"
#. placeholder {0}: category.name
#: src/components/category/CategoryManager.tsx:252
#: src/components/category/CategoryManager.tsx:268
msgid "Delete category \"{0}\"? This cannot be undone."
msgstr "Delete category \"{0}\"? This cannot be undone."
#: src/pages/DumpEdit.tsx:314
#: src/pages/DumpEdit.tsx:562
#: src/pages/DumpEdit.tsx:315
#: src/pages/DumpEdit.tsx:557
msgid "Delete dump"
msgstr "Delete dump"
#. placeholder {0}: res.status
#: src/pages/DumpEdit.tsx:193
#: src/pages/DumpEdit.tsx:194
msgid "Delete failed ({0})"
msgstr "Delete failed ({0})"
#: src/components/playlist/PlaylistCard.tsx:142
#: src/components/playlist/PlaylistEditForm.tsx:191
#: src/components/profile/ProfilePlaylistsTab.tsx:156
#: src/components/playlist/PlaylistCard.tsx:149
#: src/components/playlist/PlaylistEditForm.tsx:213
#: src/components/profile/ProfilePlaylistsTab.tsx:207
#: src/pages/PlaylistDetail.tsx:141
msgid "Delete playlist"
msgstr "Delete playlist"
@@ -686,7 +689,7 @@ msgstr "Delete playlist"
msgid "Delete this comment?"
msgstr "Delete this comment?"
#: src/pages/DumpEdit.tsx:313
#: src/pages/DumpEdit.tsx:314
msgid "Delete this dump? This cannot be undone."
msgstr "Delete this dump? This cannot be undone."
@@ -694,7 +697,7 @@ msgstr "Delete this dump? This cannot be undone."
msgid "Delete this message?"
msgstr "Delete this message?"
#: src/components/profile/ProfilePlaylistsTab.tsx:155
#: src/components/profile/ProfilePlaylistsTab.tsx:206
#: src/pages/PlaylistDetail.tsx:140
msgid "Delete this playlist? This cannot be undone."
msgstr "Delete this playlist? This cannot be undone."
@@ -703,11 +706,11 @@ msgstr "Delete this playlist? This cannot be undone."
msgid "deleted message"
msgstr "deleted message"
#: src/components/playlist/PlaylistEditForm.tsx:176
#: src/components/playlist/PlaylistEditForm.tsx:191
msgid "Description"
msgstr "Description"
#: src/components/playlist/PlaylistCreateForm.tsx:104
#: src/components/playlist/PlaylistCreateForm.tsx:108
msgid "Description (optional)"
msgstr "Description (optional)"
@@ -728,7 +731,7 @@ msgstr "Disconnected — reconnecting…"
msgid "Dismiss"
msgstr "Dismiss"
#: src/components/dump/create/DumpCreateModal.tsx:546
#: src/components/dump/create/DumpCreateModal.tsx:539
msgid "Done"
msgstr "Done"
@@ -741,11 +744,11 @@ msgstr "Download {0}"
msgid "Drop a file here"
msgstr "Drop a file here"
#: src/components/dump/create/DumpCreateModal.tsx:653
#: src/components/dump/create/DumpCreateModal.tsx:646
msgid "Drop a file here, or paste one"
msgstr "Drop a file here, or paste one"
#: src/pages/DumpEdit.tsx:503
#: src/pages/DumpEdit.tsx:497
msgid "Drop a replacement here"
msgstr "Drop a replacement here"
@@ -753,16 +756,20 @@ msgstr "Drop a replacement here"
msgid "Dump"
msgstr "Dump"
#: src/components/dump/create/DumpCreateModal.tsx:765
#: src/pages/Manage.tsx:43
msgid "Dump categories"
msgstr "Dump categories"
#: src/components/dump/create/DumpCreateModal.tsx:759
msgid "Dump it"
msgstr "Dump it"
#: src/components/dump/create/DumpCreateModal.tsx:524
#: src/components/dump/create/DumpCreateModal.tsx:517
msgid "Dumped!"
msgstr "Dumped!"
#: src/components/profile/ProfileDumpsTab.tsx:46
#: src/pages/Search.tsx:120
#: src/pages/Search.tsx:148
#: src/pages/UserPublicProfile.tsx:160
msgid "Dumps"
msgstr "Dumps"
@@ -780,13 +787,13 @@ msgstr "Earlier"
#: src/components/chat/ChatMessageItem.tsx:108
#: src/components/chat/PendingItem.tsx:93
#: src/components/comment/CommentNode.tsx:256
#: src/components/playlist/PlaylistHeader.tsx:59
#: src/pages/Dump.tsx:564
#: src/components/playlist/PlaylistHeader.tsx:60
#: src/pages/Dump.tsx:548
msgid "Edit"
msgstr "Edit"
#. placeholder {0}: category.name
#: src/components/category/CategoryManager.tsx:84
#: src/components/category/CategoryManager.tsx:94
msgid "Edit {0}"
msgstr "Edit {0}"
@@ -799,7 +806,7 @@ msgid "Edit email"
msgstr "Edit email"
#: src/components/dump/create/TitleField.tsx:69
#: src/pages/Dump.tsx:462
#: src/pages/Dump.tsx:458
msgid "Edit title"
msgstr "Edit title"
@@ -812,8 +819,8 @@ msgstr "edited"
#. placeholder {0}: relativeTime(message.updatedAt)
#: src/components/chat/ChatMessageItem.tsx:132
#: src/components/comment/CommentNode.tsx:205
#: src/components/playlist/PlaylistHeader.tsx:94
#: src/pages/Dump.tsx:505
#: src/components/playlist/PlaylistHeader.tsx:95
#: src/pages/Dump.tsx:501
msgid "edited {0}"
msgstr "edited {0}"
@@ -822,17 +829,17 @@ msgstr "edited {0}"
#. placeholder {0}: message.updatedAt.toLocaleString()
#: src/components/chat/ChatMessageItem.tsx:128
#: src/components/comment/CommentNode.tsx:203
#: src/components/playlist/PlaylistHeader.tsx:92
#: src/pages/Dump.tsx:503
#: src/components/playlist/PlaylistHeader.tsx:93
#: src/pages/Dump.tsx:499
msgid "Edited {0}"
msgstr "Edited {0}"
#: src/pages/DumpEdit.tsx:257
#: src/pages/DumpEdit.tsx:258
msgid "Editing"
msgstr "Editing"
#. placeholder {0}: state.dump.title
#: src/pages/DumpEdit.tsx:80
#: src/pages/DumpEdit.tsx:81
msgid "Editing {0}"
msgstr "Editing {0}"
@@ -844,7 +851,7 @@ msgstr "Email"
msgid "Email address"
msgstr "Email address"
#: src/pages/Search.tsx:155
#: src/pages/Search.tsx:204
msgid "Enter a query to search."
msgstr "Enter a query to search."
@@ -852,15 +859,15 @@ msgstr "Enter a query to search."
msgid "Expand player"
msgstr "Expand player"
#: src/components/category/CategoryManager.tsx:246
#: src/components/category/CategoryManager.tsx:262
msgid "Failed to create category"
msgstr "Failed to create category"
#: src/components/playlist/PlaylistCreateForm.tsx:109
#: src/components/playlist/PlaylistCreateForm.tsx:119
msgid "Failed to create playlist"
msgstr "Failed to create playlist"
#: src/components/category/CategoryManager.tsx:169
#: src/components/category/CategoryManager.tsx:185
msgid "Failed to delete"
msgstr "Failed to delete"
@@ -874,7 +881,7 @@ msgstr "Failed to generate invite"
msgid "Failed to load"
msgstr "Failed to load"
#: src/components/dump/create/DumpCreateModal.tsx:555
#: src/components/dump/create/DumpCreateModal.tsx:548
msgid "Failed to post"
msgstr "Failed to post"
@@ -888,13 +895,13 @@ msgstr "Failed to post reply"
#: src/components/federation/GrantList.tsx:98
#: src/components/federation/PeerManager.tsx:158
#: src/components/playlist/PlaylistEditForm.tsx:185
#: src/components/playlist/PlaylistEditForm.tsx:207
#: src/components/profile/DescriptionEditor.tsx:99
#: src/components/profile/EmailEditor.tsx:86
msgid "Failed to save"
msgstr "Failed to save"
#: src/components/category/CategoryManager.tsx:247
#: src/components/category/CategoryManager.tsx:263
msgid "Failed to save category"
msgstr "Failed to save category"
@@ -914,11 +921,11 @@ msgstr "Failed to update role"
msgid "Feeds"
msgstr "Feeds"
#: src/components/dump/create/DumpCreateModal.tsx:594
#: src/components/dump/create/DumpCreateModal.tsx:587
msgid "Fetching preview…"
msgstr "Fetching preview…"
#: src/components/dump/create/DumpCreateModal.tsx:417
#: src/components/dump/create/DumpCreateModal.tsx:410
msgid "File too large (max {max})."
msgstr "File too large (max {max})."
@@ -1017,7 +1024,7 @@ msgstr "If you didn't ask for this, ignore this email. Your password stays the s
msgid "image"
msgstr "image"
#: src/pages/Dump.tsx:584
#: src/pages/Dump.tsx:568
msgid "In collections"
msgstr "In collections"
@@ -1031,7 +1038,7 @@ msgstr "In the chat"
msgid "Insert emoji"
msgstr "Insert emoji"
#: src/pages/Manage.tsx:49
#: src/pages/Manage.tsx:56
msgid "Instances"
msgstr "Instances"
@@ -1073,7 +1080,7 @@ msgstr "Invitees"
msgid "Journal"
msgstr "Journal"
#: src/components/dump/create/DumpCreateModal.tsx:493
#: src/components/dump/create/DumpCreateModal.tsx:486
msgid "Keep editing"
msgstr "Keep editing"
@@ -1094,7 +1101,7 @@ msgstr "Light"
msgid "Like"
msgstr "Like"
#: src/components/dump/create/DumpCreateModal.tsx:569
#: src/components/dump/create/DumpCreateModal.tsx:562
#: src/components/form/SlugField.tsx:69
msgid "Link"
msgstr "Link"
@@ -1119,8 +1126,8 @@ msgstr "Load more"
msgid "Load older messages"
msgstr "Load older messages"
#: src/pages/Dump.tsx:302
#: src/pages/DumpEdit.tsx:208
#: src/pages/Dump.tsx:301
#: src/pages/DumpEdit.tsx:209
msgid "Loading dump…"
msgstr "Loading dump…"
@@ -1140,7 +1147,7 @@ msgstr "Loading playlist…"
msgid "Loading profile…"
msgstr "Loading profile…"
#: src/components/category/CategoryManager.tsx:60
#: src/components/category/CategoryManager.tsx:69
#: src/components/chat/ChatModal.tsx:763
#: src/components/editor/EmojiPickerPopup.tsx:125
#: src/components/federation/PeerManager.tsx:120
@@ -1173,7 +1180,7 @@ msgstr "Log in to vote"
msgid "Log in with {0}"
msgstr "Log in with {0}"
#: src/components/layout/UserMenu.tsx:127
#: src/components/layout/UserMenu.tsx:139
#: src/pages/UserPublicProfile.tsx:133
msgid "Log out"
msgstr "Log out"
@@ -1191,7 +1198,7 @@ msgstr "Login failed"
msgid "Lowercase letters, numbers and single hyphens only"
msgstr "Lowercase letters, numbers and single hyphens only"
#: src/components/layout/UserMenu.tsx:114
#: src/components/layout/UserMenu.tsx:126
#: src/pages/Manage.tsx:32
#: src/pages/Manage.tsx:40
#: src/pages/UserPublicProfile.tsx:166
@@ -1215,8 +1222,8 @@ msgstr "Monthly recap"
msgid "Mute"
msgstr "Mute"
#: src/components/category/CategoryManager.tsx:192
#: src/components/category/CategoryManager.tsx:193
#: src/components/category/CategoryManager.tsx:208
#: src/components/category/CategoryManager.tsx:209
msgid "Name"
msgstr "Name"
@@ -1226,7 +1233,7 @@ msgstr "Name"
msgid "New"
msgstr "New"
#: src/components/dump/create/DumpCreateModal.tsx:465
#: src/components/dump/create/DumpCreateModal.tsx:458
#: src/components/dump/NewDumpButton.tsx:27
#: src/components/layout/DumpFab.tsx:66
#: src/components/layout/DumpFab.tsx:67
@@ -1253,7 +1260,7 @@ msgstr "New playlist"
msgid "digest.newPlaylists"
msgstr "New public playlists"
#: src/components/dump/create/DumpCreateModal.tsx:764
#: src/components/dump/create/DumpCreateModal.tsx:758
msgid "Next →"
msgstr "Next →"
@@ -1265,7 +1272,7 @@ msgstr "Next track"
msgid "No dumps in this playlist yet."
msgstr "No dumps in this playlist yet."
#: src/pages/Search.tsx:171
#: src/pages/Search.tsx:220
msgid "No dumps match \"{q}\"."
msgstr "No dumps match \"{q}\"."
@@ -1294,12 +1301,13 @@ msgstr "No messages yet. Say hello!"
msgid "No one yet."
msgstr "No one yet."
#: src/pages/Search.tsx:212
#: src/pages/Search.tsx:261
msgid "No playlists match \"{q}\"."
msgstr "No playlists match \"{q}\"."
#: src/components/playlist/PlaylistMembershipPanel.tsx:51
#: src/components/profile/ProfilePlaylistsTab.tsx:133
#: src/components/profile/ProfilePlaylistsTab.tsx:184
#: src/pages/Playlists.tsx:118
msgid "No playlists yet."
msgstr "No playlists yet."
@@ -1307,7 +1315,7 @@ msgstr "No playlists yet."
msgid "No reply from the server — this message may not have been sent"
msgstr "No reply from the server — this message may not have been sent"
#: src/pages/Search.tsx:186
#: src/pages/Search.tsx:235
msgid "No users match \"{q}\"."
msgstr "No users match \"{q}\"."
@@ -1327,7 +1335,7 @@ msgstr "Nothing happened this month."
msgid "Nothing happened this week."
msgstr "Nothing happened this week."
#: src/components/profile/ProfileDumpsTab.tsx:96
#: src/components/profile/ProfileDumpsTab.tsx:97
#: src/components/profile/ProfileOverviewTab.tsx:47
#: src/pages/Notifications.tsx:522
msgid "Nothing here yet."
@@ -1361,7 +1369,7 @@ msgstr "Once a week you'll get a digest of what happened here, and once a month
msgid "Only images can be dropped here."
msgstr "Only images can be dropped here."
#: src/pages/DumpEdit.tsx:118
#: src/pages/DumpEdit.tsx:119
msgid "Only its poster or a moderator can edit this dump."
msgstr "Only its poster or a moderator can edit this dump."
@@ -1432,7 +1440,7 @@ msgstr "Password updated"
msgid "Passwords do not match"
msgstr "Passwords do not match"
#: src/components/dump/create/DumpCreateModal.tsx:587
#: src/components/dump/create/DumpCreateModal.tsx:580
msgid "Paste a link…"
msgstr "Paste a link…"
@@ -1443,7 +1451,7 @@ msgstr "Paste a link…"
msgid "Pause"
msgstr "Pause"
#: src/components/dump/create/DumpCreateModal.tsx:505
#: src/components/dump/create/DumpCreateModal.tsx:498
msgid "Picked up where you left off."
msgstr "Picked up where you left off."
@@ -1455,12 +1463,18 @@ msgstr "Picked up where you left off."
msgid "Play"
msgstr "Play"
#: src/pages/Manage.tsx:48
msgid "Playlist categories"
msgstr "Playlist categories"
#: src/components/dump/create/StepIndicator.tsx:21
#: src/components/layout/AppHeader.tsx:172
#: src/components/layout/UserMenu.tsx:88
#: src/components/layout/UserMenu.tsx:92
#: src/components/profile/ProfileFollowTab.tsx:144
#: src/components/profile/ProfilePlaylistsTab.tsx:118
#: src/pages/Search.tsx:123
#: src/components/profile/ProfilePlaylistsTab.tsx:155
#: src/pages/Playlists.tsx:52
#: src/pages/Playlists.tsx:106
#: src/pages/Search.tsx:151
#: src/pages/UserPublicProfile.tsx:162
msgid "Playlists"
msgstr "Playlists"
@@ -1475,7 +1489,7 @@ msgstr "Post reply"
#: src/components/comment/CommentNode.tsx:290
#: src/components/comment/CommentThread.tsx:100
#: src/components/dump/create/DumpCreateModal.tsx:758
#: src/components/dump/create/DumpCreateModal.tsx:752
msgid "Posting…"
msgstr "Posting…"
@@ -1483,12 +1497,12 @@ msgstr "Posting…"
msgid "Previous track"
msgstr "Previous track"
#: src/components/dump/DumpCard.tsx:148
#: src/components/dump/DumpCard.tsx:144
#: src/components/dump/JournalCard.tsx:145
#: src/components/playlist/PlaylistCard.tsx:104
#: src/components/playlist/PlaylistHeader.tsx:76
#: src/components/playlist/PlaylistCard.tsx:106
#: src/components/playlist/PlaylistHeader.tsx:77
#: src/components/playlist/PlaylistMembershipPanel.tsx:81
#: src/pages/Dump.tsx:511
#: src/pages/Dump.tsx:507
msgid "private"
msgstr "private"
@@ -1496,8 +1510,8 @@ msgstr "private"
msgid "Private"
msgstr "Private"
#: src/components/playlist/PlaylistCard.tsx:103
#: src/components/playlist/PlaylistHeader.tsx:76
#: src/components/playlist/PlaylistCard.tsx:105
#: src/components/playlist/PlaylistHeader.tsx:77
msgid "public"
msgstr "public"
@@ -1505,7 +1519,7 @@ msgstr "public"
msgid "Public"
msgstr "Public"
#: src/pages/DumpEdit.tsx:290
#: src/pages/DumpEdit.tsx:291
msgid "Refresh metadata"
msgstr "Refresh metadata"
@@ -1513,7 +1527,7 @@ msgstr "Refresh metadata"
msgid "Refreshing stream…"
msgstr "Refreshing stream…"
#: src/pages/DumpEdit.tsx:289
#: src/pages/DumpEdit.tsx:290
msgid "Refreshing…"
msgstr "Refreshing…"
@@ -1531,7 +1545,7 @@ msgstr "Registering…"
msgid "Registration failed"
msgstr "Registration failed"
#: src/pages/Dump.tsx:575
#: src/pages/Dump.tsx:559
msgid "Related"
msgstr "Related"
@@ -1565,7 +1579,7 @@ msgstr "Rename"
msgid "Renaming…"
msgstr "Renaming…"
#: src/pages/DumpEdit.tsx:495
#: src/pages/DumpEdit.tsx:489
msgid "Replace file"
msgstr "Replace file"
@@ -1596,8 +1610,8 @@ msgstr "Reset password"
msgid "Reset password"
msgstr "Reset password"
#: src/pages/DumpEdit.tsx:471
#: src/pages/DumpEdit.tsx:526
#: src/pages/DumpEdit.tsx:465
#: src/pages/DumpEdit.tsx:520
msgid "Reset to default"
msgstr "Reset to default"
@@ -1617,8 +1631,8 @@ msgid "email.reset.title"
msgstr "Reset your password"
#: src/components/chat/PendingItem.tsx:86
#: src/pages/Dump.tsx:319
#: src/pages/DumpEdit.tsx:225
#: src/pages/Dump.tsx:318
#: src/pages/DumpEdit.tsx:226
msgid "Retry"
msgstr "Retry"
@@ -1626,30 +1640,30 @@ msgstr "Retry"
msgid "Role"
msgstr "Role"
#: src/components/category/CategoryManager.tsx:216
#: src/components/category/CategoryManager.tsx:232
#: src/components/chat/ChatEditBox.tsx:85
#: src/components/comment/CommentNode.tsx:216
#: src/components/playlist/PlaylistEditForm.tsx:207
#: src/components/playlist/PlaylistEditForm.tsx:229
#: src/components/profile/DescriptionEditor.tsx:89
#: src/components/profile/EmailEditor.tsx:75
#: src/pages/Dump.tsx:437
#: src/pages/DumpEdit.tsx:568
#: src/pages/Dump.tsx:433
#: src/pages/DumpEdit.tsx:563
msgid "Save"
msgstr "Save"
#: src/components/comment/CommentNode.tsx:217
#: src/components/playlist/PlaylistEditForm.tsx:204
#: src/components/playlist/PlaylistEditForm.tsx:226
#: src/components/profile/ChangePasswordModal.tsx:119
#: src/components/profile/DescriptionEditor.tsx:86
#: src/components/profile/EmailEditor.tsx:72
#: src/pages/Dump.tsx:436
#: src/pages/Dump.tsx:432
#: src/pages/ResetPassword.tsx:139
msgid "Saving…"
msgstr "Saving…"
#: src/components/layout/AppHeader.tsx:182
#: src/components/layout/SearchBar.tsx:83
#: src/pages/Search.tsx:69
#: src/pages/Search.tsx:87
msgid "Search"
msgstr "Search"
@@ -1665,11 +1679,11 @@ msgstr "Search emoji"
msgid "Search emoji…"
msgstr "Search emoji…"
#: src/pages/Search.tsx:166
#: src/pages/Search.tsx:215
msgid "Search failed"
msgstr "Search failed"
#: src/pages/Search.tsx:161
#: src/pages/Search.tsx:210
msgid "Searching…"
msgstr "Searching…"
@@ -1709,7 +1723,7 @@ msgstr "Set new password"
msgid "email.settings"
msgstr "Settings"
#: src/components/layout/UserMenu.tsx:104
#: src/components/layout/UserMenu.tsx:116
#: src/pages/Settings.tsx:75
#: src/pages/Settings.tsx:88
msgid "Settings"
@@ -1736,7 +1750,7 @@ msgstr "Signing you in…"
msgid "Single use, valid for 7 days."
msgstr "Single use, valid for 7 days."
#: src/components/category/CategoryManager.tsx:205
#: src/components/category/CategoryManager.tsx:221
msgid "slug"
msgstr "slug"
@@ -1760,7 +1774,7 @@ msgstr "Something went wrong"
msgid "Sounds"
msgstr "Sounds"
#: src/components/dump/create/DumpCreateModal.tsx:512
#: src/components/dump/create/DumpCreateModal.tsx:505
msgid "Start fresh"
msgstr "Start fresh"
@@ -1856,18 +1870,18 @@ msgstr "This unsubscribe link is missing or malformed."
msgid "This week"
msgstr "This week"
#: src/pages/DumpEdit.tsx:455
#: src/pages/DumpEdit.tsx:449
msgid "Thumbnail"
msgstr "Thumbnail"
#: src/components/dump/create/TitleField.tsx:45
#: src/components/playlist/PlaylistCreateForm.tsx:96
#: src/components/playlist/PlaylistEditForm.tsx:160
#: src/pages/DumpEdit.tsx:516
#: src/components/playlist/PlaylistCreateForm.tsx:100
#: src/components/playlist/PlaylistEditForm.tsx:175
#: src/pages/DumpEdit.tsx:510
msgid "Title"
msgstr "Title"
#: src/components/dump/create/DumpCreateModal.tsx:414
#: src/components/dump/create/DumpCreateModal.tsx:407
msgid "Title is required."
msgstr "Title is required."
@@ -1967,7 +1981,7 @@ msgid "Upload failed"
msgstr "Upload failed"
#. placeholder {0}: Math.round((uploadProgress ?? 0) * 100)
#: src/components/dump/create/DumpCreateModal.tsx:449
#: src/components/dump/create/DumpCreateModal.tsx:442
msgid "Uploading {0}%"
msgstr "Uploading {0}%"
@@ -1975,7 +1989,7 @@ msgstr "Uploading {0}%"
msgid "Uploading image…"
msgstr "Uploading image…"
#: src/components/dump/create/DumpCreateModal.tsx:761
#: src/components/dump/create/DumpCreateModal.tsx:755
msgid "Uploading…"
msgstr "Uploading…"
@@ -1993,15 +2007,15 @@ msgstr "Upvoted"
msgid "Upvoted ({0})"
msgstr "Upvoted ({0})"
#: src/pages/DumpEdit.tsx:487
#: src/pages/DumpEdit.tsx:481
msgid "URL"
msgstr "URL"
#: src/components/dump/create/DumpCreateModal.tsx:398
#: src/components/dump/create/DumpCreateModal.tsx:391
msgid "URL is required."
msgstr "URL is required."
#: src/components/category/CategoryManager.tsx:206
#: src/components/category/CategoryManager.tsx:222
msgid "URL slug"
msgstr "URL slug"
@@ -2013,7 +2027,7 @@ msgstr "User"
msgid "User management"
msgstr "User management"
#: src/components/layout/UserMenu.tsx:63
#: src/components/layout/UserMenu.tsx:67
msgid "User menu"
msgstr "User menu"
@@ -2026,7 +2040,7 @@ msgid "Username"
msgstr "Username"
#: src/components/profile/ProfileFollowTab.tsx:143
#: src/pages/Search.tsx:122
#: src/pages/Search.tsx:150
msgid "Users"
msgstr "Users"
@@ -2046,7 +2060,7 @@ msgstr "Users of a trusted instance sign in here with their account there. Those
msgid "View all →"
msgstr "View all →"
#: src/components/dump/create/DumpCreateModal.tsx:526
#: src/components/dump/create/DumpCreateModal.tsx:519
msgid "View dump →"
msgstr "View dump →"
@@ -2064,8 +2078,8 @@ msgstr "Weekly digest"
msgid "email.welcome.subject"
msgstr "Welcome to {site}"
#: src/components/dump/create/DumpCreateModal.tsx:712
#: src/pages/DumpEdit.tsx:544
#: src/components/dump/create/DumpCreateModal.tsx:705
#: src/pages/DumpEdit.tsx:538
msgid "What makes it worth it?"
msgstr "What makes it worth it?"
@@ -2074,7 +2088,7 @@ msgstr "What makes it worth it?"
msgid "Who am I?"
msgstr "Who am I?"
#: src/components/dump/create/DumpCreateModal.tsx:727
#: src/components/dump/create/DumpCreateModal.tsx:721
msgid "Who can see it"
msgstr "Who can see it"
@@ -2082,8 +2096,8 @@ msgstr "Who can see it"
msgid "Why & where"
msgstr "Why & where"
#: src/components/dump/create/DumpCreateModal.tsx:711
#: src/pages/DumpEdit.tsx:543
#: src/components/dump/create/DumpCreateModal.tsx:704
#: src/pages/DumpEdit.tsx:537
msgid "Why?"
msgstr "Why?"

File diff suppressed because one or more lines are too long

View File

@@ -18,13 +18,13 @@ msgid "[deleted]"
msgstr "[supprimé]"
#. placeholder {0}: dump.commentCount
#: src/components/dump/DumpCard.tsx:139
#: src/components/dump/DumpCard.tsx:135
#: src/components/dump/JournalCard.tsx:136
msgid "{0, plural, one {# comment} other {# comments}}"
msgstr "{0, plural, one {# commentaire} other {# commentaires}}"
#. placeholder {0}: playlist.dumpCount
#: src/components/playlist/PlaylistCard.tsx:118
#: src/components/playlist/PlaylistCard.tsx:120
msgid "{0, plural, one {# dump} other {# dumps}}"
msgstr "{0, plural, one {# reco} other {# recos}}"
@@ -60,7 +60,7 @@ msgstr "{0}–{1} caractères : lettres, chiffres ou tirets bas"
msgid "email.digest.totals"
msgstr "{dumps, plural, one {# reco} other {# recos}}, {upvotes, plural, one {# vote} other {# votes}} et {comments, plural, one {# commentaire} other {# commentaires}}."
#: src/pages/Search.tsx:124
#: src/pages/Search.tsx:152
msgid "{label} ({count})"
msgstr "{label} ({count})"
@@ -205,15 +205,15 @@ msgstr "# Bienvenue sur {site} !\n"
"\n"
"Votre compte a bien été créé. Bienvenue à bord !"
#: src/components/dump/create/DumpCreateModal.tsx:742
#: src/components/dump/create/DumpCreateModal.tsx:736
#: src/pages/PlaylistDetail.tsx:80
#: src/pages/UserPublicProfile.tsx:125
msgid "← Back"
msgstr "← Retour"
#: src/pages/Dump.tsx:326
#: src/pages/Dump.tsx:568
#: src/pages/DumpEdit.tsx:232
#: src/pages/Dump.tsx:325
#: src/pages/Dump.tsx:552
#: src/pages/DumpEdit.tsx:233
msgid "← Back to all dumps"
msgstr "← Retour à toutes les recos"
@@ -225,7 +225,7 @@ msgstr "+ Inviter quelqu'un"
msgid "+ New playlist"
msgstr "+ Nouvelle collection"
#: src/pages/Dump.tsx:403
#: src/pages/Dump.tsx:399
msgid "+ Playlist"
msgstr "+ Collection"
@@ -312,8 +312,8 @@ msgstr "Compte sur <0>{host}</0>"
msgid "Add a comment…"
msgstr "Ajouter un commentaire…"
#: src/components/category/CategoryManager.tsx:104
#: src/components/category/CategoryManager.tsx:105
#: src/components/category/CategoryManager.tsx:115
#: src/components/category/CategoryManager.tsx:116
msgid "Add category"
msgstr "Ajouter une catégorie"
@@ -325,7 +325,7 @@ msgstr "Ajouter un e-mail…"
msgid "Add image"
msgstr "Ajouter une image"
#: src/components/dump/create/DumpCreateModal.tsx:465
#: src/components/dump/create/DumpCreateModal.tsx:458
#: src/components/playlist/AddToPlaylistModal.tsx:29
msgid "Add to playlist"
msgstr "Ajouter à la collection"
@@ -339,11 +339,15 @@ msgstr "ajoutée à {playlist}"
msgid "Admin"
msgstr "Administrateur"
#: src/components/category/CategorySwitcher.tsx:100
#: src/components/category/CategorySwitcher.tsx:103
#: src/components/category/CategorySwitcher.tsx:104
#: src/components/category/CategorySwitcher.tsx:107
msgid "All"
msgstr "Tout"
#: src/components/layout/UserMenu.tsx:108
msgid "All playlists"
msgstr "Toutes les collections"
#. placeholder {0}: first.ownerUsername
#. placeholder {1}: relativeTime(first.createdAt)
#: src/components/dump/create/DuplicateNotice.tsx:39
@@ -424,19 +428,19 @@ msgstr "Impossible de se connecter au serveur de mises à jour en direct. Les vo
msgid "Can't sign in there"
msgstr "Connexion impossible"
#: src/components/category/CategoryManager.tsx:225
#: src/components/category/CategoryManager.tsx:226
#: src/components/category/CategoryManager.tsx:241
#: src/components/category/CategoryManager.tsx:242
#: src/components/chat/ChatEditBox.tsx:92
#: src/components/comment/CommentForm.tsx:127
#: src/components/dump/create/DumpCreateModal.tsx:752
#: src/components/dump/create/DumpCreateModal.tsx:746
#: src/components/form/FormActions.tsx:42
#: src/components/playlist/PlaylistEditForm.tsx:200
#: src/components/playlist/PlaylistEditForm.tsx:222
#: src/components/profile/DescriptionEditor.tsx:97
#: src/components/profile/EmailEditor.tsx:83
#: src/components/shared/ConfirmModal.tsx:63
#: src/pages/Authorize.tsx:158
#: src/pages/Dump.tsx:445
#: src/pages/DumpEdit.tsx:565
#: src/pages/Dump.tsx:441
#: src/pages/DumpEdit.tsx:560
msgid "Cancel"
msgstr "Annuler"
@@ -453,12 +457,11 @@ msgstr "Annuler la réponse"
msgid "Cancel search"
msgstr "Annuler la recherche"
#: src/components/category/CategorySelect.tsx:33
#: src/pages/Manage.tsx:42
#: src/components/category/CategorySelect.tsx:38
msgid "Categories"
msgstr "Catégories"
#: src/components/category/CategorySwitcher.tsx:123
#: src/components/category/CategorySwitcher.tsx:127
msgid "Category"
msgstr "Catégorie"
@@ -513,7 +516,7 @@ msgstr "Vérification…"
msgid "Close"
msgstr "Fermer"
#: src/components/dump/create/DumpCreateModal.tsx:496
#: src/components/dump/create/DumpCreateModal.tsx:489
msgid "Close anyway"
msgstr "Fermer quand même"
@@ -525,7 +528,7 @@ msgstr "Fermer le sélecteur d'emoji"
msgid "Close player"
msgstr "Fermer le lecteur"
#: src/components/dump/create/DumpCreateModal.tsx:486
#: src/components/dump/create/DumpCreateModal.tsx:479
msgid "Close without posting? The attached file won't be kept — everything you typed will."
msgstr "Fermer sans publier ? Le fichier joint sera perdu — ce que vous avez écrit sera conservé."
@@ -579,8 +582,8 @@ msgstr "Impossible de changer le mot de passe"
msgid "Could not connect to the server. Check your connection and try again."
msgstr "Impossible de joindre le serveur. Vérifiez votre connexion et réessayez."
#: src/components/profile/ProfilePlaylistsTab.tsx:126
#: src/pages/DumpEdit.tsx:559
#: src/components/profile/ProfilePlaylistsTab.tsx:177
#: src/pages/DumpEdit.tsx:554
msgid "Could not delete"
msgstr "Suppression impossible"
@@ -588,7 +591,7 @@ msgstr "Suppression impossible"
msgid "Could not rename"
msgstr "Renommage impossible"
#: src/pages/DumpEdit.tsx:512
#: src/pages/DumpEdit.tsx:506
msgid "Could not save"
msgstr "Sauvegarde impossible"
@@ -596,7 +599,7 @@ msgstr "Sauvegarde impossible"
msgid "Couldn't add that instance"
msgstr "Impossible d'ajouter cette instance"
#: src/components/dump/create/DumpCreateModal.tsx:607
#: src/components/dump/create/DumpCreateModal.tsx:600
msgid "Couldn't load a preview for this link — check it, or post it as-is and refresh the preview later."
msgstr "Impossible de charger un aperçu pour ce lien — vérifiez-le, ou publiez-le tel quel et actualisez l'aperçu plus tard."
@@ -616,19 +619,19 @@ msgstr "Désabonnement impossible"
msgid "Couldn't update. Try again."
msgstr "La mise à jour a échoué. Réessayez."
#: src/components/playlist/PlaylistEditForm.tsx:135
#: src/components/playlist/PlaylistEditForm.tsx:150
msgid "Cover"
msgstr "Couverture"
#: src/components/playlist/PlaylistCreateForm.tsx:112
#: src/components/playlist/PlaylistCreateForm.tsx:122
msgid "Create"
msgstr "Créer"
#: src/components/playlist/PlaylistCreateForm.tsx:112
#: src/components/playlist/PlaylistCreateForm.tsx:122
msgid "Create & Add"
msgstr "Créer et ajouter"
#: src/components/playlist/PlaylistCreateForm.tsx:111
#: src/components/playlist/PlaylistCreateForm.tsx:121
msgid "Creating…"
msgstr "Création…"
@@ -644,8 +647,8 @@ msgstr "Sombre"
msgid "Default tab"
msgstr "Onglet par défaut"
#: src/components/category/CategoryManager.tsx:236
#: src/components/category/CategoryManager.tsx:237
#: src/components/category/CategoryManager.tsx:252
#: src/components/category/CategoryManager.tsx:253
#: src/components/chat/ChatMessageItem.tsx:118
#: src/components/chat/ChatMessageItem.tsx:119
#: src/components/chat/ChatMessageItem.tsx:220
@@ -656,28 +659,28 @@ msgstr "Onglet par défaut"
msgid "Delete"
msgstr "Supprimer"
#: src/components/category/CategoryManager.tsx:253
#: src/components/category/CategoryManager.tsx:269
msgid "Delete category"
msgstr "Supprimer la catégorie"
#. placeholder {0}: category.name
#: src/components/category/CategoryManager.tsx:252
#: src/components/category/CategoryManager.tsx:268
msgid "Delete category \"{0}\"? This cannot be undone."
msgstr "Supprimer la catégorie \"{0}\" ? Cette action est irréversible."
#: src/pages/DumpEdit.tsx:314
#: src/pages/DumpEdit.tsx:562
#: src/pages/DumpEdit.tsx:315
#: src/pages/DumpEdit.tsx:557
msgid "Delete dump"
msgstr "Supprimer la reco"
#. placeholder {0}: res.status
#: src/pages/DumpEdit.tsx:193
#: src/pages/DumpEdit.tsx:194
msgid "Delete failed ({0})"
msgstr "Échec de la suppression ({0})"
#: src/components/playlist/PlaylistCard.tsx:142
#: src/components/playlist/PlaylistEditForm.tsx:191
#: src/components/profile/ProfilePlaylistsTab.tsx:156
#: src/components/playlist/PlaylistCard.tsx:149
#: src/components/playlist/PlaylistEditForm.tsx:213
#: src/components/profile/ProfilePlaylistsTab.tsx:207
#: src/pages/PlaylistDetail.tsx:141
msgid "Delete playlist"
msgstr "Supprimer la collection"
@@ -686,7 +689,7 @@ msgstr "Supprimer la collection"
msgid "Delete this comment?"
msgstr "Supprimer ce commentaire ?"
#: src/pages/DumpEdit.tsx:313
#: src/pages/DumpEdit.tsx:314
msgid "Delete this dump? This cannot be undone."
msgstr "Supprimer cette reco ? Cette action est irréversible."
@@ -694,7 +697,7 @@ msgstr "Supprimer cette reco ? Cette action est irréversible."
msgid "Delete this message?"
msgstr "Supprimer ce message ?"
#: src/components/profile/ProfilePlaylistsTab.tsx:155
#: src/components/profile/ProfilePlaylistsTab.tsx:206
#: src/pages/PlaylistDetail.tsx:140
msgid "Delete this playlist? This cannot be undone."
msgstr "Supprimer cette collection ? Cette action est irréversible."
@@ -703,11 +706,11 @@ msgstr "Supprimer cette collection ? Cette action est irréversible."
msgid "deleted message"
msgstr "message supprimé"
#: src/components/playlist/PlaylistEditForm.tsx:176
#: src/components/playlist/PlaylistEditForm.tsx:191
msgid "Description"
msgstr "Description"
#: src/components/playlist/PlaylistCreateForm.tsx:104
#: src/components/playlist/PlaylistCreateForm.tsx:108
msgid "Description (optional)"
msgstr "Description (facultatif)"
@@ -728,7 +731,7 @@ msgstr "Déconnecté — reconnexion…"
msgid "Dismiss"
msgstr "Fermer"
#: src/components/dump/create/DumpCreateModal.tsx:546
#: src/components/dump/create/DumpCreateModal.tsx:539
msgid "Done"
msgstr "Terminé"
@@ -741,11 +744,11 @@ msgstr "Télécharger {0}"
msgid "Drop a file here"
msgstr "Déposez un fichier ici"
#: src/components/dump/create/DumpCreateModal.tsx:653
#: src/components/dump/create/DumpCreateModal.tsx:646
msgid "Drop a file here, or paste one"
msgstr "Déposez un fichier ici, ou collez-en un"
#: src/pages/DumpEdit.tsx:503
#: src/pages/DumpEdit.tsx:497
msgid "Drop a replacement here"
msgstr "Déposez un fichier de remplacement ici"
@@ -753,16 +756,20 @@ msgstr "Déposez un fichier de remplacement ici"
msgid "Dump"
msgstr "Reco"
#: src/components/dump/create/DumpCreateModal.tsx:765
#: src/pages/Manage.tsx:43
msgid "Dump categories"
msgstr "Catégories de recos"
#: src/components/dump/create/DumpCreateModal.tsx:759
msgid "Dump it"
msgstr "Recommander"
#: src/components/dump/create/DumpCreateModal.tsx:524
#: src/components/dump/create/DumpCreateModal.tsx:517
msgid "Dumped!"
msgstr "Recommandé !"
#: src/components/profile/ProfileDumpsTab.tsx:46
#: src/pages/Search.tsx:120
#: src/pages/Search.tsx:148
#: src/pages/UserPublicProfile.tsx:160
msgid "Dumps"
msgstr "Recos"
@@ -780,13 +787,13 @@ msgstr "Plus tôt"
#: src/components/chat/ChatMessageItem.tsx:108
#: src/components/chat/PendingItem.tsx:93
#: src/components/comment/CommentNode.tsx:256
#: src/components/playlist/PlaylistHeader.tsx:59
#: src/pages/Dump.tsx:564
#: src/components/playlist/PlaylistHeader.tsx:60
#: src/pages/Dump.tsx:548
msgid "Edit"
msgstr "Modifier"
#. placeholder {0}: category.name
#: src/components/category/CategoryManager.tsx:84
#: src/components/category/CategoryManager.tsx:94
msgid "Edit {0}"
msgstr "Modifier {0}"
@@ -799,7 +806,7 @@ msgid "Edit email"
msgstr "Modifier l'e-mail"
#: src/components/dump/create/TitleField.tsx:69
#: src/pages/Dump.tsx:462
#: src/pages/Dump.tsx:458
msgid "Edit title"
msgstr "Modifier le titre"
@@ -812,8 +819,8 @@ msgstr "modifié"
#. placeholder {0}: relativeTime(message.updatedAt)
#: src/components/chat/ChatMessageItem.tsx:132
#: src/components/comment/CommentNode.tsx:205
#: src/components/playlist/PlaylistHeader.tsx:94
#: src/pages/Dump.tsx:505
#: src/components/playlist/PlaylistHeader.tsx:95
#: src/pages/Dump.tsx:501
msgid "edited {0}"
msgstr "modifié {0}"
@@ -822,17 +829,17 @@ msgstr "modifié {0}"
#. placeholder {0}: message.updatedAt.toLocaleString()
#: src/components/chat/ChatMessageItem.tsx:128
#: src/components/comment/CommentNode.tsx:203
#: src/components/playlist/PlaylistHeader.tsx:92
#: src/pages/Dump.tsx:503
#: src/components/playlist/PlaylistHeader.tsx:93
#: src/pages/Dump.tsx:499
msgid "Edited {0}"
msgstr "Modifié le {0}"
#: src/pages/DumpEdit.tsx:257
#: src/pages/DumpEdit.tsx:258
msgid "Editing"
msgstr "Modification"
#. placeholder {0}: state.dump.title
#: src/pages/DumpEdit.tsx:80
#: src/pages/DumpEdit.tsx:81
msgid "Editing {0}"
msgstr "Édition de {0}"
@@ -844,7 +851,7 @@ msgstr "E-mail"
msgid "Email address"
msgstr "Adresse e-mail"
#: src/pages/Search.tsx:155
#: src/pages/Search.tsx:204
msgid "Enter a query to search."
msgstr "Saisissez une recherche."
@@ -852,15 +859,15 @@ msgstr "Saisissez une recherche."
msgid "Expand player"
msgstr "Agrandir le lecteur"
#: src/components/category/CategoryManager.tsx:246
#: src/components/category/CategoryManager.tsx:262
msgid "Failed to create category"
msgstr "Échec de la création de la catégorie"
#: src/components/playlist/PlaylistCreateForm.tsx:109
#: src/components/playlist/PlaylistCreateForm.tsx:119
msgid "Failed to create playlist"
msgstr "Impossible de créer la collection"
#: src/components/category/CategoryManager.tsx:169
#: src/components/category/CategoryManager.tsx:185
msgid "Failed to delete"
msgstr "Suppression échouée"
@@ -874,7 +881,7 @@ msgstr "Impossible de générer une invitation"
msgid "Failed to load"
msgstr "Chargement échoué"
#: src/components/dump/create/DumpCreateModal.tsx:555
#: src/components/dump/create/DumpCreateModal.tsx:548
msgid "Failed to post"
msgstr "Publication échouée"
@@ -888,13 +895,13 @@ msgstr "Impossible de publier la réponse"
#: src/components/federation/GrantList.tsx:98
#: src/components/federation/PeerManager.tsx:158
#: src/components/playlist/PlaylistEditForm.tsx:185
#: src/components/playlist/PlaylistEditForm.tsx:207
#: src/components/profile/DescriptionEditor.tsx:99
#: src/components/profile/EmailEditor.tsx:86
msgid "Failed to save"
msgstr "Enregistrement échoué"
#: src/components/category/CategoryManager.tsx:247
#: src/components/category/CategoryManager.tsx:263
msgid "Failed to save category"
msgstr "Échec de l’enregistrement de la catégorie"
@@ -914,11 +921,11 @@ msgstr "Erreur lors de la mise à jour du rôle"
msgid "Feeds"
msgstr "Flux"
#: src/components/dump/create/DumpCreateModal.tsx:594
#: src/components/dump/create/DumpCreateModal.tsx:587
msgid "Fetching preview…"
msgstr "Récupération de l'aperçu…"
#: src/components/dump/create/DumpCreateModal.tsx:417
#: src/components/dump/create/DumpCreateModal.tsx:410
msgid "File too large (max {max})."
msgstr "Fichier trop volumineux (max {max})."
@@ -1017,7 +1024,7 @@ msgstr "Si vous n'êtes pas à l'origine de cette demande, ignorez cet e-mail. V
msgid "image"
msgstr "image"
#: src/pages/Dump.tsx:584
#: src/pages/Dump.tsx:568
msgid "In collections"
msgstr "Dans les collections"
@@ -1031,7 +1038,7 @@ msgstr "Dans la tribune"
msgid "Insert emoji"
msgstr "Insérer un emoji"
#: src/pages/Manage.tsx:49
#: src/pages/Manage.tsx:56
msgid "Instances"
msgstr "Instances"
@@ -1073,7 +1080,7 @@ msgstr "Invités"
msgid "Journal"
msgstr "Journal"
#: src/components/dump/create/DumpCreateModal.tsx:493
#: src/components/dump/create/DumpCreateModal.tsx:486
msgid "Keep editing"
msgstr "Continuer l'édition"
@@ -1094,7 +1101,7 @@ msgstr "Clair"
msgid "Like"
msgstr "Aimer"
#: src/components/dump/create/DumpCreateModal.tsx:569
#: src/components/dump/create/DumpCreateModal.tsx:562
#: src/components/form/SlugField.tsx:69
msgid "Link"
msgstr "Lien"
@@ -1119,8 +1126,8 @@ msgstr "Charger plus"
msgid "Load older messages"
msgstr "Charger les messages plus anciens"
#: src/pages/Dump.tsx:302
#: src/pages/DumpEdit.tsx:208
#: src/pages/Dump.tsx:301
#: src/pages/DumpEdit.tsx:209
msgid "Loading dump…"
msgstr "Chargement de la reco…"
@@ -1140,7 +1147,7 @@ msgstr "Chargement de la collection…"
msgid "Loading profile…"
msgstr "Chargement du profil…"
#: src/components/category/CategoryManager.tsx:60
#: src/components/category/CategoryManager.tsx:69
#: src/components/chat/ChatModal.tsx:763
#: src/components/editor/EmojiPickerPopup.tsx:125
#: src/components/federation/PeerManager.tsx:120
@@ -1173,7 +1180,7 @@ msgstr "Se connecter pour valider"
msgid "Log in with {0}"
msgstr "Se connecter avec {0}"
#: src/components/layout/UserMenu.tsx:127
#: src/components/layout/UserMenu.tsx:139
#: src/pages/UserPublicProfile.tsx:133
msgid "Log out"
msgstr "Se déconnecter"
@@ -1191,7 +1198,7 @@ msgstr "Connexion échouée"
msgid "Lowercase letters, numbers and single hyphens only"
msgstr "Minuscules, chiffres et tirets simples seulement"
#: src/components/layout/UserMenu.tsx:114
#: src/components/layout/UserMenu.tsx:126
#: src/pages/Manage.tsx:32
#: src/pages/Manage.tsx:40
#: src/pages/UserPublicProfile.tsx:166
@@ -1215,8 +1222,8 @@ msgstr "Récap mensuel"
msgid "Mute"
msgstr "Couper le son"
#: src/components/category/CategoryManager.tsx:192
#: src/components/category/CategoryManager.tsx:193
#: src/components/category/CategoryManager.tsx:208
#: src/components/category/CategoryManager.tsx:209
msgid "Name"
msgstr "Nom"
@@ -1226,7 +1233,7 @@ msgstr "Nom"
msgid "New"
msgstr "Nouveau"
#: src/components/dump/create/DumpCreateModal.tsx:465
#: src/components/dump/create/DumpCreateModal.tsx:458
#: src/components/dump/NewDumpButton.tsx:27
#: src/components/layout/DumpFab.tsx:66
#: src/components/layout/DumpFab.tsx:67
@@ -1253,7 +1260,7 @@ msgstr "Nouvelle collection"
msgid "digest.newPlaylists"
msgstr "Nouvelles collections publiques"
#: src/components/dump/create/DumpCreateModal.tsx:764
#: src/components/dump/create/DumpCreateModal.tsx:758
msgid "Next →"
msgstr "Suivant →"
@@ -1265,7 +1272,7 @@ msgstr "Piste suivante"
msgid "No dumps in this playlist yet."
msgstr "Aucune reco dans cette collection pour l'instant."
#: src/pages/Search.tsx:171
#: src/pages/Search.tsx:220
msgid "No dumps match \"{q}\"."
msgstr "Aucune reco ne correspond à « {q} »."
@@ -1294,12 +1301,13 @@ msgstr "Aucun message pour l'instant. Dites bonjour !"
msgid "No one yet."
msgstr "Personne pour le moment."
#: src/pages/Search.tsx:212
#: src/pages/Search.tsx:261
msgid "No playlists match \"{q}\"."
msgstr "Aucune collection ne correspond à « {q} »."
#: src/components/playlist/PlaylistMembershipPanel.tsx:51
#: src/components/profile/ProfilePlaylistsTab.tsx:133
#: src/components/profile/ProfilePlaylistsTab.tsx:184
#: src/pages/Playlists.tsx:118
msgid "No playlists yet."
msgstr "Pas encore de collections."
@@ -1307,7 +1315,7 @@ msgstr "Pas encore de collections."
msgid "No reply from the server — this message may not have been sent"
msgstr "Pas de réponse du serveur — ce message n'a peut-être pas été envoyé"
#: src/pages/Search.tsx:186
#: src/pages/Search.tsx:235
msgid "No users match \"{q}\"."
msgstr "Aucun utilisateur ne correspond à « {q} »."
@@ -1327,7 +1335,7 @@ msgstr "Rien de neuf ce mois-ci."
msgid "Nothing happened this week."
msgstr "Rien de neuf cette semaine."
#: src/components/profile/ProfileDumpsTab.tsx:96
#: src/components/profile/ProfileDumpsTab.tsx:97
#: src/components/profile/ProfileOverviewTab.tsx:47
#: src/pages/Notifications.tsx:522
msgid "Nothing here yet."
@@ -1361,7 +1369,7 @@ msgstr "Chaque semaine, vous recevrez un résumé de ce qui s'est passé ici, et
msgid "Only images can be dropped here."
msgstr "Seules les images peuvent être déposées ici."
#: src/pages/DumpEdit.tsx:118
#: src/pages/DumpEdit.tsx:119
msgid "Only its poster or a moderator can edit this dump."
msgstr "Seuls son auteur et les modérateurs peuvent modifier ce dump."
@@ -1432,7 +1440,7 @@ msgstr "Mot de passe mis à jour"
msgid "Passwords do not match"
msgstr "Les mots de passe ne correspondent pas"
#: src/components/dump/create/DumpCreateModal.tsx:587
#: src/components/dump/create/DumpCreateModal.tsx:580
msgid "Paste a link…"
msgstr "Collez un lien…"
@@ -1443,7 +1451,7 @@ msgstr "Collez un lien…"
msgid "Pause"
msgstr "Pause"
#: src/components/dump/create/DumpCreateModal.tsx:505
#: src/components/dump/create/DumpCreateModal.tsx:498
msgid "Picked up where you left off."
msgstr "Reprise de votre brouillon."
@@ -1455,12 +1463,18 @@ msgstr "Reprise de votre brouillon."
msgid "Play"
msgstr "Lecture"
#: src/pages/Manage.tsx:48
msgid "Playlist categories"
msgstr "Catégories de collections"
#: src/components/dump/create/StepIndicator.tsx:21
#: src/components/layout/AppHeader.tsx:172
#: src/components/layout/UserMenu.tsx:88
#: src/components/layout/UserMenu.tsx:92
#: src/components/profile/ProfileFollowTab.tsx:144
#: src/components/profile/ProfilePlaylistsTab.tsx:118
#: src/pages/Search.tsx:123
#: src/components/profile/ProfilePlaylistsTab.tsx:155
#: src/pages/Playlists.tsx:52
#: src/pages/Playlists.tsx:106
#: src/pages/Search.tsx:151
#: src/pages/UserPublicProfile.tsx:162
msgid "Playlists"
msgstr "Collections"
@@ -1475,7 +1489,7 @@ msgstr "Publier la réponse"
#: src/components/comment/CommentNode.tsx:290
#: src/components/comment/CommentThread.tsx:100
#: src/components/dump/create/DumpCreateModal.tsx:758
#: src/components/dump/create/DumpCreateModal.tsx:752
msgid "Posting…"
msgstr "Publication…"
@@ -1483,12 +1497,12 @@ msgstr "Publication…"
msgid "Previous track"
msgstr "Piste précédente"
#: src/components/dump/DumpCard.tsx:148
#: src/components/dump/DumpCard.tsx:144
#: src/components/dump/JournalCard.tsx:145
#: src/components/playlist/PlaylistCard.tsx:104
#: src/components/playlist/PlaylistHeader.tsx:76
#: src/components/playlist/PlaylistCard.tsx:106
#: src/components/playlist/PlaylistHeader.tsx:77
#: src/components/playlist/PlaylistMembershipPanel.tsx:81
#: src/pages/Dump.tsx:511
#: src/pages/Dump.tsx:507
msgid "private"
msgstr "privé"
@@ -1496,8 +1510,8 @@ msgstr "privé"
msgid "Private"
msgstr "Privé"
#: src/components/playlist/PlaylistCard.tsx:103
#: src/components/playlist/PlaylistHeader.tsx:76
#: src/components/playlist/PlaylistCard.tsx:105
#: src/components/playlist/PlaylistHeader.tsx:77
msgid "public"
msgstr "public"
@@ -1505,7 +1519,7 @@ msgstr "public"
msgid "Public"
msgstr "Public"
#: src/pages/DumpEdit.tsx:290
#: src/pages/DumpEdit.tsx:291
msgid "Refresh metadata"
msgstr "Actualiser les métadonnées"
@@ -1513,7 +1527,7 @@ msgstr "Actualiser les métadonnées"
msgid "Refreshing stream…"
msgstr "Actualisation du flux…"
#: src/pages/DumpEdit.tsx:289
#: src/pages/DumpEdit.tsx:290
msgid "Refreshing…"
msgstr "Actualisation…"
@@ -1531,7 +1545,7 @@ msgstr "Inscription…"
msgid "Registration failed"
msgstr "Inscription échouée"
#: src/pages/Dump.tsx:575
#: src/pages/Dump.tsx:559
msgid "Related"
msgstr "Connexe"
@@ -1565,7 +1579,7 @@ msgstr "Renommer"
msgid "Renaming…"
msgstr "Renommage…"
#: src/pages/DumpEdit.tsx:495
#: src/pages/DumpEdit.tsx:489
msgid "Replace file"
msgstr "Remplacer le fichier"
@@ -1596,8 +1610,8 @@ msgstr "Choisir un nouveau mot de passe"
msgid "Reset password"
msgstr "Réinitialiser le mot de passe"
#: src/pages/DumpEdit.tsx:471
#: src/pages/DumpEdit.tsx:526
#: src/pages/DumpEdit.tsx:465
#: src/pages/DumpEdit.tsx:520
msgid "Reset to default"
msgstr "Réinitialiser par défaut"
@@ -1617,8 +1631,8 @@ msgid "email.reset.title"
msgstr "Réinitialiser votre mot de passe"
#: src/components/chat/PendingItem.tsx:86
#: src/pages/Dump.tsx:319
#: src/pages/DumpEdit.tsx:225
#: src/pages/Dump.tsx:318
#: src/pages/DumpEdit.tsx:226
msgid "Retry"
msgstr "Réessayer"
@@ -1626,30 +1640,30 @@ msgstr "Réessayer"
msgid "Role"
msgstr "Rôle"
#: src/components/category/CategoryManager.tsx:216
#: src/components/category/CategoryManager.tsx:232
#: src/components/chat/ChatEditBox.tsx:85
#: src/components/comment/CommentNode.tsx:216
#: src/components/playlist/PlaylistEditForm.tsx:207
#: src/components/playlist/PlaylistEditForm.tsx:229
#: src/components/profile/DescriptionEditor.tsx:89
#: src/components/profile/EmailEditor.tsx:75
#: src/pages/Dump.tsx:437
#: src/pages/DumpEdit.tsx:568
#: src/pages/Dump.tsx:433
#: src/pages/DumpEdit.tsx:563
msgid "Save"
msgstr "Enregistrer"
#: src/components/comment/CommentNode.tsx:217
#: src/components/playlist/PlaylistEditForm.tsx:204
#: src/components/playlist/PlaylistEditForm.tsx:226
#: src/components/profile/ChangePasswordModal.tsx:119
#: src/components/profile/DescriptionEditor.tsx:86
#: src/components/profile/EmailEditor.tsx:72
#: src/pages/Dump.tsx:436
#: src/pages/Dump.tsx:432
#: src/pages/ResetPassword.tsx:139
msgid "Saving…"
msgstr "Enregistrement…"
#: src/components/layout/AppHeader.tsx:182
#: src/components/layout/SearchBar.tsx:83
#: src/pages/Search.tsx:69
#: src/pages/Search.tsx:87
msgid "Search"
msgstr "Rechercher"
@@ -1665,11 +1679,11 @@ msgstr "Rechercher un emoji"
msgid "Search emoji…"
msgstr "Rechercher un emoji…"
#: src/pages/Search.tsx:166
#: src/pages/Search.tsx:215
msgid "Search failed"
msgstr "Recherche échouée"
#: src/pages/Search.tsx:161
#: src/pages/Search.tsx:210
msgid "Searching…"
msgstr "Recherche…"
@@ -1709,7 +1723,7 @@ msgstr "Définir un nouveau mot de passe"
msgid "email.settings"
msgstr "Paramètres"
#: src/components/layout/UserMenu.tsx:104
#: src/components/layout/UserMenu.tsx:116
#: src/pages/Settings.tsx:75
#: src/pages/Settings.tsx:88
msgid "Settings"
@@ -1736,7 +1750,7 @@ msgstr "Connexion…"
msgid "Single use, valid for 7 days."
msgstr "Usage unique, valable 7 jours."
#: src/components/category/CategoryManager.tsx:205
#: src/components/category/CategoryManager.tsx:221
msgid "slug"
msgstr "identifiant"
@@ -1760,7 +1774,7 @@ msgstr "Une erreur est survenue"
msgid "Sounds"
msgstr "Sons"
#: src/components/dump/create/DumpCreateModal.tsx:512
#: src/components/dump/create/DumpCreateModal.tsx:505
msgid "Start fresh"
msgstr "Repartir de zéro"
@@ -1856,18 +1870,18 @@ msgstr "Ce lien de désabonnement est absent ou mal formé."
msgid "This week"
msgstr "Cette semaine"
#: src/pages/DumpEdit.tsx:455
#: src/pages/DumpEdit.tsx:449
msgid "Thumbnail"
msgstr "Miniature"
#: src/components/dump/create/TitleField.tsx:45
#: src/components/playlist/PlaylistCreateForm.tsx:96
#: src/components/playlist/PlaylistEditForm.tsx:160
#: src/pages/DumpEdit.tsx:516
#: src/components/playlist/PlaylistCreateForm.tsx:100
#: src/components/playlist/PlaylistEditForm.tsx:175
#: src/pages/DumpEdit.tsx:510
msgid "Title"
msgstr "Titre"
#: src/components/dump/create/DumpCreateModal.tsx:414
#: src/components/dump/create/DumpCreateModal.tsx:407
msgid "Title is required."
msgstr "Un titre est requis."
@@ -1967,7 +1981,7 @@ msgid "Upload failed"
msgstr "Envoi échoué"
#. placeholder {0}: Math.round((uploadProgress ?? 0) * 100)
#: src/components/dump/create/DumpCreateModal.tsx:449
#: src/components/dump/create/DumpCreateModal.tsx:442
msgid "Uploading {0}%"
msgstr "Envoi {0} %"
@@ -1975,7 +1989,7 @@ msgstr "Envoi {0} %"
msgid "Uploading image…"
msgstr "Envoi de l'image…"
#: src/components/dump/create/DumpCreateModal.tsx:761
#: src/components/dump/create/DumpCreateModal.tsx:755
msgid "Uploading…"
msgstr "Envoi…"
@@ -1993,15 +2007,15 @@ msgstr "Validé"
msgid "Upvoted ({0})"
msgstr "Validé ({0})"
#: src/pages/DumpEdit.tsx:487
#: src/pages/DumpEdit.tsx:481
msgid "URL"
msgstr "URL"
#: src/components/dump/create/DumpCreateModal.tsx:398
#: src/components/dump/create/DumpCreateModal.tsx:391
msgid "URL is required."
msgstr "L'URL est obligatoire."
#: src/components/category/CategoryManager.tsx:206
#: src/components/category/CategoryManager.tsx:222
msgid "URL slug"
msgstr "Identifiant d’URL"
@@ -2013,7 +2027,7 @@ msgstr "Utilisateur"
msgid "User management"
msgstr "Gestion utilisateur"
#: src/components/layout/UserMenu.tsx:63
#: src/components/layout/UserMenu.tsx:67
msgid "User menu"
msgstr "Menu utilisateur"
@@ -2026,7 +2040,7 @@ msgid "Username"
msgstr "Nom d'utilisateur"
#: src/components/profile/ProfileFollowTab.tsx:143
#: src/pages/Search.tsx:122
#: src/pages/Search.tsx:150
msgid "Users"
msgstr "Utilisateurs"
@@ -2046,7 +2060,7 @@ msgstr "Les utilisateurs d'une instance approuvée se connectent ici avec leur c
msgid "View all →"
msgstr "Tout voir →"
#: src/components/dump/create/DumpCreateModal.tsx:526
#: src/components/dump/create/DumpCreateModal.tsx:519
msgid "View dump →"
msgstr "Voir la reco →"
@@ -2064,8 +2078,8 @@ msgstr "Résumé hebdomadaire"
msgid "email.welcome.subject"
msgstr "Bienvenue sur {site}"
#: src/components/dump/create/DumpCreateModal.tsx:712
#: src/pages/DumpEdit.tsx:544
#: src/components/dump/create/DumpCreateModal.tsx:705
#: src/pages/DumpEdit.tsx:538
msgid "What makes it worth it?"
msgstr "Pourquoi on en voudrait ?"
@@ -2074,7 +2088,7 @@ msgstr "Pourquoi on en voudrait ?"
msgid "Who am I?"
msgstr "Qui suis-je ?"
#: src/components/dump/create/DumpCreateModal.tsx:727
#: src/components/dump/create/DumpCreateModal.tsx:721
msgid "Who can see it"
msgstr "Qui peut la voir"
@@ -2082,8 +2096,8 @@ msgstr "Qui peut la voir"
msgid "Why & where"
msgstr "Pourquoi & où"
#: src/components/dump/create/DumpCreateModal.tsx:711
#: src/pages/DumpEdit.tsx:543
#: src/components/dump/create/DumpCreateModal.tsx:704
#: src/pages/DumpEdit.tsx:537
msgid "Why?"
msgstr "Pourquoi ?"