mirror of
https://github.com/p-stream/p-stream.git
synced 2026-03-17 00:06:46 +00:00
add more language keys
This commit is contained in:
parent
267f46aa7b
commit
4d45dfd06e
5 changed files with 183 additions and 141 deletions
|
|
@ -96,7 +96,8 @@
|
|||
"discord": "Discord",
|
||||
"dmca": "DMCA",
|
||||
"github": "GitHub",
|
||||
"twitter": "Twitter"
|
||||
"twitter": "Twitter",
|
||||
"funding": "Support us"
|
||||
},
|
||||
"tagline": "Watch your favorite shows and movies for free with no ads ever! (っ'ヮ'c)"
|
||||
},
|
||||
|
|
@ -359,6 +360,25 @@
|
|||
},
|
||||
"start": {
|
||||
"explainer": "To get the best streams possible, you will need to choose which streaming method you want to use.",
|
||||
"moreInfo": {
|
||||
"button": "More info",
|
||||
"title": "Understanding a setup",
|
||||
"explainer": {
|
||||
"intro": "P-Stream doesn't host videos. It relies on third-party websites for content, so you need to choose how it connects to those sites.",
|
||||
"options": "Your Options:",
|
||||
"extension": "1. Extension (Recommended)",
|
||||
"extensionDescription": "The extension gives you access to the most sources. It acts as a local proxy and can handle sites that need special cookies or headers to load.",
|
||||
"proxy": "2. Proxy",
|
||||
"proxyDescription": "The proxy scrapes media from other websites. It bypasses browser restrictions (like CORS) to allow scraping.",
|
||||
"default": "3. Default Setup",
|
||||
"defaultDescription": "Uses P-Stream's built-in proxy. It's the easiest option but might be slower due to shared bandwidth.",
|
||||
"fedapi": {
|
||||
"fedapi": "Optional FED API (Febbox) UI token",
|
||||
"fedapiDescription": "Bringing your own Febbox account allows you to unlock FED API, our best source with 4K quality, Dolby Atmos, the most content, and the best (fastest) load times. This the highly recommended!"
|
||||
},
|
||||
"outro": "If you have more questions on how this works, feel free to ask on the <0>P-Stream Discord</0> server!"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"or": "or",
|
||||
"default": {
|
||||
|
|
@ -481,6 +501,10 @@
|
|||
"scrapeButton": "Scrape subtitles",
|
||||
"empty": "There are no provided subtitles for this.",
|
||||
"notFound": "None of the available options match your query"
|
||||
},
|
||||
"watchparty": {
|
||||
"watchpartyItem": "Watch Party",
|
||||
"notice": "Watch Party might not be available for some sources"
|
||||
}
|
||||
},
|
||||
"metadata": {
|
||||
|
|
@ -693,7 +717,8 @@
|
|||
"migration": {
|
||||
"description": "<0>Migrate my data</0> to a new server.",
|
||||
"link": "Migrate my data"
|
||||
}
|
||||
},
|
||||
"documentation": "Backend documentation"
|
||||
},
|
||||
"setup": {
|
||||
"doSetup": "Do setup",
|
||||
|
|
@ -721,10 +746,15 @@
|
|||
"workers": {
|
||||
"addButton": "Add new worker",
|
||||
"description": "To make the application function, all traffic is routed through proxies. Enable this if you want to bring your own workers. <0>Instructions.</0>",
|
||||
"documentation": "Proxy documentation",
|
||||
"emptyState": "No workers yet (。•́︿•̀。), add one below",
|
||||
"label": "Use custom proxy workers",
|
||||
"urlLabel": "Worker URLs",
|
||||
"urlPlaceholder": "https://"
|
||||
"urlPlaceholder": "https://",
|
||||
"proxyTMDB": {
|
||||
"title": "Proxy TMDB",
|
||||
"description": "Only needed if you can't access TheMovieDB directly, such as if your ISP blocks it. It is recomended to disable the Discover secton to improve performance with this."
|
||||
}
|
||||
}
|
||||
},
|
||||
"preferences": {
|
||||
|
|
@ -820,5 +850,28 @@
|
|||
"subtitle": "Explore the latest hits and timeless classics."
|
||||
},
|
||||
"scrollToTop": "Back to top"
|
||||
},
|
||||
"fedapi": {
|
||||
"onboarding": {
|
||||
"title": "Optional: FED API (Febbox) token",
|
||||
"description": "Bring your own Febbox account to get the best streaming with 4K quality, Dolby Atmos, skip intro and the best (fastest) load times!"
|
||||
},
|
||||
"setup": {
|
||||
"title": "To get your UI token:",
|
||||
"showVideo": "Show Video Tutorial",
|
||||
"hideVideo": "Hide Video Tutorial",
|
||||
"step": {
|
||||
"1": "1. Go to <0>febbox.com</0> and log in with Google (use a fresh account!)",
|
||||
"2": "2. Open DevTools or inspect the page",
|
||||
"3": "3. Go to Application tab → Cookies",
|
||||
"4": "4. Copy the 'ui' cookie.",
|
||||
"5": "5. Close the tab, but do NOT logout!",
|
||||
"warning": "(Do not share this token!)"
|
||||
}
|
||||
},
|
||||
"status": {
|
||||
"success": "success",
|
||||
"failure": "Failed to fetch a "VIP" stream. Token is invalid or API is down!"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ export function Footer() {
|
|||
{t("footer.links.discord")}
|
||||
</FooterLink>
|
||||
<FooterLink href="https://rentry.co/h5mypdfs" icon={Icons.TIP_JAR}>
|
||||
Support us
|
||||
{t("footer.links.funding")}
|
||||
</FooterLink>
|
||||
<div className="inline md:hidden">
|
||||
<Dmca />
|
||||
|
|
|
|||
|
|
@ -101,10 +101,10 @@ export function SettingsMenu({ id }: { id: string }) {
|
|||
rightSide={<Icon className="text-xl" icon={Icons.WATCH_PARTY} />}
|
||||
className={downloadable ? "opacity-100" : "opacity-50"}
|
||||
>
|
||||
{t("Watch Party")}
|
||||
{t("player.menus.watchparty.watchpartyItem")}
|
||||
</Menu.Link>
|
||||
<Paragraph className="text-xs">
|
||||
Watch Party might not be available for some sources
|
||||
{t("player.menus.watchparty.notice")}
|
||||
</Paragraph>
|
||||
</Menu.Section>
|
||||
|
||||
|
|
|
|||
|
|
@ -78,14 +78,10 @@ export function FEDAPISetup() {
|
|||
<div className="flex justify-between items-center gap-4">
|
||||
<div className="my-3">
|
||||
<p className="text-white font-bold mb-3">
|
||||
Optional: FED API (Febbox) token
|
||||
{t("fedapi.onboarding.title")}
|
||||
</p>
|
||||
<p className="max-w-[30rem] font-medium">
|
||||
<Trans i18nKey="settings.connections.febbox.description">
|
||||
Bring your own Febbox account to get the best streaming with
|
||||
4K quality, Dolby Atmos, skip intro and the best (fastest)
|
||||
load times!
|
||||
</Trans>
|
||||
<Trans i18nKey="fedapi.onboarding.description" />
|
||||
</p>
|
||||
</div>
|
||||
<div>
|
||||
|
|
@ -101,52 +97,51 @@ export function FEDAPISetup() {
|
|||
|
||||
<div className="my-3">
|
||||
<p className="max-w-[30rem] font-medium">
|
||||
<Trans i18nKey="settings.connections.febbox.description">
|
||||
To get your UI token:
|
||||
<br />
|
||||
<div
|
||||
onClick={() => setShowVideo(!showVideo)}
|
||||
className="flex items-center justify-between p-1 px-2 my-2 w-fit border border-type-secondary rounded-lg cursor-pointer text-type-secondary hover:text-white transition-colors duration-200"
|
||||
>
|
||||
<span className="text-sm">
|
||||
{showVideo
|
||||
? "Hide Video Tutorial"
|
||||
: "Show Video Tutorial"}
|
||||
</span>
|
||||
{showVideo ? (
|
||||
<Icon icon={Icons.CHEVRON_UP} className="pl-1" />
|
||||
) : (
|
||||
<Icon icon={Icons.CHEVRON_DOWN} className="pl-1" />
|
||||
)}
|
||||
</div>
|
||||
{showVideo && (
|
||||
<>
|
||||
<div className="relative pt-[56.25%] mt-2">
|
||||
<iframe
|
||||
src="https://player.vimeo.com/video/1059834885?h=c3ab398d42&badge=0&autopause=0&player_id=0&app_id=58479"
|
||||
allow="autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media"
|
||||
className="absolute top-0 left-0 w-full h-full border border-type-secondary rounded-lg bg-black"
|
||||
title="P-Stream FED API Setup Tutorial"
|
||||
/>
|
||||
</div>
|
||||
<br />
|
||||
</>
|
||||
{t("fedapi.setup.title")}
|
||||
<br />
|
||||
<div
|
||||
onClick={() => setShowVideo(!showVideo)}
|
||||
className="flex items-center justify-between p-1 px-2 my-2 w-fit border border-type-secondary rounded-lg cursor-pointer text-type-secondary hover:text-white transition-colors duration-200"
|
||||
>
|
||||
<span className="text-sm">
|
||||
{showVideo
|
||||
? t("fedapi.setup.hideVideo")
|
||||
: t("fedapi.setup.showVideo")}
|
||||
</span>
|
||||
{showVideo ? (
|
||||
<Icon icon={Icons.CHEVRON_UP} className="pl-1" />
|
||||
) : (
|
||||
<Icon icon={Icons.CHEVRON_DOWN} className="pl-1" />
|
||||
)}
|
||||
1. Go to{" "}
|
||||
<MwLink url="https://febbox.com">febbox.com</MwLink> and log
|
||||
in with Google (use a fresh account!)
|
||||
<br />
|
||||
2. Open DevTools or inspect the page
|
||||
<br />
|
||||
3. Go to Application tab → Cookies
|
||||
<br />
|
||||
4. Copy the "ui" cookie.
|
||||
<br />
|
||||
5. Close the tab, but do NOT logout!
|
||||
</div>
|
||||
{showVideo && (
|
||||
<>
|
||||
<div className="relative pt-[56.25%] mt-2">
|
||||
<iframe
|
||||
src="https://player.vimeo.com/video/1059834885?h=c3ab398d42&badge=0&autopause=0&player_id=0&app_id=58479"
|
||||
allow="autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media"
|
||||
className="absolute top-0 left-0 w-full h-full border border-type-secondary rounded-lg bg-black"
|
||||
title="P-Stream FED API Setup Tutorial"
|
||||
/>
|
||||
</div>
|
||||
<br />
|
||||
</>
|
||||
)}
|
||||
<Trans i18nKey="fedapi.setup.step.1">
|
||||
<MwLink url="https://febbox.com" />
|
||||
</Trans>
|
||||
<br />
|
||||
<Trans i18nKey="fedapi.setup.step.2" />
|
||||
<br />
|
||||
<Trans i18nKey="fedapi.setup.step.3" />
|
||||
<br />
|
||||
<Trans i18nKey="fedapi.setup.step.4" />
|
||||
|
||||
<br />
|
||||
<Trans i18nKey="fedapi.setup.step.5" />
|
||||
</p>
|
||||
<p className="text-type-danger mt-2">
|
||||
(Do not share this token!)
|
||||
<Trans i18nKey="fedapi.setup.step.warning" />
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
|
@ -168,8 +163,7 @@ export function FEDAPISetup() {
|
|||
</div>
|
||||
{status === "error" && (
|
||||
<p className="text-type-danger mt-4">
|
||||
Failed to fetch a "VIP" stream. Token is invalid or
|
||||
API is down!
|
||||
{t("fedapi.status.failure")}
|
||||
</p>
|
||||
)}
|
||||
</>
|
||||
|
|
@ -215,56 +209,56 @@ export function OnboardingPage() {
|
|||
</div>
|
||||
</ModalCard>
|
||||
</Modal>
|
||||
<FancyModal id={infoModal.id} title="Understanding a setup" size="xl">
|
||||
<FancyModal
|
||||
id={infoModal.id}
|
||||
title={t("onboarding.start.moreInfo.title")}
|
||||
size="xl"
|
||||
>
|
||||
<div>
|
||||
<p>
|
||||
P-Stream doesn't host videos. It relies on third-party websites
|
||||
for content, so you need to choose how it connects to those sites.
|
||||
{t("onboarding.start.moreInfo.explainer.intro")}
|
||||
<br />
|
||||
<br />
|
||||
<strong>Your Options:</strong>
|
||||
<strong>{t("onboarding.start.moreInfo.explainer.options")}</strong>
|
||||
<br />
|
||||
<strong>1. Extension (Recommended)</strong>
|
||||
<strong>
|
||||
{t("onboarding.start.moreInfo.explainer.extension")}
|
||||
</strong>
|
||||
<br />
|
||||
The extension gives you access to the most sources. It acts as a
|
||||
local proxy and can handle sites that need special cookies or
|
||||
headers to load.
|
||||
{t("onboarding.start.moreInfo.explainer.extensionDescription")}
|
||||
<br />
|
||||
<br />
|
||||
<strong>2. Proxy</strong>
|
||||
<strong>{t("onboarding.start.moreInfo.explainer.proxy")}</strong>
|
||||
<br />
|
||||
The proxy scrapes media from other websites. It bypasses browser
|
||||
restrictions (like CORS) to allow scraping.
|
||||
{t("onboarding.start.moreInfo.explainer.proxyDescription")}
|
||||
<br />
|
||||
<br />
|
||||
<strong>3. Default Setup</strong>
|
||||
<strong>{t("onboarding.start.moreInfo.explainer.default")}</strong>
|
||||
<br />
|
||||
Uses P-Stream's built-in proxy. It's the easiest option
|
||||
but might be slower due to shared bandwidth.
|
||||
{t("onboarding.start.moreInfo.explainer.defaultDescription")}
|
||||
<br />
|
||||
<br />
|
||||
{conf().ALLOW_FEBBOX_KEY && (
|
||||
<>
|
||||
<strong>Optional FED API (Febbox) UI token</strong>
|
||||
<strong>
|
||||
{t("onboarding.start.moreInfo.explainer.fedapi.fedapi")}
|
||||
</strong>
|
||||
<br />
|
||||
Bringing your own Febbox account allows you to unlock FED API,
|
||||
our best source with 4K quality, Dolby Atmos, the most content,
|
||||
and the best (fastest) load times. This the highly recommended!
|
||||
{t(
|
||||
"onboarding.start.moreInfo.explainer.fedapi.fedapiDescription",
|
||||
)}
|
||||
<br />
|
||||
<br />
|
||||
</>
|
||||
)}
|
||||
If you have more questions on how this works, feel free to ask on
|
||||
the{" "}
|
||||
<a
|
||||
href="https://discord.com/invite/7z6znYgrTG"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="text-type-link"
|
||||
>
|
||||
P-Stream Discord
|
||||
</a>{" "}
|
||||
server!
|
||||
<Trans i18nKey="onboarding.start.moreInfo.explainer.outro">
|
||||
<a
|
||||
href="https://discord.com/invite/7z6znYgrTG"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="text-type-link"
|
||||
/>
|
||||
</Trans>
|
||||
</p>
|
||||
</div>
|
||||
</FancyModal>
|
||||
|
|
@ -279,7 +273,7 @@ export function OnboardingPage() {
|
|||
className="pt-4 flex cursor-pointer items-center text-type-link"
|
||||
onClick={() => infoModal.show()}
|
||||
>
|
||||
<p>More info</p>
|
||||
<Trans i18nKey="onboarding.start.moreInfo.button" />
|
||||
<Icon className="pl-2" icon={Icons.CIRCLE_QUESTION} />
|
||||
</div>
|
||||
</Paragraph>
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ function ProxyEdit({
|
|||
<p className="max-w-[30rem] font-medium">
|
||||
<Trans i18nKey="settings.connections.workers.description">
|
||||
<MwLink to="https://docs.pstream.org/proxy/deploy">
|
||||
Proxy documentation
|
||||
{t("settings.connections.workers.documentation")}
|
||||
</MwLink>
|
||||
</Trans>
|
||||
</p>
|
||||
|
|
@ -144,11 +144,11 @@ function ProxyEdit({
|
|||
|
||||
<div className="flex justify-between items-center gap-4">
|
||||
<div className="my-3">
|
||||
<p className="text-white font-bold mb-3">Proxy TMDB</p>
|
||||
<p className="text-white font-bold mb-3">
|
||||
{t("settings.connections.workers.proxyTMDB.title")}
|
||||
</p>
|
||||
<p className="max-w-[30rem] font-medium">
|
||||
Only needed if you can't access TheMovieDB directly, such
|
||||
as if your ISP blocks it. It is recomended to disable the
|
||||
Discover secton to improve performance with this.
|
||||
{t("settings.connections.workers.proxyTMDB.description")}
|
||||
</p>
|
||||
</div>
|
||||
<div>
|
||||
|
|
@ -177,7 +177,7 @@ function BackendEdit({ backendUrl, setBackendUrl }: BackendEditProps) {
|
|||
<p className="max-w-[30rem] font-medium">
|
||||
<Trans i18nKey="settings.connections.server.description">
|
||||
<MwLink to="https://docs.pstream.org/backend/deploy">
|
||||
Backend documentation
|
||||
{t("settings.connections.server.documentation")}
|
||||
</MwLink>
|
||||
</Trans>
|
||||
</p>
|
||||
|
|
@ -251,14 +251,10 @@ function FebboxTokenEdit({ febboxToken, setFebboxToken }: FebboxTokenProps) {
|
|||
<div className="flex justify-between items-center gap-4">
|
||||
<div className="my-3">
|
||||
<p className="text-white font-bold mb-3">
|
||||
Optional: FED API (Febbox) token
|
||||
{t("fedapi.onboarding.title")}
|
||||
</p>
|
||||
<p className="max-w-[30rem] font-medium">
|
||||
<Trans i18nKey="settings.connections.febbox.description">
|
||||
Bring your own Febbox account to get the best streaming with 4K
|
||||
quality, Dolby Atmos, skip intro and the best (fastest) load
|
||||
times!
|
||||
</Trans>
|
||||
<Trans i18nKey="fedapi.onboarding.description" />
|
||||
</p>
|
||||
</div>
|
||||
<div>
|
||||
|
|
@ -274,51 +270,51 @@ function FebboxTokenEdit({ febboxToken, setFebboxToken }: FebboxTokenProps) {
|
|||
|
||||
<div className="my-3">
|
||||
<p className="max-w-[30rem] font-medium">
|
||||
<Trans i18nKey="settings.connections.febbox.description">
|
||||
To get your UI token:
|
||||
<br />
|
||||
<div
|
||||
onClick={() => setShowVideo(!showVideo)}
|
||||
className="flex items-center justify-between p-1 px-2 my-2 w-fit border border-type-secondary rounded-lg cursor-pointer text-type-secondary hover:text-white transition-colors duration-200"
|
||||
>
|
||||
<span className="text-sm">
|
||||
{showVideo
|
||||
? "Hide Video Tutorial"
|
||||
: "Show Video Tutorial"}
|
||||
</span>
|
||||
{showVideo ? (
|
||||
<Icon icon={Icons.CHEVRON_UP} className="pl-1" />
|
||||
) : (
|
||||
<Icon icon={Icons.CHEVRON_DOWN} className="pl-1" />
|
||||
)}
|
||||
</div>
|
||||
{showVideo && (
|
||||
<>
|
||||
<div className="relative pt-[56.25%] mt-2">
|
||||
<iframe
|
||||
src="https://player.vimeo.com/video/1059834885?h=c3ab398d42&badge=0&autopause=0&player_id=0&app_id=58479"
|
||||
allow="autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media"
|
||||
className="absolute top-0 left-0 w-full h-full border border-type-secondary rounded-lg bg-black"
|
||||
title="P-Stream FED API Setup Tutorial"
|
||||
/>
|
||||
</div>
|
||||
<br />
|
||||
</>
|
||||
{t("fedapi.setup.title")}
|
||||
<br />
|
||||
<div
|
||||
onClick={() => setShowVideo(!showVideo)}
|
||||
className="flex items-center justify-between p-1 px-2 my-2 w-fit border border-type-secondary rounded-lg cursor-pointer text-type-secondary hover:text-white transition-colors duration-200"
|
||||
>
|
||||
<span className="text-sm">
|
||||
{showVideo
|
||||
? t("fedapi.setup.hideVideo")
|
||||
: t("fedapi.setup.showVideo")}
|
||||
</span>
|
||||
{showVideo ? (
|
||||
<Icon icon={Icons.CHEVRON_UP} className="pl-1" />
|
||||
) : (
|
||||
<Icon icon={Icons.CHEVRON_DOWN} className="pl-1" />
|
||||
)}
|
||||
1. Go to <MwLink url="https://febbox.com">febbox.com</MwLink>{" "}
|
||||
and log in with Google (use a fresh account!)
|
||||
<br />
|
||||
2. Open DevTools or inspect the page
|
||||
<br />
|
||||
3. Go to Application tab → Cookies
|
||||
<br />
|
||||
4. Copy the "ui" cookie.
|
||||
<br />
|
||||
5. Close the tab, but do NOT logout!
|
||||
</div>
|
||||
{showVideo && (
|
||||
<>
|
||||
<div className="relative pt-[56.25%] mt-2">
|
||||
<iframe
|
||||
src="https://player.vimeo.com/video/1059834885?h=c3ab398d42&badge=0&autopause=0&player_id=0&app_id=58479"
|
||||
allow="autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media"
|
||||
className="absolute top-0 left-0 w-full h-full border border-type-secondary rounded-lg bg-black"
|
||||
title="P-Stream FED API Setup Tutorial"
|
||||
/>
|
||||
</div>
|
||||
<br />
|
||||
</>
|
||||
)}
|
||||
<Trans i18nKey="fedapi.setup.step.1">
|
||||
<MwLink url="https://febbox.com" />
|
||||
</Trans>
|
||||
<br />
|
||||
<Trans i18nKey="fedapi.setup.step.2" />
|
||||
<br />
|
||||
<Trans i18nKey="fedapi.setup.step.3" />
|
||||
<br />
|
||||
<Trans i18nKey="fedapi.setup.step.4" />
|
||||
|
||||
<br />
|
||||
<Trans i18nKey="fedapi.setup.step.5" />
|
||||
</p>
|
||||
<p className="text-type-danger mt-2">
|
||||
(Do not share this token!)
|
||||
<Trans i18nKey="fedapi.setup.step.warning" />
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
|
@ -340,8 +336,7 @@ function FebboxTokenEdit({ febboxToken, setFebboxToken }: FebboxTokenProps) {
|
|||
</div>
|
||||
{status === "error" && (
|
||||
<p className="text-type-danger mt-4">
|
||||
Failed to fetch a "VIP" stream. Token is invalid or
|
||||
API is down!
|
||||
{t("fedapi.status.failure")}
|
||||
</p>
|
||||
)}
|
||||
</>
|
||||
|
|
|
|||
Loading…
Reference in a new issue