{ "appName": { "message": "CinePlex" }, "appDescription": { "message": "Scans Plex servers to find content and displays it in the interface" }, "appTagline": { "message": "Movies, Series, and Music" }, "appLocaleCode": { "message": "en" }, "toggleNavigation": { "message": "Toggle Navigation" }, "searchPlaceholder": { "message": "Search 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": "" }, "heroSubtitle": { "message": "Explore thousands of movies and series." }, "addStream": { "message": "Add Stream" }, "moreInfo": { "message": "More Information" }, "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 ensure 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": "Default key will be used if left blank" }, "settingsGoogleApiLabel": { "message": "Google Gemini API Key (Optional)" }, "settingsGoogleApiPlaceholder": { "message": "Required to use 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 click 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 Configuration" }, "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": "Server Save Path" }, "settingsPhpSavePathPlaceholder": { "message": "Ex: /var/www/html/lists (blank for same folder)" }, "settingsPhpFilenameLabel": { "message": "File Name" }, "settingsPhpFileAction": { "message": "File Action" }, "settingsPhpActionAppend": { "message": "Append to file (cumulative)" }, "settingsPhpActionOverwrite": { "message": "Overwrite file (start fresh)" }, "settingsPhpSecurity": { "message": "Security (Optional)" }, "settingsPhpUseSecretKey": { "message": "Use secret key (Recommended)" }, "settingsPhpSecretKeyPlaceholder": { "message": "Enter a secure secret key" }, "settingsPhpGeneratedCode": { "message": "Generated Code" }, "settingsPhpGeneratedPlaceholder": { "message": "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 settings." }, "settingsClose": { "message": "Close" }, "settingsSave": { "message": "Save Settings" }, "musicSidenavTitle": { "message": "Plex Music" }, "musicAllServers": { "message": "All Servers" }, "musicSearchArtistPlaceholder": { "message": "Search artist..." }, "musicSearchDiscographyPlaceholder": { "message": "Search discography..." }, "musicNothingPlaying": { "message": "Nothing playing" }, "musicSelectSong": { "message": "Select a song" }, "musicToStart": { "message": "to start playing" }, "miniplayerDownloadSong": { "message": "Download song" }, "miniplayerDownloadAlbum": { "message": "Download album M3U" }, "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 local database." }, "dbUpdateNeeded": { "message": "Database needs updating, please reload the page." }, "dbBlocked": { "message": "Please close other tabs of this app 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 to save." }, "invalidJsonFormat": { "message": "Invalid JSON format. 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 database: $message$", "placeholders": { "message": { "content": "$1" } } }, "invalidJsonFile": { "message": "File does not contain a valid JSON object." }, "noDataToImport": { "message": "File contains no data for current DB sections." }, "dbImported": { "message": "Database imported successfully." }, "errorImportingDb": { "message": "Error importing database: $message$", "placeholders": { "message": { "content": "$1" } } }, "updatingView": { "message": "Updating 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 clear 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 copy it." }, "scriptCopied": { "message": "PHP script copied to clipboard." }, "errorCopyingScript": { "message": "Error copying script." }, "scriptGenerated": { "message": "PHP script generated." }, "errorLoadingAlbum": { "message": "Error loading album: $message$", "placeholders": { "message": { "content": "$1" } } }, "noPhotoServerSelected": { "message": "Error: No photo server 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": "Browse and watch content for it to appear here." }, "errorGeneratingRecommendations": { "message": "Error generating recommendations." }, "noRecommendations": { "message": "We need 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 content for $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": "PHP server URL is not configured. Please configure it in Settings." }, "searchingStreams": { "message": "Searching streams for \"$title$\"", "placeholders": { "title": { "content": "$1" } } }, "sendingStreams": { "message": "Sending $count$ stream(s) to 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 completed." }, "retryPhaseFinished": { "message": "Retry phase finished." }, "plexScanFinished": { "message": "Scan finished. Updating content..." }, "scanCancelled": { "message": "Scan cancelled by user." }, "scanCancelledInfo": { "message": "Scan cancelled." }, "errorInitializingMusicPlayer": { "message": "Error initializing music player." }, "criticalErrorLoadingMusic": { "message": "Critical error loading music data." }, "errorLoadingArtists": { "message": "Error loading artists." }, "dbUnavailableError": { "message": "Error: Database unavailable." }, "updatingMusicData": { "message": "Updating music data..." }, "musicDataUpdated": { "message": "Music data updated." }, "errorFetchingArtistSongs": { "message": "Error fetching artist songs." }, "errorLoadingSongs": { "message": "Error loading songs." }, "noArtistsFound": { "message": "No artists found." }, "shuffleOn": { "message": "Shuffle mode enabled." }, "shuffleOff": { "message": "Shuffle mode disabled." }, "playbackError": { "message": "Playback error" }, "errorLabel": { "message": "Error" }, "reloadingPage": { "message": "Reloading 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": "No category"}, "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"}, "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 unavailable."}, "noPlexServersForStreams": {"message": "No Plex servers."}, "notFoundOnServers": {"message": "Could not find \"$query$\" 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 fill in 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(ies) 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": "Could not find \"$query$\" on Jellyfin.", "placeholders": { "query": { "content": "$1" } } }, "notFoundOnAnyServer": { "message": "Could not find \"$query$\" 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 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 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": "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. Can be 'movie' for movies or 'series' for series. (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": "Retrieves and displays the user's library statistics, such as the total number of unique movies, series, and artists." }, "aiToolShowItemDetailsDesc": { "message": "Displays the details page for 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. Must be 'movie' or 'series'." }, "aiToolAddToPlaylistDesc": { "message": "Adds a movie or series to the user's current playlist to stream to a configured PHP server." }, "aiToolAddToPlaylistTitleParamDesc": { "message": "The title of the movie or series to add." }, "aiToolAddToPlaylistTypeParamDesc": { "message": "The type of content. 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. 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. 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 movie or series view, allowing refinement of results by type, genre, year, and sort order." }, "aiToolApplyFiltersTypeParamDesc": { "message": "The type of content to apply filters to. 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 sort 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 desired 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 configured tokens 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 app to scan content from new Plex servers." }, "aiToolAddPlexTokenTokenParamDesc": { "message": "The X-Plex token string to add." }, "aiToolChangeRegionDesc": { "message": "Changes the region used for content discovery in the TMDB API. This will affect results displayed in movie and series sections, as well as streaming providers." }, "aiToolChangeRegionRegionParamDesc": { "message": "The two-letter ISO 3166-1 country code for the new region (e.g., 'US' for United States, 'ES' for Spain, 'MX' for Mexico)." }, "aiToolClearAllFavoritesDesc": { "message": "Removes all movies and series 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": "Could not find '$query$' in your library.", "placeholders": { "query": { "content": "$1" } } }, "aiToolNavigateSuccess": { "message": "Navigated to $page$ page.", "placeholders": { "page": { "content": "$1" } } }, "aiToolNavigateError": { "message": "Error navigating to $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 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": "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 database: $message$", "placeholders": { "message": { "content": "$1" } } }, "aiToolDatabaseDeleteBlocked": { "message": "Database deletion is blocked. Close other app tabs." }, "aiToolUpdateAllTokensSuccess": { "message": "All tokens updated successfully." }, "aiToolUpdateAllTokensError": { "message": "Error updating tokens: $message$", "placeholders": { "message": { "content": "$1" } } }, "aiToolAddPlexTokenSuccess": { "message": "Plex token added successfully." }, "aiToolAddPlexTokenError": { "message": "Error adding Plex token: $message$", "placeholders": { "message": { "content": "$1" } } }, "aiToolChangeRegionSuccess": { "message": "Region changed to $region$. Content is updating.", "placeholders": { "region": { "content": "$1" } } }, "aiToolChangeRegionError": { "message": "Error changing region: $message$", "placeholders": { "message": { "content": "$1" } } }, "aiToolViewingHistoryCleared": { "message": "Viewing history cleared." }, "aiToolViewingHistoryClearError": { "message": "Error clearing viewing history: $message$", "placeholders": { "message": { "content": "$1" } } }, "aiSystemPrompt_v3": { "message": "You are a movie and series expert assistant called CinePlex. Your main function is to help users discover content and interact with their library. Follow these rules rigorously: 1. **NEVER** invent that 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 requests or lists (e.g., 'tell me 5 horror movies'), use your own knowledge to generate the list. Present it in a numbered or bulleted format. After showing the list, proactively ask the user if they want you to check availability on their local servers and create an M3U file. 3. **ONLY** if the user confirms that 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, 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 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 $2 titles on your servers and started the M3U playlist download.", "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 for \"$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": "Token already exists." }, "tokenAddedSuccessfully": { "message": "Token added successfully." }, "noStreamsFoundForSelection": { "message": "No streams found for selection." }, "autoplayBlocked": { "message": "Autoplay blocked." }, "welcomeToCinePlex": { "message": "" }, "page": { "message": "Page" } }