diff --git a/app/(auth)/(tabs)/(home,libraries,search,favorites)/collections/[collectionId].tsx b/app/(auth)/(tabs)/(home,libraries,search,favorites)/collections/[collectionId].tsx index c751c1a1..87f316e6 100644 --- a/app/(auth)/(tabs)/(home,libraries,search,favorites)/collections/[collectionId].tsx +++ b/app/(auth)/(tabs)/(home,libraries,search,favorites)/collections/[collectionId].tsx @@ -247,7 +247,7 @@ const page: React.FC = () => { }} set={setSelectedGenres} values={selectedGenres} - title={t("library.headers.genres")} + title={t("library.filters.genres")} renderItemLabel={(item) => item.toString()} searchFilter={(item, search) => item.toLowerCase().includes(search.toLowerCase()) @@ -274,7 +274,7 @@ const page: React.FC = () => { }} set={setSelectedYears} values={selectedYears} - title={t("library.headers.years")} + title={t("library.filters.years")} renderItemLabel={(item) => item.toString()} searchFilter={(item, search) => item.includes(search)} /> @@ -299,7 +299,7 @@ const page: React.FC = () => { }} set={setSelectedTags} values={selectedTags} - title={t("library.headers.tags")} + title={t("library.filters.tags")} renderItemLabel={(item) => item.toString()} searchFilter={(item, search) => item.toLowerCase().includes(search.toLowerCase()) @@ -317,7 +317,7 @@ const page: React.FC = () => { queryFn={async () => sortOptions.map((s) => s.key)} set={setSortBy} values={sortBy} - title={t("library.headers.sort_by")} + title={t("library.filters.sort_by")} renderItemLabel={(item) => sortOptions.find((i) => i.key === item)?.value || "" } @@ -337,7 +337,7 @@ const page: React.FC = () => { queryFn={async () => sortOrderOptions.map((s) => s.key)} set={setSortOrder} values={sortOrder} - title={t("library.headers.sort_order")} + title={t("library.filters.sort_order")} renderItemLabel={(item) => sortOrderOptions.find((i) => i.key === item)?.value || "" } diff --git a/app/(auth)/(tabs)/(home,libraries,search,favorites)/livetv/guide.tsx b/app/(auth)/(tabs)/(home,libraries,search,favorites)/livetv/guide.tsx index 01652b5f..398d74b6 100644 --- a/app/(auth)/(tabs)/(home,libraries,search,favorites)/livetv/guide.tsx +++ b/app/(auth)/(tabs)/(home,libraries,search,favorites)/livetv/guide.tsx @@ -17,6 +17,7 @@ import { View, } from "react-native"; import { useSafeAreaInsets } from "react-native-safe-area-context"; +import { useTranslation } from "react-i18next"; const HOUR_HEIGHT = 30; const ITEMS_PER_PAGE = 20; @@ -177,6 +178,7 @@ const PageButtons: React.FC = ({ onNextPage, isNextDisabled, }) => { + const { t } = useTranslation(); return ( = ({ currentPage === 1 ? "text-gray-500" : "text-white" }`} > - Previous + {t("live_tv.previous")} Page {currentPage} @@ -206,7 +208,7 @@ const PageButtons: React.FC = ({ - Next + {t("live_tv.next")} { if (!api) return [] as BaseItemDto[]; const res = await getLiveTvApi(api).getRecommendedPrograms({ @@ -46,7 +49,7 @@ export default function page() { /> { if (!api) return [] as BaseItemDto[]; const res = await getLiveTvApi(api).getLiveTvPrograms({ @@ -68,7 +71,7 @@ export default function page() { /> { if (!api) return [] as BaseItemDto[]; const res = await getLiveTvApi(api).getLiveTvPrograms({ @@ -86,7 +89,7 @@ export default function page() { /> { if (!api) return [] as BaseItemDto[]; const res = await getLiveTvApi(api).getLiveTvPrograms({ @@ -104,7 +107,7 @@ export default function page() { /> { if (!api) return [] as BaseItemDto[]; const res = await getLiveTvApi(api).getLiveTvPrograms({ @@ -122,7 +125,7 @@ export default function page() { /> { if (!api) return [] as BaseItemDto[]; const res = await getLiveTvApi(api).getLiveTvPrograms({ diff --git a/app/(auth)/(tabs)/(home,libraries,search,favorites)/livetv/recordings.tsx b/app/(auth)/(tabs)/(home,libraries,search,favorites)/livetv/recordings.tsx index 6e3f660e..4068f8a3 100644 --- a/app/(auth)/(tabs)/(home,libraries,search,favorites)/livetv/recordings.tsx +++ b/app/(auth)/(tabs)/(home,libraries,search,favorites)/livetv/recordings.tsx @@ -1,11 +1,13 @@ import { Text } from "@/components/common/Text"; import React from "react"; import { View } from "react-native"; +import { useTranslation } from "react-i18next"; export default function page() { + const { t } = useTranslation(); return ( - Coming soon + {t("live_tv.coming_soon")} ); } diff --git a/app/(auth)/(tabs)/(libraries)/[libraryId].tsx b/app/(auth)/(tabs)/(libraries)/[libraryId].tsx index 45a61a6c..7eac65f9 100644 --- a/app/(auth)/(tabs)/(libraries)/[libraryId].tsx +++ b/app/(auth)/(tabs)/(libraries)/[libraryId].tsx @@ -303,7 +303,7 @@ const Page = () => { }} set={setSelectedGenres} values={selectedGenres} - title={t("library.headers.genres")} + title={t("library.filters.genres")} renderItemLabel={(item) => item.toString()} searchFilter={(item, search) => item.toLowerCase().includes(search.toLowerCase()) @@ -330,7 +330,7 @@ const Page = () => { }} set={setSelectedYears} values={selectedYears} - title={t("library.headers.years")} + title={t("library.filters.years")} renderItemLabel={(item) => item.toString()} searchFilter={(item, search) => item.includes(search)} /> @@ -355,7 +355,7 @@ const Page = () => { }} set={setSelectedTags} values={selectedTags} - title={t("library.headers.tags")} + title={t("library.filters.tags")} renderItemLabel={(item) => item.toString()} searchFilter={(item, search) => item.toLowerCase().includes(search.toLowerCase()) @@ -373,7 +373,7 @@ const Page = () => { queryFn={async () => sortOptions.map((s) => s.key)} set={setSortBy} values={sortBy} - title={t("library.headers.sort_by")} + title={t("library.filters.sort_by")} renderItemLabel={(item) => sortOptions.find((i) => i.key === item)?.value || "" } @@ -393,7 +393,7 @@ const Page = () => { queryFn={async () => sortOrderOptions.map((s) => s.key)} set={setSortOrder} values={sortOrder} - title={t("library.headers.sort_order")} + title={t("library.filters.sort_order")} renderItemLabel={(item) => sortOrderOptions.find((i) => i.key === item)?.value || "" } diff --git a/components/vlc/VideoDebugInfo.tsx b/components/vlc/VideoDebugInfo.tsx index 852dcc2f..8a37659a 100644 --- a/components/vlc/VideoDebugInfo.tsx +++ b/components/vlc/VideoDebugInfo.tsx @@ -45,19 +45,19 @@ export const VideoDebugInfo: React.FC = ({ playerRef, ...props }) => { }} {...props} > - {t("item_card.playback_state")} - {t("item_card.audio_tracks")} + {t("player.playback_state")} + {t("player.audio_tracks")} {audioTracks && audioTracks.map((track, index) => ( - {track.name} ({t("item_card.index")} {track.index}) + {track.name} ({t("player.index")} {track.index}) ))} - {t("item_card.subtitles_tracks")} + {t("player.subtitles_tracks")} {subtitleTracks && subtitleTracks.map((track, index) => ( - {track.name} ({t("item_card.index")} {track.index}) + {track.name} ({t("player.index")} {track.index}) ))} = ({ playerRef, ...props }) => { } }} > - {t("item_card.refresh_tracks")} + {t("player.refresh_tracks")} ); diff --git a/translations/en.json b/translations/en.json index b88f67e1..1dae952c 100644 --- a/translations/en.json +++ b/translations/en.json @@ -242,7 +242,7 @@ "show_titles": "Show titles", "show_stats": "Show stats" }, - "headers": { + "filters": { "genres": "Genres", "years": "Years", "sort_by": "Sort By", @@ -272,7 +272,13 @@ "message_from_server": "Message from server: {{message}}", "video_has_finished_playing": "Video has finished playing!", "no_video_source": "No video source...", - "next_episode": "Next Episode" + "next_episode": "Next Episode", + "refresh_tracks": "Refresh Tracks", + "subtitle_tracks": "Subtitle Tracks:", + "audio_tracks": "Audio Tracks:", + "playback_state": "Playback State:", + "no_data_available": "No data available", + "index": "Index:" }, "item_card": { "next_up": "Next up", @@ -298,12 +304,6 @@ "x_albums": "{{count}} albums", "artists": "Artists", "could_not_load_item": "Could not load item", - "refresh_tracks": "Refresh Tracks", - "subtitle_tracks": "Subtitle Tracks:", - "audio_tracks": "Audio Tracks:", - "playback_state": "Playback State:", - "no_data_available": "No data available", - "index": "Index:", "download": { "download_season": "Download Season", "download_x_item": "Download {{item_count}} items", @@ -312,6 +312,18 @@ "using_default_method": "Using default method" } }, + "live_tv": { + "next": "Next", + "previous": "Previous", + "live_tv": "Live TV", + "coming_soon": "Coming soon", + "on_now": "On now", + "shows": "Shows", + "movies": "Movies", + "sports": "Sports", + "for_kids": "For Kids", + "news": "News" + }, "jellyseerr":{ "confirm": "Confirm", "cancel": "Cancel", diff --git a/translations/fr.json b/translations/fr.json index 16875f66..24f22f83 100644 --- a/translations/fr.json +++ b/translations/fr.json @@ -24,7 +24,6 @@ "clear_button": "Effacer" }, "home": { - "home": "Accueil", "no_internet": "Pas d'Internet", "no_items": "Aucun item", "no_internet_message": "Aucun problème, vous pouvez toujours regarder\nle contenu téléchargé.", @@ -243,7 +242,7 @@ "show_titles": "Afficher les titres", "show_stats": "Afficher les statistiques" }, - "headers": { + "filters": { "genres": "Genres", "years": "Années", "sort_by": "Trier par", @@ -273,7 +272,13 @@ "message_from_server": "Message du serveur: {{message}}", "video_has_finished_playing": "La vidéo a fini de jouer!", "no_video_source": "Aucune source vidéo...", - "next_episode": "Épisode suivant" + "next_episode": "Épisode suivant", + "refresh_tracks": "Rafraîchir les pistes", + "subtitle_tracks": "Pistes de sous-titres:", + "audio_tracks": "Pistes audio:", + "playback_state": "État de lecture:", + "no_data_available": "Aucune donnée disponible", + "index": "Index:" }, "item_card": { "next_up": "À suivre", @@ -299,12 +304,6 @@ "x_albums": "{{count}} albums", "artists": "Artistes", "could_not_load_item": "Impossible de charger l'item", - "refresh_tracks": "Rafraîchir les pistes", - "subtitle_tracks": "Pistes de sous-titres:", - "audio_tracks": "Pistes audio:", - "playback_state": "État de lecture:", - "no_data_available": "Aucune donnée disponible", - "index": "Index:", "download": { "download_season": "Télécharger la saison", "download_x_item": "Télécharger {{item_count}} items", @@ -313,6 +312,18 @@ "using_default_method": "Avec la méthode par défaut" } }, + "live_tv": { + "next": "Suivant", + "previous": "Précédent", + "live_tv": "TV en direct", + "coming_soon": "Bientôt", + "on_now": "En ce moment", + "shows": "Émissions", + "movies": "Films", + "sports": "Sports", + "for_kids": "Pour enfants", + "news": "Actualités" + }, "jellyseerr":{ "confirm": "Confirmer", "cancel": "Annuler",