Files
gerbeur/locales/en.po
khannurien 708d113013 v4: a /community page shows the site's week and month, from the same figures as the digests, and every recurring server task is a job of one scheduler — the digests' top dumps and community section (who joined, the new public playlists, the chat and the totals) existed only in emails. community-service.ts now gathers them for a period from listTopDumps, listNewUsers and listNewPublicPlaylists, each in its own service and returning the API's Dump, PublicUser and Playlist; the digest builds its sections from the same call, its email-only DumpRow and DUMP_COLS replaced by one Dump mapper that networkOf uses too, and links its community section to the page. The page, /community for the last week and /community/monthly for the month, signed in only and linked from the avatar menu, reads GET /api/community?period=, which serves figures kept in memory and recomputed every GERBEUR_COMMUNITY_REFRESH_MINUTES (15 by default). It shows the four figures, the top dumps and the new playlists as live cards, and the new members as UserCards, the follow tab's user row made shared. Its words are the emails' own: the messages both use are renamed from email.digest.* to digest.*, as digest.weekly.off was. api/lib/scheduler.ts's startJobs runs the digests, the community refresh, the WebSocket ping, the typing expiry and the rate-limit sweep, which main.ts starts, so none of them runs on import any more. PERIOD_MS moves to shared/settings.ts. community is reserved as a category slug, and migration 0022 renames a category that had it, with renameReservedCategories moved out of 0021 into reserved-slugs.ts. A group's dump or playlist cards now fill its column. 262 backend tests and 678 frontend tests pass, and deno check, tsc, eslint, doc:lint and i18n:compile --strict are clean; checked in screenshots in Smooth light at 1280 and 390px, Smooth dark with mocked playlists, Brutalist dark at 390px and Kanagawa dark at 1280px.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 11:42:01 +00:00

