v3: fixed search in prod, lots of UI fixes across the app
All checks were successful
Build and Publish Docker Image / build-and-push (push) Successful in 46s
All checks were successful
Build and Publish Docker Image / build-and-push (push) Successful in 46s
This commit is contained in:
@@ -6,5 +6,6 @@ await extract(config, {
|
|||||||
verbose: false,
|
verbose: false,
|
||||||
watch: false,
|
watch: false,
|
||||||
files: [],
|
files: [],
|
||||||
|
clean: true,
|
||||||
workersOptions: { poolSize: 0 },
|
workersOptions: { poolSize: 0 },
|
||||||
});
|
});
|
||||||
|
|||||||
206
src/App.css
206
src/App.css
@@ -99,21 +99,25 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.dump-header-block {
|
.dump-header-block {
|
||||||
display: grid;
|
display: flex;
|
||||||
grid-template-columns: auto 1fr;
|
|
||||||
column-gap: 1rem;
|
|
||||||
row-gap: 0.3rem;
|
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
gap: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dump-title,
|
.dump-header-left {
|
||||||
.dump-op {
|
display: flex;
|
||||||
grid-column: 2;
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.5rem;
|
||||||
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dump-header-block .vote-btn,
|
.dump-header-right {
|
||||||
.dump-header-block .btn-add-playlist {
|
flex: 1;
|
||||||
justify-self: center;
|
min-width: 0;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 0.3rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dump-title {
|
.dump-title {
|
||||||
@@ -1019,6 +1023,18 @@ body.has-player .fab-new {
|
|||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media (max-width: 512px) {
|
||||||
|
.rich-content-card {
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rich-content-thumbnail {
|
||||||
|
width: 100%;
|
||||||
|
min-width: 0;
|
||||||
|
max-height: 180px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.rich-content-body {
|
.rich-content-body {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
@@ -1033,7 +1049,7 @@ body.has-player .fab-new {
|
|||||||
.rich-content-badge {
|
.rich-content-badge {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
background: var(--color-youtube);
|
background: var(--color-youtube);
|
||||||
color: var(--color-on-accent);
|
color: var(--color-text);
|
||||||
font-size: 0.7rem;
|
font-size: 0.7rem;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
letter-spacing: 0.04em;
|
letter-spacing: 0.04em;
|
||||||
@@ -1272,9 +1288,9 @@ body.has-player .fab-new {
|
|||||||
gap: 1.5rem;
|
gap: 1.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.profile-tabs {
|
.profile-tabs-scroller {
|
||||||
margin-top: 0.5rem;
|
margin-top: 0.5rem;
|
||||||
padding-bottom: 0.75rem;
|
padding-bottom: 0.5rem;
|
||||||
border-bottom: 2px solid var(--color-border);
|
border-bottom: 2px solid var(--color-border);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1592,6 +1608,7 @@ body.has-player .fab-new {
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 0.75rem;
|
gap: 0.75rem;
|
||||||
|
flex-wrap: wrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.profile-subpage-title {
|
.profile-subpage-title {
|
||||||
@@ -1694,8 +1711,9 @@ body.has-player .fab-new {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.app-header-status {
|
.app-header-status {
|
||||||
margin: 1rem auto 0 auto;
|
margin: 1rem auto 0;
|
||||||
max-width: 860px;
|
max-width: 860px;
|
||||||
|
width: calc(100% - 2rem);
|
||||||
padding: 0.75rem 1rem;
|
padding: 0.75rem 1rem;
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
@@ -2240,7 +2258,7 @@ body.has-player .fab-new {
|
|||||||
|
|
||||||
.btn-danger {
|
.btn-danger {
|
||||||
background: var(--color-danger-bg);
|
background: var(--color-danger-bg);
|
||||||
color: var(--color-on-accent);
|
color: var(--color-text);
|
||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2317,7 +2335,11 @@ body.has-player .fab-new {
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
margin-top: 0.5rem;
|
margin-top: 0.5rem;
|
||||||
gap: 0.75rem;
|
gap: 0.75rem;
|
||||||
padding: 0.6rem 1.25rem 0;
|
padding: 0.6rem 1.25rem 0.4rem;
|
||||||
|
max-width: 860px;
|
||||||
|
width: 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
align-self: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (min-width: 860px) {
|
@media (min-width: 860px) {
|
||||||
@@ -2326,11 +2348,50 @@ body.has-player .fab-new {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ── Feed sort buttons ── */
|
/* ── Feed sort scroller + buttons ── */
|
||||||
|
|
||||||
|
/* Wrapper: constrains width, clips scroll overflow, and carries the gradient hint */
|
||||||
|
.feed-sort-scroller {
|
||||||
|
position: relative;
|
||||||
|
min-width: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Right-edge gradient: absolutely positioned over the scroll container,
|
||||||
|
always at the viewport-right edge regardless of scroll position */
|
||||||
|
.feed-sort-scroller::after {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
width: 2rem;
|
||||||
|
background: linear-gradient(to right, transparent, var(--color-bg));
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* In the app header the tabs never overflow — suppress the gradient there */
|
||||||
|
.app-header .feed-sort-scroller::after {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* In the index below-header the scroller should fill the available row width */
|
||||||
|
.index-below-header .feed-sort-scroller {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
.feed-sort {
|
.feed-sort {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 0.4rem;
|
gap: 0.4rem;
|
||||||
|
overflow-x: auto;
|
||||||
|
scrollbar-width: none;
|
||||||
|
padding-bottom: 0.3rem;
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.feed-sort::-webkit-scrollbar {
|
||||||
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.feed-sort-btn {
|
.feed-sort-btn {
|
||||||
@@ -2345,6 +2406,8 @@ body.has-player .fab-new {
|
|||||||
letter-spacing: 0.04em;
|
letter-spacing: 0.04em;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
transition: border-color 0.15s, background 0.15s, color 0.15s;
|
transition: border-color 0.15s, background 0.15s, color 0.15s;
|
||||||
|
white-space: nowrap;
|
||||||
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.feed-sort-btn.active {
|
.feed-sort-btn.active {
|
||||||
@@ -2433,6 +2496,64 @@ body.has-player .fab-new {
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Desktop: wrapper is transparent — preview and vote become direct flex items of dump-card-inner */
|
||||||
|
.dump-card-left {
|
||||||
|
display: contents;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* With display:contents, all three are siblings in dump-card-inner's flex context.
|
||||||
|
DOM order is: preview, vote, body — use order to restore: preview, body, vote. */
|
||||||
|
.dump-card-body {
|
||||||
|
order: 1;
|
||||||
|
margin-left: 0.25rem; /* total gap to preview = container gap (0.75) + this = 1rem */
|
||||||
|
}
|
||||||
|
|
||||||
|
.dump-card-vote {
|
||||||
|
order: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 512px) {
|
||||||
|
.dump-card-inner,
|
||||||
|
.playlist-card-inner {
|
||||||
|
gap: 0.5rem;
|
||||||
|
padding: 0.6rem 0.75rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Reset flex order and margin — narrow mode uses dump-card-left as a real flex container */
|
||||||
|
.dump-card-body,
|
||||||
|
.dump-card-vote {
|
||||||
|
order: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Left column: preview + vote stacked with fixed gap, independent of body height */
|
||||||
|
.dump-card-left {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
gap: 0.5rem;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dump-card-body {
|
||||||
|
align-self: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dump-card-meta {
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 0.1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dump-card-comment {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.playlist-card-description {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* ── Shared card preview thumbnail ── */
|
/* ── Shared card preview thumbnail ── */
|
||||||
.dump-card-preview,
|
.dump-card-preview,
|
||||||
.playlist-card-preview {
|
.playlist-card-preview {
|
||||||
@@ -2492,6 +2613,7 @@ body.has-player .fab-new {
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 0.2rem;
|
gap: 0.2rem;
|
||||||
|
margin-left: 0.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ── Shared card title link ── */
|
/* ── Shared card title link ── */
|
||||||
@@ -2580,11 +2702,35 @@ body.has-player .fab-new {
|
|||||||
gap: 0.6rem;
|
gap: 0.6rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media (max-width: 512px) {
|
||||||
|
.playlist-card-meta {
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-start;
|
||||||
|
gap: 0.1rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.dump-card-vote {
|
.dump-card-vote {
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
align-self: center;
|
align-self: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media (max-width: 512px) {
|
||||||
|
.index-below-header .index-presence {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 512px) {
|
||||||
|
.app-header-brand-name {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-new-label {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* ── Playlist card image thumbnail ── */
|
/* ── Playlist card image thumbnail ── */
|
||||||
.playlist-card-img {
|
.playlist-card-img {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@@ -2888,6 +3034,14 @@ body.has-player .fab-new {
|
|||||||
font-size: 0.82rem;
|
font-size: 0.82rem;
|
||||||
opacity: 0.6;
|
opacity: 0.6;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media (max-width: 512px) {
|
||||||
|
.playlist-detail-meta {
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-start;
|
||||||
|
gap: 0.1rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
.playlist-detail-owner {
|
.playlist-detail-owner {
|
||||||
color: inherit;
|
color: inherit;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
@@ -2898,7 +3052,7 @@ body.has-player .fab-new {
|
|||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ── Playlist header inline edit ── */
|
|
||||||
.playlist-detail-content {
|
.playlist-detail-content {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
@@ -4315,6 +4469,22 @@ body.has-player .fab-new {
|
|||||||
display: contents;
|
display: contents;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media (max-width: 512px) {
|
||||||
|
.profile-appearance-grid {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-start;
|
||||||
|
gap: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile-appearance-row {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-start;
|
||||||
|
gap: 0.3rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.profile-appearance-label {
|
.profile-appearance-label {
|
||||||
font-size: 0.85rem;
|
font-size: 0.85rem;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
|
|||||||
@@ -29,8 +29,8 @@ export function AppHeader(
|
|||||||
className={`app-header${centerSlot ? " app-header--has-center" : ""}`}
|
className={`app-header${centerSlot ? " app-header--has-center" : ""}`}
|
||||||
>
|
>
|
||||||
<Link to="/?tab=hot" className="app-header-brand">
|
<Link to="/?tab=hot" className="app-header-brand">
|
||||||
🚚 {document.querySelector<HTMLMetaElement>('meta[name="site-name"]')
|
🚚<span className="app-header-brand-name">{" "}{document.querySelector<HTMLMetaElement>('meta[name="site-name"]')
|
||||||
?.content ?? "gerbeur"}
|
?.content ?? "gerbeur"}</span>
|
||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
{centerSlot && <div className="app-header-center">{centerSlot}</div>}
|
{centerSlot && <div className="app-header-center">{centerSlot}</div>}
|
||||||
@@ -68,7 +68,7 @@ export function AppHeader(
|
|||||||
disabled={disableNew}
|
disabled={disableNew}
|
||||||
title={disableNew ? t`Server unreachable` : undefined}
|
title={disableNew ? t`Server unreachable` : undefined}
|
||||||
>
|
>
|
||||||
<Trans>+ New</Trans>
|
+<span className="btn-new-label"><Trans> Dump</Trans></span>
|
||||||
</button>
|
</button>
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -40,15 +40,28 @@ export function DumpCard(
|
|||||||
className="dump-card-inner"
|
className="dump-card-inner"
|
||||||
onClick={handleNavigate}
|
onClick={handleNavigate}
|
||||||
>
|
>
|
||||||
<div
|
<div className="dump-card-left">
|
||||||
className="dump-card-preview"
|
<div
|
||||||
onClick={dump.richContent ? (e) => e.stopPropagation() : undefined}
|
className="dump-card-preview"
|
||||||
>
|
onClick={dump.richContent ? (e) => e.stopPropagation() : undefined}
|
||||||
{dump.kind === "file"
|
>
|
||||||
? <FilePreview dump={dump} compact />
|
{dump.kind === "file"
|
||||||
: dump.richContent
|
? <FilePreview dump={dump} compact />
|
||||||
? <RichContentCard richContent={dump.richContent} compact />
|
: dump.richContent
|
||||||
: <span className="dump-card-preview-icon">🔗</span>}
|
? <RichContentCard richContent={dump.richContent} compact />
|
||||||
|
: <span className="dump-card-preview-icon">🔗</span>}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="dump-card-vote" onClick={(e) => e.stopPropagation()}>
|
||||||
|
<VoteButton
|
||||||
|
dumpId={dump.id}
|
||||||
|
count={voteCount}
|
||||||
|
voted={voted}
|
||||||
|
disabled={!canVote}
|
||||||
|
onCast={castVote}
|
||||||
|
onRemove={removeVote}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="dump-card-body">
|
<div className="dump-card-body">
|
||||||
@@ -94,16 +107,6 @@ export function DumpCard(
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="dump-card-vote" onClick={(e) => e.stopPropagation()}>
|
|
||||||
<VoteButton
|
|
||||||
dumpId={dump.id}
|
|
||||||
count={voteCount}
|
|
||||||
voted={voted}
|
|
||||||
disabled={!canVote}
|
|
||||||
onCast={castVote}
|
|
||||||
onRemove={removeVote}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -373,14 +373,14 @@ export function DumpCreateModal(
|
|||||||
|
|
||||||
<div className="form-group">
|
<div className="form-group">
|
||||||
<label htmlFor="dc-comment">
|
<label htmlFor="dc-comment">
|
||||||
<Trans>Why are you dumping this?</Trans>
|
<Trans>Why?</Trans>
|
||||||
</label>
|
</label>
|
||||||
<TextEditor
|
<TextEditor
|
||||||
id="dc-comment"
|
id="dc-comment"
|
||||||
value={comment}
|
value={comment}
|
||||||
onChange={setComment}
|
onChange={setComment}
|
||||||
disabled={submitting}
|
disabled={submitting}
|
||||||
placeholder={t`Tell the community what makes this worth their time...`}
|
placeholder={t`What makes it worth it?`}
|
||||||
rows={3}
|
rows={3}
|
||||||
maxLength={VALIDATION.DUMP_COMMENT_MAX}
|
maxLength={VALIDATION.DUMP_COMMENT_MAX}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ export function FeedTabBar() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
<div className="feed-sort-scroller">
|
||||||
<div className="feed-sort">
|
<div className="feed-sort">
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
@@ -48,5 +49,6 @@ export function FeedTabBar() {
|
|||||||
</button>
|
</button>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ export function NewPlaylistForm(
|
|||||||
className={toggleClassName}
|
className={toggleClassName}
|
||||||
onClick={() => setOpen(true)}
|
onClick={() => setOpen(true)}
|
||||||
>
|
>
|
||||||
{toggleLabel ?? <Trans>+ New playlist</Trans>}
|
{toggleLabel ?? <>+<span className="btn-new-label"><Trans> New playlist</Trans></span></>}
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
{open && (
|
{open && (
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -13,12 +13,29 @@ msgstr ""
|
|||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"Plural-Forms: \n"
|
"Plural-Forms: \n"
|
||||||
|
|
||||||
|
#: src/components/AppHeader.tsx:71
|
||||||
|
msgid " Dump"
|
||||||
|
msgstr " Dump"
|
||||||
|
|
||||||
|
#: src/components/AppHeader.tsx:71
|
||||||
|
msgid " New"
|
||||||
|
msgstr " New"
|
||||||
|
|
||||||
|
#: src/pages/UserDumps.tsx:114
|
||||||
|
#: src/pages/UserPublicProfile.tsx:1332
|
||||||
|
msgid " New dump"
|
||||||
|
msgstr " New dump"
|
||||||
|
|
||||||
|
#: src/components/NewPlaylistForm.tsx:30
|
||||||
|
msgid " New playlist"
|
||||||
|
msgstr " New playlist"
|
||||||
|
|
||||||
#: src/components/CommentThread.tsx:176
|
#: src/components/CommentThread.tsx:176
|
||||||
msgid "[deleted]"
|
msgid "[deleted]"
|
||||||
msgstr "[deleted]"
|
msgstr "[deleted]"
|
||||||
|
|
||||||
#. placeholder {0}: dump.commentCount
|
#. placeholder {0}: dump.commentCount
|
||||||
#: src/components/DumpCard.tsx:82
|
#: src/components/DumpCard.tsx:95
|
||||||
msgid "{0, plural, one {# comment} other {# comments}}"
|
msgid "{0, plural, one {# comment} other {# comments}}"
|
||||||
msgstr "{0, plural, one {# comment} other {# comments}}"
|
msgstr "{0, plural, one {# comment} other {# comments}}"
|
||||||
|
|
||||||
@@ -59,7 +76,7 @@ msgid "← Back"
|
|||||||
msgstr "← Back"
|
msgstr "← Back"
|
||||||
|
|
||||||
#: src/pages/Dump.tsx:218
|
#: src/pages/Dump.tsx:218
|
||||||
#: src/pages/Dump.tsx:321
|
#: src/pages/Dump.tsx:325
|
||||||
#: src/pages/DumpEdit.tsx:170
|
#: src/pages/DumpEdit.tsx:170
|
||||||
msgid "← Back to all dumps"
|
msgid "← Back to all dumps"
|
||||||
msgstr "← Back to all dumps"
|
msgstr "← Back to all dumps"
|
||||||
@@ -74,16 +91,15 @@ msgstr "← Back to profile"
|
|||||||
msgid "+ Invite someone"
|
msgid "+ Invite someone"
|
||||||
msgstr "+ Invite someone"
|
msgstr "+ Invite someone"
|
||||||
|
|
||||||
#: src/components/AppHeader.tsx:70
|
#: src/components/AppHeader.tsx:71
|
||||||
msgid "+ New"
|
msgid "+ New"
|
||||||
msgstr "+ New"
|
msgstr "+ New"
|
||||||
|
|
||||||
#: src/pages/UserDumps.tsx:114
|
#: src/pages/UserDumps.tsx:114
|
||||||
#: src/pages/UserPublicProfile.tsx:1330
|
#: src/pages/UserPublicProfile.tsx:1332
|
||||||
msgid "+ New dump"
|
msgid "+ New dump"
|
||||||
msgstr "+ New dump"
|
msgstr "+ New dump"
|
||||||
|
|
||||||
#: src/components/NewPlaylistForm.tsx:30
|
|
||||||
#: src/components/PlaylistMembershipPanel.tsx:80
|
#: src/components/PlaylistMembershipPanel.tsx:80
|
||||||
msgid "+ New playlist"
|
msgid "+ New playlist"
|
||||||
msgstr "+ New playlist"
|
msgstr "+ New playlist"
|
||||||
@@ -94,53 +110,53 @@ msgstr "+ Playlist"
|
|||||||
|
|
||||||
#. placeholder {0}: d.commenterUsername
|
#. placeholder {0}: d.commenterUsername
|
||||||
#. placeholder {1}: d.dumpTitle
|
#. placeholder {1}: d.dumpTitle
|
||||||
#: src/pages/Notifications.tsx:171
|
#: src/pages/Notifications.tsx:179
|
||||||
msgid "<0>{0}</0> commented on <1>{1}</1>"
|
msgid "<0>{0}</0> commented on <1>{1}</1>"
|
||||||
msgstr "<0>{0}</0> commented on <1>{1}</1>"
|
msgstr "<0>{0}</0> commented on <1>{1}</1>"
|
||||||
|
|
||||||
#. placeholder {0}: d.followerUsername
|
#. placeholder {0}: d.followerUsername
|
||||||
#. placeholder {1}: d.playlistTitle
|
#. placeholder {1}: d.playlistTitle
|
||||||
#: src/pages/Notifications.tsx:131
|
#: src/pages/Notifications.tsx:139
|
||||||
msgid "<0>{0}</0> followed your playlist <1>{1}</1>"
|
msgid "<0>{0}</0> followed your playlist <1>{1}</1>"
|
||||||
msgstr "<0>{0}</0> followed your playlist <1>{1}</1>"
|
msgstr "<0>{0}</0> followed your playlist <1>{1}</1>"
|
||||||
|
|
||||||
#. placeholder {0}: d.mentionerUsername
|
#. placeholder {0}: d.mentionerUsername
|
||||||
#: src/pages/Notifications.tsx:183
|
#: src/pages/Notifications.tsx:191
|
||||||
msgid "<0>{0}</0> mentioned you in <1>{where}</1>"
|
msgid "<0>{0}</0> mentioned you in <1>{where}</1>"
|
||||||
msgstr "<0>{0}</0> mentioned you in <1>{where}</1>"
|
msgstr "<0>{0}</0> mentioned you in <1>{where}</1>"
|
||||||
|
|
||||||
#. placeholder {0}: d.dumperUsername
|
#. placeholder {0}: d.dumperUsername
|
||||||
#. placeholder {1}: d.dumpTitle
|
#. placeholder {1}: d.dumpTitle
|
||||||
#: src/pages/Notifications.tsx:141
|
#: src/pages/Notifications.tsx:149
|
||||||
msgid "<0>{0}</0> posted <1>{1}</1>"
|
msgid "<0>{0}</0> posted <1>{1}</1>"
|
||||||
msgstr "<0>{0}</0> posted <1>{1}</1>"
|
msgstr "<0>{0}</0> posted <1>{1}</1>"
|
||||||
|
|
||||||
#. placeholder {0}: d.followerUsername
|
#. placeholder {0}: d.followerUsername
|
||||||
#: src/pages/Notifications.tsx:122
|
#: src/pages/Notifications.tsx:130
|
||||||
msgid "<0>{0}</0> started following you"
|
msgid "<0>{0}</0> started following you"
|
||||||
msgstr "<0>{0}</0> started following you"
|
msgstr "<0>{0}</0> started following you"
|
||||||
|
|
||||||
#. placeholder {0}: d.voterUsername
|
#. placeholder {0}: d.voterUsername
|
||||||
#. placeholder {1}: d.dumpTitle
|
#. placeholder {1}: d.dumpTitle
|
||||||
#: src/pages/Notifications.tsx:161
|
#: src/pages/Notifications.tsx:169
|
||||||
msgid "<0>{0}</0> upvoted <1>{1}</1>"
|
msgid "<0>{0}</0> upvoted <1>{1}</1>"
|
||||||
msgstr "<0>{0}</0> upvoted <1>{1}</1>"
|
msgstr "<0>{0}</0> upvoted <1>{1}</1>"
|
||||||
|
|
||||||
#. placeholder {0}: d.dumpTitle
|
#. placeholder {0}: d.dumpTitle
|
||||||
#. placeholder {1}: d.playlistTitle
|
#. placeholder {1}: d.playlistTitle
|
||||||
#: src/pages/Notifications.tsx:151
|
#: src/pages/Notifications.tsx:159
|
||||||
msgid "<0>{0}</0> was added to <1>{1}</1>"
|
msgid "<0>{0}</0> was added to <1>{1}</1>"
|
||||||
msgstr "<0>{0}</0> was added to <1>{1}</1>"
|
msgstr "<0>{0}</0> was added to <1>{1}</1>"
|
||||||
|
|
||||||
#: src/pages/Notifications.tsx:181
|
#: src/pages/Notifications.tsx:189
|
||||||
msgid "a comment"
|
msgid "a comment"
|
||||||
msgstr "a comment"
|
msgstr "a comment"
|
||||||
|
|
||||||
#: src/pages/Notifications.tsx:181
|
#: src/pages/Notifications.tsx:189
|
||||||
msgid "a post"
|
msgid "a post"
|
||||||
msgstr "a post"
|
msgstr "a post"
|
||||||
|
|
||||||
#: src/pages/UserPublicProfile.tsx:1215
|
#: src/pages/UserPublicProfile.tsx:1217
|
||||||
msgid "Account"
|
msgid "Account"
|
||||||
msgstr "Account"
|
msgstr "Account"
|
||||||
|
|
||||||
@@ -161,10 +177,6 @@ msgstr "Add email…"
|
|||||||
msgid "Add to playlist"
|
msgid "Add to playlist"
|
||||||
msgstr "Add to playlist"
|
msgstr "Add to playlist"
|
||||||
|
|
||||||
#: api/auth:
|
|
||||||
#~ msgid "Admin access required"
|
|
||||||
#~ msgstr "Admin access required"
|
|
||||||
|
|
||||||
#: src/pages/UserDumps.tsx:114
|
#: src/pages/UserDumps.tsx:114
|
||||||
msgid "All {0, plural, one {# dump} other {# dumps}} loaded."
|
msgid "All {0, plural, one {# dump} other {# dumps}} loaded."
|
||||||
msgstr "All {0, plural, one {# dump} other {# dumps}} loaded."
|
msgstr "All {0, plural, one {# dump} other {# dumps}} loaded."
|
||||||
@@ -177,7 +189,7 @@ msgstr "All {0, plural, one {# upvoted dump} other {# upvoted dumps}} loaded."
|
|||||||
msgid "Already have an account? <0>Log in</0>"
|
msgid "Already have an account? <0>Log in</0>"
|
||||||
msgstr "Already have an account? <0>Log in</0>"
|
msgstr "Already have an account? <0>Log in</0>"
|
||||||
|
|
||||||
#: src/pages/UserPublicProfile.tsx:1234
|
#: src/pages/UserPublicProfile.tsx:1236
|
||||||
msgid "Appearance"
|
msgid "Appearance"
|
||||||
msgstr "Appearance"
|
msgstr "Appearance"
|
||||||
|
|
||||||
@@ -187,7 +199,7 @@ msgstr "Appearance"
|
|||||||
msgid "At least {0} characters"
|
msgid "At least {0} characters"
|
||||||
msgstr "At least {0} characters"
|
msgstr "At least {0} characters"
|
||||||
|
|
||||||
#: src/pages/UserPublicProfile.tsx:1268
|
#: src/pages/UserPublicProfile.tsx:1270
|
||||||
msgid "Auto"
|
msgid "Auto"
|
||||||
msgstr "Auto"
|
msgstr "Auto"
|
||||||
|
|
||||||
@@ -219,10 +231,6 @@ msgstr "Cancel"
|
|||||||
msgid "Cancel removal"
|
msgid "Cancel removal"
|
||||||
msgstr "Cancel removal"
|
msgstr "Cancel removal"
|
||||||
|
|
||||||
#: api/comments:
|
|
||||||
#~ msgid "Cannot edit a deleted comment"
|
|
||||||
#~ msgstr "Cannot edit a deleted comment"
|
|
||||||
|
|
||||||
#: src/pages/UserPublicProfile.tsx:772
|
#: src/pages/UserPublicProfile.tsx:772
|
||||||
msgid "Change avatar"
|
msgid "Change avatar"
|
||||||
msgstr "Change avatar"
|
msgstr "Change avatar"
|
||||||
@@ -232,7 +240,7 @@ msgstr "Change avatar"
|
|||||||
msgid "Change password"
|
msgid "Change password"
|
||||||
msgstr "Change password"
|
msgstr "Change password"
|
||||||
|
|
||||||
#: src/pages/UserPublicProfile.tsx:1227
|
#: src/pages/UserPublicProfile.tsx:1229
|
||||||
msgid "Change password…"
|
msgid "Change password…"
|
||||||
msgstr "Change password…"
|
msgstr "Change password…"
|
||||||
|
|
||||||
@@ -245,14 +253,10 @@ msgstr "Checking invite…"
|
|||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Close"
|
msgstr "Close"
|
||||||
|
|
||||||
#: src/pages/UserPublicProfile.tsx:1260
|
#: src/pages/UserPublicProfile.tsx:1262
|
||||||
msgid "Color scheme"
|
msgid "Color scheme"
|
||||||
msgstr "Color scheme"
|
msgstr "Color scheme"
|
||||||
|
|
||||||
#: api/comments:
|
|
||||||
#~ msgid "Comment not found"
|
|
||||||
#~ msgstr "Comment not found"
|
|
||||||
|
|
||||||
#: src/components/ChangePasswordModal.tsx:136
|
#: src/components/ChangePasswordModal.tsx:136
|
||||||
#: src/pages/ResetPassword.tsx:132
|
#: src/pages/ResetPassword.tsx:132
|
||||||
msgid "Confirm new password"
|
msgid "Confirm new password"
|
||||||
@@ -303,7 +307,7 @@ msgstr "Creating…"
|
|||||||
msgid "Current password"
|
msgid "Current password"
|
||||||
msgstr "Current password"
|
msgstr "Current password"
|
||||||
|
|
||||||
#: src/pages/UserPublicProfile.tsx:1282
|
#: src/pages/UserPublicProfile.tsx:1284
|
||||||
msgid "Dark"
|
msgid "Dark"
|
||||||
msgstr "Dark"
|
msgstr "Dark"
|
||||||
|
|
||||||
@@ -359,32 +363,28 @@ msgstr "Drop a replacement here"
|
|||||||
msgid "Dump it"
|
msgid "Dump it"
|
||||||
msgstr "Dump it"
|
msgstr "Dump it"
|
||||||
|
|
||||||
#: api/dumps:
|
|
||||||
#~ msgid "Dump not found"
|
|
||||||
#~ msgstr "Dump not found"
|
|
||||||
|
|
||||||
#: src/components/DumpCreateModal.tsx:438
|
#: src/components/DumpCreateModal.tsx:438
|
||||||
msgid "Dumped!"
|
msgid "Dumped!"
|
||||||
msgstr "Dumped!"
|
msgstr "Dumped!"
|
||||||
|
|
||||||
#: src/pages/Search.tsx:172
|
#: src/pages/Search.tsx:172
|
||||||
#: src/pages/UserDumps.tsx:107
|
#: src/pages/UserDumps.tsx:107
|
||||||
#: src/pages/UserPublicProfile.tsx:967
|
#: src/pages/UserPublicProfile.tsx:968
|
||||||
msgid "Dumps"
|
msgid "Dumps"
|
||||||
msgstr "Dumps"
|
msgstr "Dumps"
|
||||||
|
|
||||||
#. placeholder {0}: dumps.items.length
|
#. placeholder {0}: dumps.items.length
|
||||||
#. placeholder {1}: dumps.hasMore ? "+" : ""
|
#. placeholder {1}: dumps.hasMore ? "+" : ""
|
||||||
#: src/pages/UserPublicProfile.tsx:1004
|
#: src/pages/UserPublicProfile.tsx:1006
|
||||||
msgid "Dumps ({0}{1})"
|
msgid "Dumps ({0}{1})"
|
||||||
msgstr "Dumps ({0}{1})"
|
msgstr "Dumps ({0}{1})"
|
||||||
|
|
||||||
#: src/pages/Notifications.tsx:360
|
#: src/pages/Notifications.tsx:368
|
||||||
msgid "Earlier"
|
msgid "Earlier"
|
||||||
msgstr "Earlier"
|
msgstr "Earlier"
|
||||||
|
|
||||||
#: src/components/CommentThread.tsx:310
|
#: src/components/CommentThread.tsx:310
|
||||||
#: src/pages/Dump.tsx:317
|
#: src/pages/Dump.tsx:321
|
||||||
#: src/pages/PlaylistDetail.tsx:706
|
#: src/pages/PlaylistDetail.tsx:706
|
||||||
msgid "Edit"
|
msgid "Edit"
|
||||||
msgstr "Edit"
|
msgstr "Edit"
|
||||||
@@ -393,7 +393,7 @@ msgstr "Edit"
|
|||||||
#. placeholder {0}: relativeTime(dump.updatedAt)
|
#. placeholder {0}: relativeTime(dump.updatedAt)
|
||||||
#. placeholder {0}: relativeTime(playlist.updatedAt)
|
#. placeholder {0}: relativeTime(playlist.updatedAt)
|
||||||
#: src/components/CommentThread.tsx:237
|
#: src/components/CommentThread.tsx:237
|
||||||
#: src/pages/Dump.tsx:278
|
#: src/pages/Dump.tsx:281
|
||||||
#: src/pages/PlaylistDetail.tsx:779
|
#: src/pages/PlaylistDetail.tsx:779
|
||||||
msgid "edited {0}"
|
msgid "edited {0}"
|
||||||
msgstr "edited {0}"
|
msgstr "edited {0}"
|
||||||
@@ -402,7 +402,7 @@ msgstr "edited {0}"
|
|||||||
#. placeholder {0}: dump.updatedAt.toLocaleString()
|
#. placeholder {0}: dump.updatedAt.toLocaleString()
|
||||||
#. placeholder {0}: playlist.updatedAt.toLocaleString()
|
#. placeholder {0}: playlist.updatedAt.toLocaleString()
|
||||||
#: src/components/CommentThread.tsx:235
|
#: src/components/CommentThread.tsx:235
|
||||||
#: src/pages/Dump.tsx:276
|
#: src/pages/Dump.tsx:279
|
||||||
#: src/pages/PlaylistDetail.tsx:776
|
#: src/pages/PlaylistDetail.tsx:776
|
||||||
msgid "Edited {0}"
|
msgid "Edited {0}"
|
||||||
msgstr "Edited {0}"
|
msgstr "Edited {0}"
|
||||||
@@ -438,10 +438,10 @@ msgstr "Failed to generate invite"
|
|||||||
#: src/pages/index/HotFeed.tsx:36
|
#: src/pages/index/HotFeed.tsx:36
|
||||||
#: src/pages/index/JournalFeed.tsx:48
|
#: src/pages/index/JournalFeed.tsx:48
|
||||||
#: src/pages/index/NewFeed.tsx:36
|
#: src/pages/index/NewFeed.tsx:36
|
||||||
#: src/pages/Notifications.tsx:334
|
#: src/pages/Notifications.tsx:342
|
||||||
#: src/pages/UserPublicProfile.tsx:1106
|
#: src/pages/UserPublicProfile.tsx:1108
|
||||||
#: src/pages/UserPublicProfile.tsx:1148
|
#: src/pages/UserPublicProfile.tsx:1150
|
||||||
#: src/pages/UserPublicProfile.tsx:1193
|
#: src/pages/UserPublicProfile.tsx:1195
|
||||||
msgid "Failed to load"
|
msgid "Failed to load"
|
||||||
msgstr "Failed to load"
|
msgstr "Failed to load"
|
||||||
|
|
||||||
@@ -486,18 +486,6 @@ msgstr "Fetching…"
|
|||||||
msgid "File"
|
msgid "File"
|
||||||
msgstr "File"
|
msgstr "File"
|
||||||
|
|
||||||
#: api/avatars:
|
|
||||||
#~ msgid "File content is not a recognised image (JPEG, PNG, GIF, WebP)"
|
|
||||||
#~ msgstr "File content is not a recognised image (JPEG, PNG, GIF, WebP)"
|
|
||||||
|
|
||||||
#: api/avatars:
|
|
||||||
#~ msgid "File too large (max 5 MB)"
|
|
||||||
#~ msgstr "File too large (max 5 MB)"
|
|
||||||
|
|
||||||
#: api/dumps:
|
|
||||||
#~ msgid "File too large (max 50 MB)"
|
|
||||||
#~ msgstr "File too large (max 50 MB)"
|
|
||||||
|
|
||||||
#: src/components/DumpCreateModal.tsx:202
|
#: src/components/DumpCreateModal.tsx:202
|
||||||
msgid "File too large (max 50 MB)."
|
msgid "File too large (max 50 MB)."
|
||||||
msgstr "File too large (max 50 MB)."
|
msgstr "File too large (max 50 MB)."
|
||||||
@@ -523,8 +511,8 @@ msgstr "Follow some public playlists to see their dumps here."
|
|||||||
msgid "Follow some users to see their dumps here."
|
msgid "Follow some users to see their dumps here."
|
||||||
msgstr "Follow some users to see their dumps here."
|
msgstr "Follow some users to see their dumps here."
|
||||||
|
|
||||||
#: src/components/FeedTabBar.tsx:47
|
#: src/components/FeedTabBar.tsx:48
|
||||||
#: src/pages/UserPublicProfile.tsx:981
|
#: src/pages/UserPublicProfile.tsx:982
|
||||||
msgid "Followed"
|
msgid "Followed"
|
||||||
msgstr "Followed"
|
msgstr "Followed"
|
||||||
|
|
||||||
@@ -534,20 +522,16 @@ msgstr "Followed"
|
|||||||
msgid "Followed ({0}{1})"
|
msgid "Followed ({0}{1})"
|
||||||
msgstr "Followed ({0}{1})"
|
msgstr "Followed ({0}{1})"
|
||||||
|
|
||||||
#: src/pages/UserPublicProfile.tsx:1137
|
#: src/pages/UserPublicProfile.tsx:1139
|
||||||
msgid "Followed playlists"
|
msgid "Followed playlists"
|
||||||
msgstr "Followed playlists"
|
msgstr "Followed playlists"
|
||||||
|
|
||||||
#: src/components/FollowButton.tsx:37
|
#: src/components/FollowButton.tsx:37
|
||||||
#: src/components/FollowButton.tsx:64
|
#: src/components/FollowButton.tsx:64
|
||||||
#: src/pages/UserPublicProfile.tsx:1095
|
#: src/pages/UserPublicProfile.tsx:1097
|
||||||
msgid "Following"
|
msgid "Following"
|
||||||
msgstr "Following"
|
msgstr "Following"
|
||||||
|
|
||||||
#: api/playlists:
|
|
||||||
#~ msgid "Forbidden"
|
|
||||||
#~ msgstr "Forbidden"
|
|
||||||
|
|
||||||
#: src/pages/UserLogin.tsx:131
|
#: src/pages/UserLogin.tsx:131
|
||||||
msgid "Forgot password?"
|
msgid "Forgot password?"
|
||||||
msgstr "Forgot password?"
|
msgstr "Forgot password?"
|
||||||
@@ -564,7 +548,7 @@ msgstr "From playlists"
|
|||||||
msgid "Go to login"
|
msgid "Go to login"
|
||||||
msgstr "Go to login"
|
msgstr "Go to login"
|
||||||
|
|
||||||
#: src/components/FeedTabBar.tsx:25
|
#: src/components/FeedTabBar.tsx:26
|
||||||
msgid "Hot"
|
msgid "Hot"
|
||||||
msgstr "Hot"
|
msgstr "Hot"
|
||||||
|
|
||||||
@@ -572,10 +556,6 @@ msgstr "Hot"
|
|||||||
msgid "If that address is registered you'll receive a reset link shortly."
|
msgid "If that address is registered you'll receive a reset link shortly."
|
||||||
msgstr "If that address is registered you'll receive a reset link shortly."
|
msgstr "If that address is registered you'll receive a reset link shortly."
|
||||||
|
|
||||||
#: api/auth:
|
|
||||||
#~ msgid "Invalid email address"
|
|
||||||
#~ msgstr "Invalid email address"
|
|
||||||
|
|
||||||
#: src/pages/UserRegister.tsx:106
|
#: src/pages/UserRegister.tsx:106
|
||||||
msgid "Invalid invite"
|
msgid "Invalid invite"
|
||||||
msgstr "Invalid invite"
|
msgstr "Invalid invite"
|
||||||
@@ -584,33 +564,16 @@ msgstr "Invalid invite"
|
|||||||
msgid "Invalid link"
|
msgid "Invalid link"
|
||||||
msgstr "Invalid link"
|
msgstr "Invalid link"
|
||||||
|
|
||||||
#: api/invites:
|
|
||||||
#~ msgid "Invalid or expired invite"
|
|
||||||
#~ msgstr "Invalid or expired invite"
|
|
||||||
|
|
||||||
#: api/dumps:
|
|
||||||
#~ msgid "Invalid URL"
|
|
||||||
#~ msgstr "Invalid URL"
|
|
||||||
|
|
||||||
#. Backend error strings (manually maintained)
|
|
||||||
#: api/auth:
|
|
||||||
#~ msgid "Invalid username or password"
|
|
||||||
#~ msgstr "Invalid username or password"
|
|
||||||
|
|
||||||
#: api/invites:
|
|
||||||
#~ msgid "Invite already used"
|
|
||||||
#~ msgstr "Invite already used"
|
|
||||||
|
|
||||||
#: src/pages/UserPublicProfile.tsx:790
|
#: src/pages/UserPublicProfile.tsx:790
|
||||||
msgid "invited by"
|
msgid "invited by"
|
||||||
msgstr "invited by"
|
msgstr "invited by"
|
||||||
|
|
||||||
#: src/pages/UserPublicProfile.tsx:988
|
#: src/pages/UserPublicProfile.tsx:989
|
||||||
#: src/pages/UserPublicProfile.tsx:1182
|
#: src/pages/UserPublicProfile.tsx:1184
|
||||||
msgid "Invitees"
|
msgid "Invitees"
|
||||||
msgstr "Invitees"
|
msgstr "Invitees"
|
||||||
|
|
||||||
#: src/components/FeedTabBar.tsx:39
|
#: src/components/FeedTabBar.tsx:40
|
||||||
msgid "Journal"
|
msgid "Journal"
|
||||||
msgstr "Journal"
|
msgstr "Journal"
|
||||||
|
|
||||||
@@ -618,7 +581,7 @@ msgstr "Journal"
|
|||||||
msgid "just now"
|
msgid "just now"
|
||||||
msgstr "just now"
|
msgstr "just now"
|
||||||
|
|
||||||
#: src/pages/UserPublicProfile.tsx:1275
|
#: src/pages/UserPublicProfile.tsx:1277
|
||||||
msgid "Light"
|
msgid "Light"
|
||||||
msgstr "Light"
|
msgstr "Light"
|
||||||
|
|
||||||
@@ -626,11 +589,11 @@ msgstr "Light"
|
|||||||
msgid "Live updates are temporarily disconnected. Trying to reconnect…"
|
msgid "Live updates are temporarily disconnected. Trying to reconnect…"
|
||||||
msgstr "Live updates are temporarily disconnected. Trying to reconnect…"
|
msgstr "Live updates are temporarily disconnected. Trying to reconnect…"
|
||||||
|
|
||||||
#: src/components/AppHeader.tsx:87
|
#: src/components/AppHeader.tsx:88
|
||||||
msgid "Live updates unavailable."
|
msgid "Live updates unavailable."
|
||||||
msgstr "Live updates unavailable."
|
msgstr "Live updates unavailable."
|
||||||
|
|
||||||
#: src/pages/Notifications.tsx:407
|
#: src/pages/Notifications.tsx:415
|
||||||
msgid "Load more"
|
msgid "Load more"
|
||||||
msgstr "Load more"
|
msgstr "Load more"
|
||||||
|
|
||||||
@@ -665,18 +628,18 @@ msgstr "Loading profile…"
|
|||||||
#: src/pages/index/HotFeed.tsx:32
|
#: src/pages/index/HotFeed.tsx:32
|
||||||
#: src/pages/index/JournalFeed.tsx:44
|
#: src/pages/index/JournalFeed.tsx:44
|
||||||
#: src/pages/index/NewFeed.tsx:32
|
#: src/pages/index/NewFeed.tsx:32
|
||||||
#: src/pages/Notifications.tsx:330
|
#: src/pages/Notifications.tsx:338
|
||||||
#: src/pages/Notifications.tsx:406
|
#: src/pages/Notifications.tsx:414
|
||||||
#: src/pages/UserDumps.tsx:51
|
#: src/pages/UserDumps.tsx:51
|
||||||
#: src/pages/UserPlaylists.tsx:342
|
#: src/pages/UserPlaylists.tsx:342
|
||||||
#: src/pages/UserPublicProfile.tsx:1100
|
#: src/pages/UserPublicProfile.tsx:1102
|
||||||
#: src/pages/UserPublicProfile.tsx:1142
|
#: src/pages/UserPublicProfile.tsx:1144
|
||||||
#: src/pages/UserPublicProfile.tsx:1187
|
#: src/pages/UserPublicProfile.tsx:1189
|
||||||
#: src/pages/UserUpvoted.tsx:123
|
#: src/pages/UserUpvoted.tsx:123
|
||||||
msgid "Loading…"
|
msgid "Loading…"
|
||||||
msgstr "Loading…"
|
msgstr "Loading…"
|
||||||
|
|
||||||
#: src/components/AppHeader.tsx:77
|
#: src/components/AppHeader.tsx:78
|
||||||
#: src/pages/UserLogin.tsx:87
|
#: src/pages/UserLogin.tsx:87
|
||||||
#: src/pages/UserLogin.tsx:117
|
#: src/pages/UserLogin.tsx:117
|
||||||
msgid "Log in"
|
msgid "Log in"
|
||||||
@@ -699,11 +662,11 @@ msgstr "Login failed"
|
|||||||
msgid "Max 50 MB"
|
msgid "Max 50 MB"
|
||||||
msgstr "Max 50 MB"
|
msgstr "Max 50 MB"
|
||||||
|
|
||||||
#: src/pages/Notifications.tsx:323
|
#: src/pages/Notifications.tsx:331
|
||||||
msgid "new"
|
msgid "new"
|
||||||
msgstr "new"
|
msgstr "new"
|
||||||
|
|
||||||
#: src/components/FeedTabBar.tsx:32
|
#: src/components/FeedTabBar.tsx:33
|
||||||
msgid "New"
|
msgid "New"
|
||||||
msgstr "New"
|
msgstr "New"
|
||||||
|
|
||||||
@@ -739,11 +702,11 @@ msgid "No emoji found."
|
|||||||
msgstr "No emoji found."
|
msgstr "No emoji found."
|
||||||
|
|
||||||
#: src/pages/UserPlaylists.tsx:439
|
#: src/pages/UserPlaylists.tsx:439
|
||||||
#: src/pages/UserPublicProfile.tsx:1155
|
#: src/pages/UserPublicProfile.tsx:1157
|
||||||
msgid "No followed playlists yet."
|
msgid "No followed playlists yet."
|
||||||
msgstr "No followed playlists yet."
|
msgstr "No followed playlists yet."
|
||||||
|
|
||||||
#: src/pages/UserPublicProfile.tsx:1200
|
#: src/pages/UserPublicProfile.tsx:1202
|
||||||
msgid "No invitees yet."
|
msgid "No invitees yet."
|
||||||
msgstr "No invitees yet."
|
msgstr "No invitees yet."
|
||||||
|
|
||||||
@@ -753,7 +716,7 @@ msgstr "No playlists match \"{q}\"."
|
|||||||
|
|
||||||
#: src/components/PlaylistMembershipPanel.tsx:34
|
#: src/components/PlaylistMembershipPanel.tsx:34
|
||||||
#: src/pages/UserPlaylists.tsx:397
|
#: src/pages/UserPlaylists.tsx:397
|
||||||
#: src/pages/UserPublicProfile.tsx:1066
|
#: src/pages/UserPublicProfile.tsx:1068
|
||||||
msgid "No playlists yet."
|
msgid "No playlists yet."
|
||||||
msgstr "No playlists yet."
|
msgstr "No playlists yet."
|
||||||
|
|
||||||
@@ -761,24 +724,20 @@ msgstr "No playlists yet."
|
|||||||
msgid "No users match \"{q}\"."
|
msgid "No users match \"{q}\"."
|
||||||
msgstr "No users match \"{q}\"."
|
msgstr "No users match \"{q}\"."
|
||||||
|
|
||||||
#: api/auth:
|
#: src/pages/UserPublicProfile.tsx:1115
|
||||||
#~ msgid "Not authenticated"
|
|
||||||
#~ msgstr "Not authenticated"
|
|
||||||
|
|
||||||
#: src/pages/UserPublicProfile.tsx:1113
|
|
||||||
msgid "Not following anyone yet."
|
msgid "Not following anyone yet."
|
||||||
msgstr "Not following anyone yet."
|
msgstr "Not following anyone yet."
|
||||||
|
|
||||||
#: src/pages/Notifications.tsx:341
|
#: src/pages/Notifications.tsx:349
|
||||||
#: src/pages/UserDumps.tsx:123
|
#: src/pages/UserDumps.tsx:123
|
||||||
#: src/pages/UserPublicProfile.tsx:1340
|
#: src/pages/UserPublicProfile.tsx:1342
|
||||||
#: src/pages/UserPublicProfile.tsx:1463
|
#: src/pages/UserPublicProfile.tsx:1465
|
||||||
#: src/pages/UserUpvoted.tsx:195
|
#: src/pages/UserUpvoted.tsx:195
|
||||||
msgid "Nothing here yet."
|
msgid "Nothing here yet."
|
||||||
msgstr "Nothing here yet."
|
msgstr "Nothing here yet."
|
||||||
|
|
||||||
#: src/components/NotificationBell.tsx:42
|
#: src/components/NotificationBell.tsx:42
|
||||||
#: src/pages/Notifications.tsx:319
|
#: src/pages/Notifications.tsx:327
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Notifications"
|
msgstr "Notifications"
|
||||||
|
|
||||||
@@ -795,7 +754,7 @@ msgid "or <0>browse files</0>"
|
|||||||
msgstr "or <0>browse files</0>"
|
msgstr "or <0>browse files</0>"
|
||||||
|
|
||||||
#: src/pages/UserLogin.tsx:106
|
#: src/pages/UserLogin.tsx:106
|
||||||
#: src/pages/UserPublicProfile.tsx:1220
|
#: src/pages/UserPublicProfile.tsx:1222
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr "Password"
|
msgstr "Password"
|
||||||
|
|
||||||
@@ -808,14 +767,6 @@ msgstr "Password (min. {0} characters)"
|
|||||||
msgid "Password changed successfully."
|
msgid "Password changed successfully."
|
||||||
msgstr "Password changed successfully."
|
msgstr "Password changed successfully."
|
||||||
|
|
||||||
#: api/auth:
|
|
||||||
#~ msgid "Password must be at least 8 characters"
|
|
||||||
#~ msgstr "Password must be at least 8 characters"
|
|
||||||
|
|
||||||
#: api/auth:
|
|
||||||
#~ msgid "Password must be at most 128 characters"
|
|
||||||
#~ msgstr "Password must be at most 128 characters"
|
|
||||||
|
|
||||||
#: src/pages/ResetPassword.tsx:56
|
#: src/pages/ResetPassword.tsx:56
|
||||||
msgid "Password updated"
|
msgid "Password updated"
|
||||||
msgstr "Password updated"
|
msgstr "Password updated"
|
||||||
@@ -825,21 +776,17 @@ msgstr "Password updated"
|
|||||||
msgid "Passwords do not match"
|
msgid "Passwords do not match"
|
||||||
msgstr "Passwords do not match"
|
msgstr "Passwords do not match"
|
||||||
|
|
||||||
#: api/playlists:
|
#: src/components/AppHeader.tsx:54
|
||||||
#~ msgid "Playlist not found"
|
|
||||||
#~ msgstr "Playlist not found"
|
|
||||||
|
|
||||||
#: src/components/AppHeader.tsx:53
|
|
||||||
#: src/components/UserMenu.tsx:62
|
#: src/components/UserMenu.tsx:62
|
||||||
#: src/pages/Search.tsx:175
|
#: src/pages/Search.tsx:175
|
||||||
#: src/pages/UserPlaylists.tsx:368
|
#: src/pages/UserPlaylists.tsx:368
|
||||||
#: src/pages/UserPublicProfile.tsx:974
|
#: src/pages/UserPublicProfile.tsx:975
|
||||||
msgid "Playlists"
|
msgid "Playlists"
|
||||||
msgstr "Playlists"
|
msgstr "Playlists"
|
||||||
|
|
||||||
#. placeholder {0}: playlists.items.length
|
#. placeholder {0}: playlists.items.length
|
||||||
#. placeholder {1}: playlists.hasMore ? "+" : ""
|
#. placeholder {1}: playlists.hasMore ? "+" : ""
|
||||||
#: src/pages/UserPublicProfile.tsx:1035
|
#: src/pages/UserPublicProfile.tsx:1037
|
||||||
msgid "Playlists ({0}{1})"
|
msgid "Playlists ({0}{1})"
|
||||||
msgstr "Playlists ({0}{1})"
|
msgstr "Playlists ({0}{1})"
|
||||||
|
|
||||||
@@ -860,10 +807,10 @@ msgstr "Post reply"
|
|||||||
msgid "Posting…"
|
msgid "Posting…"
|
||||||
msgstr "Posting…"
|
msgstr "Posting…"
|
||||||
|
|
||||||
#: src/components/DumpCard.tsx:91
|
#: src/components/DumpCard.tsx:104
|
||||||
#: src/components/PlaylistCard.tsx:73
|
#: src/components/PlaylistCard.tsx:73
|
||||||
#: src/components/PlaylistMembershipPanel.tsx:55
|
#: src/components/PlaylistMembershipPanel.tsx:55
|
||||||
#: src/pages/Dump.tsx:284
|
#: src/pages/Dump.tsx:287
|
||||||
#: src/pages/PlaylistDetail.tsx:759
|
#: src/pages/PlaylistDetail.tsx:759
|
||||||
msgid "private"
|
msgid "private"
|
||||||
msgstr "private"
|
msgstr "private"
|
||||||
@@ -978,7 +925,7 @@ msgstr "Send reset link"
|
|||||||
msgid "Sending…"
|
msgid "Sending…"
|
||||||
msgstr "Sending…"
|
msgstr "Sending…"
|
||||||
|
|
||||||
#: src/components/AppHeader.tsx:68
|
#: src/components/AppHeader.tsx:69
|
||||||
msgid "Server unreachable"
|
msgid "Server unreachable"
|
||||||
msgstr "Server unreachable"
|
msgstr "Server unreachable"
|
||||||
|
|
||||||
@@ -987,7 +934,7 @@ msgstr "Server unreachable"
|
|||||||
msgid "Set new password"
|
msgid "Set new password"
|
||||||
msgstr "Set new password"
|
msgstr "Set new password"
|
||||||
|
|
||||||
#: src/pages/UserPublicProfile.tsx:996
|
#: src/pages/UserPublicProfile.tsx:997
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr "Settings"
|
msgstr "Settings"
|
||||||
|
|
||||||
@@ -995,7 +942,7 @@ msgstr "Settings"
|
|||||||
msgid "Something went wrong"
|
msgid "Something went wrong"
|
||||||
msgstr "Something went wrong"
|
msgstr "Something went wrong"
|
||||||
|
|
||||||
#: src/pages/UserPublicProfile.tsx:1239
|
#: src/pages/UserPublicProfile.tsx:1241
|
||||||
msgid "Style"
|
msgid "Style"
|
||||||
msgstr "Style"
|
msgstr "Style"
|
||||||
|
|
||||||
@@ -1003,15 +950,6 @@ msgstr "Style"
|
|||||||
msgid "Submit search"
|
msgid "Submit search"
|
||||||
msgstr "Submit search"
|
msgstr "Submit search"
|
||||||
|
|
||||||
#: src/pages/UserPublicProfile.tsx:899
|
|
||||||
msgid "Tell people about yourself…"
|
|
||||||
msgstr "Tell people about yourself…"
|
|
||||||
|
|
||||||
#: src/components/DumpCreateModal.tsx:383
|
|
||||||
#: src/pages/DumpEdit.tsx:266
|
|
||||||
msgid "Tell the community what makes this worth their time..."
|
|
||||||
msgstr "Tell the community what makes this worth their time..."
|
|
||||||
|
|
||||||
#: src/pages/UserRegister.tsx:107
|
#: src/pages/UserRegister.tsx:107
|
||||||
msgid "This invite link is missing, expired, or already used."
|
msgid "This invite link is missing, expired, or already used."
|
||||||
msgstr "This invite link is missing, expired, or already used."
|
msgstr "This invite link is missing, expired, or already used."
|
||||||
@@ -1028,7 +966,7 @@ msgstr "This reset link is missing or malformed."
|
|||||||
msgid "Title"
|
msgid "Title"
|
||||||
msgstr "Title"
|
msgstr "Title"
|
||||||
|
|
||||||
#: src/pages/Notifications.tsx:357
|
#: src/pages/Notifications.tsx:365
|
||||||
msgid "Today"
|
msgid "Today"
|
||||||
msgstr "Today"
|
msgstr "Today"
|
||||||
|
|
||||||
@@ -1036,10 +974,6 @@ msgstr "Today"
|
|||||||
msgid "Undo"
|
msgid "Undo"
|
||||||
msgstr "Undo"
|
msgstr "Undo"
|
||||||
|
|
||||||
#: api/generic:
|
|
||||||
#~ msgid "Unexpected server error"
|
|
||||||
#~ msgstr "Unexpected server error"
|
|
||||||
|
|
||||||
#: src/components/FollowButton.tsx:34
|
#: src/components/FollowButton.tsx:34
|
||||||
msgid "Unfollow {targetUsername}"
|
msgid "Unfollow {targetUsername}"
|
||||||
msgstr "Unfollow {targetUsername}"
|
msgstr "Unfollow {targetUsername}"
|
||||||
@@ -1067,7 +1001,7 @@ msgstr "Upvoted"
|
|||||||
|
|
||||||
#. placeholder {0}: votes.items.length
|
#. placeholder {0}: votes.items.length
|
||||||
#. placeholder {1}: votes.hasMore ? "+" : ""
|
#. placeholder {1}: votes.hasMore ? "+" : ""
|
||||||
#: src/pages/UserPublicProfile.tsx:1015
|
#: src/pages/UserPublicProfile.tsx:1017
|
||||||
msgid "Upvoted ({0}{1})"
|
msgid "Upvoted ({0}{1})"
|
||||||
msgstr "Upvoted ({0}{1})"
|
msgstr "Upvoted ({0}{1})"
|
||||||
|
|
||||||
@@ -1089,23 +1023,15 @@ msgstr "User menu"
|
|||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr "Username"
|
msgstr "Username"
|
||||||
|
|
||||||
#: api/auth:
|
|
||||||
#~ msgid "Username already exists"
|
|
||||||
#~ msgstr "Username already exists"
|
|
||||||
|
|
||||||
#: api/auth:
|
|
||||||
#~ msgid "Username must be 1–32 characters and contain only letters, numbers, or underscores"
|
|
||||||
#~ msgstr "Username must be 1–32 characters and contain only letters, numbers, or underscores"
|
|
||||||
|
|
||||||
#: src/pages/Search.tsx:174
|
#: src/pages/Search.tsx:174
|
||||||
msgid "Users"
|
msgid "Users"
|
||||||
msgstr "Users"
|
msgstr "Users"
|
||||||
|
|
||||||
#: src/pages/UserPublicProfile.tsx:1085
|
#: src/pages/UserPublicProfile.tsx:1087
|
||||||
#: src/pages/UserPublicProfile.tsx:1128
|
#: src/pages/UserPublicProfile.tsx:1130
|
||||||
#: src/pages/UserPublicProfile.tsx:1170
|
#: src/pages/UserPublicProfile.tsx:1172
|
||||||
#: src/pages/UserPublicProfile.tsx:1361
|
#: src/pages/UserPublicProfile.tsx:1363
|
||||||
#: src/pages/UserPublicProfile.tsx:1493
|
#: src/pages/UserPublicProfile.tsx:1495
|
||||||
msgid "View all →"
|
msgid "View all →"
|
||||||
msgstr "View all →"
|
msgstr "View all →"
|
||||||
|
|
||||||
@@ -1113,20 +1039,29 @@ msgstr "View all →"
|
|||||||
msgid "View dump →"
|
msgid "View dump →"
|
||||||
msgstr "View dump →"
|
msgstr "View dump →"
|
||||||
|
|
||||||
|
#: src/components/DumpCreateModal.tsx:383
|
||||||
|
#: src/pages/DumpEdit.tsx:266
|
||||||
|
msgid "What makes it worth it?"
|
||||||
|
msgstr "What makes it worth it?"
|
||||||
|
|
||||||
|
#: src/pages/UserPublicProfile.tsx:899
|
||||||
|
msgid "Who am I?"
|
||||||
|
msgstr "Who am I?"
|
||||||
|
|
||||||
#: src/components/DumpCreateModal.tsx:376
|
#: src/components/DumpCreateModal.tsx:376
|
||||||
#: src/pages/DumpEdit.tsx:260
|
#: src/pages/DumpEdit.tsx:260
|
||||||
msgid "Why are you dumping this?"
|
msgid "Why?"
|
||||||
msgstr "Why are you dumping this?"
|
msgstr "Why?"
|
||||||
|
|
||||||
#: src/components/CommentThread.tsx:342
|
#: src/components/CommentThread.tsx:342
|
||||||
msgid "Write a reply…"
|
msgid "Write a reply…"
|
||||||
msgstr "Write a reply…"
|
msgstr "Write a reply…"
|
||||||
|
|
||||||
#: src/pages/Notifications.tsx:359
|
#: src/pages/Notifications.tsx:367
|
||||||
msgid "Yesterday"
|
msgid "Yesterday"
|
||||||
msgstr "Yesterday"
|
msgstr "Yesterday"
|
||||||
|
|
||||||
#: src/pages/Notifications.tsx:344
|
#: src/pages/Notifications.tsx:352
|
||||||
msgid "You'll be notified when someone follows your playlists, upvotes your dumps, or posts new content."
|
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."
|
msgstr "You'll be notified when someone follows your playlists, upvotes your dumps, or posts new content."
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -13,12 +13,25 @@ msgstr ""
|
|||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
|
|
||||||
|
#: src/components/AppHeader.tsx:71
|
||||||
|
msgid " Dump"
|
||||||
|
msgstr " Reco"
|
||||||
|
|
||||||
|
#: src/pages/UserDumps.tsx:114
|
||||||
|
#: src/pages/UserPublicProfile.tsx:1332
|
||||||
|
msgid " New dump"
|
||||||
|
msgstr " Nouvelle reco"
|
||||||
|
|
||||||
|
#: src/components/NewPlaylistForm.tsx:30
|
||||||
|
msgid " New playlist"
|
||||||
|
msgstr " Nouvelle collection"
|
||||||
|
|
||||||
#: src/components/CommentThread.tsx:176
|
#: src/components/CommentThread.tsx:176
|
||||||
msgid "[deleted]"
|
msgid "[deleted]"
|
||||||
msgstr "[supprimé]"
|
msgstr "[supprimé]"
|
||||||
|
|
||||||
#. placeholder {0}: dump.commentCount
|
#. placeholder {0}: dump.commentCount
|
||||||
#: src/components/DumpCard.tsx:82
|
#: src/components/DumpCard.tsx:95
|
||||||
msgid "{0, plural, one {# comment} other {# comments}}"
|
msgid "{0, plural, one {# comment} other {# comments}}"
|
||||||
msgstr "{0, plural, one {# commentaire} other {# commentaires}}"
|
msgstr "{0, plural, one {# commentaire} other {# commentaires}}"
|
||||||
|
|
||||||
@@ -59,7 +72,7 @@ msgid "← Back"
|
|||||||
msgstr "← Retour"
|
msgstr "← Retour"
|
||||||
|
|
||||||
#: src/pages/Dump.tsx:218
|
#: src/pages/Dump.tsx:218
|
||||||
#: src/pages/Dump.tsx:321
|
#: src/pages/Dump.tsx:325
|
||||||
#: src/pages/DumpEdit.tsx:170
|
#: src/pages/DumpEdit.tsx:170
|
||||||
msgid "← Back to all dumps"
|
msgid "← Back to all dumps"
|
||||||
msgstr "← Retour à toutes les recos"
|
msgstr "← Retour à toutes les recos"
|
||||||
@@ -74,16 +87,15 @@ msgstr "← Retour au profil"
|
|||||||
msgid "+ Invite someone"
|
msgid "+ Invite someone"
|
||||||
msgstr "+ Inviter quelqu'un"
|
msgstr "+ Inviter quelqu'un"
|
||||||
|
|
||||||
#: src/components/AppHeader.tsx:70
|
#: src/components/AppHeader.tsx:71
|
||||||
msgid "+ New"
|
msgid "+ New"
|
||||||
msgstr "+ Nouveau"
|
msgstr "+ Nouveau"
|
||||||
|
|
||||||
#: src/pages/UserDumps.tsx:114
|
#: src/pages/UserDumps.tsx:114
|
||||||
#: src/pages/UserPublicProfile.tsx:1330
|
#: src/pages/UserPublicProfile.tsx:1332
|
||||||
msgid "+ New dump"
|
msgid "+ New dump"
|
||||||
msgstr "+ Nouvelle reco"
|
msgstr "+ Nouvelle reco"
|
||||||
|
|
||||||
#: src/components/NewPlaylistForm.tsx:30
|
|
||||||
#: src/components/PlaylistMembershipPanel.tsx:80
|
#: src/components/PlaylistMembershipPanel.tsx:80
|
||||||
msgid "+ New playlist"
|
msgid "+ New playlist"
|
||||||
msgstr "+ Nouvelle collection"
|
msgstr "+ Nouvelle collection"
|
||||||
@@ -94,53 +106,53 @@ msgstr "+ Collection"
|
|||||||
|
|
||||||
#. placeholder {0}: d.commenterUsername
|
#. placeholder {0}: d.commenterUsername
|
||||||
#. placeholder {1}: d.dumpTitle
|
#. placeholder {1}: d.dumpTitle
|
||||||
#: src/pages/Notifications.tsx:171
|
#: src/pages/Notifications.tsx:179
|
||||||
msgid "<0>{0}</0> commented on <1>{1}</1>"
|
msgid "<0>{0}</0> commented on <1>{1}</1>"
|
||||||
msgstr ""
|
msgstr "<0>{0}</0> a commenté sur <1>{1}</1>"
|
||||||
|
|
||||||
#. placeholder {0}: d.followerUsername
|
#. placeholder {0}: d.followerUsername
|
||||||
#. placeholder {1}: d.playlistTitle
|
#. placeholder {1}: d.playlistTitle
|
||||||
#: src/pages/Notifications.tsx:131
|
#: src/pages/Notifications.tsx:139
|
||||||
msgid "<0>{0}</0> followed your playlist <1>{1}</1>"
|
msgid "<0>{0}</0> followed your playlist <1>{1}</1>"
|
||||||
msgstr "<0>{0}</0> a suivi votre collection <1>{1}</1>"
|
msgstr "<0>{0}</0> a suivi votre collection <1>{1}</1>"
|
||||||
|
|
||||||
#. placeholder {0}: d.mentionerUsername
|
#. placeholder {0}: d.mentionerUsername
|
||||||
#: src/pages/Notifications.tsx:183
|
#: src/pages/Notifications.tsx:191
|
||||||
msgid "<0>{0}</0> mentioned you in <1>{where}</1>"
|
msgid "<0>{0}</0> mentioned you in <1>{where}</1>"
|
||||||
msgstr "<0>{0}</0> vous a mentionné dans <1>{where}</1>"
|
msgstr "<0>{0}</0> vous a mentionné dans <1>{where}</1>"
|
||||||
|
|
||||||
#. placeholder {0}: d.dumperUsername
|
#. placeholder {0}: d.dumperUsername
|
||||||
#. placeholder {1}: d.dumpTitle
|
#. placeholder {1}: d.dumpTitle
|
||||||
#: src/pages/Notifications.tsx:141
|
#: src/pages/Notifications.tsx:149
|
||||||
msgid "<0>{0}</0> posted <1>{1}</1>"
|
msgid "<0>{0}</0> posted <1>{1}</1>"
|
||||||
msgstr "<0>{0}</0> a publié <1>{1}</1>"
|
msgstr "<0>{0}</0> a publié <1>{1}</1>"
|
||||||
|
|
||||||
#. placeholder {0}: d.followerUsername
|
#. placeholder {0}: d.followerUsername
|
||||||
#: src/pages/Notifications.tsx:122
|
#: src/pages/Notifications.tsx:130
|
||||||
msgid "<0>{0}</0> started following you"
|
msgid "<0>{0}</0> started following you"
|
||||||
msgstr "<0>{0}</0> a commencé à vous suivre"
|
msgstr "<0>{0}</0> a commencé à vous suivre"
|
||||||
|
|
||||||
#. placeholder {0}: d.voterUsername
|
#. placeholder {0}: d.voterUsername
|
||||||
#. placeholder {1}: d.dumpTitle
|
#. placeholder {1}: d.dumpTitle
|
||||||
#: src/pages/Notifications.tsx:161
|
#: src/pages/Notifications.tsx:169
|
||||||
msgid "<0>{0}</0> upvoted <1>{1}</1>"
|
msgid "<0>{0}</0> upvoted <1>{1}</1>"
|
||||||
msgstr "<0>{0}</0> a voté pour <1>{1}</1>"
|
msgstr "<0>{0}</0> a voté pour <1>{1}</1>"
|
||||||
|
|
||||||
#. placeholder {0}: d.dumpTitle
|
#. placeholder {0}: d.dumpTitle
|
||||||
#. placeholder {1}: d.playlistTitle
|
#. placeholder {1}: d.playlistTitle
|
||||||
#: src/pages/Notifications.tsx:151
|
#: src/pages/Notifications.tsx:159
|
||||||
msgid "<0>{0}</0> was added to <1>{1}</1>"
|
msgid "<0>{0}</0> was added to <1>{1}</1>"
|
||||||
msgstr "<0>{0}</0> a été ajouté à <1>{1}</1>"
|
msgstr "<0>{0}</0> a été ajouté à <1>{1}</1>"
|
||||||
|
|
||||||
#: src/pages/Notifications.tsx:181
|
#: src/pages/Notifications.tsx:189
|
||||||
msgid "a comment"
|
msgid "a comment"
|
||||||
msgstr "un commentaire"
|
msgstr "un commentaire"
|
||||||
|
|
||||||
#: src/pages/Notifications.tsx:181
|
#: src/pages/Notifications.tsx:189
|
||||||
msgid "a post"
|
msgid "a post"
|
||||||
msgstr "une publication"
|
msgstr "une publication"
|
||||||
|
|
||||||
#: src/pages/UserPublicProfile.tsx:1215
|
#: src/pages/UserPublicProfile.tsx:1217
|
||||||
msgid "Account"
|
msgid "Account"
|
||||||
msgstr "Compte"
|
msgstr "Compte"
|
||||||
|
|
||||||
@@ -173,7 +185,7 @@ msgstr "Toutes les {0, plural, one {# reco votée} other {# recos votées}} char
|
|||||||
msgid "Already have an account? <0>Log in</0>"
|
msgid "Already have an account? <0>Log in</0>"
|
||||||
msgstr "Vous avez déjà un compte ? <0>Se connecter</0>"
|
msgstr "Vous avez déjà un compte ? <0>Se connecter</0>"
|
||||||
|
|
||||||
#: src/pages/UserPublicProfile.tsx:1234
|
#: src/pages/UserPublicProfile.tsx:1236
|
||||||
msgid "Appearance"
|
msgid "Appearance"
|
||||||
msgstr "Apparence"
|
msgstr "Apparence"
|
||||||
|
|
||||||
@@ -183,7 +195,7 @@ msgstr "Apparence"
|
|||||||
msgid "At least {0} characters"
|
msgid "At least {0} characters"
|
||||||
msgstr "Au moins {0} caractères"
|
msgstr "Au moins {0} caractères"
|
||||||
|
|
||||||
#: src/pages/UserPublicProfile.tsx:1268
|
#: src/pages/UserPublicProfile.tsx:1270
|
||||||
msgid "Auto"
|
msgid "Auto"
|
||||||
msgstr "Auto"
|
msgstr "Auto"
|
||||||
|
|
||||||
@@ -224,7 +236,7 @@ msgstr "Changer l'avatar"
|
|||||||
msgid "Change password"
|
msgid "Change password"
|
||||||
msgstr "Changer le mot de passe"
|
msgstr "Changer le mot de passe"
|
||||||
|
|
||||||
#: src/pages/UserPublicProfile.tsx:1227
|
#: src/pages/UserPublicProfile.tsx:1229
|
||||||
msgid "Change password…"
|
msgid "Change password…"
|
||||||
msgstr "Changer le mot de passe…"
|
msgstr "Changer le mot de passe…"
|
||||||
|
|
||||||
@@ -237,7 +249,7 @@ msgstr "Vérification de l'invitation…"
|
|||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Fermer"
|
msgstr "Fermer"
|
||||||
|
|
||||||
#: src/pages/UserPublicProfile.tsx:1260
|
#: src/pages/UserPublicProfile.tsx:1262
|
||||||
msgid "Color scheme"
|
msgid "Color scheme"
|
||||||
msgstr "Thème de couleur"
|
msgstr "Thème de couleur"
|
||||||
|
|
||||||
@@ -291,7 +303,7 @@ msgstr "Création…"
|
|||||||
msgid "Current password"
|
msgid "Current password"
|
||||||
msgstr "Mot de passe actuel"
|
msgstr "Mot de passe actuel"
|
||||||
|
|
||||||
#: src/pages/UserPublicProfile.tsx:1282
|
#: src/pages/UserPublicProfile.tsx:1284
|
||||||
msgid "Dark"
|
msgid "Dark"
|
||||||
msgstr "Sombre"
|
msgstr "Sombre"
|
||||||
|
|
||||||
@@ -353,22 +365,22 @@ msgstr "Recommandé !"
|
|||||||
|
|
||||||
#: src/pages/Search.tsx:172
|
#: src/pages/Search.tsx:172
|
||||||
#: src/pages/UserDumps.tsx:107
|
#: src/pages/UserDumps.tsx:107
|
||||||
#: src/pages/UserPublicProfile.tsx:967
|
#: src/pages/UserPublicProfile.tsx:968
|
||||||
msgid "Dumps"
|
msgid "Dumps"
|
||||||
msgstr "Recos"
|
msgstr "Recos"
|
||||||
|
|
||||||
#. placeholder {0}: dumps.items.length
|
#. placeholder {0}: dumps.items.length
|
||||||
#. placeholder {1}: dumps.hasMore ? "+" : ""
|
#. placeholder {1}: dumps.hasMore ? "+" : ""
|
||||||
#: src/pages/UserPublicProfile.tsx:1004
|
#: src/pages/UserPublicProfile.tsx:1006
|
||||||
msgid "Dumps ({0}{1})"
|
msgid "Dumps ({0}{1})"
|
||||||
msgstr "Recos ({0}{1})"
|
msgstr "Recos ({0}{1})"
|
||||||
|
|
||||||
#: src/pages/Notifications.tsx:360
|
#: src/pages/Notifications.tsx:368
|
||||||
msgid "Earlier"
|
msgid "Earlier"
|
||||||
msgstr "Plus tôt"
|
msgstr "Plus tôt"
|
||||||
|
|
||||||
#: src/components/CommentThread.tsx:310
|
#: src/components/CommentThread.tsx:310
|
||||||
#: src/pages/Dump.tsx:317
|
#: src/pages/Dump.tsx:321
|
||||||
#: src/pages/PlaylistDetail.tsx:706
|
#: src/pages/PlaylistDetail.tsx:706
|
||||||
msgid "Edit"
|
msgid "Edit"
|
||||||
msgstr "Modifier"
|
msgstr "Modifier"
|
||||||
@@ -377,7 +389,7 @@ msgstr "Modifier"
|
|||||||
#. placeholder {0}: relativeTime(dump.updatedAt)
|
#. placeholder {0}: relativeTime(dump.updatedAt)
|
||||||
#. placeholder {0}: relativeTime(playlist.updatedAt)
|
#. placeholder {0}: relativeTime(playlist.updatedAt)
|
||||||
#: src/components/CommentThread.tsx:237
|
#: src/components/CommentThread.tsx:237
|
||||||
#: src/pages/Dump.tsx:278
|
#: src/pages/Dump.tsx:281
|
||||||
#: src/pages/PlaylistDetail.tsx:779
|
#: src/pages/PlaylistDetail.tsx:779
|
||||||
msgid "edited {0}"
|
msgid "edited {0}"
|
||||||
msgstr "modifié {0}"
|
msgstr "modifié {0}"
|
||||||
@@ -386,7 +398,7 @@ msgstr "modifié {0}"
|
|||||||
#. placeholder {0}: dump.updatedAt.toLocaleString()
|
#. placeholder {0}: dump.updatedAt.toLocaleString()
|
||||||
#. placeholder {0}: playlist.updatedAt.toLocaleString()
|
#. placeholder {0}: playlist.updatedAt.toLocaleString()
|
||||||
#: src/components/CommentThread.tsx:235
|
#: src/components/CommentThread.tsx:235
|
||||||
#: src/pages/Dump.tsx:276
|
#: src/pages/Dump.tsx:279
|
||||||
#: src/pages/PlaylistDetail.tsx:776
|
#: src/pages/PlaylistDetail.tsx:776
|
||||||
msgid "Edited {0}"
|
msgid "Edited {0}"
|
||||||
msgstr "Modifié le {0}"
|
msgstr "Modifié le {0}"
|
||||||
@@ -422,10 +434,10 @@ msgstr "Impossible de générer une invitation"
|
|||||||
#: src/pages/index/HotFeed.tsx:36
|
#: src/pages/index/HotFeed.tsx:36
|
||||||
#: src/pages/index/JournalFeed.tsx:48
|
#: src/pages/index/JournalFeed.tsx:48
|
||||||
#: src/pages/index/NewFeed.tsx:36
|
#: src/pages/index/NewFeed.tsx:36
|
||||||
#: src/pages/Notifications.tsx:334
|
#: src/pages/Notifications.tsx:342
|
||||||
#: src/pages/UserPublicProfile.tsx:1106
|
#: src/pages/UserPublicProfile.tsx:1108
|
||||||
#: src/pages/UserPublicProfile.tsx:1148
|
#: src/pages/UserPublicProfile.tsx:1150
|
||||||
#: src/pages/UserPublicProfile.tsx:1193
|
#: src/pages/UserPublicProfile.tsx:1195
|
||||||
msgid "Failed to load"
|
msgid "Failed to load"
|
||||||
msgstr "Chargement échoué"
|
msgstr "Chargement échoué"
|
||||||
|
|
||||||
@@ -495,8 +507,8 @@ msgstr "Suivez des collections publiques pour voir leurs recos ici."
|
|||||||
msgid "Follow some users to see their dumps here."
|
msgid "Follow some users to see their dumps here."
|
||||||
msgstr "Suivez des utilisateurs pour voir leurs recos ici."
|
msgstr "Suivez des utilisateurs pour voir leurs recos ici."
|
||||||
|
|
||||||
#: src/components/FeedTabBar.tsx:47
|
#: src/components/FeedTabBar.tsx:48
|
||||||
#: src/pages/UserPublicProfile.tsx:981
|
#: src/pages/UserPublicProfile.tsx:982
|
||||||
msgid "Followed"
|
msgid "Followed"
|
||||||
msgstr "Suivi"
|
msgstr "Suivi"
|
||||||
|
|
||||||
@@ -506,13 +518,13 @@ msgstr "Suivi"
|
|||||||
msgid "Followed ({0}{1})"
|
msgid "Followed ({0}{1})"
|
||||||
msgstr "Suivies ({0}{1})"
|
msgstr "Suivies ({0}{1})"
|
||||||
|
|
||||||
#: src/pages/UserPublicProfile.tsx:1137
|
#: src/pages/UserPublicProfile.tsx:1139
|
||||||
msgid "Followed playlists"
|
msgid "Followed playlists"
|
||||||
msgstr "Collections suivies"
|
msgstr "Collections suivies"
|
||||||
|
|
||||||
#: src/components/FollowButton.tsx:37
|
#: src/components/FollowButton.tsx:37
|
||||||
#: src/components/FollowButton.tsx:64
|
#: src/components/FollowButton.tsx:64
|
||||||
#: src/pages/UserPublicProfile.tsx:1095
|
#: src/pages/UserPublicProfile.tsx:1097
|
||||||
msgid "Following"
|
msgid "Following"
|
||||||
msgstr "Abonné"
|
msgstr "Abonné"
|
||||||
|
|
||||||
@@ -532,7 +544,7 @@ msgstr "De collections"
|
|||||||
msgid "Go to login"
|
msgid "Go to login"
|
||||||
msgstr "Aller à la connexion"
|
msgstr "Aller à la connexion"
|
||||||
|
|
||||||
#: src/components/FeedTabBar.tsx:25
|
#: src/components/FeedTabBar.tsx:26
|
||||||
msgid "Hot"
|
msgid "Hot"
|
||||||
msgstr "Tendances"
|
msgstr "Tendances"
|
||||||
|
|
||||||
@@ -552,12 +564,12 @@ msgstr "Lien invalide"
|
|||||||
msgid "invited by"
|
msgid "invited by"
|
||||||
msgstr "invité par"
|
msgstr "invité par"
|
||||||
|
|
||||||
#: src/pages/UserPublicProfile.tsx:988
|
#: src/pages/UserPublicProfile.tsx:989
|
||||||
#: src/pages/UserPublicProfile.tsx:1182
|
#: src/pages/UserPublicProfile.tsx:1184
|
||||||
msgid "Invitees"
|
msgid "Invitees"
|
||||||
msgstr "Invités"
|
msgstr "Invités"
|
||||||
|
|
||||||
#: src/components/FeedTabBar.tsx:39
|
#: src/components/FeedTabBar.tsx:40
|
||||||
msgid "Journal"
|
msgid "Journal"
|
||||||
msgstr "Journal"
|
msgstr "Journal"
|
||||||
|
|
||||||
@@ -565,7 +577,7 @@ msgstr "Journal"
|
|||||||
msgid "just now"
|
msgid "just now"
|
||||||
msgstr "à l'instant"
|
msgstr "à l'instant"
|
||||||
|
|
||||||
#: src/pages/UserPublicProfile.tsx:1275
|
#: src/pages/UserPublicProfile.tsx:1277
|
||||||
msgid "Light"
|
msgid "Light"
|
||||||
msgstr "Clair"
|
msgstr "Clair"
|
||||||
|
|
||||||
@@ -573,11 +585,11 @@ msgstr "Clair"
|
|||||||
msgid "Live updates are temporarily disconnected. Trying to reconnect…"
|
msgid "Live updates are temporarily disconnected. Trying to reconnect…"
|
||||||
msgstr "Les mises à jour en direct sont temporairement interrompues. Tentative de reconnexion…"
|
msgstr "Les mises à jour en direct sont temporairement interrompues. Tentative de reconnexion…"
|
||||||
|
|
||||||
#: src/components/AppHeader.tsx:87
|
#: src/components/AppHeader.tsx:88
|
||||||
msgid "Live updates unavailable."
|
msgid "Live updates unavailable."
|
||||||
msgstr "Mises à jour en direct indisponibles."
|
msgstr "Mises à jour en direct indisponibles."
|
||||||
|
|
||||||
#: src/pages/Notifications.tsx:407
|
#: src/pages/Notifications.tsx:415
|
||||||
msgid "Load more"
|
msgid "Load more"
|
||||||
msgstr "Charger plus"
|
msgstr "Charger plus"
|
||||||
|
|
||||||
@@ -612,18 +624,18 @@ msgstr "Chargement du profil…"
|
|||||||
#: src/pages/index/HotFeed.tsx:32
|
#: src/pages/index/HotFeed.tsx:32
|
||||||
#: src/pages/index/JournalFeed.tsx:44
|
#: src/pages/index/JournalFeed.tsx:44
|
||||||
#: src/pages/index/NewFeed.tsx:32
|
#: src/pages/index/NewFeed.tsx:32
|
||||||
#: src/pages/Notifications.tsx:330
|
#: src/pages/Notifications.tsx:338
|
||||||
#: src/pages/Notifications.tsx:406
|
#: src/pages/Notifications.tsx:414
|
||||||
#: src/pages/UserDumps.tsx:51
|
#: src/pages/UserDumps.tsx:51
|
||||||
#: src/pages/UserPlaylists.tsx:342
|
#: src/pages/UserPlaylists.tsx:342
|
||||||
#: src/pages/UserPublicProfile.tsx:1100
|
#: src/pages/UserPublicProfile.tsx:1102
|
||||||
#: src/pages/UserPublicProfile.tsx:1142
|
#: src/pages/UserPublicProfile.tsx:1144
|
||||||
#: src/pages/UserPublicProfile.tsx:1187
|
#: src/pages/UserPublicProfile.tsx:1189
|
||||||
#: src/pages/UserUpvoted.tsx:123
|
#: src/pages/UserUpvoted.tsx:123
|
||||||
msgid "Loading…"
|
msgid "Loading…"
|
||||||
msgstr "Chargement…"
|
msgstr "Chargement…"
|
||||||
|
|
||||||
#: src/components/AppHeader.tsx:77
|
#: src/components/AppHeader.tsx:78
|
||||||
#: src/pages/UserLogin.tsx:87
|
#: src/pages/UserLogin.tsx:87
|
||||||
#: src/pages/UserLogin.tsx:117
|
#: src/pages/UserLogin.tsx:117
|
||||||
msgid "Log in"
|
msgid "Log in"
|
||||||
@@ -646,11 +658,11 @@ msgstr "Connexion échouée"
|
|||||||
msgid "Max 50 MB"
|
msgid "Max 50 MB"
|
||||||
msgstr "Max 50 Mo"
|
msgstr "Max 50 Mo"
|
||||||
|
|
||||||
#: src/pages/Notifications.tsx:323
|
#: src/pages/Notifications.tsx:331
|
||||||
msgid "new"
|
msgid "new"
|
||||||
msgstr "nouveau"
|
msgstr "nouveau"
|
||||||
|
|
||||||
#: src/components/FeedTabBar.tsx:32
|
#: src/components/FeedTabBar.tsx:33
|
||||||
msgid "New"
|
msgid "New"
|
||||||
msgstr "Nouveau"
|
msgstr "Nouveau"
|
||||||
|
|
||||||
@@ -686,11 +698,11 @@ msgid "No emoji found."
|
|||||||
msgstr "Aucun emoji trouvé."
|
msgstr "Aucun emoji trouvé."
|
||||||
|
|
||||||
#: src/pages/UserPlaylists.tsx:439
|
#: src/pages/UserPlaylists.tsx:439
|
||||||
#: src/pages/UserPublicProfile.tsx:1155
|
#: src/pages/UserPublicProfile.tsx:1157
|
||||||
msgid "No followed playlists yet."
|
msgid "No followed playlists yet."
|
||||||
msgstr "Pas encore de collections suivies."
|
msgstr "Pas encore de collections suivies."
|
||||||
|
|
||||||
#: src/pages/UserPublicProfile.tsx:1200
|
#: src/pages/UserPublicProfile.tsx:1202
|
||||||
msgid "No invitees yet."
|
msgid "No invitees yet."
|
||||||
msgstr "Aucun invité pour le moment."
|
msgstr "Aucun invité pour le moment."
|
||||||
|
|
||||||
@@ -700,7 +712,7 @@ msgstr "Aucune collection ne correspond à « {q} »."
|
|||||||
|
|
||||||
#: src/components/PlaylistMembershipPanel.tsx:34
|
#: src/components/PlaylistMembershipPanel.tsx:34
|
||||||
#: src/pages/UserPlaylists.tsx:397
|
#: src/pages/UserPlaylists.tsx:397
|
||||||
#: src/pages/UserPublicProfile.tsx:1066
|
#: src/pages/UserPublicProfile.tsx:1068
|
||||||
msgid "No playlists yet."
|
msgid "No playlists yet."
|
||||||
msgstr "Pas encore de collections."
|
msgstr "Pas encore de collections."
|
||||||
|
|
||||||
@@ -708,20 +720,20 @@ msgstr "Pas encore de collections."
|
|||||||
msgid "No users match \"{q}\"."
|
msgid "No users match \"{q}\"."
|
||||||
msgstr "Aucun utilisateur ne correspond à « {q} »."
|
msgstr "Aucun utilisateur ne correspond à « {q} »."
|
||||||
|
|
||||||
#: src/pages/UserPublicProfile.tsx:1113
|
#: src/pages/UserPublicProfile.tsx:1115
|
||||||
msgid "Not following anyone yet."
|
msgid "Not following anyone yet."
|
||||||
msgstr "Aucun abonnement pour le moment."
|
msgstr "Aucun abonnement pour le moment."
|
||||||
|
|
||||||
#: src/pages/Notifications.tsx:341
|
#: src/pages/Notifications.tsx:349
|
||||||
#: src/pages/UserDumps.tsx:123
|
#: src/pages/UserDumps.tsx:123
|
||||||
#: src/pages/UserPublicProfile.tsx:1340
|
#: src/pages/UserPublicProfile.tsx:1342
|
||||||
#: src/pages/UserPublicProfile.tsx:1463
|
#: src/pages/UserPublicProfile.tsx:1465
|
||||||
#: src/pages/UserUpvoted.tsx:195
|
#: src/pages/UserUpvoted.tsx:195
|
||||||
msgid "Nothing here yet."
|
msgid "Nothing here yet."
|
||||||
msgstr "Rien ici pour l'instant."
|
msgstr "Rien ici pour l'instant."
|
||||||
|
|
||||||
#: src/components/NotificationBell.tsx:42
|
#: src/components/NotificationBell.tsx:42
|
||||||
#: src/pages/Notifications.tsx:319
|
#: src/pages/Notifications.tsx:327
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Notifications"
|
msgstr "Notifications"
|
||||||
|
|
||||||
@@ -738,7 +750,7 @@ msgid "or <0>browse files</0>"
|
|||||||
msgstr "ou <0>parcourir les fichiers</0>"
|
msgstr "ou <0>parcourir les fichiers</0>"
|
||||||
|
|
||||||
#: src/pages/UserLogin.tsx:106
|
#: src/pages/UserLogin.tsx:106
|
||||||
#: src/pages/UserPublicProfile.tsx:1220
|
#: src/pages/UserPublicProfile.tsx:1222
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr "Mot de passe"
|
msgstr "Mot de passe"
|
||||||
|
|
||||||
@@ -760,17 +772,17 @@ msgstr "Mot de passe mis à jour"
|
|||||||
msgid "Passwords do not match"
|
msgid "Passwords do not match"
|
||||||
msgstr "Les mots de passe ne correspondent pas"
|
msgstr "Les mots de passe ne correspondent pas"
|
||||||
|
|
||||||
#: src/components/AppHeader.tsx:53
|
#: src/components/AppHeader.tsx:54
|
||||||
#: src/components/UserMenu.tsx:62
|
#: src/components/UserMenu.tsx:62
|
||||||
#: src/pages/Search.tsx:175
|
#: src/pages/Search.tsx:175
|
||||||
#: src/pages/UserPlaylists.tsx:368
|
#: src/pages/UserPlaylists.tsx:368
|
||||||
#: src/pages/UserPublicProfile.tsx:974
|
#: src/pages/UserPublicProfile.tsx:975
|
||||||
msgid "Playlists"
|
msgid "Playlists"
|
||||||
msgstr "Collections"
|
msgstr "Collections"
|
||||||
|
|
||||||
#. placeholder {0}: playlists.items.length
|
#. placeholder {0}: playlists.items.length
|
||||||
#. placeholder {1}: playlists.hasMore ? "+" : ""
|
#. placeholder {1}: playlists.hasMore ? "+" : ""
|
||||||
#: src/pages/UserPublicProfile.tsx:1035
|
#: src/pages/UserPublicProfile.tsx:1037
|
||||||
msgid "Playlists ({0}{1})"
|
msgid "Playlists ({0}{1})"
|
||||||
msgstr "Collections ({0}{1})"
|
msgstr "Collections ({0}{1})"
|
||||||
|
|
||||||
@@ -791,10 +803,10 @@ msgstr "Publier la réponse"
|
|||||||
msgid "Posting…"
|
msgid "Posting…"
|
||||||
msgstr "Publication…"
|
msgstr "Publication…"
|
||||||
|
|
||||||
#: src/components/DumpCard.tsx:91
|
#: src/components/DumpCard.tsx:104
|
||||||
#: src/components/PlaylistCard.tsx:73
|
#: src/components/PlaylistCard.tsx:73
|
||||||
#: src/components/PlaylistMembershipPanel.tsx:55
|
#: src/components/PlaylistMembershipPanel.tsx:55
|
||||||
#: src/pages/Dump.tsx:284
|
#: src/pages/Dump.tsx:287
|
||||||
#: src/pages/PlaylistDetail.tsx:759
|
#: src/pages/PlaylistDetail.tsx:759
|
||||||
msgid "private"
|
msgid "private"
|
||||||
msgstr "privé"
|
msgstr "privé"
|
||||||
@@ -909,7 +921,7 @@ msgstr "Envoyer le lien de réinitialisation"
|
|||||||
msgid "Sending…"
|
msgid "Sending…"
|
||||||
msgstr "Envoi…"
|
msgstr "Envoi…"
|
||||||
|
|
||||||
#: src/components/AppHeader.tsx:68
|
#: src/components/AppHeader.tsx:69
|
||||||
msgid "Server unreachable"
|
msgid "Server unreachable"
|
||||||
msgstr "Serveur inaccessible"
|
msgstr "Serveur inaccessible"
|
||||||
|
|
||||||
@@ -918,7 +930,7 @@ msgstr "Serveur inaccessible"
|
|||||||
msgid "Set new password"
|
msgid "Set new password"
|
||||||
msgstr "Définir un nouveau mot de passe"
|
msgstr "Définir un nouveau mot de passe"
|
||||||
|
|
||||||
#: src/pages/UserPublicProfile.tsx:996
|
#: src/pages/UserPublicProfile.tsx:997
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr "Paramètres"
|
msgstr "Paramètres"
|
||||||
|
|
||||||
@@ -926,7 +938,7 @@ msgstr "Paramètres"
|
|||||||
msgid "Something went wrong"
|
msgid "Something went wrong"
|
||||||
msgstr "Une erreur est survenue"
|
msgstr "Une erreur est survenue"
|
||||||
|
|
||||||
#: src/pages/UserPublicProfile.tsx:1239
|
#: src/pages/UserPublicProfile.tsx:1241
|
||||||
msgid "Style"
|
msgid "Style"
|
||||||
msgstr "Style"
|
msgstr "Style"
|
||||||
|
|
||||||
@@ -934,15 +946,6 @@ msgstr "Style"
|
|||||||
msgid "Submit search"
|
msgid "Submit search"
|
||||||
msgstr "Lancer la recherche"
|
msgstr "Lancer la recherche"
|
||||||
|
|
||||||
#: src/pages/UserPublicProfile.tsx:899
|
|
||||||
msgid "Tell people about yourself…"
|
|
||||||
msgstr "Parlez de vous…"
|
|
||||||
|
|
||||||
#: src/components/DumpCreateModal.tsx:383
|
|
||||||
#: src/pages/DumpEdit.tsx:266
|
|
||||||
msgid "Tell the community what makes this worth their time..."
|
|
||||||
msgstr "Dites à la communauté pourquoi ça vaut le coup…"
|
|
||||||
|
|
||||||
#: src/pages/UserRegister.tsx:107
|
#: src/pages/UserRegister.tsx:107
|
||||||
msgid "This invite link is missing, expired, or already used."
|
msgid "This invite link is missing, expired, or already used."
|
||||||
msgstr "Ce lien d'invitation est manquant, expiré ou déjà utilisé."
|
msgstr "Ce lien d'invitation est manquant, expiré ou déjà utilisé."
|
||||||
@@ -959,7 +962,7 @@ msgstr "Ce lien de réinitialisation est absent ou malformé."
|
|||||||
msgid "Title"
|
msgid "Title"
|
||||||
msgstr "Titre"
|
msgstr "Titre"
|
||||||
|
|
||||||
#: src/pages/Notifications.tsx:357
|
#: src/pages/Notifications.tsx:365
|
||||||
msgid "Today"
|
msgid "Today"
|
||||||
msgstr "Aujourd'hui"
|
msgstr "Aujourd'hui"
|
||||||
|
|
||||||
@@ -994,7 +997,7 @@ msgstr "Voté"
|
|||||||
|
|
||||||
#. placeholder {0}: votes.items.length
|
#. placeholder {0}: votes.items.length
|
||||||
#. placeholder {1}: votes.hasMore ? "+" : ""
|
#. placeholder {1}: votes.hasMore ? "+" : ""
|
||||||
#: src/pages/UserPublicProfile.tsx:1015
|
#: src/pages/UserPublicProfile.tsx:1017
|
||||||
msgid "Upvoted ({0}{1})"
|
msgid "Upvoted ({0}{1})"
|
||||||
msgstr "Votés ({0}{1})"
|
msgstr "Votés ({0}{1})"
|
||||||
|
|
||||||
@@ -1020,11 +1023,11 @@ msgstr "Nom d'utilisateur"
|
|||||||
msgid "Users"
|
msgid "Users"
|
||||||
msgstr "Utilisateurs"
|
msgstr "Utilisateurs"
|
||||||
|
|
||||||
#: src/pages/UserPublicProfile.tsx:1085
|
#: src/pages/UserPublicProfile.tsx:1087
|
||||||
#: src/pages/UserPublicProfile.tsx:1128
|
#: src/pages/UserPublicProfile.tsx:1130
|
||||||
#: src/pages/UserPublicProfile.tsx:1170
|
#: src/pages/UserPublicProfile.tsx:1172
|
||||||
#: src/pages/UserPublicProfile.tsx:1361
|
#: src/pages/UserPublicProfile.tsx:1363
|
||||||
#: src/pages/UserPublicProfile.tsx:1493
|
#: src/pages/UserPublicProfile.tsx:1495
|
||||||
msgid "View all →"
|
msgid "View all →"
|
||||||
msgstr "Tout voir →"
|
msgstr "Tout voir →"
|
||||||
|
|
||||||
@@ -1032,20 +1035,29 @@ msgstr "Tout voir →"
|
|||||||
msgid "View dump →"
|
msgid "View dump →"
|
||||||
msgstr "Voir la reco →"
|
msgstr "Voir la reco →"
|
||||||
|
|
||||||
|
#: src/components/DumpCreateModal.tsx:383
|
||||||
|
#: src/pages/DumpEdit.tsx:266
|
||||||
|
msgid "What makes it worth it?"
|
||||||
|
msgstr "Pourquoi on en voudrait ?"
|
||||||
|
|
||||||
|
#: src/pages/UserPublicProfile.tsx:899
|
||||||
|
msgid "Who am I?"
|
||||||
|
msgstr "Qui suis-je ?"
|
||||||
|
|
||||||
#: src/components/DumpCreateModal.tsx:376
|
#: src/components/DumpCreateModal.tsx:376
|
||||||
#: src/pages/DumpEdit.tsx:260
|
#: src/pages/DumpEdit.tsx:260
|
||||||
msgid "Why are you dumping this?"
|
msgid "Why?"
|
||||||
msgstr "Pourquoi recommandez-vous ça ?"
|
msgstr "Pourquoi ?"
|
||||||
|
|
||||||
#: src/components/CommentThread.tsx:342
|
#: src/components/CommentThread.tsx:342
|
||||||
msgid "Write a reply…"
|
msgid "Write a reply…"
|
||||||
msgstr "Écrire une réponse…"
|
msgstr "Écrire une réponse…"
|
||||||
|
|
||||||
#: src/pages/Notifications.tsx:359
|
#: src/pages/Notifications.tsx:367
|
||||||
msgid "Yesterday"
|
msgid "Yesterday"
|
||||||
msgstr "Hier"
|
msgstr "Hier"
|
||||||
|
|
||||||
#: src/pages/Notifications.tsx:344
|
#: src/pages/Notifications.tsx:352
|
||||||
msgid "You'll be notified when someone follows your playlists, upvotes your dumps, or posts new content."
|
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."
|
msgstr "Vous serez notifié lorsque quelqu'un suit vos collections, vote pour vos recos ou publie du nouveau contenu."
|
||||||
|
|
||||||
|
|||||||
@@ -232,24 +232,27 @@ export function Dump() {
|
|||||||
{/* Post header */}
|
{/* Post header */}
|
||||||
<div className="dump-post-header">
|
<div className="dump-post-header">
|
||||||
<div className="dump-header-block">
|
<div className="dump-header-block">
|
||||||
<VoteButton
|
<div className="dump-header-left">
|
||||||
dumpId={dump.id}
|
<VoteButton
|
||||||
count={voteCounts[dump.id] ?? dump.voteCount}
|
dumpId={dump.id}
|
||||||
voted={myVotes.has(dump.id)}
|
count={voteCounts[dump.id] ?? dump.voteCount}
|
||||||
disabled={!user}
|
voted={myVotes.has(dump.id)}
|
||||||
onCast={castVote}
|
disabled={!user}
|
||||||
onRemove={removeVote}
|
onCast={castVote}
|
||||||
/>
|
onRemove={removeVote}
|
||||||
|
/>
|
||||||
|
{user && (
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
className="btn-add-playlist"
|
||||||
|
onClick={() => setPlaylistModalOpen(true)}
|
||||||
|
>
|
||||||
|
<Trans>+ Playlist</Trans>
|
||||||
|
</button>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
<div className="dump-header-right">
|
||||||
<h1 className="dump-title">{dump.title}</h1>
|
<h1 className="dump-title">{dump.title}</h1>
|
||||||
{user && (
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
className="btn-add-playlist"
|
|
||||||
onClick={() => setPlaylistModalOpen(true)}
|
|
||||||
>
|
|
||||||
<Trans>+ Playlist</Trans>
|
|
||||||
</button>
|
|
||||||
)}
|
|
||||||
<div className="dump-op">
|
<div className="dump-op">
|
||||||
<Avatar
|
<Avatar
|
||||||
userId={dump.userId}
|
userId={dump.userId}
|
||||||
@@ -285,6 +288,7 @@ export function Dump() {
|
|||||||
</span>
|
</span>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{dump.comment && (
|
{dump.comment && (
|
||||||
|
|||||||
@@ -257,13 +257,13 @@ export function DumpEdit() {
|
|||||||
|
|
||||||
<div className="form-group">
|
<div className="form-group">
|
||||||
<label htmlFor="comment">
|
<label htmlFor="comment">
|
||||||
<Trans>Why are you dumping this?</Trans>
|
<Trans>Why?</Trans>
|
||||||
</label>
|
</label>
|
||||||
<TextEditor
|
<TextEditor
|
||||||
id="comment"
|
id="comment"
|
||||||
value={comment}
|
value={comment}
|
||||||
onChange={setComment}
|
onChange={setComment}
|
||||||
placeholder={t`Tell the community what makes this worth their time...`}
|
placeholder={t`What makes it worth it?`}
|
||||||
rows={3}
|
rows={3}
|
||||||
maxLength={VALIDATION.DUMP_COMMENT_MAX}
|
maxLength={VALIDATION.DUMP_COMMENT_MAX}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ export function Search() {
|
|||||||
abortRef.current = controller;
|
abortRef.current = controller;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const url = new URL(SEARCH_URL);
|
const url = new URL(SEARCH_URL, location.origin);
|
||||||
url.searchParams.set("q", query);
|
url.searchParams.set("q", query);
|
||||||
url.searchParams.set("page", String(page));
|
url.searchParams.set("page", String(page));
|
||||||
url.searchParams.set("limit", String(DEFAULT_PAGE_SIZE));
|
url.searchParams.set("limit", String(DEFAULT_PAGE_SIZE));
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ export function UserDumps() {
|
|||||||
className="new-playlist-toggle"
|
className="new-playlist-toggle"
|
||||||
onClick={() => setCreateModalOpen(true)}
|
onClick={() => setCreateModalOpen(true)}
|
||||||
>
|
>
|
||||||
<Trans>+ New dump</Trans>
|
+<span className="btn-new-label"><Trans> New dump</Trans></span>
|
||||||
</button>
|
</button>
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -896,7 +896,7 @@ export function UserPublicProfile() {
|
|||||||
value={descDraft}
|
value={descDraft}
|
||||||
onChange={setDescDraft}
|
onChange={setDescDraft}
|
||||||
onSubmit={handleDescSave}
|
onSubmit={handleDescSave}
|
||||||
placeholder={t`Tell people about yourself…`}
|
placeholder={t`Who am I?`}
|
||||||
autoResize
|
autoResize
|
||||||
maxLength={VALIDATION.USER_DESCRIPTION_MAX}
|
maxLength={VALIDATION.USER_DESCRIPTION_MAX}
|
||||||
/>
|
/>
|
||||||
@@ -958,6 +958,7 @@ export function UserPublicProfile() {
|
|||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
<div className="feed-sort-scroller profile-tabs-scroller">
|
||||||
<div className="profile-tabs feed-sort">
|
<div className="profile-tabs feed-sort">
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
@@ -997,6 +998,7 @@ export function UserPublicProfile() {
|
|||||||
</button>
|
</button>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
{tab === "dumps" && (
|
{tab === "dumps" && (
|
||||||
<div className="profile-columns">
|
<div className="profile-columns">
|
||||||
@@ -1327,7 +1329,7 @@ function DumpList(
|
|||||||
className="new-playlist-toggle"
|
className="new-playlist-toggle"
|
||||||
onClick={() => setCreateModalOpen(true)}
|
onClick={() => setCreateModalOpen(true)}
|
||||||
>
|
>
|
||||||
<Trans>+ New dump</Trans>
|
+<span className="btn-new-label"><Trans> New dump</Trans></span>
|
||||||
</button>
|
</button>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -173,11 +173,18 @@
|
|||||||
[data-style="brutalist"] .btn--ghost,
|
[data-style="brutalist"] .btn--ghost,
|
||||||
[data-style="brutalist"] .audio-player-btn,
|
[data-style="brutalist"] .audio-player-btn,
|
||||||
[data-style="brutalist"] .audio-player-vol-btn,
|
[data-style="brutalist"] .audio-player-vol-btn,
|
||||||
[data-style="brutalist"] .rich-content-thumbnail-btn {
|
[data-style="brutalist"] .rich-content-thumbnail-btn,
|
||||||
|
[data-style="brutalist"] .user-menu-trigger {
|
||||||
border: none;
|
border: none;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[data-style="brutalist"] .user-menu-trigger:hover:not(:disabled),
|
||||||
|
[data-style="brutalist"] .user-menu-trigger:active {
|
||||||
|
transform: none;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
[data-style="brutalist"] .modal-close-btn:hover,
|
[data-style="brutalist"] .modal-close-btn:hover,
|
||||||
[data-style="brutalist"] .playlist-remove-btn:hover,
|
[data-style="brutalist"] .playlist-remove-btn:hover,
|
||||||
[data-style="brutalist"] .playlist-card-delete-btn:hover,
|
[data-style="brutalist"] .playlist-card-delete-btn:hover,
|
||||||
|
|||||||
Reference in New Issue
Block a user