diff --git a/api/sql/init.ts b/api/db/init.ts similarity index 85% rename from api/sql/init.ts rename to api/db/init.ts index 3d5caad..ff3f7e4 100644 --- a/api/sql/init.ts +++ b/api/db/init.ts @@ -6,7 +6,7 @@ try { console.log("Database already exists, skipping initialization."); } catch { console.log("Initializing database from schema..."); - const schema = Deno.readTextFileSync("api/sql/schema.sql"); + const schema = Deno.readTextFileSync("api/db/schema.sql"); const db = new DatabaseSync(DB_PATH); db.exec(schema); db.close(); diff --git a/api/sql/migrate.ts b/api/db/migrate.ts similarity index 100% rename from api/sql/migrate.ts rename to api/db/migrate.ts diff --git a/api/sql/migrations/0001_comment_likes.ts b/api/db/migrations/0001_comment_likes.ts similarity index 100% rename from api/sql/migrations/0001_comment_likes.ts rename to api/db/migrations/0001_comment_likes.ts diff --git a/api/sql/schema.sql b/api/db/schema.sql similarity index 100% rename from api/sql/schema.sql rename to api/db/schema.sql diff --git a/api/model/db.ts b/api/model/db.ts index c4426aa..1a205f8 100644 --- a/api/model/db.ts +++ b/api/model/db.ts @@ -15,7 +15,7 @@ import { ORPHANED_ATTACHMENTS_RETENTION_HOURS, UNUSED_INVITES_RETENTION_DAYS, } from "../config.ts"; -import { runMigrations } from "../sql/migrate.ts"; +import { runMigrations } from "../db/migrate.ts"; export const db = new DatabaseSync(DB_PATH); db.exec("PRAGMA foreign_keys = ON;"); diff --git a/deno.json b/deno.json index d6c943b..5b4bf28 100644 --- a/deno.json +++ b/deno.json @@ -6,7 +6,7 @@ "serve": "deno task build && deno task server:start", "i18n:extract": "deno run -A scripts/lingui-extract.ts", "i18n:compile": "deno run -A scripts/lingui-compile.ts", - "start": "deno run -A api/sql/init.ts && deno run -A api/main.ts" + "start": "deno run -A api/db/init.ts && deno run -A api/main.ts" }, "nodeModulesDir": "auto", "compilerOptions": { diff --git a/src/components/LikeButton.tsx b/src/components/LikeButton.tsx index aa8e828..d947370 100644 --- a/src/components/LikeButton.tsx +++ b/src/components/LikeButton.tsx @@ -1,4 +1,5 @@ import { useRef, useState } from "react"; +import { t } from "@lingui/core/macro"; import { API_URL } from "../config/api.ts"; import { UserListPopover } from "./UserListPopover.tsx"; @@ -26,8 +27,8 @@ export function LikeButton( }`} onClick={() => liked ? onUnlike(commentId) : onLike(commentId)} disabled={disabled} - aria-label={liked ? "Remove like" : "Like"} - title={disabled ? "Log in to like" : undefined} + aria-label={liked ? t`Remove like` : t`Like`} + title={disabled ? t`Log in to like` : undefined} > ♥{" "} {count > 0 diff --git a/src/components/VoteButton.tsx b/src/components/VoteButton.tsx index 30e9d12..6645ce9 100644 --- a/src/components/VoteButton.tsx +++ b/src/components/VoteButton.tsx @@ -1,4 +1,5 @@ import { useRef, useState } from "react"; +import { t } from "@lingui/core/macro"; import { API_URL } from "../config/api.ts"; import { UserListPopover } from "./UserListPopover.tsx"; @@ -24,8 +25,8 @@ export function VoteButton( className={`vote-btn${voted ? " vote-btn--active" : ""}`} onClick={() => voted ? onRemove(dumpId) : onCast(dumpId)} disabled={disabled} - aria-label={voted ? "Remove vote" : "Upvote"} - title={disabled ? "Log in to vote" : undefined} + aria-label={voted ? t`Remove vote` : t`Upvote`} + title={disabled ? t`Log in to vote` : undefined} > ▲{" "} {count > 0 diff --git a/src/locales/en.js b/src/locales/en.js index ca731a7..386ece2 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"],"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…"],"5TviPn":["Cancel search"],"5cC8f2":["Edited ",["0"]],"5oD9f_":["Earlier"],"6Qly-0":["a comment"],"6gRgw8":["Retry"],"7PHCIN":["Cancel removal"],"7d1a0d":["Public"],"7sNhEz":["Username"],"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…"],"StovX6":["This page does not exist."],"Sxm8rQ":["Users"],"T9bjWt":["<0>",["0"]," was added to <1>",["1"],""],"TM1ZbA":["Playlists (",["0"],["1"],")"],"TN382O":["Invalid link"],"Tv9vbB":["Follow playlist"],"Tz0i8g":["Settings"],"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"],"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?"],"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"],"iWpEwy":["Go home"],"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"],"qvz_Pp":["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"],"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…\"],\"5TviPn\":[\"Cancel search\"],\"5cC8f2\":[\"Edited \",[\"0\"]],\"5oD9f_\":[\"Earlier\"],\"6Qly-0\":[\"a comment\"],\"6gRgw8\":[\"Retry\"],\"7PHCIN\":[\"Cancel removal\"],\"7d1a0d\":[\"Public\"],\"7sNhEz\":[\"Username\"],\"8ZsakT\":[\"Password\"],\"8pxhI8\":[\"Please select a file.\"],\"9BruTc\":[\"Why?\"],\"9l4qcT\":[\"Drop a replacement here\"],\"9uI_rE\":[\"Undo\"],\"9xDZu_\":[\"Could not load.\"],\"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\"],\"H4o4sk\":[\"No one yet.\"],\"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\"],\"Rrp6-J\":[\"Log in to like\"],\"SBTElJ\":[\"Searching…\"],\"Sad2tK\":[\"Sending…\"],\"StovX6\":[\"This page does not exist.\"],\"Sxm8rQ\":[\"Users\"],\"T9bjWt\":[\"<0>\",[\"0\"],\" was added to <1>\",[\"1\"],\"\"],\"TM1ZbA\":[\"Playlists (\",[\"0\"],[\"1\"],\")\"],\"TN382O\":[\"Invalid link\"],\"Tv9vbB\":[\"Follow playlist\"],\"Tz0i8g\":[\"Settings\"],\"UNMVei\":[\"Forgot password?\"],\"UOZith\":[\"Failed to post\"],\"URAieT\":[\"Log in to vote\"],\"UTiUFs\":[\"Fetching…\"],\"VCoEm-\":[\"Back to login\"],\"V_e7nf\":[\"Set new password\"],\"VnNJbN\":[\"From playlists\"],\"VyTYmS\":[\"Change avatar\"],\"W9FRBT\":[\"Like\"],\"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\"],\"Ye9RMF\":[\"<0>\",[\"0\"],\" liked your comment on <1>\",[\"1\"],\"\"],\"YpkCca\":[\"No followed playlists yet.\"],\"ZBdbv9\":[\"Edit title\"],\"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…\"],\"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?\"],\"fC6mXb\":[\"Upvote\"],\"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\"],\"iWpEwy\":[\"Go home\"],\"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\"],\"qvz_Pp\":[\"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)\"],\"vQMkHu\":[\"Remove vote\"],\"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\"],\"y6sq5j\":[\"Following\"],\"yA_6BX\":[\"View all →\"],\"yBBtRm\":[\"Follow some users to see their dumps here.\"],\"yQ2kGp\":[\"Load more\"],\"y_0uwd\":[\"Yesterday\"],\"yz7wBu\":[\"Close\"],\"z0ROB3\":[\"Remove like\"],\"z1uNN0\":[\"No emoji found.\"],\"zVuxvN\":[\"Refreshing…\"],\"zwBp5t\":[\"Private\"]}")}; \ No newline at end of file diff --git a/src/locales/en.po b/src/locales/en.po index 7a83401..262460f 100644 --- a/src/locales/en.po +++ b/src/locales/en.po @@ -13,13 +13,13 @@ msgstr "" "Language-Team: \n" "Plural-Forms: \n" -#: src/components/CommentThread.tsx:176 +#: src/components/CommentThread.tsx:181 msgid "[deleted]" msgstr "[deleted]" #. placeholder {0}: dump.commentCount #: src/components/DumpCard.tsx:95 -#: src/components/JournalCard.tsx:78 +#: src/components/JournalCard.tsx:96 msgid "{0, plural, one {# comment} other {# comments}}" msgstr "{0, plural, one {# comment} other {# comments}}" @@ -50,7 +50,7 @@ msgstr "{label} ({count})" msgid "{mins}m ago" msgstr "{mins}m ago" -#: src/components/CommentThread.tsx:459 +#: src/components/CommentThread.tsx:472 msgid "{visibleCount, plural, one {# comment} other {# comments}}" msgstr "{visibleCount, plural, one {# comment} other {# comments}}" @@ -59,9 +59,9 @@ msgstr "{visibleCount, plural, one {# comment} other {# comments}}" msgid "← Back" msgstr "← Back" -#: src/pages/Dump.tsx:218 -#: src/pages/Dump.tsx:325 -#: src/pages/DumpEdit.tsx:170 +#: src/pages/Dump.tsx:224 +#: src/pages/Dump.tsx:427 +#: src/pages/DumpEdit.tsx:177 msgid "← Back to all dumps" msgstr "← Back to all dumps" @@ -84,72 +84,78 @@ msgstr "+ New dump" msgid "+ New playlist" msgstr "+ New playlist" -#: src/pages/Dump.tsx:250 +#: src/pages/Dump.tsx:291 msgid "+ Playlist" msgstr "+ Playlist" #. placeholder {0}: d.commenterUsername #. placeholder {1}: d.dumpTitle -#: src/pages/Notifications.tsx:179 +#: src/pages/Notifications.tsx:194 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:139 +#: src/pages/Notifications.tsx:154 msgid "<0>{0} followed your playlist <1>{1}" msgstr "<0>{0} followed your playlist <1>{1}" +#. placeholder {0}: d.likerUsername +#. placeholder {1}: d.dumpTitle +#: src/pages/Notifications.tsx:204 +msgid "<0>{0} liked your comment on <1>{1}" +msgstr "<0>{0} liked your comment on <1>{1}" + #. placeholder {0}: d.mentionerUsername -#: src/pages/Notifications.tsx:191 +#: src/pages/Notifications.tsx:216 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:149 +#: src/pages/Notifications.tsx:164 msgid "<0>{0} posted <1>{1}" msgstr "<0>{0} posted <1>{1}" #. placeholder {0}: d.followerUsername -#: src/pages/Notifications.tsx:130 +#: src/pages/Notifications.tsx:145 msgid "<0>{0} started following you" msgstr "<0>{0} started following you" #. placeholder {0}: d.voterUsername #. placeholder {1}: d.dumpTitle -#: src/pages/Notifications.tsx:169 +#: src/pages/Notifications.tsx:184 msgid "<0>{0} upvoted <1>{1}" msgstr "<0>{0} upvoted <1>{1}" #. placeholder {0}: d.dumpTitle #. placeholder {1}: d.playlistTitle -#: src/pages/Notifications.tsx:159 +#: src/pages/Notifications.tsx:174 msgid "<0>{0} was added to <1>{1}" msgstr "<0>{0} was added to <1>{1}" -#: src/pages/Notifications.tsx:189 +#: src/pages/Notifications.tsx:214 msgid "a comment" msgstr "a comment" -#: src/pages/Notifications.tsx:189 +#: src/pages/Notifications.tsx:214 msgid "a post" msgstr "a post" -#: src/pages/UserPublicProfile.tsx:1193 +#: src/pages/UserPublicProfile.tsx:1196 msgid "Account" msgstr "Account" -#: src/components/CommentThread.tsx:479 +#: src/components/CommentThread.tsx:492 msgid "Add a comment…" msgstr "Add a comment…" -#: src/pages/UserPublicProfile.tsx:860 +#: src/pages/UserPublicProfile.tsx:863 msgid "Add email…" msgstr "Add email…" #: src/components/AddToPlaylistModal.tsx:64 -#: src/components/DumpCreateModal.tsx:277 +#: src/components/DumpCreateModal.tsx:287 msgid "Add to playlist" msgstr "Add to playlist" @@ -165,7 +171,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:1212 +#: src/pages/UserPublicProfile.tsx:1215 msgid "Appearance" msgstr "Appearance" @@ -175,7 +181,7 @@ msgstr "Appearance" msgid "At least {0} characters" msgstr "At least {0} characters" -#: src/pages/UserPublicProfile.tsx:1246 +#: src/pages/UserPublicProfile.tsx:1249 msgid "Auto" msgstr "Auto" @@ -184,22 +190,23 @@ msgstr "Auto" msgid "Back to login" msgstr "Back to login" -#: src/contexts/WSProvider.tsx:168 -#: src/contexts/WSProvider.tsx:360 +#: src/contexts/WSProvider.tsx:211 +#: src/contexts/WSProvider.tsx:438 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/ChangePasswordModal.tsx:168 -#: src/components/CommentThread.tsx:281 -#: src/components/CommentThread.tsx:373 -#: src/components/CommentThread.tsx:510 +#: src/components/CommentThread.tsx:286 +#: src/components/CommentThread.tsx:386 +#: src/components/CommentThread.tsx:523 #: src/components/ConfirmModal.tsx:32 -#: src/components/DumpCreateModal.tsx:415 +#: src/components/DumpCreateModal.tsx:461 #: src/components/PlaylistCreateForm.tsx:112 -#: src/pages/DumpEdit.tsx:299 +#: src/pages/Dump.tsx:330 +#: src/pages/DumpEdit.tsx:320 #: src/pages/PlaylistDetail.tsx:680 #: src/pages/UserPublicProfile.tsx:842 -#: src/pages/UserPublicProfile.tsx:921 +#: src/pages/UserPublicProfile.tsx:924 msgid "Cancel" msgstr "Cancel" @@ -207,7 +214,7 @@ msgstr "Cancel" msgid "Cancel removal" msgstr "Cancel removal" -#: src/components/AppHeader.tsx:62 +#: src/components/AppHeader.tsx:65 msgid "Cancel search" msgstr "Cancel search" @@ -220,7 +227,7 @@ msgstr "Change avatar" msgid "Change password" msgstr "Change password" -#: src/pages/UserPublicProfile.tsx:1205 +#: src/pages/UserPublicProfile.tsx:1208 msgid "Change password…" msgstr "Change password…" @@ -233,7 +240,7 @@ msgstr "Checking invite…" msgid "Close" msgstr "Close" -#: src/pages/UserPublicProfile.tsx:1238 +#: src/pages/UserPublicProfile.tsx:1241 msgid "Color scheme" msgstr "Color scheme" @@ -259,9 +266,13 @@ msgstr "Could not change password" msgid "Could not connect to server" msgstr "Could not connect to server" -#: src/components/CommentThread.tsx:111 -#: src/components/CommentThread.tsx:153 -#: src/components/CommentThread.tsx:448 +#: src/components/UserListPopover.tsx:100 +msgid "Could not load." +msgstr "Could not load." + +#: src/components/CommentThread.tsx:116 +#: src/components/CommentThread.tsx:158 +#: src/components/CommentThread.tsx:461 msgid "Could not reach the server. Please try again." msgstr "Could not reach the server. Please try again." @@ -287,19 +298,19 @@ msgstr "Creating…" msgid "Current password" msgstr "Current password" -#: src/pages/UserPublicProfile.tsx:1260 +#: src/pages/UserPublicProfile.tsx:1263 msgid "Dark" msgstr "Dark" -#: src/components/CommentThread.tsx:319 -#: src/components/CommentThread.tsx:325 +#: src/components/CommentThread.tsx:332 +#: src/components/CommentThread.tsx:338 #: src/components/ConfirmModal.tsx:16 #: src/pages/PlaylistDetail.tsx:687 msgid "Delete" msgstr "Delete" -#: src/pages/DumpEdit.tsx:295 -#: src/pages/DumpEdit.tsx:315 +#: src/pages/DumpEdit.tsx:316 +#: src/pages/DumpEdit.tsx:338 msgid "Delete dump" msgstr "Delete dump" @@ -309,11 +320,11 @@ msgstr "Delete dump" msgid "Delete playlist" msgstr "Delete playlist" -#: src/components/CommentThread.tsx:324 +#: src/components/CommentThread.tsx:337 msgid "Delete this comment?" msgstr "Delete this comment?" -#: src/pages/DumpEdit.tsx:314 +#: src/pages/DumpEdit.tsx:337 msgid "Delete this dump? This cannot be undone." msgstr "Delete this dump? This cannot be undone." @@ -327,7 +338,7 @@ msgstr "Delete this playlist? This cannot be undone." msgid "Description (optional)" msgstr "Description (optional)" -#: src/components/DumpCreateModal.tsx:461 +#: src/components/DumpCreateModal.tsx:507 msgid "Done" msgstr "Done" @@ -335,49 +346,53 @@ msgstr "Done" msgid "Drop a file here" msgstr "Drop a file here" -#: src/pages/DumpEdit.tsx:252 +#: src/pages/DumpEdit.tsx:273 msgid "Drop a replacement here" msgstr "Drop a replacement here" -#: src/components/AppHeader.tsx:99 +#: src/components/AppHeader.tsx:103 msgid "Dump" msgstr "Dump" -#: src/components/DumpCreateModal.tsx:427 +#: src/components/DumpCreateModal.tsx:473 msgid "Dump it" msgstr "Dump it" -#: src/components/DumpCreateModal.tsx:438 +#: src/components/DumpCreateModal.tsx:484 msgid "Dumped!" msgstr "Dumped!" #: src/pages/Search.tsx:172 #: src/pages/UserDumps.tsx:107 -#: src/pages/UserPublicProfile.tsx:965 +#: src/pages/UserPublicProfile.tsx:968 msgid "Dumps" msgstr "Dumps" #. placeholder {0}: dumps.items.length #. placeholder {1}: dumps.hasMore ? "+" : "" -#: src/pages/UserPublicProfile.tsx:982 +#: src/pages/UserPublicProfile.tsx:985 msgid "Dumps ({0}{1})" msgstr "Dumps ({0}{1})" -#: src/pages/Notifications.tsx:368 +#: src/pages/Notifications.tsx:393 msgid "Earlier" msgstr "Earlier" -#: src/components/CommentThread.tsx:310 -#: src/pages/Dump.tsx:321 +#: src/components/CommentThread.tsx:323 +#: src/pages/Dump.tsx:423 #: src/pages/PlaylistDetail.tsx:706 msgid "Edit" msgstr "Edit" +#: src/components/DumpCreateModal.tsx:409 +msgid "Edit title" +msgstr "Edit title" + #. placeholder {0}: relativeTime(comment.updatedAt) #. placeholder {0}: relativeTime(dump.updatedAt) #. placeholder {0}: relativeTime(playlist.updatedAt) -#: src/components/CommentThread.tsx:237 -#: src/pages/Dump.tsx:281 +#: src/components/CommentThread.tsx:242 +#: src/pages/Dump.tsx:383 #: src/pages/PlaylistDetail.tsx:779 msgid "edited {0}" msgstr "edited {0}" @@ -385,13 +400,13 @@ msgstr "edited {0}" #. placeholder {0}: comment.updatedAt.toLocaleString() #. placeholder {0}: dump.updatedAt.toLocaleString() #. placeholder {0}: playlist.updatedAt.toLocaleString() -#: src/components/CommentThread.tsx:235 -#: src/pages/Dump.tsx:279 +#: src/components/CommentThread.tsx:240 +#: src/pages/Dump.tsx:381 #: src/pages/PlaylistDetail.tsx:776 msgid "Edited {0}" msgstr "Edited {0}" -#: src/pages/DumpEdit.tsx:185 +#: src/pages/DumpEdit.tsx:192 msgid "Editing" msgstr "Editing" @@ -399,7 +414,7 @@ msgstr "Editing" msgid "Email address" msgstr "Email address" -#: src/pages/Search.tsx:198 +#: src/pages/Search.tsx:205 msgid "Enter a query to search." msgstr "Enter a query to search." @@ -422,55 +437,55 @@ 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:342 -#: src/pages/UserPublicProfile.tsx:1084 -#: src/pages/UserPublicProfile.tsx:1126 -#: src/pages/UserPublicProfile.tsx:1171 +#: src/pages/Notifications.tsx:367 +#: src/pages/UserPublicProfile.tsx:1087 +#: src/pages/UserPublicProfile.tsx:1129 +#: src/pages/UserPublicProfile.tsx:1174 msgid "Failed to load" msgstr "Failed to load" -#: src/components/DumpCreateModal.tsx:315 +#: src/components/DumpCreateModal.tsx:325 msgid "Failed to post" msgstr "Failed to post" -#: src/components/CommentThread.tsx:486 +#: src/components/CommentThread.tsx:499 msgid "Failed to post comment" msgstr "Failed to post comment" -#: src/components/CommentThread.tsx:349 +#: src/components/CommentThread.tsx:362 msgid "Failed to post reply" msgstr "Failed to post reply" #: src/pages/PlaylistDetail.tsx:789 #: src/pages/UserPublicProfile.tsx:680 #: src/pages/UserPublicProfile.tsx:718 -#: src/pages/UserPublicProfile.tsx:846 -#: src/pages/UserPublicProfile.tsx:924 +#: src/pages/UserPublicProfile.tsx:847 +#: src/pages/UserPublicProfile.tsx:927 msgid "Failed to save" msgstr "Failed to save" -#: src/components/CommentThread.tsx:257 +#: src/components/CommentThread.tsx:262 msgid "Failed to save edit" msgstr "Failed to save edit" -#: src/pages/UserPublicProfile.tsx:869 +#: src/pages/UserPublicProfile.tsx:872 msgid "Failed to update avatar" msgstr "Failed to update avatar" -#: src/components/DumpCreateModal.tsx:352 +#: src/components/DumpCreateModal.tsx:362 msgid "Fetching preview…" msgstr "Fetching preview…" -#: src/components/DumpCreateModal.tsx:425 +#: src/components/DumpCreateModal.tsx:471 msgid "Fetching…" msgstr "Fetching…" -#: src/components/DumpCreateModal.tsx:308 +#: src/components/DumpCreateModal.tsx:318 #: src/components/FileDropZone.tsx:31 msgid "File" msgstr "File" -#: src/components/DumpCreateModal.tsx:202 +#: src/components/DumpCreateModal.tsx:211 msgid "File too large (max 50 MB)." msgstr "File too large (max 50 MB)." @@ -495,8 +510,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:19 -#: src/pages/UserPublicProfile.tsx:967 +#: src/components/FeedTabBar.tsx:20 +#: src/pages/UserPublicProfile.tsx:970 msgid "Followed" msgstr "Followed" @@ -506,13 +521,13 @@ msgstr "Followed" msgid "Followed ({0}{1})" msgstr "Followed ({0}{1})" -#: src/pages/UserPublicProfile.tsx:1115 +#: src/pages/UserPublicProfile.tsx:1118 msgid "Followed playlists" msgstr "Followed playlists" #: src/components/FollowButton.tsx:37 #: src/components/FollowButton.tsx:64 -#: src/pages/UserPublicProfile.tsx:1073 +#: src/pages/UserPublicProfile.tsx:1076 msgid "Following" msgstr "Following" @@ -556,8 +571,8 @@ msgstr "Invalid link" msgid "invited by" msgstr "invited by" -#: src/pages/UserPublicProfile.tsx:968 -#: src/pages/UserPublicProfile.tsx:1160 +#: src/pages/UserPublicProfile.tsx:971 +#: src/pages/UserPublicProfile.tsx:1163 msgid "Invitees" msgstr "Invitees" @@ -569,24 +584,29 @@ msgstr "Journal" msgid "just now" msgstr "just now" -#: src/pages/UserPublicProfile.tsx:1253 +#: src/pages/UserPublicProfile.tsx:1256 msgid "Light" msgstr "Light" -#: src/contexts/WSProvider.tsx:359 +#: src/components/LikeButton.tsx:30 +msgid "Like" +msgstr "Like" + +#: src/contexts/WSProvider.tsx:437 msgid "Live updates are temporarily disconnected. Trying to reconnect…" msgstr "Live updates are temporarily disconnected. Trying to reconnect…" -#: src/components/AppHeader.tsx:125 +#: src/components/AppHeader.tsx:130 msgid "Live updates unavailable." msgstr "Live updates unavailable." -#: src/pages/Notifications.tsx:415 +#: src/components/UserListPopover.tsx:188 +#: src/pages/Notifications.tsx:440 msgid "Load more" msgstr "Load more" -#: src/pages/Dump.tsx:194 -#: src/pages/DumpEdit.tsx:146 +#: src/pages/Dump.tsx:200 +#: src/pages/DumpEdit.tsx:153 msgid "Loading dump…" msgstr "Loading dump…" @@ -594,7 +614,7 @@ msgstr "Loading dump…" #: src/pages/index/HotFeed.tsx:64 #: src/pages/index/JournalFeed.tsx:77 #: src/pages/index/NewFeed.tsx:64 -#: src/pages/Search.tsx:235 +#: src/pages/Search.tsx:242 #: src/pages/UserDumps.tsx:93 #: src/pages/UserPlaylists.tsx:417 #: src/pages/UserPlaylists.tsx:452 @@ -612,29 +632,39 @@ msgstr "Loading profile…" #: src/components/PlaylistMembershipPanel.tsx:28 #: src/components/TextEditor.tsx:289 +#: src/components/UserListPopover.tsx:149 +#: src/components/UserListPopover.tsx:187 #: src/pages/index/FollowedFeed.tsx:77 #: src/pages/index/HotFeed.tsx:32 #: src/pages/index/JournalFeed.tsx:44 #: src/pages/index/NewFeed.tsx:32 -#: src/pages/Notifications.tsx:338 -#: src/pages/Notifications.tsx:414 +#: src/pages/Notifications.tsx:363 +#: src/pages/Notifications.tsx:439 #: src/pages/UserDumps.tsx:51 #: src/pages/UserPlaylists.tsx:342 -#: src/pages/UserPublicProfile.tsx:1078 -#: src/pages/UserPublicProfile.tsx:1120 -#: src/pages/UserPublicProfile.tsx:1165 +#: src/pages/UserPublicProfile.tsx:1081 +#: src/pages/UserPublicProfile.tsx:1123 +#: src/pages/UserPublicProfile.tsx:1168 #: src/pages/UserUpvoted.tsx:123 msgid "Loading…" msgstr "Loading…" -#: src/components/AppHeader.tsx:106 +#: src/components/AppHeader.tsx:111 #: src/pages/UserLogin.tsx:87 #: src/pages/UserLogin.tsx:117 msgid "Log in" msgstr "Log in" +#: src/components/LikeButton.tsx:31 +msgid "Log in to like" +msgstr "Log in to like" + +#: src/components/VoteButton.tsx:29 +msgid "Log in to vote" +msgstr "Log in to vote" + #: src/pages/UserPublicProfile.tsx:749 -#: src/pages/UserPublicProfile.tsx:883 +#: src/pages/UserPublicProfile.tsx:886 msgid "Log out" msgstr "Log out" @@ -650,7 +680,7 @@ msgstr "Login failed" msgid "Max 50 MB" msgstr "Max 50 MB" -#: src/pages/Notifications.tsx:331 +#: src/pages/Notifications.tsx:356 msgid "new" msgstr "new" @@ -658,9 +688,9 @@ msgstr "new" msgid "New" msgstr "New" -#: src/components/DumpCreateModal.tsx:277 -#: src/pages/UserDumps.tsx:114 -#: src/pages/UserPublicProfile.tsx:1308 +#: src/components/DumpCreateModal.tsx:287 +#: src/pages/UserDumps.tsx:115 +#: src/pages/UserPublicProfile.tsx:1312 msgid "New dump" msgstr "New dump" @@ -669,8 +699,8 @@ msgstr "New dump" msgid "New password" msgstr "New password" -#: src/components/NewPlaylistForm.tsx:30 -#: src/components/NewPlaylistForm.tsx:34 +#: src/components/NewPlaylistForm.tsx:33 +#: src/components/NewPlaylistForm.tsx:40 msgid "New playlist" msgstr "New playlist" @@ -678,7 +708,7 @@ msgstr "New playlist" msgid "No dumps in this playlist yet." msgstr "No dumps in this playlist yet." -#: src/pages/Search.tsx:215 +#: src/pages/Search.tsx:222 msgid "No dumps match \"{q}\"." msgstr "No dumps match \"{q}\"." @@ -693,42 +723,46 @@ msgid "No emoji found." msgstr "No emoji found." #: src/pages/UserPlaylists.tsx:439 -#: src/pages/UserPublicProfile.tsx:1133 +#: src/pages/UserPublicProfile.tsx:1136 msgid "No followed playlists yet." msgstr "No followed playlists yet." -#: src/pages/UserPublicProfile.tsx:1178 +#: src/pages/UserPublicProfile.tsx:1181 msgid "No invitees yet." msgstr "No invitees yet." -#: src/pages/Search.tsx:274 +#: src/components/UserListPopover.tsx:157 +msgid "No one yet." +msgstr "No one yet." + +#: src/pages/Search.tsx:281 msgid "No playlists match \"{q}\"." msgstr "No playlists match \"{q}\"." #: src/components/PlaylistMembershipPanel.tsx:34 #: src/pages/UserPlaylists.tsx:397 -#: src/pages/UserPublicProfile.tsx:1044 +#: src/pages/UserPublicProfile.tsx:1047 msgid "No playlists yet." msgstr "No playlists yet." -#: src/pages/Search.tsx:248 +#: src/pages/Search.tsx:255 msgid "No users match \"{q}\"." msgstr "No users match \"{q}\"." -#: src/pages/UserPublicProfile.tsx:1091 +#: src/pages/UserPublicProfile.tsx:1094 msgid "Not following anyone yet." msgstr "Not following anyone yet." -#: src/pages/Notifications.tsx:349 -#: src/pages/UserDumps.tsx:123 -#: src/pages/UserPublicProfile.tsx:1318 -#: src/pages/UserPublicProfile.tsx:1441 +#: src/pages/Notifications.tsx:374 +#: src/pages/UserDumps.tsx:125 +#: src/pages/UserPublicProfile.tsx:1323 +#: src/pages/UserPublicProfile.tsx:1446 #: src/pages/UserUpvoted.tsx:195 msgid "Nothing here yet." msgstr "Nothing here yet." #: src/components/NotificationBell.tsx:42 -#: src/pages/Notifications.tsx:327 +#: src/pages/Notifications.tsx:352 msgid "Notifications" msgstr "Notifications" @@ -736,7 +770,7 @@ msgstr "Notifications" msgid "Notifications ({unreadNotificationCount} unread)" msgstr "Notifications ({unreadNotificationCount} unread)" -#: src/components/SearchBar.tsx:83 +#: src/components/SearchBar.tsx:84 msgid "Open search" msgstr "Open search" @@ -745,7 +779,7 @@ msgid "or <0>browse files" msgstr "or <0>browse files" #: src/pages/UserLogin.tsx:106 -#: src/pages/UserPublicProfile.tsx:1198 +#: src/pages/UserPublicProfile.tsx:1201 msgid "Password" msgstr "Password" @@ -767,49 +801,49 @@ msgstr "Password updated" msgid "Passwords do not match" msgstr "Passwords do not match" -#: src/components/AppHeader.tsx:82 +#: src/components/AppHeader.tsx:85 #: src/components/UserMenu.tsx:62 #: src/pages/Search.tsx:175 #: src/pages/UserPlaylists.tsx:368 -#: src/pages/UserPublicProfile.tsx:966 +#: src/pages/UserPublicProfile.tsx:969 msgid "Playlists" msgstr "Playlists" #. placeholder {0}: playlists.items.length #. placeholder {1}: playlists.hasMore ? "+" : "" -#: src/pages/UserPublicProfile.tsx:1013 +#: src/pages/UserPublicProfile.tsx:1016 msgid "Playlists ({0}{1})" msgstr "Playlists ({0}{1})" -#: src/components/DumpCreateModal.tsx:195 +#: src/components/DumpCreateModal.tsx:204 msgid "Please select a file." msgstr "Please select a file." -#: src/components/CommentThread.tsx:499 +#: src/components/CommentThread.tsx:512 msgid "Post comment" msgstr "Post comment" -#: src/components/CommentThread.tsx:362 +#: src/components/CommentThread.tsx:375 msgid "Post reply" msgstr "Post reply" -#: src/components/CommentThread.tsx:361 -#: src/components/CommentThread.tsx:498 +#: src/components/CommentThread.tsx:374 +#: src/components/CommentThread.tsx:511 msgid "Posting…" msgstr "Posting…" #: src/components/DumpCard.tsx:104 -#: src/components/JournalCard.tsx:87 +#: src/components/JournalCard.tsx:105 #: src/components/PlaylistCard.tsx:73 #: src/components/PlaylistMembershipPanel.tsx:55 -#: src/pages/Dump.tsx:287 +#: src/pages/Dump.tsx:389 #: src/pages/PlaylistDetail.tsx:759 msgid "private" msgstr "private" -#: src/components/DumpCreateModal.tsx:404 +#: src/components/DumpCreateModal.tsx:450 #: src/components/PlaylistCreateForm.tsx:99 -#: src/pages/DumpEdit.tsx:285 +#: src/pages/DumpEdit.tsx:306 #: src/pages/PlaylistDetail.tsx:746 msgid "Private" msgstr "Private" @@ -819,18 +853,18 @@ msgstr "Private" msgid "public" msgstr "public" -#: src/components/DumpCreateModal.tsx:396 +#: src/components/DumpCreateModal.tsx:442 #: src/components/PlaylistCreateForm.tsx:92 -#: src/pages/DumpEdit.tsx:278 +#: src/pages/DumpEdit.tsx:299 #: src/pages/PlaylistDetail.tsx:739 msgid "Public" msgstr "Public" -#: src/pages/DumpEdit.tsx:214 +#: src/pages/DumpEdit.tsx:221 msgid "Refresh metadata" msgstr "Refresh metadata" -#: src/pages/DumpEdit.tsx:213 +#: src/pages/DumpEdit.tsx:220 msgid "Refreshing…" msgstr "Refreshing…" @@ -855,11 +889,19 @@ msgstr "Remove file" msgid "Remove from playlist" msgstr "Remove from playlist" -#: src/pages/DumpEdit.tsx:251 +#: src/components/LikeButton.tsx:30 +msgid "Remove like" +msgstr "Remove like" + +#: src/components/VoteButton.tsx:28 +msgid "Remove vote" +msgstr "Remove vote" + +#: src/pages/DumpEdit.tsx:272 msgid "Replace file" msgstr "Replace file" -#: src/components/CommentThread.tsx:297 +#: src/components/CommentThread.tsx:310 msgid "Reply" msgstr "Reply" @@ -871,42 +913,44 @@ msgstr "Request failed" msgid "Reset failed" msgstr "Reset failed" -#: src/pages/Dump.tsx:211 -#: src/pages/DumpEdit.tsx:163 +#: src/pages/Dump.tsx:217 +#: src/pages/DumpEdit.tsx:170 msgid "Retry" msgstr "Retry" -#: src/components/CommentThread.tsx:270 -#: src/pages/DumpEdit.tsx:306 +#: src/components/CommentThread.tsx:275 +#: src/pages/Dump.tsx:322 +#: src/pages/DumpEdit.tsx:329 #: src/pages/PlaylistDetail.tsx:673 #: src/pages/UserPublicProfile.tsx:834 -#: src/pages/UserPublicProfile.tsx:913 +#: src/pages/UserPublicProfile.tsx:916 msgid "Save" msgstr "Save" #: src/components/ChangePasswordModal.tsx:177 -#: src/components/CommentThread.tsx:269 +#: src/components/CommentThread.tsx:274 +#: src/pages/Dump.tsx:322 #: src/pages/PlaylistDetail.tsx:673 #: src/pages/ResetPassword.tsx:152 #: src/pages/UserPublicProfile.tsx:833 -#: src/pages/UserPublicProfile.tsx:913 +#: src/pages/UserPublicProfile.tsx:916 msgid "Saving…" msgstr "Saving…" -#: src/components/AppHeader.tsx:62 -#: src/components/SearchBar.tsx:77 +#: src/components/AppHeader.tsx:65 +#: src/components/SearchBar.tsx:78 msgid "Search" msgstr "Search" -#: src/components/SearchBar.tsx:73 +#: src/components/SearchBar.tsx:74 msgid "Search dumps, users, playlists…" msgstr "Search dumps, users, playlists…" -#: src/pages/Search.tsx:209 +#: src/pages/Search.tsx:216 msgid "Search failed" msgstr "Search failed" -#: src/pages/Search.tsx:204 +#: src/pages/Search.tsx:211 msgid "Searching…" msgstr "Searching…" @@ -918,7 +962,7 @@ msgstr "Send reset link" msgid "Sending…" msgstr "Sending…" -#: src/components/AppHeader.tsx:97 +#: src/components/AppHeader.tsx:100 msgid "Server unreachable" msgstr "Server unreachable" @@ -927,7 +971,7 @@ msgstr "Server unreachable" msgid "Set new password" msgstr "Set new password" -#: src/pages/UserPublicProfile.tsx:970 +#: src/pages/UserPublicProfile.tsx:973 msgid "Settings" msgstr "Settings" @@ -935,11 +979,11 @@ msgstr "Settings" msgid "Something went wrong" msgstr "Something went wrong" -#: src/pages/UserPublicProfile.tsx:1217 +#: src/pages/UserPublicProfile.tsx:1220 msgid "Style" msgstr "Style" -#: src/components/SearchBar.tsx:83 +#: src/components/SearchBar.tsx:84 msgid "Submit search" msgstr "Submit search" @@ -959,11 +1003,13 @@ msgstr "This page does not exist." msgid "This reset link is missing or malformed." msgstr "This reset link is missing or malformed." +#: src/components/DumpCreateModal.tsx:384 #: src/components/PlaylistCreateForm.tsx:72 +#: src/pages/DumpEdit.tsx:235 msgid "Title" msgstr "Title" -#: src/pages/Notifications.tsx:365 +#: src/pages/Notifications.tsx:390 msgid "Today" msgstr "Today" @@ -988,26 +1034,30 @@ msgstr "Unknown error" msgid "Upload failed" msgstr "Upload failed" -#: src/components/DumpCreateModal.tsx:426 +#: src/components/DumpCreateModal.tsx:472 msgid "Uploading…" msgstr "Uploading…" +#: src/components/VoteButton.tsx:28 +msgid "Upvote" +msgstr "Upvote" + #: src/pages/UserUpvoted.tsx:191 msgid "Upvoted" msgstr "Upvoted" #. placeholder {0}: votes.items.length #. placeholder {1}: votes.hasMore ? "+" : "" -#: src/pages/UserPublicProfile.tsx:993 +#: src/pages/UserPublicProfile.tsx:996 msgid "Upvoted ({0}{1})" msgstr "Upvoted ({0}{1})" -#: src/components/DumpCreateModal.tsx:325 -#: src/pages/DumpEdit.tsx:230 +#: src/components/DumpCreateModal.tsx:335 +#: src/pages/DumpEdit.tsx:251 msgid "URL" msgstr "URL" -#: src/components/DumpCreateModal.tsx:178 +#: src/components/DumpCreateModal.tsx:187 msgid "URL is required." msgstr "URL is required." @@ -1024,42 +1074,42 @@ msgstr "Username" msgid "Users" msgstr "Users" -#: src/pages/UserPublicProfile.tsx:1063 -#: src/pages/UserPublicProfile.tsx:1106 -#: src/pages/UserPublicProfile.tsx:1148 -#: src/pages/UserPublicProfile.tsx:1339 -#: src/pages/UserPublicProfile.tsx:1471 +#: src/pages/UserPublicProfile.tsx:1066 +#: src/pages/UserPublicProfile.tsx:1109 +#: src/pages/UserPublicProfile.tsx:1151 +#: src/pages/UserPublicProfile.tsx:1344 +#: src/pages/UserPublicProfile.tsx:1476 msgid "View all →" msgstr "View all →" -#: src/components/DumpCreateModal.tsx:440 +#: src/components/DumpCreateModal.tsx:486 msgid "View dump →" msgstr "View dump →" -#: src/components/DumpCreateModal.tsx:383 -#: src/pages/DumpEdit.tsx:266 +#: src/components/DumpCreateModal.tsx:429 +#: src/pages/DumpEdit.tsx:287 msgid "What makes it worth it?" msgstr "What makes it worth it?" -#: src/pages/UserPublicProfile.tsx:901 -#: src/pages/UserPublicProfile.tsx:950 +#: src/pages/UserPublicProfile.tsx:904 +#: src/pages/UserPublicProfile.tsx:953 msgid "Who am I?" msgstr "Who am I?" -#: src/components/DumpCreateModal.tsx:376 -#: src/pages/DumpEdit.tsx:260 +#: src/components/DumpCreateModal.tsx:422 +#: src/pages/DumpEdit.tsx:281 msgid "Why?" msgstr "Why?" -#: src/components/CommentThread.tsx:342 +#: src/components/CommentThread.tsx:355 msgid "Write a reply…" msgstr "Write a reply…" -#: src/pages/Notifications.tsx:367 +#: src/pages/Notifications.tsx:392 msgid "Yesterday" msgstr "Yesterday" -#: src/pages/Notifications.tsx:352 +#: src/pages/Notifications.tsx:377 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." @@ -1067,7 +1117,7 @@ msgstr "You'll be notified when someone follows your playlists, upvotes your dum #: src/pages/index/HotFeed.tsx:69 #: src/pages/index/JournalFeed.tsx:82 #: src/pages/index/NewFeed.tsx:69 -#: src/pages/Search.tsx:240 +#: src/pages/Search.tsx:247 #: src/pages/UserDumps.tsx:98 #: src/pages/UserPlaylists.tsx:422 #: src/pages/UserPlaylists.tsx:457 diff --git a/src/locales/fr.js b/src/locales/fr.js index 1be4d67..50a1beb 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"],"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…"],"5TviPn":["Annuler la recherche"],"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"],"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…"],"StovX6":["Rien à voir, circulez."],"Sxm8rQ":["Utilisateurs"],"T9bjWt":["<0>",["0"]," a été ajouté à <1>",["1"],""],"TM1ZbA":["Collections (",["0"],["1"],")"],"TN382O":["Lien invalide"],"Tv9vbB":["Suivre la collection"],"Tz0i8g":["Paramètres"],"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"],"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 ?"],"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"],"iWpEwy":["Accueil"],"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"],"qvz_Pp":["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"],"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…\"],\"5TviPn\":[\"Annuler la recherche\"],\"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\"],\"8ZsakT\":[\"Mot de passe\"],\"8pxhI8\":[\"Veuillez sélectionner un fichier.\"],\"9BruTc\":[\"Pourquoi ?\"],\"9l4qcT\":[\"Déposez un fichier de remplacement ici\"],\"9uI_rE\":[\"Annuler\"],\"9xDZu_\":[\"Impossible de charger.\"],\"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\"],\"H4o4sk\":[\"Personne pour le moment.\"],\"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\"],\"Rrp6-J\":[\"Se connecter pour aimer\"],\"SBTElJ\":[\"Recherche…\"],\"Sad2tK\":[\"Envoi…\"],\"StovX6\":[\"Rien à voir, circulez.\"],\"Sxm8rQ\":[\"Utilisateurs\"],\"T9bjWt\":[\"<0>\",[\"0\"],\" a été ajouté à <1>\",[\"1\"],\"\"],\"TM1ZbA\":[\"Collections (\",[\"0\"],[\"1\"],\")\"],\"TN382O\":[\"Lien invalide\"],\"Tv9vbB\":[\"Suivre la collection\"],\"Tz0i8g\":[\"Paramètres\"],\"UNMVei\":[\"Mot de passe oublié ?\"],\"UOZith\":[\"Publication échouée\"],\"URAieT\":[\"Se connecter pour voter\"],\"UTiUFs\":[\"Récupération…\"],\"VCoEm-\":[\"Retour à la connexion\"],\"V_e7nf\":[\"Définir un nouveau mot de passe\"],\"VnNJbN\":[\"De collections\"],\"VyTYmS\":[\"Changer l'avatar\"],\"W9FRBT\":[\"Aimer\"],\"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\"],\"Ye9RMF\":[\"<0>\",[\"0\"],\" a aimé votre commentaire sur <1>\",[\"1\"],\"\"],\"YpkCca\":[\"Pas encore de collections suivies.\"],\"ZBdbv9\":[\"Modifier le titre\"],\"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…\"],\"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 ?\"],\"fC6mXb\":[\"Voter\"],\"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\"],\"iWpEwy\":[\"Accueil\"],\"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\"],\"qvz_Pp\":[\"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)\"],\"vQMkHu\":[\"Retirer le vote\"],\"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\"],\"y6sq5j\":[\"Abonné\"],\"yA_6BX\":[\"Tout voir →\"],\"yBBtRm\":[\"Suivez des utilisateurs pour voir leurs recos ici.\"],\"yQ2kGp\":[\"Charger plus\"],\"y_0uwd\":[\"Hier\"],\"yz7wBu\":[\"Fermer\"],\"z0ROB3\":[\"Retirer le j'aime\"],\"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 55636b4..d989161 100644 --- a/src/locales/fr.po +++ b/src/locales/fr.po @@ -13,13 +13,13 @@ msgstr "" "Last-Translator: \n" "Language-Team: \n" -#: src/components/CommentThread.tsx:176 +#: src/components/CommentThread.tsx:181 msgid "[deleted]" msgstr "[supprimé]" #. placeholder {0}: dump.commentCount #: src/components/DumpCard.tsx:95 -#: src/components/JournalCard.tsx:78 +#: src/components/JournalCard.tsx:96 msgid "{0, plural, one {# comment} other {# comments}}" msgstr "{0, plural, one {# commentaire} other {# commentaires}}" @@ -50,7 +50,7 @@ msgstr "{label} ({count})" msgid "{mins}m ago" msgstr "il y a {mins}min" -#: src/components/CommentThread.tsx:459 +#: src/components/CommentThread.tsx:472 msgid "{visibleCount, plural, one {# comment} other {# comments}}" msgstr "{visibleCount, plural, one {# commentaire} other {# commentaires}}" @@ -59,9 +59,9 @@ msgstr "{visibleCount, plural, one {# commentaire} other {# commentaires}}" msgid "← Back" msgstr "← Retour" -#: src/pages/Dump.tsx:218 -#: src/pages/Dump.tsx:325 -#: src/pages/DumpEdit.tsx:170 +#: src/pages/Dump.tsx:224 +#: src/pages/Dump.tsx:427 +#: src/pages/DumpEdit.tsx:177 msgid "← Back to all dumps" msgstr "← Retour à toutes les recos" @@ -84,72 +84,78 @@ msgstr "+ Nouvelle reco" msgid "+ New playlist" msgstr "+ Nouvelle collection" -#: src/pages/Dump.tsx:250 +#: src/pages/Dump.tsx:291 msgid "+ Playlist" msgstr "+ Collection" #. placeholder {0}: d.commenterUsername #. placeholder {1}: d.dumpTitle -#: src/pages/Notifications.tsx:179 +#: src/pages/Notifications.tsx:194 msgid "<0>{0} commented on <1>{1}" msgstr "<0>{0} a commenté sur <1>{1}" #. placeholder {0}: d.followerUsername #. placeholder {1}: d.playlistTitle -#: src/pages/Notifications.tsx:139 +#: src/pages/Notifications.tsx:154 msgid "<0>{0} followed your playlist <1>{1}" msgstr "<0>{0} a suivi votre collection <1>{1}" +#. placeholder {0}: d.likerUsername +#. placeholder {1}: d.dumpTitle +#: src/pages/Notifications.tsx:204 +msgid "<0>{0} liked your comment on <1>{1}" +msgstr "<0>{0} a aimé votre commentaire sur <1>{1}" + #. placeholder {0}: d.mentionerUsername -#: src/pages/Notifications.tsx:191 +#: src/pages/Notifications.tsx:216 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:149 +#: src/pages/Notifications.tsx:164 msgid "<0>{0} posted <1>{1}" msgstr "<0>{0} a publié <1>{1}" #. placeholder {0}: d.followerUsername -#: src/pages/Notifications.tsx:130 +#: src/pages/Notifications.tsx:145 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:169 +#: src/pages/Notifications.tsx:184 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:159 +#: src/pages/Notifications.tsx:174 msgid "<0>{0} was added to <1>{1}" msgstr "<0>{0} a été ajouté à <1>{1}" -#: src/pages/Notifications.tsx:189 +#: src/pages/Notifications.tsx:214 msgid "a comment" msgstr "un commentaire" -#: src/pages/Notifications.tsx:189 +#: src/pages/Notifications.tsx:214 msgid "a post" msgstr "une publication" -#: src/pages/UserPublicProfile.tsx:1193 +#: src/pages/UserPublicProfile.tsx:1196 msgid "Account" msgstr "Compte" -#: src/components/CommentThread.tsx:479 +#: src/components/CommentThread.tsx:492 msgid "Add a comment…" msgstr "Ajouter un commentaire…" -#: src/pages/UserPublicProfile.tsx:860 +#: src/pages/UserPublicProfile.tsx:863 msgid "Add email…" msgstr "Ajouter un e-mail…" #: src/components/AddToPlaylistModal.tsx:64 -#: src/components/DumpCreateModal.tsx:277 +#: src/components/DumpCreateModal.tsx:287 msgid "Add to playlist" msgstr "Ajouter à la collection" @@ -165,7 +171,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:1212 +#: src/pages/UserPublicProfile.tsx:1215 msgid "Appearance" msgstr "Apparence" @@ -175,7 +181,7 @@ msgstr "Apparence" msgid "At least {0} characters" msgstr "Au moins {0} caractères" -#: src/pages/UserPublicProfile.tsx:1246 +#: src/pages/UserPublicProfile.tsx:1249 msgid "Auto" msgstr "Auto" @@ -184,22 +190,23 @@ msgstr "Auto" msgid "Back to login" msgstr "Retour à la connexion" -#: src/contexts/WSProvider.tsx:168 -#: src/contexts/WSProvider.tsx:360 +#: src/contexts/WSProvider.tsx:211 +#: src/contexts/WSProvider.tsx:438 msgid "Can't connect to the live updates server. Upvotes and notifications may not sync until it reconnects." msgstr "Impossible de se connecter au serveur de mises à jour en direct. Les votes et les notifications pourraient ne pas se synchroniser avant la reconnexion." #: src/components/ChangePasswordModal.tsx:168 -#: src/components/CommentThread.tsx:281 -#: src/components/CommentThread.tsx:373 -#: src/components/CommentThread.tsx:510 +#: src/components/CommentThread.tsx:286 +#: src/components/CommentThread.tsx:386 +#: src/components/CommentThread.tsx:523 #: src/components/ConfirmModal.tsx:32 -#: src/components/DumpCreateModal.tsx:415 +#: src/components/DumpCreateModal.tsx:461 #: src/components/PlaylistCreateForm.tsx:112 -#: src/pages/DumpEdit.tsx:299 +#: src/pages/Dump.tsx:330 +#: src/pages/DumpEdit.tsx:320 #: src/pages/PlaylistDetail.tsx:680 #: src/pages/UserPublicProfile.tsx:842 -#: src/pages/UserPublicProfile.tsx:921 +#: src/pages/UserPublicProfile.tsx:924 msgid "Cancel" msgstr "Annuler" @@ -207,7 +214,7 @@ msgstr "Annuler" msgid "Cancel removal" msgstr "Annuler la suppression" -#: src/components/AppHeader.tsx:62 +#: src/components/AppHeader.tsx:65 msgid "Cancel search" msgstr "Annuler la recherche" @@ -220,7 +227,7 @@ msgstr "Changer l'avatar" msgid "Change password" msgstr "Changer le mot de passe" -#: src/pages/UserPublicProfile.tsx:1205 +#: src/pages/UserPublicProfile.tsx:1208 msgid "Change password…" msgstr "Changer le mot de passe…" @@ -233,7 +240,7 @@ msgstr "Vérification de l'invitation…" msgid "Close" msgstr "Fermer" -#: src/pages/UserPublicProfile.tsx:1238 +#: src/pages/UserPublicProfile.tsx:1241 msgid "Color scheme" msgstr "Thème de couleur" @@ -259,9 +266,13 @@ msgstr "Impossible de changer le mot de passe" msgid "Could not connect to server" msgstr "Impossible de contacter le serveur" -#: src/components/CommentThread.tsx:111 -#: src/components/CommentThread.tsx:153 -#: src/components/CommentThread.tsx:448 +#: src/components/UserListPopover.tsx:100 +msgid "Could not load." +msgstr "Impossible de charger." + +#: src/components/CommentThread.tsx:116 +#: src/components/CommentThread.tsx:158 +#: src/components/CommentThread.tsx:461 msgid "Could not reach the server. Please try again." msgstr "Impossible de contacter le serveur. Veuillez réessayer." @@ -287,19 +298,19 @@ msgstr "Création…" msgid "Current password" msgstr "Mot de passe actuel" -#: src/pages/UserPublicProfile.tsx:1260 +#: src/pages/UserPublicProfile.tsx:1263 msgid "Dark" msgstr "Sombre" -#: src/components/CommentThread.tsx:319 -#: src/components/CommentThread.tsx:325 +#: src/components/CommentThread.tsx:332 +#: src/components/CommentThread.tsx:338 #: src/components/ConfirmModal.tsx:16 #: src/pages/PlaylistDetail.tsx:687 msgid "Delete" msgstr "Supprimer" -#: src/pages/DumpEdit.tsx:295 -#: src/pages/DumpEdit.tsx:315 +#: src/pages/DumpEdit.tsx:316 +#: src/pages/DumpEdit.tsx:338 msgid "Delete dump" msgstr "Supprimer la reco" @@ -309,11 +320,11 @@ msgstr "Supprimer la reco" msgid "Delete playlist" msgstr "Supprimer la collection" -#: src/components/CommentThread.tsx:324 +#: src/components/CommentThread.tsx:337 msgid "Delete this comment?" msgstr "Supprimer ce commentaire ?" -#: src/pages/DumpEdit.tsx:314 +#: src/pages/DumpEdit.tsx:337 msgid "Delete this dump? This cannot be undone." msgstr "Supprimer cette reco ? Cette action est irréversible." @@ -327,7 +338,7 @@ msgstr "Supprimer cette collection ? Cette action est irréversible." msgid "Description (optional)" msgstr "Description (facultatif)" -#: src/components/DumpCreateModal.tsx:461 +#: src/components/DumpCreateModal.tsx:507 msgid "Done" msgstr "Terminé" @@ -335,49 +346,53 @@ msgstr "Terminé" msgid "Drop a file here" msgstr "Déposez un fichier ici" -#: src/pages/DumpEdit.tsx:252 +#: src/pages/DumpEdit.tsx:273 msgid "Drop a replacement here" msgstr "Déposez un fichier de remplacement ici" -#: src/components/AppHeader.tsx:99 +#: src/components/AppHeader.tsx:103 msgid "Dump" msgstr "Reco" -#: src/components/DumpCreateModal.tsx:427 +#: src/components/DumpCreateModal.tsx:473 msgid "Dump it" msgstr "Recommander" -#: src/components/DumpCreateModal.tsx:438 +#: src/components/DumpCreateModal.tsx:484 msgid "Dumped!" msgstr "Recommandé !" #: src/pages/Search.tsx:172 #: src/pages/UserDumps.tsx:107 -#: src/pages/UserPublicProfile.tsx:965 +#: src/pages/UserPublicProfile.tsx:968 msgid "Dumps" msgstr "Recos" #. placeholder {0}: dumps.items.length #. placeholder {1}: dumps.hasMore ? "+" : "" -#: src/pages/UserPublicProfile.tsx:982 +#: src/pages/UserPublicProfile.tsx:985 msgid "Dumps ({0}{1})" msgstr "Recos ({0}{1})" -#: src/pages/Notifications.tsx:368 +#: src/pages/Notifications.tsx:393 msgid "Earlier" msgstr "Plus tôt" -#: src/components/CommentThread.tsx:310 -#: src/pages/Dump.tsx:321 +#: src/components/CommentThread.tsx:323 +#: src/pages/Dump.tsx:423 #: src/pages/PlaylistDetail.tsx:706 msgid "Edit" msgstr "Modifier" +#: src/components/DumpCreateModal.tsx:409 +msgid "Edit title" +msgstr "Modifier le titre" + #. placeholder {0}: relativeTime(comment.updatedAt) #. placeholder {0}: relativeTime(dump.updatedAt) #. placeholder {0}: relativeTime(playlist.updatedAt) -#: src/components/CommentThread.tsx:237 -#: src/pages/Dump.tsx:281 +#: src/components/CommentThread.tsx:242 +#: src/pages/Dump.tsx:383 #: src/pages/PlaylistDetail.tsx:779 msgid "edited {0}" msgstr "modifié {0}" @@ -385,13 +400,13 @@ msgstr "modifié {0}" #. placeholder {0}: comment.updatedAt.toLocaleString() #. placeholder {0}: dump.updatedAt.toLocaleString() #. placeholder {0}: playlist.updatedAt.toLocaleString() -#: src/components/CommentThread.tsx:235 -#: src/pages/Dump.tsx:279 +#: src/components/CommentThread.tsx:240 +#: src/pages/Dump.tsx:381 #: src/pages/PlaylistDetail.tsx:776 msgid "Edited {0}" msgstr "Modifié le {0}" -#: src/pages/DumpEdit.tsx:185 +#: src/pages/DumpEdit.tsx:192 msgid "Editing" msgstr "Modification" @@ -399,7 +414,7 @@ msgstr "Modification" msgid "Email address" msgstr "Adresse e-mail" -#: src/pages/Search.tsx:198 +#: src/pages/Search.tsx:205 msgid "Enter a query to search." msgstr "Saisissez une recherche." @@ -422,55 +437,55 @@ 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:342 -#: src/pages/UserPublicProfile.tsx:1084 -#: src/pages/UserPublicProfile.tsx:1126 -#: src/pages/UserPublicProfile.tsx:1171 +#: src/pages/Notifications.tsx:367 +#: src/pages/UserPublicProfile.tsx:1087 +#: src/pages/UserPublicProfile.tsx:1129 +#: src/pages/UserPublicProfile.tsx:1174 msgid "Failed to load" msgstr "Chargement échoué" -#: src/components/DumpCreateModal.tsx:315 +#: src/components/DumpCreateModal.tsx:325 msgid "Failed to post" msgstr "Publication échouée" -#: src/components/CommentThread.tsx:486 +#: src/components/CommentThread.tsx:499 msgid "Failed to post comment" msgstr "Impossible de publier le commentaire" -#: src/components/CommentThread.tsx:349 +#: src/components/CommentThread.tsx:362 msgid "Failed to post reply" msgstr "Impossible de publier la réponse" #: src/pages/PlaylistDetail.tsx:789 #: src/pages/UserPublicProfile.tsx:680 #: src/pages/UserPublicProfile.tsx:718 -#: src/pages/UserPublicProfile.tsx:846 -#: src/pages/UserPublicProfile.tsx:924 +#: src/pages/UserPublicProfile.tsx:847 +#: src/pages/UserPublicProfile.tsx:927 msgid "Failed to save" msgstr "Enregistrement échoué" -#: src/components/CommentThread.tsx:257 +#: src/components/CommentThread.tsx:262 msgid "Failed to save edit" msgstr "Impossible d'enregistrer la modification" -#: src/pages/UserPublicProfile.tsx:869 +#: src/pages/UserPublicProfile.tsx:872 msgid "Failed to update avatar" msgstr "Impossible de mettre à jour l'avatar" -#: src/components/DumpCreateModal.tsx:352 +#: src/components/DumpCreateModal.tsx:362 msgid "Fetching preview…" msgstr "Récupération de l'aperçu…" -#: src/components/DumpCreateModal.tsx:425 +#: src/components/DumpCreateModal.tsx:471 msgid "Fetching…" msgstr "Récupération…" -#: src/components/DumpCreateModal.tsx:308 +#: src/components/DumpCreateModal.tsx:318 #: src/components/FileDropZone.tsx:31 msgid "File" msgstr "Fichier" -#: src/components/DumpCreateModal.tsx:202 +#: src/components/DumpCreateModal.tsx:211 msgid "File too large (max 50 MB)." msgstr "Fichier trop volumineux (max 50 Mo)." @@ -495,8 +510,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:19 -#: src/pages/UserPublicProfile.tsx:967 +#: src/components/FeedTabBar.tsx:20 +#: src/pages/UserPublicProfile.tsx:970 msgid "Followed" msgstr "Suivi" @@ -506,13 +521,13 @@ msgstr "Suivi" msgid "Followed ({0}{1})" msgstr "Suivies ({0}{1})" -#: src/pages/UserPublicProfile.tsx:1115 +#: src/pages/UserPublicProfile.tsx:1118 msgid "Followed playlists" msgstr "Collections suivies" #: src/components/FollowButton.tsx:37 #: src/components/FollowButton.tsx:64 -#: src/pages/UserPublicProfile.tsx:1073 +#: src/pages/UserPublicProfile.tsx:1076 msgid "Following" msgstr "Abonné" @@ -556,8 +571,8 @@ msgstr "Lien invalide" msgid "invited by" msgstr "invité par" -#: src/pages/UserPublicProfile.tsx:968 -#: src/pages/UserPublicProfile.tsx:1160 +#: src/pages/UserPublicProfile.tsx:971 +#: src/pages/UserPublicProfile.tsx:1163 msgid "Invitees" msgstr "Invités" @@ -569,24 +584,29 @@ msgstr "Journal" msgid "just now" msgstr "à l'instant" -#: src/pages/UserPublicProfile.tsx:1253 +#: src/pages/UserPublicProfile.tsx:1256 msgid "Light" msgstr "Clair" -#: src/contexts/WSProvider.tsx:359 +#: src/components/LikeButton.tsx:30 +msgid "Like" +msgstr "Aimer" + +#: src/contexts/WSProvider.tsx:437 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:125 +#: src/components/AppHeader.tsx:130 msgid "Live updates unavailable." msgstr "Mises à jour en direct indisponibles." -#: src/pages/Notifications.tsx:415 +#: src/components/UserListPopover.tsx:188 +#: src/pages/Notifications.tsx:440 msgid "Load more" msgstr "Charger plus" -#: src/pages/Dump.tsx:194 -#: src/pages/DumpEdit.tsx:146 +#: src/pages/Dump.tsx:200 +#: src/pages/DumpEdit.tsx:153 msgid "Loading dump…" msgstr "Chargement de la reco…" @@ -594,7 +614,7 @@ msgstr "Chargement de la reco…" #: src/pages/index/HotFeed.tsx:64 #: src/pages/index/JournalFeed.tsx:77 #: src/pages/index/NewFeed.tsx:64 -#: src/pages/Search.tsx:235 +#: src/pages/Search.tsx:242 #: src/pages/UserDumps.tsx:93 #: src/pages/UserPlaylists.tsx:417 #: src/pages/UserPlaylists.tsx:452 @@ -612,29 +632,39 @@ msgstr "Chargement du profil…" #: src/components/PlaylistMembershipPanel.tsx:28 #: src/components/TextEditor.tsx:289 +#: src/components/UserListPopover.tsx:149 +#: src/components/UserListPopover.tsx:187 #: src/pages/index/FollowedFeed.tsx:77 #: src/pages/index/HotFeed.tsx:32 #: src/pages/index/JournalFeed.tsx:44 #: src/pages/index/NewFeed.tsx:32 -#: src/pages/Notifications.tsx:338 -#: src/pages/Notifications.tsx:414 +#: src/pages/Notifications.tsx:363 +#: src/pages/Notifications.tsx:439 #: src/pages/UserDumps.tsx:51 #: src/pages/UserPlaylists.tsx:342 -#: src/pages/UserPublicProfile.tsx:1078 -#: src/pages/UserPublicProfile.tsx:1120 -#: src/pages/UserPublicProfile.tsx:1165 +#: src/pages/UserPublicProfile.tsx:1081 +#: src/pages/UserPublicProfile.tsx:1123 +#: src/pages/UserPublicProfile.tsx:1168 #: src/pages/UserUpvoted.tsx:123 msgid "Loading…" msgstr "Chargement…" -#: src/components/AppHeader.tsx:106 +#: src/components/AppHeader.tsx:111 #: src/pages/UserLogin.tsx:87 #: src/pages/UserLogin.tsx:117 msgid "Log in" msgstr "Se connecter" +#: src/components/LikeButton.tsx:31 +msgid "Log in to like" +msgstr "Se connecter pour aimer" + +#: src/components/VoteButton.tsx:29 +msgid "Log in to vote" +msgstr "Se connecter pour voter" + #: src/pages/UserPublicProfile.tsx:749 -#: src/pages/UserPublicProfile.tsx:883 +#: src/pages/UserPublicProfile.tsx:886 msgid "Log out" msgstr "Se déconnecter" @@ -650,7 +680,7 @@ msgstr "Connexion échouée" msgid "Max 50 MB" msgstr "Max 50 Mo" -#: src/pages/Notifications.tsx:331 +#: src/pages/Notifications.tsx:356 msgid "new" msgstr "nouveau" @@ -658,9 +688,9 @@ msgstr "nouveau" msgid "New" msgstr "Nouveau" -#: src/components/DumpCreateModal.tsx:277 -#: src/pages/UserDumps.tsx:114 -#: src/pages/UserPublicProfile.tsx:1308 +#: src/components/DumpCreateModal.tsx:287 +#: src/pages/UserDumps.tsx:115 +#: src/pages/UserPublicProfile.tsx:1312 msgid "New dump" msgstr "Nouvelle reco" @@ -669,8 +699,8 @@ msgstr "Nouvelle reco" msgid "New password" msgstr "Nouveau mot de passe" -#: src/components/NewPlaylistForm.tsx:30 -#: src/components/NewPlaylistForm.tsx:34 +#: src/components/NewPlaylistForm.tsx:33 +#: src/components/NewPlaylistForm.tsx:40 msgid "New playlist" msgstr "Nouvelle collection" @@ -678,7 +708,7 @@ msgstr "Nouvelle collection" msgid "No dumps in this playlist yet." msgstr "Aucune reco dans cette collection pour l'instant." -#: src/pages/Search.tsx:215 +#: src/pages/Search.tsx:222 msgid "No dumps match \"{q}\"." msgstr "Aucune reco ne correspond à « {q} »." @@ -693,42 +723,46 @@ msgid "No emoji found." msgstr "Aucun emoji trouvé." #: src/pages/UserPlaylists.tsx:439 -#: src/pages/UserPublicProfile.tsx:1133 +#: src/pages/UserPublicProfile.tsx:1136 msgid "No followed playlists yet." msgstr "Pas encore de collections suivies." -#: src/pages/UserPublicProfile.tsx:1178 +#: src/pages/UserPublicProfile.tsx:1181 msgid "No invitees yet." msgstr "Aucun invité pour le moment." -#: src/pages/Search.tsx:274 +#: src/components/UserListPopover.tsx:157 +msgid "No one yet." +msgstr "Personne pour le moment." + +#: src/pages/Search.tsx:281 msgid "No playlists match \"{q}\"." msgstr "Aucune collection ne correspond à « {q} »." #: src/components/PlaylistMembershipPanel.tsx:34 #: src/pages/UserPlaylists.tsx:397 -#: src/pages/UserPublicProfile.tsx:1044 +#: src/pages/UserPublicProfile.tsx:1047 msgid "No playlists yet." msgstr "Pas encore de collections." -#: src/pages/Search.tsx:248 +#: src/pages/Search.tsx:255 msgid "No users match \"{q}\"." msgstr "Aucun utilisateur ne correspond à « {q} »." -#: src/pages/UserPublicProfile.tsx:1091 +#: src/pages/UserPublicProfile.tsx:1094 msgid "Not following anyone yet." msgstr "Aucun abonnement pour le moment." -#: src/pages/Notifications.tsx:349 -#: src/pages/UserDumps.tsx:123 -#: src/pages/UserPublicProfile.tsx:1318 -#: src/pages/UserPublicProfile.tsx:1441 +#: src/pages/Notifications.tsx:374 +#: src/pages/UserDumps.tsx:125 +#: src/pages/UserPublicProfile.tsx:1323 +#: src/pages/UserPublicProfile.tsx:1446 #: src/pages/UserUpvoted.tsx:195 msgid "Nothing here yet." msgstr "Rien ici pour l'instant." #: src/components/NotificationBell.tsx:42 -#: src/pages/Notifications.tsx:327 +#: src/pages/Notifications.tsx:352 msgid "Notifications" msgstr "Notifications" @@ -736,7 +770,7 @@ msgstr "Notifications" msgid "Notifications ({unreadNotificationCount} unread)" msgstr "Notifications ({unreadNotificationCount} non lues)" -#: src/components/SearchBar.tsx:83 +#: src/components/SearchBar.tsx:84 msgid "Open search" msgstr "Ouvrir la recherche" @@ -745,7 +779,7 @@ msgid "or <0>browse files" msgstr "ou <0>parcourir les fichiers" #: src/pages/UserLogin.tsx:106 -#: src/pages/UserPublicProfile.tsx:1198 +#: src/pages/UserPublicProfile.tsx:1201 msgid "Password" msgstr "Mot de passe" @@ -767,49 +801,49 @@ msgstr "Mot de passe mis à jour" msgid "Passwords do not match" msgstr "Les mots de passe ne correspondent pas" -#: src/components/AppHeader.tsx:82 +#: src/components/AppHeader.tsx:85 #: src/components/UserMenu.tsx:62 #: src/pages/Search.tsx:175 #: src/pages/UserPlaylists.tsx:368 -#: src/pages/UserPublicProfile.tsx:966 +#: src/pages/UserPublicProfile.tsx:969 msgid "Playlists" msgstr "Collections" #. placeholder {0}: playlists.items.length #. placeholder {1}: playlists.hasMore ? "+" : "" -#: src/pages/UserPublicProfile.tsx:1013 +#: src/pages/UserPublicProfile.tsx:1016 msgid "Playlists ({0}{1})" msgstr "Collections ({0}{1})" -#: src/components/DumpCreateModal.tsx:195 +#: src/components/DumpCreateModal.tsx:204 msgid "Please select a file." msgstr "Veuillez sélectionner un fichier." -#: src/components/CommentThread.tsx:499 +#: src/components/CommentThread.tsx:512 msgid "Post comment" msgstr "Publier le commentaire" -#: src/components/CommentThread.tsx:362 +#: src/components/CommentThread.tsx:375 msgid "Post reply" msgstr "Publier la réponse" -#: src/components/CommentThread.tsx:361 -#: src/components/CommentThread.tsx:498 +#: src/components/CommentThread.tsx:374 +#: src/components/CommentThread.tsx:511 msgid "Posting…" msgstr "Publication…" #: src/components/DumpCard.tsx:104 -#: src/components/JournalCard.tsx:87 +#: src/components/JournalCard.tsx:105 #: src/components/PlaylistCard.tsx:73 #: src/components/PlaylistMembershipPanel.tsx:55 -#: src/pages/Dump.tsx:287 +#: src/pages/Dump.tsx:389 #: src/pages/PlaylistDetail.tsx:759 msgid "private" msgstr "privé" -#: src/components/DumpCreateModal.tsx:404 +#: src/components/DumpCreateModal.tsx:450 #: src/components/PlaylistCreateForm.tsx:99 -#: src/pages/DumpEdit.tsx:285 +#: src/pages/DumpEdit.tsx:306 #: src/pages/PlaylistDetail.tsx:746 msgid "Private" msgstr "Privé" @@ -819,18 +853,18 @@ msgstr "Privé" msgid "public" msgstr "public" -#: src/components/DumpCreateModal.tsx:396 +#: src/components/DumpCreateModal.tsx:442 #: src/components/PlaylistCreateForm.tsx:92 -#: src/pages/DumpEdit.tsx:278 +#: src/pages/DumpEdit.tsx:299 #: src/pages/PlaylistDetail.tsx:739 msgid "Public" msgstr "Public" -#: src/pages/DumpEdit.tsx:214 +#: src/pages/DumpEdit.tsx:221 msgid "Refresh metadata" msgstr "Actualiser les métadonnées" -#: src/pages/DumpEdit.tsx:213 +#: src/pages/DumpEdit.tsx:220 msgid "Refreshing…" msgstr "Actualisation…" @@ -855,11 +889,19 @@ msgstr "Supprimer le fichier" msgid "Remove from playlist" msgstr "Retirer de la collection" -#: src/pages/DumpEdit.tsx:251 +#: src/components/LikeButton.tsx:30 +msgid "Remove like" +msgstr "Retirer le j'aime" + +#: src/components/VoteButton.tsx:28 +msgid "Remove vote" +msgstr "Retirer le vote" + +#: src/pages/DumpEdit.tsx:272 msgid "Replace file" msgstr "Remplacer le fichier" -#: src/components/CommentThread.tsx:297 +#: src/components/CommentThread.tsx:310 msgid "Reply" msgstr "Répondre" @@ -871,42 +913,44 @@ msgstr "Échec de la demande" msgid "Reset failed" msgstr "Échec de la réinitialisation" -#: src/pages/Dump.tsx:211 -#: src/pages/DumpEdit.tsx:163 +#: src/pages/Dump.tsx:217 +#: src/pages/DumpEdit.tsx:170 msgid "Retry" msgstr "Réessayer" -#: src/components/CommentThread.tsx:270 -#: src/pages/DumpEdit.tsx:306 +#: src/components/CommentThread.tsx:275 +#: src/pages/Dump.tsx:322 +#: src/pages/DumpEdit.tsx:329 #: src/pages/PlaylistDetail.tsx:673 #: src/pages/UserPublicProfile.tsx:834 -#: src/pages/UserPublicProfile.tsx:913 +#: src/pages/UserPublicProfile.tsx:916 msgid "Save" msgstr "Enregistrer" #: src/components/ChangePasswordModal.tsx:177 -#: src/components/CommentThread.tsx:269 +#: src/components/CommentThread.tsx:274 +#: src/pages/Dump.tsx:322 #: src/pages/PlaylistDetail.tsx:673 #: src/pages/ResetPassword.tsx:152 #: src/pages/UserPublicProfile.tsx:833 -#: src/pages/UserPublicProfile.tsx:913 +#: src/pages/UserPublicProfile.tsx:916 msgid "Saving…" msgstr "Enregistrement…" -#: src/components/AppHeader.tsx:62 -#: src/components/SearchBar.tsx:77 +#: src/components/AppHeader.tsx:65 +#: src/components/SearchBar.tsx:78 msgid "Search" msgstr "Rechercher" -#: src/components/SearchBar.tsx:73 +#: src/components/SearchBar.tsx:74 msgid "Search dumps, users, playlists…" msgstr "Rechercher des recos, utilisateurs, collections…" -#: src/pages/Search.tsx:209 +#: src/pages/Search.tsx:216 msgid "Search failed" msgstr "Recherche échouée" -#: src/pages/Search.tsx:204 +#: src/pages/Search.tsx:211 msgid "Searching…" msgstr "Recherche…" @@ -918,7 +962,7 @@ msgstr "Envoyer le lien de réinitialisation" msgid "Sending…" msgstr "Envoi…" -#: src/components/AppHeader.tsx:97 +#: src/components/AppHeader.tsx:100 msgid "Server unreachable" msgstr "Serveur inaccessible" @@ -927,7 +971,7 @@ msgstr "Serveur inaccessible" msgid "Set new password" msgstr "Définir un nouveau mot de passe" -#: src/pages/UserPublicProfile.tsx:970 +#: src/pages/UserPublicProfile.tsx:973 msgid "Settings" msgstr "Paramètres" @@ -935,11 +979,11 @@ msgstr "Paramètres" msgid "Something went wrong" msgstr "Une erreur est survenue" -#: src/pages/UserPublicProfile.tsx:1217 +#: src/pages/UserPublicProfile.tsx:1220 msgid "Style" msgstr "Style" -#: src/components/SearchBar.tsx:83 +#: src/components/SearchBar.tsx:84 msgid "Submit search" msgstr "Lancer la recherche" @@ -959,11 +1003,13 @@ msgstr "Rien à voir, circulez." msgid "This reset link is missing or malformed." msgstr "Ce lien de réinitialisation est absent ou malformé." +#: src/components/DumpCreateModal.tsx:384 #: src/components/PlaylistCreateForm.tsx:72 +#: src/pages/DumpEdit.tsx:235 msgid "Title" msgstr "Titre" -#: src/pages/Notifications.tsx:365 +#: src/pages/Notifications.tsx:390 msgid "Today" msgstr "Aujourd'hui" @@ -988,26 +1034,30 @@ msgstr "Erreur inconnue" msgid "Upload failed" msgstr "Envoi échoué" -#: src/components/DumpCreateModal.tsx:426 +#: src/components/DumpCreateModal.tsx:472 msgid "Uploading…" msgstr "Envoi…" +#: src/components/VoteButton.tsx:28 +msgid "Upvote" +msgstr "Voter" + #: src/pages/UserUpvoted.tsx:191 msgid "Upvoted" msgstr "Voté" #. placeholder {0}: votes.items.length #. placeholder {1}: votes.hasMore ? "+" : "" -#: src/pages/UserPublicProfile.tsx:993 +#: src/pages/UserPublicProfile.tsx:996 msgid "Upvoted ({0}{1})" msgstr "Votés ({0}{1})" -#: src/components/DumpCreateModal.tsx:325 -#: src/pages/DumpEdit.tsx:230 +#: src/components/DumpCreateModal.tsx:335 +#: src/pages/DumpEdit.tsx:251 msgid "URL" msgstr "URL" -#: src/components/DumpCreateModal.tsx:178 +#: src/components/DumpCreateModal.tsx:187 msgid "URL is required." msgstr "L'URL est obligatoire." @@ -1024,42 +1074,42 @@ msgstr "Nom d'utilisateur" msgid "Users" msgstr "Utilisateurs" -#: src/pages/UserPublicProfile.tsx:1063 -#: src/pages/UserPublicProfile.tsx:1106 -#: src/pages/UserPublicProfile.tsx:1148 -#: src/pages/UserPublicProfile.tsx:1339 -#: src/pages/UserPublicProfile.tsx:1471 +#: src/pages/UserPublicProfile.tsx:1066 +#: src/pages/UserPublicProfile.tsx:1109 +#: src/pages/UserPublicProfile.tsx:1151 +#: src/pages/UserPublicProfile.tsx:1344 +#: src/pages/UserPublicProfile.tsx:1476 msgid "View all →" msgstr "Tout voir →" -#: src/components/DumpCreateModal.tsx:440 +#: src/components/DumpCreateModal.tsx:486 msgid "View dump →" msgstr "Voir la reco →" -#: src/components/DumpCreateModal.tsx:383 -#: src/pages/DumpEdit.tsx:266 +#: src/components/DumpCreateModal.tsx:429 +#: src/pages/DumpEdit.tsx:287 msgid "What makes it worth it?" msgstr "Pourquoi on en voudrait ?" -#: src/pages/UserPublicProfile.tsx:901 -#: src/pages/UserPublicProfile.tsx:950 +#: src/pages/UserPublicProfile.tsx:904 +#: src/pages/UserPublicProfile.tsx:953 msgid "Who am I?" msgstr "Qui suis-je ?" -#: src/components/DumpCreateModal.tsx:376 -#: src/pages/DumpEdit.tsx:260 +#: src/components/DumpCreateModal.tsx:422 +#: src/pages/DumpEdit.tsx:281 msgid "Why?" msgstr "Pourquoi ?" -#: src/components/CommentThread.tsx:342 +#: src/components/CommentThread.tsx:355 msgid "Write a reply…" msgstr "Écrire une réponse…" -#: src/pages/Notifications.tsx:367 +#: src/pages/Notifications.tsx:392 msgid "Yesterday" msgstr "Hier" -#: src/pages/Notifications.tsx:352 +#: src/pages/Notifications.tsx:377 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." @@ -1067,7 +1117,7 @@ msgstr "Vous serez notifié lorsque quelqu'un suit vos collections, vote pour vo #: src/pages/index/HotFeed.tsx:69 #: src/pages/index/JournalFeed.tsx:82 #: src/pages/index/NewFeed.tsx:69 -#: src/pages/Search.tsx:240 +#: src/pages/Search.tsx:247 #: src/pages/UserDumps.tsx:98 #: src/pages/UserPlaylists.tsx:422 #: src/pages/UserPlaylists.tsx:457