diff --git a/_locales/de/messages.json b/_locales/de/messages.json index ec3197e..a695ccd 100644 --- a/_locales/de/messages.json +++ b/_locales/de/messages.json @@ -135,6 +135,8 @@ "lang_es": { "message": "Spanisch" }, "lang_fr": { "message": "Französisch" }, "lang_de": { "message": "Deutsch" }, + "lang_it": { "message": "Italienisch" }, +_pt": { "message": "Portugiesisch" }, "essentialFeaturesNotSupported": { "message": "Dein Browser unterstützt wesentliche Funktionen nicht." }, "dbAccessError": { "message": "Fehler beim Zugriff auf die lokale Datenbank." }, "dbUpdateNeeded": { "message": "Die Datenbank muss aktualisiert werden, bitte lade die Seite neu." }, diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 0f0a19a..faa49c6 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -135,6 +135,8 @@ "lang_es": { "message": "Spanish" }, "lang_fr": { "message": "French" }, "lang_de": { "message": "German" }, + "lang_it": { "message": "Italian" }, + "lang_pt": { "message": "Portuguese" }, "essentialFeaturesNotSupported": { "message": "Your browser does not support essential features." }, "dbAccessError": { "message": "Error accessing the local database." }, "dbUpdateNeeded": { "message": "The database needs to be updated, please reload the page." }, diff --git a/_locales/es/messages.json b/_locales/es/messages.json index a79b510..895ba4c 100644 --- a/_locales/es/messages.json +++ b/_locales/es/messages.json @@ -135,6 +135,8 @@ "lang_es": { "message": "Español" }, "lang_fr": { "message": "Francés" }, "lang_de": { "message": "Alemán" }, + "lang_it": { "message": "Italiano" }, + "lang_pt": { "message": "Portugués" }, "essentialFeaturesNotSupported": { "message": "Tu navegador no soporta funciones esenciales." }, "dbAccessError": { "message": "Error al acceder a la base de datos local." }, "dbUpdateNeeded": { "message": "La base de datos necesita actualizarse, por favor recarga la página." }, diff --git a/_locales/fr/messages.json b/_locales/fr/messages.json index 8d36b22..4575828 100644 --- a/_locales/fr/messages.json +++ b/_locales/fr/messages.json @@ -135,6 +135,8 @@ "lang_es": { "message": "Espagnol" }, "lang_fr": { "message": "Français" }, "lang_de": { "message": "Allemand" }, + "lang_it": { "message": "Italien" }, + "lang_pt": { "message": "Portugais" }, "essentialFeaturesNotSupported": { "message": "Votre navigateur ne prend pas en charge les fonctionnalités essentielles." }, "dbAccessError": { "message": "Erreur d'accès à la base de données locale." }, "dbUpdateNeeded": { "message": "La base de données doit être mise à jour, veuillez recharger la page." }, diff --git a/_locales/it/messages.json b/_locales/it/messages.json new file mode 100644 index 0000000..bf13777 --- /dev/null +++ b/_locales/it/messages.json @@ -0,0 +1,290 @@ +{ + "appName": { "message": "CinePlex" }, + "appDescription": { "message": "Analizza i server Plex per trovare contenuti e li visualizza nell'interfaccia" }, + "appTagline": { "message": "Film, Serie TV e Musica" }, + "appLocaleCode": { "message": "it-IT" }, + "toggleNavigation": { "message": "Mostra/Nascondi Navigazione" }, + "searchPlaceholder": { "message": "Cerca film o serie TV..." }, + "openMusicPlayer": { "message": "Apri Lettore Musicale" }, + "settings": { "message": "Impostazioni" }, + "navMovies": { "message": "Film" }, + "navSeries": { "message": "Serie TV" }, + "navPhotos": { "message": "Foto" }, + "navStats": { "message": "Statistiche" }, + "navFavorites": { "message": "Preferiti" }, + "navHistory": { "message": "Cronologia" }, + "navRecommendations": { "message": "Consigliati" }, + "navMusic": { "message": "Musica" }, + "heroWelcome": { "message": "Benvenuto su CinePlex" }, + "heroSubtitle": { "message": "Esplora migliaia di film e serie TV." }, + "addStream": { "message": "Aggiungi Stream" }, + "moreInfo": { "message": "Più informazioni" }, + "popularMovies": { "message": "Film Popolari" }, + "allGenres": { "message": "Tutti i Generi" }, + "allYears": { "message": "Tutti gli Anni" }, + "sortPopular": { "message": "Più Popolari" }, + "sortTopRated": { "message": "Più Votati" }, + "sortRecent": { "message": "Più Recenti" }, + "loadMore": { "message": "Carica Altri" }, + "photosBreadcrumbHome": { "message": "Album" }, + "selectServer": { "message": "Seleziona un server" }, + "loading": { "message": "Caricamento in corso..." }, + "photosEmptyState": { "message": "Nessun album o foto trovati." }, + "photosEmptyStateSub": { "message": "Seleziona un server o assicurati di avere una libreria di foto su Plex." }, + "statsTitle": { "message": "Statistiche della Libreria" }, + "statsAllTokens": { "message": "Tutti i Token" }, + "statsAnalyzing": { "message": "Analisi della tua libreria in corso..." }, + "statsActiveTokens": { "message": "Token Attivi" }, + "statsServersFound": { "message": "Server Trovati" }, + "statsUniqueMovies": { "message": "Film Unici" }, + "statsUniqueSeries": { "message": "Serie TV Uniche" }, + "statsUniqueArtists": { "message": "Artisti Unici" }, + "statsTokenServers": { "message": "Server del Token" }, + "statsChartMoviesByGenre": { "message": "Contenuti per Genere (Film)" }, + "statsChartSeriesByGenre": { "message": "Contenuti per Genere (Serie TV)" }, + "statsChartByDecade": { "message": "Contenuti per Decennio" }, + "recommendationsTitle": { "message": "Consigliati per Te" }, + "historyTitle": { "message": "Cronologia di Visione" }, + "clearHistory": { "message": "Cancella Tutto" }, + "consoleTitle": { "message": "Console di Scansione Plex" }, + "footerCredit": { "message": "Un'interfaccia per il tuo universo Plex." }, + "backButton": { "message": "Indietro" }, + "closeTrailer": { "message": "Chiudi trailer" }, + "close": { "message": "Chiudi" }, + "photoViewer": { "message": "Visualizzatore Foto" }, + "previous": { "message": "Precedente" }, + "next": { "message": "Successivo" }, + "notificationTemplateText": { "message": "Notifica" }, + "settingsTitleFull": { "message": "Impostazioni e Configurazione" }, + "settingsTabGeneral": { "message": "Generale" }, + "settingsTabPlex": { "message": "Plex" }, + "settingsTabPhpGen": { "message": "Generatore PHP" }, + "settingsTabData": { "message": "Dati" }, + "settingsApiServer": { "message": "Configurazione API e Server" }, + "settingsTmdbApiLabel": { "message": "Chiave API TMDB (Opzionale)" }, + "settingsTmdbApiPlaceholder": { "message": "Verrà usata la chiave predefinita se lasciato vuoto" }, + "settingsTmdbLangLabel": { "message": "Lingua per TMDB e Interfaccia" }, + "settingsPhpUrlLabel": { "message": "URL del server per aggiungere gli stream" }, + "settingsPhpUrlPlaceholder": { "message": "https://tuo-server.com/percorso/dello/script.php" }, + "settingsInterface": { "message": "Interfaccia" }, + "settingsLightTheme": { "message": "Modalità Chiara" }, + "settingsShowHero": { "message": "Mostra sezione di benvenuto 'Hero'" }, + "settingsScanContent": { "message": "Scansione Contenuti" }, + "settingsScanDesc": { "message": "Seleziona cosa scansionare e premi il pulsante." }, + "settingsScanMovies": { "message": "Film" }, + "settingsScanShows": { "message": "Serie TV" }, + "settingsScanArtists": { "message": "Musica" }, + "settingsScanPhotos": { "message": "Foto" }, + "settingsSelectAll": { "message": "Seleziona Tutto" }, + "settingsStartScan": { "message": "Avvia Scansione" }, + "settingsPlexTokens": { "message": "Token Plex" }, + "settingsPlexTokensDesc": { "message": "Modifica la lista dei token Plex (formato JSON)." }, + "settingsSaveTokens": { "message": "Salva Token" }, + "settingsPhpGenTitle": { "message": "Generatore di Script PHP per Server" }, + "settingsPhpFileOptions": { "message": "Opzioni File" }, + "settingsPhpSavePathLabel": { "message": "Percorso di salvataggio sul server" }, + "settingsPhpSavePathPlaceholder": { "message": "Es: /var/www/html/lists (vuoto per la stessa cartella)" }, + "settingsPhpFilenameLabel": { "message": "Nome file" }, + "settingsPhpFileAction": { "message": "Azione sul file" }, + "settingsPhpActionAppend": { "message": "Aggiungi alla fine del file (cumulativo)" }, + "settingsPhpActionOverwrite": { "message": "Sovrascrivi il file (ricomincia da capo)" }, + "settingsPhpSecurity": { "message": "Sicurezza (Opzionale)" }, + "settingsPhpUseSecretKey": { "message": "Usa chiave segreta (Consigliato)" }, + "settingsPhpSecretKeyPlaceholder": { "message": "Inserisci una chiave segreta sicura" }, + "settingsPhpGeneratedCode": { "message": "Codice Generato" }, + "settingsPhpGeneratedPlaceholder": { "message": "Il codice PHP generato apparirà qui." }, + "settingsGenerateScript": { "message": "Genera Script" }, + "settingsCopyScript": { "message": "Copia Script" }, + "settingsDataManagement": { "message": "Gestione Database Locale" }, + "settingsImportDb": { "message": "Importa DB da File" }, + "settingsExportDb": { "message": "Esporta DB su File" }, + "settingsClearContent": { "message": "Cancella Dati Locali dei Contenuti" }, + "settingsClearContentDesc": { "message": "Questa azione eliminerà film, serie TV e musica dal database locale, ma non influenzerà i tuoi preferiti o le impostazioni." }, + "settingsClose": { "message": "Chiudi" }, + "settingsSave": { "message": "Salva Impostazioni" }, + "musicSidenavTitle": { "message": "Musica Plex" }, + "musicAllServers": { "message": "Tutti i Server" }, + "musicSearchArtistPlaceholder": { "message": "Cerca artista..." }, + "musicSearchDiscographyPlaceholder": { "message": "Cerca nella discografia..." }, + "musicNothingPlaying": { "message": "Nessuna riproduzione in corso" }, + "musicSelectSong": { "message": "Seleziona un brano" }, + "musicToStart": { "message": "per avviare la riproduzione" }, + "miniplayerDownloadSong": { "message": "Scarica brano" }, + "miniplayerDownloadAlbum": { "message": "Scarica album M3U" }, + "miniplayerVolume": { "message": "Volume" }, + "miniplayerShuffle": { "message": "Riproduzione Casuale" }, + "miniplayerEqualizer": { "message": "Equalizzatore" }, + "miniplayerOpenList": { "message": "Apri lista" }, + "eqTitle": { "message": "Equalizzatore Grafico" }, + "eqPresetsLabel": { "message": "Preimpostazioni" }, + "eqPresetFlat": { "message": "Piatto" }, + "eqPresetRock": { "message": "Rock" }, + "eqPresetPop": { "message": "Pop" }, + "eqPresetJazz": { "message": "Jazz" }, + "eqPresetClassical": { "message": "Classica" }, + "eqPresetBassBoost": { "message": "Aumento Bassi" }, + "eqPreampLabel": { "message": "Pre-Amp" }, + "infoModalTitle": { "message": "Informazioni" }, + "infoModalFieldTitle": { "message": "Titolo:" }, + "infoModalFieldArtist": { "message": "Artista:" }, + "infoModalFieldAlbum": { "message": "Album:" }, + "infoModalFieldSong": { "message": "Brano:" }, + "infoModalFieldYear": { "message": "Anno:" }, + "infoModalFieldGenre": { "message": "Genere:" }, + "lang_en": { "message": "Inglese" }, + "lang_es": { "message": "Spagnolo" }, + "lang_fr": { "message": "Francese" }, + "lang_de": { "message": "Tedesco" }, + "lang_it": { "message": "Italiano" }, + "lang_pt": { "message": "Portoghese" }, + "essentialFeaturesNotSupported": { "message": "Il tuo browser non supporta le funzionalità essenziali." }, + "dbAccessError": { "message": "Errore di accesso al database locale." }, + "dbUpdateNeeded": { "message": "Il database deve essere aggiornato, si prega di ricaricare la pagina." }, + "dbBlocked": { "message": "Per continuare, chiudi le altre schede di questa applicazione." }, + "deletingContentData": { "message": "Cancellazione dei dati locali dei contenuti in corso..." }, + "noContentDataToDelete": { "message": "Nessun dato di contenuto da cancellare." }, + "contentDataDeleted": { "message": "Dati dei contenuti cancellati da IndexedDB." }, + "errorDeletingData": { "message": "Errore durante la cancellazione dei dati: $message$", "placeholders": { "message": { "content": "$1" } } }, + "aceEditorNotAvailable": { "message": "Editor di testo non disponibile." }, + "errorLoadingTokens": { "message": "Errore nel caricamento dei token nell'editor." }, + "errorLoadingTokensMessage": { "message": "Errore nel caricamento dei token: $message$", "placeholders": { "message": { "content": "$1" } } }, + "aceEditorNotAvailableToSave": { "message": "Editor non disponibile per il salvataggio." }, + "invalidJsonFormat": { "message": "Formato JSON non valido. Deve essere { \"tokens\": [...] }" }, + "tokensSaved": { "message": "Token salvati con successo." }, + "errorSavingTokens": { "message": "Errore nel salvataggio dei token: $message$", "placeholders": { "message": { "content": "$1" } } }, + "dbNotAvailable": { "message": "IndexedDB non è disponibile." }, + "dbExported": { "message": "Database esportato con successo." }, + "errorExportingDb": { "message": "Errore durante l'esportazione del database: $message$", "placeholders": { "message": { "content": "$1" } } }, + "invalidJsonFile": { "message": "Il file non contiene un oggetto JSON valido." }, + "noDataToImport": { "message": "Il file non contiene dati per le sezioni correnti del DB." }, + "dbImported": { "message": "Database importato con successo." }, + "errorImportingDb": { "message": "Errore durante l'importazione del database: $message$", "placeholders": { "message": { "content": "$1" } } }, + "updatingView": { "message": "Aggiornamento della vista con i nuovi dati in corso..." }, + "confirmClearContent": { "message": "Sei sicuro di voler cancellare i dati locali dei contenuti (Film, Serie TV, Musica, ecc.)? Preferiti e Impostazioni NON verranno eliminati." }, + "trailerNotFound": { "message": "Nessun trailer trovato per questo titolo." }, + "confirmClearHistory": { "message": "Sei sicuro di voler cancellare tutta la cronologia di visione? Questa azione non può essere annullata." }, + "historyCleared": { "message": "Cronologia di visione cancellata." }, + "historyItemDeleted": { "message": "Elemento cancellato dalla cronologia." }, + "errorGeneratingScript": { "message": "Prima genera uno script per poterlo copiare." }, + "scriptCopied": { "message": "Script PHP copiato negli appunti." }, + "errorCopyingScript": { "message": "Errore durante la copia dello script." }, + "scriptGenerated": { "message": "Script PHP generato." }, + "errorLoadingAlbum": { "message": "Errore nel caricamento dell'album: $message$", "placeholders": { "message": { "content": "$1" } } }, + "noPhotoServerSelected": { "message": "Errore: Nessun server di foto è stato selezionato." }, + "loadingGenres": { "message": "Caricamento generi in corso..." }, + "errorLoadingGenres": { "message": "Errore nel caricamento" }, + "noContentFound": { "message": "Nessun risultato trovato." }, + "couldNotLoadContent": { "message": "Impossibile caricare il contenuto." }, + "noFavorites": { "message": "Non hai ancora nessun preferito." }, + "errorLoadingFavorites": { "message": "Errore nel caricamento dei preferiti." }, + "historyEmpty": { "message": "La tua cronologia è vuota." }, + "historyEmptySub": { "message": "Sfoglia e guarda contenuti perché appaiano qui." }, + "errorGeneratingRecommendations": { "message": "Errore nella generazione dei consigliati." }, + "noRecommendations": { "message": "Dobbiamo conoscerti meglio per darti dei consigli!" }, + "errorGeneratingStats": { "message": "Errore nella generazione delle statistiche." }, + "noServersForToken": { "message": "Nessun server associato trovato per questo token." }, + "searchingActorContent": { "message": "Ricerca dei contenuti di $actorName$ in corso", "placeholders": { "actorName": { "content": "$1" } } }, + "errorLoadingActorContent": { "message": "Impossibile caricare i contenuti di $actorName$.", "placeholders": { "actorName": { "content": "$1" } } }, + "errorAddingStream": { "message": "Errore nell'aggiungere stream: $message$", "placeholders": { "message": { "content": "$1" } } }, + "phpUrlNotConfigured": { "message": "L'URL del server PHP non è configurato. Per favore, impostalo nelle Impostazioni." }, + "searchingStreams": { "message": "Ricerca di stream per \"$title$\" in corso...", "placeholders": { "title": { "content": "$1" } } }, + "sendingStreams": { "message": "Invio di $count$ stream al server in corso...", "placeholders": { "count": { "content": "$1" } } }, + "streamAddedSuccess": { "message": "Stream aggiunti con successo." }, + "generatingM3U": { "message": "Generazione M3U per \"$title$\" in corso...", "placeholders": { "title": { "content": "$1" } } }, + "m3uDownloaded": { "message": "M3U per \"$title$\" scaricato.", "placeholders": { "title": { "content": "$1" } } }, + "errorGeneratingM3U": { "message": "Errore nella generazione dell'M3U: $message$", "placeholders": { "message": { "content": "$1" } } }, + "settingsSavedSuccess": { "message": "Impostazioni salvate con successo." }, + "errorSavingSettings": { "message": "Errore nel salvataggio delle impostazioni nel database." }, + "languageChangeReload": { "message": "Lingua cambiata. L'applicazione verrà ora ricaricata." }, + "addedToFavorites": { "message": "Aggiunto ai preferiti." }, + "removedFromFavorites": { "message": "Rimosso dai preferiti." }, + "plexScanInProgress": { "message": "Scansione Plex già in corso." }, + "plexScanStarting": { "message": "Avvio scansione Plex in corso..." }, + "noPlexTokens": { "message": "Nessun token Plex configurato." }, + "clearingSections": { "message": "Pulizia sezioni: $sections$", "placeholders": { "sections": { "content": "$1" } } }, + "sectionsCleared": { "message": "Sezioni pulite." }, + "tokenFoundServers": { "message": "Token $token$... ha trovato $count$ server.", "placeholders": { "token": { "content": "$1" }, "count": { "content": "$2" } } }, + "errorProcessingToken": { "message": "Errore nell'elaborazione del token $token$...: $message$", "placeholders": { "token": { "content": "$1" }, "message": { "content": "$2" } } }, + "initialScanPhaseComplete": { "message": "Fase di scansione iniziale completata." }, + "retryPhaseFinished": { "message": "Fase di nuovo tentativo terminata." }, + "plexScanFinished": { "message": "Scansione Plex terminata. Aggiornamento dei contenuti in corso..." }, + "plexScanFatalError": { "message": "ERRORE FATALE: $message$", "placeholders": { "message": { "content": "$1" } } }, + "errorDuringScan": { "message": "Errore durante la scansione: $message$", "placeholders": { "message": { "content": "$1" } } }, + "scanCancelled": { "message": "Scansione annullata dall'utente." }, + "scanCancelledInfo": { "message": "Scansione annullata." }, + "retyingSection": { "message": "Nuovo tentativo per la sezione \"$title$\"...", "placeholders": { "title": { "content": "$1" } } }, + "retrySuccess": { "message": "[SUCCESSO] Nuovo tentativo per \"$title$\" completato.", "placeholders": { "title": { "content": "$1" } } }, + "retryError": { "message": "[ERRORE FINALE] Nuovo tentativo fallito per \"$title$\": $message$", "placeholders": { "title": { "content": "$1" }, "message": { "content": "$2" } } }, + "noRetriesPending": { "message": "Nessun nuovo tentativo in sospeso." }, + "startingRetryPhase": { "message": "Avvio fase di nuovo tentativo per $count$ sezioni...", "placeholders": { "count": { "content": "$1" } } }, + "retryPhaseCancelled": { "message": "Fase di nuovo tentativo annullata." }, + "errorInitializingMusicPlayer": { "message": "Errore durante l'inizializzazione del lettore musicale." }, + "criticalErrorLoadingMusic": { "message": "Errore critico nel caricamento dei dati musicali." }, + "errorLoadingArtists": { "message": "Errore nel caricamento degli artisti." }, + "dbUnavailableError": { "message": "Errore: Database non disponibile." }, + "updatingMusicData": { "message": "Aggiornamento dati musicali in corso..." }, + "musicDataUpdated": { "message": "Dati musicali aggiornati." }, + "errorFetchingArtistSongs": { "message": "Errore nel recupero dei brani dell'artista." }, + "errorLoadingSongs": { "message": "Errore nel caricamento dei brani." }, + "noArtistsFound": { "message": "Nessun artista trovato." }, + "artistsCounter": { "message": "$start$-$end$ di $total$", "placeholders": { "start": { "content": "$1" }, "end": { "content": "$2" }, "total": { "content": "$3" } } }, + "artistsCounterSingle": { "message": "$total$ Artisti", "placeholders": { "total": { "content": "$1" } } }, + "artistsCounterLoading": { "message": "Caricamento..." }, + "noSongsFound": { "message": "Nessun brano trovato." }, + "shuffleOn": { "message": "Modalità riproduzione casuale attivata." }, + "shuffleOff": { "message": "Modalità riproduzione casuale disattivata." }, + "downloadingSong": { "message": "Avvio download di \"$title$\"...", "placeholders": { "title": { "content": "$1" } } }, + "songDownloaded": { "message": "\"$title$\" scaricato.", "placeholders": { "title": { "content": "$1" } } }, + "errorDownloadingSong": { "message": "Errore durante il download di \"$title$\"", "placeholders": { "title": { "content": "$1" } } }, + "generatingAlbumM3U": { "message": "Generazione M3U per \"$artist$\"...", "placeholders": { "artist": { "content": "$1" } } }, + "albumM3UGenerated": { "message": "M3U per l'album \"$artist$\" generato.", "placeholders": { "artist": { "content": "$1" } } }, + "playbackError": { "message": "Errore di riproduzione" }, + "errorLabel": { "message": "Errore" }, + "reloadingPage": { "message": "Ricaricamento pagina in corso..." }, + "viewed": { "message": "Visto" }, + "local": { "message": "Locale" }, + "topRatedSort": {"message": "Più Votati"}, + "recentSort": {"message": "Recenti"}, + "popularSort": {"message": "Popolari"}, + "moviesSectionTitle": {"message": "Film"}, + "seriesSectionTitle": {"message": "Serie TV"}, + "searchResultsFor": {"message": "Risultati per \"$query$\"", "placeholders": {"query": {"content": "$1"}}}, + "contentFrom": {"message": "Contenuti di $actor$", "placeholders": {"actor": {"content": "$1"}}}, + "explore": {"message": "Esplora"}, + "noGenre": {"message": "Senza Categoria"}, + "synopsis": {"message": "Sinossi"}, + "noSynopsis": {"message": "Nessuna sinossi disponibile."}, + "director": {"message": "Regista:"}, + "writer": {"message": "Sceneggiatore:"}, + "viewOnImdb": {"message": "Vedi su IMDb"}, + "watchTrailer": {"message": "Guarda Trailer"}, + "addToFavorites": {"message": "Aggiungi ai preferiti"}, + "removeFromFavorites": {"message": "Rimuovi dai preferiti"}, + "notAvailable": {"message": "Non Disponibile"}, + "mainCast": {"message": "Cast Principale"}, + "seasonsAndEpisodes": {"message": "Stagioni ed Episodi"}, + "similarContent": {"message": "Contenuti Simili"}, + "episodesCount": {"message": "$count$ Episodi", "placeholders": {"count": {"content": "$1"}}}, + "seasonsCount": {"message": "$count$ Stagioni", "placeholders": {"count": {"content": "$1"}}}, + "runtimeMinutes": {"message": "$count$ min", "placeholders": {"count": {"content": "$1"}}}, + "noTrailerFound": {"message": "Nessun trailer trovato per questo titolo."}, + "fatalInitError": {"message": "Errore Fatale di Inizializzazione"}, + "fatalInitErrorSub": {"message": "Impossibile caricare l'applicazione."}, + "invalidStreamInfo": {"message": "Informazioni non valide."}, + "dbUnavailableForStreams": {"message": "Database locale non disponibile."}, + "noPlexServersForStreams": {"message": "Nessun server Plex."}, + "notFoundOnServers": {"message": "\"$query$\" non trovato sui server.", "placeholders": {"query": {"content": "$1"}}}, + "relativeTime_justNow": { "message": "Poco fa" }, + "relativeTime_minutesAgo": { "message": "$count$ minuti fa", "placeholders": { "count": { "content": "$1" } } }, + "relativeTime_hoursAgo": { "message": "$count$ ore fa", "placeholders": { "count": { "content": "$1" } } }, + "relativeTime_yesterday": { "message": "Ieri" }, + "relativeTime_daysAgo": { "message": "$count$ giorni fa", "placeholders": { "count": { "content": "$1" } } }, + "errorLoadingDetails": { "message": "Errore nel Caricamento dei Dettagli" }, + "errorLoadingLocalContent": { "message": "Errore nel caricamento del contenuto locale." }, + "errorServerResponse": { "message": "Risposta non riuscita dal server." }, + "errorPlexApi": { "message": "Errore $status$ dall'API di Plex.", "placeholders": { "status": { "content": "$1" } } }, + "errorParsingPlexXml": { "message": "Errore nell'analisi dell'XML di Plex." }, + "untitled": { "message": "Senza titolo" }, + "itemCount": { "message": "$count$ elementi", "placeholders": { "count": { "content": "$1" } } }, + "noPhotoServers": { "message": "Nessun server di foto" } +} \ No newline at end of file diff --git a/_locales/pt/messages.json b/_locales/pt/messages.json new file mode 100644 index 0000000..937b5d1 --- /dev/null +++ b/_locales/pt/messages.json @@ -0,0 +1,290 @@ +{ + "appName": { "message": "CinePlex" }, + "appDescription": { "message": "Analisa servidores Plex para encontrar conteúdo e o exibe na interface" }, + "appTagline": { "message": "Filmes, Séries e Música" }, + "appLocaleCode": { "message": "pt-BR" }, + "toggleNavigation": { "message": "Alternar Navegação" }, + "searchPlaceholder": { "message": "Pesquisar filmes ou séries..." }, + "openMusicPlayer": { "message": "Abrir Player de Música" }, + "settings": { "message": "Configurações" }, + "navMovies": { "message": "Filmes" }, + "navSeries": { "message": "Séries" }, + "navPhotos": { "message": "Fotos" }, + "navStats": { "message": "Estatísticas" }, + "navFavorites": { "message": "Favoritos" }, + "navHistory": { "message": "Histórico" }, + "navRecommendations": { "message": "Recomendações" }, + "navMusic": { "message": "Música" }, + "heroWelcome": { "message": "Bem-vindo ao CinePlex" }, + "heroSubtitle": { "message": "Explore milhares de filmes e séries." }, + "addStream": { "message": "Adicionar Stream" }, + "moreInfo": { "message": "Mais Informações" }, + "popularMovies": { "message": "Filmes Populares" }, + "allGenres": { "message": "Todos os Gêneros" }, + "allYears": { "message": "Todos os Anos" }, + "sortPopular": { "message": "Mais Populares" }, + "sortTopRated": { "message": "Mais Bem Avaliados" }, + "sortRecent": { "message": "Mais Recentes" }, + "loadMore": { "message": "Carregar Mais" }, + "photosBreadcrumbHome": { "message": "Álbuns" }, + "selectServer": { "message": "Selecione um servidor" }, + "loading": { "message": "Carregando..." }, + "photosEmptyState": { "message": "Nenhum álbum ou foto encontrado." }, + "photosEmptyStateSub": { "message": "Por favor, selecione um servidor ou certifique-se de que você tem uma biblioteca de fotos no Plex." }, + "statsTitle": { "message": "Estatísticas da Biblioteca" }, + "statsAllTokens": { "message": "Todos os Tokens" }, + "statsAnalyzing": { "message": "Analisando sua biblioteca..." }, + "statsActiveTokens": { "message": "Tokens Ativos" }, + "statsServersFound": { "message": "Servidores Encontrados" }, + "statsUniqueMovies": { "message": "Filmes Únicos" }, + "statsUniqueSeries": { "message": "Séries Únicas" }, + "statsUniqueArtists": { "message": "Artistas Únicos" }, + "statsTokenServers": { "message": "Servidores do Token" }, + "statsChartMoviesByGenre": { "message": "Conteúdo por Gênero (Filmes)" }, + "statsChartSeriesByGenre": { "message": "Conteúdo por Gênero (Séries)" }, + "statsChartByDecade": { "message": "Conteúdo por Década" }, + "recommendationsTitle": { "message": "Recomendações para Você" }, + "historyTitle": { "message": "Histórico de Visualização" }, + "clearHistory": { "message": "Limpar Tudo" }, + "consoleTitle": { "message": "Console de Análise do Plex" }, + "footerCredit": { "message": "Uma interface para o seu universo Plex." }, + "backButton": { "message": "Voltar" }, + "closeTrailer": { "message": "Fechar trailer" }, + "close": { "message": "Fechar" }, + "photoViewer": { "message": "Visualizador de Fotos" }, + "previous": { "message": "Anterior" }, + "next": { "message": "Próximo" }, + "notificationTemplateText": { "message": "Notificação" }, + "settingsTitleFull": { "message": "Configurações e Ajustes" }, + "settingsTabGeneral": { "message": "Geral" }, + "settingsTabPlex": { "message": "Plex" }, + "settingsTabPhpGen": { "message": "Gerador de PHP" }, + "settingsTabData": { "message": "Dados" }, + "settingsApiServer": { "message": "Configuração de API e Servidor" }, + "settingsTmdbApiLabel": { "message": "Chave da API do TMDB (Opcional)" }, + "settingsTmdbApiPlaceholder": { "message": "Usará a chave padrão se deixado em branco" }, + "settingsTmdbLangLabel": { "message": "Idioma para TMDB e Interface" }, + "settingsPhpUrlLabel": { "message": "URL do Servidor para Adicionar Streams" }, + "settingsPhpUrlPlaceholder": { "message": "https://seu-servidor.com/caminho/para/script.php" }, + "settingsInterface": { "message": "Interface" }, + "settingsLightTheme": { "message": "Modo Claro" }, + "settingsShowHero": { "message": "Mostrar seção de boas-vindas 'Hero'" }, + "settingsScanContent": { "message": "Análise de Conteúdo" }, + "settingsScanDesc": { "message": "Selecione o que analisar e pressione o botão." }, + "settingsScanMovies": { "message": "Filmes" }, + "settingsScanShows": { "message": "Séries" }, + "settingsScanArtists": { "message": "Música" }, + "settingsScanPhotos": { "message": "Fotos" }, + "settingsSelectAll": { "message": "Selecionar Tudo" }, + "settingsStartScan": { "message": "Iniciar Análise" }, + "settingsPlexTokens": { "message": "Tokens do Plex" }, + "settingsPlexTokensDesc": { "message": "Edite a lista de tokens do Plex (formato JSON)." }, + "settingsSaveTokens": { "message": "Salvar Tokens" }, + "settingsPhpGenTitle": { "message": "Gerador de Script PHP para Servidor" }, + "settingsPhpFileOptions": { "message": "Opções de Arquivo" }, + "settingsPhpSavePathLabel": { "message": "Caminho para Salvar no Servidor" }, + "settingsPhpSavePathPlaceholder": { "message": "Ex: /var/www/html/listas (em branco para a mesma pasta)" }, + "settingsPhpFilenameLabel": { "message": "Nome do Arquivo" }, + "settingsPhpFileAction": { "message": "Ação no Arquivo" }, + "settingsPhpActionAppend": { "message": "Anexar ao final do arquivo (cumulativo)" }, + "settingsPhpActionOverwrite": { "message": "Sobrescrever o arquivo (começar do zero)" }, + "settingsPhpSecurity": { "message": "Segurança (Opcional)" }, + "settingsPhpUseSecretKey": { "message": "Usar chave secreta (Recomendado)" }, + "settingsPhpSecretKeyPlaceholder": { "message": "Digite uma chave secreta segura" }, + "settingsPhpGeneratedCode": { "message": "Código Gerado" }, + "settingsPhpGeneratedPlaceholder": { "message": "O código PHP gerado aparecerá aqui." }, + "settingsGenerateScript": { "message": "Gerar Script" }, + "settingsCopyScript": { "message": "Copiar Script" }, + "settingsDataManagement": { "message": "Gerenciamento do Banco de Dados Local" }, + "settingsImportDb": { "message": "Importar BD de um Arquivo" }, + "settingsExportDb": { "message": "Exportar BD para um Arquivo" }, + "settingsClearContent": { "message": "Limpar Dados de Conteúdo Local" }, + "settingsClearContentDesc": { "message": "Esta ação excluirá filmes, séries e músicas do banco de dados local, mas não afetará seus favoritos ou configurações." }, + "settingsClose": { "message": "Fechar" }, + "settingsSave": { "message": "Salvar Configurações" }, + "musicSidenavTitle": { "message": "Música do Plex" }, + "musicAllServers": { "message": "Todos os Servidores" }, + "musicSearchArtistPlaceholder": { "message": "Pesquisar artista..." }, + "musicSearchDiscographyPlaceholder": { "message": "Pesquisar na discografia..." }, + "musicNothingPlaying": { "message": "Nada tocando" }, + "musicSelectSong": { "message": "Selecione uma música" }, + "musicToStart": { "message": "para começar a tocar" }, + "miniplayerDownloadSong": { "message": "Baixar música" }, + "miniplayerDownloadAlbum": { "message": "Baixar álbum M3U" }, + "miniplayerVolume": { "message": "Volume" }, + "miniplayerShuffle": { "message": "Aleatório" }, + "miniplayerEqualizer": { "message": "Equalizador" }, + "miniplayerOpenList": { "message": "Abrir lista" }, + "eqTitle": { "message": "Equalizador Gráfico" }, + "eqPresetsLabel": { "message": "Predefinições" }, + "eqPresetFlat": { "message": "Plano (Flat)" }, + "eqPresetRock": { "message": "Rock" }, + "eqPresetPop": { "message": "Pop" }, + "eqPresetJazz": { "message": "Jazz" }, + "eqPresetClassical": { "message": "Clássica" }, + "eqPresetBassBoost": { "message": "Reforço de Graves" }, + "eqPreampLabel": { "message": "Pré-amplificador" }, + "infoModalTitle": { "message": "Informações" }, + "infoModalFieldTitle": { "message": "Título:" }, + "infoModalFieldArtist": { "message": "Artista:" }, + "infoModalFieldAlbum": { "message": "Álbum:" }, + "infoModalFieldSong": { "message": "Música:" }, + "infoModalFieldYear": { "message": "Ano:" }, + "infoModalFieldGenre": { "message": "Gênero:" }, + "lang_en": { "message": "Inglês" }, + "lang_es": { "message": "Espanhol" }, + "lang_fr": { "message": "Francês" }, + "lang_de": { "message": "Alemão" }, + "lang_it": { "message": "Italiano" }, + "lang_pt": { "message": "Português" }, + "essentialFeaturesNotSupported": { "message": "Seu navegador não suporta recursos essenciais." }, + "dbAccessError": { "message": "Erro ao acessar o banco de dados local." }, + "dbUpdateNeeded": { "message": "O banco de dados precisa ser atualizado, por favor, recarregue a página." }, + "dbBlocked": { "message": "Por favor, feche outras abas desta aplicação para continuar." }, + "deletingContentData": { "message": "Excluindo dados de conteúdo local..." }, + "noContentDataToDelete": { "message": "Nenhum dado de conteúdo para excluir." }, + "contentDataDeleted": { "message": "Dados de conteúdo excluídos do IndexedDB." }, + "errorDeletingData": { "message": "Erro ao excluir dados: $message$", "placeholders": { "message": { "content": "$1" } } }, + "aceEditorNotAvailable": { "message": "Editor de texto não disponível." }, + "errorLoadingTokens": { "message": "Erro ao carregar tokens no editor." }, + "errorLoadingTokensMessage": { "message": "Erro ao carregar tokens: $message$", "placeholders": { "message": { "content": "$1" } } }, + "aceEditorNotAvailableToSave": { "message": "Editor não disponível para salvar." }, + "invalidJsonFormat": { "message": "Formato JSON inválido. Deve ser { \"tokens\": [...] }" }, + "tokensSaved": { "message": "Tokens salvos com sucesso." }, + "errorSavingTokens": { "message": "Erro ao salvar tokens: $message$", "placeholders": { "message": { "content": "$1" } } }, + "dbNotAvailable": { "message": "O IndexedDB não está disponível." }, + "dbExported": { "message": "Banco de dados exportado com sucesso." }, + "errorExportingDb": { "message": "Erro ao exportar banco de dados: $message$", "placeholders": { "message": { "content": "$1" } } }, + "invalidJsonFile": { "message": "O arquivo não contém um objeto JSON válido." }, + "noDataToImport": { "message": "O arquivo não contém dados para as seções atuais do BD." }, + "dbImported": { "message": "Banco de dados importado com sucesso." }, + "errorImportingDb": { "message": "Erro ao importar banco de dados: $message$", "placeholders": { "message": { "content": "$1" } } }, + "updatingView": { "message": "Atualizando a visualização com novos dados..." }, + "confirmClearContent": { "message": "Tem certeza de que deseja excluir os dados de conteúdo local (Filmes, Séries, Músicas, etc.)? Favoritos e Configurações NÃO serão excluídos." }, + "trailerNotFound": { "message": "Nenhum trailer encontrado para este título." }, + "confirmClearHistory": { "message": "Tem certeza de que deseja excluir todo o seu histórico de visualização? Esta ação não pode ser desfeita." }, + "historyCleared": { "message": "Histórico de visualização limpo." }, + "historyItemDeleted": { "message": "Item excluído do histórico." }, + "errorGeneratingScript": { "message": "Primeiro, gere um script para poder copiá-lo." }, + "scriptCopied": { "message": "Script PHP copiado para a área de transferência." }, + "errorCopyingScript": { "message": "Erro ao copiar o script." }, + "scriptGenerated": { "message": "Script PHP gerado." }, + "errorLoadingAlbum": { "message": "Erro ao carregar o álbum: $message$", "placeholders": { "message": { "content": "$1" } } }, + "noPhotoServerSelected": { "message": "Erro: Nenhum servidor de fotos foi selecionado." }, + "loadingGenres": { "message": "Carregando gêneros..." }, + "errorLoadingGenres": { "message": "Erro ao carregar" }, + "noContentFound": { "message": "Nenhum resultado encontrado." }, + "couldNotLoadContent": { "message": "Não foi possível carregar o conteúdo." }, + "noFavorites": { "message": "Você ainda não tem favoritos." }, + "errorLoadingFavorites": { "message": "Erro ao carregar os favoritos." }, + "historyEmpty": { "message": "Seu histórico está vazio." }, + "historyEmptySub": { "message": "Navegue e assista a conteúdos para que eles apareçam aqui." }, + "errorGeneratingRecommendations": { "message": "Erro ao gerar recomendações." }, + "noRecommendations": { "message": "Precisamos te conhecer melhor para dar recomendações!" }, + "errorGeneratingStats": { "message": "Erro ao gerar estatísticas." }, + "noServersForToken": { "message": "Nenhum servidor associado encontrado para este token." }, + "searchingActorContent": { "message": "Buscando conteúdo de $actorName$", "placeholders": { "actorName": { "content": "$1" } } }, + "errorLoadingActorContent": { "message": "Não foi possível carregar o conteúdo de $actorName$.", "placeholders": { "actorName": { "content": "$1" } } }, + "errorAddingStream": { "message": "Erro ao adicionar stream(s): $message$", "placeholders": { "message": { "content": "$1" } } }, + "phpUrlNotConfigured": { "message": "A URL do servidor PHP não está configurada. Por favor, configure-a nas Configurações." }, + "searchingStreams": { "message": "Buscando streams para \"$title$\"...", "placeholders": { "title": { "content": "$1" } } }, + "sendingStreams": { "message": "Enviando $count$ stream(s) para o servidor...", "placeholders": { "count": { "content": "$1" } } }, + "streamAddedSuccess": { "message": "Stream(s) adicionado(s) com sucesso." }, + "generatingM3U": { "message": "Gerando M3U para \"$title$\"...", "placeholders": { "title": { "content": "$1" } } }, + "m3uDownloaded": { "message": "M3U para \"$title$\" baixado.", "placeholders": { "title": { "content": "$1" } } }, + "errorGeneratingM3U": { "message": "Erro ao gerar M3U: $message$", "placeholders": { "message": { "content": "$1" } } }, + "settingsSavedSuccess": { "message": "Configurações salvas com sucesso." }, + "errorSavingSettings": { "message": "Erro ao salvar as configurações no banco de dados." }, + "languageChangeReload": { "message": "Idioma alterado. A aplicação será recarregada agora." }, + "addedToFavorites": { "message": "Adicionado aos favoritos." }, + "removedFromFavorites": { "message": "Removido dos favoritos." }, + "plexScanInProgress": { "message": "A análise do Plex já está em andamento." }, + "plexScanStarting": { "message": "Iniciando análise do Plex..." }, + "noPlexTokens": { "message": "Nenhum token do Plex configurado." }, + "clearingSections": { "message": "Limpando seções: $sections$", "placeholders": { "sections": { "content": "$1" } } }, + "sectionsCleared": { "message": "Seções limpas." }, + "tokenFoundServers": { "message": "Token $token$... encontrou $count$ servidores.", "placeholders": { "token": { "content": "$1" }, "count": { "content": "$2" } } }, + "errorProcessingToken": { "message": "Erro ao processar o token $token$...: $message$", "placeholders": { "token": { "content": "$1" }, "message": { "content": "$2" } } }, + "initialScanPhaseComplete": { "message": "Fase de análise inicial concluída." }, + "retryPhaseFinished": { "message": "Fase de nova tentativa concluída." }, + "plexScanFinished": { "message": "Análise do Plex concluída. Atualizando conteúdo..." }, + "plexScanFatalError": { "message": "ERRO FATAL: $message$", "placeholders": { "message": { "content": "$1" } } }, + "errorDuringScan": { "message": "Erro durante a análise: $message$", "placeholders": { "message": { "content": "$1" } } }, + "scanCancelled": { "message": "Análise cancelada pelo usuário." }, + "scanCancelledInfo": { "message": "Análise cancelada." }, + "retyingSection": { "message": "Tentando novamente a seção \"$title$\"...", "placeholders": { "title": { "content": "$1" } } }, + "retrySuccess": { "message": "[SUCESSO] Nova tentativa de \"$title$\" concluída.", "placeholders": { "title": { "content": "$1" } } }, + "retryError": { "message": "[ERRO FINAL] A nova tentativa falhou para \"$title$\": $message$", "placeholders": { "title": { "content": "$1" }, "message": { "content": "$2" } } }, + "noRetriesPending": { "message": "Nenhuma nova tentativa pendente." }, + "startingRetryPhase": { "message": "Iniciando fase de nova tentativa para $count$ seções...", "placeholders": { "count": { "content": "$1" } } }, + "retryPhaseCancelled": { "message": "Fase de nova tentativa cancelada." }, + "errorInitializingMusicPlayer": { "message": "Erro ao inicializar o player de música." }, + "criticalErrorLoadingMusic": { "message": "Erro crítico ao carregar dados de música." }, + "errorLoadingArtists": { "message": "Erro ao carregar artistas." }, + "dbUnavailableError": { "message": "Erro: Banco de dados não disponível." }, + "updatingMusicData": { "message": "Atualizando dados de música..." }, + "musicDataUpdated": { "message": "Dados de música atualizados." }, + "errorFetchingArtistSongs": { "message": "Erro ao obter as músicas do artista." }, + "errorLoadingSongs": { "message": "Erro ao carregar as músicas." }, + "noArtistsFound": { "message": "Nenhum artista encontrado." }, + "artistsCounter": { "message": "$start$-$end$ de $total$", "placeholders": { "start": { "content": "$1" }, "end": { "content": "$2" }, "total": { "content": "$3" } } }, + "artistsCounterSingle": { "message": "$total$ Artistas", "placeholders": { "total": { "content": "$1" } } }, + "artistsCounterLoading": { "message": "Carregando..." }, + "noSongsFound": { "message": "Nenhuma música encontrada." }, + "shuffleOn": { "message": "Modo aleatório ativado." }, + "shuffleOff": { "message": "Modo aleatório desativado." }, + "downloadingSong": { "message": "Iniciando download de \"$title$\"...", "placeholders": { "title": { "content": "$1" } } }, + "songDownloaded": { "message": "\"$title$\" baixado.", "placeholders": { "title": { "content": "$1" } } }, + "errorDownloadingSong": { "message": "Erro ao baixar \"$title$\"", "placeholders": { "title": { "content": "$1" } } }, + "generatingAlbumM3U": { "message": "Gerando M3U para \"$artist$\"...", "placeholders": { "artist": { "content": "$1" } } }, + "albumM3UGenerated": { "message": "M3U para o álbum \"$artist$\" gerado.", "placeholders": { "artist": { "content": "$1" } } }, + "playbackError": { "message": "Erro de reprodução" }, + "errorLabel": { "message": "Erro" }, + "reloadingPage": { "message": "Recarregando página..." }, + "viewed": { "message": "Visto" }, + "local": { "message": "Local" }, + "topRatedSort": {"message": "Mais Bem Avaliados"}, + "recentSort": {"message": "Recentes"}, + "popularSort": {"message": "Populares"}, + "moviesSectionTitle": {"message": "Filmes"}, + "seriesSectionTitle": {"message": "Séries"}, + "searchResultsFor": {"message": "Resultados para \"$query$\"", "placeholders": {"query": {"content": "$1"}}}, + "contentFrom": {"message": "Conteúdo de $actor$", "placeholders": {"actor": {"content": "$1"}}}, + "explore": {"message": "Explorar"}, + "noGenre": {"message": "Sem Categoria"}, + "synopsis": {"message": "Sinopse"}, + "noSynopsis": {"message": "Nenhuma sinopse disponível."}, + "director": {"message": "Diretor:"}, + "writer": {"message": "Roteirista:"}, + "viewOnImdb": {"message": "Ver no IMDb"}, + "watchTrailer": {"message": "Assistir ao Trailer"}, + "addToFavorites": {"message": "Favoritar"}, + "removeFromFavorites": {"message": "Desfavoritar"}, + "notAvailable": {"message": "Não Disponível"}, + "mainCast": {"message": "Elenco Principal"}, + "seasonsAndEpisodes": {"message": "Temporadas e Episódios"}, + "similarContent": {"message": "Conteúdo Similar"}, + "episodesCount": {"message": "$count$ Episódios", "placeholders": {"count": {"content": "$1"}}}, + "seasonsCount": {"message": "$count$ Temporadas", "placeholders": {"count": {"content": "$1"}}}, + "runtimeMinutes": {"message": "$count$ min", "placeholders": {"count": {"content": "$1"}}}, + "noTrailerFound": {"message": "Nenhum trailer foi encontrado para este título."}, + "fatalInitError": {"message": "Erro Fatal de Inicialização"}, + "fatalInitErrorSub": {"message": "A aplicação não pôde ser carregada."}, + "invalidStreamInfo": {"message": "Informação inválida."}, + "dbUnavailableForStreams": {"message": "Banco de dados local não disponível."}, + "noPlexServersForStreams": {"message": "Nenhum servidor Plex."}, + "notFoundOnServers": {"message": "\"$query$\" não encontrado nos servidores.", "placeholders": {"query": {"content": "$1"}}}, + "relativeTime_justNow": { "message": "Agora mesmo" }, + "relativeTime_minutesAgo": { "message": "há $count$ minutos", "placeholders": { "count": { "content": "$1" } } }, + "relativeTime_hoursAgo": { "message": "há $count$ horas", "placeholders": { "count": { "content": "$1" } } }, + "relativeTime_yesterday": { "message": "Ontem" }, + "relativeTime_daysAgo": { "message": "há $count$ dias", "placeholders": { "count": { "content": "$1" } } }, + "errorLoadingDetails": { "message": "Erro ao Carregar Detalhes" }, + "errorLoadingLocalContent": { "message": "Erro ao carregar conteúdo local." }, + "errorServerResponse": { "message": "Resposta sem sucesso do servidor." }, + "errorPlexApi": { "message": "Erro $status$ da API do Plex.", "placeholders": { "status": { "content": "$1" } } }, + "errorParsingPlexXml": { "message": "Erro ao analisar o XML do Plex." }, + "untitled": { "message": "Sem título" }, + "itemCount": { "message": "$count$ itens", "placeholders": { "count": { "content": "$1" } } }, + "noPhotoServers": { "message": "Nenhum servidor de fotos" } +} \ No newline at end of file diff --git a/js/api.js b/js/api.js index e12d331..c421770 100644 --- a/js/api.js +++ b/js/api.js @@ -10,7 +10,9 @@ export async function fetchTMDB(endpoint, signal) { 'es': 'es-ES', 'en': 'en-US', 'fr': 'fr-FR', - 'de': 'de-DE' + 'de': 'de-DE', + 'it': 'it-IT', + 'pt': 'pt-BR' }; if (langMap[state.settings.language]) { diff --git a/js/ui.js b/js/ui.js index aa2c54b..260cb5a 100644 --- a/js/ui.js +++ b/js/ui.js @@ -1220,7 +1220,10 @@ function updateHeroContent(item) { heroPlayBtn.disabled = !isAvailable; } if (heroInfoBtn) { - heroInfoBtn.onclick = () => showItemDetails(item.id, type); + heroInfoBtn.onclick = () => { + state.lastClickedCardElement = heroInfoBtn; + showItemDetails(item.id, type); + }; heroInfoBtn.disabled = false; } } diff --git a/plex.html b/plex.html index eb82da2..ea3ba70 100644 --- a/plex.html +++ b/plex.html @@ -313,6 +313,8 @@ + +