Files
siftlode/frontend/src/i18n/locales/en/welcome.json
T
peter 078194731b feat(files): the Downloads page goes — the tray, a Storage tab and a Downloads settings tab take its place
- The Downloads module, its rail icon and badge are gone. A bookmark, the remembered page and an old
  history entry that name it land on Files (urlState.resolvePage); `g d` goes to Files too.
- Users page: a Storage tab — the disk in numbers, every user's use against their own limit with
  their file count, every user's downloads; aligned tables, one menu per row (edit / reset quota,
  open source, copy, the owner's quota). The admin storage rows carry quota + file count, the admin
  job list its owner.
- Settings: a Downloads tab — the download formats in one list (duplicate a built-in, edit or delete
  your own) and the site sign-ins, moved from Account.
- "View" on an added download, a clip or a converting upload opens the tray on that row (unfolded,
  back if closed; a finished one opens as a file; under a player it opens without taking focus).
- The download dialog opens on the format used last.
- DataTable: `pager={false}` for a short list, `cardRow` to give a lone "…" its own card line.
- Welcome and README speak of Files; a new Files screenshot.
2026-10-11 19:37:13 +02:00

138 lines
7.1 KiB
JSON

{
"hero": {
"title": "Your subscriptions, in one quiet Feed.",
"subtitle": "Every upload from the channels you follow, in one place you can actually filter, search and sort. No algorithm deciding what you see — and no Shorts or livestreams unless you want them.",
"trust": "Self-hosted and private: your data stays on your own server. Sign in with email, or continue with Google."
},
"openSource": {
"title": "Free and open source",
"body": "The whole thing is open — read the code, run your own private copy, or open an issue.",
"link": "View the source"
},
"preview": {
"feed": "The Feed — filter by channel, language, topic, length and date.",
"channels": "Channels",
"playlists": "Playlists",
"player": "In-app player",
"files": "Your files",
"search": "Search results",
"plex": "Your Plex library"
},
"features": {
"heading": "What it does",
"readable": {
"title": "Your subscriptions, actually readable",
"body": "Sort and filter by channel, tag, language, topic, length or date, and save your setups as views."
},
"neverMiss": {
"title": "Never miss an upload",
"body": "Every video from every channel lands in one Feed; Shorts and livestreams stay tucked away by default."
},
"search": {
"title": "Search all of YouTube",
"body": "Search right from your Feed — results play, save and add to playlists like any other video."
},
"playlists": {
"title": "Playlists that sync both ways",
"body": "Build them locally and keep them in two-way sync with YouTube."
},
"player": {
"title": "Watch in-app, resume anywhere",
"body": "A built-in player picks each video up where you left off, with keyboard and scroll controls."
},
"files": {
"title": "Files",
"body": "Every file you keep in one library: paste a link anywhere to download it, trim or join a video, upload your own, then share a link that plays on any phone."
},
"plex": {
"title": "Your Plex library too",
"body": "Browse and play what your Plex server already holds, right alongside your Feed."
},
"private": {
"title": "Self-hosted and private",
"body": "Run it yourself, multi-user, in English and Hungarian — your data stays yours."
}
},
"auth": {
"signinTitle": "Sign in",
"createTitle": "Create your account",
"forgotTitle": "Reset your password",
"resetTitle": "Set a new password",
"email": "Email",
"password": "Password",
"newPassword": "New password (min {{min}} characters)",
"invalidEmail": "Enter a valid email address",
"weakPassword": "Password must be at least {{min}} characters",
"genericError": "Something went wrong. Please try again.",
"working": "Please wait…",
"signinButton": "Sign in",
"createButton": "Create account",
"forgotButton": "Send reset link",
"resetButton": "Set password",
"resendButton": "Resend verification",
"resendTitle": "Resend verification email",
"resendLink": "Didn't get the verification email?",
"createLink": "Create an account",
"forgotLink": "Forgot password?",
"backToSignin": "Back to sign in",
"or": "or",
"google": "Continue with Google",
"registerDone": "Almost there — check your email for a confirmation link, and your spam folder if it isn't there in a minute. After you confirm it, an admin approves your account before you can sign in.",
"forgotDone": "If that email has an account, we've sent a reset link. Check your inbox, and your spam folder if it hasn't arrived in a minute.",
"resetDone": "Your password has been set — you can sign in now",
"deadLink": {
"title": "This link is no longer valid",
"body": "A password reset link lasts one hour and works once. This one has expired, has already been used, or belongs to an account that no longer exists — so there is nothing to set a password on. Ask for a fresh one and we'll email it.",
"short": "This reset link is no longer valid",
"cta": "Request a new link"
},
"verifyOk": "Email confirmed. Once an admin approves your account, you can sign in.",
"verifyOkReset": "Email confirmed. The password this account registered with had been cleared for security — choose a new one to sign in.",
"verifyOkResetCta": "Set a new password",
"verifyInvalid": "That verification link is invalid or has expired",
"verifyUnreachable": "Couldn't reach the server to confirm that link, so it hasn't been used up. Try opening it again in a moment.",
"resendCta": "Send a new link",
"resendDone": "If that email has an unconfirmed account, we've sent a new confirmation link. Check your inbox, and your spam folder if it hasn't arrived in a minute.",
"oauthCancelled": "Google sign-in was cancelled. You can try again or use email and password.",
"accessRequested": "Thanks — we recorded your request. An admin will review it.",
"accessRequestedFor": "We've recorded your access request for:",
"accessRequestedReview": "An admin will review it, and we'll email you either way.",
"accessLinked": "You already had a request on file for this mailbox, under a different spelling:",
"accessLinkedTail": "Google returns one fixed spelling of a Gmail address, so we linked this sign-in to that request instead of opening a second one. Any mail goes to the address above.",
"blocked": {
"addressLabel": "Address on file",
"operator": "If you think this is a mistake, contact the operator at {{contact}}.",
"gate": {
"emailDone": "Email address confirmed",
"emailPending": "Email address — not confirmed yet",
"approvalDone": "Admin approval — granted",
"approvalPending": "Admin approval — pending"
},
"email_unverified": {
"title": "Confirm your email address",
"body": "Your password is correct — we just can't let you in until the address on this account is confirmed. Open the link we emailed you, or ask for a new one.",
"short": "Confirm your email address first — check your inbox"
},
"pending_approval": {
"title": "Waiting for approval",
"body": "Your password is correct and your address is confirmed. An admin still has to let you in — we'll email you as soon as they decide.",
"short": "Your account is waiting for admin approval"
},
"suspended": {
"title": "Account suspended",
"body": "This account has been suspended, so it can't sign in by any method.",
"short": "This account has been suspended"
},
"invalid": {
"short": "Invalid email or password"
},
"rate_limited": {
"short": "Too many attempts. Try again shortly."
}
},
"accessDenied": "That account isn't approved for this instance yet — register below or ask the admin for access",
"suspended": "This account has been suspended and can't sign in. If you think this is a mistake, contact the operator (check your email for details).",
"deleted": "Your account and all its data were permanently deleted. We've emailed you a confirmation."
}
}