From ab4f9ea141da55cce0f665b96c62e2547234b2cc Mon Sep 17 00:00:00 2001 From: Pas <74743263+Pasithea0@users.noreply.github.com> Date: Sat, 5 Apr 2025 23:17:29 -0600 Subject: [PATCH] add discover translation keys --- src/assets/locales/en.json | 39 +++++++++++++++++++ src/pages/discover/Discover.tsx | 4 +- .../discover/components/MediaCarousel.tsx | 37 ++++++++++++------ .../discover/components/RandomMovieButton.tsx | 13 +++++-- .../discover/components/ScrollToTopButton.tsx | 4 +- src/pages/discover/discoverContent.tsx | 8 ++-- 6 files changed, 82 insertions(+), 23 deletions(-) diff --git a/src/assets/locales/en.json b/src/assets/locales/en.json index 8d1390d7..b7b8eba2 100644 --- a/src/assets/locales/en.json +++ b/src/assets/locales/en.json @@ -767,5 +767,44 @@ "textBoldLabel": "Bold text" }, "unsaved": "You have unsaved changes... ฅ^•ﻌ•^ฅ" + }, + "discover": { + "tabs": { + "movies": "Movies", + "tvshows": "TV Shows", + "editorpicks": "Editor Picks" + }, + "carousel": { + "title": { + "movies": "{{category}} Movies", + "tvshows": "{{category}} Shows", + "inCinemas": "In Cinemas", + "popularOn": "Popular {{type}} on {{provider}}", + "editorPicks": "Editor Picks" + } + }, + "providers": { + "netflix": "Netflix", + "appleTv": "Apple TV+", + "amazonPrime": "Amazon Prime Video", + "hulu": "Hulu", + "max": "Max", + "paramountPlus": "Paramount Plus", + "disneyPlus": "Disney Plus", + "shudder": "Shudder", + "fubuTV": "fubuTV" + }, + "randomMovie": { + "button": "Watch Something Random", + "cancel": "Cancel Countdown", + "countdown": "{{countdown}}s", + "nowPlaying": "Now Playing", + "in": "in" + }, + "page": { + "title": "Discover Movies & TV", + "subtitle": "Explore the latest hits and timeless classics." + }, + "scrollToTop": "Back to top" } } diff --git a/src/pages/discover/Discover.tsx b/src/pages/discover/Discover.tsx index 40bc87ac..1ac2e7b2 100644 --- a/src/pages/discover/Discover.tsx +++ b/src/pages/discover/Discover.tsx @@ -36,10 +36,10 @@ export function Discover() { backgroundImage: `linear-gradient(to right, rgba(var(--colors-buttons-purpleHover)), rgba(var(--colors-progress-filled)))`, }} > - {t("global.pages.discover")} Movies & TV + {t("discover.page.title")}
- Explore the latest hits and timeless classics. + {t("discover.page.subtitle")}
diff --git a/src/pages/discover/components/MediaCarousel.tsx b/src/pages/discover/components/MediaCarousel.tsx index ff5e9c32..c0515702 100644 --- a/src/pages/discover/components/MediaCarousel.tsx +++ b/src/pages/discover/components/MediaCarousel.tsx @@ -1,3 +1,5 @@ +import { useTranslation } from "react-i18next"; + import { MediaCard } from "@/components/media/MediaCard"; import { Media } from "@/pages/discover/common"; @@ -31,6 +33,7 @@ export function MediaCarousel({ isMobile, carouselRefs, }: MediaCarouselProps) { + const { t } = useTranslation(); const categorySlug = category.toLowerCase().replace(/[^a-z0-9]+/g, "-"); const browser = !!window.chrome; let isScrolling = false; @@ -57,18 +60,30 @@ export function MediaCarousel({ categoryName: string, isTVShowCondition: boolean, ): string { - switch (categoryName) { - case "Now Playing": - return "In Cinemas"; - case categoryName.match(/^Popular (Movies|Shows) on .+/)?.input: - return categoryName; - default: - return categoryName.endsWith("Movie") - ? `${categoryName}s` - : isTVShowCondition - ? `${categoryName} Shows` - : `${categoryName} Movies`; + const providerMatch = categoryName.match( + /^Popular (Movies|Shows) on (.+)$/, + ); + if (providerMatch) { + const type = providerMatch[1].toLowerCase(); + const provider = providerMatch[2]; + return t("discover.carousel.title.popularOn", { + type: + type === "movies" ? t("media.types.movie") : t("media.types.show"), + provider, + }); } + + if (categoryName === "Now Playing") { + return t("discover.carousel.title.inCinemas"); + } + + if (categoryName === "Editor Picks") { + return t("discover.carousel.title.editorPicks"); + } + + return isTVShowCondition + ? t("discover.carousel.title.tvshows", { category: categoryName }) + : t("discover.carousel.title.movies", { category: categoryName }); } const displayCategory = getDisplayCategory(category, isTVShow); diff --git a/src/pages/discover/components/RandomMovieButton.tsx b/src/pages/discover/components/RandomMovieButton.tsx index aa054c0b..a11b8919 100644 --- a/src/pages/discover/components/RandomMovieButton.tsx +++ b/src/pages/discover/components/RandomMovieButton.tsx @@ -1,4 +1,5 @@ import React from "react"; +import { useTranslation } from "react-i18next"; import { Icon, Icons } from "@/components/Icon"; @@ -13,6 +14,8 @@ export function RandomMovieButton({ onClick, randomMovieTitle, }: RandomMovieButtonProps) { + const { t } = useTranslation(); + return (- Now Playing {randomMovieTitle} in{" "} - {countdown} + {t("discover.randomMovie.nowPlaying")}{" "} + {randomMovieTitle}{" "} + {t("discover.randomMovie.in")}{" "} + {t("discover.randomMovie.countdown", { countdown })}