diff --git a/scripts/lingui-extract.ts b/scripts/lingui-extract.ts index 066dabe..9cb0ccd 100644 --- a/scripts/lingui-extract.ts +++ b/scripts/lingui-extract.ts @@ -6,5 +6,6 @@ await extract(config, { verbose: false, watch: false, files: [], + clean: true, workersOptions: { poolSize: 0 }, }); diff --git a/src/App.css b/src/App.css index d6162c7..6a92175 100644 --- a/src/App.css +++ b/src/App.css @@ -99,21 +99,25 @@ } .dump-header-block { - display: grid; - grid-template-columns: auto 1fr; - column-gap: 1rem; - row-gap: 0.3rem; + display: flex; align-items: center; + gap: 1rem; } -.dump-title, -.dump-op { - grid-column: 2; +.dump-header-left { + display: flex; + flex-direction: column; + align-items: center; + gap: 0.5rem; + flex-shrink: 0; } -.dump-header-block .vote-btn, -.dump-header-block .btn-add-playlist { - justify-self: center; +.dump-header-right { + flex: 1; + min-width: 0; + display: flex; + flex-direction: column; + gap: 0.3rem; } .dump-title { @@ -1019,6 +1023,18 @@ body.has-player .fab-new { display: block; } +@media (max-width: 512px) { + .rich-content-card { + flex-direction: column; + } + + .rich-content-thumbnail { + width: 100%; + min-width: 0; + max-height: 180px; + } +} + .rich-content-body { display: flex; flex-direction: column; @@ -1033,7 +1049,7 @@ body.has-player .fab-new { .rich-content-badge { display: inline-block; background: var(--color-youtube); - color: var(--color-on-accent); + color: var(--color-text); font-size: 0.7rem; font-weight: 700; letter-spacing: 0.04em; @@ -1272,9 +1288,9 @@ body.has-player .fab-new { gap: 1.5rem; } -.profile-tabs { +.profile-tabs-scroller { margin-top: 0.5rem; - padding-bottom: 0.75rem; + padding-bottom: 0.5rem; border-bottom: 2px solid var(--color-border); } @@ -1592,6 +1608,7 @@ body.has-player .fab-new { display: flex; align-items: center; gap: 0.75rem; + flex-wrap: wrap; } .profile-subpage-title { @@ -1694,8 +1711,9 @@ body.has-player .fab-new { } .app-header-status { - margin: 1rem auto 0 auto; + margin: 1rem auto 0; max-width: 860px; + width: calc(100% - 2rem); padding: 0.75rem 1rem; border: none; border-radius: 10px; @@ -2240,7 +2258,7 @@ body.has-player .fab-new { .btn-danger { background: var(--color-danger-bg); - color: var(--color-on-accent); + color: var(--color-text); border: none; } @@ -2317,7 +2335,11 @@ body.has-player .fab-new { align-items: center; margin-top: 0.5rem; gap: 0.75rem; - padding: 0.6rem 1.25rem 0; + padding: 0.6rem 1.25rem 0.4rem; + max-width: 860px; + width: 100%; + box-sizing: border-box; + align-self: center; } @media (min-width: 860px) { @@ -2326,11 +2348,50 @@ body.has-player .fab-new { } } -/* ── Feed sort buttons ── */ +/* ── Feed sort scroller + buttons ── */ + +/* Wrapper: constrains width, clips scroll overflow, and carries the gradient hint */ +.feed-sort-scroller { + position: relative; + min-width: 0; + overflow: hidden; +} + +/* Right-edge gradient: absolutely positioned over the scroll container, + always at the viewport-right edge regardless of scroll position */ +.feed-sort-scroller::after { + content: ''; + position: absolute; + top: 0; + right: 0; + bottom: 0; + width: 2rem; + background: linear-gradient(to right, transparent, var(--color-bg)); + pointer-events: none; +} + +/* In the app header the tabs never overflow — suppress the gradient there */ +.app-header .feed-sort-scroller::after { + display: none; +} + +/* In the index below-header the scroller should fill the available row width */ +.index-below-header .feed-sort-scroller { + flex: 1; +} + .feed-sort { display: flex; align-items: center; gap: 0.4rem; + overflow-x: auto; + scrollbar-width: none; + padding-bottom: 0.3rem; + min-width: 0; +} + +.feed-sort::-webkit-scrollbar { + display: none; } .feed-sort-btn { @@ -2345,6 +2406,8 @@ body.has-player .fab-new { letter-spacing: 0.04em; text-transform: uppercase; transition: border-color 0.15s, background 0.15s, color 0.15s; + white-space: nowrap; + flex-shrink: 0; } .feed-sort-btn.active { @@ -2433,6 +2496,64 @@ body.has-player .fab-new { cursor: pointer; } +/* Desktop: wrapper is transparent — preview and vote become direct flex items of dump-card-inner */ +.dump-card-left { + display: contents; +} + +/* With display:contents, all three are siblings in dump-card-inner's flex context. + DOM order is: preview, vote, body — use order to restore: preview, body, vote. */ +.dump-card-body { + order: 1; + margin-left: 0.25rem; /* total gap to preview = container gap (0.75) + this = 1rem */ +} + +.dump-card-vote { + order: 2; +} + +@media (max-width: 512px) { + .dump-card-inner, + .playlist-card-inner { + gap: 0.5rem; + padding: 0.6rem 0.75rem; + } + + /* Reset flex order and margin — narrow mode uses dump-card-left as a real flex container */ + .dump-card-body, + .dump-card-vote { + order: 0; + } + + + /* Left column: preview + vote stacked with fixed gap, independent of body height */ + .dump-card-left { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 0.5rem; + flex-shrink: 0; + } + + .dump-card-body { + align-self: center; + } + + .dump-card-meta { + flex-direction: column; + gap: 0.1rem; + } + + .dump-card-comment { + display: none; + } + + .playlist-card-description { + display: none; + } +} + /* ── Shared card preview thumbnail ── */ .dump-card-preview, .playlist-card-preview { @@ -2492,6 +2613,7 @@ body.has-player .fab-new { display: flex; flex-direction: column; gap: 0.2rem; + margin-left: 0.25rem; } /* ── Shared card title link ── */ @@ -2580,11 +2702,35 @@ body.has-player .fab-new { gap: 0.6rem; } +@media (max-width: 512px) { + .playlist-card-meta { + flex-direction: column; + align-items: flex-start; + gap: 0.1rem; + } +} + .dump-card-vote { flex-shrink: 0; align-self: center; } +@media (max-width: 512px) { + .index-below-header .index-presence { + display: none; + } +} + +@media (max-width: 512px) { + .app-header-brand-name { + display: none; + } + + .btn-new-label { + display: none; + } +} + /* ── Playlist card image thumbnail ── */ .playlist-card-img { width: 100%; @@ -2888,6 +3034,14 @@ body.has-player .fab-new { font-size: 0.82rem; opacity: 0.6; } + +@media (max-width: 512px) { + .playlist-detail-meta { + flex-direction: column; + align-items: flex-start; + gap: 0.1rem; + } +} .playlist-detail-owner { color: inherit; text-decoration: none; @@ -2898,7 +3052,7 @@ body.has-player .fab-new { opacity: 1; } -/* ── Playlist header inline edit ── */ + .playlist-detail-content { flex: 1; min-width: 0; @@ -4315,6 +4469,22 @@ body.has-player .fab-new { display: contents; } +@media (max-width: 512px) { + .profile-appearance-grid { + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 1rem; + } + + .profile-appearance-row { + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 0.3rem; + } +} + .profile-appearance-label { font-size: 0.85rem; font-weight: 600; diff --git a/src/components/AppHeader.tsx b/src/components/AppHeader.tsx index c1766ad..b5b2ef7 100644 --- a/src/components/AppHeader.tsx +++ b/src/components/AppHeader.tsx @@ -29,8 +29,8 @@ export function AppHeader( className={`app-header${centerSlot ? " app-header--has-center" : ""}`} > - 🚚 {document.querySelector('meta[name="site-name"]') - ?.content ?? "gerbeur"} + 🚚{" "}{document.querySelector('meta[name="site-name"]') + ?.content ?? "gerbeur"} {centerSlot &&
{centerSlot}
} @@ -68,7 +68,7 @@ export function AppHeader( disabled={disableNew} title={disableNew ? t`Server unreachable` : undefined} > - + New + + Dump ) diff --git a/src/components/DumpCard.tsx b/src/components/DumpCard.tsx index 7336325..5830b7e 100644 --- a/src/components/DumpCard.tsx +++ b/src/components/DumpCard.tsx @@ -40,15 +40,28 @@ export function DumpCard( className="dump-card-inner" onClick={handleNavigate} > -
e.stopPropagation() : undefined} - > - {dump.kind === "file" - ? - : dump.richContent - ? - : 🔗} +
+
e.stopPropagation() : undefined} + > + {dump.kind === "file" + ? + : dump.richContent + ? + : 🔗} +
+ +
e.stopPropagation()}> + +
@@ -94,16 +107,6 @@ export function DumpCard(
-
e.stopPropagation()}> - -
); diff --git a/src/components/DumpCreateModal.tsx b/src/components/DumpCreateModal.tsx index 8a3ca56..4c002a9 100644 --- a/src/components/DumpCreateModal.tsx +++ b/src/components/DumpCreateModal.tsx @@ -373,14 +373,14 @@ export function DumpCreateModal(
diff --git a/src/components/FeedTabBar.tsx b/src/components/FeedTabBar.tsx index 2a914a3..12d58fd 100644 --- a/src/components/FeedTabBar.tsx +++ b/src/components/FeedTabBar.tsx @@ -16,6 +16,7 @@ export function FeedTabBar() { } return ( +
+
); } diff --git a/src/components/NewPlaylistForm.tsx b/src/components/NewPlaylistForm.tsx index 1c81bb3..7609371 100644 --- a/src/components/NewPlaylistForm.tsx +++ b/src/components/NewPlaylistForm.tsx @@ -27,7 +27,7 @@ export function NewPlaylistForm( className={toggleClassName} onClick={() => setOpen(true)} > - {toggleLabel ?? + New playlist} + {toggleLabel ?? <>+ New playlist} {open && ( diff --git a/src/locales/en.js b/src/locales/en.js index e68a9d1..99bee09 100644 --- a/src/locales/en.js +++ b/src/locales/en.js @@ -1,5 +1 @@ -/*eslint-disable*/ module.exports = { - messages: JSON.parse( - '{"-K9EZb":["Add email…"],"-OxI15":["Followed playlists"],"-Ya-b9":["Failed to save"],"-siMqD":["Journal"],"0kWhlg":["File too large (max 5 MB)"],"1CalO6":["Style"],"1HfJWf":["Search dumps, users, playlists…"],"1cbYY_":["Upvoted (",["0"],["1"],")"],"1njn7W":["Light"],"1utXA6":["Dumps"],"26iNma":["Post comment"],"29VNqC":["Unknown error"],"2Hlmdt":["Write a reply…"],"2ygf_L":["← Back"],"3KKSM4":["private"],"3T1cI4":["Unexpected server error"],"3yfh3D":["<0>",["0"]," followed your playlist <1>",["1"],""],"49voTZ":[["label"]," (",["count"],")"],"4B6w_o":["Dumped!"],"4GKuCs":["Login failed"],"4HH9iB":["Not following anyone yet."],"4RtQ1k":["Unfollow ",["targetUsername"]],"4c-qBx":["Your password has been changed. You can now log in."],"4yj9xV":["Live updates are temporarily disconnected. Trying to reconnect…"],"5cC8f2":["Edited ",["0"]],"5oD9f_":["Earlier"],"6Qly-0":["a comment"],"6gRgw8":["Retry"],"7JBW66":["Forbidden"],"7PHCIN":["Cancel removal"],"7d1a0d":["Public"],"7sNhEz":["Username"],"8ZsakT":["Password"],"8pxhI8":["Please select a file."],"9l4qcT":["Drop a replacement here"],"9uI_rE":["Undo"],"A0y396":["+ Invite someone"],"A1taO8":["Search"],"AQbgNR":["Follow ",["targetUsername"]],"ATGYL1":["Email address"],"AZctoV":[["0","plural",{"one":["#"," comment"],"other":["#"," comments"]}]],"Ade-6d":["Live updates unavailable."],"AeXO77":["Account"],"CI50ct":["Upvoted"],"Cj24wt":["Registering…"],"DPfwMq":["Done"],"DdeHXH":["Delete this dump? This cannot be undone."],"Dp1JhP":["<0>",["0"]," upvoted <1>",["1"],""],"ECiS12":["View dump →"],"ExR0Fr":["URL is required."],"F1O9Ep":["Could not connect to server"],"F5Js1v":["Unfollow playlist"],"FgAxTj":["Log out"],"Fxf4jq":["Description (optional)"],"GNSsCc":["Failed to create playlist"],"GbqhrN":[["0"],"–",["1"]," characters: letters, numbers, or underscores"],"GptGxg":["Change password"],"GsRMX3":["Playlist not found"],"H8pzW-":["Failed to update avatar"],"HTLDA4":["Loading more…"],"I-x669":["Invitees"],"IZX7TO":["Failed to generate invite"],"IagCbF":["URL"],"ImOQa9":["Reply"],"J2eKUI":["File"],"JJ-Bhk":["Your email address"],"JRQitQ":["Confirm new password"],"JXr41k":["<0>",["0"]," commented on <1>",["1"],""],"Jd58Fo":["Hot"],"Jf0PuK":["Go to login"],"K1JdNl":["Username already exists"],"KDGWg5":["Remove from playlist"],"K_F6pa":["Saving…"],"LLyMkV":["Followed (",["0"],["1"],")"],"LPAv9E":[["days"],"d ago"],"Lld1jm":["Tell people about yourself…"],"MHrjPM":["Title"],"MKEPCY":["Follow"],"Mq2B8E":[["mins"],"m ago"],"NR0xa9":["Tell the community what makes this worth their time..."],"Nn4kr3":["+ New dump"],"Oprv1v":["Password (min. ",["0"]," characters)"],"Oz0N9s":["new"],"PiH3UR":["Copied!"],"Pn2B7_":["Current password"],"Pwqkdw":["Loading…"],"Q6n4F4":["Refresh metadata"],"QKsaQr":["or <0>browse files"],"QLtPBd":["No dumps in this playlist yet."],"R9Khdg":["Auto"],"RCcPrX":["Delete this playlist? This cannot be undone."],"RTksSy":["<0>",["0"]," started following you"],"RaKjrM":["Failed to save edit"],"RcUHRT":["Followed"],"SBTElJ":["Searching…"],"Sad2tK":["Sending…"],"Sxm8rQ":["Users"],"T9bjWt":["<0>",["0"]," was added to <1>",["1"],""],"TM1ZbA":["Playlists (",["0"],["1"],")"],"TN382O":["Invalid link"],"Tv9vbB":["Follow playlist"],"Tz0i8g":["Settings"],"U7u3q-":["+ New"],"UNMVei":["Forgot password?"],"UOZith":["Failed to post"],"UTiUFs":["Fetching…"],"VCoEm-":["Back to login"],"V_e7nf":["Set new password"],"VnNJbN":["From playlists"],"VyTYmS":["Change avatar"],"WhimMi":["Reset failed"],"WpXcBJ":["Nothing here yet."],"WtkMN8":["All ",["0","plural",{"one":["#"," upvoted dump"],"other":["#"," upvoted dumps"]}]," loaded."],"XILg0L":["Invalid email address"],"XJy2oN":["Logging in…"],"Xan6QP":["New dump"],"XgRtUf":["Could not change password"],"Xi0Mn4":["← Back to profile"],"XnL-Eu":["No users match \\"",["q"],"\\"."],"Xs2Lez":["This reset link is missing or malformed."],"YK1Dhc":["a post"],"YaSA2K":["Comment not found"],"YpkCca":["No followed playlists yet."],"ZCpU0u":["No playlists match \\"",["q"],"\\"."],"ZmD2o6":["Create & Add"],"_3O5R_":["Request failed"],"_84wxb":["All ",["0","plural",{"one":["#"," dump"],"other":["#"," dumps"]}]," loaded."],"_DwR-n":["Creating…"],"_R_sGB":["Password changed successfully."],"_aept4":["Post reply"],"_nT6AE":["New password"],"_t4W-i":["From people"],"aAIQg2":["Appearance"],"aDvLhk":["Add a comment…"],"alBtu4":["Invalid or expired invite"],"b3Thhd":["Upload failed"],"b8XMJ8":[["visibleCount","plural",{"one":["#"," comment"],"other":["#"," comments"]}]],"bQhwn-":["Loading playlist…"],"cILfnJ":["Remove file"],"cYP9Sb":["+ Playlist"],"cbeBbZ":["At least ",["0"]," characters"],"cnGeoo":["Delete"],"d8DZWS":["Open search"],"dAs22m":["Replace file"],"dEgA5A":["Cancel"],"dMizp8":["New playlist"],"dSKHAa":["Invalid username or password"],"dTU6Wi":["Password must be at most 128 characters"],"dbc28f":["Why are you dumping this?"],"eFSqvc":["Failed to post reply"],"ePK91l":["Edit"],"eaUTwS":["Send reset link"],"ecUA8p":["Today"],"ef9nPf":["Loading dump…"],"en9o7K":["Failed to post comment"],"fGxPOv":["Add a bio…"],"fI-mNw":["Playlists"],"f_akpP":["Max 50 MB"],"fgLNSM":["Register"],"gANddk":["Uploading…"],"gGx5tM":["Editing"],"gIQQwD":["Failed to load"],"gLfZlz":["Add to playlist"],"gjJ-sb":["Can\'t connect to the live updates server. Upvotes and notifications may not sync until it reconnects."],"hBuUKa":["Change password…"],"hD7w09":["You\'ve reached the end."],"hJSliC":["<0>",["0"]," posted <1>",["1"],""],"hYgDIe":["Create"],"he3ygx":["Copy"],"iDNBZe":["Notifications"],"ijVyoK":["Could not reach the server. Please try again."],"ipYn7W":["If that address is registered you\'ll receive a reset link shortly."],"isRobC":["New"],"jGrTH0":["Not authenticated"],"jbernk":["Loading profile…"],"joEmfT":["Server unreachable"],"jrZTZl":["No dumps yet. Be the first!"],"kLttbL":["Registration failed"],"kYYCil":["File too large (max 50 MB)"],"klOeIX":["Failed to change password"],"l3JaOO":["Cannot edit a deleted comment"],"lUDifl":["Created (",["0"],["1"],")"],"lUanmi":["You\'ll be notified when someone follows your playlists, upvotes your dumps, or posts new content."],"lY5h1V":[["0","plural",{"one":["#"," dump"],"other":["#"," dumps"]}]],"lcfvr_":["Delete this comment?"],"lpIMne":["Passwords do not match"],"mt6O6E":["This is a mirage."],"nbm5sI":["No dumps match \\"",["q"],"\\"."],"nrjqON":["Checking invite…"],"nwtY4N":["Something went wrong"],"ogtYkT":["Password updated"],"pCpd9p":["<0>",["0"]," mentioned you in <1>",["where"],""],"pSheLH":["No invitees yet."],"pvnfJD":["Dark"],"qIMfNQ":["Delete playlist"],"qbDAcy":["Dump it"],"qgx_78":["Follow some public playlists to see their dumps here."],"qvFa8r":["public"],"rCbqPX":["This invite link is missing, expired, or already used."],"rg9pXu":["Search failed"],"rtpJqV":["Dumps (",["0"],["1"],")"],"sBZMWb":["Invalid URL"],"sQia9P":["Log in"],"sTiqbm":["invited by"],"sdP5Aa":["[deleted]"],"shHs8T":["Enter a query to search."],"siMTjB":["File content is not a recognised image (JPEG, PNG, GIF, WebP)"],"smeBfS":["Invalid invite"],"tfDRzk":["Save"],"tqKwXl":["Username must be 1–32 characters and contain only letters, numbers, or underscores"],"tvmuQ0":["Color scheme"],"u1lDX2":["Fetching preview…"],"u4pkXs":["Invite already used"],"uD0qXQ":["Drop a file here"],"uMGUnV":["No playlists yet."],"ub1EEL":["edited ",["0"]],"vJBF1r":["Posting…"],"vLhLLO":["Notifications (",["unreadNotificationCount"]," unread)"],"vuosjb":["User menu"],"vwGkYB":["Password must be at least 8 characters"],"wXO4Tg":[["hrs"],"h ago"],"wbXKOv":["File too large (max 50 MB)."],"wdiqRH":["Admin access required"],"wixIgH":["Already have an account? <0>Log in"],"x4aBfU":["Dump not found"],"xEWkgZ":["← Back to all dumps"],"xOTzt5":["just now"],"xPHtx0":["Submit search"],"xVuNgt":["+ New playlist"],"xc9O_u":["Delete dump"],"y6sq5j":["Following"],"yA_6BX":["View all →"],"yBBtRm":["Follow some users to see their dumps here."],"yQ2kGp":["Load more"],"y_0uwd":["Yesterday"],"yz7wBu":["Close"],"z1uNN0":["No emoji found."],"zVuxvN":["Refreshing…"],"zwBp5t":["Private"]}', - ), -}; +/*eslint-disable*/module.exports={messages:JSON.parse("{\"-K9EZb\":[\"Add email…\"],\"-OxI15\":[\"Followed playlists\"],\"-Ya-b9\":[\"Failed to save\"],\"-siMqD\":[\"Journal\"],\"1CalO6\":[\"Style\"],\"1HfJWf\":[\"Search dumps, users, playlists…\"],\"1cbYY_\":[\"Upvoted (\",[\"0\"],[\"1\"],\")\"],\"1njn7W\":[\"Light\"],\"1utXA6\":[\"Dumps\"],\"26iNma\":[\"Post comment\"],\"29VNqC\":[\"Unknown error\"],\"2Hlmdt\":[\"Write a reply…\"],\"2ygf_L\":[\"← Back\"],\"3KKSM4\":[\"private\"],\"3yfh3D\":[\"<0>\",[\"0\"],\" followed your playlist <1>\",[\"1\"],\"\"],\"49voTZ\":[[\"label\"],\" (\",[\"count\"],\")\"],\"4B6w_o\":[\"Dumped!\"],\"4GKuCs\":[\"Login failed\"],\"4HH9iB\":[\"Not following anyone yet.\"],\"4RtQ1k\":[\"Unfollow \",[\"targetUsername\"]],\"4c-qBx\":[\"Your password has been changed. You can now log in.\"],\"4yj9xV\":[\"Live updates are temporarily disconnected. Trying to reconnect…\"],\"5cC8f2\":[\"Edited \",[\"0\"]],\"5oD9f_\":[\"Earlier\"],\"6Qly-0\":[\"a comment\"],\"6gRgw8\":[\"Retry\"],\"7PHCIN\":[\"Cancel removal\"],\"7d1a0d\":[\"Public\"],\"7sNhEz\":[\"Username\"],\"8XaCG6\":[\" New\"],\"8ZsakT\":[\"Password\"],\"8pxhI8\":[\"Please select a file.\"],\"9BruTc\":[\"Why?\"],\"9l4qcT\":[\"Drop a replacement here\"],\"9uI_rE\":[\"Undo\"],\"A0y396\":[\"+ Invite someone\"],\"A1taO8\":[\"Search\"],\"AQbgNR\":[\"Follow \",[\"targetUsername\"]],\"ATGYL1\":[\"Email address\"],\"AZctoV\":[[\"0\",\"plural\",{\"one\":[\"#\",\" comment\"],\"other\":[\"#\",\" comments\"]}]],\"Ade-6d\":[\"Live updates unavailable.\"],\"AeXO77\":[\"Account\"],\"CI50ct\":[\"Upvoted\"],\"Cj24wt\":[\"Registering…\"],\"DPfwMq\":[\"Done\"],\"DdeHXH\":[\"Delete this dump? This cannot be undone.\"],\"Dp1JhP\":[\"<0>\",[\"0\"],\" upvoted <1>\",[\"1\"],\"\"],\"ECiS12\":[\"View dump →\"],\"ExR0Fr\":[\"URL is required.\"],\"F1O9Ep\":[\"Could not connect to server\"],\"F5Js1v\":[\"Unfollow playlist\"],\"FgAxTj\":[\"Log out\"],\"Fxf4jq\":[\"Description (optional)\"],\"GNSsCc\":[\"Failed to create playlist\"],\"GbqhrN\":[[\"0\"],\"–\",[\"1\"],\" characters: letters, numbers, or underscores\"],\"GptGxg\":[\"Change password\"],\"H8pzW-\":[\"Failed to update avatar\"],\"HTLDA4\":[\"Loading more…\"],\"I-x669\":[\"Invitees\"],\"IZX7TO\":[\"Failed to generate invite\"],\"IagCbF\":[\"URL\"],\"ImOQa9\":[\"Reply\"],\"J2eKUI\":[\"File\"],\"JJ-Bhk\":[\"Your email address\"],\"JRQitQ\":[\"Confirm new password\"],\"JXr41k\":[\"<0>\",[\"0\"],\" commented on <1>\",[\"1\"],\"\"],\"Jd58Fo\":[\"Hot\"],\"Jf0PuK\":[\"Go to login\"],\"KDGWg5\":[\"Remove from playlist\"],\"K_F6pa\":[\"Saving…\"],\"LLyMkV\":[\"Followed (\",[\"0\"],[\"1\"],\")\"],\"LPAv9E\":[[\"days\"],\"d ago\"],\"MHrjPM\":[\"Title\"],\"MKEPCY\":[\"Follow\"],\"Mq2B8E\":[[\"mins\"],\"m ago\"],\"Nn4kr3\":[\"+ New dump\"],\"Oprv1v\":[\"Password (min. \",[\"0\"],\" characters)\"],\"Oz0N9s\":[\"new\"],\"PiH3UR\":[\"Copied!\"],\"Pn2B7_\":[\"Current password\"],\"Pwqkdw\":[\"Loading…\"],\"Q6n4F4\":[\"Refresh metadata\"],\"QKsaQr\":[\"or <0>browse files\"],\"QLtPBd\":[\"No dumps in this playlist yet.\"],\"R9Khdg\":[\"Auto\"],\"RCcPrX\":[\"Delete this playlist? This cannot be undone.\"],\"RTksSy\":[\"<0>\",[\"0\"],\" started following you\"],\"RaKjrM\":[\"Failed to save edit\"],\"RcUHRT\":[\"Followed\"],\"SBTElJ\":[\"Searching…\"],\"Sad2tK\":[\"Sending…\"],\"Sxm8rQ\":[\"Users\"],\"T9bjWt\":[\"<0>\",[\"0\"],\" was added to <1>\",[\"1\"],\"\"],\"TM1ZbA\":[\"Playlists (\",[\"0\"],[\"1\"],\")\"],\"TN382O\":[\"Invalid link\"],\"Tv9vbB\":[\"Follow playlist\"],\"Tz0i8g\":[\"Settings\"],\"U7u3q-\":[\"+ New\"],\"UNMVei\":[\"Forgot password?\"],\"UOZith\":[\"Failed to post\"],\"UTiUFs\":[\"Fetching…\"],\"VCoEm-\":[\"Back to login\"],\"V_e7nf\":[\"Set new password\"],\"VnNJbN\":[\"From playlists\"],\"VyTYmS\":[\"Change avatar\"],\"WhimMi\":[\"Reset failed\"],\"WpXcBJ\":[\"Nothing here yet.\"],\"WtkMN8\":[\"All \",[\"0\",\"plural\",{\"one\":[\"#\",\" upvoted dump\"],\"other\":[\"#\",\" upvoted dumps\"]}],\" loaded.\"],\"XJy2oN\":[\"Logging in…\"],\"Xan6QP\":[\"New dump\"],\"XgRtUf\":[\"Could not change password\"],\"Xi0Mn4\":[\"← Back to profile\"],\"XnL-Eu\":[\"No users match \\\"\",[\"q\"],\"\\\".\"],\"Xs2Lez\":[\"This reset link is missing or malformed.\"],\"YK1Dhc\":[\"a post\"],\"YpkCca\":[\"No followed playlists yet.\"],\"ZCpU0u\":[\"No playlists match \\\"\",[\"q\"],\"\\\".\"],\"ZmD2o6\":[\"Create & Add\"],\"_3O5R_\":[\"Request failed\"],\"_84wxb\":[\"All \",[\"0\",\"plural\",{\"one\":[\"#\",\" dump\"],\"other\":[\"#\",\" dumps\"]}],\" loaded.\"],\"_DwR-n\":[\"Creating…\"],\"_R_sGB\":[\"Password changed successfully.\"],\"_aept4\":[\"Post reply\"],\"_nT6AE\":[\"New password\"],\"_t4W-i\":[\"From people\"],\"a8Ypyu\":[\" New playlist\"],\"aAIQg2\":[\"Appearance\"],\"aDvLhk\":[\"Add a comment…\"],\"b3Thhd\":[\"Upload failed\"],\"b8XMJ8\":[[\"visibleCount\",\"plural\",{\"one\":[\"#\",\" comment\"],\"other\":[\"#\",\" comments\"]}]],\"bQhwn-\":[\"Loading playlist…\"],\"cILfnJ\":[\"Remove file\"],\"cYP9Sb\":[\"+ Playlist\"],\"cbeBbZ\":[\"At least \",[\"0\"],\" characters\"],\"cnGeoo\":[\"Delete\"],\"d8DZWS\":[\"Open search\"],\"dAs22m\":[\"Replace file\"],\"dEgA5A\":[\"Cancel\"],\"dMizp8\":[\"New playlist\"],\"eFSqvc\":[\"Failed to post reply\"],\"ePK91l\":[\"Edit\"],\"eaUTwS\":[\"Send reset link\"],\"ecUA8p\":[\"Today\"],\"ef9nPf\":[\"Loading dump…\"],\"en9o7K\":[\"Failed to post comment\"],\"etFQQS\":[\"What makes it worth it?\"],\"fGxPOv\":[\"Add a bio…\"],\"fI-mNw\":[\"Playlists\"],\"f_akpP\":[\"Max 50 MB\"],\"fgLNSM\":[\"Register\"],\"gANddk\":[\"Uploading…\"],\"gGx5tM\":[\"Editing\"],\"gIQQwD\":[\"Failed to load\"],\"gLfZlz\":[\"Add to playlist\"],\"gjJ-sb\":[\"Can't connect to the live updates server. Upvotes and notifications may not sync until it reconnects.\"],\"hBuUKa\":[\"Change password…\"],\"hD7w09\":[\"You've reached the end.\"],\"hJSliC\":[\"<0>\",[\"0\"],\" posted <1>\",[\"1\"],\"\"],\"hYgDIe\":[\"Create\"],\"he3ygx\":[\"Copy\"],\"i7K_Te\":[\"Who am I?\"],\"iDNBZe\":[\"Notifications\"],\"ijVyoK\":[\"Could not reach the server. Please try again.\"],\"ipYn7W\":[\"If that address is registered you'll receive a reset link shortly.\"],\"isRobC\":[\"New\"],\"jbernk\":[\"Loading profile…\"],\"joEmfT\":[\"Server unreachable\"],\"jrZTZl\":[\"No dumps yet. Be the first!\"],\"kLttbL\":[\"Registration failed\"],\"klOeIX\":[\"Failed to change password\"],\"lUDifl\":[\"Created (\",[\"0\"],[\"1\"],\")\"],\"lUanmi\":[\"You'll be notified when someone follows your playlists, upvotes your dumps, or posts new content.\"],\"lY5h1V\":[[\"0\",\"plural\",{\"one\":[\"#\",\" dump\"],\"other\":[\"#\",\" dumps\"]}]],\"lcfvr_\":[\"Delete this comment?\"],\"lpIMne\":[\"Passwords do not match\"],\"mt6O6E\":[\"This is a mirage.\"],\"nbm5sI\":[\"No dumps match \\\"\",[\"q\"],\"\\\".\"],\"nrjqON\":[\"Checking invite…\"],\"nwtY4N\":[\"Something went wrong\"],\"ogtYkT\":[\"Password updated\"],\"pCpd9p\":[\"<0>\",[\"0\"],\" mentioned you in <1>\",[\"where\"],\"\"],\"pSheLH\":[\"No invitees yet.\"],\"pvnfJD\":[\"Dark\"],\"qIMfNQ\":[\"Delete playlist\"],\"qbDAcy\":[\"Dump it\"],\"qgx_78\":[\"Follow some public playlists to see their dumps here.\"],\"qvFa8r\":[\"public\"],\"r15pMp\":[\" Dump\"],\"rCbqPX\":[\"This invite link is missing, expired, or already used.\"],\"rg9pXu\":[\"Search failed\"],\"rtpJqV\":[\"Dumps (\",[\"0\"],[\"1\"],\")\"],\"sQia9P\":[\"Log in\"],\"sTiqbm\":[\"invited by\"],\"sdP5Aa\":[\"[deleted]\"],\"shHs8T\":[\"Enter a query to search.\"],\"smeBfS\":[\"Invalid invite\"],\"tfDRzk\":[\"Save\"],\"tvmuQ0\":[\"Color scheme\"],\"u1lDX2\":[\"Fetching preview…\"],\"uD0qXQ\":[\"Drop a file here\"],\"uMGUnV\":[\"No playlists yet.\"],\"ub1EEL\":[\"edited \",[\"0\"]],\"vJBF1r\":[\"Posting…\"],\"vLhLLO\":[\"Notifications (\",[\"unreadNotificationCount\"],\" unread)\"],\"vuosjb\":[\"User menu\"],\"wXO4Tg\":[[\"hrs\"],\"h ago\"],\"wbXKOv\":[\"File too large (max 50 MB).\"],\"wixIgH\":[\"Already have an account? <0>Log in\"],\"xEWkgZ\":[\"← Back to all dumps\"],\"xOTzt5\":[\"just now\"],\"xPHtx0\":[\"Submit search\"],\"xVuNgt\":[\"+ New playlist\"],\"xc9O_u\":[\"Delete dump\"],\"xy6Wtk\":[\" New dump\"],\"y6sq5j\":[\"Following\"],\"yA_6BX\":[\"View all →\"],\"yBBtRm\":[\"Follow some users to see their dumps here.\"],\"yQ2kGp\":[\"Load more\"],\"y_0uwd\":[\"Yesterday\"],\"yz7wBu\":[\"Close\"],\"z1uNN0\":[\"No emoji found.\"],\"zVuxvN\":[\"Refreshing…\"],\"zwBp5t\":[\"Private\"]}")}; \ No newline at end of file diff --git a/src/locales/en.mjs b/src/locales/en.mjs deleted file mode 100644 index 3d41f59..0000000 --- a/src/locales/en.mjs +++ /dev/null @@ -1,3 +0,0 @@ -/*eslint-disable*/ export const messages = JSON.parse( - '{"+K9EZb":["Add email…"],"+Ya+b9":["Failed to save"],"+siMqD":["Journal"],"/84wxb":["All ",["0","plural",{"one":["#"," dump"],"other":["#"," dumps"]}]," loaded."],"/DwR+n":["Creating…"],"/aept4":["Post reply"],"/t4W+i":["From people"],"0kWhlg":["File too large (max 5 MB)"],"1HfJWf":["Search dumps, users, playlists…"],"1cbYY/":["Upvoted (",["0"],["1"],")"],"1utXA6":["Dumps"],"26iNma":["Post comment"],"2Hlmdt":["Write a reply…"],"2ygf/L":["← Back"],"3KKSM4":["private"],"3T1cI4":["Unexpected server error"],"3yfh3D":["<0>",["0"]," followed your playlist <1>",["1"],""],"49voTZ":[["label"]," (",["count"],")"],"4B6w/o":["Dumped!"],"4GKuCs":["Login failed"],"4RtQ1k":["Unfollow ",["targetUsername"]],"4yj9xV":["Live updates are temporarily disconnected. Trying to reconnect…"],"5cC8f2":["Edited ",["0"]],"5oD9f/":["Earlier"],"6Qly+0":["a comment"],"6gRgw8":["Retry"],"7JBW66":["Forbidden"],"7PHCIN":["Cancel removal"],"7d1a0d":["Public"],"7sNhEz":["Username"],"8ZsakT":["Password"],"8pxhI8":["Please select a file."],"9l4qcT":["Drop a replacement here"],"9uI/rE":["Undo"],"A0y396":["+ Invite someone"],"A1taO8":["Search"],"AQbgNR":["Follow ",["targetUsername"]],"ATGYL1":["Email address"],"AZctoV":[["0","plural",{"one":["#"," comment"],"other":["#"," comments"]}]],"Ade+6d":["Live updates unavailable."],"CI50ct":["Upvoted"],"Cj24wt":["Registering…"],"DPfwMq":["Done"],"DdeHXH":["Delete this dump? This cannot be undone."],"Dp1JhP":["<0>",["0"]," upvoted <1>",["1"],""],"ECiS12":["View dump →"],"ExR0Fr":["URL is required."],"F5Js1v":["Unfollow playlist"],"FgAxTj":["Log out"],"Fxf4jq":["Description (optional)"],"GNSsCc":["Failed to create playlist"],"GbqhrN":[["0"],"–",["1"]," characters: letters, numbers, or underscores"],"GsRMX3":["Playlist not found"],"H8pzW+":["Failed to update avatar"],"HTLDA4":["Loading more…"],"IZX7TO":["Failed to generate invite"],"IagCbF":["URL"],"ImOQa9":["Reply"],"J2eKUI":["File"],"Jd58Fo":["Hot"],"K/F6pa":["Saving…"],"K1JdNl":["Username already exists"],"KDGWg5":["Remove from playlist"],"LLyMkV":["Followed (",["0"],["1"],")"],"LPAv9E":[["days"],"d ago"],"Lld1jm":["Tell people about yourself…"],"MHrjPM":["Title"],"MKEPCY":["Follow"],"Mq2B8E":[["mins"],"m ago"],"NR0xa9":["Tell the community what makes this worth their time..."],"Nn4kr3":["+ New dump"],"Oprv1v":["Password (min. ",["0"]," characters)"],"Oz0N9s":["new"],"PiH3UR":["Copied!"],"Pwqkdw":["Loading…"],"Q6n4F4":["Refresh metadata"],"QKsaQr":["or <0>browse files"],"QLtPBd":["No dumps in this playlist yet."],"RCcPrX":["Delete this playlist? This cannot be undone."],"RTksSy":["<0>",["0"]," started following you"],"RaKjrM":["Failed to save edit"],"RcUHRT":["Followed"],"SBTElJ":["Searching…"],"Sxm8rQ":["Users"],"T9bjWt":["<0>",["0"]," was added to <1>",["1"],""],"TM1ZbA":["Playlists (",["0"],["1"],")"],"Tv9vbB":["Follow playlist"],"U7u3q+":["+ New"],"UOZith":["Failed to post"],"UTiUFs":["Fetching…"],"VnNJbN":["From playlists"],"VyTYmS":["Change avatar"],"WpXcBJ":["Nothing here yet."],"WtkMN8":["All ",["0","plural",{"one":["#"," upvoted dump"],"other":["#"," upvoted dumps"]}]," loaded."],"XILg0L":["Invalid email address"],"XJy2oN":["Logging in…"],"Xan6QP":["New dump"],"Xi0Mn4":["← Back to profile"],"XnL+Eu":["No users match \\"",["q"],"\\"."],"YK1Dhc":["a post"],"YaSA2K":["Comment not found"],"YpkCca":["No followed playlists yet."],"ZCpU0u":["No playlists match \\"",["q"],"\\"."],"ZmD2o6":["Create & Add"],"aDvLhk":["Add a comment…"],"alBtu4":["Invalid or expired invite"],"b3Thhd":["Upload failed"],"b8XMJ8":[["visibleCount","plural",{"one":["#"," comment"],"other":["#"," comments"]}]],"bQhwn+":["Loading playlist…"],"cILfnJ":["Remove file"],"cYP9Sb":["+ Playlist"],"cnGeoo":["Delete"],"d8DZWS":["Open search"],"dAs22m":["Replace file"],"dEgA5A":["Cancel"],"dSKHAa":["Invalid username or password"],"dTU6Wi":["Password must be at most 128 characters"],"dbc28f":["Why are you dumping this?"],"eFSqvc":["Failed to post reply"],"ePK91l":["Edit"],"ecUA8p":["Today"],"ef9nPf":["Loading dump…"],"en9o7K":["Failed to post comment"],"f/akpP":["Max 50 MB"],"fGxPOv":["Add a bio…"],"fI+mNw":["Playlists"],"fgLNSM":["Register"],"gANddk":["Uploading…"],"gGx5tM":["Editing"],"gIQQwD":["Failed to load"],"gLfZlz":["Add to playlist"],"gjJ+sb":["Can\'t connect to the live updates server. Upvotes and notifications may not sync until it reconnects."],"hD7w09":["You\'ve reached the end."],"hJSliC":["<0>",["0"]," posted <1>",["1"],""],"hYgDIe":["Create"],"he3ygx":["Copy"],"iDNBZe":["Notifications"],"ijVyoK":["Could not reach the server. Please try again."],"isRobC":["New"],"jGrTH0":["Not authenticated"],"jbernk":["Loading profile…"],"joEmfT":["Server unreachable"],"jrZTZl":["No dumps yet. Be the first!"],"kLttbL":["Registration failed"],"kYYCil":["File too large (max 50 MB)"],"l3JaOO":["Cannot edit a deleted comment"],"lUDifl":["Created (",["0"],["1"],")"],"lUanmi":["You\'ll be notified when someone follows your playlists, upvotes your dumps, or posts new content."],"lY5h1V":[["0","plural",{"one":["#"," dump"],"other":["#"," dumps"]}]],"lcfvr/":["Delete this comment?"],"mt6O6E":["This is a mirage."],"nbm5sI":["No dumps match \\"",["q"],"\\"."],"nrjqON":["Checking invite…"],"nwtY4N":["Something went wrong"],"pCpd9p":["<0>",["0"]," mentioned you in <1>",["where"],""],"qIMfNQ":["Delete playlist"],"qbDAcy":["Dump it"],"qgx/78":["Follow some public playlists to see their dumps here."],"qvFa8r":["public"],"rCbqPX":["This invite link is missing, expired, or already used."],"rg9pXu":["Search failed"],"rtpJqV":["Dumps (",["0"],["1"],")"],"sBZMWb":["Invalid URL"],"sQia9P":["Log in"],"sTiqbm":["invited by"],"sdP5Aa":["[deleted]"],"shHs8T":["Enter a query to search."],"siMTjB":["File content is not a recognised image (JPEG, PNG, GIF, WebP)"],"smeBfS":["Invalid invite"],"tfDRzk":["Save"],"tqKwXl":["Username must be 1–32 characters and contain only letters, numbers, or underscores"],"u1lDX2":["Fetching preview…"],"u4pkXs":["Invite already used"],"uD0qXQ":["Drop a file here"],"uMGUnV":["No playlists yet."],"ub1EEL":["edited ",["0"]],"vJBF1r":["Posting…"],"vLhLLO":["Notifications (",["unreadNotificationCount"]," unread)"],"vuosjb":["User menu"],"vwGkYB":["Password must be at least 8 characters"],"wXO4Tg":[["hrs"],"h ago"],"wbXKOv":["File too large (max 50 MB)."],"wdiqRH":["Admin access required"],"wixIgH":["Already have an account? <0>Log in"],"x4aBfU":["Dump not found"],"xEWkgZ":["← Back to all dumps"],"xOTzt5":["just now"],"xPHtx0":["Submit search"],"xVuNgt":["+ New playlist"],"xc9O/u":["Delete dump"],"y/0uwd":["Yesterday"],"y6sq5j":["Following"],"yA/6BX":["View all →"],"yBBtRm":["Follow some users to see their dumps here."],"yQ2kGp":["Load more"],"yz7wBu":["Close"],"z1uNN0":["No emoji found."],"zVuxvN":["Refreshing…"],"zwBp5t":["Private"]}', -); diff --git a/src/locales/en.po b/src/locales/en.po index 08f3f05..1e1b460 100644 --- a/src/locales/en.po +++ b/src/locales/en.po @@ -13,12 +13,29 @@ msgstr "" "Language-Team: \n" "Plural-Forms: \n" +#: src/components/AppHeader.tsx:71 +msgid " Dump" +msgstr " Dump" + +#: src/components/AppHeader.tsx:71 +msgid " New" +msgstr " New" + +#: src/pages/UserDumps.tsx:114 +#: src/pages/UserPublicProfile.tsx:1332 +msgid " New dump" +msgstr " New dump" + +#: src/components/NewPlaylistForm.tsx:30 +msgid " New playlist" +msgstr " New playlist" + #: src/components/CommentThread.tsx:176 msgid "[deleted]" msgstr "[deleted]" #. placeholder {0}: dump.commentCount -#: src/components/DumpCard.tsx:82 +#: src/components/DumpCard.tsx:95 msgid "{0, plural, one {# comment} other {# comments}}" msgstr "{0, plural, one {# comment} other {# comments}}" @@ -59,7 +76,7 @@ msgid "← Back" msgstr "← Back" #: src/pages/Dump.tsx:218 -#: src/pages/Dump.tsx:321 +#: src/pages/Dump.tsx:325 #: src/pages/DumpEdit.tsx:170 msgid "← Back to all dumps" msgstr "← Back to all dumps" @@ -74,16 +91,15 @@ msgstr "← Back to profile" msgid "+ Invite someone" msgstr "+ Invite someone" -#: src/components/AppHeader.tsx:70 +#: src/components/AppHeader.tsx:71 msgid "+ New" msgstr "+ New" #: src/pages/UserDumps.tsx:114 -#: src/pages/UserPublicProfile.tsx:1330 +#: src/pages/UserPublicProfile.tsx:1332 msgid "+ New dump" msgstr "+ New dump" -#: src/components/NewPlaylistForm.tsx:30 #: src/components/PlaylistMembershipPanel.tsx:80 msgid "+ New playlist" msgstr "+ New playlist" @@ -94,53 +110,53 @@ msgstr "+ Playlist" #. placeholder {0}: d.commenterUsername #. placeholder {1}: d.dumpTitle -#: src/pages/Notifications.tsx:171 +#: src/pages/Notifications.tsx:179 msgid "<0>{0} commented on <1>{1}" msgstr "<0>{0} commented on <1>{1}" #. placeholder {0}: d.followerUsername #. placeholder {1}: d.playlistTitle -#: src/pages/Notifications.tsx:131 +#: src/pages/Notifications.tsx:139 msgid "<0>{0} followed your playlist <1>{1}" msgstr "<0>{0} followed your playlist <1>{1}" #. placeholder {0}: d.mentionerUsername -#: src/pages/Notifications.tsx:183 +#: src/pages/Notifications.tsx:191 msgid "<0>{0} mentioned you in <1>{where}" msgstr "<0>{0} mentioned you in <1>{where}" #. placeholder {0}: d.dumperUsername #. placeholder {1}: d.dumpTitle -#: src/pages/Notifications.tsx:141 +#: src/pages/Notifications.tsx:149 msgid "<0>{0} posted <1>{1}" msgstr "<0>{0} posted <1>{1}" #. placeholder {0}: d.followerUsername -#: src/pages/Notifications.tsx:122 +#: src/pages/Notifications.tsx:130 msgid "<0>{0} started following you" msgstr "<0>{0} started following you" #. placeholder {0}: d.voterUsername #. placeholder {1}: d.dumpTitle -#: src/pages/Notifications.tsx:161 +#: src/pages/Notifications.tsx:169 msgid "<0>{0} upvoted <1>{1}" msgstr "<0>{0} upvoted <1>{1}" #. placeholder {0}: d.dumpTitle #. placeholder {1}: d.playlistTitle -#: src/pages/Notifications.tsx:151 +#: src/pages/Notifications.tsx:159 msgid "<0>{0} was added to <1>{1}" msgstr "<0>{0} was added to <1>{1}" -#: src/pages/Notifications.tsx:181 +#: src/pages/Notifications.tsx:189 msgid "a comment" msgstr "a comment" -#: src/pages/Notifications.tsx:181 +#: src/pages/Notifications.tsx:189 msgid "a post" msgstr "a post" -#: src/pages/UserPublicProfile.tsx:1215 +#: src/pages/UserPublicProfile.tsx:1217 msgid "Account" msgstr "Account" @@ -161,10 +177,6 @@ msgstr "Add email…" msgid "Add to playlist" msgstr "Add to playlist" -#: api/auth: -#~ msgid "Admin access required" -#~ msgstr "Admin access required" - #: src/pages/UserDumps.tsx:114 msgid "All {0, plural, one {# dump} other {# dumps}} loaded." msgstr "All {0, plural, one {# dump} other {# dumps}} loaded." @@ -177,7 +189,7 @@ msgstr "All {0, plural, one {# upvoted dump} other {# upvoted dumps}} loaded." msgid "Already have an account? <0>Log in" msgstr "Already have an account? <0>Log in" -#: src/pages/UserPublicProfile.tsx:1234 +#: src/pages/UserPublicProfile.tsx:1236 msgid "Appearance" msgstr "Appearance" @@ -187,7 +199,7 @@ msgstr "Appearance" msgid "At least {0} characters" msgstr "At least {0} characters" -#: src/pages/UserPublicProfile.tsx:1268 +#: src/pages/UserPublicProfile.tsx:1270 msgid "Auto" msgstr "Auto" @@ -219,10 +231,6 @@ msgstr "Cancel" msgid "Cancel removal" msgstr "Cancel removal" -#: api/comments: -#~ msgid "Cannot edit a deleted comment" -#~ msgstr "Cannot edit a deleted comment" - #: src/pages/UserPublicProfile.tsx:772 msgid "Change avatar" msgstr "Change avatar" @@ -232,7 +240,7 @@ msgstr "Change avatar" msgid "Change password" msgstr "Change password" -#: src/pages/UserPublicProfile.tsx:1227 +#: src/pages/UserPublicProfile.tsx:1229 msgid "Change password…" msgstr "Change password…" @@ -245,14 +253,10 @@ msgstr "Checking invite…" msgid "Close" msgstr "Close" -#: src/pages/UserPublicProfile.tsx:1260 +#: src/pages/UserPublicProfile.tsx:1262 msgid "Color scheme" msgstr "Color scheme" -#: api/comments: -#~ msgid "Comment not found" -#~ msgstr "Comment not found" - #: src/components/ChangePasswordModal.tsx:136 #: src/pages/ResetPassword.tsx:132 msgid "Confirm new password" @@ -303,7 +307,7 @@ msgstr "Creating…" msgid "Current password" msgstr "Current password" -#: src/pages/UserPublicProfile.tsx:1282 +#: src/pages/UserPublicProfile.tsx:1284 msgid "Dark" msgstr "Dark" @@ -359,32 +363,28 @@ msgstr "Drop a replacement here" msgid "Dump it" msgstr "Dump it" -#: api/dumps: -#~ msgid "Dump not found" -#~ msgstr "Dump not found" - #: src/components/DumpCreateModal.tsx:438 msgid "Dumped!" msgstr "Dumped!" #: src/pages/Search.tsx:172 #: src/pages/UserDumps.tsx:107 -#: src/pages/UserPublicProfile.tsx:967 +#: src/pages/UserPublicProfile.tsx:968 msgid "Dumps" msgstr "Dumps" #. placeholder {0}: dumps.items.length #. placeholder {1}: dumps.hasMore ? "+" : "" -#: src/pages/UserPublicProfile.tsx:1004 +#: src/pages/UserPublicProfile.tsx:1006 msgid "Dumps ({0}{1})" msgstr "Dumps ({0}{1})" -#: src/pages/Notifications.tsx:360 +#: src/pages/Notifications.tsx:368 msgid "Earlier" msgstr "Earlier" #: src/components/CommentThread.tsx:310 -#: src/pages/Dump.tsx:317 +#: src/pages/Dump.tsx:321 #: src/pages/PlaylistDetail.tsx:706 msgid "Edit" msgstr "Edit" @@ -393,7 +393,7 @@ msgstr "Edit" #. placeholder {0}: relativeTime(dump.updatedAt) #. placeholder {0}: relativeTime(playlist.updatedAt) #: src/components/CommentThread.tsx:237 -#: src/pages/Dump.tsx:278 +#: src/pages/Dump.tsx:281 #: src/pages/PlaylistDetail.tsx:779 msgid "edited {0}" msgstr "edited {0}" @@ -402,7 +402,7 @@ msgstr "edited {0}" #. placeholder {0}: dump.updatedAt.toLocaleString() #. placeholder {0}: playlist.updatedAt.toLocaleString() #: src/components/CommentThread.tsx:235 -#: src/pages/Dump.tsx:276 +#: src/pages/Dump.tsx:279 #: src/pages/PlaylistDetail.tsx:776 msgid "Edited {0}" msgstr "Edited {0}" @@ -438,10 +438,10 @@ msgstr "Failed to generate invite" #: src/pages/index/HotFeed.tsx:36 #: src/pages/index/JournalFeed.tsx:48 #: src/pages/index/NewFeed.tsx:36 -#: src/pages/Notifications.tsx:334 -#: src/pages/UserPublicProfile.tsx:1106 -#: src/pages/UserPublicProfile.tsx:1148 -#: src/pages/UserPublicProfile.tsx:1193 +#: src/pages/Notifications.tsx:342 +#: src/pages/UserPublicProfile.tsx:1108 +#: src/pages/UserPublicProfile.tsx:1150 +#: src/pages/UserPublicProfile.tsx:1195 msgid "Failed to load" msgstr "Failed to load" @@ -486,18 +486,6 @@ msgstr "Fetching…" 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:202 msgid "File too large (max 50 MB)." msgstr "File too large (max 50 MB)." @@ -523,8 +511,8 @@ msgstr "Follow some public playlists to see their dumps here." msgid "Follow some users to see their dumps here." msgstr "Follow some users to see their dumps here." -#: src/components/FeedTabBar.tsx:47 -#: src/pages/UserPublicProfile.tsx:981 +#: src/components/FeedTabBar.tsx:48 +#: src/pages/UserPublicProfile.tsx:982 msgid "Followed" msgstr "Followed" @@ -534,20 +522,16 @@ msgstr "Followed" msgid "Followed ({0}{1})" msgstr "Followed ({0}{1})" -#: src/pages/UserPublicProfile.tsx:1137 +#: src/pages/UserPublicProfile.tsx:1139 msgid "Followed playlists" msgstr "Followed playlists" #: src/components/FollowButton.tsx:37 #: src/components/FollowButton.tsx:64 -#: src/pages/UserPublicProfile.tsx:1095 +#: src/pages/UserPublicProfile.tsx:1097 msgid "Following" msgstr "Following" -#: api/playlists: -#~ msgid "Forbidden" -#~ msgstr "Forbidden" - #: src/pages/UserLogin.tsx:131 msgid "Forgot password?" msgstr "Forgot password?" @@ -564,7 +548,7 @@ msgstr "From playlists" msgid "Go to login" msgstr "Go to login" -#: src/components/FeedTabBar.tsx:25 +#: src/components/FeedTabBar.tsx:26 msgid "Hot" msgstr "Hot" @@ -572,10 +556,6 @@ msgstr "Hot" 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." -#: api/auth: -#~ msgid "Invalid email address" -#~ msgstr "Invalid email address" - #: src/pages/UserRegister.tsx:106 msgid "Invalid invite" msgstr "Invalid invite" @@ -584,33 +564,16 @@ msgstr "Invalid invite" msgid "Invalid link" msgstr "Invalid link" -#: 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:790 msgid "invited by" msgstr "invited by" -#: src/pages/UserPublicProfile.tsx:988 -#: src/pages/UserPublicProfile.tsx:1182 +#: src/pages/UserPublicProfile.tsx:989 +#: src/pages/UserPublicProfile.tsx:1184 msgid "Invitees" msgstr "Invitees" -#: src/components/FeedTabBar.tsx:39 +#: src/components/FeedTabBar.tsx:40 msgid "Journal" msgstr "Journal" @@ -618,7 +581,7 @@ msgstr "Journal" msgid "just now" msgstr "just now" -#: src/pages/UserPublicProfile.tsx:1275 +#: src/pages/UserPublicProfile.tsx:1277 msgid "Light" msgstr "Light" @@ -626,11 +589,11 @@ msgstr "Light" msgid "Live updates are temporarily disconnected. Trying to reconnect…" msgstr "Live updates are temporarily disconnected. Trying to reconnect…" -#: src/components/AppHeader.tsx:87 +#: src/components/AppHeader.tsx:88 msgid "Live updates unavailable." msgstr "Live updates unavailable." -#: src/pages/Notifications.tsx:407 +#: src/pages/Notifications.tsx:415 msgid "Load more" msgstr "Load more" @@ -665,18 +628,18 @@ msgstr "Loading profile…" #: src/pages/index/HotFeed.tsx:32 #: src/pages/index/JournalFeed.tsx:44 #: src/pages/index/NewFeed.tsx:32 -#: src/pages/Notifications.tsx:330 -#: src/pages/Notifications.tsx:406 +#: src/pages/Notifications.tsx:338 +#: src/pages/Notifications.tsx:414 #: src/pages/UserDumps.tsx:51 #: src/pages/UserPlaylists.tsx:342 -#: src/pages/UserPublicProfile.tsx:1100 -#: src/pages/UserPublicProfile.tsx:1142 -#: src/pages/UserPublicProfile.tsx:1187 +#: src/pages/UserPublicProfile.tsx:1102 +#: src/pages/UserPublicProfile.tsx:1144 +#: src/pages/UserPublicProfile.tsx:1189 #: src/pages/UserUpvoted.tsx:123 msgid "Loading…" msgstr "Loading…" -#: src/components/AppHeader.tsx:77 +#: src/components/AppHeader.tsx:78 #: src/pages/UserLogin.tsx:87 #: src/pages/UserLogin.tsx:117 msgid "Log in" @@ -699,11 +662,11 @@ msgstr "Login failed" msgid "Max 50 MB" msgstr "Max 50 MB" -#: src/pages/Notifications.tsx:323 +#: src/pages/Notifications.tsx:331 msgid "new" msgstr "new" -#: src/components/FeedTabBar.tsx:32 +#: src/components/FeedTabBar.tsx:33 msgid "New" msgstr "New" @@ -739,11 +702,11 @@ msgid "No emoji found." msgstr "No emoji found." #: src/pages/UserPlaylists.tsx:439 -#: src/pages/UserPublicProfile.tsx:1155 +#: src/pages/UserPublicProfile.tsx:1157 msgid "No followed playlists yet." msgstr "No followed playlists yet." -#: src/pages/UserPublicProfile.tsx:1200 +#: src/pages/UserPublicProfile.tsx:1202 msgid "No invitees yet." msgstr "No invitees yet." @@ -753,7 +716,7 @@ msgstr "No playlists match \"{q}\"." #: src/components/PlaylistMembershipPanel.tsx:34 #: src/pages/UserPlaylists.tsx:397 -#: src/pages/UserPublicProfile.tsx:1066 +#: src/pages/UserPublicProfile.tsx:1068 msgid "No playlists yet." msgstr "No playlists yet." @@ -761,24 +724,20 @@ msgstr "No playlists yet." msgid "No users match \"{q}\"." msgstr "No users match \"{q}\"." -#: api/auth: -#~ msgid "Not authenticated" -#~ msgstr "Not authenticated" - -#: src/pages/UserPublicProfile.tsx:1113 +#: src/pages/UserPublicProfile.tsx:1115 msgid "Not following anyone yet." msgstr "Not following anyone yet." -#: src/pages/Notifications.tsx:341 +#: src/pages/Notifications.tsx:349 #: src/pages/UserDumps.tsx:123 -#: src/pages/UserPublicProfile.tsx:1340 -#: src/pages/UserPublicProfile.tsx:1463 +#: src/pages/UserPublicProfile.tsx:1342 +#: src/pages/UserPublicProfile.tsx:1465 #: src/pages/UserUpvoted.tsx:195 msgid "Nothing here yet." msgstr "Nothing here yet." #: src/components/NotificationBell.tsx:42 -#: src/pages/Notifications.tsx:319 +#: src/pages/Notifications.tsx:327 msgid "Notifications" msgstr "Notifications" @@ -795,7 +754,7 @@ msgid "or <0>browse files" msgstr "or <0>browse files" #: src/pages/UserLogin.tsx:106 -#: src/pages/UserPublicProfile.tsx:1220 +#: src/pages/UserPublicProfile.tsx:1222 msgid "Password" msgstr "Password" @@ -808,14 +767,6 @@ msgstr "Password (min. {0} characters)" msgid "Password changed successfully." msgstr "Password changed successfully." -#: 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" - #: src/pages/ResetPassword.tsx:56 msgid "Password updated" msgstr "Password updated" @@ -825,21 +776,17 @@ msgstr "Password updated" msgid "Passwords do not match" msgstr "Passwords do not match" -#: api/playlists: -#~ msgid "Playlist not found" -#~ msgstr "Playlist not found" - -#: src/components/AppHeader.tsx:53 +#: src/components/AppHeader.tsx:54 #: src/components/UserMenu.tsx:62 #: src/pages/Search.tsx:175 #: src/pages/UserPlaylists.tsx:368 -#: src/pages/UserPublicProfile.tsx:974 +#: src/pages/UserPublicProfile.tsx:975 msgid "Playlists" msgstr "Playlists" #. placeholder {0}: playlists.items.length #. placeholder {1}: playlists.hasMore ? "+" : "" -#: src/pages/UserPublicProfile.tsx:1035 +#: src/pages/UserPublicProfile.tsx:1037 msgid "Playlists ({0}{1})" msgstr "Playlists ({0}{1})" @@ -860,10 +807,10 @@ msgstr "Post reply" msgid "Posting…" msgstr "Posting…" -#: src/components/DumpCard.tsx:91 +#: src/components/DumpCard.tsx:104 #: src/components/PlaylistCard.tsx:73 #: src/components/PlaylistMembershipPanel.tsx:55 -#: src/pages/Dump.tsx:284 +#: src/pages/Dump.tsx:287 #: src/pages/PlaylistDetail.tsx:759 msgid "private" msgstr "private" @@ -978,7 +925,7 @@ msgstr "Send reset link" msgid "Sending…" msgstr "Sending…" -#: src/components/AppHeader.tsx:68 +#: src/components/AppHeader.tsx:69 msgid "Server unreachable" msgstr "Server unreachable" @@ -987,7 +934,7 @@ msgstr "Server unreachable" msgid "Set new password" msgstr "Set new password" -#: src/pages/UserPublicProfile.tsx:996 +#: src/pages/UserPublicProfile.tsx:997 msgid "Settings" msgstr "Settings" @@ -995,7 +942,7 @@ msgstr "Settings" msgid "Something went wrong" msgstr "Something went wrong" -#: src/pages/UserPublicProfile.tsx:1239 +#: src/pages/UserPublicProfile.tsx:1241 msgid "Style" msgstr "Style" @@ -1003,15 +950,6 @@ msgstr "Style" msgid "Submit search" msgstr "Submit search" -#: src/pages/UserPublicProfile.tsx:899 -msgid "Tell people about yourself…" -msgstr "Tell people about yourself…" - -#: src/components/DumpCreateModal.tsx:383 -#: src/pages/DumpEdit.tsx:266 -msgid "Tell the community what makes this worth their time..." -msgstr "Tell the community what makes this worth their time..." - #: src/pages/UserRegister.tsx:107 msgid "This invite link is missing, expired, or already used." msgstr "This invite link is missing, expired, or already used." @@ -1028,7 +966,7 @@ msgstr "This reset link is missing or malformed." msgid "Title" msgstr "Title" -#: src/pages/Notifications.tsx:357 +#: src/pages/Notifications.tsx:365 msgid "Today" msgstr "Today" @@ -1036,10 +974,6 @@ msgstr "Today" 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}" @@ -1067,7 +1001,7 @@ msgstr "Upvoted" #. placeholder {0}: votes.items.length #. placeholder {1}: votes.hasMore ? "+" : "" -#: src/pages/UserPublicProfile.tsx:1015 +#: src/pages/UserPublicProfile.tsx:1017 msgid "Upvoted ({0}{1})" msgstr "Upvoted ({0}{1})" @@ -1089,23 +1023,15 @@ msgstr "User menu" msgid "Username" msgstr "Username" -#: api/auth: -#~ msgid "Username already exists" -#~ msgstr "Username already exists" - -#: api/auth: -#~ msgid "Username must be 1–32 characters and contain only letters, numbers, or underscores" -#~ msgstr "Username must be 1–32 characters and contain only letters, numbers, or underscores" - #: src/pages/Search.tsx:174 msgid "Users" msgstr "Users" -#: src/pages/UserPublicProfile.tsx:1085 -#: src/pages/UserPublicProfile.tsx:1128 -#: src/pages/UserPublicProfile.tsx:1170 -#: src/pages/UserPublicProfile.tsx:1361 -#: src/pages/UserPublicProfile.tsx:1493 +#: src/pages/UserPublicProfile.tsx:1087 +#: src/pages/UserPublicProfile.tsx:1130 +#: src/pages/UserPublicProfile.tsx:1172 +#: src/pages/UserPublicProfile.tsx:1363 +#: src/pages/UserPublicProfile.tsx:1495 msgid "View all →" msgstr "View all →" @@ -1113,20 +1039,29 @@ msgstr "View all →" msgid "View dump →" msgstr "View dump →" +#: src/components/DumpCreateModal.tsx:383 +#: src/pages/DumpEdit.tsx:266 +msgid "What makes it worth it?" +msgstr "What makes it worth it?" + +#: src/pages/UserPublicProfile.tsx:899 +msgid "Who am I?" +msgstr "Who am I?" + #: src/components/DumpCreateModal.tsx:376 #: src/pages/DumpEdit.tsx:260 -msgid "Why are you dumping this?" -msgstr "Why are you dumping this?" +msgid "Why?" +msgstr "Why?" #: src/components/CommentThread.tsx:342 msgid "Write a reply…" msgstr "Write a reply…" -#: src/pages/Notifications.tsx:359 +#: src/pages/Notifications.tsx:367 msgid "Yesterday" msgstr "Yesterday" -#: src/pages/Notifications.tsx:344 +#: src/pages/Notifications.tsx:352 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." diff --git a/src/locales/fr.js b/src/locales/fr.js index b9054dd..c08cdd4 100644 --- a/src/locales/fr.js +++ b/src/locales/fr.js @@ -1,5 +1 @@ -/*eslint-disable*/ module.exports = { - messages: JSON.parse( - '{"-K9EZb":["Ajouter un e-mail…"],"-OxI15":["Collections suivies"],"-Ya-b9":["Enregistrement échoué"],"-siMqD":["Journal"],"0kWhlg":["File too large (max 5 MB)"],"1CalO6":["Style"],"1HfJWf":["Rechercher des recos, utilisateurs, collections…"],"1cbYY_":["Votés (",["0"],["1"],")"],"1njn7W":["Clair"],"1utXA6":["Recos"],"26iNma":["Publier le commentaire"],"29VNqC":["Erreur inconnue"],"2Hlmdt":["Écrire une réponse…"],"2ygf_L":["← Retour"],"3KKSM4":["privé"],"3T1cI4":["Unexpected server error"],"3yfh3D":["<0>",["0"]," a suivi votre collection <1>",["1"],""],"49voTZ":[["label"]," (",["count"],")"],"4B6w_o":["Recommandé !"],"4GKuCs":["Connexion échouée"],"4HH9iB":["Aucun abonnement pour le moment."],"4RtQ1k":["Ne plus suivre ",["targetUsername"]],"4c-qBx":["Votre mot de passe a été modifié. Vous pouvez maintenant vous connecter."],"4yj9xV":["Les mises à jour en direct sont temporairement interrompues. Tentative de reconnexion…"],"5cC8f2":["Modifié le ",["0"]],"5oD9f_":["Plus tôt"],"6Qly-0":["un commentaire"],"6gRgw8":["Réessayer"],"7JBW66":["Forbidden"],"7PHCIN":["Annuler la suppression"],"7d1a0d":["Public"],"7sNhEz":["Nom d\'utilisateur"],"8ZsakT":["Mot de passe"],"8pxhI8":["Veuillez sélectionner un fichier."],"9l4qcT":["Déposez un fichier de remplacement ici"],"9uI_rE":["Annuler"],"A0y396":["+ Inviter quelqu\'un"],"A1taO8":["Rechercher"],"AQbgNR":["Suivre ",["targetUsername"]],"ATGYL1":["Adresse e-mail"],"AZctoV":[["0","plural",{"one":["#"," commentaire"],"other":["#"," commentaires"]}]],"Ade-6d":["Mises à jour en direct indisponibles."],"AeXO77":["Compte"],"CI50ct":["Voté"],"Cj24wt":["Inscription…"],"DPfwMq":["Terminé"],"DdeHXH":["Supprimer cette reco ? Cette action est irréversible."],"Dp1JhP":["<0>",["0"]," a voté pour <1>",["1"],""],"ECiS12":["Voir la reco →"],"ExR0Fr":["L\'URL est obligatoire."],"F1O9Ep":["Impossible de contacter le serveur"],"F5Js1v":["Ne plus suivre la collection"],"FgAxTj":["Se déconnecter"],"Fxf4jq":["Description (facultatif)"],"GNSsCc":["Impossible de créer la collection"],"GbqhrN":[["0"],"–",["1"]," caractères : lettres, chiffres ou tirets bas"],"GptGxg":["Changer le mot de passe"],"GsRMX3":["Playlist not found"],"H8pzW-":["Impossible de mettre à jour l\'avatar"],"HTLDA4":["Chargement…"],"I-x669":["Invités"],"IZX7TO":["Impossible de générer une invitation"],"IagCbF":["URL"],"ImOQa9":["Répondre"],"J2eKUI":["Fichier"],"JJ-Bhk":["Votre adresse e-mail"],"JRQitQ":["Confirmer le nouveau mot de passe"],"JXr41k":["<0>",["0"]," commented on <1>",["1"],""],"Jd58Fo":["Tendances"],"Jf0PuK":["Aller à la connexion"],"K1JdNl":["Username already exists"],"KDGWg5":["Retirer de la collection"],"K_F6pa":["Enregistrement…"],"LLyMkV":["Suivies (",["0"],["1"],")"],"LPAv9E":["il y a ",["days"],"j"],"Lld1jm":["Parlez de vous…"],"MHrjPM":["Titre"],"MKEPCY":["Suivre"],"Mq2B8E":["il y a ",["mins"],"min"],"NR0xa9":["Dites à la communauté pourquoi ça vaut le coup…"],"Nn4kr3":["+ Nouvelle reco"],"Oprv1v":["Mot de passe (min. ",["0"]," caractères)"],"Oz0N9s":["nouveau"],"PiH3UR":["Copié !"],"Pn2B7_":["Mot de passe actuel"],"Pwqkdw":["Chargement…"],"Q6n4F4":["Actualiser les métadonnées"],"QKsaQr":["ou <0>parcourir les fichiers"],"QLtPBd":["Aucune reco dans cette collection pour l\'instant."],"R9Khdg":["Auto"],"RCcPrX":["Supprimer cette collection ? Cette action est irréversible."],"RTksSy":["<0>",["0"]," a commencé à vous suivre"],"RaKjrM":["Impossible d\'enregistrer la modification"],"RcUHRT":["Suivi"],"SBTElJ":["Recherche…"],"Sad2tK":["Envoi…"],"Sxm8rQ":["Utilisateurs"],"T9bjWt":["<0>",["0"]," a été ajouté à <1>",["1"],""],"TM1ZbA":["Collections (",["0"],["1"],")"],"TN382O":["Lien invalide"],"Tv9vbB":["Suivre la collection"],"Tz0i8g":["Paramètres"],"U7u3q-":["+ Nouveau"],"UNMVei":["Mot de passe oublié ?"],"UOZith":["Publication échouée"],"UTiUFs":["Récupération…"],"VCoEm-":["Retour à la connexion"],"V_e7nf":["Définir un nouveau mot de passe"],"VnNJbN":["De collections"],"VyTYmS":["Changer l\'avatar"],"WhimMi":["Échec de la réinitialisation"],"WpXcBJ":["Rien ici pour l\'instant."],"WtkMN8":["Toutes les ",["0","plural",{"one":["#"," reco votée"],"other":["#"," recos votées"]}]," chargées."],"XILg0L":["Invalid email address"],"XJy2oN":["Connexion…"],"Xan6QP":["Nouvelle reco"],"XgRtUf":["Impossible de changer le mot de passe"],"Xi0Mn4":["← Retour au profil"],"XnL-Eu":["Aucun utilisateur ne correspond à « ",["q"]," »."],"Xs2Lez":["Ce lien de réinitialisation est absent ou malformé."],"YK1Dhc":["une publication"],"YaSA2K":["Comment not found"],"YpkCca":["Pas encore de collections suivies."],"ZCpU0u":["Aucune collection ne correspond à « ",["q"]," »."],"ZmD2o6":["Créer et ajouter"],"_3O5R_":["Échec de la demande"],"_84wxb":["Toutes les ",["0","plural",{"one":["#"," reco"],"other":["#"," recos"]}]," chargées."],"_DwR-n":["Création…"],"_R_sGB":["Mot de passe modifié avec succès."],"_aept4":["Publier la réponse"],"_nT6AE":["Nouveau mot de passe"],"_t4W-i":["De personnes"],"aAIQg2":["Apparence"],"aDvLhk":["Ajouter un commentaire…"],"alBtu4":["Invalid or expired invite"],"b3Thhd":["Envoi échoué"],"b8XMJ8":[["visibleCount","plural",{"one":["#"," commentaire"],"other":["#"," commentaires"]}]],"bQhwn-":["Chargement de la collection…"],"cILfnJ":["Supprimer le fichier"],"cYP9Sb":["+ Collection"],"cbeBbZ":["Au moins ",["0"]," caractères"],"cnGeoo":["Supprimer"],"d8DZWS":["Ouvrir la recherche"],"dAs22m":["Remplacer le fichier"],"dEgA5A":["Annuler"],"dMizp8":["Nouvelle collection"],"dSKHAa":["Invalid username or password"],"dTU6Wi":["Password must be at most 128 characters"],"dbc28f":["Pourquoi recommandez-vous ça ?"],"eFSqvc":["Impossible de publier la réponse"],"ePK91l":["Modifier"],"eaUTwS":["Envoyer le lien de réinitialisation"],"ecUA8p":["Aujourd\'hui"],"ef9nPf":["Chargement de la reco…"],"en9o7K":["Impossible de publier le commentaire"],"fGxPOv":["Ajouter une bio…"],"fI-mNw":["Collections"],"f_akpP":["Max 50 Mo"],"fgLNSM":["S\'inscrire"],"gANddk":["Envoi…"],"gGx5tM":["Modification"],"gIQQwD":["Chargement échoué"],"gLfZlz":["Ajouter à la collection"],"gjJ-sb":["Impossible de se connecter au serveur de mises à jour en direct. Les votes et les notifications pourraient ne pas se synchroniser avant la reconnexion."],"hBuUKa":["Changer le mot de passe…"],"hD7w09":["Vous avez tout lu, tout vu, tout bu."],"hJSliC":["<0>",["0"]," a publié <1>",["1"],""],"hYgDIe":["Créer"],"he3ygx":["Copier"],"iDNBZe":["Notifications"],"ijVyoK":["Impossible de contacter le serveur. Veuillez réessayer."],"ipYn7W":["Si cette adresse est enregistrée, vous recevrez un lien de réinitialisation sous peu."],"isRobC":["Nouveau"],"jGrTH0":["Not authenticated"],"jbernk":["Chargement du profil…"],"joEmfT":["Serveur inaccessible"],"jrZTZl":["Pas encore de recos. Soyez le premier !"],"kLttbL":["Inscription échouée"],"kYYCil":["File too large (max 50 MB)"],"klOeIX":["Impossible de changer le mot de passe"],"l3JaOO":["Cannot edit a deleted comment"],"lUDifl":["Créées (",["0"],["1"],")"],"lUanmi":["Vous serez notifié lorsque quelqu\'un suit vos collections, vote pour vos recos ou publie du nouveau contenu."],"lY5h1V":[["0","plural",{"one":["#"," reco"],"other":["#"," recos"]}]],"lcfvr_":["Supprimer ce commentaire ?"],"lpIMne":["Les mots de passe ne correspondent pas"],"mt6O6E":["C\'est un mirage."],"nbm5sI":["Aucune reco ne correspond à « ",["q"]," »."],"nrjqON":["Vérification de l\'invitation…"],"nwtY4N":["Une erreur est survenue"],"ogtYkT":["Mot de passe mis à jour"],"pCpd9p":["<0>",["0"]," vous a mentionné dans <1>",["where"],""],"pSheLH":["Aucun invité pour le moment."],"pvnfJD":["Sombre"],"qIMfNQ":["Supprimer la collection"],"qbDAcy":["Recommander"],"qgx_78":["Suivez des collections publiques pour voir leurs recos ici."],"qvFa8r":["public"],"rCbqPX":["Ce lien d\'invitation est manquant, expiré ou déjà utilisé."],"rg9pXu":["Recherche échouée"],"rtpJqV":["Recos (",["0"],["1"],")"],"sBZMWb":["Invalid URL"],"sQia9P":["Se connecter"],"sTiqbm":["invité par"],"sdP5Aa":["[supprimé]"],"shHs8T":["Saisissez une recherche."],"siMTjB":["File content is not a recognised image (JPEG, PNG, GIF, WebP)"],"smeBfS":["Invitation invalide"],"tfDRzk":["Enregistrer"],"tqKwXl":["Username must be 1–32 characters and contain only letters, numbers, or underscores"],"tvmuQ0":["Thème de couleur"],"u1lDX2":["Récupération de l\'aperçu…"],"u4pkXs":["Invite already used"],"uD0qXQ":["Déposez un fichier ici"],"uMGUnV":["Pas encore de collections."],"ub1EEL":["modifié ",["0"]],"vJBF1r":["Publication…"],"vLhLLO":["Notifications (",["unreadNotificationCount"]," non lues)"],"vuosjb":["Menu utilisateur"],"vwGkYB":["Password must be at least 8 characters"],"wXO4Tg":["il y a ",["hrs"],"h"],"wbXKOv":["Fichier trop volumineux (max 50 Mo)."],"wdiqRH":["Admin access required"],"wixIgH":["Vous avez déjà un compte ? <0>Se connecter"],"x4aBfU":["Dump not found"],"xEWkgZ":["← Retour à toutes les recos"],"xOTzt5":["à l\'instant"],"xPHtx0":["Lancer la recherche"],"xVuNgt":["+ Nouvelle collection"],"xc9O_u":["Supprimer la reco"],"y6sq5j":["Abonné"],"yA_6BX":["Tout voir →"],"yBBtRm":["Suivez des utilisateurs pour voir leurs recos ici."],"yQ2kGp":["Charger plus"],"y_0uwd":["Hier"],"yz7wBu":["Fermer"],"z1uNN0":["Aucun emoji trouvé."],"zVuxvN":["Actualisation…"],"zwBp5t":["Privé"]}', - ), -}; +/*eslint-disable*/module.exports={messages:JSON.parse("{\"-K9EZb\":[\"Ajouter un e-mail…\"],\"-OxI15\":[\"Collections suivies\"],\"-Ya-b9\":[\"Enregistrement échoué\"],\"-siMqD\":[\"Journal\"],\"1CalO6\":[\"Style\"],\"1HfJWf\":[\"Rechercher des recos, utilisateurs, collections…\"],\"1cbYY_\":[\"Votés (\",[\"0\"],[\"1\"],\")\"],\"1njn7W\":[\"Clair\"],\"1utXA6\":[\"Recos\"],\"26iNma\":[\"Publier le commentaire\"],\"29VNqC\":[\"Erreur inconnue\"],\"2Hlmdt\":[\"Écrire une réponse…\"],\"2ygf_L\":[\"← Retour\"],\"3KKSM4\":[\"privé\"],\"3yfh3D\":[\"<0>\",[\"0\"],\" a suivi votre collection <1>\",[\"1\"],\"\"],\"49voTZ\":[[\"label\"],\" (\",[\"count\"],\")\"],\"4B6w_o\":[\"Recommandé !\"],\"4GKuCs\":[\"Connexion échouée\"],\"4HH9iB\":[\"Aucun abonnement pour le moment.\"],\"4RtQ1k\":[\"Ne plus suivre \",[\"targetUsername\"]],\"4c-qBx\":[\"Votre mot de passe a été modifié. Vous pouvez maintenant vous connecter.\"],\"4yj9xV\":[\"Les mises à jour en direct sont temporairement interrompues. Tentative de reconnexion…\"],\"5cC8f2\":[\"Modifié le \",[\"0\"]],\"5oD9f_\":[\"Plus tôt\"],\"6Qly-0\":[\"un commentaire\"],\"6gRgw8\":[\"Réessayer\"],\"7PHCIN\":[\"Annuler la suppression\"],\"7d1a0d\":[\"Public\"],\"7sNhEz\":[\"Nom d'utilisateur\"],\"8XaCG6\":[\" New\"],\"8ZsakT\":[\"Mot de passe\"],\"8pxhI8\":[\"Veuillez sélectionner un fichier.\"],\"9BruTc\":[\"Pourquoi ?\"],\"9l4qcT\":[\"Déposez un fichier de remplacement ici\"],\"9uI_rE\":[\"Annuler\"],\"A0y396\":[\"+ Inviter quelqu'un\"],\"A1taO8\":[\"Rechercher\"],\"AQbgNR\":[\"Suivre \",[\"targetUsername\"]],\"ATGYL1\":[\"Adresse e-mail\"],\"AZctoV\":[[\"0\",\"plural\",{\"one\":[\"#\",\" commentaire\"],\"other\":[\"#\",\" commentaires\"]}]],\"Ade-6d\":[\"Mises à jour en direct indisponibles.\"],\"AeXO77\":[\"Compte\"],\"CI50ct\":[\"Voté\"],\"Cj24wt\":[\"Inscription…\"],\"DPfwMq\":[\"Terminé\"],\"DdeHXH\":[\"Supprimer cette reco ? Cette action est irréversible.\"],\"Dp1JhP\":[\"<0>\",[\"0\"],\" a voté pour <1>\",[\"1\"],\"\"],\"ECiS12\":[\"Voir la reco →\"],\"ExR0Fr\":[\"L'URL est obligatoire.\"],\"F1O9Ep\":[\"Impossible de contacter le serveur\"],\"F5Js1v\":[\"Ne plus suivre la collection\"],\"FgAxTj\":[\"Se déconnecter\"],\"Fxf4jq\":[\"Description (facultatif)\"],\"GNSsCc\":[\"Impossible de créer la collection\"],\"GbqhrN\":[[\"0\"],\"–\",[\"1\"],\" caractères : lettres, chiffres ou tirets bas\"],\"GptGxg\":[\"Changer le mot de passe\"],\"H8pzW-\":[\"Impossible de mettre à jour l'avatar\"],\"HTLDA4\":[\"Chargement…\"],\"I-x669\":[\"Invités\"],\"IZX7TO\":[\"Impossible de générer une invitation\"],\"IagCbF\":[\"URL\"],\"ImOQa9\":[\"Répondre\"],\"J2eKUI\":[\"Fichier\"],\"JJ-Bhk\":[\"Votre adresse e-mail\"],\"JRQitQ\":[\"Confirmer le nouveau mot de passe\"],\"JXr41k\":[\"<0>\",[\"0\"],\" a commenté sur <1>\",[\"1\"],\"\"],\"Jd58Fo\":[\"Tendances\"],\"Jf0PuK\":[\"Aller à la connexion\"],\"KDGWg5\":[\"Retirer de la collection\"],\"K_F6pa\":[\"Enregistrement…\"],\"LLyMkV\":[\"Suivies (\",[\"0\"],[\"1\"],\")\"],\"LPAv9E\":[\"il y a \",[\"days\"],\"j\"],\"MHrjPM\":[\"Titre\"],\"MKEPCY\":[\"Suivre\"],\"Mq2B8E\":[\"il y a \",[\"mins\"],\"min\"],\"Nn4kr3\":[\"+ Nouvelle reco\"],\"Oprv1v\":[\"Mot de passe (min. \",[\"0\"],\" caractères)\"],\"Oz0N9s\":[\"nouveau\"],\"PiH3UR\":[\"Copié !\"],\"Pn2B7_\":[\"Mot de passe actuel\"],\"Pwqkdw\":[\"Chargement…\"],\"Q6n4F4\":[\"Actualiser les métadonnées\"],\"QKsaQr\":[\"ou <0>parcourir les fichiers\"],\"QLtPBd\":[\"Aucune reco dans cette collection pour l'instant.\"],\"R9Khdg\":[\"Auto\"],\"RCcPrX\":[\"Supprimer cette collection ? Cette action est irréversible.\"],\"RTksSy\":[\"<0>\",[\"0\"],\" a commencé à vous suivre\"],\"RaKjrM\":[\"Impossible d'enregistrer la modification\"],\"RcUHRT\":[\"Suivi\"],\"SBTElJ\":[\"Recherche…\"],\"Sad2tK\":[\"Envoi…\"],\"Sxm8rQ\":[\"Utilisateurs\"],\"T9bjWt\":[\"<0>\",[\"0\"],\" a été ajouté à <1>\",[\"1\"],\"\"],\"TM1ZbA\":[\"Collections (\",[\"0\"],[\"1\"],\")\"],\"TN382O\":[\"Lien invalide\"],\"Tv9vbB\":[\"Suivre la collection\"],\"Tz0i8g\":[\"Paramètres\"],\"U7u3q-\":[\"+ Nouveau\"],\"UNMVei\":[\"Mot de passe oublié ?\"],\"UOZith\":[\"Publication échouée\"],\"UTiUFs\":[\"Récupération…\"],\"VCoEm-\":[\"Retour à la connexion\"],\"V_e7nf\":[\"Définir un nouveau mot de passe\"],\"VnNJbN\":[\"De collections\"],\"VyTYmS\":[\"Changer l'avatar\"],\"WhimMi\":[\"Échec de la réinitialisation\"],\"WpXcBJ\":[\"Rien ici pour l'instant.\"],\"WtkMN8\":[\"Toutes les \",[\"0\",\"plural\",{\"one\":[\"#\",\" reco votée\"],\"other\":[\"#\",\" recos votées\"]}],\" chargées.\"],\"XJy2oN\":[\"Connexion…\"],\"Xan6QP\":[\"Nouvelle reco\"],\"XgRtUf\":[\"Impossible de changer le mot de passe\"],\"Xi0Mn4\":[\"← Retour au profil\"],\"XnL-Eu\":[\"Aucun utilisateur ne correspond à « \",[\"q\"],\" ».\"],\"Xs2Lez\":[\"Ce lien de réinitialisation est absent ou malformé.\"],\"YK1Dhc\":[\"une publication\"],\"YpkCca\":[\"Pas encore de collections suivies.\"],\"ZCpU0u\":[\"Aucune collection ne correspond à « \",[\"q\"],\" ».\"],\"ZmD2o6\":[\"Créer et ajouter\"],\"_3O5R_\":[\"Échec de la demande\"],\"_84wxb\":[\"Toutes les \",[\"0\",\"plural\",{\"one\":[\"#\",\" reco\"],\"other\":[\"#\",\" recos\"]}],\" chargées.\"],\"_DwR-n\":[\"Création…\"],\"_R_sGB\":[\"Mot de passe modifié avec succès.\"],\"_aept4\":[\"Publier la réponse\"],\"_nT6AE\":[\"Nouveau mot de passe\"],\"_t4W-i\":[\"De personnes\"],\"a8Ypyu\":[\" Nouvelle collection\"],\"aAIQg2\":[\"Apparence\"],\"aDvLhk\":[\"Ajouter un commentaire…\"],\"b3Thhd\":[\"Envoi échoué\"],\"b8XMJ8\":[[\"visibleCount\",\"plural\",{\"one\":[\"#\",\" commentaire\"],\"other\":[\"#\",\" commentaires\"]}]],\"bQhwn-\":[\"Chargement de la collection…\"],\"cILfnJ\":[\"Supprimer le fichier\"],\"cYP9Sb\":[\"+ Collection\"],\"cbeBbZ\":[\"Au moins \",[\"0\"],\" caractères\"],\"cnGeoo\":[\"Supprimer\"],\"d8DZWS\":[\"Ouvrir la recherche\"],\"dAs22m\":[\"Remplacer le fichier\"],\"dEgA5A\":[\"Annuler\"],\"dMizp8\":[\"Nouvelle collection\"],\"eFSqvc\":[\"Impossible de publier la réponse\"],\"ePK91l\":[\"Modifier\"],\"eaUTwS\":[\"Envoyer le lien de réinitialisation\"],\"ecUA8p\":[\"Aujourd'hui\"],\"ef9nPf\":[\"Chargement de la reco…\"],\"en9o7K\":[\"Impossible de publier le commentaire\"],\"etFQQS\":[\"Pourquoi on en voudrait ?\"],\"fGxPOv\":[\"Ajouter une bio…\"],\"fI-mNw\":[\"Collections\"],\"f_akpP\":[\"Max 50 Mo\"],\"fgLNSM\":[\"S'inscrire\"],\"gANddk\":[\"Envoi…\"],\"gGx5tM\":[\"Modification\"],\"gIQQwD\":[\"Chargement échoué\"],\"gLfZlz\":[\"Ajouter à la collection\"],\"gjJ-sb\":[\"Impossible de se connecter au serveur de mises à jour en direct. Les votes et les notifications pourraient ne pas se synchroniser avant la reconnexion.\"],\"hBuUKa\":[\"Changer le mot de passe…\"],\"hD7w09\":[\"Vous avez tout lu, tout vu, tout bu.\"],\"hJSliC\":[\"<0>\",[\"0\"],\" a publié <1>\",[\"1\"],\"\"],\"hYgDIe\":[\"Créer\"],\"he3ygx\":[\"Copier\"],\"i7K_Te\":[\"Qui suis-je ?\"],\"iDNBZe\":[\"Notifications\"],\"ijVyoK\":[\"Impossible de contacter le serveur. Veuillez réessayer.\"],\"ipYn7W\":[\"Si cette adresse est enregistrée, vous recevrez un lien de réinitialisation sous peu.\"],\"isRobC\":[\"Nouveau\"],\"jbernk\":[\"Chargement du profil…\"],\"joEmfT\":[\"Serveur inaccessible\"],\"jrZTZl\":[\"Pas encore de recos. Soyez le premier !\"],\"kLttbL\":[\"Inscription échouée\"],\"klOeIX\":[\"Impossible de changer le mot de passe\"],\"lUDifl\":[\"Créées (\",[\"0\"],[\"1\"],\")\"],\"lUanmi\":[\"Vous serez notifié lorsque quelqu'un suit vos collections, vote pour vos recos ou publie du nouveau contenu.\"],\"lY5h1V\":[[\"0\",\"plural\",{\"one\":[\"#\",\" reco\"],\"other\":[\"#\",\" recos\"]}]],\"lcfvr_\":[\"Supprimer ce commentaire ?\"],\"lpIMne\":[\"Les mots de passe ne correspondent pas\"],\"mt6O6E\":[\"C'est un mirage.\"],\"nbm5sI\":[\"Aucune reco ne correspond à « \",[\"q\"],\" ».\"],\"nrjqON\":[\"Vérification de l'invitation…\"],\"nwtY4N\":[\"Une erreur est survenue\"],\"ogtYkT\":[\"Mot de passe mis à jour\"],\"pCpd9p\":[\"<0>\",[\"0\"],\" vous a mentionné dans <1>\",[\"where\"],\"\"],\"pSheLH\":[\"Aucun invité pour le moment.\"],\"pvnfJD\":[\"Sombre\"],\"qIMfNQ\":[\"Supprimer la collection\"],\"qbDAcy\":[\"Recommander\"],\"qgx_78\":[\"Suivez des collections publiques pour voir leurs recos ici.\"],\"qvFa8r\":[\"public\"],\"r15pMp\":[\" Reco\"],\"rCbqPX\":[\"Ce lien d'invitation est manquant, expiré ou déjà utilisé.\"],\"rg9pXu\":[\"Recherche échouée\"],\"rtpJqV\":[\"Recos (\",[\"0\"],[\"1\"],\")\"],\"sQia9P\":[\"Se connecter\"],\"sTiqbm\":[\"invité par\"],\"sdP5Aa\":[\"[supprimé]\"],\"shHs8T\":[\"Saisissez une recherche.\"],\"smeBfS\":[\"Invitation invalide\"],\"tfDRzk\":[\"Enregistrer\"],\"tvmuQ0\":[\"Thème de couleur\"],\"u1lDX2\":[\"Récupération de l'aperçu…\"],\"uD0qXQ\":[\"Déposez un fichier ici\"],\"uMGUnV\":[\"Pas encore de collections.\"],\"ub1EEL\":[\"modifié \",[\"0\"]],\"vJBF1r\":[\"Publication…\"],\"vLhLLO\":[\"Notifications (\",[\"unreadNotificationCount\"],\" non lues)\"],\"vuosjb\":[\"Menu utilisateur\"],\"wXO4Tg\":[\"il y a \",[\"hrs\"],\"h\"],\"wbXKOv\":[\"Fichier trop volumineux (max 50 Mo).\"],\"wixIgH\":[\"Vous avez déjà un compte ? <0>Se connecter\"],\"xEWkgZ\":[\"← Retour à toutes les recos\"],\"xOTzt5\":[\"à l'instant\"],\"xPHtx0\":[\"Lancer la recherche\"],\"xVuNgt\":[\"+ Nouvelle collection\"],\"xc9O_u\":[\"Supprimer la reco\"],\"xy6Wtk\":[\" Nouvelle reco\"],\"y6sq5j\":[\"Abonné\"],\"yA_6BX\":[\"Tout voir →\"],\"yBBtRm\":[\"Suivez des utilisateurs pour voir leurs recos ici.\"],\"yQ2kGp\":[\"Charger plus\"],\"y_0uwd\":[\"Hier\"],\"yz7wBu\":[\"Fermer\"],\"z1uNN0\":[\"Aucun emoji trouvé.\"],\"zVuxvN\":[\"Actualisation…\"],\"zwBp5t\":[\"Privé\"]}")}; \ No newline at end of file diff --git a/src/locales/fr.po b/src/locales/fr.po index 9f32ac3..38ee7c9 100644 --- a/src/locales/fr.po +++ b/src/locales/fr.po @@ -13,12 +13,25 @@ msgstr "" "Last-Translator: \n" "Language-Team: \n" +#: src/components/AppHeader.tsx:71 +msgid " Dump" +msgstr " Reco" + +#: src/pages/UserDumps.tsx:114 +#: src/pages/UserPublicProfile.tsx:1332 +msgid " New dump" +msgstr " Nouvelle reco" + +#: src/components/NewPlaylistForm.tsx:30 +msgid " New playlist" +msgstr " Nouvelle collection" + #: src/components/CommentThread.tsx:176 msgid "[deleted]" msgstr "[supprimé]" #. placeholder {0}: dump.commentCount -#: src/components/DumpCard.tsx:82 +#: src/components/DumpCard.tsx:95 msgid "{0, plural, one {# comment} other {# comments}}" msgstr "{0, plural, one {# commentaire} other {# commentaires}}" @@ -59,7 +72,7 @@ msgid "← Back" msgstr "← Retour" #: src/pages/Dump.tsx:218 -#: src/pages/Dump.tsx:321 +#: src/pages/Dump.tsx:325 #: src/pages/DumpEdit.tsx:170 msgid "← Back to all dumps" msgstr "← Retour à toutes les recos" @@ -74,16 +87,15 @@ msgstr "← Retour au profil" msgid "+ Invite someone" msgstr "+ Inviter quelqu'un" -#: src/components/AppHeader.tsx:70 +#: src/components/AppHeader.tsx:71 msgid "+ New" msgstr "+ Nouveau" #: src/pages/UserDumps.tsx:114 -#: src/pages/UserPublicProfile.tsx:1330 +#: src/pages/UserPublicProfile.tsx:1332 msgid "+ New dump" msgstr "+ Nouvelle reco" -#: src/components/NewPlaylistForm.tsx:30 #: src/components/PlaylistMembershipPanel.tsx:80 msgid "+ New playlist" msgstr "+ Nouvelle collection" @@ -94,53 +106,53 @@ msgstr "+ Collection" #. placeholder {0}: d.commenterUsername #. placeholder {1}: d.dumpTitle -#: src/pages/Notifications.tsx:171 +#: src/pages/Notifications.tsx:179 msgid "<0>{0} commented on <1>{1}" -msgstr "" +msgstr "<0>{0} a commenté sur <1>{1}" #. placeholder {0}: d.followerUsername #. placeholder {1}: d.playlistTitle -#: src/pages/Notifications.tsx:131 +#: src/pages/Notifications.tsx:139 msgid "<0>{0} followed your playlist <1>{1}" msgstr "<0>{0} a suivi votre collection <1>{1}" #. placeholder {0}: d.mentionerUsername -#: src/pages/Notifications.tsx:183 +#: src/pages/Notifications.tsx:191 msgid "<0>{0} mentioned you in <1>{where}" msgstr "<0>{0} vous a mentionné dans <1>{where}" #. placeholder {0}: d.dumperUsername #. placeholder {1}: d.dumpTitle -#: src/pages/Notifications.tsx:141 +#: src/pages/Notifications.tsx:149 msgid "<0>{0} posted <1>{1}" msgstr "<0>{0} a publié <1>{1}" #. placeholder {0}: d.followerUsername -#: src/pages/Notifications.tsx:122 +#: src/pages/Notifications.tsx:130 msgid "<0>{0} started following you" msgstr "<0>{0} a commencé à vous suivre" #. placeholder {0}: d.voterUsername #. placeholder {1}: d.dumpTitle -#: src/pages/Notifications.tsx:161 +#: src/pages/Notifications.tsx:169 msgid "<0>{0} upvoted <1>{1}" msgstr "<0>{0} a voté pour <1>{1}" #. placeholder {0}: d.dumpTitle #. placeholder {1}: d.playlistTitle -#: src/pages/Notifications.tsx:151 +#: src/pages/Notifications.tsx:159 msgid "<0>{0} was added to <1>{1}" msgstr "<0>{0} a été ajouté à <1>{1}" -#: src/pages/Notifications.tsx:181 +#: src/pages/Notifications.tsx:189 msgid "a comment" msgstr "un commentaire" -#: src/pages/Notifications.tsx:181 +#: src/pages/Notifications.tsx:189 msgid "a post" msgstr "une publication" -#: src/pages/UserPublicProfile.tsx:1215 +#: src/pages/UserPublicProfile.tsx:1217 msgid "Account" msgstr "Compte" @@ -173,7 +185,7 @@ msgstr "Toutes les {0, plural, one {# reco votée} other {# recos votées}} char msgid "Already have an account? <0>Log in" msgstr "Vous avez déjà un compte ? <0>Se connecter" -#: src/pages/UserPublicProfile.tsx:1234 +#: src/pages/UserPublicProfile.tsx:1236 msgid "Appearance" msgstr "Apparence" @@ -183,7 +195,7 @@ msgstr "Apparence" msgid "At least {0} characters" msgstr "Au moins {0} caractères" -#: src/pages/UserPublicProfile.tsx:1268 +#: src/pages/UserPublicProfile.tsx:1270 msgid "Auto" msgstr "Auto" @@ -224,7 +236,7 @@ msgstr "Changer l'avatar" msgid "Change password" msgstr "Changer le mot de passe" -#: src/pages/UserPublicProfile.tsx:1227 +#: src/pages/UserPublicProfile.tsx:1229 msgid "Change password…" msgstr "Changer le mot de passe…" @@ -237,7 +249,7 @@ msgstr "Vérification de l'invitation…" msgid "Close" msgstr "Fermer" -#: src/pages/UserPublicProfile.tsx:1260 +#: src/pages/UserPublicProfile.tsx:1262 msgid "Color scheme" msgstr "Thème de couleur" @@ -291,7 +303,7 @@ msgstr "Création…" msgid "Current password" msgstr "Mot de passe actuel" -#: src/pages/UserPublicProfile.tsx:1282 +#: src/pages/UserPublicProfile.tsx:1284 msgid "Dark" msgstr "Sombre" @@ -353,22 +365,22 @@ msgstr "Recommandé !" #: src/pages/Search.tsx:172 #: src/pages/UserDumps.tsx:107 -#: src/pages/UserPublicProfile.tsx:967 +#: src/pages/UserPublicProfile.tsx:968 msgid "Dumps" msgstr "Recos" #. placeholder {0}: dumps.items.length #. placeholder {1}: dumps.hasMore ? "+" : "" -#: src/pages/UserPublicProfile.tsx:1004 +#: src/pages/UserPublicProfile.tsx:1006 msgid "Dumps ({0}{1})" msgstr "Recos ({0}{1})" -#: src/pages/Notifications.tsx:360 +#: src/pages/Notifications.tsx:368 msgid "Earlier" msgstr "Plus tôt" #: src/components/CommentThread.tsx:310 -#: src/pages/Dump.tsx:317 +#: src/pages/Dump.tsx:321 #: src/pages/PlaylistDetail.tsx:706 msgid "Edit" msgstr "Modifier" @@ -377,7 +389,7 @@ msgstr "Modifier" #. placeholder {0}: relativeTime(dump.updatedAt) #. placeholder {0}: relativeTime(playlist.updatedAt) #: src/components/CommentThread.tsx:237 -#: src/pages/Dump.tsx:278 +#: src/pages/Dump.tsx:281 #: src/pages/PlaylistDetail.tsx:779 msgid "edited {0}" msgstr "modifié {0}" @@ -386,7 +398,7 @@ msgstr "modifié {0}" #. placeholder {0}: dump.updatedAt.toLocaleString() #. placeholder {0}: playlist.updatedAt.toLocaleString() #: src/components/CommentThread.tsx:235 -#: src/pages/Dump.tsx:276 +#: src/pages/Dump.tsx:279 #: src/pages/PlaylistDetail.tsx:776 msgid "Edited {0}" msgstr "Modifié le {0}" @@ -422,10 +434,10 @@ msgstr "Impossible de générer une invitation" #: src/pages/index/HotFeed.tsx:36 #: src/pages/index/JournalFeed.tsx:48 #: src/pages/index/NewFeed.tsx:36 -#: src/pages/Notifications.tsx:334 -#: src/pages/UserPublicProfile.tsx:1106 -#: src/pages/UserPublicProfile.tsx:1148 -#: src/pages/UserPublicProfile.tsx:1193 +#: src/pages/Notifications.tsx:342 +#: src/pages/UserPublicProfile.tsx:1108 +#: src/pages/UserPublicProfile.tsx:1150 +#: src/pages/UserPublicProfile.tsx:1195 msgid "Failed to load" msgstr "Chargement échoué" @@ -495,8 +507,8 @@ msgstr "Suivez des collections publiques pour voir leurs recos ici." msgid "Follow some users to see their dumps here." msgstr "Suivez des utilisateurs pour voir leurs recos ici." -#: src/components/FeedTabBar.tsx:47 -#: src/pages/UserPublicProfile.tsx:981 +#: src/components/FeedTabBar.tsx:48 +#: src/pages/UserPublicProfile.tsx:982 msgid "Followed" msgstr "Suivi" @@ -506,13 +518,13 @@ msgstr "Suivi" msgid "Followed ({0}{1})" msgstr "Suivies ({0}{1})" -#: src/pages/UserPublicProfile.tsx:1137 +#: src/pages/UserPublicProfile.tsx:1139 msgid "Followed playlists" msgstr "Collections suivies" #: src/components/FollowButton.tsx:37 #: src/components/FollowButton.tsx:64 -#: src/pages/UserPublicProfile.tsx:1095 +#: src/pages/UserPublicProfile.tsx:1097 msgid "Following" msgstr "Abonné" @@ -532,7 +544,7 @@ msgstr "De collections" msgid "Go to login" msgstr "Aller à la connexion" -#: src/components/FeedTabBar.tsx:25 +#: src/components/FeedTabBar.tsx:26 msgid "Hot" msgstr "Tendances" @@ -552,12 +564,12 @@ msgstr "Lien invalide" msgid "invited by" msgstr "invité par" -#: src/pages/UserPublicProfile.tsx:988 -#: src/pages/UserPublicProfile.tsx:1182 +#: src/pages/UserPublicProfile.tsx:989 +#: src/pages/UserPublicProfile.tsx:1184 msgid "Invitees" msgstr "Invités" -#: src/components/FeedTabBar.tsx:39 +#: src/components/FeedTabBar.tsx:40 msgid "Journal" msgstr "Journal" @@ -565,7 +577,7 @@ msgstr "Journal" msgid "just now" msgstr "à l'instant" -#: src/pages/UserPublicProfile.tsx:1275 +#: src/pages/UserPublicProfile.tsx:1277 msgid "Light" msgstr "Clair" @@ -573,11 +585,11 @@ msgstr "Clair" msgid "Live updates are temporarily disconnected. Trying to reconnect…" msgstr "Les mises à jour en direct sont temporairement interrompues. Tentative de reconnexion…" -#: src/components/AppHeader.tsx:87 +#: src/components/AppHeader.tsx:88 msgid "Live updates unavailable." msgstr "Mises à jour en direct indisponibles." -#: src/pages/Notifications.tsx:407 +#: src/pages/Notifications.tsx:415 msgid "Load more" msgstr "Charger plus" @@ -612,18 +624,18 @@ msgstr "Chargement du profil…" #: src/pages/index/HotFeed.tsx:32 #: src/pages/index/JournalFeed.tsx:44 #: src/pages/index/NewFeed.tsx:32 -#: src/pages/Notifications.tsx:330 -#: src/pages/Notifications.tsx:406 +#: src/pages/Notifications.tsx:338 +#: src/pages/Notifications.tsx:414 #: src/pages/UserDumps.tsx:51 #: src/pages/UserPlaylists.tsx:342 -#: src/pages/UserPublicProfile.tsx:1100 -#: src/pages/UserPublicProfile.tsx:1142 -#: src/pages/UserPublicProfile.tsx:1187 +#: src/pages/UserPublicProfile.tsx:1102 +#: src/pages/UserPublicProfile.tsx:1144 +#: src/pages/UserPublicProfile.tsx:1189 #: src/pages/UserUpvoted.tsx:123 msgid "Loading…" msgstr "Chargement…" -#: src/components/AppHeader.tsx:77 +#: src/components/AppHeader.tsx:78 #: src/pages/UserLogin.tsx:87 #: src/pages/UserLogin.tsx:117 msgid "Log in" @@ -646,11 +658,11 @@ msgstr "Connexion échouée" msgid "Max 50 MB" msgstr "Max 50 Mo" -#: src/pages/Notifications.tsx:323 +#: src/pages/Notifications.tsx:331 msgid "new" msgstr "nouveau" -#: src/components/FeedTabBar.tsx:32 +#: src/components/FeedTabBar.tsx:33 msgid "New" msgstr "Nouveau" @@ -686,11 +698,11 @@ msgid "No emoji found." msgstr "Aucun emoji trouvé." #: src/pages/UserPlaylists.tsx:439 -#: src/pages/UserPublicProfile.tsx:1155 +#: src/pages/UserPublicProfile.tsx:1157 msgid "No followed playlists yet." msgstr "Pas encore de collections suivies." -#: src/pages/UserPublicProfile.tsx:1200 +#: src/pages/UserPublicProfile.tsx:1202 msgid "No invitees yet." msgstr "Aucun invité pour le moment." @@ -700,7 +712,7 @@ msgstr "Aucune collection ne correspond à « {q} »." #: src/components/PlaylistMembershipPanel.tsx:34 #: src/pages/UserPlaylists.tsx:397 -#: src/pages/UserPublicProfile.tsx:1066 +#: src/pages/UserPublicProfile.tsx:1068 msgid "No playlists yet." msgstr "Pas encore de collections." @@ -708,20 +720,20 @@ msgstr "Pas encore de collections." msgid "No users match \"{q}\"." msgstr "Aucun utilisateur ne correspond à « {q} »." -#: src/pages/UserPublicProfile.tsx:1113 +#: src/pages/UserPublicProfile.tsx:1115 msgid "Not following anyone yet." msgstr "Aucun abonnement pour le moment." -#: src/pages/Notifications.tsx:341 +#: src/pages/Notifications.tsx:349 #: src/pages/UserDumps.tsx:123 -#: src/pages/UserPublicProfile.tsx:1340 -#: src/pages/UserPublicProfile.tsx:1463 +#: src/pages/UserPublicProfile.tsx:1342 +#: src/pages/UserPublicProfile.tsx:1465 #: src/pages/UserUpvoted.tsx:195 msgid "Nothing here yet." msgstr "Rien ici pour l'instant." #: src/components/NotificationBell.tsx:42 -#: src/pages/Notifications.tsx:319 +#: src/pages/Notifications.tsx:327 msgid "Notifications" msgstr "Notifications" @@ -738,7 +750,7 @@ msgid "or <0>browse files" msgstr "ou <0>parcourir les fichiers" #: src/pages/UserLogin.tsx:106 -#: src/pages/UserPublicProfile.tsx:1220 +#: src/pages/UserPublicProfile.tsx:1222 msgid "Password" msgstr "Mot de passe" @@ -760,17 +772,17 @@ msgstr "Mot de passe mis à jour" msgid "Passwords do not match" msgstr "Les mots de passe ne correspondent pas" -#: src/components/AppHeader.tsx:53 +#: src/components/AppHeader.tsx:54 #: src/components/UserMenu.tsx:62 #: src/pages/Search.tsx:175 #: src/pages/UserPlaylists.tsx:368 -#: src/pages/UserPublicProfile.tsx:974 +#: src/pages/UserPublicProfile.tsx:975 msgid "Playlists" msgstr "Collections" #. placeholder {0}: playlists.items.length #. placeholder {1}: playlists.hasMore ? "+" : "" -#: src/pages/UserPublicProfile.tsx:1035 +#: src/pages/UserPublicProfile.tsx:1037 msgid "Playlists ({0}{1})" msgstr "Collections ({0}{1})" @@ -791,10 +803,10 @@ msgstr "Publier la réponse" msgid "Posting…" msgstr "Publication…" -#: src/components/DumpCard.tsx:91 +#: src/components/DumpCard.tsx:104 #: src/components/PlaylistCard.tsx:73 #: src/components/PlaylistMembershipPanel.tsx:55 -#: src/pages/Dump.tsx:284 +#: src/pages/Dump.tsx:287 #: src/pages/PlaylistDetail.tsx:759 msgid "private" msgstr "privé" @@ -909,7 +921,7 @@ msgstr "Envoyer le lien de réinitialisation" msgid "Sending…" msgstr "Envoi…" -#: src/components/AppHeader.tsx:68 +#: src/components/AppHeader.tsx:69 msgid "Server unreachable" msgstr "Serveur inaccessible" @@ -918,7 +930,7 @@ msgstr "Serveur inaccessible" msgid "Set new password" msgstr "Définir un nouveau mot de passe" -#: src/pages/UserPublicProfile.tsx:996 +#: src/pages/UserPublicProfile.tsx:997 msgid "Settings" msgstr "Paramètres" @@ -926,7 +938,7 @@ msgstr "Paramètres" msgid "Something went wrong" msgstr "Une erreur est survenue" -#: src/pages/UserPublicProfile.tsx:1239 +#: src/pages/UserPublicProfile.tsx:1241 msgid "Style" msgstr "Style" @@ -934,15 +946,6 @@ msgstr "Style" msgid "Submit search" msgstr "Lancer la recherche" -#: src/pages/UserPublicProfile.tsx:899 -msgid "Tell people about yourself…" -msgstr "Parlez de vous…" - -#: src/components/DumpCreateModal.tsx:383 -#: src/pages/DumpEdit.tsx:266 -msgid "Tell the community what makes this worth their time..." -msgstr "Dites à la communauté pourquoi ça vaut le coup…" - #: src/pages/UserRegister.tsx:107 msgid "This invite link is missing, expired, or already used." msgstr "Ce lien d'invitation est manquant, expiré ou déjà utilisé." @@ -959,7 +962,7 @@ msgstr "Ce lien de réinitialisation est absent ou malformé." msgid "Title" msgstr "Titre" -#: src/pages/Notifications.tsx:357 +#: src/pages/Notifications.tsx:365 msgid "Today" msgstr "Aujourd'hui" @@ -994,7 +997,7 @@ msgstr "Voté" #. placeholder {0}: votes.items.length #. placeholder {1}: votes.hasMore ? "+" : "" -#: src/pages/UserPublicProfile.tsx:1015 +#: src/pages/UserPublicProfile.tsx:1017 msgid "Upvoted ({0}{1})" msgstr "Votés ({0}{1})" @@ -1020,11 +1023,11 @@ msgstr "Nom d'utilisateur" msgid "Users" msgstr "Utilisateurs" -#: src/pages/UserPublicProfile.tsx:1085 -#: src/pages/UserPublicProfile.tsx:1128 -#: src/pages/UserPublicProfile.tsx:1170 -#: src/pages/UserPublicProfile.tsx:1361 -#: src/pages/UserPublicProfile.tsx:1493 +#: src/pages/UserPublicProfile.tsx:1087 +#: src/pages/UserPublicProfile.tsx:1130 +#: src/pages/UserPublicProfile.tsx:1172 +#: src/pages/UserPublicProfile.tsx:1363 +#: src/pages/UserPublicProfile.tsx:1495 msgid "View all →" msgstr "Tout voir →" @@ -1032,20 +1035,29 @@ msgstr "Tout voir →" msgid "View dump →" msgstr "Voir la reco →" +#: src/components/DumpCreateModal.tsx:383 +#: src/pages/DumpEdit.tsx:266 +msgid "What makes it worth it?" +msgstr "Pourquoi on en voudrait ?" + +#: src/pages/UserPublicProfile.tsx:899 +msgid "Who am I?" +msgstr "Qui suis-je ?" + #: src/components/DumpCreateModal.tsx:376 #: src/pages/DumpEdit.tsx:260 -msgid "Why are you dumping this?" -msgstr "Pourquoi recommandez-vous ça ?" +msgid "Why?" +msgstr "Pourquoi ?" #: src/components/CommentThread.tsx:342 msgid "Write a reply…" msgstr "Écrire une réponse…" -#: src/pages/Notifications.tsx:359 +#: src/pages/Notifications.tsx:367 msgid "Yesterday" msgstr "Hier" -#: src/pages/Notifications.tsx:344 +#: src/pages/Notifications.tsx:352 msgid "You'll be notified when someone follows your playlists, upvotes your dumps, or posts new content." msgstr "Vous serez notifié lorsque quelqu'un suit vos collections, vote pour vos recos ou publie du nouveau contenu." diff --git a/src/pages/Dump.tsx b/src/pages/Dump.tsx index 0959f49..4c34a93 100644 --- a/src/pages/Dump.tsx +++ b/src/pages/Dump.tsx @@ -232,24 +232,27 @@ export function Dump() { {/* Post header */}
- +
+ + {user && ( + + )} +
+

{dump.title}

- {user && ( - - )}
)}
+
{dump.comment && ( diff --git a/src/pages/DumpEdit.tsx b/src/pages/DumpEdit.tsx index fa5e6b0..06ff252 100644 --- a/src/pages/DumpEdit.tsx +++ b/src/pages/DumpEdit.tsx @@ -257,13 +257,13 @@ export function DumpEdit() {
diff --git a/src/pages/Search.tsx b/src/pages/Search.tsx index 072b73a..afc67ac 100644 --- a/src/pages/Search.tsx +++ b/src/pages/Search.tsx @@ -69,7 +69,7 @@ export function Search() { abortRef.current = controller; try { - const url = new URL(SEARCH_URL); + const url = new URL(SEARCH_URL, location.origin); url.searchParams.set("q", query); url.searchParams.set("page", String(page)); url.searchParams.set("limit", String(DEFAULT_PAGE_SIZE)); diff --git a/src/pages/UserDumps.tsx b/src/pages/UserDumps.tsx index 388c07f..0ce5589 100644 --- a/src/pages/UserDumps.tsx +++ b/src/pages/UserDumps.tsx @@ -111,7 +111,7 @@ export function UserDumps() { className="new-playlist-toggle" onClick={() => setCreateModalOpen(true)} > - + New dump + + New dump )} /> diff --git a/src/pages/UserPublicProfile.tsx b/src/pages/UserPublicProfile.tsx index e1abca7..c8ca7d1 100644 --- a/src/pages/UserPublicProfile.tsx +++ b/src/pages/UserPublicProfile.tsx @@ -896,7 +896,7 @@ export function UserPublicProfile() { value={descDraft} onChange={setDescDraft} onSubmit={handleDescSave} - placeholder={t`Tell people about yourself…`} + placeholder={t`Who am I?`} autoResize maxLength={VALIDATION.USER_DESCRIPTION_MAX} /> @@ -958,6 +958,7 @@ export function UserPublicProfile() {
)} +
+
{tab === "dumps" && (
@@ -1327,7 +1329,7 @@ function DumpList( className="new-playlist-toggle" onClick={() => setCreateModalOpen(true)} > - + New dump + + New dump )}
diff --git a/src/themes/brutalist.css b/src/themes/brutalist.css index f07d139..b54e066 100644 --- a/src/themes/brutalist.css +++ b/src/themes/brutalist.css @@ -173,11 +173,18 @@ [data-style="brutalist"] .btn--ghost, [data-style="brutalist"] .audio-player-btn, [data-style="brutalist"] .audio-player-vol-btn, -[data-style="brutalist"] .rich-content-thumbnail-btn { +[data-style="brutalist"] .rich-content-thumbnail-btn, +[data-style="brutalist"] .user-menu-trigger { border: none; box-shadow: none; } +[data-style="brutalist"] .user-menu-trigger:hover:not(:disabled), +[data-style="brutalist"] .user-menu-trigger:active { + transform: none; + box-shadow: none; +} + [data-style="brutalist"] .modal-close-btn:hover, [data-style="brutalist"] .playlist-remove-btn:hover, [data-style="brutalist"] .playlist-card-delete-btn:hover,