CinePlex/_locales/en/messages.json
2025-08-02 09:57:26 +02:00

449 lines
37 KiB
JSON

{
"appName": { "message": "CinePlex" },
"appDescription": { "message": "Scans Plex servers for content and displays it in the interface" },
"appTagline": { "message": "Movies, Series, and Music" },
"appLocaleCode": { "message": "en-US" },
"toggleNavigation": { "message": "Toggle Navigation" },
"searchPlaceholder": { "message": "Search for movies or series..." },
"openMusicPlayer": { "message": "Open Music Player" },
"settings": { "message": "Settings" },
"navMovies": { "message": "Movies" },
"navSeries": { "message": "Series" },
"navProviders": { "message": "Providers" },
"navPhotos": { "message": "Photos" },
"navStats": { "message": "Statistics" },
"navFavorites": { "message": "Favorites" },
"navHistory": { "message": "History" },
"navRecommendations": { "message": "Recommendations" },
"navMusic": { "message": "Music" },
"navM3uGenerator": { "message": "M3U Generator" },
"heroWelcome": { "message": "Welcome to CinePlex" },
"heroSubtitle": { "message": "Explore thousands of movies and series." },
"addStream": { "message": "Add Stream" },
"moreInfo": { "message": "More info" },
"popularMovies": { "message": "Popular Movies" },
"allGenres": { "message": "All genres" },
"allYears": { "message": "All years" },
"sortPopular": { "message": "Most popular" },
"sortTopRated": { "message": "Top rated" },
"sortRecent": { "message": "Most recent" },
"loadMore": { "message": "Load more" },
"photosBreadcrumbHome": { "message": "Albums" },
"selectServer": { "message": "Select a server" },
"loading": { "message": "Loading..." },
"loadingLibraries": { "message": "Loading libraries..." },
"photosEmptyState": { "message": "No albums or photos found." },
"photosEmptyStateSub": { "message": "Please select a server or make sure you have a photo library in Plex." },
"statsTitle": { "message": "Library Statistics" },
"statsAllTokens": { "message": "All Tokens" },
"statsAnalyzing": { "message": "Analyzing your library..." },
"statsActiveTokens": { "message": "Active Tokens" },
"statsServersFound": { "message": "Servers Found" },
"statsUniqueMovies": { "message": "Unique Movies" },
"statsUniqueSeries": { "message": "Unique Series" },
"statsUniqueArtists": { "message": "Unique Artists" },
"statsTokenServers": { "message": "Token Servers" },
"statsChartMoviesByGenre": { "message": "Content by Genre (Movies)" },
"statsChartSeriesByGenre": { "message": "Content by Genre (Series)" },
"statsChartByDecade": { "message": "Content by Decade" },
"recommendationsTitle": { "message": "Recommendations for you" },
"historyTitle": { "message": "Viewing History" },
"clearHistory": { "message": "Clear All" },
"consoleTitle": { "message": "Plex Scan Console" },
"footerCredit": { "message": "An interface for your Plex universe." },
"closeTrailer": { "message": "Close trailer" },
"close": { "message": "Close" },
"photoViewer": { "message": "Photo Viewer" },
"previous": { "message": "Previous" },
"next": { "message": "Next" },
"notificationTemplateText": { "message": "Notification" },
"settingsTitleFull": { "message": "Settings and Configuration" },
"settingsTabGeneral": { "message": "General" },
"settingsTabPlex": { "message": "Plex" },
"settingsTabJellyfin": { "message": "Jellyfin" },
"settingsTabPhpGen": { "message": "PHP Generator" },
"settingsTabData": { "message": "Data" },
"settingsApiServer": { "message": "API and Server Settings" },
"settingsTmdbApiLabel": { "message": "TMDB API Key (Optional)" },
"settingsTmdbApiPlaceholder": { "message": "The default key will be used if left blank" },
"settingsGoogleApiLabel": { "message": "Google Gemini API Key (Optional)" },
"settingsGoogleApiPlaceholder": { "message": "Required to use the AI assistant" },
"settingsRegionLabel": { "message": "Region for content discovery" },
"allRegions": { "message": "All regions" },
"settingsPhpUrlLabel": { "message": "Server URL for Adding Streams" },
"settingsPhpUrlPlaceholder": { "message": "https://your-server.com/path/to/script.php" },
"settingsInterface": { "message": "Interface" },
"settingsLightTheme": { "message": "Light Mode" },
"settingsShowHero": { "message": "Show 'Hero' welcome section" },
"settingsScanContent": { "message": "Content Scan" },
"settingsScanDesc": { "message": "Select what to scan and press the button." },
"settingsScanMovies": { "message": "Movies" },
"settingsScanShows": { "message": "Series" },
"settingsScanArtists": { "message": "Music" },
"settingsScanPhotos": { "message": "Photos" },
"settingsSelectAll": { "message": "Select All" },
"settingsStartScan": { "message": "Start Scan" },
"settingsPlexTokens": { "message": "Plex Tokens" },
"settingsPlexTokensDesc": { "message": "Edit the list of Plex tokens (JSON format)." },
"settingsSaveTokens": { "message": "Save Tokens" },
"settingsJellyfinTitle": { "message": "Jellyfin Settings" },
"settingsJellyfinDesc": { "message": "Add your Jellyfin server details to scan its content." },
"jellyfinUrlLabel": { "message": "Jellyfin Server URL" },
"jellyfinUserLabel": { "message": "Username" },
"jellyfinPassLabel": { "message": "Password" },
"jellyfinConnectAndScan": { "message": "Connect and Scan" },
"settingsPhpGenTitle": { "message": "PHP Script Generator for Server" },
"settingsPhpFileOptions": { "message": "File Options" },
"settingsPhpSavePathLabel": { "message": "Save Path on Server" },
"settingsPhpSavePathPlaceholder": { "message": "Ex: /var/www/html/lists (blank for the same folder)" },
"settingsPhpFilenameLabel": { "message": "File Name" },
"settingsPhpFileAction": { "message": "File Action" },
"settingsPhpActionAppend": { "message": "Append to the end of the file (cumulative)" },
"settingsPhpActionOverwrite": { "message": "Overwrite the file (start over)" },
"settingsPhpSecurity": { "message": "Security (Optional)" },
"settingsPhpUseSecretKey": { "message": "Use secret key (Recommended)" },
"settingsPhpSecretKeyPlaceholder": { "message": "Enter a secure secret key" },
"settingsPhpGeneratedCode": { "message": "Generated Code" },
"settingsPhpGeneratedPlaceholder": { "message": "The generated PHP code will appear here." },
"settingsGenerateScript": { "message": "Generate Script" },
"settingsCopyScript": { "message": "Copy Script" },
"settingsDataManagement": { "message": "Local Database Management" },
"settingsImportDb": { "message": "Import DB from File" },
"settingsExportDb": { "message": "Export DB to File" },
"settingsClearContent": { "message": "Clear Local Content Data" },
"settingsClearContentDesc": { "message": "This action will delete movies, series, and music from the local database, but will not affect your favorites or your settings." },
"settingsClose": { "message": "Close" },
"settingsSave": { "message": "Save Settings" },
"musicSidenavTitle": { "message": "Plex Music" },
"musicAllServers": { "message": "All Servers" },
"musicSearchArtistPlaceholder": { "message": "Search for an artist..." },
"musicSearchDiscographyPlaceholder": { "message": "Search in discography..." },
"musicNothingPlaying": { "message": "Nothing playing" },
"musicSelectSong": { "message": "Select a song" },
"musicToStart": { "message": "to start playing" },
"miniplayerDownloadSong": { "message": "Download song" },
"miniplayerDownloadAlbum": { "message": "Download M3U album" },
"miniplayerVolume": { "message": "Volume" },
"miniplayerShuffle": { "message": "Shuffle" },
"miniplayerEqualizer": { "message": "Equalizer" },
"miniplayerOpenList": { "message": "Open list" },
"eqTitle": { "message": "Graphic Equalizer" },
"eqPresetsLabel": { "message": "Presets" },
"eqPresetFlat": { "message": "Flat" },
"eqPresetRock": { "message": "Rock" },
"eqPresetPop": { "message": "Pop" },
"eqPresetJazz": { "message": "Jazz" },
"eqPresetClassical": { "message": "Classical" },
"eqPresetBassBoost": { "message": "Bass Boost" },
"eqPreampLabel": { "message": "Preamp" },
"infoModalTitle": { "message": "Information" },
"infoModalFieldTitle": { "message": "Title:" },
"infoModalFieldArtist": { "message": "Artist:" },
"infoModalFieldAlbum": { "message": "Album:" },
"infoModalFieldSong": { "message": "Song:" },
"infoModalFieldYear": { "message": "Year:" },
"infoModalFieldGenre": { "message": "Genre:" },
"lang_en": { "message": "English" },
"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." },
"dbBlocked": { "message": "Please close other tabs of this application to continue." },
"deletingContentData": { "message": "Deleting local content data..." },
"noContentDataToDelete": { "message": "No content data to delete." },
"contentDataDeleted": { "message": "Content data deleted from IndexedDB." },
"errorDeletingData": { "message": "Error deleting data: $message$", "placeholders": { "message": { "content": "$1" } } },
"aceEditorNotAvailable": { "message": "Text editor not available." },
"errorLoadingTokens": { "message": "Error loading tokens for editing." },
"errorLoadingTokensMessage": { "message": "Error loading tokens: $message$", "placeholders": { "message": { "content": "$1" } } },
"aceEditorNotAvailableToSave": { "message": "Editor not available for saving." },
"invalidJsonFormat": { "message": "Invalid JSON format. It must be { \"tokens\": [...] }" },
"tokensSaved": { "message": "Tokens saved successfully." },
"errorSavingTokens": { "message": "Error saving tokens: $message$", "placeholders": { "message": { "content": "$1" } } },
"dbNotAvailable": { "message": "IndexedDB is not available." },
"dbExported": { "message": "Database exported successfully." },
"errorExportingDb": { "message": "Error exporting the database: $message$", "placeholders": { "message": { "content": "$1" } } },
"invalidJsonFile": { "message": "The file does not contain a valid JSON object." },
"noDataToImport": { "message": "The file does not contain data for the current DB sections." },
"dbImported": { "message": "Database imported successfully." },
"errorImportingDb": { "message": "Error importing the database: $message$", "placeholders": { "message": { "content": "$1" } } },
"updatingView": { "message": "Updating the view with new data..." },
"confirmClearContent": { "message": "Are you sure you want to delete local content data (Movies, Series, Music, etc.)? Favorites and Settings will NOT be deleted." },
"trailerNotFound": { "message": "No trailer found for this title." },
"confirmClearHistory": { "message": "Are you sure you want to delete all your viewing history? This action cannot be undone." },
"historyCleared": { "message": "Viewing history cleared." },
"historyItemDeleted": { "message": "Item deleted from history." },
"errorGeneratingScript": { "message": "First generate a script to be able to copy it." },
"scriptCopied": { "message": "PHP script copied to clipboard." },
"errorCopyingScript": { "message": "Error copying the script." },
"scriptGenerated": { "message": "PHP script generated." },
"errorLoadingAlbum": { "message": "Error loading album: $message$", "placeholders": { "message": { "content": "$1" } } },
"noPhotoServerSelected": { "message": "Error: No photo server has been selected." },
"loadingGenres": { "message": "Loading genres..." },
"errorLoadingGenres": { "message": "Error loading" },
"noContentFound": { "message": "No results found." },
"couldNotLoadContent": { "message": "Could not load content." },
"noFavorites": { "message": "You don't have any favorites yet." },
"errorLoadingFavorites": { "message": "Error loading favorites." },
"historyEmpty": { "message": "Your history is empty." },
"historyEmptySub": { "message": "Explore and watch content for it to appear here." },
"errorGeneratingRecommendations": { "message": "Error generating recommendations." },
"noRecommendations": { "message": "We need to get to know you better to give you recommendations!" },
"errorGeneratingStats": { "message": "Error generating statistics." },
"noServersForToken": { "message": "No associated servers found for this token." },
"searchingActorContent": { "message": "Searching for content by $actorName$", "placeholders": { "actorName": { "content": "$1" } } },
"errorLoadingActorContent": { "message": "Could not load content for $actorName$.", "placeholders": { "actorName": { "content": "$1" } } },
"errorAddingStream": { "message": "Error adding stream(s): $message$", "placeholders": { "message": { "content": "$1" } } },
"phpUrlNotConfigured": { "message": "The PHP server URL is not configured. Please configure it in Settings." },
"searchingStreams": { "message": "Searching for streams for \"$title$\"", "placeholders": { "title": { "content": "$1" } } },
"sendingStreams": { "message": "Sending $count$ stream(s) to the server...", "placeholders": { "count": { "content": "$1" } } },
"streamAddedSuccess": { "message": "Stream(s) added successfully." },
"generatingM3U": { "message": "Generating M3U for \"$title$\"", "placeholders": { "title": { "content": "$1" } } },
"m3uDownloaded": { "message": "\"$title$\" downloaded.", "placeholders": { "title": { "content": "$1" } } },
"errorGeneratingM3U": { "message": "Error generating M3U: $message$", "placeholders": { "message": { "content": "$1" } } },
"settingsSavedSuccess": { "message": "Settings saved successfully." },
"errorSavingSettings": { "message": "Error saving settings to the database." },
"languageChangeReload": { "message": "Language changed. The application will now reload." },
"addedToFavorites": { "message": "Added to favorites." },
"removedFromFavorites": { "message": "Removed from favorites." },
"plexScanInProgress": { "message": "Plex scan is already in progress." },
"plexScanStarting": { "message": "Starting Plex scan..." },
"noPlexTokens": { "message": "No Plex tokens configured." },
"clearingSections": { "message": "Clearing sections: $sections$", "placeholders": { "sections": { "content": "$1" } } },
"initialScanPhaseComplete": { "message": "Initial scan phase finished." },
"retryPhaseFinished": { "message": "Retry phase finished." },
"plexScanFinished": { "message": "Scan finished. Updating content..." },
"scanCancelled": { "message": "Scan cancelled by the user." },
"scanCancelledInfo": { "message": "Scan cancelled." },
"errorInitializingMusicPlayer": { "message": "Error initializing the music player." },
"criticalErrorLoadingMusic": { "message": "Critical error loading music data." },
"errorLoadingArtists": { "message": "Error loading artists." },
"dbUnavailableError": { "message": "Error: Database not available." },
"updatingMusicData": { "message": "Updating music data..." },
"musicDataUpdated": { "message": "Music data updated." },
"errorFetchingArtistSongs": { "message": "Error fetching the artist's songs." },
"errorLoadingSongs": { "message": "Error loading songs." },
"noArtistsFound": { "message": "No artists found." },
"shuffleOn": { "message": "Shuffle mode on." },
"shuffleOff": { "message": "Shuffle mode off." },
"playbackError": { "message": "Playback error" },
"errorLabel": { "message": "Error" },
"reloadingPage": { "message": "Reloading the page..." },
"viewed": { "message": "Viewed" },
"local": { "message": "Local" },
"topRatedSort": {"message": "Top Rated"},
"recentSort": {"message": "Recent"},
"popularSort": {"message": "Popular"},
"moviesSectionTitle": {"message": "Movies"},
"seriesSectionTitle": {"message": "Series"},
"searchResultsFor": {"message": "Results for \"$query$\"", "placeholders": {"query": {"content": "$1"}}},
"contentFrom": {"message": "Content from $actor$", "placeholders": {"actor": {"content": "$1"}}},
"explore": {"message": "Explore"},
"noGenre": {"message": "Uncategorized"},
"synopsis": {"message": "Synopsis"},
"noSynopsis": {"message": "No synopsis available."},
"director": {"message": "Director:"},
"writer": {"message": "Writer:"},
"viewOnImdb": {"message": "View on IMDb"},
"watchTrailer": {"message": "Watch Trailer"},
"addToFavorites": {"message": "Add to favorites"},
"removeFromFavorites": {"message": "Remove from favorites"},
"notAvailable": {"message": "Not available"},
"mainCast": {"message": "Main Cast"},
"seasonsAndEpisodes": {"message": "Seasons and Episodes"},
"similarContent": {"message": "Similar Content"},
"filmography": {"message": "Filmography"},
"availableOn": {"message": "Available on"},
"episodesCount": {"message": "$count$ Episodes", "placeholders": {"count": {"content": "$1"}}},
"seasonsCount": {"message": "$count$ Seasons", "placeholders": {"count": {"content": "$1"}}},
"runtimeMinutes": {"message": "$count$ min", "placeholders": {"count": {"content": "$1"}}},
"noTrailerFound": {"message": "No trailer found for this title."},
"fatalInitError": {"message": "Fatal initialization error"},
"fatalInitErrorSub": {"message": "Could not load the application."},
"invalidStreamInfo": {"message": "Invalid information."},
"dbUnavailableForStreams": {"message": "Local database not available."},
"noPlexServersForStreams": {"message": "No Plex servers."},
"notFoundOnServers": {"message": "\"$query$\" not found on Plex servers.", "placeholders": {"query": {"content": "$1"}}},
"relativeTime_justNow": { "message": "Just now" },
"relativeTime_minutesAgo": { "message": "$count$ minutes ago", "placeholders": { "count": { "content": "$1" } } },
"relativeTime_hoursAgo": { "message": "$count$ hours ago", "placeholders": { "count": { "content": "$1" } } },
"relativeTime_yesterday": { "message": "Yesterday" },
"relativeTime_daysAgo": { "message": "$count$ days ago", "placeholders": { "count": { "content": "$1" } } },
"errorLoadingDetails": { "message": "Error Loading Details" },
"errorLoadingLocalContent": { "message": "Error loading local content." },
"errorServerResponse": { "message": "Unsuccessful server response." },
"errorPlexApi": { "message": "Plex API error $status$.", "placeholders": { "status": { "content": "$1" } } },
"errorParsingPlexXml": { "message": "Error parsing Plex XML." },
"untitled": { "message": "Untitled" },
"itemCount": { "message": "$count$ items", "placeholders": { "count": { "content": "$1" } } },
"noPhotoServers": { "message": "No photo servers" },
"jellyfinScanInProgress": { "message": "Jellyfin scan is already in progress." },
"jellyfinScanning": { "message": "Scanning Jellyfin..." },
"jellyfinMissingCredentials": { "message": "Please complete the Jellyfin URL and username." },
"jellyfinConnecting": { "message": "Connecting to Jellyfin at: $url$", "placeholders": { "url": { "content": "$1" } } },
"jellyfinAuthFailed": { "message": "Jellyfin authentication failed: $message$", "placeholders": { "message": { "content": "$1" } } },
"jellyfinAuthSuccess": { "message": "Jellyfin authentication successful." },
"jellyfinFetchingLibraries": { "message": "Fetching libraries..." },
"jellyfinFetchFailed": { "message": "Error fetching libraries: $message$", "placeholders": { "message": { "content": "$1" } } },
"jellyfinNoMediaLibraries": { "message": "No movie or series libraries found in Jellyfin." },
"jellyfinLibrariesFound": { "message": "$count$ media library(s) found.", "placeholders": { "count": { "content": "$1" } } },
"jellyfinLibraryScanSuccess": { "message": "[Success] '$libraryName' scanned, $count$ titles added.", "placeholders": { "libraryName": { "content": "$1" }, "count": { "content": "$2" } } },
"jellyfinLibraryScanFailed": { "message": "Error scanning library '$libraryName'.", "placeholders": { "libraryName": { "content": "$1" } } },
"jellyfinScanSuccess": { "message": "Jellyfin scan completed. Added $movies$ movies and $series$ series.", "placeholders": { "movies": { "content": "$1" }, "series": { "content": "$2" } } },
"noJellyfinCredentials": { "message": "Jellyfin credentials not configured." },
"notFoundOnJellyfin": { "message": "\"$query$\" not found on Jellyfin.", "placeholders": { "query": { "content": "$1" } } },
"notFoundOnAnyServer": { "message": "\"$query$\" not found on any server.", "placeholders": { "query": { "content": "$1" } } },
"localOnPlex": { "message": "On Plex" },
"searchOnPlex": { "message": "Search on Plex" },
"jellyfinTitle": { "message": "Jellyfin Content" },
"noJellyfinContent": { "message": "No Jellyfin content found." },
"noJellyfinContentSub": { "message": "Make sure you have scanned your Jellyfin server in the settings." },
"activityViewerTitle": { "message": "Server Activity Viewer" },
"activitySelectServer": { "message": "Select a server" },
"activityCheckBtn": { "message": "Refresh" },
"activityNoSessions": { "message": "No active sessions on this server." },
"activitySessionUser": { "message": "User" },
"activitySessionDevice": { "message": "Device" },
"activitySessionContent": { "message": "Content" },
"activitySessionState": { "message": "State" },
"activitySessionIdentifier": { "message": "Client Identifier" },
"activityCopyID": { "message": "Copy ID" },
"activityError": { "message": "Could not get server activity." },
"activityCopied": { "message": "Identifier copied to clipboard!" },
"activityCopyError": { "message": "Error copying the identifier." },
"noProvidersFound": { "message": "No providers found." },
"availableOnPlex": { "message": "Available on Plex" },
"m3uGeneratorTitle": { "message": "M3U List Generator" },
"selectAServer": { "message": "Select a server..." },
"downloadM3u": { "message": "Download M3U" },
"m3uGenerator": { "message": "M3U Generator" },
"selectLibraries": { "message": "Select Libraries" },
"howToUse": { "message": "How to Use" },
"m3uInstruction1": { "message": "Choose a server from the list." },
"m3uInstruction2": { "message": "Select one or more libraries to include." },
"m3uInstruction3": { "message": "Click the download button." },
"m3uInstruction4": { "message": "Import the .m3u file into your compatible player." },
"chatOpen": { "message": "Open Chat" },
"chatTitle": { "message": "AI Assistant" },
"chatClose": { "message": "X" },
"chatPlaceholder": { "message": "Type your message..." },
"chatSend": { "message": "➤" },
"chatWelcome": { "message": "Welcome! I'm your CinePlex assistant. Ask me about movies, series, or anything else you want to know." },
"chatGoogleApiKeyMissing": { "message": "The Google Gemini API key is not configured. Please set it in the extension settings to use the AI assistant." },
"chatApiInvalidResponse": { "message": "The API returned an invalid response. Please try again." },
"chatApiError": { "message": "Error communicating with the AI assistant" },
"downloadAll": { "message": "Download all" },
"download": { "message": "Download" },
"aiToolSearchLibraryDesc": { "message": "Searches the user's Plex library for movies or series by title." },
"aiToolSearchLibraryQueryParamDesc": { "message": "The title of the movie or series to search for." },
"aiToolSearchLibraryTypeParamDesc": { "message": "The type of content to search for. It can be 'movie' for movies or 'series' for series. (Optional)." },
"aiToolSearchLibraryResolutionParamDesc": { "message": "The video resolution to search for (e.g., '4k', '1080p'). (Optional)." },
"aiToolSearchLibraryContainerParamDesc": { "message": "The video container format to search for (e.g., 'mkv', 'mp4'). (Optional)." },
"aiToolNavigateToPageDesc": { "message": "Navigates the user to a specific page of the application interface." },
"aiToolNavigateToPagePageParamDesc": { "message": "The name of the page to navigate to, e.g.: 'movies', 'series', 'stats', 'favorites', 'history', 'recommendations', 'photos', 'providers', or 'm3u-generator'." },
"aiToolGetUserStatsDesc": { "message": "Gets and displays the user's library statistics, such as the total number of unique movies, series, and artists." },
"aiToolShowItemDetailsDesc": { "message": "Displays the details page of a specific movie or series by its title and type." },
"aiToolShowItemDetailsTitleParamDesc": { "message": "The exact title of the movie or series." },
"aiToolShowItemDetailsTypeParamDesc": { "message": "The type of content. It must be 'movie' or 'series'." },
"aiToolAddToPlaylistDesc": { "message": "Adds a movie or series to the user's current playlist to stream it to a configured PHP server." },
"aiToolAddToPlaylistTitleParamDesc": { "message": "The title of the movie or series to add." },
"aiToolAddToPlaylistTypeParamDesc": { "message": "The type of content. It must be 'movie' or 'series'." },
"aiToolCheckAndDownloadDesc": { "message": "Checks the availability of a list of movie or series titles on the user's local servers and, if found, generates and downloads an M3U playlist file with the found streams." },
"aiToolCheckAndDownloadTitlesParamDesc": { "message": "An array of movie or series titles to search for and download." },
"aiToolCheckAndDownloadTypeParamDesc": { "message": "The content type of the list. It must be 'movie' or 'series'." },
"aiToolCheckAndDownloadFilenameParamDesc": { "message": "The name of the M3U file to download (e.g., 'MyList.m3u'). If not provided, a default name will be used." },
"aiToolToggleFavoriteDesc": { "message": "Adds or removes a movie or series from the user's favorites list." },
"aiToolToggleFavoriteTitleParamDesc": { "message": "The title of the movie or series." },
"aiToolToggleFavoriteTypeParamDesc": { "message": "The type of content. It must be 'movie' or 'series'." },
"aiToolGetRecommendationsDesc": { "message": "Generates and displays a list of movie or series recommendations based on the user's viewing history and favorites." },
"aiToolApplyFiltersDesc": { "message": "Applies filters to the current view of movies or series, allowing to refine the results by type, genre, year, and sort order." },
"aiToolApplyFiltersTypeParamDesc": { "message": "The type of content to apply the filters to. It must be 'movie' or 'series'." },
"aiToolApplyFiltersGenreParamDesc": { "message": "The name of the genre to filter by (e.g., 'Action', 'Drama')." },
"aiToolApplyFiltersYearParamDesc": { "message": "The release year to filter by (e.g., '2023')." },
"aiToolApplyFiltersSortParamDesc": { "message": "The sorting criterion for the results. Valid values: 'popularity.desc' (popular), 'vote_average.desc' (top rated), 'release_date.desc' (recent for movies) or 'first_air_date.desc' (recent for series)." },
"aiToolPlayMusicByArtistDesc": { "message": "Opens the music player and starts playing songs by a specific artist from the user's library." },
"aiToolPlayMusicByArtistNameParamDesc": { "message": "The exact name of the artist whose songs are to be played." },
"aiToolClearChatHistoryDesc": { "message": "Clears all message history from the current conversation with the AI assistant." },
"aiToolDeleteDatabaseDesc": { "message": "Deletes the entire local database of the extension, including scanned content, settings, and favorites. This action is irreversible and will reload the application." },
"aiToolUpdateAllTokensDesc": { "message": "Initiates a full scan of all Plex servers and libraries associated with the tokens configured in the extension. Updates all movies, series, artists, and photos." },
"aiToolAddPlexTokenDesc": { "message": "Adds a new X-Plex token to the extension's configuration, allowing the application to scan content from new Plex servers." },
"aiToolAddPlexTokenTokenParamDesc": { "message": "The X-Plex token string to be added." },
"aiToolChangeRegionDesc": { "message": "Changes the region used for content discovery in the TMDB API. This will affect the results shown in the movie and series sections, as well as the streaming providers." },
"aiToolChangeRegionRegionParamDesc": { "message": "The two-letter ISO 3166-1 country code for the new region (e.g., 'US' for the United States, 'ES' for Spain, 'MX' for Mexico)." },
"aiToolClearAllFavoritesDesc": { "message": "Removes all movies and series that the user has marked as favorites." },
"aiToolClearViewingHistoryDesc": { "message": "Clears the user's viewing history from the history page." },
"aiToolClearRecommendationsViewDesc": { "message": "Clears the recommendations view and removes cached recommendations." },
"aiToolSearchNotFound": { "message": "'$query$' not found in your library.", "placeholders": { "query": { "content": "$1" } } },
"aiToolNavigateSuccess": { "message": "Navigated to the $page$ page.", "placeholders": { "page": { "content": "$1" } } },
"aiToolNavigateError": { "message": "Error navigating to the $page$ page.", "placeholders": { "page": { "content": "$1" } } },
"aiToolStatsError": { "message": "Error getting statistics." },
"aiToolItemNotFound": { "message": "Item '$title$' not found.", "placeholders": { "title": { "content": "$1" } } },
"aiToolShowItemDetailsSuccess": { "message": "Showing details for '$title$'.", "placeholders": { "title": { "content": "$1" } } },
"aiToolAddToPlaylistSuccess": { "message": "Added '$title$' to the playlist.", "placeholders": { "title": { "content": "$1" } } },
"aiToolFavoriteAdded": { "message": "Added '$title$' to favorites.", "placeholders": { "title": { "content": "$1" } } },
"aiToolFavoriteRemoved": { "message": "Removed '$title$' from favorites.", "placeholders": { "title": { "content": "$1" } } },
"aiToolRecommendationsSuccess": { "message": "Showing recommendations." },
"aiToolApplyFiltersGenreNotFound": { "message": "Genre '$genre$' not found.", "placeholders": { "genre": { "content": "$1" } } },
"aiToolApplyFiltersSuccess": { "message": "Filters applied successfully." },
"aiToolPlayMusicNotReady": { "message": "The music player is not ready. Make sure your Plex music library has been scanned." },
"aiToolPlayMusicArtistNotFound": { "message": "Artist '$artist_name$' not found.", "placeholders": { "artist_name": { "content": "$1" } } },
"aiToolPlayMusicNoSongs": { "message": "No songs found for '$artist_name$'.", "placeholders": { "artist_name": { "content": "$1" } } },
"aiToolPlayMusicSuccess": { "message": "Playing music by '$artist_name$'.", "placeholders": { "artist_name": { "content": "$1" } } },
"aiToolChatHistoryCleared": { "message": "Chat history cleared." },
"aiToolConfirmDeleteDatabase": { "message": "Are you sure you want to delete the local database? This action is irreversible." },
"aiToolDeleteDatabaseCancelled": { "message": "Database deletion cancelled." },
"aiToolExecutionError": { "message": "Error executing tool '$toolName': $message$", "placeholders": { "toolName": { "content": "$1" }, "message": { "content": "$2" } } },
"aiToolUnknown": { "message": "Unknown tool: '$toolName'.", "placeholders": { "toolName": { "content": "$1" } } },
"aiToolFavoritesCleared": { "message": "Favorites cleared." },
"aiToolFavoritesClearError": { "message": "Error clearing favorites: $message$", "placeholders": { "message": { "content": "$1" } } },
"aiToolRecommendationsCleared": { "message": "Recommendations cleared." },
"aiToolRecommendationsClearError": { "message": "Error clearing recommendations: $message$", "placeholders": { "message": { "content": "$1" } } },
"aiToolDatabaseDeleted": { "message": "Database deleted. The page will reload." },
"aiToolDatabaseDeleteError": { "message": "Error deleting the database: $message$", "placeholders": { "message": { "content": "$1" } } },
"aiToolDatabaseDeleteBlocked": { "message": "Database deletion is blocked. Close other tabs of the application." },
"aiToolUpdateAllTokensSuccess": { "message": "All tokens have been updated successfully." },
"aiToolUpdateAllTokensError": { "message": "Error updating tokens: $message$", "placeholders": { "message": { "content": "$1" } } },
"aiToolAddPlexTokenSuccess": { "message": "Plex token added successfully." },
"aiToolAddPlexTokenError": { "message": "Error adding the Plex token: $message$", "placeholders": { "message": { "content": "$1" } } },
"aiToolChangeRegionSuccess": { "message": "Region changed to $region$. The content is being updated.", "placeholders": { "region": { "content": "$1" } } },
"aiToolChangeRegionError": { "message": "Error changing the region: $message$", "placeholders": { "message": { "content": "$1" } } },
"aiToolViewingHistoryCleared": { "message": "Viewing history cleared." },
"aiToolViewingHistoryClearError": { "message": "Error clearing the viewing history: $message$", "placeholders": { "message": { "content": "$1" } } },
"aiSystemPrompt_v3": { "message": "You are an expert film and series assistant called CinePlex. Your main function is to help users discover content and interact with their library. Follow these rules strictly: 1. **NEVER** pretend you have performed an action if you have not used a tool for it. For example, do not say 'I have downloaded X' if you have not used the download tool. 2. For recommendation or list requests (e.g., 'tell me 5 horror movies'), use your own knowledge to generate the list. Present it in numbered or bulleted format. After displaying the list, proactively ask the user if they want you to check for availability on their local servers and create an M3U file. 3. **ONLY** if the user confirms they want to check or download the list, use the `check_and_download_titles_list` tool. Do not use it without explicit confirmation. 4. For any other action such as navigating, getting statistics, or searching for a specific title, or filtering by resolution or container, use the appropriate tools. Always be concise, friendly, and efficient." },
"aiToolM3UNoTitlesProvided": { "message": "Please provide a list of titles to create the playlist." },
"aiToolM3UCheckingTitles": { "message": "Checking the titles on your local servers..." },
"aiToolM3UNoLocalMatchesForDownload": { "message": "I haven't found any of the movies or series from the list on your local servers." },
"aiToolM3UDownloadStarted": { "message": "Done! I found $1 of the $2 titles on your servers and have started the download of the M3U playlist.", "placeholders": { "1": { "content": "$1" }, "2": { "content": "$2" } } },
"backToProviders": { "message": "Back to Providers" },
"artistsCounterSingle": { "message": "$total$ Artist", "placeholders": { "total": { "content": "$1" } } },
"artistsCounterLoading": { "message": "Loading..." },
"downloadingSong": { "message": "Starting download of \"$title$\"", "placeholders": { "title": { "content": "$1" } } },
"songDownloaded": { "message": "\"$title$\" downloaded.", "placeholders": { "title": { "content": "$1" } } },
"errorDownloadingSong": { "message": "Error downloading \"$title$\"", "placeholders": { "title": { "content": "$1" } } },
"generatingAlbumM3U": { "message": "Generating M3U for \"$artist$\"", "placeholders": { "artist": { "content": "$1" } } },
"albumM3UGenerated": { "message": "M3U for album \"$artist$\" generated.", "placeholders": { "artist": { "content": "$1" } } },
"retyingSection": { "message": "Retrying section \"$title$\"", "placeholders": { "title": { "content": "$1" } } },
"retrySuccess": { "message": "[SUCCESS] Retry of \"$title$\" completed.", "placeholders": { "title": { "content": "$1" } } },
"retryError": { "message": "[FINAL ERROR] Retry failed for \"$title$\": $message$", "placeholders": { "title": { "content": "$1" }, "message": { "content": "$2" } } },
"startingRetryPhase": { "message": "Starting retry phase for $count$ sections...", "placeholders": { "count": { "content": "$1" } } },
"tokenFoundServers": { "message": "Token $token$... found $count$ servers.", "placeholders": { "token": { "content": "$1" }, "count": { "content": "$2" } } },
"errorProcessingToken": { "message": "Error processing token $token$...: $message$", "placeholders": { "token": { "content": "$1" }, "message": { "content": "$2" } } },
"plexScanFatalError": { "message": "FATAL ERROR: $message$", "placeholders": { "message": { "content": "$1" } } },
"errorDuringScan": { "message": "Error during scan: $message$", "placeholders": { "message": { "content": "$1" } } },
"stoppingPlexScan": { "message": "Stopping Plex scan..." },
"invalidTokenProvided": { "message": "Invalid token provided." },
"tokenAlreadyExists": { "message": "The token already exists." },
"tokenAddedSuccessfully": { "message": "Token added successfully." },
"noStreamsFoundForSelection": { "message": "No streams found for the selection." },
"autoplayBlocked": { "message": "Autoplay blocked." },
"page": { "message": "Page" },
"all": { "message": "All" },
"userScore": { "message": "User Score" },
"duration": { "message": "Duration" },
"min": { "message": "Min" },
"max": { "message": "Max" }
}