2033 lines
53 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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"
#. js-lingui-explicit-id
#: api/mail/digest.ts:129
#: src/pages/Community.tsx:49
msgid "digest.count.upvotes"
msgstr "{n, plural, one {upvote} other {upvotes}}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:131
msgid "email.digest.count.followers"
msgstr "{n, plural, one {new follower} other {new followers}}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:133
#: src/pages/Community.tsx:50
msgid "digest.count.comments"
msgstr "{n, plural, one {comment} other {comments}}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:135
msgid "email.digest.count.mentions"
msgstr "{n, plural, one {mention} other {mentions}}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:137
msgid "email.digest.count.likes"
msgstr "{n, plural, one {comment like} other {comment likes}}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:139
msgid "email.digest.count.playlistFollows"
msgstr "{n, plural, one {playlist follow} other {playlist follows}}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:155
msgid "email.digest.hl.mentionComment"
msgstr "{who} mentioned you in a comment on {target}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:158
msgid "email.digest.hl.mentionIn"
msgstr "{who} mentioned you in {target}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:160
msgid "email.digest.hl.mentionPlaylist"
msgstr "{who} mentioned you in the playlist {target}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:162
msgid "email.digest.hl.comment"
msgstr "{who} commented on your dump {target}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:164
msgid "email.digest.hl.playlistFollow"
msgstr "{who} followed your playlist {target}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:166
msgid "email.digest.hl.userFollow"
msgstr "{who} started following you"
#. js-lingui-explicit-id
#: api/mail/digest.ts:168
msgid "email.digest.hl.commentLike"
msgstr "{who} liked your comment on {target}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:172
msgid "email.digest.by"
msgstr "by @{username}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:174
msgid "email.digest.addedTo"
msgstr "added to {playlist}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:175
msgid "email.digest.upload"
msgstr "upload"
#. js-lingui-explicit-id
#: api/mail/digest.ts:178
#: src/pages/Community.tsx:141
msgid "digest.invitedByYou"
msgstr "invited by you"
#. js-lingui-explicit-id
#: api/mail/digest.ts:179
#: src/pages/Community.tsx:143
msgid "digest.invitedBy"
msgstr "invited by @{username}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:180
msgid "email.digest.andMore"
msgstr "and {n} more"
#. js-lingui-explicit-id
#: api/mail/digest.ts:182
msgid "email.digest.playlistMeta"
msgstr "by @{username} · {n, plural, one {# dump} other {# dumps}}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:205
msgid "email.digest.yours"
msgstr "yours"
#. js-lingui-explicit-id
#: api/mail/digest.ts:223
#: src/pages/Settings.tsx:154
msgid "digest.monthly"
msgstr "Monthly recap"
#. js-lingui-explicit-id
#: api/mail/digest.ts:223
#: src/pages/Settings.tsx:145
msgid "digest.weekly"
msgstr "Weekly digest"
#. js-lingui-explicit-id
#: api/mail/digest.ts:231
msgid "email.digest.monthly.title"
msgstr "The month on {site}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:232
msgid "email.digest.weekly.title"
msgstr "Your week, {username}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:240
msgid "email.digest.forYou"
msgstr "For you"
#. js-lingui-explicit-id
#: api/mail/digest.ts:249
msgid "email.digest.theChat"
msgstr "the chat"
#. js-lingui-explicit-id
#: api/mail/digest.ts:264
msgid "email.digest.seeAll"
msgstr "{n, plural, one {See the notification} other {See all # notifications}}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:273
msgid "email.digest.network"
msgstr "From people you follow"
#. js-lingui-explicit-id
#: api/mail/digest.ts:279
msgid "email.digest.more"
msgstr "{n} more on your Followed feed"
#. js-lingui-explicit-id
#: api/mail/digest.ts:291
#: src/pages/Community.tsx:127
msgid "digest.topMonth"
msgstr "Top this month"
#. js-lingui-explicit-id
#: api/mail/digest.ts:291
#: src/pages/Community.tsx:126
msgid "digest.topWeek"
msgstr "Top this week"
#. js-lingui-explicit-id
#: api/mail/digest.ts:307
#: src/components/layout/UserMenu.tsx:94
#: src/pages/Community.tsx:73
#: src/pages/Community.tsx:100
msgid "digest.community"
msgstr "Community"
#. js-lingui-explicit-id
#: api/mail/digest.ts:314
#: src/pages/Community.tsx:48
msgid "digest.stat.dumps"
msgstr "{n, plural, one {dump} other {dumps}}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:320
#: src/pages/Community.tsx:53
msgid "digest.stat.chat"
msgstr "{n, plural, one {chat message} other {chat messages}}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:329
#: src/pages/Community.tsx:133
msgid "digest.newMembers"
msgstr "New members"
#. js-lingui-explicit-id
#: api/mail/digest.ts:348
#: src/pages/Community.tsx:154
msgid "digest.newPlaylists"
msgstr "New public playlists"
#. js-lingui-explicit-id
#: api/mail/digest.ts:363
msgid "email.digest.inChat"
msgstr "In the chat"
#. js-lingui-explicit-id
#: api/mail/digest.ts:365
msgid "email.digest.chatWeek"
msgstr "{n, plural, one {# message this week} other {# messages this week}}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:368
msgid "email.digest.openChat"
msgstr "Open the chat"
#. js-lingui-explicit-id
#: api/mail/digest.ts:377
msgid "email.digest.totals"
msgstr "{dumps, plural, one {# dump} other {# dumps}}, {upvotes, plural, one {# upvote} other {# upvotes}} and {comments, plural, one {# comment} other {# comments}}."
#. js-lingui-explicit-id
#: api/mail/digest.ts:383
msgid "email.digest.communityPage"
msgstr "See it all on the community page"
#. js-lingui-explicit-id
#: api/mail/digest.ts:393
msgid "email.digest.monthly.reason"
msgstr "You're getting the monthly recap because it's on in your settings."
#. js-lingui-explicit-id
#: api/mail/digest.ts:394
msgid "email.digest.weekly.reason"
msgstr "You're getting the weekly digest because it's on in your settings."
#. js-lingui-explicit-id
#: api/mail/digest.ts:398
#: src/pages/Unsubscribe.tsx:118
msgid "digest.monthly.off"
msgstr "Turn off monthly recaps"
#. js-lingui-explicit-id
#: api/mail/digest.ts:398
#: src/pages/Unsubscribe.tsx:117
msgid "digest.weekly.off"
msgstr "Turn off weekly digests"
#. js-lingui-explicit-id
#: api/mail/digest.ts:403
msgid "email.settings"
msgstr "Settings"
#. js-lingui-explicit-id
#: api/mail/digest.ts:411
msgid "email.digest.monthly.subject"
msgstr "The month on {site}, {range}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:415
msgid "email.digest.weekly.subject"
msgstr "Your week on {site}, {range}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:438
msgid "email.digest.pre.network"
msgstr "{n, plural, one {# new dump from people you follow} other {# new dumps from people you follow}}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:447
msgid "email.digest.pre.topMonth"
msgstr "{n, plural, one {the most upvoted dump of the month} other {the # most upvoted dumps of the month}}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:451
msgid "email.digest.pre.members"
msgstr "{n, plural, one {# new member} other {# new members}}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:454
msgid "email.digest.pre.playlists"
msgstr "{n, plural, one {# new playlist} other {# new playlists}}"
#. js-lingui-explicit-id
#: api/mail/digest.ts:458
msgid "email.digest.pre.topWeek"
msgstr "{n, plural, one {the most upvoted dump of the week} other {the # most upvoted dumps of the week}}"
#. js-lingui-explicit-id
#: api/mail/password-reset.ts:29
msgid "email.reset.title"
msgstr "Reset your password"
#. js-lingui-explicit-id
#: api/mail/password-reset.ts:30
msgid "email.reset.hi"
msgstr "Hi {username},"
#. js-lingui-explicit-id
#: api/mail/password-reset.ts:31
msgid "email.reset.body"
msgstr "Someone asked to reset the password of your {site} account. The button below lets you choose a new one. It works once, for {hours, plural, one {# hour} other {# hours}}."
#. js-lingui-explicit-id
#: api/mail/password-reset.ts:33
msgid "email.reset.button"
msgstr "Reset password"
#. js-lingui-explicit-id
#: api/mail/password-reset.ts:36
msgid "email.reset.fallback"
msgstr "If the button doesn't work, paste this link into your browser:"
#. js-lingui-explicit-id
#: api/mail/password-reset.ts:38
msgid "email.reset.ignore"
msgstr "If you didn't ask for this, ignore this email. Your password stays the same."
#. js-lingui-explicit-id
#: api/mail/password-reset.ts:40
msgid "email.reset.reason"
msgstr "You're getting this email because a password reset was requested for this address."
#. js-lingui-explicit-id
#: api/mail/password-reset.ts:44
msgid "email.reset.subject"
msgstr "Reset your {site} password"
#. js-lingui-explicit-id
#: api/mail/password-reset.ts:45
msgid "email.reset.preheader"
msgstr "The link works once, for {hours, plural, one {# hour} other {# hours}}."
#. js-lingui-explicit-id
#: api/mail/welcome.ts:32
msgid "email.welcome.body"
msgstr "# Welcome to {site}!\n"
"\n"
"Hi **{username}**,\n"
"\n"
"Your account has been created successfully. Welcome aboard!"
#. js-lingui-explicit-id
#: api/mail/welcome.ts:39
msgid "email.welcome.button"
msgstr "Open {site}"
#. js-lingui-explicit-id
#: api/mail/welcome.ts:42
msgid "email.welcome.digests"
msgstr "Once a week you'll get a digest of what happened here, and once a month a recap of the most upvoted dumps. You can turn either off in your settings."
#. js-lingui-explicit-id
#: api/mail/welcome.ts:44
msgid "email.welcome.reason"
msgstr "You're getting this email because an account was created on {site} with this address."
#. js-lingui-explicit-id
#: api/mail/welcome.ts:48
msgid "email.welcome.subject"
msgstr "Welcome to {site}"
#. js-lingui-explicit-id
#: api/mail/welcome.ts:49
msgid "email.welcome.preheader"
msgstr "Your account is ready."
#: src/components/comment/CommentNode.tsx:140
msgid "[deleted]"
msgstr "[deleted]"
#. placeholder {0}: dump.commentCount
#: src/components/dump/DumpCard.tsx:139
#: 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
msgid "{0, plural, one {# dump} other {# dumps}}"
msgstr "{0, plural, one {# dump} other {# dumps}}"
#. placeholder {0}: rest.length
#: src/components/dump/create/DuplicateNotice.tsx:53
msgid "{0, plural, one {and # earlier dump} other {and # earlier dumps}}"
msgstr "{0, plural, one {and # earlier dump} other {and # earlier dumps}}"
#. placeholder {0}: typingNames[0]
#. placeholder {1}: typingNames[1]
#: src/components/chat/ChatModal.tsx:649
msgid "{0} and {1} are typing…"
msgstr "{0} and {1} are typing…"
#. placeholder {0}: typingNames[0]
#: src/components/chat/ChatModal.tsx:647
msgid "{0} is typing…"
msgstr "{0} is typing…"
#. placeholder {0}: rest.length
#: src/components/feed/PresenceRow.tsx:82
msgid "{0} more online: {restNames}"
msgstr "{0} more online: {restNames}"
#. placeholder {0}: VALIDATION.USERNAME_MIN
#. placeholder {1}: VALIDATION.USERNAME_MAX
#: src/pages/UserRegister.tsx:145
msgid "{0}–{1} characters: letters, numbers, or underscores"
msgstr "{0}–{1} characters: letters, numbers, or underscores"
#: src/pages/Search.tsx:124
msgid "{label} ({count})"
msgstr "{label} ({count})"
#: src/pages/Notifications.tsx:499
msgid "{totalUnread, plural, one {# new} other {# new}}"
msgstr "{totalUnread, plural, one {# new} other {# new}}"
#: src/components/chat/ChatModal.tsx:778
msgid "{unseenCount} new messages"
msgstr "{unseenCount} new messages"
#: src/components/comment/CommentThread.tsx:82
msgid "{visibleCount, plural, one {# comment} other {# comments}}"
msgstr "{visibleCount, plural, one {# comment} other {# comments}}"
#: src/components/dump/create/DumpCreateModal.tsx:742
#: src/pages/PlaylistDetail.tsx:80
#: src/pages/UserPublicProfile.tsx:123
msgid "← Back"
msgstr "← Back"
#: src/pages/Dump.tsx:326
#: src/pages/Dump.tsx:568
#: src/pages/DumpEdit.tsx:232
msgid "← Back to all dumps"
msgstr "← Back to all dumps"
#: src/components/profile/ProfileOwnActions.tsx:76
msgid "+ Invite someone"
msgstr "+ Invite someone"
#: src/components/playlist/PlaylistMembershipPanel.tsx:107
msgid "+ New playlist"
msgstr "+ New playlist"
#: src/pages/Dump.tsx:403
msgid "+ Playlist"
msgstr "+ Playlist"
#. placeholder {0}: d.commenterUsername
#. placeholder {1}: d.dumpTitle
#: src/pages/Notifications.tsx:239
msgid "<0>{0}</0> commented on <1>{1}</1>"
msgstr "<0>{0}</0> commented on <1>{1}</1>"
#. placeholder {0}: d.followerUsername
#. placeholder {1}: d.playlistTitle
#: src/pages/Notifications.tsx:199
msgid "<0>{0}</0> followed your playlist <1>{1}</1>"
msgstr "<0>{0}</0> followed your playlist <1>{1}</1>"
#. placeholder {0}: d.likerUsername
#. placeholder {1}: d.dumpTitle
#: src/pages/Notifications.tsx:249
msgid "<0>{0}</0> liked your comment on <1>{1}</1>"
msgstr "<0>{0}</0> liked your comment on <1>{1}</1>"
#. placeholder {0}: d.mentionerUsername
#: src/pages/Notifications.tsx:265
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:209
msgid "<0>{0}</0> posted <1>{1}</1>"
msgstr "<0>{0}</0> posted <1>{1}</1>"
#. placeholder {0}: d.followerUsername
#: src/pages/Notifications.tsx:190
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:229
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:219
msgid "<0>{0}</0> was added to <1>{1}</1>"
msgstr "<0>{0}</0> was added to <1>{1}</1>"
#: src/components/chat/ChatModal.tsx:777
msgid "1 new message"
msgstr "1 new message"
#: src/pages/Notifications.tsx:260
msgid "a comment"
msgstr "a comment"
#: src/components/form/SlugField.tsx:82
msgid "A link is required"
msgstr "A link is required"
#: src/pages/Notifications.tsx:263
msgid "a post"
msgstr "a post"
#: src/pages/Settings.tsx:83
msgid "Account"
msgstr "Account"
#: src/components/comment/CommentThread.tsx:102
msgid "Add a comment…"
msgstr "Add a comment…"
#: src/components/category/CategoryManager.tsx:104
#: src/components/category/CategoryManager.tsx:105
msgid "Add category"
msgstr "Add category"
#: src/components/profile/ProfileHeader.tsx:153
msgid "Add email…"
msgstr "Add email…"
#: src/components/shared/ImagePicker.tsx:66
msgid "Add image"
msgstr "Add image"
#: src/components/dump/create/DumpCreateModal.tsx:465
#: src/components/playlist/AddToPlaylistModal.tsx:29
msgid "Add to playlist"
msgstr "Add to playlist"
#: src/components/profile/RoleSwitcher.tsx:24
msgid "Admin"
msgstr "Admin"
#: src/components/category/CategorySwitcher.tsx:96
#: src/components/category/CategorySwitcher.tsx:99
msgid "All"
msgstr "All"
#. placeholder {0}: first.ownerUsername
#. placeholder {1}: relativeTime(first.createdAt)
#: src/components/dump/create/DuplicateNotice.tsx:39
msgid "Already dumped by {0} {1}"
msgstr "Already dumped by {0} {1}"
#: src/pages/UserRegister.tsx:175
msgid "Already have an account? <0>Log in</0>"
msgstr "Already have an account? <0>Log in</0>"
#: src/utils/shared/api.ts:35
msgid "An unexpected error occurred."
msgstr "An unexpected error occurred."
#: src/pages/Settings.tsx:99
msgid "Appearance"
msgstr "Appearance"
#. placeholder {0}: VALIDATION.PASSWORD_MIN
#: src/components/profile/ChangePasswordModal.tsx:101
#: src/pages/ResetPassword.tsx:124
#: src/pages/UserRegister.tsx:164
msgid "At least {0} characters"
msgstr "At least {0} characters"
#: src/components/form/RichTextField.tsx:66
msgid "At most {maxLength} characters."
msgstr "At most {maxLength} characters."
#: src/pages/Settings.tsx:45
msgid "Auto"
msgstr "Auto"
#: src/pages/ResetPassword.tsx:74
#: src/pages/ResetPassword.tsx:147
msgid "Back to login"
msgstr "Back to login"
#: src/contexts/ws/WSProvider.tsx:395
#: src/contexts/ws/WSProvider.tsx:761
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/category/CategoryManager.tsx:225
#: src/components/category/CategoryManager.tsx:226
#: src/components/chat/ChatEditBox.tsx:92
#: src/components/comment/CommentForm.tsx:127
#: src/components/dump/create/DumpCreateModal.tsx:752
#: src/components/form/FormActions.tsx:42
#: src/components/playlist/PlaylistEditForm.tsx:200
#: src/components/profile/DescriptionEditor.tsx:97
#: src/components/profile/EmailEditor.tsx:83
#: src/components/shared/ConfirmModal.tsx:63
#: src/pages/Dump.tsx:445
#: src/pages/DumpEdit.tsx:565
msgid "Cancel"
msgstr "Cancel"
#: src/components/playlist/PlaylistDumpList.tsx:120
msgid "Cancel removal"
msgstr "Cancel removal"
#: src/components/chat/ChatModal.tsx:838
#: src/components/chat/ChatModal.tsx:839
msgid "Cancel reply"
msgstr "Cancel reply"
#: src/components/layout/AppHeader.tsx:182
msgid "Cancel search"
msgstr "Cancel search"
#: src/components/category/CategorySelect.tsx:33
#: src/pages/Manage.tsx:30
msgid "Categories"
msgstr "Categories"
#: src/components/category/CategorySwitcher.tsx:119
msgid "Category"
msgstr "Category"
#: src/components/profile/ProfileHeader.tsx:95
msgid "Change avatar"
msgstr "Change avatar"
#: src/components/shared/ImagePicker.tsx:66
msgid "Change image"
msgstr "Change image"
#: src/components/profile/ChangePasswordModal.tsx:66
#: src/components/profile/ChangePasswordModal.tsx:120
msgid "Change password"
msgstr "Change password"
#: src/pages/Settings.tsx:94
msgid "Change password…"
msgstr "Change password…"
#: src/components/editor/EmojiPickerPopup.tsx:108
msgid "Change skin tone"
msgstr "Change skin tone"
#: src/components/chat/ChatModal.tsx:738
#: src/components/layout/ChatButton.tsx:30
#: src/components/layout/ChatFab.tsx:54
#: src/components/layout/ChatFab.tsx:55
msgid "Chat"
msgstr "Chat"
#: src/components/layout/ChatButton.tsx:29
#: src/components/layout/ChatFab.tsx:53
msgid "Chat ({unreadChatCount} unread)"
msgstr "Chat ({unreadChatCount} unread)"
#: src/pages/UserRegister.tsx:106
msgid "Checking invite…"
msgstr "Checking invite…"
#: src/components/profile/ChangePasswordModal.tsx:75
#: src/components/shared/Modal.tsx:76
msgid "Close"
msgstr "Close"
#: src/components/dump/create/DumpCreateModal.tsx:496
msgid "Close anyway"
msgstr "Close anyway"
#: src/components/editor/EmojiPickerPopup.tsx:113
msgid "Close emoji picker"
msgstr "Close emoji picker"
#: src/components/player/GlobalPlayer.tsx:262
msgid "Close player"
msgstr "Close player"
#: src/components/dump/create/DumpCreateModal.tsx:486
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."
#: src/components/player/GlobalPlayer.tsx:254
msgid "Collapse player"
msgstr "Collapse player"
#: src/pages/Settings.tsx:108
msgid "Color scheme"
msgstr "Color scheme"
#: src/components/profile/ChangePasswordModal.tsx:108
#: src/pages/ResetPassword.tsx:131
msgid "Confirm new password"
msgstr "Confirm new password"
#: src/contexts/ws/WSProvider.tsx:754
msgid "Connection lost — this message may not have been sent"
msgstr "Connection lost — this message may not have been sent"
#: src/components/profile/ProfileOwnActions.tsx:99
msgid "Copied!"
msgstr "Copied!"
#: src/components/profile/ProfileOwnActions.tsx:99
msgid "Copy"
msgstr "Copy"
#: src/components/profile/ChangePasswordModal.tsx:117
msgid "Could not change password"
msgstr "Could not change password"
#: src/utils/shared/api.ts:33
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
msgid "Could not delete"
msgstr "Could not delete"
#: src/components/profile/UsernameField.tsx:76
msgid "Could not rename"
msgstr "Could not rename"
#: src/pages/DumpEdit.tsx:512
msgid "Could not save"
msgstr "Could not save"
#: src/components/dump/create/DumpCreateModal.tsx:607
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."
#: src/components/chat/ChatModal.tsx:664
msgid "Couldn't load the chat."
msgstr "Couldn't load the chat."
#: src/pages/Unsubscribe.tsx:114
msgid "Couldn't unsubscribe"
msgstr "Couldn't unsubscribe"
#: src/components/social/FollowButton.tsx:112
msgid "Couldn't update. Try again."
msgstr "Couldn't update. Try again."
#: src/components/playlist/PlaylistEditForm.tsx:135
msgid "Cover"
msgstr "Cover"
#: src/components/playlist/PlaylistCreateForm.tsx:112
msgid "Create"
msgstr "Create"
#: src/components/playlist/PlaylistCreateForm.tsx:112
msgid "Create & Add"
msgstr "Create & Add"
#: src/components/playlist/PlaylistCreateForm.tsx:111
msgid "Creating…"
msgstr "Creating…"
#: src/components/profile/ChangePasswordModal.tsx:86
msgid "Current password"
msgstr "Current password"
#: src/pages/Settings.tsx:47
msgid "Dark"
msgstr "Dark"
#: src/pages/Settings.tsx:119
msgid "Default tab"
msgstr "Default tab"
#: src/components/category/CategoryManager.tsx:236
#: src/components/category/CategoryManager.tsx:237
#: src/components/chat/ChatMessageItem.tsx:115
#: src/components/chat/ChatMessageItem.tsx:116
#: src/components/chat/ChatMessageItem.tsx:214
#: src/components/comment/CommentNode.tsx:265
#: src/components/comment/CommentNode.tsx:271
#: src/components/form/DeleteButton.tsx:36
#: src/components/shared/ConfirmModal.tsx:34
msgid "Delete"
msgstr "Delete"
#: src/components/category/CategoryManager.tsx:253
msgid "Delete category"
msgstr "Delete category"
#. placeholder {0}: category.name
#: src/components/category/CategoryManager.tsx:252
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
msgid "Delete dump"
msgstr "Delete dump"
#. placeholder {0}: res.status
#: src/pages/DumpEdit.tsx:193
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/pages/PlaylistDetail.tsx:141
msgid "Delete playlist"
msgstr "Delete playlist"
#: src/components/comment/CommentNode.tsx:270
msgid "Delete this comment?"
msgstr "Delete this comment?"
#: src/pages/DumpEdit.tsx:313
msgid "Delete this dump? This cannot be undone."
msgstr "Delete this dump? This cannot be undone."
#: src/components/chat/ChatMessageItem.tsx:213
msgid "Delete this message?"
msgstr "Delete this message?"
#: src/components/profile/ProfilePlaylistsTab.tsx:155
#: src/pages/PlaylistDetail.tsx:140
msgid "Delete this playlist? This cannot be undone."
msgstr "Delete this playlist? This cannot be undone."
#: src/components/chat/ReplyRef.tsx:49
msgid "deleted message"
msgstr "deleted message"
#: src/components/playlist/PlaylistEditForm.tsx:176
msgid "Description"
msgstr "Description"
#: src/components/playlist/PlaylistCreateForm.tsx:104
msgid "Description (optional)"
msgstr "Description (optional)"
#: src/components/chat/PendingItem.tsx:100
msgid "Discard"
msgstr "Discard"
#: src/components/chat/ChatModal.tsx:742
msgid "Disconnected — reconnecting…"
msgstr "Disconnected — reconnecting…"
#: src/components/chat/ChatModal.tsx:814
#: src/components/chat/ChatModal.tsx:815
msgid "Dismiss"
msgstr "Dismiss"
#: src/components/dump/create/DumpCreateModal.tsx:546
msgid "Done"
msgstr "Done"
#. placeholder {0}: dump.fileName
#: src/components/dump/FilePreview.tsx:215
msgid "Download {0}"
msgstr "Download {0}"
#: src/components/form/FileDropZone.tsx:55
msgid "Drop a file here"
msgstr "Drop a file here"
#: src/components/dump/create/DumpCreateModal.tsx:653
msgid "Drop a file here, or paste one"
msgstr "Drop a file here, or paste one"
#: src/pages/DumpEdit.tsx:503
msgid "Drop a replacement here"
msgstr "Drop a replacement here"
#: src/components/layout/AppHeader.tsx:201
msgid "Dump"
msgstr "Dump"
#: src/components/dump/create/DumpCreateModal.tsx:765
msgid "Dump it"
msgstr "Dump it"
#: src/components/dump/create/DumpCreateModal.tsx:524
msgid "Dumped!"
msgstr "Dumped!"
#: src/components/profile/ProfileDumpsTab.tsx:45
#: src/pages/Search.tsx:120
#: src/pages/UserPublicProfile.tsx:158
msgid "Dumps"
msgstr "Dumps"
#. placeholder {0}: countOf(dumps.state)
#: src/components/profile/ProfileOverviewTab.tsx:56
msgid "Dumps ({0})"
msgstr "Dumps ({0})"
#: src/pages/Notifications.tsx:305
msgid "Earlier"
msgstr "Earlier"
#: src/components/chat/ChatMessageItem.tsx:104
#: src/components/chat/ChatMessageItem.tsx:105
#: src/components/chat/PendingItem.tsx:93
#: src/components/comment/CommentNode.tsx:256
#: src/components/playlist/PlaylistHeader.tsx:59
#: src/pages/Dump.tsx:564
msgid "Edit"
msgstr "Edit"
#. placeholder {0}: category.name
#: src/components/category/CategoryManager.tsx:84
msgid "Edit {0}"
msgstr "Edit {0}"
#: src/components/profile/ProfileDescription.tsx:58
msgid "Edit description"
msgstr "Edit description"
#: src/components/profile/ProfileHeader.tsx:151
msgid "Edit email"
msgstr "Edit email"
#: src/components/dump/create/TitleField.tsx:69
#: src/pages/Dump.tsx:462
msgid "Edit title"
msgstr "Edit title"
#: src/components/chat/ChatMessageItem.tsx:128
msgid "edited"
msgstr "edited"
#. placeholder {0}: relativeTime(comment.updatedAt)
#. placeholder {0}: relativeTime(dump.updatedAt)
#. placeholder {0}: relativeTime(message.updatedAt)
#: src/components/chat/ChatMessageItem.tsx:129
#: src/components/comment/CommentNode.tsx:205
#: src/components/playlist/PlaylistHeader.tsx:94
#: src/pages/Dump.tsx:505
msgid "edited {0}"
msgstr "edited {0}"
#. placeholder {0}: comment.updatedAt.toLocaleString()
#. placeholder {0}: dump.updatedAt.toLocaleString()
#. placeholder {0}: message.updatedAt.toLocaleString()
#: src/components/chat/ChatMessageItem.tsx:125
#: src/components/comment/CommentNode.tsx:203
#: src/components/playlist/PlaylistHeader.tsx:92
#: src/pages/Dump.tsx:503
msgid "Edited {0}"
msgstr "Edited {0}"
#: src/pages/DumpEdit.tsx:257
msgid "Editing"
msgstr "Editing"
#. placeholder {0}: state.dump.title
#: src/pages/DumpEdit.tsx:80
msgid "Editing {0}"
msgstr "Editing {0}"
#: src/pages/Settings.tsx:143
msgid "Email"
msgstr "Email"
#: src/pages/UserRegister.tsx:152
msgid "Email address"
msgstr "Email address"
#: src/pages/Search.tsx:155
msgid "Enter a query to search."
msgstr "Enter a query to search."
#: src/components/player/GlobalPlayer.tsx:254
msgid "Expand player"
msgstr "Expand player"
#: src/components/category/CategoryManager.tsx:246
msgid "Failed to create category"
msgstr "Failed to create category"
#: src/components/playlist/PlaylistCreateForm.tsx:109
msgid "Failed to create playlist"
msgstr "Failed to create playlist"
#: src/components/category/CategoryManager.tsx:169
msgid "Failed to delete"
msgstr "Failed to delete"
#: src/components/profile/ProfileOwnActions.tsx:46
#: src/components/profile/ProfileOwnActions.tsx:49
#: src/components/profile/ProfileOwnActions.tsx:108
msgid "Failed to generate invite"
msgstr "Failed to generate invite"
#: src/components/shared/ListState.tsx:43
msgid "Failed to load"
msgstr "Failed to load"
#: src/components/dump/create/DumpCreateModal.tsx:555
msgid "Failed to post"
msgstr "Failed to post"
#: src/components/comment/CommentThread.tsx:101
msgid "Failed to post comment"
msgstr "Failed to post comment"
#: src/components/comment/CommentNode.tsx:291
msgid "Failed to post reply"
msgstr "Failed to post reply"
#: src/components/playlist/PlaylistEditForm.tsx:185
#: 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
msgid "Failed to save category"
msgstr "Failed to save category"
#: src/components/comment/CommentNode.tsx:218
msgid "Failed to save edit"
msgstr "Failed to save edit"
#: src/components/profile/ProfileHeader.tsx:162
msgid "Failed to update avatar"
msgstr "Failed to update avatar"
#: src/components/profile/RoleSwitcher.tsx:92
msgid "Failed to update role"
msgstr "Failed to update role"
#: src/pages/Settings.tsx:117
msgid "Feeds"
msgstr "Feeds"
#: src/components/dump/create/DumpCreateModal.tsx:594
msgid "Fetching preview…"
msgstr "Fetching preview…"
#: src/components/dump/create/DumpCreateModal.tsx:417
msgid "File too large (max {max})."
msgstr "File too large (max {max})."
#: src/components/social/FollowButton.tsx:62
#: src/components/social/FollowButton.tsx:102
msgid "Follow"
msgstr "Follow"
#: src/components/social/FollowButton.tsx:60
msgid "Follow {targetUsername}"
msgstr "Follow {targetUsername}"
#: src/components/social/FollowButton.tsx:100
msgid "Follow playlist"
msgstr "Follow playlist"
#: src/components/feed/FollowedFeed.tsx:151
msgid "Follow some public playlists to see their dumps here."
msgstr "Follow some public playlists to see their dumps here."
#: src/components/feed/FollowedFeed.tsx:143
msgid "Follow some users to see their dumps here."
msgstr "Follow some users to see their dumps here."
#: src/components/feed/FeedTabBar.tsx:43
#: src/components/profile/ProfileFollowTab.tsx:140
#: src/pages/Settings.tsx:54
#: src/pages/UserPublicProfile.tsx:161
msgid "Followed"
msgstr "Followed"
#: src/components/social/FollowButton.tsx:62
#: src/components/social/FollowButton.tsx:102
msgid "Following"
msgstr "Following"
#: src/pages/UserLogin.tsx:97
msgid "Forgot password?"
msgstr "Forgot password?"
#: src/components/feed/FollowedFeed.tsx:132
msgid "From people"
msgstr "From people"
#: src/components/feed/FollowedFeed.tsx:133
msgid "From playlists"
msgstr "From playlists"
#: src/components/player/MediaPlayer.tsx:373
msgid "Fullscreen"
msgstr "Fullscreen"
#: src/pages/NotFound.tsx:24
msgid "Go home"
msgstr "Go home"
#: src/pages/ResetPassword.tsx:96
msgid "Go to login"
msgstr "Go to login"
#: src/components/feed/FeedTabBar.tsx:39
#: src/pages/Settings.tsx:51
msgid "Hot"
msgstr "Hot"
#: src/pages/UserLogin.tsx:136
msgid "If that address is registered you'll receive a reset link shortly."
msgstr "If that address is registered you'll receive a reset link shortly."
#: src/utils/chat/message.ts:43
msgid "image"
msgstr "image"
#: src/pages/Dump.tsx:584
msgid "In collections"
msgstr "In collections"
#: src/components/editor/TextEditor.tsx:573
#: src/components/editor/TextEditor.tsx:575
msgid "Insert emoji"
msgstr "Insert emoji"
#: src/pages/UserRegister.tsx:117
msgid "Invalid invite"
msgstr "Invalid invite"
#: src/pages/ResetPassword.tsx:64
#: src/pages/Unsubscribe.tsx:64
msgid "Invalid link"
msgstr "Invalid link"
#: src/components/profile/ProfileOwnActions.tsx:82
#: src/components/profile/ProfileOwnActions.tsx:89
msgid "Invite link"
msgstr "Invite link"
#: src/components/profile/ProfileHeader.tsx:116
msgid "invited by"
msgstr "invited by"
#: src/components/profile/ProfileInviteesTab.tsx:77
#: src/pages/UserPublicProfile.tsx:162
msgid "Invitees"
msgstr "Invitees"
#: src/components/feed/FeedTabBar.tsx:41
#: src/pages/Settings.tsx:53
msgid "Journal"
msgstr "Journal"
#: src/components/dump/create/DumpCreateModal.tsx:493
msgid "Keep editing"
msgstr "Keep editing"
#: src/components/profile/UsernameField.tsx:59
msgid "Letters, numbers and underscores only"
msgstr "Letters, numbers and underscores only"
#: src/pages/Settings.tsx:46
msgid "Light"
msgstr "Light"
#: src/components/social/LikeButton.tsx:54
msgid "Like"
msgstr "Like"
#: src/components/dump/create/DumpCreateModal.tsx:569
#: src/components/form/SlugField.tsx:69
msgid "Link"
msgstr "Link"
#: src/components/dump/create/StepIndicator.tsx:19
msgid "Link or file"
msgstr "Link or file"
#: src/contexts/ws/WSProvider.tsx:760
msgid "Live updates are temporarily disconnected. Trying to reconnect…"
msgstr "Live updates are temporarily disconnected. Trying to reconnect…"
#: src/components/layout/AppHeader.tsx:234
msgid "Live updates unavailable."
msgstr "Live updates unavailable."
#: src/components/shared/LoadMoreButton.tsx:32
msgid "Load more"
msgstr "Load more"
#: src/components/chat/ChatModal.tsx:763
msgid "Load older messages"
msgstr "Load older messages"
#: src/pages/Dump.tsx:302
#: src/pages/DumpEdit.tsx:208
msgid "Loading dump…"
msgstr "Loading dump…"
#: src/components/chat/ChatModal.tsx:656
msgid "Loading messages…"
msgstr "Loading messages…"
#: src/components/feed/FeedFooter.tsx:34
msgid "Loading more…"
msgstr "Loading more…"
#: src/pages/PlaylistDetail.tsx:64
msgid "Loading playlist…"
msgstr "Loading playlist…"
#: src/pages/UserPublicProfile.tsx:106
msgid "Loading profile…"
msgstr "Loading profile…"
#: src/components/category/CategoryManager.tsx:60
#: src/components/chat/ChatModal.tsx:762
#: src/components/editor/EmojiPickerPopup.tsx:125
#: src/components/playlist/PlaylistMembershipPanel.tsx:45
#: src/components/shared/ListState.tsx:38
#: src/components/shared/LoadMoreButton.tsx:32
#: src/components/social/UserListPopover.tsx:151
msgid "Loading…"
msgstr "Loading…"
#: src/components/layout/AppHeader.tsx:208
#: src/pages/UserLogin.tsx:41
#: src/pages/UserLogin.tsx:67
#: src/pages/UserLogin.tsx:86
msgid "Log in"
msgstr "Log in"
#: src/components/social/LikeButton.tsx:55
msgid "Log in to like"
msgstr "Log in to like"
#: src/components/social/VoteButton.tsx:53
msgid "Log in to vote"
msgstr "Log in to vote"
#: src/components/layout/UserMenu.tsx:124
#: src/pages/UserPublicProfile.tsx:131
msgid "Log out"
msgstr "Log out"
#: src/pages/UserLogin.tsx:85
msgid "Logging in…"
msgstr "Logging in…"
#: src/pages/UserLogin.tsx:72
msgid "Login failed"
msgstr "Login failed"
#: src/components/form/SlugField.tsx:85
msgid "Lowercase letters, numbers and single hyphens only"
msgstr "Lowercase letters, numbers and single hyphens only"
#: src/components/layout/UserMenu.tsx:111
#: src/pages/Manage.tsx:24
#: src/pages/Manage.tsx:29
#: src/pages/UserPublicProfile.tsx:164
msgid "Manage"
msgstr "Manage"
#: src/components/form/FileDropZone.tsx:169
msgid "Max {limit}"
msgstr "Max {limit}"
#: src/components/profile/RoleSwitcher.tsx:23
msgid "Moderator"
msgstr "Moderator"
#: src/components/player/MediaPlayer.tsx:346
msgid "Mute"
msgstr "Mute"
#: src/components/category/CategoryManager.tsx:192
#: src/components/category/CategoryManager.tsx:193
msgid "Name"
msgstr "Name"
#: src/components/chat/ChatModal.tsx:691
#: src/components/feed/FeedTabBar.tsx:40
#: src/pages/Settings.tsx:52
msgid "New"
msgstr "New"
#: src/components/dump/create/DumpCreateModal.tsx:465
#: src/components/dump/NewDumpButton.tsx:27
#: src/components/layout/DumpFab.tsx:66
#: src/components/layout/DumpFab.tsx:67
msgid "New dump"
msgstr "New dump"
#: src/components/profile/ChangePasswordModal.tsx:94
#: src/pages/ResetPassword.tsx:116
msgid "New password"
msgstr "New password"
#: src/components/playlist/NewPlaylistButton.tsx:49
#: src/components/playlist/NewPlaylistButton.tsx:56
msgid "New playlist"
msgstr "New playlist"
#: src/components/dump/create/DumpCreateModal.tsx:764
msgid "Next →"
msgstr "Next →"
#: src/components/player/GlobalPlayer.tsx:244
msgid "Next track"
msgstr "Next track"
#: src/components/playlist/PlaylistDumpList.tsx:46
msgid "No dumps in this playlist yet."
msgstr "No dumps in this playlist yet."
#: src/pages/Search.tsx:171
msgid "No dumps match \"{q}\"."
msgstr "No dumps match \"{q}\"."
#: src/components/feed/DumpFeed.tsx:76
#: src/components/feed/JournalFeed.tsx:36
msgid "No dumps yet. Be the first!"
msgstr "No dumps yet. Be the first!"
#: src/components/editor/EmojiPickerPopup.tsx:128
msgid "No emoji found."
msgstr "No emoji found."
#: src/components/profile/ProfileFollowTab.tsx:113
msgid "No followed playlists yet."
msgstr "No followed playlists yet."
#: src/components/profile/ProfileInviteesTab.tsx:83
msgid "No invitees yet."
msgstr "No invitees yet."
#: src/components/chat/ChatModal.tsx:675
msgid "No messages yet. Say hello!"
msgstr "No messages yet. Say hello!"
#: src/components/social/UserListPopover.tsx:159
msgid "No one yet."
msgstr "No one yet."
#: src/pages/Search.tsx:212
msgid "No playlists match \"{q}\"."
msgstr "No playlists match \"{q}\"."
#: src/components/playlist/PlaylistMembershipPanel.tsx:51
#: src/components/profile/ProfilePlaylistsTab.tsx:133
msgid "No playlists yet."
msgstr "No playlists yet."
#: src/contexts/ws/WSProvider.tsx:929
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
msgid "No users match \"{q}\"."
msgstr "No users match \"{q}\"."
#: src/components/profile/ProfileFollowTab.tsx:76
msgid "Not following anyone yet."
msgstr "Not following anyone yet."
#: src/pages/Community.tsx:116
msgid "Nothing happened this month."
msgstr "Nothing happened this month."
#: src/pages/Community.tsx:115
msgid "Nothing happened this week."
msgstr "Nothing happened this week."
#: src/components/profile/ProfileDumpsTab.tsx:53
#: src/components/profile/ProfileOverviewTab.tsx:47
#: src/pages/Notifications.tsx:513
msgid "Nothing here yet."
msgstr "Nothing here yet."
#: src/components/layout/NotificationBell.tsx:57
#: src/pages/Notifications.tsx:378
#: src/pages/Notifications.tsx:496
#: src/pages/Settings.tsx:128
msgid "Notifications"
msgstr "Notifications"
#: src/components/layout/NotificationBell.tsx:56
msgid "Notifications ({unreadNotificationCount} unread)"
msgstr "Notifications ({unreadNotificationCount} unread)"
#: src/pages/Settings.tsx:59
msgid "Off"
msgstr "Off"
#: src/pages/Settings.tsx:58
msgid "On"
msgstr "On"
#: src/components/editor/TextEditor.tsx:385
msgid "Only images can be dropped here."
msgstr "Only images can be dropped here."
#: src/pages/DumpEdit.tsx:118
msgid "Only its poster or a moderator can edit this dump."
msgstr "Only its poster or a moderator can edit this dump."
#. placeholder {0}: richContent.siteName
#: src/components/dump/RichContentCard.tsx:122
msgid "Open on {0}"
msgstr "Open on {0}"
#: src/components/dump/RichContentCard.tsx:123
msgid "Open source"
msgstr "Open source"
#: src/components/form/FileDropZone.tsx:163
msgid "or <0>browse files</0>"
msgstr "or <0>browse files</0>"
#: src/pages/UserPublicProfile.tsx:157
msgid "Overview"
msgstr "Overview"
#: src/pages/NotFound.tsx:16
msgid "Page not found"
msgstr "Page not found"
#: src/pages/Settings.tsx:88
#: src/pages/UserLogin.tsx:82
msgid "Password"
msgstr "Password"
#. placeholder {0}: VALIDATION.PASSWORD_MIN
#: src/pages/UserRegister.tsx:158
msgid "Password (min. {0} characters)"
msgstr "Password (min. {0} characters)"
#: src/components/profile/ChangePasswordModal.tsx:71
msgid "Password changed successfully."
msgstr "Password changed successfully."
#: src/pages/ResetPassword.tsx:86
msgid "Password updated"
msgstr "Password updated"
#: src/components/profile/ChangePasswordModal.tsx:114
#: src/pages/ResetPassword.tsx:136
msgid "Passwords do not match"
msgstr "Passwords do not match"
#: src/components/dump/create/DumpCreateModal.tsx:587
msgid "Paste a link…"
msgstr "Paste a link…"
#: src/components/dump/FilePreview.tsx:65
#: src/components/dump/FilePreview.tsx:177
#: src/components/dump/RichContentCard.tsx:103
#: src/components/player/MediaPlayer.tsx:330
msgid "Pause"
msgstr "Pause"
#: src/components/dump/create/DumpCreateModal.tsx:505
msgid "Picked up where you left off."
msgstr "Picked up where you left off."
#: src/components/dump/FilePreview.tsx:65
#: src/components/dump/FilePreview.tsx:177
#: src/components/dump/RichContentCard.tsx:103
#: src/components/dump/RichContentCard.tsx:150
#: src/components/player/MediaPlayer.tsx:330
msgid "Play"
msgstr "Play"
#: src/components/dump/create/StepIndicator.tsx:21
#: src/components/layout/AppHeader.tsx:172
#: src/components/layout/UserMenu.tsx:86
#: src/components/profile/ProfileFollowTab.tsx:144
#: src/components/profile/ProfilePlaylistsTab.tsx:118
#: src/pages/Search.tsx:123
#: src/pages/UserPublicProfile.tsx:160
msgid "Playlists"
msgstr "Playlists"
#: src/components/comment/CommentThread.tsx:99
msgid "Post comment"
msgstr "Post comment"
#: src/components/comment/CommentNode.tsx:289
msgid "Post reply"
msgstr "Post reply"
#: src/components/comment/CommentNode.tsx:290
#: src/components/comment/CommentThread.tsx:100
#: src/components/dump/create/DumpCreateModal.tsx:758
msgid "Posting…"
msgstr "Posting…"
#: src/components/player/GlobalPlayer.tsx:228
msgid "Previous track"
msgstr "Previous track"
#: src/components/dump/DumpCard.tsx:148
#: src/components/dump/JournalCard.tsx:145
#: src/components/playlist/PlaylistCard.tsx:104
#: src/components/playlist/PlaylistHeader.tsx:76
#: src/components/playlist/PlaylistMembershipPanel.tsx:81
#: src/pages/Dump.tsx:511
msgid "private"
msgstr "private"
#: src/components/form/SegmentedField.tsx:61
msgid "Private"
msgstr "Private"
#: src/components/playlist/PlaylistCard.tsx:103
#: src/components/playlist/PlaylistHeader.tsx:76
msgid "public"
msgstr "public"
#: src/components/form/SegmentedField.tsx:60
msgid "Public"
msgstr "Public"
#: src/pages/DumpEdit.tsx:290
msgid "Refresh metadata"
msgstr "Refresh metadata"
#: src/components/player/GlobalPlayer.tsx:324
msgid "Refreshing stream…"
msgstr "Refreshing stream…"
#: src/pages/DumpEdit.tsx:289
msgid "Refreshing…"
msgstr "Refreshing…"
#: src/pages/UserRegister.tsx:45
#: src/pages/UserRegister.tsx:129
#: src/pages/UserRegister.tsx:169
msgid "Register"
msgstr "Register"
#: src/pages/UserRegister.tsx:168
msgid "Registering…"
msgstr "Registering…"
#: src/pages/UserRegister.tsx:134
msgid "Registration failed"
msgstr "Registration failed"
#: src/pages/Dump.tsx:575
msgid "Related"
msgstr "Related"
#: src/components/form/FileDropZone.tsx:139
msgid "Remove file"
msgstr "Remove file"
#: src/components/playlist/PlaylistDumpList.tsx:110
msgid "Remove from playlist"
msgstr "Remove from playlist"
#: src/components/social/LikeButton.tsx:54
msgid "Remove like"
msgstr "Remove like"
#: src/components/social/VoteButton.tsx:52
msgid "Remove vote"
msgstr "Remove vote"
#: src/components/profile/UsernameField.tsx:68
msgid "Rename"
msgstr "Rename"
#: src/components/profile/UsernameField.tsx:65
msgid "Renaming…"
msgstr "Renaming…"
#: src/pages/DumpEdit.tsx:495
msgid "Replace file"
msgstr "Replace file"
#: src/components/chat/ChatMessageItem.tsx:94
#: src/components/chat/ChatMessageItem.tsx:95
#: src/components/comment/CommentNode.tsx:244
msgid "Reply"
msgstr "Reply"
#: src/components/chat/ChatModal.tsx:826
msgid "Replying to"
msgstr "Replying to"
#: src/pages/UserLogin.tsx:148
msgid "Request failed"
msgstr "Request failed"
#: src/pages/ResetPassword.tsx:112
msgid "Reset failed"
msgstr "Reset failed"
#: src/pages/ResetPassword.tsx:34
msgid "Reset password"
msgstr "Reset password"
#: src/pages/DumpEdit.tsx:471
#: src/pages/DumpEdit.tsx:526
msgid "Reset to default"
msgstr "Reset to default"
#: src/components/dump/create/TitleField.tsx:80
#: src/components/dump/create/TitleField.tsx:81
msgid "Reset to the suggested title"
msgstr "Reset to the suggested title"
#: src/components/chat/PendingItem.tsx:86
#: src/pages/Dump.tsx:319
#: src/pages/DumpEdit.tsx:225
msgid "Retry"
msgstr "Retry"
#: src/components/profile/RoleSwitcher.tsx:84
msgid "Role"
msgstr "Role"
#: src/components/category/CategoryManager.tsx:216
#: src/components/chat/ChatEditBox.tsx:85
#: src/components/comment/CommentNode.tsx:216
#: src/components/playlist/PlaylistEditForm.tsx:207
#: src/components/profile/DescriptionEditor.tsx:89
#: src/components/profile/EmailEditor.tsx:75
#: src/pages/Dump.tsx:437
#: src/pages/DumpEdit.tsx:568
msgid "Save"
msgstr "Save"
#: src/components/comment/CommentNode.tsx:217
#: src/components/playlist/PlaylistEditForm.tsx:204
#: 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/ResetPassword.tsx:139
msgid "Saving…"
msgstr "Saving…"
#: src/components/layout/AppHeader.tsx:182
#: src/components/layout/SearchBar.tsx:83
#: src/pages/Search.tsx:69
msgid "Search"
msgstr "Search"
#: src/components/layout/SearchBar.tsx:79
msgid "Search dumps, users, playlists…"
msgstr "Search dumps, users, playlists…"
#: src/components/editor/EmojiPickerPopup.tsx:104
msgid "Search emoji"
msgstr "Search emoji"
#: src/components/editor/EmojiPickerPopup.tsx:103
msgid "Search emoji…"
msgstr "Search emoji…"
#: src/pages/Search.tsx:166
msgid "Search failed"
msgstr "Search failed"
#: src/pages/Search.tsx:161
msgid "Searching…"
msgstr "Searching…"
#: src/components/player/SeekBar.tsx:50
msgid "Seek"
msgstr "Seek"
#: src/components/chat/ChatModal.tsx:866
msgid "Send"
msgstr "Send"
#: src/pages/UserLogin.tsx:157
msgid "Send reset link"
msgstr "Send reset link"
#: src/components/chat/PendingItem.tsx:104
#: src/pages/UserLogin.tsx:156
msgid "Sending…"
msgstr "Sending…"
#: src/components/layout/AppHeader.tsx:198
msgid "Server unreachable"
msgstr "Server unreachable"
#: src/pages/ResetPassword.tsx:107
#: src/pages/ResetPassword.tsx:140
msgid "Set new password"
msgstr "Set new password"
#: src/components/layout/UserMenu.tsx:102
#: src/pages/Settings.tsx:70
#: src/pages/Settings.tsx:82
msgid "Settings"
msgstr "Settings"
#: src/components/chat/ChatModal.tsx:650
msgid "Several people are typing…"
msgstr "Several people are typing…"
#: src/components/profile/ProfileOwnActions.tsx:102
msgid "Single use, valid for 7 days."
msgstr "Single use, valid for 7 days."
#: src/components/category/CategoryManager.tsx:205
msgid "slug"
msgstr "slug"
#: src/components/editor/TextEditor.tsx:343
msgid "Some images couldn't be uploaded."
msgstr "Some images couldn't be uploaded."
#: src/components/form/FormError.tsx:31
#: src/components/layout/PageError.tsx:29
#: src/contexts/ws/WSProvider.tsx:729
#: src/pages/PlaylistDetail.tsx:124
msgid "Something went wrong"
msgstr "Something went wrong"
#: src/pages/Settings.tsx:130
msgid "Sounds"
msgstr "Sounds"
#: src/components/dump/create/DumpCreateModal.tsx:512
msgid "Start fresh"
msgstr "Start fresh"
#: src/pages/Settings.tsx:101
msgid "Style"
msgstr "Style"
#: src/components/layout/SearchBar.tsx:89
msgid "Submit search"
msgstr "Submit search"
#: src/components/form/FileField.tsx:60
msgid "That file is over {limit}."
msgstr "That file is over {limit}."
#: src/pages/Notifications.tsx:262
msgid "the chat"
msgstr "the chat"
#: src/hooks/playlist/usePlaylist.ts:179
msgid "The dump couldn't be removed. Try again."
msgstr "The dump couldn't be removed. Try again."
#: src/components/editor/TextEditor.tsx:344
msgid "The image couldn't be uploaded."
msgstr "The image couldn't be uploaded."
#: src/hooks/playlist/usePlaylist.ts:322
msgid "The new order couldn't be saved. Try again."
msgstr "The new order couldn't be saved. Try again."
#: src/components/comment/CommentNode.tsx:282
msgid "This comment couldn't be deleted. Try again."
msgstr "This comment couldn't be deleted. Try again."
#: src/pages/UserRegister.tsx:118
msgid "This invite link is missing, expired, or already used."
msgstr "This invite link is missing, expired, or already used."
#: src/pages/UserLogin.tsx:104
msgid "This is a mirage."
msgstr "This is a mirage."
#: src/pages/Community.tsx:104
msgid "This month"
msgstr "This month"
#: src/pages/NotFound.tsx:21
msgid "This page does not exist."
msgstr "This page does not exist."
#: src/pages/ResetPassword.tsx:67
msgid "This reset link is missing or malformed."
msgstr "This reset link is missing or malformed."
#: src/pages/Settings.tsx:166
msgid "This site doesn't send email, so no digest goes out."
msgstr "This site doesn't send email, so no digest goes out."
#: src/pages/Unsubscribe.tsx:67
msgid "This unsubscribe link is missing or malformed."
msgstr "This unsubscribe link is missing or malformed."
#: src/pages/Community.tsx:103
msgid "This week"
msgstr "This week"
#: src/pages/DumpEdit.tsx:455
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
msgid "Title"
msgstr "Title"
#: src/components/dump/create/DumpCreateModal.tsx:414
msgid "Title is required."
msgstr "Title is required."
#: src/pages/Notifications.tsx:303
#: src/utils/chat/time.ts:24
msgid "Today"
msgstr "Today"
#. placeholder {0}: i + 1
#: src/components/player/GlobalPlayer.tsx:338
msgid "Track {0}"
msgstr "Track {0}"
#: src/components/chat/ChatModal.tsx:667
msgid "Try again"
msgstr "Try again"
#: src/pages/Unsubscribe.tsx:110
msgid "Turn off the monthly recap?"
msgstr "Turn off the monthly recap?"
#: src/pages/Unsubscribe.tsx:109
msgid "Turn off the weekly digest?"
msgstr "Turn off the weekly digest?"
#: src/pages/Unsubscribe.tsx:115
msgid "Turning off…"
msgstr "Turning off…"
#: src/components/chat/ChatModal.tsx:851
msgid "Type a message…"
msgstr "Type a message…"
#: src/components/playlist/PlaylistDumpList.tsx:122
msgid "Undo"
msgstr "Undo"
#: src/utils/shared/api.ts:22
msgid "Unexpected response format"
msgstr "Unexpected response format"
#: src/components/social/FollowButton.tsx:59
msgid "Unfollow {targetUsername}"
msgstr "Unfollow {targetUsername}"
#: src/components/social/FollowButton.tsx:100
msgid "Unfollow playlist"
msgstr "Unfollow playlist"
#: src/components/player/MediaPlayer.tsx:346
msgid "Unmute"
msgstr "Unmute"
#: src/pages/Unsubscribe.tsx:33
msgid "Unsubscribe"
msgstr "Unsubscribe"
#: src/pages/Unsubscribe.tsx:81
msgid "Unsubscribed"
msgstr "Unsubscribed"
#: src/components/profile/ProfileHeader.tsx:72
msgid "Upload failed"
msgstr "Upload failed"
#. placeholder {0}: Math.round((uploadProgress ?? 0) * 100)
#: src/components/dump/create/DumpCreateModal.tsx:449
msgid "Uploading {0}%"
msgstr "Uploading {0}%"
#: src/components/editor/TextEditor.tsx:595
msgid "Uploading image…"
msgstr "Uploading image…"
#: src/components/dump/create/DumpCreateModal.tsx:761
msgid "Uploading…"
msgstr "Uploading…"
#: src/components/social/VoteButton.tsx:52
msgid "Upvote"
msgstr "Upvote"
#: src/components/profile/ProfileDumpsTab.tsx:45
#: src/pages/UserPublicProfile.tsx:159
msgid "Upvoted"
msgstr "Upvoted"
#. placeholder {0}: countOf(votes.state)
#: src/components/profile/ProfileOverviewTab.tsx:71
msgid "Upvoted ({0})"
msgstr "Upvoted ({0})"
#: src/pages/DumpEdit.tsx:487
msgid "URL"
msgstr "URL"
#: src/components/dump/create/DumpCreateModal.tsx:398
msgid "URL is required."
msgstr "URL is required."
#: src/components/category/CategoryManager.tsx:206
msgid "URL slug"
msgstr "URL slug"
#: src/components/profile/RoleSwitcher.tsx:22
msgid "User"
msgstr "User"
#: src/components/profile/ProfileManageTab.tsx:54
msgid "User management"
msgstr "User management"
#: src/components/layout/UserMenu.tsx:61
msgid "User menu"
msgstr "User menu"
#: src/components/profile/ProfileManageTab.tsx:61
#: src/components/profile/UsernameField.tsx:51
#: src/pages/Settings.tsx:85
#: src/pages/UserLogin.tsx:75
#: src/pages/UserRegister.tsx:137
msgid "Username"
msgstr "Username"
#: src/components/profile/ProfileFollowTab.tsx:143
#: src/pages/Search.tsx:122
msgid "Users"
msgstr "Users"
#: src/components/profile/ProfileSection.tsx:43
msgid "View all →"
msgstr "View all →"
#: src/components/dump/create/DumpCreateModal.tsx:526
msgid "View dump →"
msgstr "View dump →"
#: src/components/player/MediaPlayer.tsx:363
msgid "Volume"
msgstr "Volume"
#: src/components/dump/create/DumpCreateModal.tsx:712
#: src/pages/DumpEdit.tsx:544
msgid "What makes it worth it?"
msgstr "What makes it worth it?"
#: src/components/profile/DescriptionEditor.tsx:78
#: src/components/profile/ProfileDescription.tsx:79
msgid "Who am I?"
msgstr "Who am I?"
#: src/components/dump/create/DumpCreateModal.tsx:727
msgid "Who can see it"
msgstr "Who can see it"
#: src/components/dump/create/StepIndicator.tsx:20
msgid "Why & where"
msgstr "Why & where"
#: src/components/dump/create/DumpCreateModal.tsx:711
#: src/pages/DumpEdit.tsx:543
msgid "Why?"
msgstr "Why?"
#: src/components/comment/CommentNode.tsx:293
msgid "Write a reply…"
msgstr "Write a reply…"
#: src/pages/Notifications.tsx:304
#: src/utils/chat/time.ts:27
msgid "Yesterday"
msgstr "Yesterday"
#: src/components/dump/create/DuplicateNotice.tsx:61
msgid "You can post it anyway."
msgstr "You can post it anyway."
#: src/pages/Unsubscribe.tsx:92
msgid "You won't get the monthly recap any more. You can turn it back on in your settings."
msgstr "You won't get the monthly recap any more. You can turn it back on in your settings."
#: src/pages/Unsubscribe.tsx:86
msgid "You won't get the weekly digest any more. You can turn it back on in your settings."
msgstr "You won't get the weekly digest any more. You can turn it back on in your settings."
#: src/pages/Notifications.tsx:516
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/contexts/ws/WSProvider.tsx:910
msgid "You're offline — not sent"
msgstr "You're offline — not sent"
#: src/components/feed/FeedFooter.tsx:39
msgid "You've reached the end."
msgstr "You've reached the end."
#: src/pages/UserLogin.tsx:152
msgid "Your email address"
msgstr "Your email address"
#: src/pages/ResetPassword.tsx:89
msgid "Your password has been changed. You can now log in."
msgstr "Your password has been changed. You can now log in."
#: src/pages/Unsubscribe.tsx:54
msgid "Your settings"
msgstr "Your settings"