From e19703122e2ed1df947bc814979d538c710916e5 Mon Sep 17 00:00:00 2001 From: Ikko Eltociear Ashimine Date: Thu, 28 Dec 2023 01:09:03 +0900 Subject: [PATCH 01/21] Fix typo in player/README.md seperate -> separate --- src/components/player/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/player/README.md b/src/components/player/README.md index 404e138a..3e3bc0c6 100644 --- a/src/components/player/README.md +++ b/src/components/player/README.md @@ -12,7 +12,7 @@ These parts are internally used, they aren't exported. Do not use them outside o ### `/display` The display interface, abstraction on how to actually play the content (e.g Video element, chrome casting, etc) - - It must be completely seperate from any react code + - It must be completely separate from any react code - It must not interact with state, pass async data back with events ### `/internals` From ac0e5e692717fef0d7e21dd07f5715da88b3c5eb Mon Sep 17 00:00:00 2001 From: Astrid Date: Wed, 27 Dec 2023 22:39:38 +0100 Subject: [PATCH 02/21] Add support for playlist download --- src/components/player/atoms/settings/SettingsMenu.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/player/atoms/settings/SettingsMenu.tsx b/src/components/player/atoms/settings/SettingsMenu.tsx index 6e1f4d2f..14b3827f 100644 --- a/src/components/player/atoms/settings/SettingsMenu.tsx +++ b/src/components/player/atoms/settings/SettingsMenu.tsx @@ -37,6 +37,8 @@ export function SettingsMenu({ id }: { id: string }) { const source = usePlayerStore((s) => s.source); + const downloadable = source?.type === "file" || source?.type === "hls"; + return ( @@ -58,12 +60,10 @@ export function SettingsMenu({ id }: { id: string }) { - router.navigate( - source?.type === "file" ? "/download" : "/download/unable", - ) + router.navigate(downloadable ? "/download" : "/download/unable") } rightSide={} - className={source?.type === "file" ? "opacity-100" : "opacity-50"} + className={downloadable ? "opacity-100" : "opacity-50"} > {t("player.menus.settings.downloadItem")} From 7f0701ee61ca308a263eaea0c6981f25c716cc06 Mon Sep 17 00:00:00 2001 From: Astrid Date: Wed, 27 Dec 2023 22:39:56 +0100 Subject: [PATCH 03/21] Updated English locale for playlist downloads --- src/assets/locales/en.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/assets/locales/en.json b/src/assets/locales/en.json index 042cbe91..f0ef16ea 100644 --- a/src/assets/locales/en.json +++ b/src/assets/locales/en.json @@ -188,8 +188,9 @@ "downloads": { "title": "Download", "disclaimer": "Downloads are taken directly from the provider. movie-web does not have control over how the downloads are provided.", - "hlsExplanation": "This media is a HLS stream which cannot be downloaded on movie-web.", + "hlsDisclaimer": "Downloads are taken directly from the provider. movie-web does not have control over how the downloads are provided. Please note that you are downloading an HLS playlist, this is intended for users familiar with advanced multimedia streaming.", "downloadVideo": "Download video", + "downloadPlaylist": "Download playlist", "downloadCaption": "Download current caption", "onPc": { "1": "On PC, click the download button then, on the new page, right click the video and select Save video as", From 57edcbeb79924fc7a072d8379fbabd1cfb8b0363 Mon Sep 17 00:00:00 2001 From: Astrid Date: Wed, 27 Dec 2023 22:40:04 +0100 Subject: [PATCH 04/21] Playlist downloads --- .../player/atoms/settings/Downloads.tsx | 81 ++++++++++++------- 1 file changed, 54 insertions(+), 27 deletions(-) diff --git a/src/components/player/atoms/settings/Downloads.tsx b/src/components/player/atoms/settings/Downloads.tsx index 73bcf24a..4a7dcef2 100644 --- a/src/components/player/atoms/settings/Downloads.tsx +++ b/src/components/player/atoms/settings/Downloads.tsx @@ -15,6 +15,7 @@ function useDownloadLink() { const url = useMemo(() => { if (source?.type === "file" && currentQuality) return source.qualities[currentQuality]?.url ?? null; + if (source?.type === "hls") return source.url; return null; }, [source, currentQuality]); return url; @@ -42,6 +43,7 @@ export function DownloadView({ id }: { id: string }) { const { t } = useTranslation(); const downloadUrl = useDownloadLink(); + const sourceType = usePlayerStore((s) => s.source?.type); const selectedCaption = usePlayerStore((s) => s.caption?.selected); const subtitleUrl = useMemo( () => @@ -60,36 +62,61 @@ export function DownloadView({ id }: { id: string }) {
- router.navigate("/download/pc")}> - {t("player.menus.downloads.onPc.title")} - - router.navigate("/download/ios")}> - {t("player.menus.downloads.onIos.title")} - - router.navigate("/download/android")} - > - {t("player.menus.downloads.onAndroid.title")} - + {sourceType === "hls" ? ( + <> + + + - + + + + ) : ( + <> + router.navigate("/download/pc")}> + {t("player.menus.downloads.onPc.title")} + + router.navigate("/download/ios")} + > + {t("player.menus.downloads.onIos.title")} + + router.navigate("/download/android")} + > + {t("player.menus.downloads.onAndroid.title")} + - - - + - - + + + + + + + + )}
From adddb844178a3bf0a2ee72411219bcd5961047db Mon Sep 17 00:00:00 2001 From: mrjvs Date: Wed, 27 Dec 2023 23:39:32 +0100 Subject: [PATCH 05/21] Add cdn replacements --- src/components/player/display/base.ts | 7 ++++--- src/components/player/display/chromecast.ts | 3 ++- src/setup/config.ts | 7 +++++++ src/utils/cdn.ts | 14 ++++++++++++++ 4 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 src/utils/cdn.ts diff --git a/src/components/player/display/base.ts b/src/components/player/display/base.ts index ad333358..7a9ce041 100644 --- a/src/components/player/display/base.ts +++ b/src/components/player/display/base.ts @@ -12,6 +12,7 @@ import { SourceQuality, getPreferredQuality, } from "@/stores/player/utils/qualities"; +import { processCdnLink } from "@/utils/cdn"; import { canChangeVolume, canFullscreen, @@ -101,7 +102,7 @@ export function makeVideoElementDisplayInterface(): DisplayInterface { function setupSource(vid: HTMLVideoElement, src: LoadableSource) { if (src.type === "hls") { if (canPlayHlsNatively(vid)) { - vid.src = src.url; + vid.src = processCdnLink(src.url); vid.currentTime = startAt; return; } @@ -151,12 +152,12 @@ export function makeVideoElementDisplayInterface(): DisplayInterface { } hls.attachMedia(vid); - hls.loadSource(src.url); + hls.loadSource(processCdnLink(src.url)); vid.currentTime = startAt; return; } - vid.src = src.url; + vid.src = processCdnLink(src.url); vid.currentTime = startAt; } diff --git a/src/components/player/display/chromecast.ts b/src/components/player/display/chromecast.ts index ecf59a3d..dbaab0df 100644 --- a/src/components/player/display/chromecast.ts +++ b/src/components/player/display/chromecast.ts @@ -8,6 +8,7 @@ import { DisplayMeta, } from "@/components/player/display/displayInterface"; import { LoadableSource } from "@/stores/player/utils/qualities"; +import { processCdnLink } from "@/utils/cdn"; import { canChangeVolume, canFullscreen, @@ -112,7 +113,7 @@ export function makeChromecastDisplayInterface( metaData.title = meta.title; const mediaInfo = new chrome.cast.media.MediaInfo("video", type); - (mediaInfo as any).contentUrl = source.url; + (mediaInfo as any).contentUrl = processCdnLink(source.url); mediaInfo.streamType = chrome.cast.media.StreamType.BUFFERED; mediaInfo.metadata = metaData; mediaInfo.customData = { diff --git a/src/setup/config.ts b/src/setup/config.ts index 2f16714b..998383c8 100644 --- a/src/setup/config.ts +++ b/src/setup/config.ts @@ -18,6 +18,7 @@ interface Config { BACKEND_URL: string; DISALLOWED_IDS: string; TURNSTILE_KEY: string; + CDN_REPLACEMENTS: string; } export interface RuntimeConfig { @@ -32,6 +33,7 @@ export interface RuntimeConfig { BACKEND_URL: string; DISALLOWED_IDS: string[]; TURNSTILE_KEY: string | null; + CDN_REPLACEMENTS: Array; } const env: Record = { @@ -46,6 +48,7 @@ const env: Record = { BACKEND_URL: import.meta.env.VITE_BACKEND_URL, DISALLOWED_IDS: import.meta.env.VITE_DISALLOWED_IDS, TURNSTILE_KEY: import.meta.env.VITE_TURNSTILE_KEY, + CDN_REPLACEMENTS: import.meta.env.VITE_CDN_REPLACEMENTS, }; // loads from different locations, in order: environment (VITE_{KEY}), window (public/config.js) @@ -84,5 +87,9 @@ export function conf(): RuntimeConfig { .split(",") .map((v) => v.trim()) .filter((v) => v.length > 0), // Should be comma-seperated and contain the media type and ID, formatted like so: movie-753342,movie-753342,movie-753342 + CDN_REPLACEMENTS: getKey("CDN_REPLACEMENTS", "") + .split(",") + .map((v) => v.split(":").map((s) => s.trim())) + .filter((v) => v.length > 0), // The format is :,: }; } diff --git a/src/utils/cdn.ts b/src/utils/cdn.ts new file mode 100644 index 00000000..bf87fb27 --- /dev/null +++ b/src/utils/cdn.ts @@ -0,0 +1,14 @@ +import { conf } from "@/setup/config"; + +export function processCdnLink(url: string): string { + const parsedUrl = new URL(url); + const replacements = conf().CDN_REPLACEMENTS; + for (const [before, after] of replacements) { + if (parsedUrl.hostname.endsWith(before)) { + parsedUrl.host = after; + return parsedUrl.toString(); + } + } + + return url; +} From 23c1df5aeffea54b534bb5fc8dfd8063db60024b Mon Sep 17 00:00:00 2001 From: mrjvs Date: Wed, 27 Dec 2023 23:52:18 +0100 Subject: [PATCH 06/21] Fix some cdn replacement bugs --- src/components/player/internals/ThumbnailScraper.tsx | 5 +++-- src/utils/cdn.ts | 4 +++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/components/player/internals/ThumbnailScraper.tsx b/src/components/player/internals/ThumbnailScraper.tsx index f238aca8..b0fc8474 100644 --- a/src/components/player/internals/ThumbnailScraper.tsx +++ b/src/components/player/internals/ThumbnailScraper.tsx @@ -5,6 +5,7 @@ import { playerStatus } from "@/stores/player/slices/source"; import { ThumbnailImage } from "@/stores/player/slices/thumbnails"; import { usePlayerStore } from "@/stores/player/store"; import { LoadableSource, selectQuality } from "@/stores/player/utils/qualities"; +import { processCdnLink } from "@/utils/cdn"; import { isSafari } from "@/utils/detectFeatures"; function makeQueue(layers: number): number[] { @@ -46,11 +47,11 @@ class ThumnbnailWorker { const canvas = document.createElement("canvas"); this.hls = new Hls(); if (source.type === "mp4") { - el.src = source.url; + el.src = processCdnLink(source.url); el.crossOrigin = "anonymous"; } else if (source.type === "hls") { this.hls.attachMedia(el); - this.hls.loadSource(source.url); + this.hls.loadSource(processCdnLink(source.url)); } else throw new Error("Invalid loadable source type"); this.videoEl = el; this.canvasEl = canvas; diff --git a/src/utils/cdn.ts b/src/utils/cdn.ts index bf87fb27..3a86336c 100644 --- a/src/utils/cdn.ts +++ b/src/utils/cdn.ts @@ -5,7 +5,9 @@ export function processCdnLink(url: string): string { const replacements = conf().CDN_REPLACEMENTS; for (const [before, after] of replacements) { if (parsedUrl.hostname.endsWith(before)) { - parsedUrl.host = after; + parsedUrl.hostname = after; + parsedUrl.port = ""; + parsedUrl.protocol = "https://"; return parsedUrl.toString(); } } From d73a9575bd939db25c1fb3bc6eac628777edc6b6 Mon Sep 17 00:00:00 2001 From: mrjvs Date: Wed, 27 Dec 2023 23:54:02 +0100 Subject: [PATCH 07/21] Improve config parsing of cdn replacements --- src/setup/config.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/setup/config.ts b/src/setup/config.ts index 998383c8..88705e24 100644 --- a/src/setup/config.ts +++ b/src/setup/config.ts @@ -89,7 +89,12 @@ export function conf(): RuntimeConfig { .filter((v) => v.length > 0), // Should be comma-seperated and contain the media type and ID, formatted like so: movie-753342,movie-753342,movie-753342 CDN_REPLACEMENTS: getKey("CDN_REPLACEMENTS", "") .split(",") - .map((v) => v.split(":").map((s) => s.trim())) + .map((v) => + v + .split(":") + .map((s) => s.trim()) + .filter((s) => s.length > 0), + ) .filter((v) => v.length > 0), // The format is :,: }; } From 7901d2c5d5225cdecb592dd0b68229cbfc244361 Mon Sep 17 00:00:00 2001 From: mrjvs Date: Thu, 28 Dec 2023 00:00:14 +0100 Subject: [PATCH 08/21] Review comments --- src/setup/config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/setup/config.ts b/src/setup/config.ts index 88705e24..2e1634a4 100644 --- a/src/setup/config.ts +++ b/src/setup/config.ts @@ -95,6 +95,6 @@ export function conf(): RuntimeConfig { .map((s) => s.trim()) .filter((s) => s.length > 0), ) - .filter((v) => v.length > 0), // The format is :,: + .filter((v) => v.length === 2), // The format is :,: }; } From d600ac7e3a97f5b48d75384eadbcbb41435ac4a2 Mon Sep 17 00:00:00 2001 From: mrjvs Date: Thu, 28 Dec 2023 00:02:37 +0100 Subject: [PATCH 09/21] bump version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 29c0d997..1649434d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "movie-web", - "version": "4.1.2", + "version": "4.1.3", "private": true, "homepage": "https://movie-web.app", "scripts": { From 96331fdf65e8adfb0432382b7abebcb7a849d79b Mon Sep 17 00:00:00 2001 From: chaos Date: Sun, 24 Dec 2023 17:43:49 +0000 Subject: [PATCH 10/21] Added translation using Weblate (Estonian) Author: chaos --- src/assets/locales/et.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/assets/locales/et.json diff --git a/src/assets/locales/et.json b/src/assets/locales/et.json new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/src/assets/locales/et.json @@ -0,0 +1 @@ +{} From 4a3f0464db274fd8828b8808fef9eb3a1c0afe5c Mon Sep 17 00:00:00 2001 From: teaishealthy Date: Sun, 24 Dec 2023 17:37:38 +0000 Subject: [PATCH 11/21] Translated using Weblate (German) Currently translated at 100.0% (247 of 247 strings) Translation: movie-web/website Translate-URL: http://weblate.movie-web.app/projects/movie-web/website/de/ Author: teaishealthy --- src/assets/locales/de.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/assets/locales/de.json b/src/assets/locales/de.json index 157b8095..b7033a3b 100644 --- a/src/assets/locales/de.json +++ b/src/assets/locales/de.json @@ -55,7 +55,7 @@ "text": "Hast du es korrekt konfiguriert?", "title": "Server nicht erreichbar" }, - "host": "Du verbindest dich zu <0>{{hostname}} - stelle sicher, dass du diesem vertraust, bevor du einen Account erstellst", + "host": "Du verbindest dich mit <0>{{hostname}} - stelle sicher das du dem Server vertraust bevor du ein Konto erstellst", "no": "Zurück", "title": "Vertraust du diesem Server?", "yes": "Ich vertraue diesem Server" @@ -238,7 +238,7 @@ "sources": { "failed": { "text": "Beim Versuch, Videos zu finden, ist ein Fehler aufgetreten. Bitte versuche es mit einer anderen Quelle.", - "title": "Scrapen fehlgeschlagen" + "title": "Fehler beim Laden" }, "noEmbeds": { "text": "Es konnten keine Embeds gefunden werden. Bitte versuchen es mit einer anderen Quelle.", From c50aad428acf4b95488beaf2befcd586bdbef851 Mon Sep 17 00:00:00 2001 From: Hank Dank Date: Sun, 24 Dec 2023 15:46:29 +0000 Subject: [PATCH 12/21] Translated using Weblate (Turkish) Currently translated at 100.0% (247 of 247 strings) Translation: movie-web/website Translate-URL: http://weblate.movie-web.app/projects/movie-web/website/tr/ Author: Hank Dank --- src/assets/locales/tr.json | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/src/assets/locales/tr.json b/src/assets/locales/tr.json index bc9e5a0e..95717b64 100644 --- a/src/assets/locales/tr.json +++ b/src/assets/locales/tr.json @@ -25,19 +25,20 @@ "deviceNameLabel": "Cihaz ismi", "deviceNamePlaceholder": "Kişisel telefon", "generate": { - "description": "Parolanız, kullanıcı adınız ve şifreniz olarak işlev görür. Hesabınıza giriş yapmak için bu parolayı girmeniz gerekeceğinden onu güvende tuttuğunuzdan emin olun", - "next": "Parolamı kaydettim", - "title": "Parolanız" + "description": "Şifreleme anahtarınız, kullanıcı adınız ve parolanız olarak işlev görür. Hesabınıza giriş yapmak için bu parolayı girmeniz gerekeceğinden onu güvende tuttuğunuzdan emin olun", + "next": "Şifreleme anahtarımı kaydettim", + "passphraseFrameLabel": "Şifreleme anahtarı", + "title": "Şifreleme anahtarınız" }, "hasAccount": "Zaten hesabınız var mı?<0>Giriş yapın.", "login": { - "description": "Hesabınıza giriş yapmak için lütfen parolanızı girin", + "description": "Hesabınıza giriş yapmak için lütfen şifreleme anahtarınızı girin", "deviceLengthError": "Lütfen bir cihaz ismi girin", - "passphraseLabel": "12 kelimelik parola", - "passphrasePlaceholder": "Parola", + "passphraseLabel": "12 kelimelik şifreleme anahtarı", + "passphrasePlaceholder": "Şifreleme anahtarı", "submit": "Giriş yap", "title": "Hesabınıza giriş yapın", - "validationError": "Yanlış veya eksik parola" + "validationError": "Yanlış veya eksik şifreleme anahtarı" }, "register": { "information": { @@ -55,18 +56,18 @@ "title": "Sunucuya ulaşılamadı" }, "host": "<0>{{hostname}} adlı sunucuya bağlanıyorsunuz - lütfen hesap oluşturmadan önce sunucuya güvendiğinizi onaylayın", - "no": "Geri git", + "no": "Geri dön", "title": "Bu sunucuya güveniyor musunuz?", "yes": "Bu sunucuya güveniyorum" }, "verify": { - "description": "Kaydettiğinizi doğrulamak ve hesabınızı oluşturmak için önceki aşamada gösterilen parolayı girin", + "description": "Kaydettiğinizi doğrulamak ve hesabınızı oluşturmak için önceki aşamada gösterilen şifreleme anahtarınızı girin", "invalidData": "Veri geçersiz", - "noMatch": "Parola eşleşmiyor", - "passphraseLabel": "12 kelimelik parolanız", + "noMatch": "Şifreleme anahtarı eşleşmiyor", + "passphraseLabel": "12 kelimelik şifreleme anahtarınız", "recaptchaFailed": "ReCaptcha doğrulaması başarısız", "register": "Hesap oluştur", - "title": "Parolanızı doğrulayın" + "title": "Şifreleme anahtarınızı doğrulayın" } }, "errors": { @@ -167,7 +168,7 @@ "player": { "back": { "default": "Ana sayfaya dön", - "short": "Geri" + "short": "Geri dön" }, "casting": { "enabled": "Cihaza yansıtılıyor..." @@ -374,7 +375,7 @@ "captions": { "backgroundLabel": "Arka plan opaklığı", "colorLabel": "Renk", - "previewQuote": "Korkmamalıyım. Korku aklı öldürür.", + "previewQuote": "Korkmamalıyım. Korku aklın katilidir.", "textSizeLabel": "Yazı boyutu", "title": "Altyazılar" }, From 83a892781c4de2b5485f1904857bf1f9fdc00f59 Mon Sep 17 00:00:00 2001 From: Aayush Shah Date: Sun, 24 Dec 2023 16:06:20 +0000 Subject: [PATCH 13/21] Translated using Weblate (Nepali) Currently translated at 100.0% (247 of 247 strings) Translation: movie-web/website Translate-URL: http://weblate.movie-web.app/projects/movie-web/website/ne/ Author: Aayush Shah --- src/assets/locales/ne.json | 1 + 1 file changed, 1 insertion(+) diff --git a/src/assets/locales/ne.json b/src/assets/locales/ne.json index 9860aa81..41bcc002 100644 --- a/src/assets/locales/ne.json +++ b/src/assets/locales/ne.json @@ -27,6 +27,7 @@ "generate": { "description": "तपाईंको पासफ्रेजले तपाईंको प्रयोगकर्ता नाम र पासवर्डको रूपमा कार्य गर्दछ। यसलाई सुरक्षित राख्नुहोस् किनकि तपाईंले आफ्नो खातामा लगइन गर्न आवश्यक हुनेछ", "next": "मैले मेरो पासफ्रेज सुरक्षित गरेको छु", + "passphraseFrameLabel": "पासफ्रेज", "title": "तपाईको पासफ्रेज" }, "hasAccount": "पहिले नै खाता छ? <0>यहाँ लग-इन गर्नुहोस्|", From 77744cebddecbef7effca2456ff35efffa8e611f Mon Sep 17 00:00:00 2001 From: chaos Date: Sun, 24 Dec 2023 18:48:35 +0000 Subject: [PATCH 14/21] Translated using Weblate (Estonian) Currently translated at 47.7% (118 of 247 strings) Translation: movie-web/website Translate-URL: http://weblate.movie-web.app/projects/movie-web/website/et/ Author: chaos --- src/assets/locales/et.json | 193 ++++++++++++++++++++++++++++++++++++- 1 file changed, 192 insertions(+), 1 deletion(-) diff --git a/src/assets/locales/et.json b/src/assets/locales/et.json index 0967ef42..1ee51cdb 100644 --- a/src/assets/locales/et.json +++ b/src/assets/locales/et.json @@ -1 +1,192 @@ -{} +{ + "auth": { + "createAccount": "Ei ole kontot veel?<0>Loo konto.", + "deviceNameLabel": "Seadme nimi", + "deviceNamePlaceholder": "Isiklik telefon", + "generate": { + "description": "Teie parool toimib teie kasutajanime ja paroolina. Veenduge, et see oleks ohutus kohas, kuna peate kasutama seda, et logida oma kontosse sisse", + "next": "Olen salvestanud oma parooli", + "passphraseFrameLabel": "Parool", + "title": "Sinu parool" + }, + "hasAccount": "On juba konto? <0>Logi sisse siin.", + "login": { + "description": "Palun sisestage parool, et logida kontosse sisse", + "deviceLengthError": "Palun sisesta seadme nimi", + "passphraseLabel": "12-Sõnaline parool", + "passphrasePlaceholder": "Parool", + "submit": "Logi sisse", + "title": "Logi sisse oma kontosse", + "validationError": "Vale vōi mittetäielik parool" + }, + "register": { + "information": { + "color1": "Profiili värv üks", + "color2": "Profiili värv kaks", + "header": "Sisestage oma seadme nimi ja valige värvid ning kasutajaikoon", + "icon": "Kasutaja ikoon", + "next": "Järgmine", + "title": "Kontoteave" + } + }, + "trust": { + "failed": { + "text": "Kas sa seadistasid selle õigesti?", + "title": "Serveriga ühenduse loomine ebaõnnestus" + }, + "host": "Ühendate <0>{{hostname}} - enne konto tegemist kinnitage, et usaldate seda", + "no": "Tagasi", + "title": "Kas usaldate seda serverit?", + "yes": "Usaldan seda serverit" + }, + "verify": { + "description": "Palun sisestage oma salasõna, et kinnitada, et olete selle salvestanud ja luua oma konto", + "invalidData": "Andmed ei kehti", + "noMatch": "Parool ei klapi", + "passphraseLabel": "Sinu 12-sõnaline parool", + "recaptchaFailed": "ReCaptcha valideerimine ebaõnnestua", + "register": "Loo konto", + "title": "Kinnita oma parool" + } + }, + "errors": { + "badge": "Läks katki", + "details": "Vea üksikasjad", + "reloadPage": "Värskenda leht", + "showError": "Näita vea üksikasju", + "title": "Tekkis viga!" + }, + "global": { + "name": "movie-web", + "pages": { + "about": "Meist", + "dmca": "DMCA", + "login": "Logi sisse", + "pagetitle": "{{title}} - movie-web", + "register": "Registreeri", + "settings": "Sätted" + } + }, + "media": { + "episodeDisplay": "S{{season}} E{{episode}}", + "types": { + "movie": "Film", + "show": "Saade" + } + }, + "notFound": { + "badge": "Ei leitud", + "goHome": "Tagasi koju", + "message": "Otsisime kõikjalt: prügikastide alt, kapist, proksi tagant, kuid lõpuks ei leidnud otsitud lehte.", + "title": "Ei leidnud seda lehekülge" + }, + "player": { + "back": { + "default": "Tagasi koju", + "short": "Tagasi" + }, + "menus": { + "captions": { + "customChoice": "Vali subtiitrid failist", + "customizeLabel": "Kohanda", + "offChoice": "Välja", + "settings": { + "delay": "Subtiitri viivitus", + "fixCapitals": "Paranda kapitaliseerimine" + }, + "title": "Subtiitrid", + "unknownLanguage": "Teadmata" + }, + "downloads": { + "disclaimer": "Allalaadimine toimub otse teenusepakkujalt. movie-web ei saa kontrollida, kuidas allalaadimine toimub.", + "hlsExplanation": "See meedia on HLS voog, mida ei saa alla laadida", + "title": "Lae alla" + }, + "episodes": { + "button": "Episoodid", + "emptyState": "Selles hooajas puuduvad episoodid, vaadake hiljem uuesti!", + "episodeBadge": "E{{episode}}", + "loadingError": "Hooaja laadimine ebaōnnestus", + "loadingList": "Laadimine...", + "loadingTitle": "Laadimine..." + }, + "settings": { + "captionItem": "Subtiitrite sätted", + "downloadItem": "Lae alla", + "enableCaptions": "Luba subtiitrid", + "experienceSection": "Vaatamise kogemus", + "playbackItem": "Taasesituse sätted", + "qualityItem": "Kvaliteet", + "sourceItem": "Video allikad", + "videoSection": "Video sätted" + }, + "sources": { + "failed": { + "text": "Videote leidmisel tekkis viga, palun proovige mõnda muud allikat.", + "title": "Ei õnnestunud kraapida" + }, + "noEmbeds": { + "text": "Me ei leidnud ühtegi manust, proovige twist allikat.", + "title": "Ei leitud manuseid" + }, + "noStream": { + "text": "Sellel allikal ei ole selle filmi või seriaali jaoks ühtegi voogedastust.", + "title": "Puudub voog" + }, + "title": "Allikad", + "unknownOption": "Teadmata" + } + }, + "metadata": { + "failed": { + "badge": "Ebaōnnestus", + "homeButton": "Mine koju", + "text": "Meedia metaandmeid ei õnnestunud TMDB-st laadida. Palun kontrollige, kas TMDB on maas või see on teie internetiühenduses blokeeritud.", + "title": "Metaandmete laadimine ebaõnnestus" + }, + "notFound": { + "badge": "Ei leitud", + "homeButton": "Tagasi koju", + "text": "Me ei leidnud teie soovitud meediat. Kas see on eemaldatud või olete URL-i muutnud.", + "title": "Ei leidnud seda meediat." + } + }, + "nextEpisode": { + "cancel": "Tühista", + "next": "Järgmine episood" + }, + "playbackError": { + "badge": "Taasesituse viga", + "errors": { + "errorAborted": "Meedia kättesaamine katkestati kasutaja taotlusel.", + "errorDecode": "Vaatamata sellele, et eelnevalt oli kindlaks tehtud, et see on kasutatav, tekkis viga meediaressursi dekodeerimisel, mille tulemuseks oli viga.", + "errorGenericMedia": "Tekkis tundmatu meediaviga.", + "errorNetwork": "Tekkis võrguviga, mis takistas meedia edukat kättesaamist, kuigi see oli varem saadaval.", + "errorNotSupported": "Meedia või meediapakkuja objekt ei ole toetatud." + }, + "homeButton": "Mine koju", + "text": "Tekkis viga meedia mängimisel. Palun proovige uuesti.", + "title": "Video mängimine ebaōnnestus!" + }, + "scraping": { + "items": { + "failure": "Tekkis viga", + "notFound": "Ei ole videot", + "pending": "Otsin videoid..." + }, + "notFound": { + "badge": "Ei leitud", + "detailsButton": "Näita üksikasju", + "homeButton": "Mine koju", + "text": "Me otsisime läbi meie teenusepakkujad ja ei leidnud teie poolt otsitud meediat! Me ei halda meediat ja meil ei ole kontrolli selle üle, mis on saadaval. Täpsema teabe saamiseks klõpsake allpool nupule \"Näita üksikasju\".", + "title": "Me ei leidnud seda" + } + }, + "time": { + "regular": "{{timeWatched}} / {{duration}}", + "remaining": "{{timeLeft}} alles • Lõppeb {{timeFinished, datetime}}", + "shortRegular": "{{timeWatched}}", + "shortRemaining": "-{{timeLeft}}" + } + } +} From b6fdbe77fa47720e482aca4692cd2f887726e9d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Contreras=20Rodr=C3=ADguez?= Date: Mon, 25 Dec 2023 08:44:48 +0000 Subject: [PATCH 15/21] Added translation using Weblate (Spanish) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Author: Rafael Contreras Rodríguez --- src/assets/locales/es.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/assets/locales/es.json diff --git a/src/assets/locales/es.json b/src/assets/locales/es.json new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/src/assets/locales/es.json @@ -0,0 +1 @@ +{} From 53e0dbb0cbb4dffa1506803ee19f7c9fd3a46dd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Contreras=20Rodr=C3=ADguez?= Date: Mon, 25 Dec 2023 09:11:46 +0000 Subject: [PATCH 16/21] Translated using Weblate (Spanish) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (247 of 247 strings) Translation: movie-web/website Translate-URL: http://weblate.movie-web.app/projects/movie-web/website/es/ Author: Rafael Contreras Rodríguez --- src/assets/locales/es.json | 422 ++++++++++++++++++++++++++++++++++++- 1 file changed, 421 insertions(+), 1 deletion(-) diff --git a/src/assets/locales/es.json b/src/assets/locales/es.json index 0967ef42..298b1138 100644 --- a/src/assets/locales/es.json +++ b/src/assets/locales/es.json @@ -1 +1,421 @@ -{} +{ + "about": { + "description": "movie-web es una aplicación web que busca transmisiones en internet. El equipo tiene como objetivo un enfoque principalmente minimalista para consumir contenido.", + "faqTitle": "Preguntas frecuentes", + "q1": { + "body": "movie-web no aloja ningún contenido. Cuando haces clic en algo para ver, se busca en internet el medio seleccionado (En la pantalla de carga y en la pestaña 'fuentes de vídeo' puedes ver qué fuente estás utilizando). El contenido nunca se carga en movie-web, todo se realiza a través de este mecanismo de búsqueda.", + "title": "¿De dónde proviene el contenido?" + }, + "q2": { + "body": "No es posible solicitar una serie o película, movie-web no gestiona ningún contenido. Todo el contenido se ve a través de fuentes en internet.", + "title": "¿Dónde puedo solicitar una serie o película?" + }, + "q3": { + "body": "Nuestros resultados de búsqueda están alimentados por The Movie Database (TMDB) y se muestran independientemente de si nuestras fuentes realmente tienen el contenido.", + "title": "Los resultados de búsqueda muestran la serie o película, ¿por qué no puedo reproducirla?" + }, + "title": "Acerca de movie-web" + }, + "actions": { + "copied": "Copiado", + "copy": "Copiar" + }, + "auth": { + "createAccount": "¿Todavía no tienes una cuenta? <0>Crea una cuenta.", + "deviceNameLabel": "Nombre del dispositivo", + "deviceNamePlaceholder": "Teléfono personal", + "generate": { + "description": "Tu frase de contraseña actúa como tu nombre de usuario y contraseña. Asegúrate de mantenerlas seguras, ya que las necesitarás para iniciar sesión en tu cuenta", + "next": "He guardado mi frase de contraseña", + "passphraseFrameLabel": "Frase de contraseña", + "title": "Tu frase de contraseña" + }, + "hasAccount": "¿Ya tienes una cuenta? <0>Inicia sesión aquí.", + "login": { + "description": "Por favor, ingresa tu frase de contraseña para iniciar sesión en tu cuenta", + "deviceLengthError": "Por favor, ingresa un nombre de dispositivo", + "passphraseLabel": "Frase de contraseña de 12 palabras", + "passphrasePlaceholder": "Frase de contraseña", + "submit": "Iniciar sesión", + "title": "Inicia sesión en tu cuenta", + "validationError": "Contraseña incorrecta o incompleta" + }, + "register": { + "information": { + "color1": "Color de perfil uno", + "color2": "Color de perfil dos", + "header": "Ingresa un nombre para tu dispositivo, elige colores, y un ícono de usuario de tu elección", + "icon": "Ícono de usuario", + "next": "Siguiente", + "title": "Información de la cuenta" + } + }, + "trust": { + "failed": { + "text": "¿Lo configuraste correctamente?", + "title": "No se pudo conectar al servidor" + }, + "host": "Te estás conectando a <0>{{hostname}} - por favor, confirma si confías en este antes de crear una cuenta", + "no": "Regresar", + "title": "¿Confías en este servidor?", + "yes": "Confío en este servidor" + }, + "verify": { + "description": "Por favor, ingresa tu frase de contraseña anterior para confirmar que la has guardado y para crear tu cuenta", + "invalidData": "Los datos no son válidos", + "noMatch": "La frase de contraseña no coincide", + "passphraseLabel": "Tu frase de contraseña de 12 palabras", + "recaptchaFailed": "La validación de ReCaptcha falló", + "register": "Crear cuenta", + "title": "Confirma tu frase de contraseña" + } + }, + "errors": { + "badge": "Se descompuso", + "details": "Detalles del error", + "reloadPage": "Recargar la página", + "showError": "Mostrar detalles del error", + "title": "¡Encontramos un error!" + }, + "footer": { + "legal": { + "disclaimer": "Descargo de responsabilidad", + "disclaimerText": "movie-web no aloja ningún archivo, simplemente enlaza a servicios de terceros. Los problemas legales deben ser tratados con los proveedores de archivos y servicios. movie-web no se hace responsable de los archivos multimedia mostrados por los proveedores de vídeo." + }, + "links": { + "discord": "Discord", + "dmca": "DMCA", + "github": "GitHub" + }, + "tagline": "Ve tus series y películas favoritas con esta aplicación de transmisión de código abierto." + }, + "global": { + "name": "movie-web", + "pages": { + "about": "Acerca de", + "dmca": "DMCA", + "login": "Iniciar sesión", + "pagetitle": "{{title}} - movie-web", + "register": "Registrarse", + "settings": "Configuración" + } + }, + "home": { + "bookmarks": { + "sectionTitle": "Marcadores" + }, + "continueWatching": { + "sectionTitle": "Continuar viendo" + }, + "mediaList": { + "stopEditing": "Detener edición" + }, + "search": { + "allResults": "¡Eso es todo lo que tenemos!", + "failed": "¡Error al encontrar contenido, inténtalo de nuevo!", + "loading": "Cargando...", + "noResults": "¡No pudimos encontrar nada!", + "placeholder": "¿Qué te gustaría ver?", + "sectionTitle": "Resultados de búsqueda" + }, + "titles": { + "day": { + "default": "¿Qué te gustaría ver esta tarde?" + }, + "morning": { + "default": "¿Qué te gustaría ver esta mañana?", + "extra": [ + "Escuché que “Antes del amanecer” es buena" + ] + }, + "night": { + "default": "¿Qué te gustaría ver esta noche?", + "extra": [ + "¿Cansado? Escuché que “El Exorcista” es buena." + ] + } + } + }, + "media": { + "episodeDisplay": "T{{season}} E{{episode}}", + "types": { + "movie": "Película", + "show": "Serie" + } + }, + "navigation": { + "banner": { + "offline": "Verifica tu conexión a internet" + }, + "menu": { + "about": "Acerca de nosotros", + "donation": "Donar", + "logout": "Cerrar sesión", + "register": "Sincronizar con la nube", + "settings": "Configuración", + "support": "Soporte" + } + }, + "notFound": { + "badge": "No encontrado", + "goHome": "Volver a inicio", + "message": "Buscamos en todas partes: debajo de los contenedores, en el armario, detrás del proxy, pero al final no pudimos encontrar la página que estás buscando.", + "title": "No se puede encontrar esa página" + }, + "overlays": { + "close": "Cerrar" + }, + "player": { + "back": { + "default": "Volver al inicio", + "short": "Volver" + }, + "casting": { + "enabled": "Transmitiendo a dispositivo..." + }, + "menus": { + "captions": { + "customChoice": "Seleccionar subtítulo desde un archivo", + "customizeLabel": "Personalizar", + "offChoice": "Apagado", + "settings": { + "delay": "Retraso de subtítulos", + "fixCapitals": "Corregir mayúsculas" + }, + "title": "Subtítulos", + "unknownLanguage": "Desconocido" + }, + "downloads": { + "disclaimer": "Las descargas se realizan directamente desde el proveedor. movie-web no tiene control sobre cómo se proporcionan las descargas.", + "downloadCaption": "Descargar subtítulo actual", + "downloadVideo": "Descargar vídeo", + "hlsExplanation": "Este contenido es una transmisión HLS que no se puede descargar en movie-web.", + "onAndroid": { + "1": "Para descargar en Android, haz clic en el botón de descarga y luego, en la nueva página, mantén presionado el vídeo y selecciona guardar.", + "shortTitle": "Descargar / Android", + "title": "Descargando en Android" + }, + "onIos": { + "1": "Para descargar en iOS, haz clic en el botón de descarga y luego, en la nueva página, haz clic en , luego Guardar en archivos .", + "shortTitle": "Descargar / iOS", + "title": "Descargando en iOS" + }, + "onPc": { + "1": "En una PC, haz clic en el botón de descarga y luego, en la nueva página, haz clic derecho en el vídeo y selecciona Guardar vídeo como...", + "shortTitle": "Descargar / PC", + "title": "Descargando en PC" + }, + "title": "Descargar" + }, + "episodes": { + "button": "Episodios", + "emptyState": "No hay episodios en esta temporada, ¡Intenta más tarde!", + "episodeBadge": "E{{episode}}", + "loadingError": "Error al cargar la temporada", + "loadingList": "Cargando...", + "loadingTitle": "Cargando..." + }, + "playback": { + "speedLabel": "Velocidad de reproducción", + "title": "Configuración de reproducción" + }, + "quality": { + "automaticLabel": "Calidad automática", + "hint": "Puedes intentar <0>cambiar de fuente para obtener diferentes opciones de calidad.", + "iosNoQuality": "Debido a limitaciones definidas por Apple, la selección de calidad no está disponible en iOS para esta fuente. Puedes intentar <0>cambiar a otra fuente para obtener diferentes opciones de calidad.", + "title": "Calidad" + }, + "settings": { + "captionItem": "Configuración de subtítulos", + "downloadItem": "Descargar", + "enableCaptions": "Habilitar subtítulos", + "experienceSection": "Experiencia de visualización", + "playbackItem": "Configuración de reproducción", + "qualityItem": "Calidad", + "sourceItem": "Fuentes de vídeo", + "videoSection": "Configuración de vídeo" + }, + "sources": { + "failed": { + "text": "Se produjo un error al intentar encontrar vídeos, por favor intenta con una fuente diferente.", + "title": "Error al obtener" + }, + "noEmbeds": { + "text": "No pudimos encontrar ninguna embed, por favor intenta con una fuente diferente.", + "title": "No se encontraron embeds" + }, + "noStream": { + "text": "Esta fuente no tiene transmisiones para esta película o serie.", + "title": "Sin transmisión" + }, + "title": "Fuentes", + "unknownOption": "Desconocida" + } + }, + "metadata": { + "failed": { + "badge": "Error", + "homeButton": "Ir al inicio", + "text": "No se pudieron cargar los metadatos del contenido de TMDB. Por favor, verifica si TMDB está caído o bloqueado en tu conexión a internet.", + "title": "Error al cargar los metadatos" + }, + "notFound": { + "badge": "No encontrado", + "homeButton": "Volver al inicio", + "text": "No pudimos encontrar el contenido que solicitaste. Ya sea que se haya eliminado o se haya modificado la URL.", + "title": "No se pudo encontrar ese contenido." + } + }, + "nextEpisode": { + "cancel": "Cancelar", + "next": "Siguiente episodio" + }, + "playbackError": { + "badge": "Error de reproducción", + "errors": { + "errorAborted": "La obtención del contenido fue cancelada por solicitud del usuario.", + "errorDecode": "A pesar de haber sido determinado previamente como utilizable, se produjo un error al intentar decodificar el recurso del contenido, lo que resultó en un error.", + "errorGenericMedia": "Se produjo un error desconocido en el contenido.", + "errorNetwork": "Se produjo un error de red que impidió obtener el contenido de manera exitosa, a pesar de haber estado disponible anteriormente.", + "errorNotSupported": "El contenido o el proveedor del contenido no es compatible." + }, + "homeButton": "Ir al inicio", + "text": "Se produjo un error al intentar reproducir el contenido. Por favor, inténtalo de nuevo.", + "title": "¡No se pudo reproducir el vídeo!" + }, + "scraping": { + "items": { + "failure": "Ocurrió un error", + "notFound": "No tiene el vídeo", + "pending": "Verificando vídeos..." + }, + "notFound": { + "badge": "No encontrado", + "detailsButton": "Mostrar detalles", + "homeButton": "Ir al inicio", + "text": "Hemos buscado en nuestros proveedores y no podemos encontrar el contenido que estás buscando. No alojamos el contenido y no tenemos control sobre lo que está disponible. Haz clic en 'Mostrar detalles' a continuación para obtener más información.", + "title": "No pudimos encontrar eso" + } + }, + "time": { + "regular": "{{timeWatched}} / {{duration}}", + "remaining": "{{timeLeft}} restante • Finaliza a las {{timeFinished, datetime}}", + "shortRegular": "{{timeWatched}}", + "shortRemaining": "-{{timeLeft}}" + } + }, + "screens": { + "dmca": { + "text": "¡Bienvenido a la página de contacto DMCA de movie-web! Respetamos los derechos de propiedad intelectual y queremos abordar cualquier problema de derechos de autor de manera rápida. Si cree que su trabajo con derechos de autor se ha utilizado incorrectamente en nuestra plataforma, envíe un aviso DMCA detallado al correo electrónico que se muestra a continuación. Incluya una descripción del material con derechos de autor, sus datos de contacto y una declaración de buena fe. Estamos comprometidos a resolver estos asuntos de manera pronta y agradecemos su cooperación para mantener a movie-web como un lugar que respeta la creatividad y los derechos de autor.", + "title": "DMCA" + }, + "loadingApp": "Cargando la aplicación", + "loadingUser": "Cargando tu perfil", + "loadingUserError": { + "logout": "Cerrar sesión", + "reset": "Restablecer servidor personalizado", + "text": "Error al cargar tu perfil", + "textWithReset": "Error al cargar tu perfil desde tu servidor personalizado, ¿Quieres restablecerlo al servidor predeterminado?" + }, + "migration": { + "failed": "Error al migrar tus datos.", + "inProgress": "Por favor espera, estamos migrando tus datos. Esto no debería tomar mucho tiempo." + } + }, + "settings": { + "account": { + "accountDetails": { + "deviceNameLabel": "Nombre del dispositivo", + "deviceNamePlaceholder": "Teléfono personal", + "editProfile": "Editar", + "logoutButton": "Cerrar sesión" + }, + "actions": { + "delete": { + "button": "Eliminar cuenta", + "confirmButton": "Eliminar cuenta", + "confirmDescription": "¿Estás seguro de que quieres eliminar tu cuenta? ¡Todos tus datos se perderán!", + "confirmTitle": "¿Estás seguro?", + "text": "Esta acción es irreversible. Todos los datos se eliminarán y no se podrán recuperar.", + "title": "Eliminar cuenta" + }, + "title": "Acciones" + }, + "devices": { + "deviceNameLabel": "Nombre del dispositivo", + "failed": "Error al cargar las sesiones", + "removeDevice": "Eliminar", + "title": "Dispositivos" + }, + "profile": { + "finish": "Finalizar edición", + "firstColor": "Color de perfil uno", + "secondColor": "Color de perfil dos", + "title": "Editar imagen de perfil", + "userIcon": "Icono de usuario" + }, + "register": { + "cta": "Empezar", + "text": "Comparte tu progreso de visualización entre dispositivos y manténlos sincronizados.", + "title": "Sincronizar con la nube" + }, + "title": "Cuenta" + }, + "appearance": { + "activeTheme": "Activo", + "themes": { + "blue": "Azul", + "default": "Predeterminado", + "gray": "Gris", + "red": "Rojo", + "teal": "Turquesa" + }, + "title": "Apariencia" + }, + "captions": { + "backgroundLabel": "Opacidad del fondo", + "colorLabel": "Color", + "previewQuote": "No debo temer. El miedo es el asesino de la mente.", + "textSizeLabel": "Tamaño del texto", + "title": "Subtítulos" + }, + "connections": { + "server": { + "description": "Si deseas conectarte a un backend personalizado para almacenar tus datos, habilita esto y proporciona la URL.", + "label": "Servidor personalizado", + "urlLabel": "URL del servidor personalizado" + }, + "title": "Conexiones", + "workers": { + "addButton": "Agregar nuevo worker", + "description": "Para que la aplicación funcione, todo el tráfico se enruta a través de proxies. Habilita esto si quieres usar tus propios workers.", + "emptyState": "Aún no hay workers, agrega uno a continuación", + "label": "Usar proxy workers personalizados", + "urlLabel": "URL de los workers", + "urlPlaceholder": "https://" + } + }, + "locale": { + "language": "Idioma de la aplicación", + "languageDescription": "Idioma aplicado a toda la aplicación.", + "title": "Idioma" + }, + "reset": "Restablecer", + "save": "Guardar", + "sidebar": { + "info": { + "appVersion": "Versión de la aplicación", + "backendUrl": "URL del backend", + "backendVersion": "Versión del backend", + "hostname": "Nombre de host", + "insecure": "No seguro", + "notLoggedIn": "No has iniciado sesión", + "secure": "Seguro", + "title": "Información de la aplicación", + "unknownVersion": "Desconocida", + "userId": "ID de usuario" + } + }, + "unsaved": "Tienes cambios sin guardar" + } +} From 6bd2e1df5a4e52bd6c2f1bddd65266b33298683f Mon Sep 17 00:00:00 2001 From: chaos Date: Sun, 24 Dec 2023 18:59:13 +0000 Subject: [PATCH 17/21] Translated using Weblate (Estonian) Currently translated at 63.9% (158 of 247 strings) Translation: movie-web/website Translate-URL: http://weblate.movie-web.app/projects/movie-web/website/et/ Author: chaos --- src/assets/locales/et.json | 92 +++++++++++++++++++++++++++++++++++++- 1 file changed, 91 insertions(+), 1 deletion(-) diff --git a/src/assets/locales/et.json b/src/assets/locales/et.json index 1ee51cdb..bed3ea8e 100644 --- a/src/assets/locales/et.json +++ b/src/assets/locales/et.json @@ -1,4 +1,13 @@ { + "about": { + "description": "movie-web on veebirakendus, mis otsib internetti voogude jaoks. Meeskonna eesmärk on enamasti minimalistlik lähenemine sisu tarbimisele.", + "q1": { + "body": "movie-web ei hoiusta enda sisu. Kui klõpsate, et midagi vaadata, otsitakse valitud meediat internetist (laadimisekraanil ja vahekaardil \"videoallikad\" näete, millist allikat te kasutate). Meediat ei lae movie-web kunagi üles, kõik toimub selle otsingumehhanismi kaudu." + }, + "q2": { + "body": "Saadet või filmi ei ole võimalik taotelda, movie-web ei halda mingit sisu. Kogu sisu vaadatakse interneti allikate kaudu." + } + }, "auth": { "createAccount": "Ei ole kontot veel?<0>Loo konto.", "deviceNameLabel": "Seadme nimi", @@ -56,6 +65,11 @@ "showError": "Näita vea üksikasju", "title": "Tekkis viga!" }, + "footer": { + "legal": { + "disclaimerText": "movie-web ei hoiusta ühtegi faili, vaid ainult lingib kolmandate osapoolte teenustele. Juriidilised küsimused tuleks lahendada failihostide ja teenusepakkujatega. movie-web ei vastuta videopakkujate poolt näidatud meediafailide eest." + } + }, "global": { "name": "movie-web", "pages": { @@ -67,6 +81,42 @@ "settings": "Sätted" } }, + "home": { + "bookmarks": { + "sectionTitle": "Järjehoidjad" + }, + "continueWatching": { + "sectionTitle": "Jätka vaatamist" + }, + "mediaList": { + "stopEditing": "Lõpeta redigeerimine" + }, + "search": { + "allResults": "See on kõik, mis meil on!", + "failed": "Meedia leidmine ebaõnnestus, proovige uuesti!", + "loading": "Laadimine....", + "noResults": "Me ei leidnud midagi!", + "placeholder": "Mida tahate vaadata?", + "sectionTitle": "Otsingutulemused" + }, + "titles": { + "day": { + "default": "Mida te soovite täna pärastlõunal vaadata?" + }, + "morning": { + "default": "Mida te soovite täna hommikul vaadata?", + "extra": [ + "Ma kuulsin, et Before Sunrise on hea" + ] + }, + "night": { + "default": "Mida te soovite täna õhtul vaadata?", + "extra": [ + "Väsinud? Olen kuulnud, et The Exorcist on hea." + ] + } + } + }, "media": { "episodeDisplay": "S{{season}} E{{episode}}", "types": { @@ -80,6 +130,9 @@ "message": "Otsisime kõikjalt: prügikastide alt, kapist, proksi tagant, kuid lõpuks ei leidnud otsitud lehte.", "title": "Ei leidnud seda lehekülge" }, + "overlays": { + "close": "Sulge" + }, "player": { "back": { "default": "Tagasi koju", @@ -99,7 +152,24 @@ }, "downloads": { "disclaimer": "Allalaadimine toimub otse teenusepakkujalt. movie-web ei saa kontrollida, kuidas allalaadimine toimub.", - "hlsExplanation": "See meedia on HLS voog, mida ei saa alla laadida", + "downloadCaption": "Lae alla praegused subtiitrid", + "downloadVideo": "Lae alla video", + "hlsExplanation": "See meedia on HLS voog, mida ei saa alla laadida.", + "onAndroid": { + "1": "Et allalaadida Androidi telefonil, vajuta allalaadimise nupule, siis uuel leheküljel vajuta ja hoia video peal, siis vali salvesta.", + "shortTitle": "Allalaadimine / Android", + "title": "Androidil allalaadimine" + }, + "onIos": { + "1": "Et allalaadida iOS telefonil, vajuta allalaadimise nupule, siis uuel leheküljel vajuta , siis Salvesta failidesse ", + "shortTitle": "Allalaadimine / iOS", + "title": "iOSil allalaadimine" + }, + "onPc": { + "1": "Klõpsake arvutis allalaadimise nupule, seejärel klõpsake uuel lehel parema klõpsuga videol ja valige Salvesta video", + "shortTitle": "Allalaadimine / Arvutis", + "title": "Arvutis allalaadimine" + }, "title": "Lae alla" }, "episodes": { @@ -110,6 +180,16 @@ "loadingList": "Laadimine...", "loadingTitle": "Laadimine..." }, + "playback": { + "speedLabel": "Taasesituse kiirus", + "title": "Taasesituse sätted" + }, + "quality": { + "automaticLabel": "Automaatne kvaliteet", + "hint": "Võid proovida <0>vahetada allikat, et saada teisi kvaliteedi valikuid.", + "iosNoQuality": "Apple'i poolt määratletud piirangute tõttu ei ole sellel allikal kvaliteedivalik saadaval. Te võite proovida <0>vahetada teisele allikale, et saada erinevaid kvaliteedivalikuid.", + "title": "Kvaliteet" + }, "settings": { "captionItem": "Subtiitrite sätted", "downloadItem": "Lae alla", @@ -188,5 +268,15 @@ "shortRegular": "{{timeWatched}}", "shortRemaining": "-{{timeLeft}}" } + }, + "screens": { + "dmca": { + "text": "Tere tulemast movie-webi DMCA kontaktilehele! Me austame intellektuaalomandi õigusi ja soovime kiiresti lahendada kõik autoriõigusega seotud probleemid. Kui usute, et teie autoriõigusega kaitstud tööd on meie platvormil vääralt kasutatud, saatke palun üksikasjalik DMCA-teade alljärgnevale e-posti aadressile. Palun lisage autoriõigusega kaitstud materjali kirjeldus, oma kontaktandmed ja avaldus heauskse veendumuse kohta. Oleme pühendunud nende küsimuste kiirele lahendamisele ja hindame teie koostööd, et movie-web oleks koht, kus austatakse loovust ja autoriõigusi." + }, + "loadingApp": "Rakenduse laadimine", + "loadingUser": "Teie profiili laadimine", + "loadingUserError": { + "text": "Profiili laadimine ebaōnnestus" + } } } From 240e662d0c979f91f38b12509fa3575b27a0f334 Mon Sep 17 00:00:00 2001 From: jan Kukisulasu Date: Tue, 26 Dec 2023 18:31:27 +0000 Subject: [PATCH 18/21] Added translation using Weblate (Toki Pona) Author: jan Kukisulasu --- src/assets/locales/tok.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/assets/locales/tok.json diff --git a/src/assets/locales/tok.json b/src/assets/locales/tok.json new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/src/assets/locales/tok.json @@ -0,0 +1 @@ +{} From d14e6de414f95a94bd718da28a437a72babd1551 Mon Sep 17 00:00:00 2001 From: jan Kukisulasu Date: Tue, 26 Dec 2023 18:43:04 +0000 Subject: [PATCH 19/21] Translated using Weblate (Toki Pona) Currently translated at 87.0% (215 of 247 strings) Translation: movie-web/website Translate-URL: http://weblate.movie-web.app/projects/movie-web/website/tok/ Author: jan Kukisulasu --- src/assets/locales/tok.json | 372 +++++++++++++++++++++++++++++++++++- 1 file changed, 371 insertions(+), 1 deletion(-) diff --git a/src/assets/locales/tok.json b/src/assets/locales/tok.json index 0967ef42..5817986c 100644 --- a/src/assets/locales/tok.json +++ b/src/assets/locales/tok.json @@ -1 +1,371 @@ -{} +{ + "about": { + "title": "ilo Muwi-We la" + }, + "actions": { + "copied": "sama a", + "copy": "o sama" + }, + "auth": { + "createAccount": "sina jo ala e lipu open la <0>o pali e lipu open", + "deviceNameLabel": "nimi ilo", + "deviceNamePlaceholder": "ilo mi", + "generate": { + "description": "nimi open sina li lon nasin open pi lipu open sina. o awen pona e ona. sina open e lipu open sina la sina wile pana e nimi open ale sina", + "next": "mi jo e nimi open mi", + "passphraseFrameLabel": "nimi open", + "title": "nimi open sina" + }, + "hasAccount": "sina jo e lipu open la <0>o pana e nimi sina", + "login": { + "description": "lipu open sina la o sitelen e nimi ale sina", + "deviceLengthError": "o pana e nimi ilo", + "passphraseLabel": "nimi open 12", + "passphrasePlaceholder": "nimi open", + "submit": "o open", + "title": "o pana e nimi sina", + "validationError": "pakala" + }, + "register": { + "information": { + "color1": "kule nanpa wan", + "color2": "kule nanpa tu", + "header": "o pana e nimi pi ilo sina e kule e sitelen", + "icon": "sitelen", + "next": "o pana", + "title": "lipu open" + } + }, + "trust": { + "failed": { + "text": "nasin ale sina li pona anu seme?", + "title": "toki tawa lawa ilo li pakala" + }, + "host": "lawa ilo sina li <0>{{hostname}} - ona li pona tawa sina la sina ken pali e lipu open", + "no": "o weka", + "title": "lawa ilo ni li pona tawa sina anu seme?", + "yes": "lawa ilo ni li pona" + }, + "verify": { + "description": "sina awen e nimi open sina la o pana e nimi open", + "invalidData": "pakala", + "noMatch": "nimi li sama ala", + "passphraseLabel": "nimi open 12 sina", + "recaptchaFailed": "nasin ReCaptcha li pakala", + "register": "o pali e lipu open", + "title": "nimi open sina" + } + }, + "errors": { + "badge": "pakala a", + "details": "pakala", + "reloadPage": "o sin e lipu", + "showError": "o pana e sona pakala", + "title": "mi kama pakala a!" + }, + "footer": { + "legal": { + "disclaimer": "o sona e ni:" + }, + "links": { + "discord": "kulupu Siko", + "dmca": "DMCA", + "github": "lipu Kita" + }, + "tagline": "o lukin e sitelen ale pi wile sina kepeken ilo ni" + }, + "global": { + "name": "ilo Muwi-We", + "pages": { + "about": "o sona", + "dmca": "DMCA", + "login": "o open", + "pagetitle": "{{title}} - ilo Muwi-We", + "register": "o pali open", + "settings": "o ante" + } + }, + "home": { + "bookmarks": { + "sectionTitle": "poki awen" + }, + "continueWatching": { + "sectionTitle": "o awen lukin" + }, + "mediaList": { + "stopEditing": "o pini ante" + }, + "search": { + "allResults": "pini a!", + "failed": "lukin li pakala a! o alasa sin", + "loading": "alasa...", + "noResults": "ijo li lon ala a!", + "placeholder": "sina wile lukin e seme?", + "sectionTitle": "mi lukin e ni:" + }, + "titles": { + "day": { + "default": "tenpo suno ni la sina wile lukin e seme?" + }, + "morning": { + "default": "tenpo sin ni la sina wile lukin e seme?", + "extra": [ + "ken la sitelen Before Sunrise li pona" + ] + }, + "night": { + "default": "tenpo pimeja ni la sina wile lukin e seme?", + "extra": [ + "sina pilin lape anu seme? o alasa lukin e sitelen Exorcist" + ] + } + } + }, + "media": { + "episodeDisplay": "S{{season}} E{{episode}}", + "types": { + "movie": "sitelen wan", + "show": "sitelen kulupu" + } + }, + "navigation": { + "banner": { + "offline": "wawa linja sina li seme?" + }, + "menu": { + "about": "mi", + "donation": "o esun", + "logout": "o weka sona e sina", + "register": "Sync to cloud", + "settings": "o ante", + "support": "o supa" + } + }, + "notFound": { + "badge": "lon ala", + "goHome": "o tawa weka", + "message": "mi lukin lon anpa poki, lon insa tomo, lon monsi ilo. taso mi lukin ala e lipu pi wile sina", + "title": "mi ken ala lukin e lipu ona" + }, + "overlays": { + "close": "o pini" + }, + "player": { + "back": { + "default": "o tawa weka", + "short": "o tawa" + }, + "casting": { + "enabled": "mi pana e sitelen tawa ilo ante..." + }, + "menus": { + "captions": { + "customChoice": "o pana tan ilo", + "customizeLabel": "o ante", + "offChoice": "ala", + "settings": { + "delay": "ante tenpo", + "fixCapitals": "o pona e suli nimi" + }, + "title": "nimi toki", + "unknownLanguage": "mi sona ala" + }, + "downloads": { + "disclaimer": "sina kama jo e sitelen tawa ilo sina tan lipu mama. ilo Muwi-We li lawa ala e nasin jo", + "downloadCaption": "o jo e nimi toki", + "downloadVideo": "o jo e sitelen", + "hlsExplanation": "sitelen ni li tan nasin HLS la sina ken ala kama jo e ona", + "onAndroid": { + "1": "ilo Android la o luka e nena 'o jo'. lon lipu sin la o luka wawa e sitelen. o luka e nena 'o jo'", + "shortTitle": "Android ) o jo", + "title": "o jo lon ilo Android" + }, + "onIos": { + "1": "ilo iOS la o luka e nena 'o jo'. lon lipu sin la o luka e , e o jo poki .", + "shortTitle": "iOS ) o jo", + "title": "o jo lon ilo iOS" + }, + "onPc": { + "1": "ilo suli la o luka e nena 'o jo e sitelen'. lon lipu sin la o luka ante e sitelen. o luka e nena 'o jo e sitelen lon nimi ante'", + "shortTitle": "ilo suli ) o jo", + "title": "o jo lon ilo suli" + }, + "title": "kama jo" + }, + "episodes": { + "button": "sitelen mute", + "emptyState": "kulupu ni li jo ala e sitelen. o lukin lon tenpo ante a!", + "episodeBadge": "E{{episode}}", + "loadingError": "alasa li pakala", + "loadingList": "alasa...", + "loadingTitle": "alasa..." + }, + "playback": { + "speedLabel": "tenpo lukin", + "title": "nasin pali" + }, + "quality": { + "automaticLabel": "ilo o lawa", + "hint": "ante pi pona lukin la sina ken <0>ante e mama", + "iosNoQuality": "tan lawa pi esun Apple la ante pi pona lukin li ken ala lon ilo iOS. ante pi pona lukin la o alasa <0>ante e mama", + "title": "pona lukin" + }, + "settings": { + "captionItem": "nasin nimi", + "downloadItem": "o jo", + "enableCaptions": "nimi toki", + "experienceSection": "nasin lukin", + "playbackItem": "nasin pali", + "qualityItem": "pona lukin", + "sourceItem": "mama sitelen", + "videoSection": "nasin sitelen" + }, + "sources": { + "failed": { + "text": "lukin sitelen li pakala. o alasa e mama ante.", + "title": "pakala jo" + }, + "noEmbeds": { + "text": "mi lukin ala e lipu. o alasa e mama ante.", + "title": "lipu li lon ala" + }, + "noStream": { + "text": "lipu mama ni li jo ala e sitelen ni", + "title": "sitelen li lon ala" + }, + "title": "mama", + "unknownOption": "mi sona ala" + } + }, + "metadata": { + "failed": { + "badge": "pakala", + "homeButton": "o tawa weka", + "text": "mi pakala alasa e sona sitelen tan lipu TMDB. ken la ona li lape anu moli", + "title": "mi pakala alasa e sona sitelen" + }, + "notFound": { + "badge": "lon ala", + "homeButton": "o tawa weka", + "text": "mi lukin ala e lipu pi wile sina. lipu li weka anu ante", + "title": "mi lukin ala e ona" + } + }, + "nextEpisode": { + "cancel": "o ala", + "next": "o sitelen sin" + }, + "playbackError": { + "badge": "pakala lukin", + "errors": { + "errorAborted": "jan li pini alasa e sitelen", + "errorDecode": "sitelen li kama ante la pakala li kama lon", + "errorGenericMedia": "pakala sitelen pi sona ala li lon", + "errorNetwork": "pakala linja li pakala e alasa sitelen", + "errorNotSupported": "mi ken ala supa e sitelen anu mama sitelen" + }, + "homeButton": "o tawa weka", + "text": "mi alasa lukin e sitelen. taso pakala li lon. o alasa sin", + "title": "mi pakala lukin a" + }, + "scraping": { + "items": { + "failure": "mi pakala", + "notFound": "sitelen li lon ala", + "pending": "mi alasa e sitelen..." + }, + "notFound": { + "badge": "lon ala", + "detailsButton": "o pana e sona", + "homeButton": "o tawa weka", + "text": "mi lukin e lipu mama ale mi. taso mi lukin ala e ijo pi wile sina. mi mama ala e sitelen. mi lawa ala e sitelen. o luka e nena anpa", + "title": "mi lukin ala e ona" + } + }, + "time": { + "regular": "{{timeWatched}} / {{duration}}", + "remaining": "tenpo {{timeLeft}} la o awen • tenpo {{timeFinished, datetime}} la ona li pini", + "shortRegular": "{{timeWatched}}", + "shortRemaining": "-{{timeLeft}}" + } + }, + "screens": { + "loadingApp": "mi alasa e ilo", + "loadingUser": "mi alasa e lipu sina", + "loadingUserError": { + "logout": "o weka sona e sina", + "reset": "o sin e lawa ilo sina", + "text": "alasa li pakala", + "textWithReset": "alasa tan lawa ilo sina li pakala. sina wile e lawa ilo mi anu seme?" + } + }, + "settings": { + "account": { + "accountDetails": { + "deviceNameLabel": "nimi ilo", + "deviceNamePlaceholder": "ilo", + "editProfile": "o ante", + "logoutButton": "o weka sona e ona" + }, + "actions": { + "delete": { + "button": "o weka e ale", + "confirmButton": "o weka e ale", + "confirmDescription": "weka ni li suli li wawa mute a! sona ale sina li ken ala kama lon tenpo ante a!", + "confirmTitle": "sina wile e ni anu seme?", + "text": "tenpo kama la sina ken ala ante e weka ni. ale li kama weka", + "title": "o weka e ale" + }, + "title": "pali" + }, + "devices": { + "deviceNameLabel": "nimi ilo", + "failed": "alasa li pakala", + "removeDevice": "o weka", + "title": "ilo" + }, + "profile": { + "finish": "o ante", + "firstColor": "kule nanpa wan", + "secondColor": "kule nanpa tu", + "title": "o ante e sitelen", + "userIcon": "sitelen" + }, + "register": { + "cta": "o open", + "text": "o sama e lipu open sina tawa ilo sina ante", + "title": "o sama e lipu" + }, + "title": "lipu open" + }, + "appearance": { + "activeTheme": "lon", + "themes": { + "blue": "laso", + "default": "sama", + "gray": "pimeja", + "red": "loje", + "teal": "laso walo" + }, + "title": "kule" + }, + "captions": { + "backgroundLabel": "kon", + "colorLabel": "kule", + "previewQuote": "kijetesantakalu tonsi li lanpan ala lanpan e soko?", + "textSizeLabel": "suli", + "title": "nimi toki" + }, + "connections": { + "title": "kulupu" + }, + "locale": { + "language": "toki ilo", + "languageDescription": "ilo li toki kepeken toki ni:", + "title": "toki" + }, + "reset": "o sin", + "save": "o awen", + "unsaved": "ante sina li awen ala" + } +} From f29fb44f6c940b6505f9f3e31718396669272da2 Mon Sep 17 00:00:00 2001 From: Raymond Nee Date: Tue, 26 Dec 2023 09:39:46 +0000 Subject: [PATCH 20/21] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (247 of 247 strings) Translation: movie-web/website Translate-URL: http://weblate.movie-web.app/projects/movie-web/website/zh_Hans/ Author: Raymond Nee --- src/assets/locales/zh.json | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/assets/locales/zh.json b/src/assets/locales/zh.json index d9f2eafd..785193bf 100644 --- a/src/assets/locales/zh.json +++ b/src/assets/locales/zh.json @@ -1,13 +1,13 @@ { "about": { - "description": "movie-web 是一个在互联网上搜寻流媒体的 Web 应用程序。团队致力于让用户采取最简约的方式消费内容。", + "description": "movie-web 是一款在互联网上搜寻流媒体的网络应用程序。团队致力于让用户采取最简约的方式消费内容。", "faqTitle": "常见问题", "q1": { "body": "movie-web 不托管任何内容。您点选观看内容时,系统均从互联网搜寻(在加载提示页和“视频源”选项卡中,您可以看到正在使用的源)。媒体从未在 movie-web 中上传,所有内容均通过搜索机制而得。", "title": "内容来自哪里?" }, "q2": { - "body": "无法请求影视剧或其他节目,movie-web 不管理任何内容。所有内容均从互联网视频源获取并供您观看。", + "body": "无法主动请求影视剧或其他节目,movie-web 不管理任何内容。所有内容均从互联网视频源获取并供您观看。", "title": "我可以从哪里请求观看影视剧或其他节目?" }, "q3": { @@ -27,6 +27,7 @@ "generate": { "description": "您的密码短语相当于用户名与密码。由于您需要输入它来登录账户,请确保将其存放到安全位置", "next": "我已保存密码短语", + "passphraseFrameLabel": "密码短语", "title": "您的密码短语" }, "hasAccount": "已经拥有账户?<0>点击此处登录。", @@ -139,7 +140,7 @@ "episodeDisplay": "第{{season}}季 第{{episode}}集", "types": { "movie": "电影", - "show": "连续剧" + "show": "电视节目" } }, "navigation": { @@ -220,8 +221,8 @@ }, "quality": { "automaticLabel": "自动质量", - "hint": "您可以尝试 <0>切换视频源以获取不同的质量选项。", - "iosNoQuality": "由于苹果施加的限制,该视频源的质量选择在 iOS 上不可用。您可以尝试 <0>切换到其他视频源以获取不同的质量选项。", + "hint": "您可以尝试<0>切换视频源以获取不同的质量选项。", + "iosNoQuality": "由于苹果施加的限制,该视频源的质量选择在 iOS 上不可用。您可以尝试<0>切换到其他视频源以获取不同的质量选项。", "title": "质量" }, "settings": { @@ -244,7 +245,7 @@ "title": "未找到嵌入内容" }, "noStream": { - "text": "此源没有该影片或剧集的串流。", + "text": "此视频源没有该影片或节目的串流。", "title": "没有流" }, "title": "视频源", @@ -305,7 +306,7 @@ }, "screens": { "dmca": { - "text": "欢迎来到 movie-web 的 DMCA 联系页面!我们尊重知识产权,并希望迅速解决任何版权问题。如果您认为您的受版权保护的作品在我们的平台上被不当使用,请将详细的 DMCA 通知发送至以下电子邮件地址。请附上受版权保护的材料的描述、您的联系方式以及善意信念声明。 我们致力于迅速解决这些问题,并感谢您的合作,让 movie -web 成为尊重创造力和版权的地方。", + "text": "欢迎来到 movie-web 的 DMCA 联系页面!我们尊重知识产权,并希望迅速解决任何版权问题。如果您认为您的版权作品在我们的平台上被不当使用,请发送详细的 DMCA 通知至以下邮箱。同时请附上受版权保护的材料的描述、您的具体联系方式以及善意信念声明。 我们承诺及时解决这些问题,并感谢您的合作,让 movie-web 成为尊重创意和版权之地。", "title": "DMCA" }, "loadingApp": "正在载入应用程序", From 4ecca612002a625f94465093feea586f08c81449 Mon Sep 17 00:00:00 2001 From: Weblate Date: Wed, 27 Dec 2023 22:17:08 +0000 Subject: [PATCH 21/21] Update translation files Updated by "Cleanup translation files" hook in Weblate. Translation: movie-web/website Translate-URL: http://weblate.movie-web.app/projects/movie-web/website/ --- src/assets/locales/ar.json | 1 - src/assets/locales/cs.json | 1 - src/assets/locales/de.json | 1 - src/assets/locales/es.json | 1 - src/assets/locales/et.json | 1 - src/assets/locales/fr.json | 1 - src/assets/locales/he.json | 1 - src/assets/locales/lv.json | 1 - src/assets/locales/minion.json | 692 +++++++++++++++++---------------- src/assets/locales/ne.json | 1 - src/assets/locales/nl.json | 1 - src/assets/locales/pirate.json | 1 - src/assets/locales/sv.json | 1 - src/assets/locales/th.json | 1 - src/assets/locales/tok.json | 1 - src/assets/locales/tr.json | 1 - src/assets/locales/zh.json | 1 - 17 files changed, 347 insertions(+), 361 deletions(-) diff --git a/src/assets/locales/ar.json b/src/assets/locales/ar.json index 1932c87c..353ea0ef 100644 --- a/src/assets/locales/ar.json +++ b/src/assets/locales/ar.json @@ -188,7 +188,6 @@ "disclaimer": "يتم أخذ التنزيلات مباشرةً من قبل مقدم الخدمة. movie-web لاسيطرة له على كيفية توفير تلك التنزيلات.", "downloadCaption": "تنزيل مقاطع الترجمة الحالية", "downloadVideo": "تنزيل الفيديو", - "hlsExplanation": "هذا الوسيط هو بثٌ مباشر من نوع HTTP، لذا لايمكن تنزيله من movie-web.", "onAndroid": { "1": "للتنزيل على أندرويد، أنقر زر التنزيل وفي الصفحة الموالية إضغط باستمرار على الفيديو، وبعدها اختر حفظ.", "shortTitle": "تنزيل / Android", diff --git a/src/assets/locales/cs.json b/src/assets/locales/cs.json index 25347ff7..291d3381 100644 --- a/src/assets/locales/cs.json +++ b/src/assets/locales/cs.json @@ -189,7 +189,6 @@ "disclaimer": "Stahování probíhá přímo u poskytovatele. movie-web nemá kontrolu nad tím, jak jsou stahování poskytovány.", "downloadCaption": "Stáhnout titulky", "downloadVideo": "Stáhnout video", - "hlsExplanation": "Toto médium je proud HLS, který nelze stáhnout na movie-web.", "onAndroid": { "1": "Na Androidu klikněte na tlačítko stahování, poté na nové stránce klepněte a podržte na videu a poté vyberte uložit.", "shortTitle": "Stahování / Android", diff --git a/src/assets/locales/de.json b/src/assets/locales/de.json index b7033a3b..b25463c0 100644 --- a/src/assets/locales/de.json +++ b/src/assets/locales/de.json @@ -189,7 +189,6 @@ "disclaimer": "Videos werden direkt vom Provider heruntergeladen. movie-web hat nicht steuern, wie die Downloads bereitgestellt werden.", "downloadCaption": "Ausgewählte Untertitel herunterladen", "downloadVideo": "Video herunterladen", - "hlsExplanation": "Dieses Video ist ein HLS-Stream, welcher auf movie-web nicht heruntergeladen werden kann.", "onAndroid": { "1": "Um auf Android Herunterzuladen, tippe auf den Download-Button, tippe und halte auf der neuen Seite auf das Video und wähle Speichern aus.", "shortTitle": "Download / Android", diff --git a/src/assets/locales/es.json b/src/assets/locales/es.json index 298b1138..fb148e49 100644 --- a/src/assets/locales/es.json +++ b/src/assets/locales/es.json @@ -189,7 +189,6 @@ "disclaimer": "Las descargas se realizan directamente desde el proveedor. movie-web no tiene control sobre cómo se proporcionan las descargas.", "downloadCaption": "Descargar subtítulo actual", "downloadVideo": "Descargar vídeo", - "hlsExplanation": "Este contenido es una transmisión HLS que no se puede descargar en movie-web.", "onAndroid": { "1": "Para descargar en Android, haz clic en el botón de descarga y luego, en la nueva página, mantén presionado el vídeo y selecciona guardar.", "shortTitle": "Descargar / Android", diff --git a/src/assets/locales/et.json b/src/assets/locales/et.json index bed3ea8e..27177ef2 100644 --- a/src/assets/locales/et.json +++ b/src/assets/locales/et.json @@ -154,7 +154,6 @@ "disclaimer": "Allalaadimine toimub otse teenusepakkujalt. movie-web ei saa kontrollida, kuidas allalaadimine toimub.", "downloadCaption": "Lae alla praegused subtiitrid", "downloadVideo": "Lae alla video", - "hlsExplanation": "See meedia on HLS voog, mida ei saa alla laadida.", "onAndroid": { "1": "Et allalaadida Androidi telefonil, vajuta allalaadimise nupule, siis uuel leheküljel vajuta ja hoia video peal, siis vali salvesta.", "shortTitle": "Allalaadimine / Android", diff --git a/src/assets/locales/fr.json b/src/assets/locales/fr.json index 0da190d0..79961dc4 100644 --- a/src/assets/locales/fr.json +++ b/src/assets/locales/fr.json @@ -189,7 +189,6 @@ "disclaimer": "Les téléchargements sont effectués directement par le fournisseur. movie-web n'a aucun contrôle sur la manière dont les téléchargements sont effectués.", "downloadCaption": "Télécharger les sous-titres actuels", "downloadVideo": "Télécharger la vidéo", - "hlsExplanation": "Ce média est un flux HLS qui ne peut pas être téléchargé sur movie-web.", "onAndroid": { "1": "Pour télécharger sur Android, cliquez sur le bouton de téléchargement puis, sur la nouvelle page, tapez et maintenez sur la vidéo, puis sélectionnez enregistrer.", "shortTitle": "Télécharger / Android", diff --git a/src/assets/locales/he.json b/src/assets/locales/he.json index e9692865..3c811283 100644 --- a/src/assets/locales/he.json +++ b/src/assets/locales/he.json @@ -189,7 +189,6 @@ "disclaimer": "ההורדות נלקחות ישירות מהספק. ל-movie-web אין שליטה על האופן שבו מסופקות ההורדות.", "downloadCaption": "הורד את הכתוביות הנוכחיות", "downloadVideo": "הורד וידאו", - "hlsExplanation": "מדיה זו היא זרם HLS שאינו ניתן להורדה ב-movie-web.", "onAndroid": { "1": "כדי להוריד באנדרואיד, לחץ על כפתור ההורדה ולאחר מכן, בדף החדש, הקש והחזק על הסרטון, ולאחר מכן בחר שמור.", "shortTitle": "הורדה / אנדרויד", diff --git a/src/assets/locales/lv.json b/src/assets/locales/lv.json index 2692c580..0f0a0f9c 100644 --- a/src/assets/locales/lv.json +++ b/src/assets/locales/lv.json @@ -188,7 +188,6 @@ "disclaimer": "Lejupielādes tiek ņemtas tieši no pakalpojumu sniedzēja. Movie-web nevar kontrolēt, kā tiek nodrošinātas lejupielādes.", "downloadCaption": "Lejupielādēt pašreizējo parakstu", "downloadVideo": "Lejupielādēt video", - "hlsExplanation": "Šī multivide ir HLS straume, kuru nevar lejupielādēt filmu tīmeklī.", "onAndroid": { "1": "Lai lejupielādētu operētājsistēmā Android, noklikšķiniet uz lejupielādes pogas, pēc tam jaunajā lapā pieskarieties videoklipam un turiet to, pēc tam atlasiet saglabāt.", "shortTitle": "Lejupielādēt / Android", diff --git a/src/assets/locales/minion.json b/src/assets/locales/minion.json index a07ffd4d..0c27762d 100644 --- a/src/assets/locales/minion.json +++ b/src/assets/locales/minion.json @@ -1,271 +1,145 @@ { + "about": { + "description": "Minion-web is a banana application that searches the banana for bananas. The banana aims for a mostly banana approach to consuming banana.", + "faqTitle": "Banana questions", + "q1": { + "body": "Minion-web does not banana any banana. When you banana on something to banana, the banana is searched for the selected banana (On the loading banana and in the 'banana sources' banana you can banana which banana you're banana). Banana never gets banana by Minion-web, everything is banana this banana mechanism.", + "title": "Where does the banana come from?" + }, + "q2": { + "body": "It's not banana to banana a banana or banana, Minion-web does not banana any banana. All banana is banana through bananas on the banana.", + "title": "Banana can I banana a banana or banana?" + }, + "q3": { + "body": "Our banana results are banana by The Banana Banana (TBMB) and banana regardless of whether our bananas actually have the banana.", + "title": "The banana results banana the banana or banana, banana can't I banana it?" + }, + "title": "About Minion-web" + }, + "actions": { + "copied": "Banana", + "copy": "Banana" + }, "auth": { + "createAccount": "Whaaaat? Don't have an account yet? <0>Create an account.", "deviceNameLabel": "Device name", "deviceNamePlaceholder": "Banana phone", + "generate": { + "description": "Your banana passphrase acts as your banana username and banana password. Make sure to keep it safe as you will need to enter it to banana to your account", + "next": "I have saved my banana passphrase", + "title": "Your banana passphrase" + }, "hasAccount": "Bello! Already have an account? <0>Login here.", - "createAccount": "Whaaaat? Don't have an account yet? <0>Create an account.", + "login": { + "description": "Please enter your secret banana language passphrase to login to your account", + "deviceLengthError": "Banana! Please enter a device name", + "passphraseLabel": "12-Banana passphrase", + "passphrasePlaceholder": "Banana Passphrase", + "submit": "Bello! Login", + "title": "Login to your account", + "validationError": "Banana language not fluent or incomplete" + }, "register": { "information": { - "title": "Account information", "color1": "Profile color one", "color2": "Profile color two", - "icon": "Minion icon", "header": "Whaaat? Enter a name for your device and pick colors and a minion icon of your choosing", - "next": "Banana!" + "icon": "Minion icon", + "next": "Banana!", + "title": "Account information" } }, - "login": { - "title": "Login to your account", - "description": "Please enter your secret banana language passphrase to login to your account", - "validationError": "Banana language not fluent or incomplete", - "deviceLengthError": "Banana! Please enter a device name", - "submit": "Bello! Login", - "passphraseLabel": "12-Banana passphrase", - "passphrasePlaceholder": "Banana Passphrase" - }, - "generate": { - "title": "Your banana passphrase", - "next": "I have saved my banana passphrase", - "description": "Your banana passphrase acts as your banana username and banana password. Make sure to keep it safe as you will need to enter it to banana to your account" - }, "trust": { - "title": "Do you trust this server?", - "host": "You are connecting to <0>{{hostname}} - please confirm you trust it before making a banana account", "failed": { - "title": "Failed to reach server", - "text": "Did you configure it correctly?" + "text": "Did you configure it correctly?", + "title": "Failed to reach server" }, - "yes": "I trust this server, banana!", - "no": "Go back, banana" + "host": "You are connecting to <0>{{hostname}} - please confirm you trust it before making a banana account", + "no": "Go back, banana", + "title": "Do you trust this server?", + "yes": "I trust this server, banana!" }, "verify": { - "title": "Confirm your banana passphrase", "description": "Please enter your banana passphrase from earlier to confirm you have saved it and to create your banana account", "invalidData": "Banana data is not valid", "noMatch": "Banana! Passphrase doesn't match", - "recaptchaFailed": "Banana! ReCaptcha validation failed", "passphraseLabel": "Your 12-banana passphrase", - "register": "Create banana account" + "recaptchaFailed": "Banana! ReCaptcha validation failed", + "register": "Create banana account", + "title": "Confirm your banana passphrase" } }, "errors": { + "badge": "It broke", "details": "Error banana details", "reloadPage": "Reload the banana", "showError": "Show banana details", - "badge": "It broke", "title": "We encountered a banana!" }, - "notFound": { - "badge": "Not found", - "title": "Couldn't find that banana", - "message": "We looked everywhere: under the banana, in the banana, behind the banana but ultimately couldn't find the banana you are looking for.", - "goHome": "Back to banana" + "footer": { + "legal": { + "disclaimer": "Banana", + "disclaimerText": "Minion-web does not banana any bananas, it merely banana to 3rd banana bananas. Banana issues should be banana up with the banana bananas and bananas. Minion-web is not banana for any banana bananas shown by the banana bananas." + }, + "links": { + "discord": "Banana", + "dmca": "Banana", + "github": "Banana" + }, + "tagline": "Banana your favourite bananas and bananas with this open source banana app." }, "global": { "name": "banana-web", "pages": { - "pagetitle": "{{title}} - banana-web", - "dmca": "DMCA", - "settings": "Banana Settings", "about": "About banana", + "dmca": "DMCA", "login": "Banana Login", - "register": "Banana Register" - } - }, - "media": { - "types": { - "movie": "Banana Movie", - "show": "Banana Show" - }, - "episodeDisplay": "S{{season}} E{{episode}}" - }, - "player": { - "scraping": { - "notFound": { - "badge": "Not found", - "title": "We couldn't find that banana", - "text": "We have searched through our banana providers and cannot find the banana you are looking for! We do not host the banana and have no control over what is available. Please click 'Show details' below for more details.", - "homeButton": "Go home", - "detailsButton": "Show details" - }, - "items": { - "pending": "Checking for banana videos...", - "notFound": "Doesn't have the banana video", - "failure": "Error banana occurred" - } - }, - "casting": { - "enabled": "Casting to banana..." - }, - "playbackError": { - "badge": "Banana Playback error", - "title": "Failed to play banana video!", - "text": "There was an error trying to play the banana. Please try again.", - "homeButton": "Go home", - "errors": { - "errorAborted": "The fetching of the banana was aborted by the user's banana.", - "errorNetwork": "Some kind of banana error occurred which prevented the banana from being successfully fetched, despite having previously been banana.", - "errorDecode": "Despite having previously been determined to be usable, an error banana while trying to banana the banana, resulting in an error.", - "errorNotSupported": "The banana or banana provider object is not banana.", - "errorGenericMedia": "Unknown banana error occurred." - } - }, - "metadata": { - "notFound": { - "badge": "Banana Not found", - "title": "Couldn't find that banana.", - "text": "We couldn't find the banana you requested. Either it's been banana or you tampered with the banana.", - "homeButton": "Back to banana" - }, - "failed": { - "badge": "Banana Failed", - "title": "Failed to load banana metadata", - "text": "Could not banana the banana's banana from TMDB. Please banana whether TMDB is down or banana on your banana connection.", - "homeButton": "Go banana" - } - }, - "back": { - "default": "Back to banana", - "short": "Back banana" - }, - "time": { - "regular": "{{timeWatched}} / {{duration}}", - "shortRegular": "{{timeWatched}}", - "remaining": "{{timeLeft}} left • Finish at {{timeFinished, datetime}}", - "shortRemaining": "-{{timeLeft}}" - }, - "nextEpisode": { - "next": "Next banana", - "cancel": "Banana" - }, - "menus": { - "settings": { - "videoSection": "Banana Video settings", - "experienceSection": "Banana Viewing experience", - "enableCaptions": "Enable banana", - "captionItem": "Banana settings", - "sourceItem": "Banana sources", - "playbackItem": "Banana settings", - "downloadItem": "Banana", - "qualityItem": "Banana" - }, - "episodes": { - "button": "Banana", - "loadingTitle": "Loading...", - "loadingList": "Loading...", - "loadingError": "Error loading banana", - "emptyState": "There are no banana in this banana, check back banana!", - "episodeBadge": "E{{episode}}" - }, - "sources": { - "title": "Banana", - "unknownOption": "Banana", - "noStream": { - "title": "Banana stream", - "text": "This banana has no banana for this banana or banana." - }, - "noEmbeds": { - "title": "No banana found", - "text": "We were unable to banana any banana, please try a different banana." - }, - "failed": { - "title": "Banana to banana", - "text": "There was an banana while trying to banana any banana, please try a different banana." - } - }, - "captions": { - "title": "Banana", - "customizeLabel": "Banana", - "settings": { - "fixCapitals": "Banana", - "delay": "Banana" - }, - "customChoice": "Banana", - "offChoice": "Banana", - "unknownLanguage": "Banana" - }, - "downloads": { - "title": "Banana", - "disclaimer": "Downloads are taken directly from the banana. banana-web does not have banana over how the banana are banana.", - "hlsExplanation": "This banana is a banana banana which cannot be banana on banana-web.", - "downloadVideo": "Banana", - "downloadCaption": "Banana", - "onPc": { - "1": "On PC, click the banana banana then, on the new banana, right click the banana and select Banana", - "title": "Banana", - "shortTitle": "Banana / PC" - }, - "onAndroid": { - "1": "To banana on Banana, click the banana banana then, on the new banana, tap and hold on the banana, then select banana.", - "title": "Banana", - "shortTitle": "Banana / Banana" - }, - "onIos": { - "1": "To banana on Banana, click the banana banana then, on the new banana, click , then Banana to banana .", - "title": "Banana", - "shortTitle": "Banana / Banana" - } - }, - "playback": { - "title": "Banana settings", - "speedLabel": "Banana speed" - }, - "quality": { - "title": "Banana", - "automaticLabel": "Banana", - "hint": "You can banana <0>banana to get different banana banana.", - "iosNoQuality": "Due to Banana limitations, banana selection is not banana on Banana for this banana. You can banana <0>banana to get different banana banana." - } + "pagetitle": "{{title}} - banana-web", + "register": "Banana Register", + "settings": "Banana Settings" } }, "home": { - "mediaList": { - "stopEditing": "Stop banana" - }, - "titles": { - "morning": { - "default": "What would you like to banana this banana?", - "extra": ["Banana! I hear Banana Sunrise is banana"] - }, - "day": { - "default": "What would you like to banana this banana?", - "extra": [] - }, - "night": { - "default": "What would you like to banana banana?", - "extra": ["Banana? I hear The Banana is banana."] - } - }, - "search": { - "loading": "Loading...", - "sectionTitle": "Banana results", - "allResults": "Banana's all we banana!", - "noResults": "We couldn't banana anything!", - "failed": "Failed to banana banana, try again!", - "placeholder": "Banana do you want to banana?" + "bookmarks": { + "sectionTitle": "Banana" }, "continueWatching": { "sectionTitle": "Continue Banana" }, - "bookmarks": { - "sectionTitle": "Banana" + "mediaList": { + "stopEditing": "Stop banana" + }, + "search": { + "allResults": "Banana's all we banana!", + "failed": "Failed to banana banana, try again!", + "loading": "Loading...", + "noResults": "We couldn't banana anything!", + "placeholder": "Banana do you want to banana?", + "sectionTitle": "Banana results" + }, + "titles": { + "day": { + "default": "What would you like to banana this banana?" + }, + "morning": { + "default": "What would you like to banana this banana?", + "extra": [ + "Banana! I hear Banana Sunrise is banana" + ] + }, + "night": { + "default": "What would you like to banana banana?", + "extra": [ + "Banana? I hear The Banana is banana." + ] + } } }, - "overlays": { - "close": "Banana" - }, - "screens": { - "loadingUser": "Loading your banana", - "loadingApp": "Loading banana", - "loadingUserError": { - "text": "Failed to banana your banana", - "textWithReset": "Failed to banana your banana from your banana banana, banana to banana back to the banana banana?", - "reset": "Banana banana banana", - "logout": "Banana" - }, - "migration": { - "failed": "Banana to banana your banana.", - "inProgress": "Please banana, we are banana your banana. This shouldn't banana long." + "media": { + "episodeDisplay": "S{{season}} E{{episode}}", + "types": { + "movie": "Banana Movie", + "show": "Banana Show" } }, "navigation": { @@ -273,141 +147,269 @@ "offline": "Check your banana connection" }, "menu": { - "register": "Banana to banana", - "settings": "Banana", "about": "Banana us", "donation": "Banana", - "support": "Banana", - "logout": "Banana out" + "logout": "Banana out", + "register": "Banana to banana", + "settings": "Banana", + "support": "Banana" } }, - "actions": { - "copy": "Banana", - "copied": "Banana" + "notFound": { + "badge": "Not found", + "goHome": "Back to banana", + "message": "We looked everywhere: under the banana, in the banana, behind the banana but ultimately couldn't find the banana you are looking for.", + "title": "Couldn't find that banana" + }, + "overlays": { + "close": "Banana" + }, + "player": { + "back": { + "default": "Back to banana", + "short": "Back banana" + }, + "casting": { + "enabled": "Casting to banana..." + }, + "menus": { + "captions": { + "customChoice": "Banana", + "customizeLabel": "Banana", + "offChoice": "Banana", + "settings": { + "delay": "Banana", + "fixCapitals": "Banana" + }, + "title": "Banana", + "unknownLanguage": "Banana" + }, + "downloads": { + "disclaimer": "Downloads are taken directly from the banana. banana-web does not have banana over how the banana are banana.", + "downloadCaption": "Banana", + "downloadVideo": "Banana", + "onAndroid": { + "1": "To banana on Banana, click the banana banana then, on the new banana, tap and hold on the banana, then select banana.", + "shortTitle": "Banana / Banana", + "title": "Banana" + }, + "onIos": { + "1": "To banana on Banana, click the banana banana then, on the new banana, click , then Banana to banana .", + "shortTitle": "Banana / Banana", + "title": "Banana" + }, + "onPc": { + "1": "On PC, click the banana banana then, on the new banana, right click the banana and select Banana", + "shortTitle": "Banana / PC", + "title": "Banana" + }, + "title": "Banana" + }, + "episodes": { + "button": "Banana", + "emptyState": "There are no banana in this banana, check back banana!", + "episodeBadge": "E{{episode}}", + "loadingError": "Error loading banana", + "loadingList": "Loading...", + "loadingTitle": "Loading..." + }, + "playback": { + "speedLabel": "Banana speed", + "title": "Banana settings" + }, + "quality": { + "automaticLabel": "Banana", + "hint": "You can banana <0>banana to get different banana banana.", + "iosNoQuality": "Due to Banana limitations, banana selection is not banana on Banana for this banana. You can banana <0>banana to get different banana banana.", + "title": "Banana" + }, + "settings": { + "captionItem": "Banana settings", + "downloadItem": "Banana", + "enableCaptions": "Enable banana", + "experienceSection": "Banana Viewing experience", + "playbackItem": "Banana settings", + "qualityItem": "Banana", + "sourceItem": "Banana sources", + "videoSection": "Banana Video settings" + }, + "sources": { + "failed": { + "text": "There was an banana while trying to banana any banana, please try a different banana.", + "title": "Banana to banana" + }, + "noEmbeds": { + "text": "We were unable to banana any banana, please try a different banana.", + "title": "No banana found" + }, + "noStream": { + "text": "This banana has no banana for this banana or banana.", + "title": "Banana stream" + }, + "title": "Banana", + "unknownOption": "Banana" + } + }, + "metadata": { + "failed": { + "badge": "Banana Failed", + "homeButton": "Go banana", + "text": "Could not banana the banana's banana from TMDB. Please banana whether TMDB is down or banana on your banana connection.", + "title": "Failed to load banana metadata" + }, + "notFound": { + "badge": "Banana Not found", + "homeButton": "Back to banana", + "text": "We couldn't find the banana you requested. Either it's been banana or you tampered with the banana.", + "title": "Couldn't find that banana." + } + }, + "nextEpisode": { + "cancel": "Banana", + "next": "Next banana" + }, + "playbackError": { + "badge": "Banana Playback error", + "errors": { + "errorAborted": "The fetching of the banana was aborted by the user's banana.", + "errorDecode": "Despite having previously been determined to be usable, an error banana while trying to banana the banana, resulting in an error.", + "errorGenericMedia": "Unknown banana error occurred.", + "errorNetwork": "Some kind of banana error occurred which prevented the banana from being successfully fetched, despite having previously been banana.", + "errorNotSupported": "The banana or banana provider object is not banana." + }, + "homeButton": "Go home", + "text": "There was an error trying to play the banana. Please try again.", + "title": "Failed to play banana video!" + }, + "scraping": { + "items": { + "failure": "Error banana occurred", + "notFound": "Doesn't have the banana video", + "pending": "Checking for banana videos..." + }, + "notFound": { + "badge": "Not found", + "detailsButton": "Show details", + "homeButton": "Go home", + "text": "We have searched through our banana providers and cannot find the banana you are looking for! We do not host the banana and have no control over what is available. Please click 'Show details' below for more details.", + "title": "We couldn't find that banana" + } + }, + "time": { + "regular": "{{timeWatched}} / {{duration}}", + "remaining": "{{timeLeft}} left • Finish at {{timeFinished, datetime}}", + "shortRegular": "{{timeWatched}}", + "shortRemaining": "-{{timeLeft}}" + } + }, + "screens": { + "loadingApp": "Loading banana", + "loadingUser": "Loading your banana", + "loadingUserError": { + "logout": "Banana", + "reset": "Banana banana banana", + "text": "Failed to banana your banana", + "textWithReset": "Failed to banana your banana from your banana banana, banana to banana back to the banana banana?" + }, + "migration": { + "failed": "Banana to banana your banana.", + "inProgress": "Please banana, we are banana your banana. This shouldn't banana long." + } }, "settings": { - "unsaved": "Whaaat? You have unsaved bananas", + "account": { + "accountDetails": { + "deviceNameLabel": "Banana name", + "deviceNamePlaceholder": "Banana phone", + "editProfile": "Banana", + "logoutButton": "Banana out" + }, + "actions": { + "delete": { + "button": "Banana", + "confirmButton": "Banana", + "confirmDescription": "Banana you banana to banana your banana? All your bananas will be banana!", + "confirmTitle": "Banana you banana?", + "text": "Whaaat? This banana is irreversible. All bananas will be banana and nothing can be banana.", + "title": "Banana" + }, + "title": "Banana" + }, + "devices": { + "deviceNameLabel": "Banana name", + "failed": "Failed to load bananas", + "removeDevice": "Banana", + "title": "Banana" + }, + "profile": { + "finish": "Banana banana", + "firstColor": "Minion color one", + "secondColor": "Minion color two", + "title": "Edit banana banana", + "userIcon": "Minion icon" + }, + "register": { + "cta": "Banana started", + "text": "Banana your banana banana between banana and keep them synced.", + "title": "Banana to the banana" + }, + "title": "Banana" + }, + "appearance": { + "activeTheme": "Banana", + "themes": { + "blue": "Banana", + "default": "Banana", + "gray": "Banana", + "red": "Banana", + "teal": "Banana" + }, + "title": "Banana" + }, + "captions": { + "backgroundLabel": "Banana opacity", + "colorLabel": "Banana", + "previewQuote": "I must not banana. Banana is the banana-killer.", + "textSizeLabel": "Banana size", + "title": "Banana" + }, + "connections": { + "server": { + "description": "Banana you would like to banana to a banana banana to store your banana, banana this and banana the URL.", + "label": "Banana banana", + "urlLabel": "Banana banana URL" + }, + "title": "Banana", + "workers": { + "addButton": "Banana banana banana", + "description": "Banana make the banana function, all banana is banana through bananas. Banana this if you banana to banana your own bananas.", + "emptyState": "No bananas yet, banana one banana", + "label": "Banana custom banana", + "urlLabel": "Banana URLs", + "urlPlaceholder": "https://" + } + }, + "locale": { + "language": "Banana", + "languageDescription": "Banana applied to the entire banana.", + "title": "Banana" + }, "reset": "Banana", "save": "Banana", "sidebar": { "info": { - "title": "Banana information", - "hostname": "Banana", - "backendUrl": "Banana URL", - "userId": "Minion ID", - "notLoggedIn": "You are not banana in", "appVersion": "Banana version", + "backendUrl": "Banana URL", "backendVersion": "Banana version", - "unknownVersion": "Unknown", + "hostname": "Banana", + "insecure": "Banana", + "notLoggedIn": "You are not banana in", "secure": "Banana", - "insecure": "Banana" + "title": "Banana information", + "unknownVersion": "Unknown", + "userId": "Minion ID" } }, - "appearance": { - "title": "Banana", - "activeTheme": "Banana", - "themes": { - "default": "Banana", - "blue": "Banana", - "teal": "Banana", - "red": "Banana", - "gray": "Banana" - } - }, - "account": { - "title": "Banana", - "register": { - "title": "Banana to the banana", - "text": "Banana your banana banana between banana and keep them synced.", - "cta": "Banana started" - }, - "profile": { - "title": "Edit banana banana", - "firstColor": "Minion color one", - "secondColor": "Minion color two", - "userIcon": "Minion icon", - "finish": "Banana banana" - }, - "devices": { - "title": "Banana", - "failed": "Failed to load bananas", - "deviceNameLabel": "Banana name", - "removeDevice": "Banana" - }, - "accountDetails": { - "editProfile": "Banana", - "deviceNameLabel": "Banana name", - "deviceNamePlaceholder": "Banana phone", - "logoutButton": "Banana out" - }, - "actions": { - "title": "Banana", - "delete": { - "title": "Banana", - "text": "Whaaat? This banana is irreversible. All bananas will be banana and nothing can be banana.", - "button": "Banana", - "confirmTitle": "Banana you banana?", - "confirmDescription": "Banana you banana to banana your banana? All your bananas will be banana!", - "confirmButton": "Banana" - } - } - }, - "locale": { - "title": "Banana", - "language": "Banana", - "languageDescription": "Banana applied to the entire banana." - }, - "captions": { - "title": "Banana", - "previewQuote": "I must not banana. Banana is the banana-killer.", - "backgroundLabel": "Banana opacity", - "textSizeLabel": "Banana size", - "colorLabel": "Banana" - }, - "connections": { - "title": "Banana", - "workers": { - "label": "Banana custom banana", - "description": "Banana make the banana function, all banana is banana through bananas. Banana this if you banana to banana your own bananas.", - "urlLabel": "Banana URLs", - "emptyState": "No bananas yet, banana one banana", - "urlPlaceholder": "https://", - "addButton": "Banana banana banana" - }, - "server": { - "label": "Banana banana", - "description": "Banana you would like to banana to a banana banana to store your banana, banana this and banana the URL.", - "urlLabel": "Banana banana URL" - } - } - }, - "about": { - "title": "About Minion-web", - "description": "Minion-web is a banana application that searches the banana for bananas. The banana aims for a mostly banana approach to consuming banana.", - "faqTitle": "Banana questions", - "q1": { - "title": "Where does the banana come from?", - "body": "Minion-web does not banana any banana. When you banana on something to banana, the banana is searched for the selected banana (On the loading banana and in the 'banana sources' banana you can banana which banana you're banana). Banana never gets banana by Minion-web, everything is banana this banana mechanism." - }, - "q2": { - "title": "Banana can I banana a banana or banana?", - "body": "It's not banana to banana a banana or banana, Minion-web does not banana any banana. All banana is banana through bananas on the banana." - }, - "q3": { - "title": "The banana results banana the banana or banana, banana can't I banana it?", - "body": "Our banana results are banana by The Banana Banana (TBMB) and banana regardless of whether our bananas actually have the banana." - } - }, - "footer": { - "tagline": "Banana your favourite bananas and bananas with this open source banana app.", - "links": { - "github": "Banana", - "dmca": "Banana", - "discord": "Banana" - }, - "legal": { - "disclaimer": "Banana", - "disclaimerText": "Minion-web does not banana any bananas, it merely banana to 3rd banana bananas. Banana issues should be banana up with the banana bananas and bananas. Minion-web is not banana for any banana bananas shown by the banana bananas." - } + "unsaved": "Whaaat? You have unsaved bananas" } } diff --git a/src/assets/locales/ne.json b/src/assets/locales/ne.json index 41bcc002..31c3255b 100644 --- a/src/assets/locales/ne.json +++ b/src/assets/locales/ne.json @@ -189,7 +189,6 @@ "disclaimer": "डाउनलोडहरू सीधा प्रदायकबाट लिइन्छ। movie-web ले डाउनलोडहरू कसरी प्रदान गरिन्छ भन्नेमा नियन्त्रण गर्दैन।", "downloadCaption": "डाउनलोड चलिरहेको क्याप्शन", "downloadVideo": "डाउनलोड भिडियो", - "hlsExplanation": "यो मिडिया HLS स्ट्रिम हो जुन movie-web मा डाउनलोड गर्न सकिँदैन।", "onAndroid": { "1": "एन्ड्रोइड मा, डाउनलोड बटन क्लिक गर्नुहोस् त्यसपछि, नयाँ पृष्ठमा, भिडियोमा ट्याप गर्नुहोस् र होल्ड गर्नुहोस्, त्यसपछि बचत चयन गर्नुहोस्।", "shortTitle": "डाउनलोड / एन्ड्रोइड", diff --git a/src/assets/locales/nl.json b/src/assets/locales/nl.json index 8700f4ff..fabaf41e 100644 --- a/src/assets/locales/nl.json +++ b/src/assets/locales/nl.json @@ -122,7 +122,6 @@ "disclaimer": "Downloads worden direct bij de bron opgehaald. movie-web heeft geen controle over het bestand dat je ontvangt.", "downloadCaption": "Ondertiteling downloaden", "downloadVideo": "Download filmpje", - "hlsExplanation": "Dit filmpje is een HLS bestand, een type bestand dat we helaas niet kunnen downloaden.", "title": "Download" }, "episodes": { diff --git a/src/assets/locales/pirate.json b/src/assets/locales/pirate.json index ce9e4113..ed892aed 100644 --- a/src/assets/locales/pirate.json +++ b/src/assets/locales/pirate.json @@ -144,7 +144,6 @@ "disclaimer": "Downloads be taken directly from the provider. movie-web does not have control over how the downloads be provided.", "downloadCaption": "Download sea shanty", "downloadVideo": "Download film", - "hlsExplanation": "Insert explanation for why ye can't download HLS here", "onAndroid": { "1": "To download on Android, tap and hold on the film, then select save.", "shortTitle": "Download / Android", diff --git a/src/assets/locales/sv.json b/src/assets/locales/sv.json index 2cd0f18c..6f58d518 100644 --- a/src/assets/locales/sv.json +++ b/src/assets/locales/sv.json @@ -188,7 +188,6 @@ "disclaimer": "Nedladdningar görs direkt från leverantören. movie-web har ingen kontroll över hur nedladdningarna tillhandahålls.", "downloadCaption": "Ladda ner aktuell undertext", "downloadVideo": "Ladda ner video", - "hlsExplanation": "Denna media är en HLS-ström som inte kan laddas ner på movie-web.", "onAndroid": { "1": "För att ladda ner på Android, klicka på nedladdningsknappen och på den nya sidan trycker och håller på videon, välj sedan spara.", "shortTitle": "Ladda ner / Android", diff --git a/src/assets/locales/th.json b/src/assets/locales/th.json index 0befa67f..a62c17ca 100644 --- a/src/assets/locales/th.json +++ b/src/assets/locales/th.json @@ -188,7 +188,6 @@ "disclaimer": "การดาวน์โหลดจะถูกนํามาจากผู้ให้บริการโดยตรง movie-web ไม่สามารถควบคุมวิธีการดาวน์โหลดได้", "downloadCaption": "ดาวน์โหลดคำบรรยายปัจจุบัน", "downloadVideo": "ดาวน์โหลดวิดีโอ", - "hlsExplanation": "สื่อนี้เป็นสตรีม HLS ซึ่งไม่สามารถดาวน์โหลดบนเว็บภาพยนตร์ได้", "onAndroid": { "1": "หากต้องการดาวน์โหลดบน Android ให้คลิกปุ่มดาวน์โหลด จากนั้นในหน้าใหม่ แตะ บนวิดีโอค้างไว้ จากนั้นเลือก บันทึก", "shortTitle": "ดาวน์โหลด / Android", diff --git a/src/assets/locales/tok.json b/src/assets/locales/tok.json index 5817986c..1e9113d6 100644 --- a/src/assets/locales/tok.json +++ b/src/assets/locales/tok.json @@ -174,7 +174,6 @@ "disclaimer": "sina kama jo e sitelen tawa ilo sina tan lipu mama. ilo Muwi-We li lawa ala e nasin jo", "downloadCaption": "o jo e nimi toki", "downloadVideo": "o jo e sitelen", - "hlsExplanation": "sitelen ni li tan nasin HLS la sina ken ala kama jo e ona", "onAndroid": { "1": "ilo Android la o luka e nena 'o jo'. lon lipu sin la o luka wawa e sitelen. o luka e nena 'o jo'", "shortTitle": "Android ) o jo", diff --git a/src/assets/locales/tr.json b/src/assets/locales/tr.json index 95717b64..b3011c49 100644 --- a/src/assets/locales/tr.json +++ b/src/assets/locales/tr.json @@ -189,7 +189,6 @@ "disclaimer": "İndirme bağlantıları doğrudan sağlayıcının kendisinden alınır. movie-web'in sağlanan indirme bağlantıları üzerinde hiçbir konrolü yoktur.", "downloadCaption": "Geçerli altyazıyı indir", "downloadVideo": "Videoyu indir", - "hlsExplanation": "Bu medya, movie-web üzerinden indirilemeyen bir HLS akışıdır.", "onAndroid": { "1": "Android'e indirmek için önce indir butonuna basın, sonra açılan yeni sayfada video üzerine basılı tutun, ardından Videoyu indir seçeneğini seçin.", "shortTitle": "İndir / Android", diff --git a/src/assets/locales/zh.json b/src/assets/locales/zh.json index 785193bf..709c2d17 100644 --- a/src/assets/locales/zh.json +++ b/src/assets/locales/zh.json @@ -189,7 +189,6 @@ "disclaimer": "下载内容是直接从内容提供者获取的。movie-web 无法控制下载内容如何被提供。", "downloadCaption": "下载当前字幕", "downloadVideo": "下载视频", - "hlsExplanation": "该媒体为 HLS 流,因此无法从 movie-web 下载。", "onAndroid": { "1": "要从 Android 下载,先点击下载按钮,之后在新的页面上, 点击并按住视频,然后选择 保存。", "shortTitle": "下载 / Android",