v3: added localization, use global player for uploaded audio/video files

This commit is contained in:
khannurien
2026-04-03 15:29:33 +00:00
parent 378b3ffa46
commit 0ce80398a4
64 changed files with 4248 additions and 941 deletions

956
src/locales/en.po Normal file
View File

@@ -0,0 +1,956 @@
msgid ""
msgstr ""
"POT-Creation-Date: 2026-03-31 06:22+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
"Language: en\n"
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"Plural-Forms: \n"
#: src/components/CommentThread.tsx:170
msgid "[deleted]"
msgstr "[deleted]"
#. placeholder {0}: dump.commentCount
#: src/components/DumpCard.tsx:82
msgid "{0, plural, one {# comment} other {# comments}}"
msgstr "{0, plural, one {# comment} other {# comments}}"
#. placeholder {0}: playlist.dumpCount
#: src/components/PlaylistCard.tsx:84
msgid "{0, plural, one {# dump} other {# dumps}}"
msgstr "{0, plural, one {# dump} other {# dumps}}"
#. placeholder {0}: VALIDATION.USERNAME_MIN
#. placeholder {1}: VALIDATION.USERNAME_MAX
#: src/pages/UserRegister.tsx:128
msgid "{0}{1} characters: letters, numbers, or underscores"
msgstr "{0}{1} characters: letters, numbers, or underscores"
#: src/pages/Notifications.tsx:184
msgid "{days}d ago"
msgstr "{days}d ago"
#: src/pages/Notifications.tsx:182
msgid "{hrs}h ago"
msgstr "{hrs}h ago"
#: src/pages/Search.tsx:176
msgid "{label} ({count})"
msgstr "{label} ({count})"
#: src/pages/Notifications.tsx:180
msgid "{mins}m ago"
msgstr "{mins}m ago"
#: src/components/CommentThread.tsx:436
msgid "{visibleCount, plural, one {# comment} other {# comments}}"
msgstr "{visibleCount, plural, one {# comment} other {# comments}}"
#: src/pages/PlaylistDetail.tsx:605
#: src/pages/UserPublicProfile.tsx:606
msgid "← Back"
msgstr "← Back"
#: src/pages/Dump.tsx:216
#: src/pages/Dump.tsx:318
#: src/pages/DumpEdit.tsx:166
msgid "← Back to all dumps"
msgstr "← Back to all dumps"
#: src/pages/UserDumps.tsx:61
#: src/pages/UserPlaylists.tsx:352
#: src/pages/UserUpvoted.tsx:130
msgid "← Back to profile"
msgstr "← Back to profile"
#: src/pages/UserPublicProfile.tsx:90
msgid "+ Invite someone"
msgstr "+ Invite someone"
#: src/components/AppHeader.tsx:63
msgid "+ New"
msgstr "+ New"
#: src/pages/UserDumps.tsx:82
#: src/pages/UserPublicProfile.tsx:922
msgid "+ New dump"
msgstr "+ New dump"
#: src/components/PlaylistMembershipPanel.tsx:72
msgid "+ New playlist"
msgstr "+ New playlist"
#: src/pages/Dump.tsx:248
msgid "+ Playlist"
msgstr "+ Playlist"
#. placeholder {0}: d.followerUsername
#. placeholder {1}: d.playlistTitle
#: src/pages/Notifications.tsx:124
msgid "<0>{0}</0> followed your playlist <1>{1}</1>"
msgstr "<0>{0}</0> followed your playlist <1>{1}</1>"
#. placeholder {0}: d.mentionerUsername
#: src/pages/Notifications.tsx:166
msgid "<0>{0}</0> mentioned you in <1>{where}</1>"
msgstr "<0>{0}</0> mentioned you in <1>{where}</1>"
#. placeholder {0}: d.dumperUsername
#. placeholder {1}: d.dumpTitle
#: src/pages/Notifications.tsx:134
msgid "<0>{0}</0> posted <1>{1}</1>"
msgstr "<0>{0}</0> posted <1>{1}</1>"
#. placeholder {0}: d.followerUsername
#: src/pages/Notifications.tsx:115
msgid "<0>{0}</0> started following you"
msgstr "<0>{0}</0> started following you"
#. placeholder {0}: d.voterUsername
#. placeholder {1}: d.dumpTitle
#: src/pages/Notifications.tsx:154
msgid "<0>{0}</0> upvoted <1>{1}</1>"
msgstr "<0>{0}</0> upvoted <1>{1}</1>"
#. placeholder {0}: d.dumpTitle
#. placeholder {1}: d.playlistTitle
#: src/pages/Notifications.tsx:144
msgid "<0>{0}</0> was added to <1>{1}</1>"
msgstr "<0>{0}</0> was added to <1>{1}</1>"
#: src/pages/Notifications.tsx:164
msgid "a comment"
msgstr "a comment"
#: src/pages/Notifications.tsx:164
msgid "a post"
msgstr "a post"
#: src/pages/UserPublicProfile.tsx:802
msgid "Add a bio…"
msgstr "Add a bio…"
#: src/components/CommentThread.tsx:456
msgid "Add a comment…"
msgstr "Add a comment…"
#: src/pages/UserPublicProfile.tsx:718
msgid "Add email…"
msgstr "Add email…"
#: src/components/AddToPlaylistModal.tsx:64
#: src/components/DumpCreateModal.tsx:262
msgid "Add to playlist"
msgstr "Add to playlist"
#: api/auth:
#~ msgid "Admin access required"
#~ msgstr "Admin access required"
#. placeholder {0}: dumps.length
#: src/pages/UserDumps.tsx:114
msgid "All {0, plural, one {# dump} other {# dumps}} loaded."
msgstr "All {0, plural, one {# dump} other {# dumps}} loaded."
#. placeholder {0}: votes.length
#: src/pages/UserUpvoted.tsx:184
msgid "All {0, plural, one {# upvoted dump} other {# upvoted dumps}} loaded."
msgstr "All {0, plural, one {# upvoted dump} other {# upvoted dumps}} loaded."
#: src/pages/UserRegister.tsx:160
msgid "Already have an account? <0>Log in</0>"
msgstr "Already have an account? <0>Log in</0>"
#: src/contexts/WSProvider.tsx:168
#: src/contexts/WSProvider.tsx:360
msgid "Can't connect to the live updates server. Upvotes and notifications may not sync until it reconnects."
msgstr "Can't connect to the live updates server. Upvotes and notifications may not sync until it reconnects."
#: src/components/CommentThread.tsx:268
#: src/components/CommentThread.tsx:353
#: src/components/CommentThread.tsx:483
#: src/components/ConfirmModal.tsx:32
#: src/components/DumpCreateModal.tsx:394
#: src/components/PlaylistCreateForm.tsx:105
#: src/pages/DumpEdit.tsx:288
#: src/pages/PlaylistDetail.tsx:672
#: src/pages/UserPublicProfile.tsx:700
#: src/pages/UserPublicProfile.tsx:773
msgid "Cancel"
msgstr "Cancel"
#: src/pages/PlaylistDetail.tsx:848
msgid "Cancel removal"
msgstr "Cancel removal"
#: api/comments:
#~ msgid "Cannot edit a deleted comment"
#~ msgstr "Cannot edit a deleted comment"
#: src/pages/UserPublicProfile.tsx:633
msgid "Change avatar"
msgstr "Change avatar"
#: src/pages/UserRegister.tsx:94
msgid "Checking invite…"
msgstr "Checking invite…"
#: src/components/Modal.tsx:45
msgid "Close"
msgstr "Close"
#: api/comments:
#~ msgid "Comment not found"
#~ msgstr "Comment not found"
#: src/pages/UserPublicProfile.tsx:81
msgid "Copied!"
msgstr "Copied!"
#: src/pages/UserPublicProfile.tsx:81
msgid "Copy"
msgstr "Copy"
#: src/components/CommentThread.tsx:108
#: src/components/CommentThread.tsx:147
#: src/components/CommentThread.tsx:425
msgid "Could not reach the server. Please try again."
msgstr "Could not reach the server. Please try again."
#: src/components/PlaylistCreateForm.tsx:116
msgid "Create"
msgstr "Create"
#: src/components/PlaylistCreateForm.tsx:115
msgid "Create & Add"
msgstr "Create & Add"
#. placeholder {0}: created.items.length
#. placeholder {1}: created.hasMore ? "+" : ""
#: src/pages/UserPlaylists.tsx:386
msgid "Created ({0}{1})"
msgstr "Created ({0}{1})"
#: src/components/PlaylistCreateForm.tsx:113
msgid "Creating…"
msgstr "Creating…"
#: src/components/CommentThread.tsx:306
#: src/components/CommentThread.tsx:312
#: src/components/ConfirmModal.tsx:16
#: src/pages/PlaylistDetail.tsx:679
msgid "Delete"
msgstr "Delete"
#: src/pages/DumpEdit.tsx:284
#: src/pages/DumpEdit.tsx:300
msgid "Delete dump"
msgstr "Delete dump"
#: src/components/PlaylistCard.tsx:107
#: src/pages/PlaylistDetail.tsx:861
#: src/pages/UserPlaylists.tsx:443
msgid "Delete playlist"
msgstr "Delete playlist"
#: src/components/CommentThread.tsx:311
msgid "Delete this comment?"
msgstr "Delete this comment?"
#: src/pages/DumpEdit.tsx:299
msgid "Delete this dump? This cannot be undone."
msgstr "Delete this dump? This cannot be undone."
#: src/pages/PlaylistDetail.tsx:860
#: src/pages/UserPlaylists.tsx:442
msgid "Delete this playlist? This cannot be undone."
msgstr "Delete this playlist? This cannot be undone."
#: src/components/PlaylistCreateForm.tsx:76
#: src/pages/PlaylistDetail.tsx:710
msgid "Description (optional)"
msgstr "Description (optional)"
#: src/components/DumpCreateModal.tsx:439
msgid "Done"
msgstr "Done"
#: src/components/FileDropZone.tsx:32
msgid "Drop a file here"
msgstr "Drop a file here"
#: src/pages/DumpEdit.tsx:242
msgid "Drop a replacement here"
msgstr "Drop a replacement here"
#: src/components/DumpCreateModal.tsx:405
msgid "Dump it"
msgstr "Dump it"
#: api/dumps:
#~ msgid "Dump not found"
#~ msgstr "Dump not found"
#: src/components/DumpCreateModal.tsx:416
msgid "Dumped!"
msgstr "Dumped!"
#: src/pages/Search.tsx:172
#: src/pages/UserDumps.tsx:75
msgid "Dumps"
msgstr "Dumps"
#. placeholder {0}: dumps.items.length
#. placeholder {1}: dumps.hasMore ? "+" : ""
#: src/pages/UserPublicProfile.tsx:817
msgid "Dumps ({0}{1})"
msgstr "Dumps ({0}{1})"
#: src/pages/Notifications.tsx:341
msgid "Earlier"
msgstr "Earlier"
#: src/components/CommentThread.tsx:297
#: src/pages/Dump.tsx:315
#: src/pages/PlaylistDetail.tsx:698
msgid "Edit"
msgstr "Edit"
#. placeholder {0}: relativeTime(comment.updatedAt)
#. placeholder {0}: relativeTime(dump.updatedAt)
#. placeholder {0}: relativeTime(playlist.updatedAt)
#: src/components/CommentThread.tsx:231
#: src/pages/Dump.tsx:276
#: src/pages/PlaylistDetail.tsx:768
msgid "edited {0}"
msgstr "edited {0}"
#. placeholder {0}: comment.updatedAt.toLocaleString()
#. placeholder {0}: dump.updatedAt.toLocaleString()
#. placeholder {0}: playlist.updatedAt.toLocaleString()
#: src/components/CommentThread.tsx:229
#: src/pages/Dump.tsx:274
#: src/pages/PlaylistDetail.tsx:765
msgid "Edited {0}"
msgstr "Edited {0}"
#: src/pages/DumpEdit.tsx:180
msgid "Editing"
msgstr "Editing"
#: src/pages/UserRegister.tsx:135
msgid "Email address"
msgstr "Email address"
#: src/pages/Search.tsx:206
msgid "Enter a query to search."
msgstr "Enter a query to search."
#: src/components/PlaylistCreateForm.tsx:59
#: src/components/PlaylistCreateForm.tsx:97
msgid "Failed to create playlist"
msgstr "Failed to create playlist"
#: src/pages/UserPublicProfile.tsx:62
#: src/pages/UserPublicProfile.tsx:65
#: src/pages/UserPublicProfile.tsx:92
msgid "Failed to generate invite"
msgstr "Failed to generate invite"
#: src/pages/index/FollowedFeed.tsx:77
#: src/pages/index/HotFeed.tsx:30
#: src/pages/index/JournalFeed.tsx:42
#: src/pages/index/NewFeed.tsx:30
#: src/pages/Notifications.tsx:321
msgid "Failed to load"
msgstr "Failed to load"
#: src/components/DumpCreateModal.tsx:300
msgid "Failed to post"
msgstr "Failed to post"
#: src/components/CommentThread.tsx:462
msgid "Failed to post comment"
msgstr "Failed to post comment"
#: src/components/CommentThread.tsx:334
msgid "Failed to post reply"
msgstr "Failed to post reply"
#: src/pages/PlaylistDetail.tsx:776
#: src/pages/UserPublicProfile.tsx:546
#: src/pages/UserPublicProfile.tsx:581
#: src/pages/UserPublicProfile.tsx:704
#: src/pages/UserPublicProfile.tsx:776
msgid "Failed to save"
msgstr "Failed to save"
#: src/components/CommentThread.tsx:249
msgid "Failed to save edit"
msgstr "Failed to save edit"
#: src/pages/UserPublicProfile.tsx:726
msgid "Failed to update avatar"
msgstr "Failed to update avatar"
#: src/components/DumpCreateModal.tsx:333
msgid "Fetching preview…"
msgstr "Fetching preview…"
#: src/components/DumpCreateModal.tsx:403
msgid "Fetching…"
msgstr "Fetching…"
#: src/components/DumpCreateModal.tsx:293
#: src/components/FileDropZone.tsx:31
msgid "File"
msgstr "File"
#: api/avatars:
#~ msgid "File content is not a recognised image (JPEG, PNG, GIF, WebP)"
#~ msgstr "File content is not a recognised image (JPEG, PNG, GIF, WebP)"
#: api/avatars:
#~ msgid "File too large (max 5 MB)"
#~ msgstr "File too large (max 5 MB)"
#: api/dumps:
#~ msgid "File too large (max 50 MB)"
#~ msgstr "File too large (max 50 MB)"
#: src/components/DumpCreateModal.tsx:187
msgid "File too large (max 50 MB)."
msgstr "File too large (max 50 MB)."
#: src/components/FollowButton.tsx:37
#: src/components/FollowButton.tsx:64
msgid "Follow"
msgstr "Follow"
#: src/components/FollowButton.tsx:35
msgid "Follow {targetUsername}"
msgstr "Follow {targetUsername}"
#: src/components/FollowButton.tsx:62
msgid "Follow playlist"
msgstr "Follow playlist"
#: src/pages/index/FollowedFeed.tsx:359
msgid "Follow some public playlists to see their dumps here."
msgstr "Follow some public playlists to see their dumps here."
#: src/pages/index/FollowedFeed.tsx:345
msgid "Follow some users to see their dumps here."
msgstr "Follow some users to see their dumps here."
#: src/components/FeedTabBar.tsx:47
msgid "Followed"
msgstr "Followed"
#. placeholder {0}: followed.items.length
#. placeholder {1}: followed.hasMore ? "+" : ""
#: src/pages/UserPlaylists.tsx:416
msgid "Followed ({0}{1})"
msgstr "Followed ({0}{1})"
#: src/components/FollowButton.tsx:37
#: src/components/FollowButton.tsx:64
msgid "Following"
msgstr "Following"
#: api/playlists:
#~ msgid "Forbidden"
#~ msgstr "Forbidden"
#: src/pages/index/FollowedFeed.tsx:325
msgid "From people"
msgstr "From people"
#: src/pages/index/FollowedFeed.tsx:332
msgid "From playlists"
msgstr "From playlists"
#: src/components/FeedTabBar.tsx:25
msgid "Hot"
msgstr "Hot"
#: api/auth:
#~ msgid "Invalid email address"
#~ msgstr "Invalid email address"
#: src/pages/UserRegister.tsx:104
msgid "Invalid invite"
msgstr "Invalid invite"
#: api/invites:
#~ msgid "Invalid or expired invite"
#~ msgstr "Invalid or expired invite"
#: api/dumps:
#~ msgid "Invalid URL"
#~ msgstr "Invalid URL"
#. Backend error strings (manually maintained)
#: api/auth:
#~ msgid "Invalid username or password"
#~ msgstr "Invalid username or password"
#: api/invites:
#~ msgid "Invite already used"
#~ msgstr "Invite already used"
#: src/pages/UserPublicProfile.tsx:651
msgid "invited by"
msgstr "invited by"
#: src/components/FeedTabBar.tsx:39
msgid "Journal"
msgstr "Journal"
#: src/pages/Notifications.tsx:178
msgid "just now"
msgstr "just now"
#: src/contexts/WSProvider.tsx:359
msgid "Live updates are temporarily disconnected. Trying to reconnect…"
msgstr "Live updates are temporarily disconnected. Trying to reconnect…"
#: src/components/AppHeader.tsx:79
msgid "Live updates unavailable."
msgstr "Live updates unavailable."
#: src/pages/Notifications.tsx:386
msgid "Load more"
msgstr "Load more"
#: src/pages/Dump.tsx:193
#: src/pages/DumpEdit.tsx:143
msgid "Loading dump…"
msgstr "Loading dump…"
#: src/pages/index/FollowedFeed.tsx:103
#: src/pages/index/HotFeed.tsx:52
#: src/pages/index/JournalFeed.tsx:65
#: src/pages/index/NewFeed.tsx:52
#: src/pages/Search.tsx:239
#: src/pages/UserDumps.tsx:111
#: src/pages/UserPlaylists.tsx:409
#: src/pages/UserPlaylists.tsx:436
#: src/pages/UserUpvoted.tsx:180
msgid "Loading more…"
msgstr "Loading more…"
#: src/pages/PlaylistDetail.tsx:590
msgid "Loading playlist…"
msgstr "Loading playlist…"
#: src/pages/UserPublicProfile.tsx:590
msgid "Loading profile…"
msgstr "Loading profile…"
#: src/components/PlaylistMembershipPanel.tsx:26
#: src/components/TextEditor.tsx:273
#: src/pages/index/FollowedFeed.tsx:74
#: src/pages/index/HotFeed.tsx:29
#: src/pages/index/JournalFeed.tsx:41
#: src/pages/index/NewFeed.tsx:29
#: src/pages/Notifications.tsx:318
#: src/pages/Notifications.tsx:386
#: src/pages/UserDumps.tsx:50
#: src/pages/UserPlaylists.tsx:341
#: src/pages/UserUpvoted.tsx:119
msgid "Loading…"
msgstr "Loading…"
#: src/components/AppHeader.tsx:70
#: src/pages/UserLogin.tsx:62
#: src/pages/UserLogin.tsx:91
msgid "Log in"
msgstr "Log in"
#: src/pages/UserPublicProfile.tsx:610
#: src/pages/UserPublicProfile.tsx:738
msgid "Log out"
msgstr "Log out"
#: src/pages/UserLogin.tsx:90
msgid "Logging in…"
msgstr "Logging in…"
#: src/pages/UserLogin.tsx:65
msgid "Login failed"
msgstr "Login failed"
#: src/components/FileDropZone.tsx:141
msgid "Max 50 MB"
msgstr "Max 50 MB"
#: src/pages/Notifications.tsx:312
msgid "new"
msgstr "new"
#: src/components/FeedTabBar.tsx:32
msgid "New"
msgstr "New"
#: src/components/DumpCreateModal.tsx:262
msgid "New dump"
msgstr "New dump"
#: src/pages/PlaylistDetail.tsx:783
msgid "No dumps in this playlist yet."
msgstr "No dumps in this playlist yet."
#: src/pages/Search.tsx:220
msgid "No dumps match \"{q}\"."
msgstr "No dumps match \"{q}\"."
#: src/pages/index/HotFeed.tsx:32
#: src/pages/index/JournalFeed.tsx:44
#: src/pages/index/NewFeed.tsx:32
msgid "No dumps yet. Be the first!"
msgstr "No dumps yet. Be the first!"
#: src/components/TextEditor.tsx:274
msgid "No emoji found."
msgstr "No emoji found."
#: src/pages/UserPlaylists.tsx:424
msgid "No followed playlists yet."
msgstr "No followed playlists yet."
#: src/pages/Search.tsx:273
msgid "No playlists match \"{q}\"."
msgstr "No playlists match \"{q}\"."
#: src/components/PlaylistMembershipPanel.tsx:28
#: src/pages/UserPlaylists.tsx:392
#: src/pages/UserPublicProfile.tsx:865
msgid "No playlists yet."
msgstr "No playlists yet."
#: src/pages/Search.tsx:249
msgid "No users match \"{q}\"."
msgstr "No users match \"{q}\"."
#: api/auth:
#~ msgid "Not authenticated"
#~ msgstr "Not authenticated"
#: src/pages/Notifications.tsx:327
#: src/pages/UserDumps.tsx:92
#: src/pages/UserPublicProfile.tsx:930
#: src/pages/UserPublicProfile.tsx:1049
#: src/pages/UserUpvoted.tsx:151
msgid "Nothing here yet."
msgstr "Nothing here yet."
#: src/components/NotificationBell.tsx:42
#: src/pages/Notifications.tsx:308
msgid "Notifications"
msgstr "Notifications"
#: src/components/NotificationBell.tsx:41
msgid "Notifications ({unreadNotificationCount} unread)"
msgstr "Notifications ({unreadNotificationCount} unread)"
#: src/components/SearchBar.tsx:71
msgid "Open search"
msgstr "Open search"
#: src/components/FileDropZone.tsx:139
msgid "or <0>browse files</0>"
msgstr "or <0>browse files</0>"
#: src/pages/UserLogin.tsx:80
msgid "Password"
msgstr "Password"
#. placeholder {0}: VALIDATION.PASSWORD_MIN
#: src/pages/UserRegister.tsx:142
msgid "Password (min. {0} characters)"
msgstr "Password (min. {0} characters)"
#: api/auth:
#~ msgid "Password must be at least 8 characters"
#~ msgstr "Password must be at least 8 characters"
#: api/auth:
#~ msgid "Password must be at most 128 characters"
#~ msgstr "Password must be at most 128 characters"
#: api/playlists:
#~ msgid "Playlist not found"
#~ msgstr "Playlist not found"
#: src/components/AppHeader.tsx:46
#: src/components/UserMenu.tsx:62
#: src/pages/Search.tsx:175
#: src/pages/UserPlaylists.tsx:366
msgid "Playlists"
msgstr "Playlists"
#. placeholder {0}: playlists.items.length
#. placeholder {1}: playlists.hasMore ? "+" : ""
#: src/pages/UserPublicProfile.tsx:845
msgid "Playlists ({0}{1})"
msgstr "Playlists ({0}{1})"
#: src/components/DumpCreateModal.tsx:180
msgid "Please select a file."
msgstr "Please select a file."
#: src/components/CommentThread.tsx:472
msgid "Post comment"
msgstr "Post comment"
#: src/components/CommentThread.tsx:342
msgid "Post reply"
msgstr "Post reply"
#: src/components/CommentThread.tsx:342
#: src/components/CommentThread.tsx:472
msgid "Posting…"
msgstr "Posting…"
#: src/components/DumpCard.tsx:91
#: src/components/PlaylistCard.tsx:71
#: src/components/PlaylistMembershipPanel.tsx:47
#: src/pages/Dump.tsx:282
#: src/pages/PlaylistDetail.tsx:748
msgid "private"
msgstr "private"
#: src/components/DumpCreateModal.tsx:383
#: src/components/PlaylistCreateForm.tsx:94
#: src/pages/DumpEdit.tsx:274
#: src/pages/PlaylistDetail.tsx:737
msgid "Private"
msgstr "Private"
#: src/components/PlaylistCard.tsx:71
#: src/pages/PlaylistDetail.tsx:748
msgid "public"
msgstr "public"
#: src/components/DumpCreateModal.tsx:375
#: src/components/PlaylistCreateForm.tsx:87
#: src/pages/DumpEdit.tsx:267
#: src/pages/PlaylistDetail.tsx:730
msgid "Public"
msgstr "Public"
#: src/pages/DumpEdit.tsx:206
msgid "Refresh metadata"
msgstr "Refresh metadata"
#: src/pages/DumpEdit.tsx:206
msgid "Refreshing…"
msgstr "Refreshing…"
#: src/pages/UserRegister.tsx:115
#: src/pages/UserRegister.tsx:155
msgid "Register"
msgstr "Register"
#: src/pages/UserRegister.tsx:154
msgid "Registering…"
msgstr "Registering…"
#: src/pages/UserRegister.tsx:118
msgid "Registration failed"
msgstr "Registration failed"
#: src/components/FileDropZone.tsx:115
msgid "Remove file"
msgstr "Remove file"
#: src/pages/PlaylistDetail.tsx:838
msgid "Remove from playlist"
msgstr "Remove from playlist"
#: src/pages/DumpEdit.tsx:241
msgid "Replace file"
msgstr "Replace file"
#: src/components/CommentThread.tsx:284
msgid "Reply"
msgstr "Reply"
#: src/pages/Dump.tsx:209
#: src/pages/DumpEdit.tsx:159
msgid "Retry"
msgstr "Retry"
#: src/components/CommentThread.tsx:257
#: src/pages/DumpEdit.tsx:291
#: src/pages/PlaylistDetail.tsx:665
#: src/pages/UserPublicProfile.tsx:692
#: src/pages/UserPublicProfile.tsx:765
msgid "Save"
msgstr "Save"
#: src/components/CommentThread.tsx:257
#: src/pages/PlaylistDetail.tsx:665
#: src/pages/UserPublicProfile.tsx:692
#: src/pages/UserPublicProfile.tsx:765
msgid "Saving…"
msgstr "Saving…"
#: src/components/SearchBar.tsx:65
msgid "Search"
msgstr "Search"
#: src/components/SearchBar.tsx:61
msgid "Search dumps, users, playlists…"
msgstr "Search dumps, users, playlists…"
#: src/pages/Search.tsx:214
msgid "Search failed"
msgstr "Search failed"
#: src/pages/Search.tsx:210
msgid "Searching…"
msgstr "Searching…"
#: src/components/AppHeader.tsx:61
msgid "Server unreachable"
msgstr "Server unreachable"
#: src/components/PageError.tsx:13
msgid "Something went wrong"
msgstr "Something went wrong"
#: src/components/SearchBar.tsx:71
msgid "Submit search"
msgstr "Submit search"
#: src/pages/UserPublicProfile.tsx:755
msgid "Tell people about yourself…"
msgstr "Tell people about yourself…"
#: src/components/DumpCreateModal.tsx:363
#: src/pages/DumpEdit.tsx:256
msgid "Tell the community what makes this worth their time..."
msgstr "Tell the community what makes this worth their time..."
#: src/pages/UserRegister.tsx:105
msgid "This invite link is missing, expired, or already used."
msgstr "This invite link is missing, expired, or already used."
#: src/pages/UserLogin.tsx:96
msgid "This is a mirage."
msgstr "This is a mirage."
#: src/components/PlaylistCreateForm.tsx:69
msgid "Title"
msgstr "Title"
#: src/pages/Notifications.tsx:341
msgid "Today"
msgstr "Today"
#: src/pages/PlaylistDetail.tsx:850
msgid "Undo"
msgstr "Undo"
#: api/generic:
#~ msgid "Unexpected server error"
#~ msgstr "Unexpected server error"
#: src/components/FollowButton.tsx:34
msgid "Unfollow {targetUsername}"
msgstr "Unfollow {targetUsername}"
#: src/components/FollowButton.tsx:62
msgid "Unfollow playlist"
msgstr "Unfollow playlist"
#: src/pages/UserPublicProfile.tsx:515
msgid "Upload failed"
msgstr "Upload failed"
#: src/components/DumpCreateModal.tsx:404
msgid "Uploading…"
msgstr "Uploading…"
#: src/pages/UserUpvoted.tsx:147
msgid "Upvoted"
msgstr "Upvoted"
#. placeholder {0}: votes.items.length
#. placeholder {1}: votes.hasMore ? "+" : ""
#: src/pages/UserPublicProfile.tsx:829
msgid "Upvoted ({0}{1})"
msgstr "Upvoted ({0}{1})"
#: src/components/DumpCreateModal.tsx:309
#: src/pages/DumpEdit.tsx:221
msgid "URL"
msgstr "URL"
#: src/components/DumpCreateModal.tsx:164
msgid "URL is required."
msgstr "URL is required."
#: src/components/UserMenu.tsx:37
msgid "User menu"
msgstr "User menu"
#: src/pages/UserLogin.tsx:72
#: src/pages/UserRegister.tsx:125
msgid "Username"
msgstr "Username"
#: api/auth:
#~ msgid "Username already exists"
#~ msgstr "Username already exists"
#: api/auth:
#~ msgid "Username must be 132 characters and contain only letters, numbers, or underscores"
#~ msgstr "Username must be 132 characters and contain only letters, numbers, or underscores"
#: src/pages/Search.tsx:174
msgid "Users"
msgstr "Users"
#: src/pages/UserPublicProfile.tsx:878
#: src/pages/UserPublicProfile.tsx:948
#: src/pages/UserPublicProfile.tsx:1076
msgid "View all →"
msgstr "View all →"
#: src/components/DumpCreateModal.tsx:418
msgid "View dump →"
msgstr "View dump →"
#: src/components/DumpCreateModal.tsx:356
#: src/pages/DumpEdit.tsx:250
msgid "Why are you dumping this?"
msgstr "Why are you dumping this?"
#: src/components/CommentThread.tsx:329
msgid "Write a reply…"
msgstr "Write a reply…"
#: src/pages/Notifications.tsx:341
msgid "Yesterday"
msgstr "Yesterday"
#: src/pages/Notifications.tsx:329
msgid "You'll be notified when someone follows your playlists, upvotes your dumps, or posts new content."
msgstr "You'll be notified when someone follows your playlists, upvotes your dumps, or posts new content."
#: src/pages/index/HotFeed.tsx:54
#: src/pages/index/JournalFeed.tsx:67
#: src/pages/index/NewFeed.tsx:54
#: src/pages/Search.tsx:242
msgid "You've reached the end."
msgstr "You've reached the end."