siftlode/frontend/src/i18n/locales/en/welcome.json
npeter83 df09b49c0c improvement(welcome): prominent open-source callout in the page body
Add an accent-tinted 'Free and open source' band between the app preview and the feature grid
— a short line about reading the code / self-hosting / filing an issue, linking to the public
repo. The compact footer link stays. Trilingual.
2026-07-02 02:14:27 +02:00

80 lines
3.8 KiB
JSON

{
"hero": {
"title": "Your YouTube subscriptions, the way a feed should work.",
"subtitle": "Every upload from the channels you follow in one clean, filterable feed — no algorithm deciding what you see, and no Shorts or livestream noise unless you want it.",
"trust": "Self-hosted and private. Sign in with email, or continue with Google."
},
"openSource": {
"title": "Free and open source",
"body": "Siftlode's code is public — see how it works, run your own private instance, or open an issue.",
"link": "View the source"
},
"preview": {
"feed": "The feed — filter by channel, language, topic, length and date.",
"channels": "Channel manager",
"playlists": "Playlists"
},
"features": {
"heading": "Why Siftlode",
"readable": {
"title": "Your subscriptions, actually readable",
"body": "Sort and filter by channel, tag, language, topic, length or date, and save your setups as views. You decide what surfaces, not an algorithm."
},
"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 YouTube right from your feed — results play, save and add to playlists like any other video."
},
"playlists": {
"title": "Playlists that sync both ways",
"body": "Build playlists locally and keep them in two-way sync with YouTube."
},
"player": {
"title": "Watch in-app, resume anywhere",
"body": "An in-app player picks up each video exactly where you left off — no recommendation rabbit-hole."
},
"private": {
"title": "Self-hosted and private",
"body": "Run it yourself, multi-user, in English, Hungarian and German. 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",
"createLink": "Create an account",
"forgotLink": "Forgot password?",
"backToSignin": "Back to sign in",
"or": "or",
"google": "Continue with Google",
"tryDemo": "Try the demo",
"demoHint": "Enter an email that's been enabled for the demo account.",
"demoEmail": "Demo email",
"demoEnter": "Enter",
"demoDenied": "That email isn't enabled for the demo. Ask the admin to add it.",
"registerDone": "Almost there — check your email for a verification link. 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.",
"resetDone": "Your password has been set — you can sign in now.",
"verifyOk": "Email confirmed. Once an admin approves your account, you can sign in.",
"verifyInvalid": "That verification link is invalid or has expired.",
"accessRequested": "Thanks — we recorded your request. An admin will review it.",
"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."
}
}