{
    "appName": { "message": "CinePlex" },
    "appDescription": { "message": "Scans Plex servers to find content and displays it in the interface" },
    "appTagline": { "message": "Movies, Series & 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" },
    "heroWelcome": { "message": "" },
    "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's 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." },
    "backButton": { "message": "Back" },
    "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 Configuration" },
    "settingsTmdbApiLabel": { "message": "TMDB API Key (Optional)" },
    "settingsTmdbApiPlaceholder": { "message": "Will use default key if left blank" },
    "openaiApiKey": { "message": "OpenAI API Key" },
    "settingsTmdbLangLabel": { "message": "Language for TMDB & UI" },
    "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 Scanning" },
    "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 Server Script Generator" },
    "settingsPhpFileOptions": { "message": "File Options" },
    "settingsPhpSavePathLabel": { "message": "Save Path on Server" },
    "settingsPhpSavePathPlaceholder": { "message": "Ex: /var/www/html/lists (blank for same folder)" },
    "settingsPhpFilenameLabel": { "message": "Filename" },
    "settingsPhpFileAction": { "message": "File Action" },
    "settingsPhpActionAppend": { "message": "Append to the end of the file (cumulative)" },
    "settingsPhpActionOverwrite": { "message": "Overwrite the 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": "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 settings." },
    "settingsClose": { "message": "Close" },
    "settingsSave": { "message": "Save Settings" },
    "musicSidenavTitle": { "message": "Plex Music" },
    "musicAllServers": { "message": "All Servers" },
    "musicSearchArtistPlaceholder": { "message": "Search 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": "Pre-Amp" },
    "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 to editor." },
    "errorLoadingTokensMessage": { "message": "Error loading tokens: $message$", "placeholders": { "message": { "content": "$1" } } },
    "aceEditorNotAvailableToSave": { "message": "Editor not available for saving." },
    "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": "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 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 delete your entire 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 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": "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 for content from $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 set it up 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" } } },
    "sectionsCleared": { "message": "Sections cleared." },
    "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" } } },
    "initialScanPhaseComplete": { "message": "Initial scan phase completed." },
    "retryPhaseFinished": { "message": "Retry phase finished." },
    "plexScanFinished": { "message": "Plex scan finished. Updating content..." },
    "plexScanFatalError": { "message": "FATAL ERROR: $message$", "placeholders": { "message": { "content": "$1" } } },
    "errorDuringScan": { "message": "Error during scan: $message$", "placeholders": { "message": { "content": "$1" } } },
    "scanCancelled": { "message": "Scan cancelled by user." },
    "scanCancelledInfo": { "message": "Scan cancelled." },
    "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" } } },
    "noRetriesPending": { "message": "No pending retries." },
    "startingRetryPhase": { "message": "Starting retry phase for $count$ sections...", "placeholders": { "count": { "content": "$1" } } },
    "retryPhaseCancelled": { "message": "Retry phase cancelled." },
    "errorInitializingMusicPlayer": { "message": "Error initializing 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 getting artist's songs." },
    "errorLoadingSongs": { "message": "Error loading songs." },
    "noArtistsFound": { "message": "No artists found." },
    "artistsCounter": { "message": "$start$-$end$ of $total$", "placeholders": { "start": { "content": "$1" }, "end": { "content": "$2" }, "total": { "content": "$3" } } },
    "artistsCounterSingle": { "message": "$total$ Artists", "placeholders": { "total": { "content": "$1" } } },
    "artistsCounterLoading": { "message": "Loading..." },
    "noSongsFound": { "message": "No songs found." },
    "shuffleOn": { "message": "Shuffle mode enabled." },
    "shuffleOff": { "message": "Shuffle mode disabled." },
    "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" } } },
    "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": "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": "Favorite"},
    "removeFromFavorites": {"message": "Unfavorite"},
    "notAvailable": {"message": "Not Available"},
    "mainCast": {"message": "Main Cast"},
    "seasonsAndEpisodes": {"message": "Seasons & 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 was found for this title."},
    "fatalInitError": {"message": "Fatal Initialization Error"},
    "fatalInitErrorSub": {"message": "The application could not be loaded."},
    "invalidStreamInfo": {"message": "Invalid information."},
    "dbUnavailableForStreams": {"message": "Local database not available."},
    "noPlexServersForStreams": {"message": "No Plex servers."},
    "notFoundOnServers": {"message": "\"$query$\" not found on 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 response from server." },
    "errorPlexApi": { "message": "Error $status$ from Plex API.", "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": "Failed to fetch libraries: $message$", "placeholders": { "message": { "content": "$1" } } },
    "jellyfinNoMediaLibraries": { "message": "No movie or series libraries found on Jellyfin." },
    "jellyfinLibrariesFound": { "message": "$count$ media library(s) found.", "placeholders": { "count": { "content": "$1" } } },
    "jellyfinLibraryScanSuccess": { "message": "[Success] Scanned '$libraryName, added $count$ titles.", "placeholders": { "libraryName": { "content": "$1" }, "count": { "content": "$2" } } },
    "jellyfinLibraryScanFailed": { "message": "Failed to scan 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 fetch server activity." },
    "activityCopied": { "message": "Identifier copied to clipboard!" },
    "activityCopyError": { "message": "Failed to copy identifier." },
    "noProvidersFound": { "message": "No providers found." },
    "availableOnPlex": { "message": "Available on Plex" },
    "navM3uGenerator": { "message": "M3U Generator" },
    "m3uGeneratorTitle": { "message": "M3U Playlist Generator" },
    "selectAServer": { "message": "Select a server..." },
    "downloadM3u": { "message": "Download M3U" },
    "m3uGenerator": { "message": "M3U Generator" },
    "selectServer": { "message": "Select Server" },
    "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." },
    "settingsRegionLabel": { "message": "Region for content discovery" },
    "allRegions": { "message": "All regions" },
    "chatOpen": { "message": "Open Chat" },
    "chatTitle": { "message": "AI Assistant" },
    "chatClose": { "message": "X" },
    "chatPlaceholder": { "message": "Type your message..." },
    "chatSend": { "message": "➤" },
    "chatGptError": { "message": "Sorry, I couldn't get a response. Please try again." },
    "chatWelcome": { "message": "Welcome! I'm your CinePlex assistant. Ask me about movies, series, or anything else you'd like to know." },
    "chatApiKeyMissing": { "message": "OpenAI API key is not set. Please configure it in the extension settings." },
    "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 Plex library for movies or series." },
    "aiToolSearchLibraryQueryDesc": { "message": "The title to search for." },
    "aiToolSearchLibraryTypeDesc": { "message": "The type of content to search for (movie or series)." },
    "aiToolNavigateToPageDesc": { "message": "Navigates to a specific page in the application." },
    "aiToolNavigateToPagePageDesc": { "message": "The page to navigate to." },
    "aiToolGetUserStatsDesc": { "message": "Gets user statistics." },
    "aiToolShowItemDetailsDesc": { "message": "Shows the details of a movie or series." },
    "aiToolShowItemDetailsTitleDesc": { "message": "The title of the movie or series." },
    "aiToolShowItemDetailsTypeDesc": { "message": "The type of content (movie or series)." },
    "aiToolAddToPlaylistDesc": { "message": "Adds a movie or series to the playlist." },
    "aiToolAddToPlaylistTitleDesc": { "message": "The title of the movie or series." },
    "aiToolAddToPlaylistTypeDesc": { "message": "The type of content (movie or series)." },
    "aiToolDownloadPlaylistDesc": { "message": "Downloads the playlist for a movie or series." },
    "aiToolDownloadPlaylistTitleDesc": { "message": "The title of the movie or series." },
    "aiToolDownloadPlaylistTypeDesc": { "message": "The type of content (movie or series)." },
    "aiToolToggleFavoriteDesc": { "message": "Adds or removes a movie or series from favorites." },
    "aiToolToggleFavoriteTitleDesc": { "message": "The title of the movie or series." },
    "aiToolToggleFavoriteTypeDesc": { "message": "The type of content (movie or series)." },
    "aiToolGetRecommendationsDesc": { "message": "Gets recommendations for the user." },
    "aiToolApplyFiltersDesc": { "message": "Applies filters to the current view." },
    "aiToolApplyFiltersTypeDesc": { "message": "The type of content to filter (movie or series)." },
    "aiToolApplyFiltersGenreDesc": { "message": "The genre to filter by." },
    "aiToolApplyFiltersYearDesc": { "message": "The year to filter by." },
    "aiToolApplyFiltersSortDesc": { "message": "The order in which to sort the results." },
    "aiToolPlayMusicByArtistDesc": { "message": "Plays music by a specific artist." },
    "aiToolPlayMusicByArtistNameDesc": { "message": "The name of the artist." },
    "aiToolClearChatHistoryDesc": { "message": "Clears the chat history." },
    "aiToolDeleteDatabaseDesc": { "message": "Deletes the extension's database." },
    "aiToolUpdateAllTokensDesc": { "message": "Updates all Plex tokens." },
    "aiToolAddPlexTokenDesc": { "message": "Adds a new Plex token." },
    "aiToolAddPlexTokenTokenDesc": { "message": "The Plex token to add." },
    "aiToolChangeRegionDesc": { "message": "Changes the region for content discovery." },
    "aiToolChangeRegionRegionDesc": { "message": "The two-letter region code (e.g., US, ES, FR)." },
    "aiToolClearAllFavoritesDesc": { "message": "Clears all user favorites." },
    "aiToolClearRecommendationsViewDesc": { "message": "Clears the recommendations view." },
    "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 now reload." },
    "aiToolDatabaseDeleteError": { "message": "Error deleting database: $message$", "placeholders": { "message": { "content": "$1" } } },
    "aiToolDatabaseDeleteBlocked": { "message": "Database deletion is blocked. Please 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 Plex token: $message$", "placeholders": { "message": { "content": "$1" } } },
    "aiToolChangeRegionSuccess": { "message": "Region changed to $region$. Content is being updated.", "placeholders": { "region": { "content": "$1" } } },
    "aiToolChangeRegionError": { "message": "Error changing region: $message$", "placeholders": { "message": { "content": "$1" } } },
    "aiSystemPrompt_v2": { "message": "You are an expert film and series assistant named CinePlex. Your main function is to help users interact with their media library and discover content. Follow these rules: 1. When a user asks for a list or recommendation (e.g., 'tell me 5 horror movies', 'the best science fiction series'), you MUST use your own knowledge to generate the list and present it in a numbered or bulleted format. DO NOT use tools for this initial discovery task. 2. After presenting the list, if the user asks you to download it, check it, or create an M3U, THEN and only then, use the 'generate_m3u_from_titles_list' tool, passing it the titles you just mentioned. 3. For any other action such as navigating the app, getting statistics, or searching for a SPECIFIC TITLE in the user's library, use the appropriate tools. Be concise, friendly, and efficient." },
    "aiToolSearchLibraryDesc_v2": { "message": "The list of titles to process is empty." },
    "aiToolM3UNoLocalMatches": { "message": "It seems you don't have any of the titles from that list on your local servers." },
    "aiToolGenerateM3UTypeDesc": { "message": "The type of content to search for: 'movie' or 'series'." },
    "aiToolGenerateM3UFilenameDesc": { "message": "A custom filename for the downloaded M3U playlist." },
    "aiToolGenerateM3USuccess": { "message": "Got it! I'm generating an M3U playlist with $1 items. The download should start shortly.", "placeholders": { "1": { "content": "$1" } } },
    "aiSystemPrompt_v3": { "message": "You are an expert film and series assistant named CinePlex. Your main function is to help users discover content and interact with their library. Follow these rules rigorously: 1. **NEVER** claim to have performed an action if you haven't used a tool for it. For example, do not say 'I have downloaded X' if you have not used the download tool. 2. For requests for recommendations or lists (e.g., 'give 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 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 like navigating, getting statistics, or searching for a specific title, use the appropriate tools. Always be concise, friendly, and efficient." },
    "aiToolCheckAndDownloadDesc": { "message": "Checks a list of movie or series titles against the user's local servers and, if matches are found, generates and downloads an M3U playlist file." },
    "aiToolGenerateM3UFromTitlesTitlesDesc": { "message": "A list of movie or series titles to check and download." },
    "aiToolM3UNoTitlesProvided": { "message": "Please provide a list of titles to create the playlist." },
    "aiToolM3UCheckingTitles": { "message": "Checking the titles on your local servers..." },
    "aiToolM3UNoLocalMatchesForDownload": { "message": "I couldn't find 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" } } }
}